svf-lib 1.0.841 → 1.0.845
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/ICFGEdge.h +22 -3
- package/SVF-linux/include/Graphs/ICFGNode.h +1 -1
- 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/ICFGEdge.h +22 -3
- package/SVF-osx/include/Graphs/ICFGNode.h +1 -1
- package/package.json +1 -1
|
Binary file
|
|
@@ -34,6 +34,8 @@ namespace SVF
|
|
|
34
34
|
{
|
|
35
35
|
|
|
36
36
|
class ICFGNode;
|
|
37
|
+
class CallPE;
|
|
38
|
+
class RetPE;
|
|
37
39
|
|
|
38
40
|
/*!
|
|
39
41
|
* Interprocedural control-flow and value-flow edge, representing the control- and value-flow dependence between two nodes
|
|
@@ -157,8 +159,6 @@ private:
|
|
|
157
159
|
s64_t branchCondVal;
|
|
158
160
|
};
|
|
159
161
|
|
|
160
|
-
|
|
161
|
-
|
|
162
162
|
/*!
|
|
163
163
|
* Call ICFG edge representing parameter passing/return from a caller to a callee
|
|
164
164
|
*/
|
|
@@ -167,6 +167,7 @@ class CallCFGEdge : public ICFGEdge
|
|
|
167
167
|
|
|
168
168
|
private:
|
|
169
169
|
const Instruction* cs;
|
|
170
|
+
std::vector<const CallPE*> callPEs;
|
|
170
171
|
public:
|
|
171
172
|
/// Constructor
|
|
172
173
|
CallCFGEdge(ICFGNode* s, ICFGNode* d, const Instruction* c):
|
|
@@ -178,6 +179,14 @@ public:
|
|
|
178
179
|
{
|
|
179
180
|
return cs;
|
|
180
181
|
}
|
|
182
|
+
/// Add call parameter edge to this CallCFGEdge
|
|
183
|
+
inline void addCallPE(const CallPE* callPE){
|
|
184
|
+
callPEs.push_back(callPE);
|
|
185
|
+
}
|
|
186
|
+
/// Add get parameter edge to this CallCFGEdge
|
|
187
|
+
inline const std::vector<const CallPE*>& getCallPEs() const{
|
|
188
|
+
return callPEs;
|
|
189
|
+
}
|
|
181
190
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
182
191
|
//@{
|
|
183
192
|
static inline bool classof(const CallCFGEdge *)
|
|
@@ -204,10 +213,11 @@ class RetCFGEdge : public ICFGEdge
|
|
|
204
213
|
|
|
205
214
|
private:
|
|
206
215
|
const Instruction* cs;
|
|
216
|
+
const RetPE* retPE;
|
|
207
217
|
public:
|
|
208
218
|
/// Constructor
|
|
209
219
|
RetCFGEdge(ICFGNode* s, ICFGNode* d, const Instruction* c):
|
|
210
|
-
ICFGEdge(s,d,RetCF),cs(c)
|
|
220
|
+
ICFGEdge(s,d,RetCF),cs(c),retPE(nullptr)
|
|
211
221
|
{
|
|
212
222
|
}
|
|
213
223
|
/// Return callsite ID
|
|
@@ -215,6 +225,15 @@ public:
|
|
|
215
225
|
{
|
|
216
226
|
return cs;
|
|
217
227
|
}
|
|
228
|
+
/// Add call parameter edge to this CallCFGEdge
|
|
229
|
+
inline void addRetPE(const RetPE* ret){
|
|
230
|
+
assert(retPE==nullptr && "we can only have one retPE for each RetCFGEdge");
|
|
231
|
+
retPE = ret;
|
|
232
|
+
}
|
|
233
|
+
/// Add get parameter edge to this CallCFGEdge
|
|
234
|
+
inline const RetPE* getRetPE() const{
|
|
235
|
+
return retPE;
|
|
236
|
+
}
|
|
218
237
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
219
238
|
//@{
|
|
220
239
|
static inline bool classof(const RetCFGEdge *)
|
|
Binary file
|
|
Binary file
|
|
@@ -34,6 +34,8 @@ namespace SVF
|
|
|
34
34
|
{
|
|
35
35
|
|
|
36
36
|
class ICFGNode;
|
|
37
|
+
class CallPE;
|
|
38
|
+
class RetPE;
|
|
37
39
|
|
|
38
40
|
/*!
|
|
39
41
|
* Interprocedural control-flow and value-flow edge, representing the control- and value-flow dependence between two nodes
|
|
@@ -157,8 +159,6 @@ private:
|
|
|
157
159
|
s64_t branchCondVal;
|
|
158
160
|
};
|
|
159
161
|
|
|
160
|
-
|
|
161
|
-
|
|
162
162
|
/*!
|
|
163
163
|
* Call ICFG edge representing parameter passing/return from a caller to a callee
|
|
164
164
|
*/
|
|
@@ -167,6 +167,7 @@ class CallCFGEdge : public ICFGEdge
|
|
|
167
167
|
|
|
168
168
|
private:
|
|
169
169
|
const Instruction* cs;
|
|
170
|
+
std::vector<const CallPE*> callPEs;
|
|
170
171
|
public:
|
|
171
172
|
/// Constructor
|
|
172
173
|
CallCFGEdge(ICFGNode* s, ICFGNode* d, const Instruction* c):
|
|
@@ -178,6 +179,14 @@ public:
|
|
|
178
179
|
{
|
|
179
180
|
return cs;
|
|
180
181
|
}
|
|
182
|
+
/// Add call parameter edge to this CallCFGEdge
|
|
183
|
+
inline void addCallPE(const CallPE* callPE){
|
|
184
|
+
callPEs.push_back(callPE);
|
|
185
|
+
}
|
|
186
|
+
/// Add get parameter edge to this CallCFGEdge
|
|
187
|
+
inline const std::vector<const CallPE*>& getCallPEs() const{
|
|
188
|
+
return callPEs;
|
|
189
|
+
}
|
|
181
190
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
182
191
|
//@{
|
|
183
192
|
static inline bool classof(const CallCFGEdge *)
|
|
@@ -204,10 +213,11 @@ class RetCFGEdge : public ICFGEdge
|
|
|
204
213
|
|
|
205
214
|
private:
|
|
206
215
|
const Instruction* cs;
|
|
216
|
+
const RetPE* retPE;
|
|
207
217
|
public:
|
|
208
218
|
/// Constructor
|
|
209
219
|
RetCFGEdge(ICFGNode* s, ICFGNode* d, const Instruction* c):
|
|
210
|
-
ICFGEdge(s,d,RetCF),cs(c)
|
|
220
|
+
ICFGEdge(s,d,RetCF),cs(c),retPE(nullptr)
|
|
211
221
|
{
|
|
212
222
|
}
|
|
213
223
|
/// Return callsite ID
|
|
@@ -215,6 +225,15 @@ public:
|
|
|
215
225
|
{
|
|
216
226
|
return cs;
|
|
217
227
|
}
|
|
228
|
+
/// Add call parameter edge to this CallCFGEdge
|
|
229
|
+
inline void addRetPE(const RetPE* ret){
|
|
230
|
+
assert(retPE==nullptr && "we can only have one retPE for each RetCFGEdge");
|
|
231
|
+
retPE = ret;
|
|
232
|
+
}
|
|
233
|
+
/// Add get parameter edge to this CallCFGEdge
|
|
234
|
+
inline const RetPE* getRetPE() const{
|
|
235
|
+
return retPE;
|
|
236
|
+
}
|
|
218
237
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
219
238
|
//@{
|
|
220
239
|
static inline bool classof(const RetCFGEdge *)
|