|
| | CFLBase (SVFIR *ir, PointerAnalysis::PTATY pty) |
| |
| virtual | ~CFLBase () |
| | Destructor.
|
| |
| virtual void | checkParameter () |
| | Parameter Checking.
|
| |
| virtual void | buildCFLGrammar () |
| | Build Grammar from text file.
|
| |
| virtual void | buildCFLGraph () |
| | Build CFLGraph based on Option.
|
| |
| 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 | finalize () |
| | Finalize extra stat info passing.
|
| |
| virtual void | analyze () |
| | Perform analyze (main part of CFLR Analysis)
|
| |
| | BVDataPTAImpl (SVFIR *pag, PointerAnalysis::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.
|
| |
| void | dumpCPts () override |
| | dump and debug, print out conditional pts
|
| |
| void | dumpTopLevelPtsTo () override |
| |
| void | dumpAllPts () override |
| |
| 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=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 | initialize () |
| | Initialization of a pointer analysis, including building symbol table and SVFIR etc.
|
| |
| virtual void | computeDDAPts (NodeID) |
| | Compute points-to results on-demand, overridden by derived classes.
|
| |
| 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 | getBaseObjVar (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 |
| |
|
| enum | PTBackingType { Mutable
, Persistent
} |
| | How the PTData used is implemented. More...
|
| |
| typedef PTData< NodeID, NodeSet, NodeID, PointsTo > | PTDataTy |
| |
| typedef DiffPTData< NodeID, NodeSet, NodeID, PointsTo > | DiffPTDataTy |
| |
| typedef DFPTData< NodeID, NodeSet, NodeID, PointsTo > | DFPTDataTy |
| |
| typedef VersionedPTData< NodeID, NodeSet, NodeID, PointsTo, VersionedVar, Set< VersionedVar > > | VersionedPTDataTy |
| |
| typedef MutablePTData< NodeID, NodeSet, NodeID, PointsTo > | MutPTDataTy |
| |
| typedef MutableDiffPTData< NodeID, NodeSet, NodeID, PointsTo > | MutDiffPTDataTy |
| |
| typedef MutableDFPTData< NodeID, NodeSet, NodeID, PointsTo > | MutDFPTDataTy |
| |
| typedef MutableIncDFPTData< NodeID, NodeSet, NodeID, PointsTo > | MutIncDFPTDataTy |
| |
| typedef MutableVersionedPTData< NodeID, NodeSet, NodeID, PointsTo, VersionedVar, Set< VersionedVar > > | MutVersionedPTDataTy |
| |
| typedef PersistentPTData< NodeID, NodeSet, NodeID, PointsTo > | PersPTDataTy |
| |
| typedef PersistentDiffPTData< NodeID, NodeSet, NodeID, PointsTo > | PersDiffPTDataTy |
| |
| typedef PersistentDFPTData< NodeID, NodeSet, NodeID, PointsTo > | PersDFPTDataTy |
| |
| typedef PersistentIncDFPTData< NodeID, NodeSet, NodeID, PointsTo > | PersIncDFPTDataTy |
| |
| typedef PersistentVersionedPTData< NodeID, NodeSet, NodeID, PointsTo, VersionedVar, Set< VersionedVar > > | PersVersionedPTDataTy |
| |
| enum | PTATY {
Andersen_BASE
, Andersen_WPA
, AndersenSCD_WPA
, AndersenSFR_WPA
,
AndersenWaveDiff_WPA
, Steensgaard_WPA
, CSCallString_WPA
, CSSummary_WPA
,
FSDATAFLOW_WPA
, FSSPARSE_WPA
, VFS_WPA
, FSCS_WPA
,
CFLFICI_WPA
, CFLFSCI_WPA
, CFLFSCS_WPA
, TypeCPP_WPA
,
FieldS_DDA
, FlowS_DDA
, PathS_DDA
, Cxt_DDA
,
Default_PTA
} |
| | Pointer analysis type list. More...
|
| |
| enum | PTAImplTy { BaseImpl
, BVDataImpl
, CondImpl
} |
| | Implementation type: BVDataPTAImpl or CondPTAImpl. More...
|
| |
| typedef Set< const CallICFGNode * > | CallSiteSet |
| | Indirect call edges type, map a callsite to a set of callees.
|
| |
| typedef SVFIR::CallSiteToFunPtrMap | CallSiteToFunPtrMap |
| |
| typedef Set< const FunObjVar * > | FunctionSet |
| |
| typedef OrderedMap< const CallICFGNode *, FunctionSet > | CallEdgeMap |
| |
| typedef SCCDetection< CallGraph * > | CallGraphSCC |
| |
| typedef Set< const GlobalObjVar * > | VTableSet |
| |
| typedef Set< const FunObjVar * > | VFunSet |
| |
| static bool | classof (const PointerAnalysis *pta) |
| |
| PTDataTy * | getPTDataTy () const |
| | Get points-to data structure.
|
| |
| virtual bool | updateCallGraph (const CallSiteToFunPtrMap &) |
| | Update callgraph. This should be implemented by its subclass.
|
| |
| 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.
|
| |
| virtual void | normalizePointsTo () |
| |
| 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.
|
| |
| static SVFIR * | pag = nullptr |
| | SVFIR.
|
| |
CFL Client Base Class.
Definition at line 49 of file CFLBase.h.