Static Value-Flow Analysis
|
#include <Andersen.h>
Static Public Member Functions | |
static bool | classof (const AndersenBase *) |
Methods for support type inquiry through isa, cast, and dyn_cast: | |
static bool | classof (const PointerAnalysis *pta) |
Static Public Member Functions inherited from SVF::BVDataPTAImpl | |
static bool | classof (const PointerAnalysis *pta) |
Public Attributes | |
NodeBS | redundantGepNodes |
Public Attributes inherited from SVF::WPASolver< GraphType > | |
u32_t | numOfIteration |
num of iterations during constraint solving | |
Protected Member Functions | |
void | heapAllocatorViaIndCall (const CallICFGNode *cs, NodePairSet &cpySrcNodes) |
Protected Member Functions inherited from SVF::WPASolver< GraphType > | |
WPASolver () | |
Constructor. | |
virtual | ~WPASolver ()=default |
Destructor. | |
SCC * | getSCCDetector () const |
Get SCC detector. | |
const GraphType | graph () |
Get/Set graph methods. | |
void | setGraph (GraphType g) |
virtual NodeStack & | SCCDetect () |
SCC detection. | |
virtual NodeStack & | SCCDetect (NodeSet &candidates) |
virtual void | initWorklist () |
virtual void | solveWorklist () |
virtual void | processNode (NodeID) |
Following methods are to be implemented in child class, in order to achieve a fully worked PTA. | |
virtual void | collapseFields () |
collapse positive weight cycles of a graph | |
virtual void | propagate (GNODE *v) |
virtual bool | propFromSrcToDst (GEDGE *) |
Propagate information from source to destination node, to be implemented in the child class. | |
NodeID | popFromWorklist () |
Worklist operations. | |
virtual void | pushIntoWorklist (NodeID id) |
bool | isWorklistEmpty () |
bool | isInWorklist (NodeID id) |
GNODE * | Node (NodeID id) |
Get node on the graph. | |
NodeID | Node_Index (GNODE node) |
Get node ID. | |
Protected Member Functions inherited from SVF::BVDataPTAImpl | |
PTDataTy * | getPTDataTy () const |
Get points-to data structure. | |
void | finalize () override |
Finalization of pointer analysis, and normalize points-to information to Bit Vector representation. | |
DiffPTDataTy * | getDiffPTDataTy () const |
DFPTDataTy * | getDFPTDataTy () const |
MutDFPTDataTy * | getMutDFPTDataTy () const |
VersionedPTDataTy * | getVersionedPTDataTy () const |
virtual void | onTheFlyCallGraphSolve (const CallSiteToFunPtrMap &callsites, CallEdgeMap &newEdges) |
On the fly call graph construction. | |
virtual void | onTheFlyThreadCallGraphSolve (const CallSiteToFunPtrMap &callsites, CallEdgeMap &newForkEdges) |
On the fly thread call graph construction respecting forksite. | |
Protected Member Functions inherited from SVF::PointerAnalysis | |
const CallSiteToFunPtrMap & | getIndirectCallsites () const |
Return all indirect callsites. | |
NodeID | getFunPtr (const CallICFGNode *cs) const |
Return function pointer PAGNode at a callsite cs. | |
virtual void | validateTests () |
Alias check functions to verify correctness of pointer analysis. | |
virtual void | validateSuccessTests (std::string fun) |
virtual void | validateExpectedFailureTests (std::string fun) |
void | resetObjFieldSensitive () |
Reset all object node as field-sensitive. | |
Protected Attributes | |
ConstraintGraph * | consCG |
Constraint Graph. | |
CallSite2DummyValPN | callsite2DummyValPN |
Protected Attributes inherited from SVF::WPASolver< GraphType > | |
bool | reanalyze |
Reanalyze if any constraint value changed. | |
u32_t | iterationForPrintStat |
print out statistics for i-th iteration | |
GraphType | _graph |
Graph. | |
std::unique_ptr< SCC > | scc |
SCC. | |
WorkList | worklist |
Worklist for resolution. | |
Protected Attributes inherited from SVF::PointerAnalysis | |
bool | print_stat |
User input flags. | |
bool | alias_validation |
Flag for validating points-to/alias results. | |
u32_t | OnTheFlyIterBudgetForStat |
Flag for iteration budget for on-the-fly statistics. | |
SVFModule * | svfMod |
Module. | |
PTATY | ptaTy |
Pointer analysis Type. | |
PTAImplTy | ptaImplTy |
PTA implementation type. | |
PTAStat * | stat |
Statistics. | |
PTACallGraph * | callgraph |
Call graph used for pointer analysis. | |
CallGraphSCC * | callGraphSCC |
SCC for PTACallGraph. | |
ICFG * | icfg |
Interprocedural control-flow graph. | |
CommonCHGraph * | chgraph |
CHGraph. | |
Additional Inherited Members | |
Static Protected Attributes inherited from SVF::PointerAnalysis | |
static SVFIR * | pag = nullptr |
SVFIR. | |
Definition at line 57 of file Andersen.h.
Definition at line 60 of file Andersen.h.
|
inline |
Constructor.
Definition at line 65 of file Andersen.h.
|
override |
Add copy edge on constraint graph.
Implemented in SVF::Andersen, SVF::AndersenSCD, SVF::Steensgaard, and SVF::TypeAnalysis.
|
overridevirtual |
Andersen analysis.
Andersen analysis
Implements SVF::PointerAnalysis.
Reimplemented in SVF::TypeAnalysis.
Definition at line 133 of file Andersen.cpp.
|
inlinestatic |
Methods for support type inquiry through isa, cast, and dyn_cast:
Definition at line 105 of file Andersen.h.
|
inlinestatic |
Definition at line 109 of file Andersen.h.
void AndersenBase::cleanConsCG | ( | NodeID | id | ) |
remove redundant gepnodes in constraint graph
Definition at line 180 of file Andersen.cpp.
|
virtual |
Connect formal and actual parameters for indirect callsites.
|
virtual |
Connect formal and actual parameters for indirect forksites.
Connect formal and actual parameters for indirect forksites
Definition at line 244 of file Andersen.cpp.
|
overridevirtual |
Finalize analysis.
Finalize analysis
dump constraint graph if PAGDotGraph flag is enabled
Reimplemented from SVF::PointerAnalysis.
Reimplemented in SVF::Andersen, and SVF::TypeAnalysis.
Definition at line 89 of file Andersen.cpp.
|
inline |
|
protected |
|
overridevirtual |
Initialize analysis.
Initialize analysis
Build SVFIR
Create statistic class
Build Constraint Graph
Reimplemented from SVF::PointerAnalysis.
Reimplemented in SVF::Andersen, SVF::AndersenWaveDiff, SVF::AndersenSFR, and SVF::TypeAnalysis.
Definition at line 73 of file Andersen.cpp.
|
overridevirtual |
Normalize points-to information for field-sensitive analysis, i.e., replace fieldObj with baseObj if it is field-insensitive
Normalize points-to information for field-sensitive analysis
Reimplemented from SVF::BVDataPTAImpl.
|
inline |
dump statistics
Definition at line 143 of file Andersen.h.
|
virtual |
Andersen analysis: read pointer analysis result from file
Definition at line 157 of file Andersen.cpp.
SCC methods.
Reimplemented from SVF::WPASolver< GraphType >.
Reimplemented in SVF::Steensgaard.
Definition at line 129 of file Andersen.h.
Definition at line 133 of file Andersen.h.
|
virtual |
Andersen analysis: solve constraints and write pointer analysis result to file
Initialization for the Solver
Definition at line 168 of file Andersen.cpp.
|
virtual |
Definition at line 100 of file Andersen.cpp.
|
overridevirtual |
Update call graph.
nodes as a src of a generated new copy edge
Reimplemented from SVF::BVDataPTAImpl.
Reimplemented in SVF::AndersenSCD.
Definition at line 190 of file Andersen.cpp.
|
virtual |
Update thread call graph.
Definition at line 224 of file Andersen.cpp.
|
static |
Definition at line 169 of file Andersen.h.
|
protected |
Map an instruction to a dummy obj which created at an indirect callsite, which invokes a heap allocator
Definition at line 180 of file Andersen.h.
|
protected |
Constraint Graph.
Definition at line 178 of file Andersen.h.
|
static |
Definition at line 170 of file Andersen.h.
|
static |
Definition at line 163 of file Andersen.h.
|
static |
Statistics.
Definition at line 157 of file Andersen.h.
|
static |
Number of processed Addr edge.
Definition at line 158 of file Andersen.h.
|
static |
Number of processed Copy edge.
Definition at line 159 of file Andersen.h.
|
static |
Number of processed Gep edge.
Definition at line 160 of file Andersen.h.
|
static |
Number of processed Load edge.
Definition at line 161 of file Andersen.h.
|
static |
Definition at line 165 of file Andersen.h.
|
static |
Number of processed Store edge.
Definition at line 162 of file Andersen.h.
NodeBS SVF::AndersenBase::redundantGepNodes |
Definition at line 153 of file Andersen.h.
|
static |
Definition at line 168 of file Andersen.h.
|
static |
Definition at line 171 of file Andersen.h.
|
static |
Definition at line 172 of file Andersen.h.
|
static |
Definition at line 166 of file Andersen.h.
|
static |
Definition at line 167 of file Andersen.h.
|
static |
Definition at line 173 of file Andersen.h.