AbstractStateT - The type of the values of the traced analysis.public class JvmMemoryLocationTransferRelation<AbstractStateT extends LatticeAbstractState<AbstractStateT>> extends java.lang.Object implements TransferRelation
JvmMemoryLocationTransferRelation computes the backward successors of an JvmMemoryLocationAbstractState for a given instruction. A backward successor
is a memory location which may have contributed to the value of the current MemoryLocation.
The transfer relation uses a BamCache containing the results of an analysis in order to calculate the successors JvmMemoryLocationAbstractState:
ProgramLocationDependentReachedSet (representing the results of the
back-traced analysis for the current method call with a specific entry state).ReduceOperator of the back-traced analysis
for the caller abstract state and that have an exit state that results in the current state after applying the ExpandOperator
of the back-traced analysis).ReduceOperator).The value of the successor memory location is guaranteed to be greater than the threshold
(e.g. if AbstractStateT is a proguard.analysis.cpa.domain.taint.TaintAbstractState we can set the threshold
to proguard.analysis.cpa.domain.taint.TaintAbstractState#bottom to guarantee we don't calculate a successor if the
taint is not propagated anymore). Thus, the threshold defines the cut-off of the traces generated
with JvmMemoryLocationTransferRelation.
| Constructor and Description |
|---|
JvmMemoryLocationTransferRelation(AbstractStateT threshold,
BamCpa<JvmCfaNode,JvmCfaEdge,MethodSignature> bamCpa)
Create a memory location transfer relation.
|
| Modifier and Type | Method and Description |
|---|---|
java.util.Collection<? extends AbstractState> |
getAbstractSuccessors(AbstractState abstractState,
Precision precision)
Returns abstract successor states of the
abstractState under the selected precision. |
protected java.util.List<JvmMemoryLocation> |
processCall(JvmMemoryLocation memoryLocation,
ConstantInstruction callInstruction,
Clazz clazz)
The default implementation traces the return value back to the method arguments and the instance.
|
public JvmMemoryLocationTransferRelation(AbstractStateT threshold, BamCpa<JvmCfaNode,JvmCfaEdge,MethodSignature> bamCpa)
threshold - a cut-off thresholdbamCpa - the BAM cpa that was used to calculate the results in the cachepublic java.util.Collection<? extends AbstractState> getAbstractSuccessors(AbstractState abstractState, Precision precision)
TransferRelationabstractState under the selected precision.getAbstractSuccessors in interface TransferRelationprotected java.util.List<JvmMemoryLocation> processCall(JvmMemoryLocation memoryLocation, ConstantInstruction callInstruction, Clazz clazz)