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> |
generateAbstractSuccessors(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> generateAbstractSuccessors(AbstractState abstractState, Precision precision)
TransferRelation
abstractState
under the selected precision
.generateAbstractSuccessors
in interface TransferRelation
protected java.util.List<JvmMemoryLocation> processCall(JvmMemoryLocation memoryLocation, ConstantInstruction callInstruction, Clazz clazz)