svf-lib 1.0.2472 → 1.0.2473
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-osx/bin/ae
CHANGED
|
Binary file
|
|
@@ -218,26 +218,55 @@ private:
|
|
|
218
218
|
*
|
|
219
219
|
* @param cycle WTOCycle which has weak topo order of basic blocks and nested cycles
|
|
220
220
|
*/
|
|
221
|
-
virtual void
|
|
221
|
+
virtual void handleLoopOrRecursion(const ICFGCycleWTO* cycle);
|
|
222
222
|
|
|
223
|
-
|
|
223
|
+
/**
|
|
224
|
+
* Handle a function using worklist algorithm
|
|
225
|
+
*
|
|
226
|
+
* @param funEntry The entry node of the function to handle
|
|
227
|
+
*/
|
|
228
|
+
void handleFunction(const ICFGNode* funEntry);
|
|
224
229
|
|
|
225
|
-
|
|
230
|
+
/**
|
|
231
|
+
* Handle an ICFG node by merging states and processing statements
|
|
232
|
+
*
|
|
233
|
+
* @param node The ICFG node to handle
|
|
234
|
+
* @return true if state changed, false if fixpoint reached or infeasible
|
|
235
|
+
*/
|
|
236
|
+
bool handleICFGNode(const ICFGNode* node);
|
|
226
237
|
|
|
238
|
+
/**
|
|
239
|
+
* Get the next nodes of a node within the same function
|
|
240
|
+
*
|
|
241
|
+
* @param node The node to get successors for
|
|
242
|
+
* @return Vector of successor nodes
|
|
243
|
+
*/
|
|
244
|
+
std::vector<const ICFGNode*> getNextNodes(const ICFGNode* node) const;
|
|
227
245
|
|
|
228
246
|
/**
|
|
229
|
-
*
|
|
247
|
+
* Get the next nodes outside a cycle
|
|
230
248
|
*
|
|
231
|
-
* @param
|
|
249
|
+
* @param cycle The cycle to get exit successors for
|
|
250
|
+
* @return Vector of successor nodes outside the cycle
|
|
232
251
|
*/
|
|
233
|
-
|
|
252
|
+
std::vector<const ICFGNode*> getNextNodesOfCycle(const ICFGCycleWTO* cycle) const;
|
|
234
253
|
|
|
235
254
|
/**
|
|
236
|
-
*
|
|
255
|
+
* Recursively collect cycle heads from nested WTO components
|
|
237
256
|
*
|
|
238
|
-
* @param
|
|
257
|
+
* @param comps The list of WTO components to collect cycle heads from
|
|
239
258
|
*/
|
|
240
|
-
|
|
259
|
+
void collectCycleHeads(const std::list<const ICFGWTOComp*>& comps);
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* handle SVF Statement like CmpStmt, CallStmt, GepStmt, LoadStmt, StoreStmt, etc.
|
|
264
|
+
*
|
|
265
|
+
* @param stmt SVFStatement which is a value flow of instruction
|
|
266
|
+
*/
|
|
267
|
+
virtual void handleSVFStatement(const SVFStmt* stmt);
|
|
268
|
+
|
|
269
|
+
virtual void setTopToObjInRecursion(const CallICFGNode* callnode);
|
|
241
270
|
|
|
242
271
|
|
|
243
272
|
/**
|
|
@@ -299,6 +328,7 @@ private:
|
|
|
299
328
|
Map<const FunObjVar*, const ICFGWTO*> funcToWTO;
|
|
300
329
|
Set<std::pair<const CallICFGNode*, NodeID>> nonRecursiveCallSites;
|
|
301
330
|
Set<const FunObjVar*> recursiveFuns;
|
|
331
|
+
Map<const ICFGNode*, const ICFGCycleWTO*> cycleHeadToCycle;
|
|
302
332
|
|
|
303
333
|
|
|
304
334
|
bool hasAbsStateFromTrace(const ICFGNode* node)
|
|
@@ -313,15 +343,16 @@ private:
|
|
|
313
343
|
|
|
314
344
|
// helper functions in handleCallSite
|
|
315
345
|
virtual bool isExtCall(const CallICFGNode* callNode);
|
|
316
|
-
virtual void
|
|
346
|
+
virtual void handleExtCall(const CallICFGNode* callNode);
|
|
317
347
|
virtual bool isRecursiveFun(const FunObjVar* fun);
|
|
318
348
|
virtual bool isRecursiveCall(const CallICFGNode* callNode);
|
|
319
349
|
virtual void recursiveCallPass(const CallICFGNode *callNode);
|
|
320
350
|
virtual bool isRecursiveCallSite(const CallICFGNode* callNode, const FunObjVar *);
|
|
321
|
-
virtual
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
351
|
+
virtual void handleFunCall(const CallICFGNode* callNode);
|
|
352
|
+
|
|
353
|
+
bool skipRecursiveCall(const CallICFGNode* callNode);
|
|
354
|
+
const FunObjVar* getCallee(const CallICFGNode* callNode);
|
|
355
|
+
bool shouldApplyNarrowing(const FunObjVar* fun);
|
|
325
356
|
|
|
326
357
|
// there data should be shared with subclasses
|
|
327
358
|
Map<std::string, std::function<void(const CallICFGNode*)>> func_map;
|
|
Binary file
|