-
Notifications
You must be signed in to change notification settings - Fork 23
SVF APIs
| Members | Meanings |
|---|---|
| SVF::SVFUtil::outs | output stream similar to std::outs |
| SVF::SVFUtil::isa | instance of a class |
| SVF::SVFUtil::cast | casting from a parent class to a child class |
| SVF::SVFUtil::dyn_cast | dynamic casting from a parent class to a child class, return null if not successful |
| Members | Meanings |
|---|---|
| ICFGNode::toString | return the content of this ICFGNode in the form of a string consisting of the nodeID, llvm instructions ... |
| SVF::ICFGNode::getSVFStmts | return a list of program statements residing in this ICFGNode |
| SVF::CallICFGNode::getCallSite | return the LLVM callsite |
| SVF::RetICFGNode::getCallSite | return the LLVM callsite |
| SVF::CallICFGNode::getRetICFGNode | Given a CallICFGNode, return its corresponding RetICFGNode |
| SVF::RetICFGNode::getActualRet | Get the return variable (SVFVar) of this RetICFGNode |
| SVF::CallICFGNode::getActualParms | Get all the actual parameters of this CallICFGNode |
| SVF::RetICFGNode:: getCallICFGNode | Given a RetICFGNode, return its corresponding CallICFGNode |
| Members | Meanings |
|---|---|
| SVF::ICFGEdge::isIntraCFGEdge | return true if it is an intra-procedural edge |
| SVF::ICFGEdge::isCallCFGEdge | return true if it is a call edge |
| SVF::ICFGEdge::isRetCFGEdge | return true if it is a return edge |
| SVF::ICFGEdge::getSrcNode | return the edge's source node |
| SVF::ICFGEdge::getSrcNode | return the edge's destination node |
| SVF::CallCFGEdge::getCallSite | return its corresponding llvm call instruction |
| SVF::CallCFGEdge:: getCallPEs | get parameter edges from this CallCFGEdge (return a vector) |
| SVF::RetCFGEdge::getCallSite | return its corresponding llvm call instruction |
| SVF::RetCFGEdge::getRetPE | get parameter edge to this CallCFGEdge (return a RetPE) |
| SVF::IntraCFGEdge:: getCondition | Given an IntraCFGEdge, return its conditionVar |
| SVF::IntraCFGEdge:: getSuccessorCondValue | Given an IntraCFGEdge (must be a Branch edge, return its conditional number) |
| Members | Meanings |
|---|
-
Output the content of a node on ICFG
For example,
ICFGNode *inode = ...; // subclass object CallICFGNode : %call = call i32 (...) @source(), SVFUtil::outs() << inode->toString() << "\n"The output is
IntraICFGNode 21 : %call = call i32 (...) @source()
-
return the content of this ICFGNode in the form of a string consisting of the nodeID, llvm instructions and its containing function
Output Sample:
NodeID: 15\nIntraICFGNode ID: 15 store i32 1, i32* %a, align 4 \{fun: main\}}
-
Casting a pointer or reference to an instance of a specified class. This casting fails and abort the program if the object or reference is not the specified class at runtime.
For example,
SVFUtil::cast<CallICFGNode>(inode)->getParent()
-
The
dyn_cast<>operator is a "checking cast" operation. It checks to see if the operand is of the specified type, and if so, returns a pointer to it (this operator does not work with references). If the operand is not of the correct type, a null pointer is returned. Thus, this works very much like the dynamic_cast<> operator in C++, and should be used in the same circumstances.For example,
if (CallICFGNode* callNode = SVFUtil::dyn_cast<CallICFGNode>(inode)) { // ... }This form of
dyn_cast<>is an effective combination ofisa<>andcast<>as below:if (SVFUtil::isa<CallICFGNode>(inode)) { CallICFGNode* callNode = SVFUtil::cast<CallICFGNode>(inode); }