|
Static Value-Flow Analysis
|
#include <SVFVariables.h>
Public Member Functions | |
| SVFVar (NodeID i, const SVFType *svfType, PNODEK k) | |
| Standard constructor with ID, type and kind. | |
| virtual | ~SVFVar () |
| Virtual destructor. | |
| virtual bool | isPointer () const |
| Check if this variable represents a pointer. | |
| virtual bool | isConstDataOrAggDataButNotNullPtr () const |
| Check if this variable represents constant data/metadata but not null pointer. | |
| virtual bool | isIsolatedNode () const |
| Check if this node is isolated (no edges) in the SVFIR graph. | |
| virtual const std::string | getValueName () const =0 |
| Get string name of the represented LLVM value. | |
| virtual const FunObjVar * | getFunction () const |
| Get containing function, or null for globals/constants. | |
| SVFStmt::SVFStmtSetTy & | getIncomingEdges (SVFStmt::PEDGEK kind) |
| Edge accessors and checkers. | |
| SVFStmt::SVFStmtSetTy & | getOutgoingEdges (SVFStmt::PEDGEK kind) |
| bool | hasIncomingEdges (SVFStmt::PEDGEK kind) const |
| bool | hasOutgoingEdges (SVFStmt::PEDGEK kind) const |
| SVFStmt::SVFStmtSetTy::iterator | getIncomingEdgesBegin (SVFStmt::PEDGEK kind) const |
| Edge iterators. | |
| SVFStmt::SVFStmtSetTy::iterator | getIncomingEdgesEnd (SVFStmt::PEDGEK kind) const |
| SVFStmt::SVFStmtSetTy::iterator | getOutgoingEdgesBegin (SVFStmt::PEDGEK kind) const |
| SVFStmt::SVFStmtSetTy::iterator | getOutgoingEdgesEnd (SVFStmt::PEDGEK kind) const |
| virtual bool | ptrInUncalledFunction () const |
| Check if this pointer is in an uncalled function. | |
| virtual bool | isConstDataOrAggData () const |
| Check if this variable represents constant/aggregate data. | |
| virtual const std::string | toString () const |
| Get string representation. | |
| void | dump () const |
| Debug dump to console. | |
| Public Member Functions inherited from SVF::GenericNode< SVFVar, SVFStmt > | |
| GenericNode (NodeID i, GNodeK k, const SVFType *svfType=nullptr) | |
| Constructor. | |
| virtual | ~GenericNode () |
| Destructor. | |
| bool | hasIncomingEdge () const |
| Has incoming/outgoing edge set. | |
| bool | hasOutgoingEdge () const |
| iterator | OutEdgeBegin () |
| iterators | |
| iterator | OutEdgeEnd () |
| iterator | InEdgeBegin () |
| iterator | InEdgeEnd () |
| const_iterator | OutEdgeBegin () const |
| const_iterator | OutEdgeEnd () const |
| const_iterator | InEdgeBegin () const |
| const_iterator | InEdgeEnd () const |
| virtual iterator | directOutEdgeBegin () |
| Iterators used for SCC detection, overwrite it in child class if necessary. | |
| virtual iterator | directOutEdgeEnd () |
| virtual iterator | directInEdgeBegin () |
| virtual iterator | directInEdgeEnd () |
| virtual const_iterator | directOutEdgeBegin () const |
| virtual const_iterator | directOutEdgeEnd () const |
| virtual const_iterator | directInEdgeBegin () const |
| virtual const_iterator | directInEdgeEnd () const |
| bool | addIncomingEdge (EdgeType *inEdge) |
| Add incoming and outgoing edges. | |
| bool | addOutgoingEdge (EdgeType *outEdge) |
| EdgeType * | hasIncomingEdge (EdgeType *edge) const |
| Find incoming and outgoing edges. | |
| EdgeType * | hasOutgoingEdge (EdgeType *edge) const |
| const GEdgeSetTy & | getOutEdges () const |
| const GEdgeSetTy & | getInEdges () const |
| u32_t | removeIncomingEdge (EdgeType *edge) |
| u32_t | removeOutgoingEdge (EdgeType *edge) |
| Public Member Functions inherited from SVF::SVFValue | |
| SVFValue (NodeID i, GNodeK k, const SVFType *ty=nullptr) | |
| NodeID | getId () const |
| Get ID. | |
| GNodeK | getNodeKind () const |
| Get node kind. | |
| virtual const SVFType * | getType () const |
| virtual void | setName (const std::string &nameInfo) |
| virtual void | setName (std::string &&nameInfo) |
| virtual const std::string & | getName () const |
| virtual void | setSourceLoc (const std::string &sourceCodeInfo) |
| virtual const std::string | getSourceLoc () const |
| const std::string | valueOnlyToString () const |
| const bool | hasLLVMValue () const |
Static Public Member Functions | |
| static bool | classof (const SVFVar *) |
| Type checking support for LLVM-style RTTI. | |
| static bool | classof (const GenericPAGNodeTy *node) |
| static bool | classof (const SVFValue *node) |
| Static Public Member Functions inherited from SVF::GenericNode< SVFVar, SVFStmt > | |
| static bool | classof (const GenericNode< SVFVar, SVFStmt > *) |
| static bool | classof (const SVFValue *) |
Protected Member Functions | |
| const SVFStmt::KindToSVFStmtMapTy & | getInEdgeKindToSetMap () const |
| const SVFStmt::KindToSVFStmtMapTy & | getOutEdgeKindToSetMap () const |
Protected Attributes | |
| SVFStmt::KindToSVFStmtMapTy | InEdgeKindToSetMap |
| Maps tracking incoming and outgoing edges by kind. | |
| SVFStmt::KindToSVFStmtMapTy | OutEdgeKindToSetMap |
| Protected Attributes inherited from SVF::SVFValue | |
| NodeID | id |
| Node ID. | |
| GNodeK | nodeKind |
| Node kind. | |
| const SVFType * | type |
| SVF type. | |
| std::string | name |
| std::string | sourceLoc |
| Source code information of this value. | |
Private Member Functions | |
| void | addInEdge (SVFStmt *inEdge) |
| Edge management methods. | |
| void | addOutEdge (SVFStmt *outEdge) |
| bool | hasIncomingVariantGepEdge () const |
| Check for incoming variable field GEP edges. | |
Friends | |
| class | SVFIRBuilder |
| class | IRGraph |
| class | SVFIR |
| class | VFG |
| class | GraphDBClient |
| OutStream & | operator<< (OutStream &o, const SVFVar &node) |
| Stream operator overload for output. | |
Additional Inherited Members | |
| Static Protected Member Functions inherited from SVF::SVFValue | |
| static bool | isICFGNodeKinds (GNodeK n) |
| Helper functions to check node kinds. | |
| static bool | isInterICFGNodeKind (GNodeK n) |
| static bool | isSVFVarKind (GNodeK n) |
| static bool | isValVarKinds (GNodeK n) |
| static bool | isConstantDataValVar (GNodeK n) |
| static bool | isObjVarKinds (GNodeK n) |
| static bool | isBaseObjVarKinds (GNodeK n) |
| static bool | isConstantDataObjVarKinds (GNodeK n) |
| static bool | isVFGNodeKinds (GNodeK n) |
| static bool | isArgumentVFGNodeKinds (GNodeK n) |
| static bool | isStmtVFGNodeKinds (GNodeK n) |
| static bool | isPHIVFGNodeKinds (GNodeK n) |
| static bool | isMRSVFGNodeKinds (GNodeK n) |
| static bool | isMSSAPHISVFGNodeKinds (GNodeK n) |
Definition at line 54 of file SVFVariables.h.
| typedef s64_t SVF::SVFVar::GEdgeKind |
Definition at line 74 of file SVFVariables.h.
| typedef GNodeK SVF::SVFVar::PNODEK |
Node kinds for SVFIR variables: ValNode - LLVM pointer value ObjNode - Memory object RetValNode - Function return value VarargNode - Variable argument parameter GepValNode - Temporary value for field-sensitive analysis GepObjNode - Temporary object for field-sensitive analysis BaseObjNode - Base object for field-insensitive analysis DummyValNode/DummyObjNode - Nodes for non-LLVM values
Definition at line 73 of file SVFVariables.h.
Standard constructor with ID, type and kind.
SVFVar constructor
Definition at line 45 of file SVFVariables.cpp.
|
inlinevirtual |
|
inlineprivate |
Edge management methods.
Definition at line 214 of file SVFVariables.h.
|
inlineprivate |
Definition at line 221 of file SVFVariables.h.
|
inlinestatic |
Definition at line 191 of file SVFVariables.h.
|
inlinestatic |
Definition at line 196 of file SVFVariables.h.
|
inlinestatic |
Type checking support for LLVM-style RTTI.
Definition at line 186 of file SVFVariables.h.
| void SVFVar::dump | ( | ) | const |
Debug dump to console.
Definition at line 81 of file SVFVariables.cpp.
|
inlinevirtual |
Get containing function, or null for globals/constants.
Reimplemented in SVF::ArgValVar, SVF::BaseObjVar, SVF::FunObjVar, SVF::FunValVar, SVF::GepObjVar, SVF::GepValVar, SVF::RetValPN, SVF::ValVar, and SVF::VarArgValPN.
Definition at line 120 of file SVFVariables.h.
|
inline |
Edge accessors and checkers.
Definition at line 127 of file SVFVariables.h.
|
inline |
Edge iterators.
Definition at line 156 of file SVFVariables.h.
|
inline |
Definition at line 163 of file SVFVariables.h.
|
inlineprotected |
Definition at line 81 of file SVFVariables.h.
|
inlineprotected |
Definition at line 87 of file SVFVariables.h.
|
inline |
Definition at line 132 of file SVFVariables.h.
|
inline |
Definition at line 170 of file SVFVariables.h.
|
inline |
Definition at line 177 of file SVFVariables.h.
|
pure virtual |
Get string name of the represented LLVM value.
Implemented in SVF::ArgValVar, SVF::AsmPCValVar, SVF::BaseObjVar, SVF::DummyObjVar, SVF::DummyValVar, SVF::GepObjVar, SVF::GepValVar, SVF::HeapObjVar, SVF::IntrinsicValVar, SVF::ObjVar, SVF::RetValPN, SVF::StackObjVar, SVF::ValVar, and SVF::VarArgValPN.
|
inline |
Definition at line 137 of file SVFVariables.h.
|
inlineprivate |
Check for incoming variable field GEP edges.
Definition at line 229 of file SVFVariables.h.
|
inline |
Definition at line 146 of file SVFVariables.h.
|
inlinevirtual |
Check if this variable represents constant/aggregate data.
Reimplemented in SVF::BaseObjVar, SVF::ConstDataObjVar, SVF::ConstDataValVar, SVF::GepObjVar, and SVF::GepValVar.
Definition at line 205 of file SVFVariables.h.
|
inlinevirtual |
Check if this variable represents constant data/metadata but not null pointer.
Reimplemented in SVF::BlackHoleValVar, SVF::ConstDataObjVar, SVF::ConstDataValVar, SVF::ConstNullPtrObjVar, SVF::ConstNullPtrValVar, SVF::GepObjVar, and SVF::GepValVar.
Definition at line 108 of file SVFVariables.h.
|
virtual |
Check if this node is isolated (no edges) in the SVFIR graph.
Reimplemented in SVF::FunObjVar.
Definition at line 62 of file SVFVariables.cpp.
|
inlinevirtual |
Check if this variable represents a pointer.
Reimplemented in SVF::ArgValVar, SVF::DummyObjVar, SVF::DummyValVar, SVF::FunValVar, SVF::GepObjVar, SVF::GepValVar, SVF::RetValPN, and SVF::VarArgValPN.
Definition at line 101 of file SVFVariables.h.
|
virtual |
Check if this pointer is in an uncalled function.
Reimplemented in SVF::GepObjVar, and SVF::GepValVar.
Definition at line 50 of file SVFVariables.cpp.
|
virtual |
Get string representation.
Reimplemented in SVF::ArgValVar, SVF::AsmPCValVar, SVF::BaseObjVar, SVF::BlackHoleValVar, SVF::ConstDataObjVar, SVF::ConstDataValVar, SVF::ConstFPObjVar, SVF::ConstFPValVar, SVF::ConstIntObjVar, SVF::ConstIntValVar, SVF::ConstNullPtrObjVar, SVF::ConstNullPtrValVar, SVF::DummyObjVar, SVF::DummyValVar, SVF::FunObjVar, SVF::FunValVar, SVF::GepObjVar, SVF::GepValVar, SVF::GlobalObjVar, SVF::GlobalValVar, SVF::HeapObjVar, SVF::IntrinsicValVar, SVF::ObjVar, SVF::RetValPN, SVF::StackObjVar, SVF::ValVar, and SVF::VarArgValPN.
Definition at line 73 of file SVFVariables.cpp.
|
friend |
Definition at line 61 of file SVFVariables.h.
|
friend |
Definition at line 58 of file SVFVariables.h.
Stream operator overload for output.
Definition at line 251 of file SVFVariables.h.
|
friend |
Definition at line 59 of file SVFVariables.h.
|
friend |
Definition at line 57 of file SVFVariables.h.
|
friend |
Definition at line 60 of file SVFVariables.h.
|
protected |
Maps tracking incoming and outgoing edges by kind.
Definition at line 78 of file SVFVariables.h.
|
protected |
Definition at line 79 of file SVFVariables.h.