svf-lib 1.0.771 → 1.0.775
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-linux/Release-build/lib/libSvf.a +0 -0
- package/SVF-linux/include/Graphs/ICFG.h +5 -3
- package/SVF-linux/include/MemoryModel/PointerAnalysis.h +0 -3
- package/SVF-linux/include/MemoryModel/SVFStatements.h +5 -0
- package/SVF-osx/Release-build/lib/CUDD/libCudd.a +0 -0
- package/SVF-osx/Release-build/lib/libSvf.a +0 -0
- package/SVF-osx/include/Graphs/ICFG.h +5 -3
- package/SVF-osx/include/Graphs/ICFGNode.h +3 -3
- package/SVF-osx/include/MemoryModel/PointerAnalysis.h +0 -3
- package/SVF-osx/include/MemoryModel/SVFStatements.h +5 -0
- package/package.json +1 -1
|
Binary file
|
|
@@ -46,6 +46,8 @@ typedef GenericGraph<ICFGNode,ICFGEdge> GenericICFGTy;
|
|
|
46
46
|
class ICFG : public GenericICFGTy
|
|
47
47
|
{
|
|
48
48
|
|
|
49
|
+
friend class ICFGBuilder;
|
|
50
|
+
|
|
49
51
|
public:
|
|
50
52
|
|
|
51
53
|
typedef Map<NodeID, ICFGNode *> ICFGNodeIDToNodeMapTy;
|
|
@@ -109,7 +111,7 @@ public:
|
|
|
109
111
|
/// update ICFG for indirect calls
|
|
110
112
|
void updateCallGraph(PTACallGraph* callgraph);
|
|
111
113
|
|
|
112
|
-
|
|
114
|
+
protected:
|
|
113
115
|
/// Remove a SVFG edge
|
|
114
116
|
inline void removeICFGEdge(ICFGEdge* edge)
|
|
115
117
|
{
|
|
@@ -157,6 +159,7 @@ public:
|
|
|
157
159
|
addGNode(node->getId(),node);
|
|
158
160
|
}
|
|
159
161
|
|
|
162
|
+
public:
|
|
160
163
|
/// Get a basic block ICFGNode
|
|
161
164
|
/// TODO:: need to fix the assertions
|
|
162
165
|
//@{
|
|
@@ -172,11 +175,10 @@ public:
|
|
|
172
175
|
|
|
173
176
|
FunExitBlockNode* getFunExitBlockNode(const SVFFunction* fun);
|
|
174
177
|
|
|
175
|
-
GlobalBlockNode* getGlobalBlockNode() const
|
|
178
|
+
inline GlobalBlockNode* getGlobalBlockNode() const
|
|
176
179
|
{
|
|
177
180
|
return globalBlockNode;
|
|
178
181
|
}
|
|
179
|
-
|
|
180
182
|
//@}
|
|
181
183
|
|
|
182
184
|
private:
|
|
@@ -293,9 +293,6 @@ protected:
|
|
|
293
293
|
virtual void validateExpectedFailureTests(std::string fun);
|
|
294
294
|
//@}
|
|
295
295
|
|
|
296
|
-
/// Whether to dump the graph for debugging purpose
|
|
297
|
-
bool dumpGraph();
|
|
298
|
-
|
|
299
296
|
/// Reset all object node as field-sensitive.
|
|
300
297
|
void resetObjFieldSensitive();
|
|
301
298
|
|
|
@@ -753,6 +753,11 @@ public:
|
|
|
753
753
|
void addOpVar(SVFVar* op){
|
|
754
754
|
opVars.push_back(op);
|
|
755
755
|
}
|
|
756
|
+
|
|
757
|
+
/// Return true if this is a phi at the function exit
|
|
758
|
+
/// to receive one or multiple return values of this function
|
|
759
|
+
bool isFunctionRetPhi() const;
|
|
760
|
+
|
|
756
761
|
virtual const std::string toString() const override;
|
|
757
762
|
};
|
|
758
763
|
|
|
Binary file
|
|
Binary file
|
|
@@ -46,6 +46,8 @@ typedef GenericGraph<ICFGNode,ICFGEdge> GenericICFGTy;
|
|
|
46
46
|
class ICFG : public GenericICFGTy
|
|
47
47
|
{
|
|
48
48
|
|
|
49
|
+
friend class ICFGBuilder;
|
|
50
|
+
|
|
49
51
|
public:
|
|
50
52
|
|
|
51
53
|
typedef Map<NodeID, ICFGNode *> ICFGNodeIDToNodeMapTy;
|
|
@@ -109,7 +111,7 @@ public:
|
|
|
109
111
|
/// update ICFG for indirect calls
|
|
110
112
|
void updateCallGraph(PTACallGraph* callgraph);
|
|
111
113
|
|
|
112
|
-
|
|
114
|
+
protected:
|
|
113
115
|
/// Remove a SVFG edge
|
|
114
116
|
inline void removeICFGEdge(ICFGEdge* edge)
|
|
115
117
|
{
|
|
@@ -157,6 +159,7 @@ public:
|
|
|
157
159
|
addGNode(node->getId(),node);
|
|
158
160
|
}
|
|
159
161
|
|
|
162
|
+
public:
|
|
160
163
|
/// Get a basic block ICFGNode
|
|
161
164
|
/// TODO:: need to fix the assertions
|
|
162
165
|
//@{
|
|
@@ -172,11 +175,10 @@ public:
|
|
|
172
175
|
|
|
173
176
|
FunExitBlockNode* getFunExitBlockNode(const SVFFunction* fun);
|
|
174
177
|
|
|
175
|
-
GlobalBlockNode* getGlobalBlockNode() const
|
|
178
|
+
inline GlobalBlockNode* getGlobalBlockNode() const
|
|
176
179
|
{
|
|
177
180
|
return globalBlockNode;
|
|
178
181
|
}
|
|
179
|
-
|
|
180
182
|
//@}
|
|
181
183
|
|
|
182
184
|
private:
|
|
@@ -365,11 +365,11 @@ class CallBlockNode : public InterBlockNode
|
|
|
365
365
|
{
|
|
366
366
|
|
|
367
367
|
public:
|
|
368
|
-
typedef std::vector<const SVFVar *>
|
|
368
|
+
typedef std::vector<const SVFVar *> ActualParmNodeVec;
|
|
369
369
|
private:
|
|
370
370
|
const Instruction* cs;
|
|
371
371
|
const RetBlockNode* ret;
|
|
372
|
-
|
|
372
|
+
ActualParmNodeVec APNodes;
|
|
373
373
|
public:
|
|
374
374
|
CallBlockNode(NodeID id, const Instruction* c) : InterBlockNode(id, FunCallBlock), cs(c), ret(nullptr)
|
|
375
375
|
{
|
|
@@ -415,7 +415,7 @@ public:
|
|
|
415
415
|
}
|
|
416
416
|
|
|
417
417
|
/// Return the set of actual parameters
|
|
418
|
-
inline const
|
|
418
|
+
inline const ActualParmNodeVec &getActualParms() const
|
|
419
419
|
{
|
|
420
420
|
return APNodes;
|
|
421
421
|
}
|
|
@@ -293,9 +293,6 @@ protected:
|
|
|
293
293
|
virtual void validateExpectedFailureTests(std::string fun);
|
|
294
294
|
//@}
|
|
295
295
|
|
|
296
|
-
/// Whether to dump the graph for debugging purpose
|
|
297
|
-
bool dumpGraph();
|
|
298
|
-
|
|
299
296
|
/// Reset all object node as field-sensitive.
|
|
300
297
|
void resetObjFieldSensitive();
|
|
301
298
|
|
|
@@ -753,6 +753,11 @@ public:
|
|
|
753
753
|
void addOpVar(SVFVar* op){
|
|
754
754
|
opVars.push_back(op);
|
|
755
755
|
}
|
|
756
|
+
|
|
757
|
+
/// Return true if this is a phi at the function exit
|
|
758
|
+
/// to receive one or multiple return values of this function
|
|
759
|
+
bool isFunctionRetPhi() const;
|
|
760
|
+
|
|
756
761
|
virtual const std::string toString() const override;
|
|
757
762
|
};
|
|
758
763
|
|