svf-tools 1.0.410 → 1.0.413
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/CMakeLists.txt +1 -1
- package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/Andersen_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +5 -5
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -2
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +7 -6
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp.html +2 -83
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +42 -46
- package/SVF-doxygen/html/html/MHP_8h_source.html +26 -26
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +9 -9
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +8 -8
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +30 -31
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +33 -34
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +8 -7
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +6 -5
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +214 -215
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +15 -16
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +180 -181
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +226 -227
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +0 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +232 -233
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +2 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +222 -223
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +3 -6
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +222 -223
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +152 -154
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +9 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +221 -222
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +0 -3
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +132 -133
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +28 -33
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +2 -4
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +34 -25
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +247 -248
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -5
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +208 -209
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +8 -11
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +238 -239
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +21 -24
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +275 -276
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +8 -10
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +13 -14
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +19 -43
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +74 -74
- package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +15 -14
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +94 -95
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +73 -107
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +11 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +53 -52
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +15 -30
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +193 -194
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +0 -3
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +184 -185
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -5
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +287 -288
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +8 -10
- package/SVF-doxygen/html/html/functions_0x7e.html +1 -1
- package/SVF-doxygen/html/html/functions_c.html +18 -21
- package/SVF-doxygen/html/html/functions_func_0x7e.html +1 -1
- package/SVF-doxygen/html/html/functions_func_c.html +12 -13
- package/SVF-doxygen/html/html/functions_func_p.html +9 -9
- package/SVF-doxygen/html/html/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_m.html +4 -4
- package/SVF-doxygen/html/html/functions_o.html +4 -4
- package/SVF-doxygen/html/html/functions_p.html +12 -12
- package/SVF-doxygen/html/html/functions_r.html +5 -4
- package/SVF-doxygen/html/html/functions_s.html +3 -3
- package/SVF-doxygen/html/html/functions_t.html +5 -7
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars_m.html +4 -4
- package/SVF-doxygen/html/html/functions_vars_r.html +1 -2
- package/SVF-doxygen/html/html/globals_func_g.html +0 -6
- package/SVF-doxygen/html/html/globals_g.html +2 -8
- package/SVF-doxygen/html/html/globals_s.html +4 -2
- package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -2
- package/SVF-doxygen/html/html/search/all_10.js +7 -7
- package/SVF-doxygen/html/html/search/all_12.js +3 -3
- package/SVF-doxygen/html/html/search/all_13.js +7 -7
- package/SVF-doxygen/html/html/search/all_14.js +4 -4
- package/SVF-doxygen/html/html/search/all_16.js +3 -3
- package/SVF-doxygen/html/html/search/all_1b.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +0 -2
- package/SVF-doxygen/html/html/search/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +4 -4
- package/SVF-doxygen/html/html/search/all_e.js +1 -1
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/functions_10.js +1 -1
- package/SVF-doxygen/html/html/search/functions_16.js +1 -1
- package/SVF-doxygen/html/html/search/functions_2.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +0 -2
- package/SVF-doxygen/html/html/search/functions_e.js +6 -6
- package/SVF-doxygen/html/html/search/variables_12.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_d.js +4 -4
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +14 -14
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SVFGNodeLockSpan_01_4.html +3 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +4 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -1
- package/include/DDA/DDAStat.h +4 -4
- package/include/Graphs/SVFGNode.h +2 -4
- package/include/Graphs/SVFGStat.h +8 -8
- package/include/Graphs/VFG.h +1 -1
- package/include/MTA/FSMPTA.h +1 -0
- package/include/MTA/MTAResultValidator.h +1 -1
- package/include/MemoryModel/AbstractPointsToDS.h +6 -0
- package/include/MemoryModel/PointerAnalysis.h +0 -5
- package/include/MemoryModel/SymbolTableInfo.h +2 -2
- package/include/Util/IRAnnotator.h +2 -2
- package/include/WPA/Andersen.h +1 -1
- package/include/WPA/AndersenSFR.h +1 -1
- package/lib/CUDD/CMakeLists.txt +1 -1
- package/lib/DDA/DDAStat.cpp +2 -2
- package/lib/Graphs/SVFGStat.cpp +4 -4
- package/lib/MSSA/SVFGBuilder.cpp +0 -1
- package/lib/MTA/FSMPTA.cpp +2 -3
- package/lib/MTA/LockResultValidator.cpp +1 -1
- package/lib/MTA/MHP.cpp +0 -36
- package/lib/MTA/MTAResultValidator.cpp +3 -3
- package/lib/MTA/TCT.cpp +0 -1
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +0 -1
- package/lib/MemoryModel/SVFIR.cpp +15 -15
- package/lib/MemoryModel/SymbolTableInfo.cpp +1 -1
- package/lib/SVF-FE/LLVMUtil.cpp +1 -1
- package/lib/SVF-FE/SVFIRBuilder.cpp +5 -5
- package/lib/Util/CoreBitVector.cpp +1 -1
- package/lib/Util/NodeIDAllocator.cpp +0 -1
- package/lib/WPA/AndersenSFR.cpp +2 -2
- package/lib/WPA/FlowSensitiveTBHC.cpp +1 -1
- package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
- package/package.json +1 -1
- package/tools/Example/svf-ex.cpp +4 -3
|
@@ -302,7 +302,6 @@ bool BVDataPTAImpl::readFromFile(const string& filename)
|
|
|
302
302
|
void BVDataPTAImpl::writeToModule()
|
|
303
303
|
{
|
|
304
304
|
auto irAnnotator = std::make_unique<IRAnnotator>();
|
|
305
|
-
auto mainModule = SVF::LLVMModuleSet::getLLVMModuleSet()->getMainLLVMModule();
|
|
306
305
|
|
|
307
306
|
irAnnotator->processAndersenResults(pag, this, true);
|
|
308
307
|
}
|
|
@@ -52,7 +52,7 @@ AddrStmt* SVFIR::addAddrStmt(NodeID src, NodeID dst)
|
|
|
52
52
|
{
|
|
53
53
|
SVFVar* srcNode = getGNode(src);
|
|
54
54
|
SVFVar* dstNode = getGNode(dst);
|
|
55
|
-
if(
|
|
55
|
+
if(hasNonlabeledEdge(srcNode,dstNode, SVFStmt::Addr))
|
|
56
56
|
return nullptr;
|
|
57
57
|
else
|
|
58
58
|
{
|
|
@@ -70,7 +70,7 @@ CopyStmt* SVFIR::addCopyStmt(NodeID src, NodeID dst)
|
|
|
70
70
|
{
|
|
71
71
|
SVFVar* srcNode = getGNode(src);
|
|
72
72
|
SVFVar* dstNode = getGNode(dst);
|
|
73
|
-
if(
|
|
73
|
+
if(hasNonlabeledEdge(srcNode,dstNode, SVFStmt::Copy))
|
|
74
74
|
return nullptr;
|
|
75
75
|
else
|
|
76
76
|
{
|
|
@@ -112,7 +112,7 @@ SelectStmt* SVFIR::addSelectStmt(NodeID res, NodeID op1, NodeID op2, NodeID cond
|
|
|
112
112
|
SVFVar* op2Node = getGNode(op2);
|
|
113
113
|
SVFVar* dstNode = getGNode(res);
|
|
114
114
|
SVFVar* condNode = getGNode(cond);
|
|
115
|
-
if(
|
|
115
|
+
if(hasLabeledEdge(op1Node, dstNode, SVFStmt::Select, op2Node))
|
|
116
116
|
return nullptr;
|
|
117
117
|
else
|
|
118
118
|
{
|
|
@@ -132,7 +132,7 @@ CmpStmt* SVFIR::addCmpStmt(NodeID op1, NodeID op2, NodeID dst, u32_t predicate)
|
|
|
132
132
|
SVFVar* op1Node = getGNode(op1);
|
|
133
133
|
SVFVar* op2Node = getGNode(op2);
|
|
134
134
|
SVFVar* dstNode = getGNode(dst);
|
|
135
|
-
if(
|
|
135
|
+
if(hasLabeledEdge(op1Node, dstNode, SVFStmt::Cmp, op2Node))
|
|
136
136
|
return nullptr;
|
|
137
137
|
else
|
|
138
138
|
{
|
|
@@ -153,7 +153,7 @@ BinaryOPStmt* SVFIR::addBinaryOPStmt(NodeID op1, NodeID op2, NodeID dst, u32_t o
|
|
|
153
153
|
SVFVar* op1Node = getGNode(op1);
|
|
154
154
|
SVFVar* op2Node = getGNode(op2);
|
|
155
155
|
SVFVar* dstNode = getGNode(dst);
|
|
156
|
-
if(
|
|
156
|
+
if(hasLabeledEdge(op1Node, dstNode, SVFStmt::BinaryOp, op2Node))
|
|
157
157
|
return nullptr;
|
|
158
158
|
else
|
|
159
159
|
{
|
|
@@ -172,7 +172,7 @@ UnaryOPStmt* SVFIR::addUnaryOPStmt(NodeID src, NodeID dst, u32_t opcode)
|
|
|
172
172
|
{
|
|
173
173
|
SVFVar* srcNode = getGNode(src);
|
|
174
174
|
SVFVar* dstNode = getGNode(dst);
|
|
175
|
-
if(
|
|
175
|
+
if(hasNonlabeledEdge(srcNode,dstNode, SVFStmt::UnaryOp))
|
|
176
176
|
return nullptr;
|
|
177
177
|
else
|
|
178
178
|
{
|
|
@@ -190,7 +190,7 @@ BranchStmt* SVFIR::addBranchStmt(NodeID br, NodeID cond, const BranchStmt::SuccA
|
|
|
190
190
|
{
|
|
191
191
|
SVFVar* brNode = getGNode(br);
|
|
192
192
|
SVFVar* condNode = getGNode(cond);
|
|
193
|
-
if(
|
|
193
|
+
if(hasNonlabeledEdge(condNode,brNode, SVFStmt::Branch))
|
|
194
194
|
return nullptr;
|
|
195
195
|
else
|
|
196
196
|
{
|
|
@@ -208,7 +208,7 @@ LoadStmt* SVFIR::addLoadStmt(NodeID src, NodeID dst)
|
|
|
208
208
|
{
|
|
209
209
|
SVFVar* srcNode = getGNode(src);
|
|
210
210
|
SVFVar* dstNode = getGNode(dst);
|
|
211
|
-
if(
|
|
211
|
+
if(hasNonlabeledEdge(srcNode,dstNode, SVFStmt::Load))
|
|
212
212
|
return nullptr;
|
|
213
213
|
else
|
|
214
214
|
{
|
|
@@ -227,7 +227,7 @@ StoreStmt* SVFIR::addStoreStmt(NodeID src, NodeID dst, const IntraICFGNode* curV
|
|
|
227
227
|
{
|
|
228
228
|
SVFVar* srcNode = getGNode(src);
|
|
229
229
|
SVFVar* dstNode = getGNode(dst);
|
|
230
|
-
if(
|
|
230
|
+
if(hasLabeledEdge(srcNode,dstNode, SVFStmt::Store, curVal))
|
|
231
231
|
return nullptr;
|
|
232
232
|
else
|
|
233
233
|
{
|
|
@@ -245,7 +245,7 @@ CallPE* SVFIR::addCallPE(NodeID src, NodeID dst, const CallICFGNode* cs, const F
|
|
|
245
245
|
{
|
|
246
246
|
SVFVar* srcNode = getGNode(src);
|
|
247
247
|
SVFVar* dstNode = getGNode(dst);
|
|
248
|
-
if(
|
|
248
|
+
if(hasLabeledEdge(srcNode,dstNode, SVFStmt::Call, cs))
|
|
249
249
|
return nullptr;
|
|
250
250
|
else
|
|
251
251
|
{
|
|
@@ -263,7 +263,7 @@ RetPE* SVFIR::addRetPE(NodeID src, NodeID dst, const CallICFGNode* cs, const Fun
|
|
|
263
263
|
{
|
|
264
264
|
SVFVar* srcNode = getGNode(src);
|
|
265
265
|
SVFVar* dstNode = getGNode(dst);
|
|
266
|
-
if(
|
|
266
|
+
if(hasLabeledEdge(srcNode,dstNode, SVFStmt::Ret, cs))
|
|
267
267
|
return nullptr;
|
|
268
268
|
else
|
|
269
269
|
{
|
|
@@ -292,7 +292,7 @@ TDForkPE* SVFIR::addThreadForkPE(NodeID src, NodeID dst, const CallICFGNode* cs,
|
|
|
292
292
|
{
|
|
293
293
|
SVFVar* srcNode = getGNode(src);
|
|
294
294
|
SVFVar* dstNode = getGNode(dst);
|
|
295
|
-
if(
|
|
295
|
+
if(hasLabeledEdge(srcNode,dstNode, SVFStmt::ThreadFork, cs))
|
|
296
296
|
return nullptr;
|
|
297
297
|
else
|
|
298
298
|
{
|
|
@@ -310,7 +310,7 @@ TDJoinPE* SVFIR::addThreadJoinPE(NodeID src, NodeID dst, const CallICFGNode* cs,
|
|
|
310
310
|
{
|
|
311
311
|
SVFVar* srcNode = getGNode(src);
|
|
312
312
|
SVFVar* dstNode = getGNode(dst);
|
|
313
|
-
if(
|
|
313
|
+
if(hasLabeledEdge(srcNode,dstNode, SVFStmt::ThreadJoin, cs))
|
|
314
314
|
return nullptr;
|
|
315
315
|
else
|
|
316
316
|
{
|
|
@@ -351,7 +351,7 @@ GepStmt* SVFIR::addNormalGepStmt(NodeID src, NodeID dst, const LocationSet& ls)
|
|
|
351
351
|
const LocationSet& baseLS = getLocationSetFromBaseNode(src);
|
|
352
352
|
SVFVar* baseNode = getGNode(getBaseValVar(src));
|
|
353
353
|
SVFVar* dstNode = getGNode(dst);
|
|
354
|
-
if(
|
|
354
|
+
if(hasNonlabeledEdge(baseNode, dstNode, SVFStmt::Gep))
|
|
355
355
|
return nullptr;
|
|
356
356
|
else
|
|
357
357
|
{
|
|
@@ -371,7 +371,7 @@ GepStmt* SVFIR::addVariantGepStmt(NodeID src, NodeID dst, const LocationSet& ls)
|
|
|
371
371
|
const LocationSet& baseLS = getLocationSetFromBaseNode(src);
|
|
372
372
|
SVFVar* baseNode = getGNode(getBaseValVar(src));
|
|
373
373
|
SVFVar* dstNode = getGNode(dst);
|
|
374
|
-
if(
|
|
374
|
+
if(hasNonlabeledEdge(baseNode, dstNode, SVFStmt::Gep))
|
|
375
375
|
return nullptr;
|
|
376
376
|
else
|
|
377
377
|
{
|
package/lib/SVF-FE/LLVMUtil.cpp
CHANGED
|
@@ -388,7 +388,7 @@ void SVFUtil::processArguments(int argc, char **argv, int &arg_num, char **arg_v
|
|
|
388
388
|
std::vector<std::string> &moduleNameVec)
|
|
389
389
|
{
|
|
390
390
|
bool first_ir_file = true;
|
|
391
|
-
for (
|
|
391
|
+
for (int i = 0; i < argc; ++i)
|
|
392
392
|
{
|
|
393
393
|
std::string argument(argv[i]);
|
|
394
394
|
if (SVFUtil::isIRFile(argument))
|
|
@@ -238,7 +238,7 @@ bool SVFIRBuilder::computeGepOffset(const User *V, LocationSet& ls)
|
|
|
238
238
|
llvm::APInt byteOffset(dataLayout->getIndexSizeInBits(gepOp->getPointerAddressSpace()),0,true);
|
|
239
239
|
if(gepOp && dataLayout && gepOp->accumulateConstantOffset(*dataLayout,byteOffset))
|
|
240
240
|
{
|
|
241
|
-
s32_t bo = byteOffset.getSExtValue();
|
|
241
|
+
//s32_t bo = byteOffset.getSExtValue();
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
for (bridge_gep_iterator gi = bridge_gep_begin(*V), ge = bridge_gep_end(*V);
|
|
@@ -1331,9 +1331,9 @@ void SVFIRBuilder::handleExtCall(CallSite cs, const SVFFunction *callee)
|
|
|
1331
1331
|
|
|
1332
1332
|
// We summarize the side effects: arg3->parent = arg1, arg3->left = arg1, arg3->right = arg1
|
|
1333
1333
|
// Note that arg0 is aligned with "offset".
|
|
1334
|
-
for (
|
|
1334
|
+
for (s32_t i = offset + 1; i <= offset + 3; ++i)
|
|
1335
1335
|
{
|
|
1336
|
-
if(i >= fields.size())
|
|
1336
|
+
if((u32_t)i >= fields.size())
|
|
1337
1337
|
break;
|
|
1338
1338
|
const Type* elementType = SymbolTableInfo::SymbolInfo()->getFlatternedElemType(type, fields[i].accumulateConstantFieldIdx());
|
|
1339
1339
|
NodeID vnD = getGepValVar(vArg3, fields[i], elementType);
|
|
@@ -1358,9 +1358,9 @@ void SVFIRBuilder::handleExtCall(CallSite cs, const SVFFunction *callee)
|
|
|
1358
1358
|
|
|
1359
1359
|
// We summarize the side effects: ret = arg->parent, ret = arg->left, ret = arg->right
|
|
1360
1360
|
// Note that arg0 is aligned with "offset".
|
|
1361
|
-
for (
|
|
1361
|
+
for (s32_t i = offset + 1; i <= offset + 3; ++i)
|
|
1362
1362
|
{
|
|
1363
|
-
if(i >= fields.size())
|
|
1363
|
+
if((u32_t)i >= fields.size())
|
|
1364
1364
|
break;
|
|
1365
1365
|
const Type* elementType = SymbolTableInfo::SymbolInfo()->getFlatternedElemType(type, fields[i].accumulateConstantFieldIdx());
|
|
1366
1366
|
NodeID vnS = getGepValVar(vArg, fields[i], elementType);
|
|
@@ -197,7 +197,7 @@ bool CoreBitVector::operator|=(const CoreBitVector &rhs)
|
|
|
197
197
|
|
|
198
198
|
// Can start counting from 0 because we took the addresses of both
|
|
199
199
|
// word vectors at the correct index.
|
|
200
|
-
#pragma omp simd
|
|
200
|
+
// #pragma omp simd
|
|
201
201
|
for (size_t i = 0 ; i < length; ++i)
|
|
202
202
|
{
|
|
203
203
|
const Word oldWord = thisWords[i];
|
|
@@ -191,7 +191,6 @@ namespace SVF
|
|
|
191
191
|
assert(Options::NodeAllocStrat == Strategy::DENSE && "Clusterer::cluster: only dense allocation clustering currently supported");
|
|
192
192
|
|
|
193
193
|
Map<std::string, std::string> overallStats;
|
|
194
|
-
double totalTime = 0.0;
|
|
195
194
|
double fastClusterTime = 0.0;
|
|
196
195
|
double distanceMatrixTime = 0.0;
|
|
197
196
|
double dendrogramTraversalTime = 0.0;
|
package/lib/WPA/AndersenSFR.cpp
CHANGED
|
@@ -80,7 +80,7 @@ bool AndersenSFR::mergeSrcToTgt(NodeID nodeId, NodeID newRepId)
|
|
|
80
80
|
/*!
|
|
81
81
|
* Propagate point-to set via a gep edge, using SFR
|
|
82
82
|
*/
|
|
83
|
-
bool AndersenSFR::processGepPts(PointsTo& pts, const GepCGEdge* edge)
|
|
83
|
+
bool AndersenSFR::processGepPts(const PointsTo& pts, const GepCGEdge* edge)
|
|
84
84
|
{
|
|
85
85
|
ConstraintNode* dst = edge->getDstNode();
|
|
86
86
|
NodeID dstId = dst->getId();
|
|
@@ -152,7 +152,7 @@ void AndersenSFR::fieldExpand(NodeSet& initials, s32_t offset, NodeBS& strides,
|
|
|
152
152
|
for (auto _s : strides)
|
|
153
153
|
{
|
|
154
154
|
s32_t _f1 = _f + _s;
|
|
155
|
-
loopFlag = (offsets.find(_f1) == offsets.end()) && (initOffset + _f1 < maxLimit);
|
|
155
|
+
loopFlag = (offsets.find(_f1) == offsets.end()) && ( (u32_t)(initOffset + _f1) < maxLimit);
|
|
156
156
|
if (loopFlag)
|
|
157
157
|
offsets.insert(_f1);
|
|
158
158
|
}
|
|
@@ -329,7 +329,7 @@ bool FlowSensitiveTBHC::processGep(const GepSVFGNode* gep)
|
|
|
329
329
|
}
|
|
330
330
|
|
|
331
331
|
if (DCHGraph::isAgg(baseType) && baseType->getTag() != dwarf::DW_TAG_array_type
|
|
332
|
-
&& gepStmt->getConstantFieldIdx() >= dchg->getNumFields(baseType))
|
|
332
|
+
&& ((u32_t)gepStmt->getConstantFieldIdx() >= dchg->getNumFields(baseType)))
|
|
333
333
|
{
|
|
334
334
|
// If the field offset is too high for this object, it is killed. It seems that a
|
|
335
335
|
// clone was made on this GEP but this is not the base (e.g. base->f1->f2), and SVF
|
|
@@ -306,7 +306,7 @@ void VersionedFlowSensitive::meldLabel(void)
|
|
|
306
306
|
Map<MeldVersion, Version> mvv;
|
|
307
307
|
std::vector<Version> sccToVersion(numSCCs, invalidVersion);
|
|
308
308
|
Version curVersion = 0;
|
|
309
|
-
for (
|
|
309
|
+
for (u32_t scc = 0; scc < sccToMeldVersion.size(); ++scc)
|
|
310
310
|
{
|
|
311
311
|
const MeldVersion &mv = sccToMeldVersion[scc];
|
|
312
312
|
Map<MeldVersion, Version>::const_iterator foundVersion = mvv.find(mv);
|
|
@@ -318,7 +318,7 @@ void VersionedFlowSensitive::meldLabel(void)
|
|
|
318
318
|
|
|
319
319
|
// Same for storesYieldedMeldVersion.
|
|
320
320
|
Map<NodeID, Version> storesYieldedVersion;
|
|
321
|
-
for (const
|
|
321
|
+
for (auto const& nmv : storesYieldedMeldVersion)
|
|
322
322
|
{
|
|
323
323
|
const NodeID n = nmv.first;
|
|
324
324
|
const MeldVersion &mv = nmv.second;
|
|
@@ -334,7 +334,7 @@ void VersionedFlowSensitive::meldLabel(void)
|
|
|
334
334
|
|
|
335
335
|
// 6. From SCC reliance, determine version reliances.
|
|
336
336
|
Map<Version, std::vector<Version>> &osVersionReliance = this->versionReliance.at(o);
|
|
337
|
-
for (
|
|
337
|
+
for (u32_t scc = 0; scc < numSCCs; ++scc)
|
|
338
338
|
{
|
|
339
339
|
if (sccReliance[scc].empty()) continue;
|
|
340
340
|
|
|
@@ -818,7 +818,7 @@ void VersionedFlowSensitive::dumpReliances(void) const
|
|
|
818
818
|
{
|
|
819
819
|
NodeID o = ovrv.first;
|
|
820
820
|
SVFUtil::outs() << " Object " << o << "\n";
|
|
821
|
-
for (const Map<Version, std::vector<Version>>::value_type vrv : ovrv.second)
|
|
821
|
+
for (const Map<Version, std::vector<Version>>::value_type& vrv : ovrv.second)
|
|
822
822
|
{
|
|
823
823
|
Version v = vrv.first;
|
|
824
824
|
SVFUtil::outs() << " Version " << v << " is a reliance for: ";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.413",
|
|
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": {
|
package/tools/Example/svf-ex.cpp
CHANGED
|
@@ -88,8 +88,8 @@ void traverseOnICFG(ICFG* icfg, const Instruction* inst)
|
|
|
88
88
|
while (!worklist.empty())
|
|
89
89
|
{
|
|
90
90
|
const ICFGNode* vNode = worklist.pop();
|
|
91
|
-
for (ICFGNode::const_iterator it =
|
|
92
|
-
|
|
91
|
+
for (ICFGNode::const_iterator it = vNode->OutEdgeBegin(), eit =
|
|
92
|
+
vNode->OutEdgeEnd(); it != eit; ++it)
|
|
93
93
|
{
|
|
94
94
|
ICFGEdge* edge = *it;
|
|
95
95
|
ICFGNode* succNode = edge->getDstNode();
|
|
@@ -135,7 +135,7 @@ void traverseOnVFG(const SVFG* vfg, Value* val)
|
|
|
135
135
|
/// Collect all LLVM Values
|
|
136
136
|
for(Set<const VFGNode*>::const_iterator it = visited.begin(), eit = visited.end(); it!=eit; ++it)
|
|
137
137
|
{
|
|
138
|
-
const VFGNode* node = *it;
|
|
138
|
+
// const VFGNode* node = *it;
|
|
139
139
|
/// can only query VFGNode involving top-level pointers (starting with % or @ in LLVM IR)
|
|
140
140
|
/// PAGNode* pNode = vfg->getLHSTopLevPtr(node);
|
|
141
141
|
/// Value* val = pNode->getValue();
|
|
@@ -178,6 +178,7 @@ int main(int argc, char ** argv)
|
|
|
178
178
|
|
|
179
179
|
/// ICFG
|
|
180
180
|
ICFG* icfg = pag->getICFG();
|
|
181
|
+
icfg->dump("icfg");
|
|
181
182
|
|
|
182
183
|
/// Value-Flow Graph (VFG)
|
|
183
184
|
VFG* vfg = new VFG(callgraph);
|