svf-tools 1.0.1132 → 1.0.1133

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.
Files changed (124) hide show
  1. package/package.json +1 -1
  2. package/svf/include/AE/Svfexe/AbstractInterpretation.h +3 -5
  3. package/svf/include/Graphs/ICFG.h +0 -39
  4. package/svf/lib/AE/Svfexe/AbsExtAPI.cpp +2 -3
  5. package/svf/lib/AE/Svfexe/AbstractInterpretation.cpp +12 -17
  6. package/SVF-doxygen/doxygen.config +0 -2548
  7. package/SVF-doxygen/wiki/PAG.png +0 -0
  8. package/SVF-doxygen/wiki/andersen.png +0 -0
  9. package/SVF-doxygen/wiki/callgraph.png +0 -0
  10. package/SVF-doxygen/wiki/consG.png +0 -0
  11. package/SVF-doxygen/wiki/cpu2000-flto +0 -432
  12. package/SVF-doxygen/wiki/cpu2006-flto +0 -417
  13. package/SVF-doxygen/wiki/cpu2017-wllvm.cfg +0 -999
  14. package/SVF-doxygen/wiki/database.png +0 -0
  15. package/SVF-doxygen/wiki/framework.png +0 -0
  16. package/SVF-doxygen/wiki/help.png +0 -0
  17. package/SVF-doxygen/wiki/icfg.png +0 -0
  18. package/SVF-doxygen/wiki/mssa-cha.png +0 -0
  19. package/SVF-doxygen/wiki/pagedge.png +0 -0
  20. package/SVF-doxygen/wiki/pagnode.png +0 -0
  21. package/SVF-doxygen/wiki/pt.png +0 -0
  22. package/SVF-doxygen/wiki/setupcmake.png +0 -0
  23. package/SVF-doxygen/wiki/setupconfiguration.png +0 -0
  24. package/SVF-doxygen/wiki/setupdashboard.png +0 -0
  25. package/SVF-doxygen/wiki/setupdebug.png +0 -0
  26. package/SVF-doxygen/wiki/setupenv.png +0 -0
  27. package/SVF-doxygen/wiki/startup.png +0 -0
  28. package/SVF-doxygen/wiki/svf-stat.pdf +0 -0
  29. package/SVF-doxygen/wiki/svfg-framework.png +0 -0
  30. package/SVF-doxygen/wiki/svfg.png +0 -0
  31. package/SVF-doxygen/wiki/svfg_opt.png +0 -0
  32. package/SVF-doxygen/wiki/svfgedge-cha.png +0 -0
  33. package/SVF-doxygen/wiki/svfgnode-cha.png +0 -0
  34. package/SVF-doxygen/wiki/svfpic/README.md +0 -6
  35. package/SVF-doxygen/wiki/svfpic/ass-1debug1.png +0 -0
  36. package/SVF-doxygen/wiki/svfpic/ass-1debug2.png +0 -0
  37. package/SVF-doxygen/wiki/svfpic/build.jpg +0 -0
  38. package/SVF-doxygen/wiki/svfpic/cmd.png +0 -0
  39. package/SVF-doxygen/wiki/svfpic/connect1.jpg +0 -0
  40. package/SVF-doxygen/wiki/svfpic/connect2.png +0 -0
  41. package/SVF-doxygen/wiki/svfpic/connect3.png +0 -0
  42. package/SVF-doxygen/wiki/svfpic/connect4.jpg +0 -0
  43. package/SVF-doxygen/wiki/svfpic/connect5.jpg +0 -0
  44. package/SVF-doxygen/wiki/svfpic/connect6.png +0 -0
  45. package/SVF-doxygen/wiki/svfpic/connect7.jpg +0 -0
  46. package/SVF-doxygen/wiki/svfpic/continue.png +0 -0
  47. package/SVF-doxygen/wiki/svfpic/debug-new.png +0 -0
  48. package/SVF-doxygen/wiki/svfpic/debug-new2.png +0 -0
  49. package/SVF-doxygen/wiki/svfpic/debug1.jpeg +0 -0
  50. package/SVF-doxygen/wiki/svfpic/debug2.jpeg +0 -0
  51. package/SVF-doxygen/wiki/svfpic/debug3.png +0 -0
  52. package/SVF-doxygen/wiki/svfpic/debug4.png +0 -0
  53. package/SVF-doxygen/wiki/svfpic/debug5.jpeg +0 -0
  54. package/SVF-doxygen/wiki/svfpic/debug6.jpeg +0 -0
  55. package/SVF-doxygen/wiki/svfpic/docker_sys_requirement.png +0 -0
  56. package/SVF-doxygen/wiki/svfpic/docker_sys_requirements.png +0 -0
  57. package/SVF-doxygen/wiki/svfpic/dockerbuild.png +0 -0
  58. package/SVF-doxygen/wiki/svfpic/dockerbuild2.jpg +0 -0
  59. package/SVF-doxygen/wiki/svfpic/dockerbuild3.jpg +0 -0
  60. package/SVF-doxygen/wiki/svfpic/dockerbuild4.png +0 -0
  61. package/SVF-doxygen/wiki/svfpic/dockerbuild5.jpg +0 -0
  62. package/SVF-doxygen/wiki/svfpic/dockerbuildimage.png +0 -0
  63. package/SVF-doxygen/wiki/svfpic/dockercmd.png +0 -0
  64. package/SVF-doxygen/wiki/svfpic/dockercmd2.png +0 -0
  65. package/SVF-doxygen/wiki/svfpic/dockercontainer.png +0 -0
  66. package/SVF-doxygen/wiki/svfpic/dockerdb1.jpg +0 -0
  67. package/SVF-doxygen/wiki/svfpic/dockerdb10.jpeg +0 -0
  68. package/SVF-doxygen/wiki/svfpic/dockerdb2.jpg +0 -0
  69. package/SVF-doxygen/wiki/svfpic/dockerdb3.jpg +0 -0
  70. package/SVF-doxygen/wiki/svfpic/dockerdb4.jpg +0 -0
  71. package/SVF-doxygen/wiki/svfpic/dockerdb5.png +0 -0
  72. package/SVF-doxygen/wiki/svfpic/dockerdb6.jpeg +0 -0
  73. package/SVF-doxygen/wiki/svfpic/dockerdb7.png +0 -0
  74. package/SVF-doxygen/wiki/svfpic/dockerdb8.png +0 -0
  75. package/SVF-doxygen/wiki/svfpic/dockerdb9.jpeg +0 -0
  76. package/SVF-doxygen/wiki/svfpic/dockerfinshbuilt.png +0 -0
  77. package/SVF-doxygen/wiki/svfpic/dockerimage.png +0 -0
  78. package/SVF-doxygen/wiki/svfpic/dockernameImage.png +0 -0
  79. package/SVF-doxygen/wiki/svfpic/dockerpull.png +0 -0
  80. package/SVF-doxygen/wiki/svfpic/dockerpull2.png +0 -0
  81. package/SVF-doxygen/wiki/svfpic/download.jpg +0 -0
  82. package/SVF-doxygen/wiki/svfpic/extension1.jpeg +0 -0
  83. package/SVF-doxygen/wiki/svfpic/extension2.jpeg +0 -0
  84. package/SVF-doxygen/wiki/svfpic/graphviz.png +0 -0
  85. package/SVF-doxygen/wiki/svfpic/hellodb.png +0 -0
  86. package/SVF-doxygen/wiki/svfpic/hellodb2.png +0 -0
  87. package/SVF-doxygen/wiki/svfpic/hviz_0.png +0 -0
  88. package/SVF-doxygen/wiki/svfpic/hviz_1.png +0 -0
  89. package/SVF-doxygen/wiki/svfpic/hviz_2.png +0 -0
  90. package/SVF-doxygen/wiki/svfpic/installC:C++Ext.png +0 -0
  91. package/SVF-doxygen/wiki/svfpic/installCMakeExt.png +0 -0
  92. package/SVF-doxygen/wiki/svfpic/installRCext.png +0 -0
  93. package/SVF-doxygen/wiki/svfpic/installdockerext.png +0 -0
  94. package/SVF-doxygen/wiki/svfpic/launch1.png +0 -0
  95. package/SVF-doxygen/wiki/svfpic/openfile.png +0 -0
  96. package/SVF-doxygen/wiki/svfpic/pathfolder.png +0 -0
  97. package/SVF-doxygen/wiki/svfpic/restart.png +0 -0
  98. package/SVF-doxygen/wiki/svfpic/rundocker.png +0 -0
  99. package/SVF-doxygen/wiki/svfpic/runinCLI.png +0 -0
  100. package/SVF-doxygen/wiki/svfpic/screen.png +0 -0
  101. package/SVF-doxygen/wiki/svfpic/settings1.jpg +0 -0
  102. package/SVF-doxygen/wiki/svfpic/settings2.jpg +0 -0
  103. package/SVF-doxygen/wiki/svfpic/settings3.jpg +0 -0
  104. package/SVF-doxygen/wiki/svfpic/shortlists.png +0 -0
  105. package/SVF-doxygen/wiki/svfpic/start.png +0 -0
  106. package/SVF-doxygen/wiki/svfpic/start1.png +0 -0
  107. package/SVF-doxygen/wiki/svfpic/update0.png +0 -0
  108. package/SVF-doxygen/wiki/svfpic/verify_docker.png +0 -0
  109. package/SVF-doxygen/wiki/svfpic/vs_entry_window.png +0 -0
  110. package/SVF-doxygen/wiki/svfpic/wsl.png +0 -0
  111. package/SVF-doxygen/wiki/svfpic/wsl_1.png +0 -0
  112. package/SVF-doxygen/wiki/svfpic/wsl_2.png +0 -0
  113. package/SVF-doxygen/wiki/svfpic/wsl_3.png +0 -0
  114. package/SVF-doxygen/wiki/tools.png +0 -0
  115. package/SVF-doxygen/wiki/users.png +0 -0
  116. package/SVF-doxygen/wiki/vm1.png +0 -0
  117. package/SVF-doxygen/wiki/vm2.png +0 -0
  118. package/SVF-doxygen/wiki/vm3.png +0 -0
  119. package/SVF-doxygen/wiki/vm4.png +0 -0
  120. package/SVF-doxygen/wiki/vm5.png +0 -0
  121. package/SVF-doxygen/wiki/vscode_build_tasks.png +0 -0
  122. package/SVF-doxygen/wiki/vscode_cpp_extension.png +0 -0
  123. package/SVF-doxygen/wiki/vscode_debug_list.png +0 -0
  124. package/SVF-doxygen/wiki/vscode_dir_structure.png +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.1132",
3
+ "version": "1.0.1133",
4
4
  "description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -164,15 +164,14 @@ public:
164
164
  */
165
165
  AbstractState& getAbsStateFromTrace(const ICFGNode* node)
166
166
  {
167
- const ICFGNode* repNode = icfg->getRepNode(node);
168
- if (abstractTrace.count(repNode) == 0)
167
+ if (abstractTrace.count(node) == 0)
169
168
  {
170
169
  assert(false && "No preAbsTrace for this node");
171
170
  abort();
172
171
  }
173
172
  else
174
173
  {
175
- return abstractTrace[repNode];
174
+ return abstractTrace[node];
176
175
  }
177
176
  }
178
177
 
@@ -303,8 +302,7 @@ private:
303
302
 
304
303
  bool hasAbsStateFromTrace(const ICFGNode* node)
305
304
  {
306
- const ICFGNode* repNode = icfg->getRepNode(node);
307
- return abstractTrace.count(repNode) != 0;
305
+ return abstractTrace.count(node) != 0;
308
306
  }
309
307
 
310
308
  AbsExtAPI* getUtils()
@@ -71,10 +71,6 @@ private:
71
71
  GlobalICFGNode* globalBlockNode; ///< unique basic block for all globals
72
72
  ICFGNodeToSVFLoopVec icfgNodeToSVFLoopVec; ///< map ICFG node to the SVF loops where it resides
73
73
 
74
- Map<const ICFGNode*, std::vector<const ICFGNode*>> _subNodes; ///<map a node(1st node of basicblock) to its subnodes
75
- Map<const ICFGNode*, const ICFGNode*> _repNode; ///<map a subnode to its representative node(1st node of basicblock)
76
-
77
-
78
74
  public:
79
75
  /// Constructor
80
76
  ICFG();
@@ -219,8 +215,6 @@ protected:
219
215
  virtual inline void addICFGNode(ICFGNode* node)
220
216
  {
221
217
  addGNode(node->getId(),node);
222
- _repNode[node] = node;
223
- _subNodes[node].push_back(node);
224
218
  }
225
219
 
226
220
  public:
@@ -237,42 +231,9 @@ public:
237
231
  {
238
232
  return globalBlockNode;
239
233
  }
240
-
241
- const std::vector<const ICFGNode*>& getSubNodes(const ICFGNode* node) const
242
- {
243
- return _subNodes.at(node);
244
- }
245
-
246
- const ICFGNode* getRepNode(const ICFGNode* node) const
247
- {
248
- return _repNode.at(node);
249
- }
250
-
251
-
252
- void updateSubAndRep(const ICFGNode* rep, const ICFGNode* sub)
253
- {
254
- addSubNode(rep, sub);
255
- updateRepNode(rep, sub);
256
- }
257
234
  //@}
258
235
 
259
236
  private:
260
- /// when ICFG is simplified, SubNode would merge repNode, then update the map
261
- void addSubNode(const ICFGNode* rep, const ICFGNode* sub)
262
- {
263
- std::vector<const ICFGNode*>& subNodes = _subNodes[sub];
264
- if(std::find(subNodes.begin(), subNodes.end(), rep) == subNodes.end())
265
- {
266
- subNodes.push_back(rep);
267
- }
268
- }
269
-
270
- /// when ICFG is simplified, some node would be removed, this map records the removed node to its rep node
271
- void updateRepNode(const ICFGNode* rep, const ICFGNode* sub)
272
- {
273
- _repNode[rep] = sub;
274
- }
275
-
276
237
  /// Add ICFG edge, only used by addIntraEdge, addCallEdge, addRetEdge etc.
277
238
  inline bool addICFGEdge(ICFGEdge* edge)
278
239
  {
@@ -376,15 +376,14 @@ void AbsExtAPI::initExtFunMap()
376
376
 
377
377
  AbstractState& AbsExtAPI::getAbsStateFromTrace(const SVF::ICFGNode* node)
378
378
  {
379
- const ICFGNode* repNode = icfg->getRepNode(node);
380
- if (abstractTrace.count(repNode) == 0)
379
+ if (abstractTrace.count(node) == 0)
381
380
  {
382
381
  assert(0 && "No preAbsTrace for this node");
383
382
  abort();
384
383
  }
385
384
  else
386
385
  {
387
- return abstractTrace[repNode];
386
+ return abstractTrace[node];
388
387
  }
389
388
  }
390
389
 
@@ -570,25 +570,20 @@ void AbstractInterpretation::handleSingletonWTO(const ICFGSingletonWTO *icfgSing
570
570
 
571
571
  std::deque<const ICFGNode*> worklist;
572
572
 
573
- const std::vector<const ICFGNode*>& worklist_vec = icfg->getSubNodes(node);
574
- for (auto it = worklist_vec.begin(); it != worklist_vec.end(); ++it)
573
+ stat->getICFGNodeTrace()++;
574
+ // handle SVF Stmt
575
+ for (const SVFStmt *stmt: node->getSVFStmts())
575
576
  {
576
- const ICFGNode* curNode = *it;
577
- stat->getICFGNodeTrace()++;
578
- // handle SVF Stmt
579
- for (const SVFStmt *stmt: curNode->getSVFStmts())
580
- {
581
- handleSVFStatement(stmt);
582
- }
583
- // inlining the callee by calling handleFunc for the callee function
584
- if (const CallICFGNode* callnode = SVFUtil::dyn_cast<CallICFGNode>(curNode))
585
- {
586
- handleCallSite(callnode);
587
- }
588
- for (auto& detector: detectors)
589
- detector->detect(getAbsStateFromTrace(node), node);
590
- stat->countStateSize();
577
+ handleSVFStatement(stmt);
578
+ }
579
+ // inlining the callee by calling handleFunc for the callee function
580
+ if (const CallICFGNode* callnode = SVFUtil::dyn_cast<CallICFGNode>(node))
581
+ {
582
+ handleCallSite(callnode);
591
583
  }
584
+ for (auto& detector: detectors)
585
+ detector->detect(getAbsStateFromTrace(node), node);
586
+ stat->countStateSize();
592
587
  }
593
588
 
594
589
  /**