svf-tools 1.0.896 → 1.0.897
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-doxygen/html/globals_a.html +1 -1
- package/SVF-doxygen/html/globals_d.html +3 -0
- package/SVF-doxygen/html/globals_func_a.html +1 -1
- package/SVF-doxygen/html/globals_func_d.html +3 -0
- package/SVF-doxygen/html/globals_func_p.html +1 -1
- package/SVF-doxygen/html/globals_func_t.html +1 -1
- package/SVF-doxygen/html/globals_p.html +1 -1
- package/SVF-doxygen/html/globals_t.html +1 -1
- package/SVF-doxygen/html/globals_vars.html +3 -3
- package/SVF-doxygen/html/globals_z.html +3 -3
- package/SVF-doxygen/html/search/all_1.js +1 -1
- package/SVF-doxygen/html/search/all_10.js +325 -325
- package/SVF-doxygen/html/search/all_11.js +226 -226
- package/SVF-doxygen/html/search/all_12.js +570 -570
- package/SVF-doxygen/html/search/all_13.js +207 -207
- package/SVF-doxygen/html/search/all_14.js +70 -70
- package/SVF-doxygen/html/search/all_15.js +176 -176
- package/SVF-doxygen/html/search/all_16.js +77 -77
- package/SVF-doxygen/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/search/all_19.js +26 -26
- package/SVF-doxygen/html/search/all_1a.js +179 -179
- package/SVF-doxygen/html/search/all_4.js +42 -41
- package/SVF-doxygen/html/search/all_5.js +126 -126
- package/SVF-doxygen/html/search/all_6.js +232 -232
- package/SVF-doxygen/html/search/all_7.js +1047 -1047
- package/SVF-doxygen/html/search/all_8.js +215 -215
- package/SVF-doxygen/html/search/all_9.js +629 -629
- package/SVF-doxygen/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/search/all_c.js +115 -115
- package/SVF-doxygen/html/search/all_d.js +204 -204
- package/SVF-doxygen/html/search/all_e.js +209 -209
- package/SVF-doxygen/html/search/all_f.js +122 -122
- package/SVF-doxygen/html/search/classes_0.js +28 -28
- package/SVF-doxygen/html/search/classes_1.js +11 -11
- package/SVF-doxygen/html/search/classes_10.js +74 -74
- package/SVF-doxygen/html/search/classes_11.js +14 -14
- package/SVF-doxygen/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/search/classes_14.js +19 -19
- package/SVF-doxygen/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/search/classes_2.js +73 -73
- package/SVF-doxygen/html/search/classes_3.js +35 -35
- package/SVF-doxygen/html/search/classes_4.js +8 -8
- package/SVF-doxygen/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/search/classes_6.js +98 -98
- package/SVF-doxygen/html/search/classes_7.js +38 -38
- package/SVF-doxygen/html/search/classes_8.js +59 -59
- package/SVF-doxygen/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/search/classes_d.js +19 -19
- package/SVF-doxygen/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/search/defines_1.js +3 -3
- package/SVF-doxygen/html/search/defines_10.js +2 -2
- package/SVF-doxygen/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/search/defines_3.js +20 -20
- package/SVF-doxygen/html/search/defines_4.js +3 -3
- package/SVF-doxygen/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/search/defines_c.js +4 -4
- package/SVF-doxygen/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/search/defines_e.js +8 -8
- package/SVF-doxygen/html/search/defines_f.js +4 -4
- package/SVF-doxygen/html/search/enums_0.js +4 -4
- package/SVF-doxygen/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/search/enums_4.js +4 -4
- package/SVF-doxygen/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
- package/SVF-doxygen/html/search/enumvalues_1.js +15 -15
- package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/search/enumvalues_11.js +4 -4
- package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
- package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
- package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
- package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
- package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
- package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_f.js +47 -47
- package/SVF-doxygen/html/search/files_0.js +16 -16
- package/SVF-doxygen/html/search/files_1.js +9 -9
- package/SVF-doxygen/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/search/files_2.js +53 -53
- package/SVF-doxygen/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/search/files_4.js +5 -5
- package/SVF-doxygen/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/search/files_6.js +10 -10
- package/SVF-doxygen/html/search/files_7.js +17 -17
- package/SVF-doxygen/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/search/files_b.js +4 -4
- package/SVF-doxygen/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/search/functions_0.js +13 -13
- package/SVF-doxygen/html/search/functions_1.js +368 -368
- package/SVF-doxygen/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/search/functions_11.js +140 -140
- package/SVF-doxygen/html/search/functions_12.js +299 -299
- package/SVF-doxygen/html/search/functions_13.js +73 -73
- package/SVF-doxygen/html/search/functions_14.js +41 -41
- package/SVF-doxygen/html/search/functions_15.js +72 -72
- package/SVF-doxygen/html/search/functions_16.js +38 -38
- package/SVF-doxygen/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/search/functions_18.js +179 -179
- package/SVF-doxygen/html/search/functions_2.js +94 -94
- package/SVF-doxygen/html/search/functions_3.js +261 -261
- package/SVF-doxygen/html/search/functions_4.js +85 -84
- package/SVF-doxygen/html/search/functions_5.js +57 -57
- package/SVF-doxygen/html/search/functions_6.js +65 -65
- package/SVF-doxygen/html/search/functions_7.js +863 -863
- package/SVF-doxygen/html/search/functions_8.js +162 -162
- package/SVF-doxygen/html/search/functions_9.js +438 -438
- package/SVF-doxygen/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/search/functions_c.js +25 -25
- package/SVF-doxygen/html/search/functions_d.js +82 -82
- package/SVF-doxygen/html/search/functions_e.js +36 -36
- package/SVF-doxygen/html/search/functions_f.js +58 -58
- package/SVF-doxygen/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/search/related_0.js +4 -4
- package/SVF-doxygen/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/search/related_7.js +5 -5
- package/SVF-doxygen/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/search/related_c.js +2 -2
- package/SVF-doxygen/html/search/related_d.js +12 -12
- package/SVF-doxygen/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/search/typedefs_0.js +19 -19
- package/SVF-doxygen/html/search/typedefs_1.js +27 -27
- package/SVF-doxygen/html/search/typedefs_10.js +63 -63
- package/SVF-doxygen/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/search/typedefs_13.js +40 -40
- package/SVF-doxygen/html/search/typedefs_14.js +11 -11
- package/SVF-doxygen/html/search/typedefs_2.js +125 -125
- package/SVF-doxygen/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/search/typedefs_4.js +17 -17
- package/SVF-doxygen/html/search/typedefs_5.js +42 -42
- package/SVF-doxygen/html/search/typedefs_6.js +54 -54
- package/SVF-doxygen/html/search/typedefs_7.js +47 -47
- package/SVF-doxygen/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/search/typedefs_c.js +41 -41
- package/SVF-doxygen/html/search/typedefs_d.js +15 -15
- package/SVF-doxygen/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/search/variables_0.js +177 -177
- package/SVF-doxygen/html/search/variables_1.js +76 -76
- package/SVF-doxygen/html/search/variables_10.js +98 -98
- package/SVF-doxygen/html/search/variables_11.js +46 -46
- package/SVF-doxygen/html/search/variables_12.js +93 -93
- package/SVF-doxygen/html/search/variables_13.js +76 -76
- package/SVF-doxygen/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/search/variables_15.js +49 -49
- package/SVF-doxygen/html/search/variables_16.js +11 -11
- package/SVF-doxygen/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/search/variables_18.js +17 -17
- package/SVF-doxygen/html/search/variables_2.js +40 -40
- package/SVF-doxygen/html/search/variables_3.js +142 -142
- package/SVF-doxygen/html/search/variables_4.js +51 -51
- package/SVF-doxygen/html/search/variables_5.js +39 -39
- package/SVF-doxygen/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/search/variables_7.js +34 -34
- package/SVF-doxygen/html/search/variables_8.js +8 -8
- package/SVF-doxygen/html/search/variables_9.js +79 -79
- package/SVF-doxygen/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/search/variables_d.js +57 -57
- package/SVF-doxygen/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/search/variables_f.js +31 -31
- package/SVF-doxygen/html/svf-ex_8cpp.html +259 -209
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +229 -202
- package/package.json +1 -1
- package/svf-llvm/tools/Example/svf-ex.cpp +49 -30
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.897",
|
|
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": {
|
|
@@ -6,16 +6,16 @@
|
|
|
6
6
|
//
|
|
7
7
|
|
|
8
8
|
// This program is free software: you can redistribute it and/or modify
|
|
9
|
-
// it under the terms of the GNU
|
|
9
|
+
// it under the terms of the GNU General Public License as published by
|
|
10
10
|
// the Free Software Foundation, either version 3 of the License, or
|
|
11
11
|
// (at your option) any later version.
|
|
12
12
|
|
|
13
13
|
// This program is distributed in the hope that it will be useful,
|
|
14
14
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
15
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
-
// GNU
|
|
16
|
+
// GNU General Public License for more details.
|
|
17
17
|
|
|
18
|
-
// You should have received a copy of the GNU
|
|
18
|
+
// You should have received a copy of the GNU General Public License
|
|
19
19
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
20
|
//
|
|
21
21
|
//===-----------------------------------------------------------------------===//
|
|
@@ -34,27 +34,28 @@
|
|
|
34
34
|
#include "Util/Options.h"
|
|
35
35
|
#include "WPA/Andersen.h"
|
|
36
36
|
|
|
37
|
+
using namespace llvm;
|
|
37
38
|
using namespace std;
|
|
38
39
|
using namespace SVF;
|
|
39
40
|
|
|
40
41
|
/*!
|
|
41
|
-
* An example to query alias results of two
|
|
42
|
+
* An example to query alias results of two SVF values
|
|
42
43
|
*/
|
|
43
|
-
SVF::AliasResult aliasQuery(PointerAnalysis* pta, SVFValue* v1, SVFValue* v2)
|
|
44
|
+
SVF::AliasResult aliasQuery(PointerAnalysis* pta, const SVFValue* v1, const SVFValue* v2)
|
|
44
45
|
{
|
|
45
|
-
return pta->alias(v1,v2);
|
|
46
|
+
return pta->alias(v1, v2);
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
/*!
|
|
49
|
-
* An example to print points-to set of an
|
|
50
|
+
* An example to print points-to set of an SVF value
|
|
50
51
|
*/
|
|
51
|
-
std::string printPts(PointerAnalysis* pta, SVFValue*
|
|
52
|
+
std::string printPts(PointerAnalysis* pta, const SVFValue* svfval)
|
|
52
53
|
{
|
|
53
54
|
|
|
54
55
|
std::string str;
|
|
55
|
-
|
|
56
|
+
raw_string_ostream rawstr(str);
|
|
56
57
|
|
|
57
|
-
NodeID pNodeId = pta->getPAG()->getValueNode(
|
|
58
|
+
NodeID pNodeId = pta->getPAG()->getValueNode(svfval);
|
|
58
59
|
const PointsTo& pts = pta->getPts(pNodeId);
|
|
59
60
|
for (PointsTo::iterator ii = pts.begin(), ie = pts.end();
|
|
60
61
|
ii != ie; ii++)
|
|
@@ -162,14 +163,19 @@ void traverseOnICFG(ICFG* icfg, const ICFGNode* iNode)
|
|
|
162
163
|
}
|
|
163
164
|
}
|
|
164
165
|
|
|
166
|
+
void dummyVisit(const VFGNode* node)
|
|
167
|
+
{
|
|
168
|
+
|
|
169
|
+
}
|
|
165
170
|
/*!
|
|
166
171
|
* An example to query/collect all the uses of a definition of a value along value-flow graph (VFG)
|
|
167
172
|
*/
|
|
168
|
-
void traverseOnVFG(const SVFG* vfg, SVFValue*
|
|
173
|
+
void traverseOnVFG(const SVFG* vfg, const SVFValue* svfval)
|
|
169
174
|
{
|
|
170
175
|
SVFIR* pag = SVFIR::getPAG();
|
|
171
|
-
|
|
172
|
-
|
|
176
|
+
PAGNode* pNode = pag->getGNode(pag->getValueNode(svfval));
|
|
177
|
+
if (!vfg->hasDefSVFGNode(pNode))
|
|
178
|
+
return;
|
|
173
179
|
const VFGNode* vNode = vfg->getDefSVFGNode(pNode);
|
|
174
180
|
FIFOWorkList<const VFGNode*> worklist;
|
|
175
181
|
Set<const VFGNode*> visited;
|
|
@@ -195,10 +201,11 @@ void traverseOnVFG(const SVFG* vfg, SVFValue* val)
|
|
|
195
201
|
/// Collect all LLVM Values
|
|
196
202
|
for(Set<const VFGNode*>::const_iterator it = visited.begin(), eit = visited.end(); it!=eit; ++it)
|
|
197
203
|
{
|
|
198
|
-
|
|
204
|
+
const VFGNode* node = *it;
|
|
205
|
+
dummyVisit(node);
|
|
199
206
|
/// can only query VFGNode involving top-level pointers (starting with % or @ in LLVM IR)
|
|
200
207
|
/// PAGNode* pNode = vfg->getLHSTopLevPtr(node);
|
|
201
|
-
///
|
|
208
|
+
/// Value* val = pNode->getValue();
|
|
202
209
|
}
|
|
203
210
|
}
|
|
204
211
|
|
|
@@ -221,40 +228,52 @@ int main(int argc, char ** argv)
|
|
|
221
228
|
SVFIRBuilder builder(svfModule);
|
|
222
229
|
SVFIR* pag = builder.build();
|
|
223
230
|
|
|
224
|
-
|
|
225
231
|
/// Create Andersen's pointer analysis
|
|
226
232
|
Andersen* ander = AndersenWaveDiff::createAndersenWaveDiff(pag);
|
|
227
233
|
|
|
228
|
-
/// Query aliases
|
|
229
|
-
/// aliasQuery(ander,value1,value2);
|
|
230
|
-
|
|
231
|
-
/// Print points-to information
|
|
232
|
-
/// printPts(ander, value1);
|
|
233
234
|
|
|
234
235
|
/// Call Graph
|
|
235
236
|
PTACallGraph* callgraph = ander->getPTACallGraph();
|
|
236
237
|
|
|
237
238
|
/// ICFG
|
|
238
239
|
ICFG* icfg = pag->getICFG();
|
|
239
|
-
icfg->dump("icfg");
|
|
240
240
|
|
|
241
241
|
/// Value-Flow Graph (VFG)
|
|
242
242
|
VFG* vfg = new VFG(callgraph);
|
|
243
243
|
|
|
244
244
|
/// Sparse value-flow graph (SVFG)
|
|
245
|
-
SVFGBuilder svfBuilder
|
|
246
|
-
|
|
247
|
-
svfBuilder.buildFullSVFG(ander);
|
|
245
|
+
SVFGBuilder svfBuilder;
|
|
246
|
+
SVFG* svfg = svfBuilder.buildFullSVFG(ander);
|
|
248
247
|
|
|
249
248
|
/// Collect uses of an LLVM Value
|
|
250
|
-
|
|
251
|
-
|
|
249
|
+
if (Options::PTSPrint())
|
|
250
|
+
{
|
|
251
|
+
for (const auto& it : *svfg)
|
|
252
|
+
{
|
|
253
|
+
const SVFGNode* node = it.second;
|
|
254
|
+
if (node->getValue())
|
|
255
|
+
{
|
|
256
|
+
traverseOnVFG(svfg, node->getValue());
|
|
257
|
+
/// Print points-to information
|
|
258
|
+
printPts(ander, node->getValue());
|
|
259
|
+
for (const SVFGEdge* edge : node->getOutEdges())
|
|
260
|
+
{
|
|
261
|
+
const SVFGNode* node2 = edge->getDstNode();
|
|
262
|
+
if (node2->getValue())
|
|
263
|
+
aliasQuery(ander, node->getValue(), node2->getValue());
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
252
268
|
|
|
253
269
|
/// Collect all successor nodes on ICFG
|
|
254
|
-
|
|
270
|
+
if (Options::PTSPrint())
|
|
255
271
|
{
|
|
256
|
-
const
|
|
257
|
-
|
|
272
|
+
for (const auto& it : *icfg)
|
|
273
|
+
{
|
|
274
|
+
const ICFGNode* node = it.second;
|
|
275
|
+
traverseOnICFG(icfg, node);
|
|
276
|
+
}
|
|
258
277
|
}
|
|
259
278
|
|
|
260
279
|
// clean up memory
|