|
Static Value-Flow Analysis
|
#include <CFLVF.h>
Public Member Functions | |
| CFLVF (SVFIR *ir) | |
| virtual void | checkParameter () |
| Parameter Checking. | |
| virtual void | initialize () |
| Initialize the grammar, graph, solver. | |
| virtual void | finalize () |
| Print grammar and graph. | |
| void | buildCFLGraph () |
| Build CFLGraph via VFG. | |
Public Member Functions inherited from SVF::CFLBase | |
| CFLBase (SVFIR *ir, PTATY pty) | |
| virtual | ~CFLBase () |
| Destructor. | |
| virtual void | buildCFLGrammar () |
| Build Grammar from text file. | |
| virtual void | normalizeCFLGrammar () |
| Normalize grammar. | |
| CFLGraph * | getCFLGraph () |
| Get CFL graph. | |
| virtual void | countSumEdges () |
| Count the num of Nonterminal Edges. | |
| virtual void | solve () |
| Solving CFL Reachability. | |
| virtual void | analyze () |
| Perform analyze (main part of CFLR Analysis) | |
Public Member Functions inherited from SVF::BVDataPTAImpl | |
| BVDataPTAImpl (SVFIR *pag, PTATY type, bool alias_check=true) | |
| Constructor. | |
| ~BVDataPTAImpl () override=default | |
| Destructor. | |
| PersistentPointsToCache< PointsTo > & | getPtCache () |
| const PointsTo & | getPts (NodeID id) override |
| const NodeSet & | getRevPts (NodeID nodeId) override |
| virtual void | clearPts (NodeID id, NodeID element) |
| Remove element from the points-to set of id. | |
| virtual void | clearFullPts (NodeID id) |
| Clear points-to set of id. | |
| virtual bool | unionPts (NodeID id, const PointsTo &target) |
| virtual bool | unionPts (NodeID id, NodeID ptd) |
| virtual bool | addPts (NodeID id, NodeID ptd) |
| virtual void | clearAllPts () |
| Clear all data. | |
| virtual void | expandFIObjs (const PointsTo &pts, PointsTo &expandedPts) |
| Expand FI objects. | |
| virtual void | expandFIObjs (const NodeBS &pts, NodeBS &expandedPts) |
| TODO: remove repetition. | |
| void | remapPointsToSets (void) |
| Remap all points-to sets to use the current mapping. | |
| virtual void | writeToFile (const std::string &filename) |
| Interface for analysis result storage on filesystem. | |
| virtual void | writeObjVarToFile (const std::string &filename) |
| virtual void | writePtsResultToFile (std::fstream &f) |
| virtual void | writeGepObjVarMapToFile (std::fstream &f) |
| virtual bool | readFromFile (const std::string &filename) |
| virtual void | readPtsResultFromFile (std::ifstream &f) |
| virtual void | readGepObjVarMapFromFile (std::ifstream &f) |
| virtual void | readAndSetObjFieldSensitivity (std::ifstream &f, const std::string &delimiterStr) |
| AliasResult | alias (const SVFVar *V1, const SVFVar *V2) override |
| Interface expose to users of our pointer analysis, given Value infos. | |
| AliasResult | alias (NodeID node1, NodeID node2) override |
| Interface expose to users of our pointer analysis, given PAGNodeID. | |
| virtual AliasResult | alias (const PointsTo &pts1, const PointsTo &pts2) |
| Interface expose to users of our pointer analysis, given two pts. | |
| bool | mayAlias (const PointsTo &pts1, const PointsTo &pts2) |
| Convenience bool wrappers: return true if the two operands may/must/partial alias. | |
| void | dumpCPts () override |
| dump and debug, print out conditional pts | |
| void | dumpTopLevelPtsTo () override |
| void | dumpAllPts () override |
Public Member Functions inherited from SVF::PointerAnalysis | |
| ICFG * | getICFG () const |
| Get ICFG. | |
| u32_t | getNumOfResolvedIndCallEdge () const |
| Return number of resolved indirect call edges. | |
| CallGraph * | getCallGraph () const |
| Return call graph. | |
| CallGraphSCC * | getCallGraphSCC () const |
| Return call graph SCC. | |
| PointerAnalysis (SVFIR *pag, PTATY ty=PTATY::Default_PTA, bool alias_check=true) | |
| Constructor. | |
| PTATY | getAnalysisTy () const |
| Type of pointer analysis. | |
| PTAImplTy | getImplTy () const |
| Return implementation type of the pointer analysis. | |
| bool | printStat () |
| Whether print statistics. | |
| void | disablePrintStat () |
| Whether print statistics. | |
| CallEdgeMap & | getIndCallMap () |
| Get callees from an indirect callsite. | |
| bool | hasIndCSCallees (const CallICFGNode *cs) const |
| const FunctionSet & | getIndCSCallees (const CallICFGNode *cs) const |
| virtual void | resolveIndCalls (const CallICFGNode *cs, const PointsTo &target, CallEdgeMap &newEdges) |
| Resolve indirect call edges. | |
| void | callGraphSCCDetection () |
| PTACallGraph SCC related methods. | |
| NodeID | getCallGraphSCCRepNode (NodeID id) const |
| Get SCC rep node of a SVFG node. | |
| bool | inSameCallGraphSCC (const FunObjVar *fun1, const FunObjVar *fun2) |
| Return TRUE if this edge is inside a PTACallGraph SCC, i.e., src node and dst node are in the same SCC on the SVFG. | |
| bool | isInRecursion (const FunObjVar *fun) const |
| bool | isLocalVarInRecursiveFun (NodeID id) const |
| Whether a local variable is in function recursions. | |
| virtual const std::string | PTAName () const |
| Return PTA name. | |
| CommonCHGraph * | getCHGraph () const |
| get CHGraph | |
| void | getVFnsFromCHA (const CallICFGNode *cs, VFunSet &vfns) |
| void | getVFnsFromPts (const CallICFGNode *cs, const PointsTo &target, VFunSet &vfns) |
| void | connectVCallToVFns (const CallICFGNode *cs, const VFunSet &vfns, CallEdgeMap &newEdges) |
| virtual void | resolveCPPIndCalls (const CallICFGNode *cs, const PointsTo &target, CallEdgeMap &newEdges) |
| Resolve cpp indirect call edges. | |
| SVFIR * | getPAG () const |
| PTAStat * | getStat () const |
| Get PTA stat. | |
| OrderedNodeSet & | getAllValidPtrs () |
| Get all Valid Pointers for resolution. | |
| virtual void | computeDDAPts (NodeID) |
| Compute points-to results on-demand, overridden by derived classes. | |
| bool | mayAlias (const SVFVar *V1, const SVFVar *V2) |
| Convenience bool wrappers: return true if the two operands may/must/partial alias. | |
| bool | mayAlias (NodeID node1, NodeID node2) |
| void | printIndCSTargets (const CallICFGNode *cs, const FunctionSet &targets) |
| Print targets of a function pointer. | |
| virtual void | dumpPts (NodeID ptr, const PointsTo &pts) |
| void | printIndCSTargets () |
| void | dumpAllTypes () |
| void | dumpStat () |
| Dump the statistics. | |
| bool | containBlackHoleNode (const PointsTo &pts) |
| Determine whether a points-to contains a black hole or constant node. | |
| bool | containConstantNode (const PointsTo &pts) |
| virtual bool | isBlkObjOrConstantObj (NodeID ptd) const |
| bool | isHeapMemObj (NodeID id) const |
| Whether this object is heap or array. | |
| bool | isArrayMemObj (NodeID id) const |
| bool | isFIObjNode (NodeID id) const |
| NodeID | getBaseObjVarID (NodeID id) |
| NodeID | getFIObjVar (NodeID id) |
| NodeID | getGepObjVar (NodeID id, const APOffset &ap) |
| virtual const NodeBS & | getAllFieldsObjVars (NodeID id) |
| void | setObjFieldInsensitive (NodeID id) |
| bool | isFieldInsensitive (NodeID id) const |
Private Attributes | |
| CFLSVFGBuilder | memSSA |
| SVFG * | svfg |
|
virtual |
Reimplemented from SVF::CFLBase.
Definition at line 35 of file CFLVF.cpp.
|
virtual |
Parameter Checking.
Reimplemented from SVF::CFLBase.
Definition at line 72 of file CFLVF.cpp.
|
virtual |
Print grammar and graph.
Reimplemented from SVF::CFLBase.
Definition at line 87 of file CFLVF.cpp.
|
virtual |
Initialize the grammar, graph, solver.
Reimplemented from SVF::PointerAnalysis.
Definition at line 54 of file CFLVF.cpp.
|
private |