svf-tools 1.0.780 → 1.0.781
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/html/CFLAlias_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8cpp.html +51 -49
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +216 -184
- package/SVF-doxygen/html/html/ExtAPI_8h.html +6 -6
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +55 -47
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Options_8cpp_source.html +140 -132
- package/SVF-doxygen/html/html/Options_8h_source.html +46 -44
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +8 -8
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +15 -13
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +180 -100
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +89 -88
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +43 -17
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +4 -4
- package/SVF-doxygen/html/html/functions_e.html +7 -1
- package/SVF-doxygen/html/html/functions_f.html +3 -3
- package/SVF-doxygen/html/html/functions_func_s.html +19 -16
- package/SVF-doxygen/html/html/functions_l.html +5 -5
- package/SVF-doxygen/html/html/functions_n.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +17 -17
- package/SVF-doxygen/html/html/functions_p.html +15 -15
- package/SVF-doxygen/html/html/functions_r.html +1 -1
- package/SVF-doxygen/html/html/functions_s.html +26 -21
- package/SVF-doxygen/html/html/functions_t.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars_e.html +6 -0
- package/SVF-doxygen/html/html/functions_w.html +1 -1
- package/SVF-doxygen/html/html/globals_d.html +3 -0
- package/SVF-doxygen/html/html/globals_defs.html +3 -3
- package/SVF-doxygen/html/html/globals_e.html +0 -3
- package/SVF-doxygen/html/html/search/all_10.js +324 -324
- package/SVF-doxygen/html/html/search/all_11.js +224 -224
- package/SVF-doxygen/html/html/search/all_12.js +546 -545
- package/SVF-doxygen/html/html/search/all_13.js +190 -190
- package/SVF-doxygen/html/html/search/all_14.js +67 -67
- package/SVF-doxygen/html/html/search/all_15.js +170 -170
- package/SVF-doxygen/html/html/search/all_16.js +63 -63
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/html/search/all_19.js +11 -11
- package/SVF-doxygen/html/html/search/all_1a.js +176 -176
- package/SVF-doxygen/html/html/search/all_4.js +184 -183
- package/SVF-doxygen/html/html/search/all_5.js +120 -119
- package/SVF-doxygen/html/html/search/all_6.js +225 -225
- package/SVF-doxygen/html/html/search/all_7.js +1056 -1056
- package/SVF-doxygen/html/html/search/all_8.js +195 -195
- package/SVF-doxygen/html/html/search/all_9.js +617 -617
- package/SVF-doxygen/html/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/html/search/all_c.js +116 -116
- package/SVF-doxygen/html/html/search/all_d.js +196 -196
- package/SVF-doxygen/html/html/search/all_e.js +207 -207
- package/SVF-doxygen/html/html/search/all_f.js +116 -116
- package/SVF-doxygen/html/html/search/classes_0.js +26 -26
- package/SVF-doxygen/html/html/search/classes_1.js +9 -9
- package/SVF-doxygen/html/html/search/classes_10.js +73 -73
- package/SVF-doxygen/html/html/search/classes_11.js +15 -15
- package/SVF-doxygen/html/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/html/search/classes_14.js +14 -14
- package/SVF-doxygen/html/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/html/search/classes_2.js +80 -80
- package/SVF-doxygen/html/html/search/classes_3.js +38 -38
- package/SVF-doxygen/html/html/search/classes_4.js +9 -9
- package/SVF-doxygen/html/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/html/search/classes_6.js +110 -110
- package/SVF-doxygen/html/html/search/classes_7.js +33 -33
- package/SVF-doxygen/html/html/search/classes_8.js +60 -60
- package/SVF-doxygen/html/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/html/search/classes_d.js +18 -18
- package/SVF-doxygen/html/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/html/search/defines_1.js +2 -2
- package/SVF-doxygen/html/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/html/search/defines_3.js +21 -20
- package/SVF-doxygen/html/html/search/defines_4.js +2 -3
- package/SVF-doxygen/html/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/html/search/defines_c.js +3 -3
- package/SVF-doxygen/html/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/html/search/defines_e.js +7 -7
- package/SVF-doxygen/html/html/search/defines_f.js +3 -3
- package/SVF-doxygen/html/html/search/enums_0.js +3 -3
- package/SVF-doxygen/html/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/html/search/enums_4.js +3 -3
- package/SVF-doxygen/html/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
- package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
- package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -36
- package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/html/search/enumvalues_5.js +47 -47
- package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
- package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -15
- package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
- package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
- package/SVF-doxygen/html/html/search/files_0.js +13 -13
- package/SVF-doxygen/html/html/search/files_1.js +7 -7
- package/SVF-doxygen/html/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/html/search/files_2.js +53 -53
- package/SVF-doxygen/html/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/html/search/files_4.js +5 -5
- package/SVF-doxygen/html/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/html/search/files_6.js +9 -9
- package/SVF-doxygen/html/html/search/files_7.js +16 -16
- package/SVF-doxygen/html/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/html/search/files_b.js +2 -2
- package/SVF-doxygen/html/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/html/search/functions_0.js +12 -12
- package/SVF-doxygen/html/html/search/functions_1.js +357 -357
- package/SVF-doxygen/html/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/html/search/functions_11.js +138 -138
- package/SVF-doxygen/html/html/search/functions_12.js +279 -278
- package/SVF-doxygen/html/html/search/functions_13.js +58 -58
- package/SVF-doxygen/html/html/search/functions_14.js +39 -39
- package/SVF-doxygen/html/html/search/functions_15.js +71 -71
- package/SVF-doxygen/html/html/search/functions_16.js +32 -32
- package/SVF-doxygen/html/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/html/search/functions_18.js +176 -176
- package/SVF-doxygen/html/html/search/functions_2.js +86 -86
- package/SVF-doxygen/html/html/search/functions_3.js +257 -257
- package/SVF-doxygen/html/html/search/functions_4.js +75 -75
- package/SVF-doxygen/html/html/search/functions_5.js +53 -53
- package/SVF-doxygen/html/html/search/functions_6.js +59 -59
- package/SVF-doxygen/html/html/search/functions_7.js +858 -858
- package/SVF-doxygen/html/html/search/functions_8.js +147 -147
- package/SVF-doxygen/html/html/search/functions_9.js +429 -429
- package/SVF-doxygen/html/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/html/search/functions_c.js +26 -26
- package/SVF-doxygen/html/html/search/functions_d.js +77 -77
- package/SVF-doxygen/html/html/search/functions_e.js +35 -35
- package/SVF-doxygen/html/html/search/functions_f.js +56 -56
- package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/html/search/related_0.js +2 -2
- package/SVF-doxygen/html/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/html/search/related_7.js +4 -4
- package/SVF-doxygen/html/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/html/search/related_c.js +1 -1
- package/SVF-doxygen/html/html/search/related_d.js +11 -11
- package/SVF-doxygen/html/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
- package/SVF-doxygen/html/html/search/typedefs_1.js +26 -26
- package/SVF-doxygen/html/html/search/typedefs_10.js +63 -63
- package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
- package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
- package/SVF-doxygen/html/html/search/typedefs_2.js +128 -128
- package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/html/search/typedefs_4.js +17 -17
- package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
- package/SVF-doxygen/html/html/search/typedefs_6.js +58 -58
- package/SVF-doxygen/html/html/search/typedefs_7.js +46 -46
- package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_c.js +41 -41
- package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
- package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/html/search/variables_0.js +162 -162
- package/SVF-doxygen/html/html/search/variables_1.js +75 -75
- package/SVF-doxygen/html/html/search/variables_10.js +97 -97
- package/SVF-doxygen/html/html/search/variables_11.js +46 -46
- package/SVF-doxygen/html/html/search/variables_12.js +92 -92
- package/SVF-doxygen/html/html/search/variables_13.js +75 -75
- package/SVF-doxygen/html/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/html/search/variables_15.js +48 -48
- package/SVF-doxygen/html/html/search/variables_16.js +9 -9
- package/SVF-doxygen/html/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/html/search/variables_18.js +2 -2
- package/SVF-doxygen/html/html/search/variables_2.js +37 -37
- package/SVF-doxygen/html/html/search/variables_3.js +142 -142
- package/SVF-doxygen/html/html/search/variables_4.js +55 -55
- package/SVF-doxygen/html/html/search/variables_5.js +39 -37
- package/SVF-doxygen/html/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/html/search/variables_7.js +33 -33
- package/SVF-doxygen/html/html/search/variables_8.js +7 -7
- package/SVF-doxygen/html/html/search/variables_9.js +77 -77
- package/SVF-doxygen/html/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/html/search/variables_d.js +56 -56
- package/SVF-doxygen/html/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/html/search/variables_f.js +30 -30
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
- package/package.json +1 -1
- package/svf/include/Util/ExtAPI.h +7 -1
- package/svf/include/Util/Options.h +1 -0
- package/svf/lib/Util/ExtAPI.cpp +58 -30
- package/svf/lib/Util/Options.cpp +7 -0
package/svf/lib/Util/ExtAPI.cpp
CHANGED
|
@@ -29,11 +29,13 @@
|
|
|
29
29
|
|
|
30
30
|
#include "Util/ExtAPI.h"
|
|
31
31
|
#include "Util/SVFUtil.h"
|
|
32
|
+
#include "Util/Options.h"
|
|
32
33
|
#include <sys/stat.h>
|
|
33
34
|
|
|
34
35
|
using namespace SVF;
|
|
35
36
|
|
|
36
37
|
ExtAPI* ExtAPI::extOp = nullptr;
|
|
38
|
+
std::string ExtAPI::extBcPath = "";
|
|
37
39
|
|
|
38
40
|
ExtAPI* ExtAPI::getExtAPI()
|
|
39
41
|
{
|
|
@@ -53,6 +55,12 @@ void ExtAPI::destory()
|
|
|
53
55
|
}
|
|
54
56
|
}
|
|
55
57
|
|
|
58
|
+
// Set extapi.bc file path
|
|
59
|
+
void ExtAPI::setExtBcPath(const std::string& path)
|
|
60
|
+
{
|
|
61
|
+
extBcPath = path;
|
|
62
|
+
}
|
|
63
|
+
|
|
56
64
|
// Get environment variables $SVF_DIR and "npm root" through popen() method
|
|
57
65
|
static std::string GetStdoutFromCommand(const std::string& command)
|
|
58
66
|
{
|
|
@@ -80,55 +88,77 @@ static std::string GetStdoutFromCommand(const std::string& command)
|
|
|
80
88
|
// Get extapi.bc file path in npm
|
|
81
89
|
static std::string getFilePath(const std::string& path)
|
|
82
90
|
{
|
|
83
|
-
std::string bcFilePath =
|
|
84
|
-
if (path.compare("
|
|
91
|
+
std::string bcFilePath = "";
|
|
92
|
+
if (path.compare("SVF_DIR") == 0)
|
|
85
93
|
{
|
|
86
|
-
|
|
94
|
+
bcFilePath = getenv("SVF_DIR");
|
|
95
|
+
}
|
|
96
|
+
else if (path.compare("npm root") == 0)
|
|
97
|
+
{
|
|
98
|
+
bcFilePath = GetStdoutFromCommand(path);
|
|
87
99
|
// SVF installed via npm needs to determine the type of operating
|
|
88
100
|
// system, otherwise the extapi.bc path may not be found.
|
|
89
101
|
#ifdef linux
|
|
90
102
|
// Linux os
|
|
91
|
-
os_flag = 0;
|
|
92
103
|
bcFilePath.append("/svf-lib/SVF-linux");
|
|
93
|
-
#
|
|
104
|
+
#else
|
|
94
105
|
// Mac os
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
bcFilePath.append("/svf-lib/SVF-osx");
|
|
98
|
-
}
|
|
106
|
+
bcFilePath.append("/svf-lib/SVF-osx");
|
|
107
|
+
#endif
|
|
99
108
|
}
|
|
100
109
|
|
|
101
|
-
if (bcFilePath.back() != '/')
|
|
110
|
+
if (!bcFilePath.empty() && bcFilePath.back() != '/')
|
|
102
111
|
bcFilePath.push_back('/');
|
|
103
|
-
bcFilePath.append(
|
|
112
|
+
bcFilePath.append(BUILD_TYPE).append(DEFUALT_EXTAPI_BC_PATH);
|
|
104
113
|
return bcFilePath;
|
|
105
114
|
}
|
|
106
115
|
|
|
107
116
|
// Get extapi.bc path
|
|
108
117
|
std::string ExtAPI::getExtBcPath()
|
|
109
118
|
{
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
if (!stat(bcFilePath.c_str(), &statbuf))
|
|
117
|
-
return bcFilePath;
|
|
119
|
+
// Five default ways to get extapi.bc path
|
|
120
|
+
// 1. Set extapi.bc path through setExtBcPath() method
|
|
121
|
+
// 2. Set extapi.bc path through the "-extapi = PATH_TO_EXTAPIFILE" option
|
|
122
|
+
// 3. Default path: "SVF_IR_PATH/CMAKE_BUILD_TYPE-build/svf-llvm/extapi.bc"
|
|
123
|
+
// 4. From $SVF_DIR
|
|
124
|
+
// 5. From "npm root"(If SVF is installed via npm)
|
|
118
125
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
126
|
+
struct stat statbuf;
|
|
127
|
+
// 1. Set extapi.bc path through setExtBcPath() method
|
|
128
|
+
if (!extBcPath.empty() && !stat(extBcPath.c_str(), &statbuf))
|
|
129
|
+
return extBcPath;
|
|
130
|
+
|
|
131
|
+
// 2. Set extapi.bc path through the "-extapi = PATH_TO_EXTAPIFILE" option
|
|
132
|
+
extBcPath = Options::ExtAPIPath();
|
|
133
|
+
if (!extBcPath.empty() && !stat(extBcPath.c_str(), &statbuf))
|
|
134
|
+
return extBcPath;
|
|
135
|
+
|
|
136
|
+
// 3. Default path: "SVF_IR_PATH/CMAKE_BUILD_TYPE-build/svf-llvm/extapi.bc"
|
|
137
|
+
extBcPath = std::string(EXTAPI_DIR) + "/extapi.bc";
|
|
138
|
+
if (!stat(extBcPath.c_str(), &statbuf))
|
|
139
|
+
return extBcPath;
|
|
140
|
+
|
|
141
|
+
// 4. From $SVF_DIR
|
|
142
|
+
extBcPath = getFilePath("SVF_DIR");
|
|
143
|
+
if (!stat(extBcPath.c_str(), &statbuf))
|
|
144
|
+
return extBcPath;
|
|
145
|
+
|
|
146
|
+
// 5. From "npm root"(If SVF is installed via npm)
|
|
147
|
+
extBcPath = getFilePath("npm root");
|
|
148
|
+
if (!stat(extBcPath.c_str(), &statbuf))
|
|
149
|
+
return extBcPath;
|
|
150
|
+
|
|
151
|
+
SVFUtil::errs() << "No extapi.bc found at " << extBcPath << " in getExtBcPath() !!!" << "\n"
|
|
152
|
+
<< "You can specify extapi.bc path in two ways:" << "\n"
|
|
153
|
+
<< "1. Set it via the command line using -extapi=/path_to_extapi;" << "\n"
|
|
154
|
+
<< "2. Use the API setExtBcPath(). Please note that setExtBcPath() should be used before buildSVFModule().\n";
|
|
124
155
|
abort();
|
|
125
156
|
}
|
|
126
157
|
|
|
127
158
|
std::string ExtAPI::getExtFuncAnnotation(const SVFFunction* fun, const std::string& funcAnnotation)
|
|
128
159
|
{
|
|
129
160
|
assert(fun && "Null SVFFunction* pointer");
|
|
130
|
-
const std::
|
|
131
|
-
for (const std::string& annotation : annotations)
|
|
161
|
+
for (const std::string& annotation : fun->getAnnotations())
|
|
132
162
|
if (annotation.find(funcAnnotation) != std::string::npos)
|
|
133
163
|
return annotation;
|
|
134
164
|
return "";
|
|
@@ -137,8 +167,7 @@ std::string ExtAPI::getExtFuncAnnotation(const SVFFunction* fun, const std::stri
|
|
|
137
167
|
bool ExtAPI::hasExtFuncAnnotation(const SVFFunction* fun, const std::string& funcAnnotation)
|
|
138
168
|
{
|
|
139
169
|
assert(fun && "Null SVFFunction* pointer");
|
|
140
|
-
const std::
|
|
141
|
-
for (const std::string& annotation : annotations)
|
|
170
|
+
for (const std::string& annotation : fun->getAnnotations())
|
|
142
171
|
if (annotation.find(funcAnnotation) != std::string::npos)
|
|
143
172
|
return true;
|
|
144
173
|
return false;
|
|
@@ -168,8 +197,7 @@ bool ExtAPI::is_arg_alloc(const SVFFunction* F)
|
|
|
168
197
|
// Get the position of argument which holds the new object
|
|
169
198
|
s32_t ExtAPI::get_alloc_arg_pos(const SVFFunction* F)
|
|
170
199
|
{
|
|
171
|
-
std::string
|
|
172
|
-
std::string allocArg = getExtFuncAnnotation(F, s);
|
|
200
|
+
std::string allocArg = getExtFuncAnnotation(F, "ALLOC_ARG");
|
|
173
201
|
assert(!allocArg.empty() && "Not an alloc call via argument or incorrect extern function annotation!");
|
|
174
202
|
|
|
175
203
|
std::string number;
|
package/svf/lib/Util/Options.cpp
CHANGED
|
@@ -770,6 +770,13 @@ const Option<bool> Options::VtableInSVFIR(
|
|
|
770
770
|
false
|
|
771
771
|
);
|
|
772
772
|
|
|
773
|
+
//WPAPass.cpp
|
|
774
|
+
const Option<std::string> Options::ExtAPIPath(
|
|
775
|
+
"extapi",
|
|
776
|
+
"External API extapi.bc",
|
|
777
|
+
""
|
|
778
|
+
);
|
|
779
|
+
|
|
773
780
|
const Option<bool> Options::AnderSVFG(
|
|
774
781
|
"svfg",
|
|
775
782
|
"Generate SVFG after Andersen's Analysis",
|