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.
- package/package.json +1 -1
- package/svf/include/AE/Svfexe/AbstractInterpretation.h +3 -5
- package/svf/include/Graphs/ICFG.h +0 -39
- package/svf/lib/AE/Svfexe/AbsExtAPI.cpp +2 -3
- package/svf/lib/AE/Svfexe/AbstractInterpretation.cpp +12 -17
- package/SVF-doxygen/doxygen.config +0 -2548
- package/SVF-doxygen/wiki/PAG.png +0 -0
- package/SVF-doxygen/wiki/andersen.png +0 -0
- package/SVF-doxygen/wiki/callgraph.png +0 -0
- package/SVF-doxygen/wiki/consG.png +0 -0
- package/SVF-doxygen/wiki/cpu2000-flto +0 -432
- package/SVF-doxygen/wiki/cpu2006-flto +0 -417
- package/SVF-doxygen/wiki/cpu2017-wllvm.cfg +0 -999
- package/SVF-doxygen/wiki/database.png +0 -0
- package/SVF-doxygen/wiki/framework.png +0 -0
- package/SVF-doxygen/wiki/help.png +0 -0
- package/SVF-doxygen/wiki/icfg.png +0 -0
- package/SVF-doxygen/wiki/mssa-cha.png +0 -0
- package/SVF-doxygen/wiki/pagedge.png +0 -0
- package/SVF-doxygen/wiki/pagnode.png +0 -0
- package/SVF-doxygen/wiki/pt.png +0 -0
- package/SVF-doxygen/wiki/setupcmake.png +0 -0
- package/SVF-doxygen/wiki/setupconfiguration.png +0 -0
- package/SVF-doxygen/wiki/setupdashboard.png +0 -0
- package/SVF-doxygen/wiki/setupdebug.png +0 -0
- package/SVF-doxygen/wiki/setupenv.png +0 -0
- package/SVF-doxygen/wiki/startup.png +0 -0
- package/SVF-doxygen/wiki/svf-stat.pdf +0 -0
- package/SVF-doxygen/wiki/svfg-framework.png +0 -0
- package/SVF-doxygen/wiki/svfg.png +0 -0
- package/SVF-doxygen/wiki/svfg_opt.png +0 -0
- package/SVF-doxygen/wiki/svfgedge-cha.png +0 -0
- package/SVF-doxygen/wiki/svfgnode-cha.png +0 -0
- package/SVF-doxygen/wiki/svfpic/README.md +0 -6
- package/SVF-doxygen/wiki/svfpic/ass-1debug1.png +0 -0
- package/SVF-doxygen/wiki/svfpic/ass-1debug2.png +0 -0
- package/SVF-doxygen/wiki/svfpic/build.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/cmd.png +0 -0
- package/SVF-doxygen/wiki/svfpic/connect1.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/connect2.png +0 -0
- package/SVF-doxygen/wiki/svfpic/connect3.png +0 -0
- package/SVF-doxygen/wiki/svfpic/connect4.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/connect5.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/connect6.png +0 -0
- package/SVF-doxygen/wiki/svfpic/connect7.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/continue.png +0 -0
- package/SVF-doxygen/wiki/svfpic/debug-new.png +0 -0
- package/SVF-doxygen/wiki/svfpic/debug-new2.png +0 -0
- package/SVF-doxygen/wiki/svfpic/debug1.jpeg +0 -0
- package/SVF-doxygen/wiki/svfpic/debug2.jpeg +0 -0
- package/SVF-doxygen/wiki/svfpic/debug3.png +0 -0
- package/SVF-doxygen/wiki/svfpic/debug4.png +0 -0
- package/SVF-doxygen/wiki/svfpic/debug5.jpeg +0 -0
- package/SVF-doxygen/wiki/svfpic/debug6.jpeg +0 -0
- package/SVF-doxygen/wiki/svfpic/docker_sys_requirement.png +0 -0
- package/SVF-doxygen/wiki/svfpic/docker_sys_requirements.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerbuild.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerbuild2.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerbuild3.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerbuild4.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerbuild5.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerbuildimage.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockercmd.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockercmd2.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockercontainer.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerdb1.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerdb10.jpeg +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerdb2.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerdb3.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerdb4.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerdb5.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerdb6.jpeg +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerdb7.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerdb8.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerdb9.jpeg +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerfinshbuilt.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerimage.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockernameImage.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerpull.png +0 -0
- package/SVF-doxygen/wiki/svfpic/dockerpull2.png +0 -0
- package/SVF-doxygen/wiki/svfpic/download.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/extension1.jpeg +0 -0
- package/SVF-doxygen/wiki/svfpic/extension2.jpeg +0 -0
- package/SVF-doxygen/wiki/svfpic/graphviz.png +0 -0
- package/SVF-doxygen/wiki/svfpic/hellodb.png +0 -0
- package/SVF-doxygen/wiki/svfpic/hellodb2.png +0 -0
- package/SVF-doxygen/wiki/svfpic/hviz_0.png +0 -0
- package/SVF-doxygen/wiki/svfpic/hviz_1.png +0 -0
- package/SVF-doxygen/wiki/svfpic/hviz_2.png +0 -0
- package/SVF-doxygen/wiki/svfpic/installC:C++Ext.png +0 -0
- package/SVF-doxygen/wiki/svfpic/installCMakeExt.png +0 -0
- package/SVF-doxygen/wiki/svfpic/installRCext.png +0 -0
- package/SVF-doxygen/wiki/svfpic/installdockerext.png +0 -0
- package/SVF-doxygen/wiki/svfpic/launch1.png +0 -0
- package/SVF-doxygen/wiki/svfpic/openfile.png +0 -0
- package/SVF-doxygen/wiki/svfpic/pathfolder.png +0 -0
- package/SVF-doxygen/wiki/svfpic/restart.png +0 -0
- package/SVF-doxygen/wiki/svfpic/rundocker.png +0 -0
- package/SVF-doxygen/wiki/svfpic/runinCLI.png +0 -0
- package/SVF-doxygen/wiki/svfpic/screen.png +0 -0
- package/SVF-doxygen/wiki/svfpic/settings1.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/settings2.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/settings3.jpg +0 -0
- package/SVF-doxygen/wiki/svfpic/shortlists.png +0 -0
- package/SVF-doxygen/wiki/svfpic/start.png +0 -0
- package/SVF-doxygen/wiki/svfpic/start1.png +0 -0
- package/SVF-doxygen/wiki/svfpic/update0.png +0 -0
- package/SVF-doxygen/wiki/svfpic/verify_docker.png +0 -0
- package/SVF-doxygen/wiki/svfpic/vs_entry_window.png +0 -0
- package/SVF-doxygen/wiki/svfpic/wsl.png +0 -0
- package/SVF-doxygen/wiki/svfpic/wsl_1.png +0 -0
- package/SVF-doxygen/wiki/svfpic/wsl_2.png +0 -0
- package/SVF-doxygen/wiki/svfpic/wsl_3.png +0 -0
- package/SVF-doxygen/wiki/tools.png +0 -0
- package/SVF-doxygen/wiki/users.png +0 -0
- package/SVF-doxygen/wiki/vm1.png +0 -0
- package/SVF-doxygen/wiki/vm2.png +0 -0
- package/SVF-doxygen/wiki/vm3.png +0 -0
- package/SVF-doxygen/wiki/vm4.png +0 -0
- package/SVF-doxygen/wiki/vm5.png +0 -0
- package/SVF-doxygen/wiki/vscode_build_tasks.png +0 -0
- package/SVF-doxygen/wiki/vscode_cpp_extension.png +0 -0
- package/SVF-doxygen/wiki/vscode_debug_list.png +0 -0
- 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.
|
|
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
|
-
|
|
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[
|
|
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
|
-
|
|
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
|
-
|
|
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[
|
|
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
|
-
|
|
574
|
-
|
|
573
|
+
stat->getICFGNodeTrace()++;
|
|
574
|
+
// handle SVF Stmt
|
|
575
|
+
for (const SVFStmt *stmt: node->getSVFStmts())
|
|
575
576
|
{
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
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
|
/**
|