|
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. | |
| PTATY | ptaTy |
| Pointer analysis Type. | |
| PTAImplTy | ptaImplTy |
| PTA implementation type. | |
| PTAStat * | stat |
| Statistics. | |
| CallGraph * | 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 56 of file Andersen.h.
Definition at line 59 of file Andersen.h.
|
inline |
Constructor.
Definition at line 64 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 104 of file Andersen.h.
|
inlinestatic |
Definition at line 108 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 142 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 128 of file Andersen.h.
Definition at line 132 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 168 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 179 of file Andersen.h.
|
protected |
Constraint Graph.
Definition at line 177 of file Andersen.h.
|
static |
Definition at line 169 of file Andersen.h.
|
static |
Definition at line 162 of file Andersen.h.
|
static |
Statistics.
Definition at line 156 of file Andersen.h.
|
static |
Number of processed Addr edge.
Definition at line 157 of file Andersen.h.
|
static |
Number of processed Copy edge.
Definition at line 158 of file Andersen.h.
|
static |
Number of processed Gep edge.
Definition at line 159 of file Andersen.h.
|
static |
Number of processed Load edge.
Definition at line 160 of file Andersen.h.
|
static |
Definition at line 164 of file Andersen.h.
|
static |
Number of processed Store edge.
Definition at line 161 of file Andersen.h.
| NodeBS SVF::AndersenBase::redundantGepNodes |
Definition at line 152 of file Andersen.h.
|
static |
Definition at line 167 of file Andersen.h.
|
static |
Definition at line 170 of file Andersen.h.
|
static |
Definition at line 171 of file Andersen.h.
|
static |
Definition at line 165 of file Andersen.h.
|
static |
Definition at line 166 of file Andersen.h.
|
static |
Definition at line 172 of file Andersen.h.