svf-tools 1.0.427 → 1.0.428
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/PathCondAllocator_8cpp_source.html +26 -20
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +29 -25
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +5 -4
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +8 -6
- package/SVF-doxygen/html/html/SaberAnnotator_8h.html +1 -1
- package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +6 -7
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator-members.html +26 -25
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +144 -105
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +11 -8
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +27 -23
- package/SVF-doxygen/html/html/functions_a.html +3 -3
- package/SVF-doxygen/html/html/functions_e.html +2 -2
- package/SVF-doxygen/html/html/functions_func.html +3 -3
- package/SVF-doxygen/html/html/functions_func_e.html +2 -2
- package/SVF-doxygen/html/html/functions_func_g.html +8 -7
- package/SVF-doxygen/html/html/functions_g.html +15 -14
- package/SVF-doxygen/html/html/search/all_1.js +3 -3
- package/SVF-doxygen/html/html/search/all_5.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +3 -3
- package/SVF-doxygen/html/html/search/functions_4.js +2 -2
- package/SVF-doxygen/html/html/search/functions_6.js +1 -1
- package/include/SABER/PathCondAllocator.h +8 -2
- package/include/SABER/SaberAnnotator.h +4 -4
- package/lib/SABER/PathCondAllocator.cpp +31 -26
- package/lib/SABER/ProgSlice.cpp +7 -4
- package/lib/SABER/SaberAnnotator.cpp +8 -8
- package/package.json +1 -1
|
@@ -1157,7 +1157,8 @@ $(function() {
|
|
|
1157
1157
|
, <a class="el" href="classSVF_1_1IRGraph.html#a5a34f23fee4f84e74908041efebd6867">SVF::IRGraph</a>
|
|
1158
1158
|
</li>
|
|
1159
1159
|
<li>getICFG()
|
|
1160
|
-
: <a class="el" href="
|
|
1160
|
+
: <a class="el" href="classSVF_1_1PathCondAllocator.html#a80a607028f3a05d478ffbd6fcc0bbc2a">SVF::PathCondAllocator</a>
|
|
1161
|
+
, <a class="el" href="classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e">SVF::PointerAnalysis</a>
|
|
1161
1162
|
, <a class="el" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR</a>
|
|
1162
1163
|
</li>
|
|
1163
1164
|
<li>getICFGEdge()
|
|
@@ -1385,7 +1386,7 @@ $(function() {
|
|
|
1385
1386
|
: <a class="el" href="classSVF_1_1DDAVFSolver.html#ad849ae4509e88832f784c748468ab959">SVF::DDAVFSolver< CVar, CPtSet, DPIm ></a>
|
|
1386
1387
|
</li>
|
|
1387
1388
|
<li>getLoop()
|
|
1388
|
-
: <a class="el" href="classSVF_1_1TCT.html#
|
|
1389
|
+
: <a class="el" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">SVF::TCT</a>
|
|
1389
1390
|
</li>
|
|
1390
1391
|
<li>getLoopInfo()
|
|
1391
1392
|
: <a class="el" href="classSVF_1_1PathCondAllocator.html#a10ddc3b02b2baad2edd72fe429113b0f">SVF::PathCondAllocator</a>
|
|
@@ -1446,7 +1447,7 @@ $(function() {
|
|
|
1446
1447
|
</li>
|
|
1447
1448
|
<li>getModRefInfo()
|
|
1448
1449
|
: <a class="el" href="classSVF_1_1MRGenerator.html#ac14c99ee6064fc9cf30120a83c78e702">SVF::MRGenerator</a>
|
|
1449
|
-
, <a class="el" href="classSVF_1_1WPAPass.html#
|
|
1450
|
+
, <a class="el" href="classSVF_1_1WPAPass.html#a567f818fa7b29142b18cb39e5c063a4e">SVF::WPAPass</a>
|
|
1450
1451
|
</li>
|
|
1451
1452
|
<li>getModSideEffectOfCallSite()
|
|
1452
1453
|
: <a class="el" href="classSVF_1_1MRGenerator.html#a1535832f5b1ae3178fea950bf71fdd99">SVF::MRGenerator</a>
|
|
@@ -1520,7 +1521,7 @@ $(function() {
|
|
|
1520
1521
|
: <a class="el" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">SVF::SVFG</a>
|
|
1521
1522
|
</li>
|
|
1522
1523
|
<li>getMUSet()
|
|
1523
|
-
: <a class="el" href="classSVF_1_1MemSSA.html#
|
|
1524
|
+
: <a class="el" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">SVF::MemSSA</a>
|
|
1524
1525
|
</li>
|
|
1525
1526
|
<li>getMutDFPTDataTy()
|
|
1526
1527
|
: <a class="el" href="classSVF_1_1BVDataPTAImpl.html#acbb979edee9427efa2a7c0dbd881c483">SVF::BVDataPTAImpl</a>
|
|
@@ -1639,7 +1640,7 @@ $(function() {
|
|
|
1639
1640
|
</li>
|
|
1640
1641
|
<li>getObject()
|
|
1641
1642
|
: <a class="el" href="classSVF_1_1DummyVersionPropSVFGNode.html#ac10a4b9c2ee536cfcb74120d86c0619f">SVF::DummyVersionPropSVFGNode</a>
|
|
1642
|
-
, <a class="el" href="classSVF_1_1SVFIR.html#
|
|
1643
|
+
, <a class="el" href="classSVF_1_1SVFIR.html#a2dd4d5f704906270af13e7a07f900eb1">SVF::SVFIR</a>
|
|
1643
1644
|
</li>
|
|
1644
1645
|
<li>getObjectNode()
|
|
1645
1646
|
: <a class="el" href="classSVF_1_1IRGraph.html#aba13ca47865614e45321c1ae53e640c1">SVF::IRGraph</a>
|
|
@@ -1915,11 +1916,11 @@ $(function() {
|
|
|
1915
1916
|
, <a class="el" href="classSVF_1_1MutableDFPTData.html#a4cbb9131a89c5c48367fb927693b5c6b">SVF::MutableDFPTData< Key, KeySet, Data, DataSet ></a>
|
|
1916
1917
|
, <a class="el" href="classSVF_1_1MutableDiffPTData.html#ac2f494da9379c336bb81a0dc438b5af9">SVF::MutableDiffPTData< Key, KeySet, Data, DataSet ></a>
|
|
1917
1918
|
, <a class="el" href="classSVF_1_1MutablePTData.html#abe4230f3ba78fc660ea291fda36ffa62">SVF::MutablePTData< Key, KeySet, Data, DataSet ></a>
|
|
1918
|
-
, <a class="el" href="classSVF_1_1MutableVersionedPTData.html#
|
|
1919
|
+
, <a class="el" href="classSVF_1_1MutableVersionedPTData.html#afcc34f6cedca6a8f151b1a7251832818">SVF::MutableVersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet ></a>
|
|
1919
1920
|
, <a class="el" href="classSVF_1_1PersistentDFPTData.html#a5f6a01d0bb40a718bc14f2cc1bb98a13">SVF::PersistentDFPTData< Key, KeySet, Data, DataSet ></a>
|
|
1920
1921
|
, <a class="el" href="classSVF_1_1PersistentDiffPTData.html#a9982ecf42416756a0729a28e8713cfed">SVF::PersistentDiffPTData< Key, KeySet, Data, DataSet ></a>
|
|
1921
1922
|
, <a class="el" href="classSVF_1_1PersistentPTData.html#a34f8226202e1654d4e67916b21ec4d99">SVF::PersistentPTData< Key, KeySet, Data, DataSet ></a>
|
|
1922
|
-
, <a class="el" href="classSVF_1_1PersistentVersionedPTData.html#
|
|
1923
|
+
, <a class="el" href="classSVF_1_1PersistentVersionedPTData.html#afe80884fa8227e50f28631e20aa6fdf6">SVF::PersistentVersionedPTData< Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet ></a>
|
|
1923
1924
|
, <a class="el" href="classSVF_1_1PointerAnalysis.html#a4dfb43679e9fa794ebad99b6584c32ec">SVF::PointerAnalysis</a>
|
|
1924
1925
|
, <a class="el" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">SVF::PTData< Key, KeySet, Data, DataSet ></a>
|
|
1925
1926
|
, <a class="el" href="classSVF_1_1Steensgaard.html#adbcb9af660ab9bb0202bd32342280486">SVF::Steensgaard</a>
|
|
@@ -1932,7 +1933,7 @@ $(function() {
|
|
|
1932
1933
|
, <a class="el" href="classSVF_1_1MutablePTData.html#a8838058efe94b62553bb5416fdc2ec5b">SVF::MutablePTData< Key, KeySet, Data, DataSet ></a>
|
|
1933
1934
|
</li>
|
|
1934
1935
|
<li>getPtsSubSetMap()
|
|
1935
|
-
: <a class="el" href="classSVF_1_1IntraDisjointMRG.html#
|
|
1936
|
+
: <a class="el" href="classSVF_1_1IntraDisjointMRG.html#ae3c857c056f4e6e863843bafba7fdea1">SVF::IntraDisjointMRG</a>
|
|
1936
1937
|
</li>
|
|
1937
1938
|
<li>getRawCTirMetadata()
|
|
1938
1939
|
: <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a2c47ba37bd250be455a21d1f0049d556">SVF::FlowSensitiveTBHC</a>
|
|
@@ -1993,7 +1994,7 @@ $(function() {
|
|
|
1993
1994
|
, <a class="el" href="classSVF_1_1ICFGBuilder.html#a7c1125c992eec20e118e6bfc12cb8bfb">SVF::ICFGBuilder</a>
|
|
1994
1995
|
</li>
|
|
1995
1996
|
<li>getRetParmAtJoinedSite()
|
|
1996
|
-
: <a class="el" href="classSVF_1_1ThreadAPI.html#
|
|
1997
|
+
: <a class="el" href="classSVF_1_1ThreadAPI.html#ad1c595f7b15a2d3079b9e9200c84f7d7">SVF::ThreadAPI</a>
|
|
1997
1998
|
</li>
|
|
1998
1999
|
<li>getRetPE()
|
|
1999
2000
|
: <a class="el" href="classSVF_1_1RetCFGEdge.html#af84bf360ca641711a3c625de86feb603">SVF::RetCFGEdge</a>
|
|
@@ -2020,7 +2021,7 @@ $(function() {
|
|
|
2020
2021
|
</li>
|
|
2021
2022
|
<li>getRevPts()
|
|
2022
2023
|
: <a class="el" href="classSVF_1_1BVDataPTAImpl.html#a58113943e4e7144d94d26991dcc8bcc7">SVF::BVDataPTAImpl</a>
|
|
2023
|
-
, <a class="el" href="classSVF_1_1CondPTAImpl.html#
|
|
2024
|
+
, <a class="el" href="classSVF_1_1CondPTAImpl.html#aa266eef30817c557882de19aefe135a9">SVF::CondPTAImpl< Cond ></a>
|
|
2024
2025
|
, <a class="el" href="classSVF_1_1MutableDFPTData.html#a2f98940bd8266ad37a975c6d30d948b4">SVF::MutableDFPTData< Key, KeySet, Data, DataSet ></a>
|
|
2025
2026
|
, <a class="el" href="classSVF_1_1MutableDiffPTData.html#ad9bd6762fc6525afaed4a6c6da63688d">SVF::MutableDiffPTData< Key, KeySet, Data, DataSet ></a>
|
|
2026
2027
|
, <a class="el" href="classSVF_1_1MutablePTData.html#a36aa05b8f5c308035315d6df7036c096">SVF::MutablePTData< Key, KeySet, Data, DataSet ></a>
|
|
@@ -2223,10 +2224,10 @@ $(function() {
|
|
|
2223
2224
|
: <a class="el" href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">SVF::SVFIR</a>
|
|
2224
2225
|
</li>
|
|
2225
2226
|
<li>getTaskDataAtHareParForSite()
|
|
2226
|
-
: <a class="el" href="classSVF_1_1ThreadAPI.html#
|
|
2227
|
+
: <a class="el" href="classSVF_1_1ThreadAPI.html#a58cf56e35be873a5a26c5eb0d9b5c9b3">SVF::ThreadAPI</a>
|
|
2227
2228
|
</li>
|
|
2228
2229
|
<li>getTaskFuncAtHareParForSite()
|
|
2229
|
-
: <a class="el" href="classSVF_1_1ThreadAPI.html#
|
|
2230
|
+
: <a class="el" href="classSVF_1_1ThreadAPI.html#afeedd6e518af76fa9e7142af8899b2f5">SVF::ThreadAPI</a>
|
|
2230
2231
|
</li>
|
|
2231
2232
|
<li>getTCG()
|
|
2232
2233
|
: <a class="el" href="classSVF_1_1ForkJoinAnalysis.html#a8ad9b8cb0e6300b2ffc55244e53cece6">SVF::ForkJoinAnalysis</a>
|
|
@@ -2240,7 +2241,7 @@ $(function() {
|
|
|
2240
2241
|
: <a class="el" href="classSVF_1_1TCT.html#a6ac3c91742a6e9088c4e9cf1b7d2f42e">SVF::TCT</a>
|
|
2241
2242
|
</li>
|
|
2242
2243
|
<li>getTCTNode()
|
|
2243
|
-
: <a class="el" href="classSVF_1_1TCT.html#
|
|
2244
|
+
: <a class="el" href="classSVF_1_1TCT.html#aac9d98a33fbaa6defa3f847d0bbe76d6">SVF::TCT</a>
|
|
2244
2245
|
</li>
|
|
2245
2246
|
<li>getTCTNodeNum()
|
|
2246
2247
|
: <a class="el" href="classSVF_1_1TCT.html#af03bfeae7e09a9f62d96ba59632e588f">SVF::TCT</a>
|
|
@@ -2434,7 +2435,7 @@ $(function() {
|
|
|
2434
2435
|
: <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#a01a199e9fdb5759c7f78ee344dbc413c">SVF::VersionedFlowSensitive</a>
|
|
2435
2436
|
</li>
|
|
2436
2437
|
<li>global_begin()
|
|
2437
|
-
: <a class="el" href="classSVF_1_1SVFModule.html#
|
|
2438
|
+
: <a class="el" href="classSVF_1_1SVFModule.html#a4dc32c583d29d74d052eaa5665b0b70e">SVF::SVFModule</a>
|
|
2438
2439
|
</li>
|
|
2439
2440
|
<li>global_end()
|
|
2440
2441
|
: <a class="el" href="classSVF_1_1SVFModule.html#afa9068e662918f6649d5ca25340a3ae2">SVF::SVFModule</a>
|
|
@@ -395,13 +395,13 @@ var searchData=
|
|
|
395
395
|
['anno_5fmhp',['ANNO_MHP',['../classSVF_1_1MTAAnnotator.html#a4e10dbbb742125ebcbdc079ad647b87b',1,'SVF::MTAAnnotator']]],
|
|
396
396
|
['annoflag',['AnnoFlag',['../classSVF_1_1Options.html#ae1dadbd4c213f1bd5b8957b5c747bebd',1,'SVF::Options']]],
|
|
397
397
|
['annotatedrcheck',['annotateDRCheck',['../classSVF_1_1MTAAnnotator.html#a5513a9f2a5b89ab5f90549552fb2b20f',1,'SVF::MTAAnnotator']]],
|
|
398
|
-
['annotatefeasiblebranch',['annotateFeasibleBranch',['../classSVF_1_1SaberAnnotator.html#
|
|
399
|
-
['annotateinfeasiblebranch',['annotateInfeasibleBranch',['../classSVF_1_1SaberAnnotator.html#
|
|
398
|
+
['annotatefeasiblebranch',['annotateFeasibleBranch',['../classSVF_1_1SaberAnnotator.html#a60b66e1cb775c175c88f514e202c7611',1,'SVF::SaberAnnotator']]],
|
|
399
|
+
['annotateinfeasiblebranch',['annotateInfeasibleBranch',['../classSVF_1_1SaberAnnotator.html#a7982caf8a058f805ae6e777ce2366246',1,'SVF::SaberAnnotator']]],
|
|
400
400
|
['annotatepaths',['annotatePaths',['../classSVF_1_1ProgSlice.html#ab1fdec8d39c9890324718607d7464eab',1,'SVF::ProgSlice']]],
|
|
401
401
|
['annotatesinks',['annotateSinks',['../classSVF_1_1SaberAnnotator.html#abec0f249cc64d3588e83a68ed12271bf',1,'SVF::SaberAnnotator']]],
|
|
402
402
|
['annotateslice',['annotateSlice',['../classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd',1,'SVF::SrcSnkDDA']]],
|
|
403
403
|
['annotatesource',['annotateSource',['../classSVF_1_1SaberAnnotator.html#aa9446af29edf126ad30bbada51478c13',1,'SVF::SaberAnnotator']]],
|
|
404
|
-
['annotateswitch',['annotateSwitch',['../classSVF_1_1SaberAnnotator.html#
|
|
404
|
+
['annotateswitch',['annotateSwitch',['../classSVF_1_1SaberAnnotator.html#aebed471b55aa459a007d6a2cf668d886',1,'SVF::SaberAnnotator']]],
|
|
405
405
|
['annotationtime',['AnnotationTime',['../classSVF_1_1MTAStat.html#a51e1ba35f81d89e210a937942f516839',1,'SVF::MTAStat']]],
|
|
406
406
|
['annotator',['Annotator',['../classSVF_1_1Annotator.html',1,'SVF::Annotator'],['../classSVF_1_1Annotator.html#aa72e6952df50b5b36f0e0fed4024055f',1,'SVF::Annotator::Annotator()']]],
|
|
407
407
|
['annotator_2eh',['Annotator.h',['../Annotator_8h.html',1,'']]],
|
|
@@ -118,8 +118,8 @@ var searchData=
|
|
|
118
118
|
['evaluate',['evaluate',['../classSVF_1_1NodeIDAllocator_1_1Clusterer.html#acbbc5c04c79846fe1cc46a3bd5a65aba',1,'SVF::NodeIDAllocator::Clusterer']]],
|
|
119
119
|
['evaluatebranchcond',['evaluateBranchCond',['../classSVF_1_1PathCondAllocator.html#a283788ca2886b03803829434150d11fe',1,'SVF::PathCondAllocator']]],
|
|
120
120
|
['evaluateloopexitbranch',['evaluateLoopExitBranch',['../classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d',1,'SVF::PathCondAllocator']]],
|
|
121
|
-
['evaluateprogexit',['evaluateProgExit',['../classSVF_1_1PathCondAllocator.html#
|
|
122
|
-
['evaluatetestnulllikeexpr',['evaluateTestNullLikeExpr',['../classSVF_1_1PathCondAllocator.html#
|
|
121
|
+
['evaluateprogexit',['evaluateProgExit',['../classSVF_1_1PathCondAllocator.html#a79d6bbd55a134c856f3e80a898af23ee',1,'SVF::PathCondAllocator']]],
|
|
122
|
+
['evaluatetestnulllikeexpr',['evaluateTestNullLikeExpr',['../classSVF_1_1PathCondAllocator.html#af595a4b93bd350f489bfe8635d86cfcc',1,'SVF::PathCondAllocator']]],
|
|
123
123
|
['exactcondelem',['exactCondElem',['../classSVF_1_1PathCondAllocator.html#a61095843f86d1c5c14750a635fb3aacb',1,'SVF::PathCondAllocator']]],
|
|
124
124
|
['exc_5fprob',['EXC_PROB',['../cuddInt_8c.html#a2c0be8d31945920a5ffb6dae9115cbb8',1,'cuddInt.c']]],
|
|
125
125
|
['executedbythesamethread',['executedByTheSameThread',['../classSVF_1_1MHP.html#aab80f1bc5c359a7d3b03f249bafa1d40',1,'SVF::MHP']]],
|
|
@@ -350,7 +350,7 @@ var searchData=
|
|
|
350
350
|
['getgraphedge',['getGraphEdge',['../classSVF_1_1PTACallGraph.html#a2634a24621ab93fae7ec1cf94a8cba0b',1,'SVF::PTACallGraph::getGraphEdge()'],['../classSVF_1_1TCT.html#a7b40580939dc63f501a32571806c07bc',1,'SVF::TCT::getGraphEdge()']]],
|
|
351
351
|
['getgraphname',['getGraphName',['../classSVF_1_1IRGraph.html#a5a34f23fee4f84e74908041efebd6867',1,'SVF::IRGraph::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html#a942e068d1debc7f7dd7a6232adc2130f',1,'llvm::DOTGraphTraits< CHGraph * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9ed4562e3c1223c20e76e1372ba8b30d',1,'llvm::DOTGraphTraits< ConstraintGraph * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a46226ebac48103764df6427119a322ce',1,'llvm::DOTGraphTraits< ICFG * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html#a6cbd0e71b5ea955de8a548bad9256160',1,'llvm::DOTGraphTraits< IRGraph * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html#af55f35dde97c37966d9d3396662e00aa',1,'llvm::DOTGraphTraits< OfflineConsG * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html#a698264fcfb5bdb99a28618d0701860d6',1,'llvm::DOTGraphTraits< PTACallGraph * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html#a1275496006929be6375a0d71ed86c79b',1,'llvm::DOTGraphTraits< SVFG * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#aaedec44d41a6e36c9e5db804e4a005dd',1,'llvm::DOTGraphTraits< VFG * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html#ad06b27680684ff1a7f1d0608f67cf89a',1,'llvm::DOTGraphTraits< TCT * >::getGraphName()']]],
|
|
352
352
|
['getheapallocholdingargposition',['getHeapAllocHoldingArgPosition',['../namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b',1,'SVF::SVFUtil::getHeapAllocHoldingArgPosition(const SVFFunction *fun)'],['../namespaceSVF_1_1SVFUtil.html#a298b6366145ed871faf3d01420ae5d20',1,'SVF::SVFUtil::getHeapAllocHoldingArgPosition(const CallSite cs)'],['../namespaceSVF_1_1SVFUtil.html#a5af986a7698e72272707cc2a466d5ae7',1,'SVF::SVFUtil::getHeapAllocHoldingArgPosition(const Instruction *inst)']]],
|
|
353
|
-
['geticfg',['getICFG',['../classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e',1,'SVF::PointerAnalysis::getICFG()'],['../classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da',1,'SVF::SVFIR::getICFG()']]],
|
|
353
|
+
['geticfg',['getICFG',['../classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e',1,'SVF::PointerAnalysis::getICFG()'],['../classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da',1,'SVF::SVFIR::getICFG()'],['../classSVF_1_1PathCondAllocator.html#a80a607028f3a05d478ffbd6fcc0bbc2a',1,'SVF::PathCondAllocator::getICFG()']]],
|
|
354
354
|
['geticfgedge',['getICFGEdge',['../classSVF_1_1ICFG.html#a5dd4ac55123501c47c628adcf27e2475',1,'SVF::ICFG']]],
|
|
355
355
|
['geticfgkind',['getICFGKind',['../classSVF_1_1ICFGPrinter.html#a2c022308f9c7ae3bf33d9482fcb51e03',1,'SVF::ICFGPrinter']]],
|
|
356
356
|
['geticfgnode',['getICFGNode',['../classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b',1,'SVF::ICFG::getICFGNode(NodeID id) const'],['../classSVF_1_1ICFG.html#a489d4265c87304402bb3a20654ab4b99',1,'SVF::ICFG::getICFGNode(const Instruction *inst)'],['../classSVF_1_1VFGNode.html#a0675465e11d1d42ee7e2b7ab3c5de829',1,'SVF::VFGNode::getICFGNode()'],['../classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b',1,'SVF::SVFStmt::getICFGNode()']]],
|
|
@@ -300,13 +300,13 @@ var searchData=
|
|
|
300
300
|
['andersenstat',['AndersenStat',['../classSVF_1_1AndersenStat.html#a257d814ef3983c4f513d37161d376719',1,'SVF::AndersenStat']]],
|
|
301
301
|
['andersenwavediff',['AndersenWaveDiff',['../classSVF_1_1AndersenWaveDiff.html#a7478d23055a5db981d7a9515cffc99da',1,'SVF::AndersenWaveDiff']]],
|
|
302
302
|
['annotatedrcheck',['annotateDRCheck',['../classSVF_1_1MTAAnnotator.html#a5513a9f2a5b89ab5f90549552fb2b20f',1,'SVF::MTAAnnotator']]],
|
|
303
|
-
['annotatefeasiblebranch',['annotateFeasibleBranch',['../classSVF_1_1SaberAnnotator.html#
|
|
304
|
-
['annotateinfeasiblebranch',['annotateInfeasibleBranch',['../classSVF_1_1SaberAnnotator.html#
|
|
303
|
+
['annotatefeasiblebranch',['annotateFeasibleBranch',['../classSVF_1_1SaberAnnotator.html#a60b66e1cb775c175c88f514e202c7611',1,'SVF::SaberAnnotator']]],
|
|
304
|
+
['annotateinfeasiblebranch',['annotateInfeasibleBranch',['../classSVF_1_1SaberAnnotator.html#a7982caf8a058f805ae6e777ce2366246',1,'SVF::SaberAnnotator']]],
|
|
305
305
|
['annotatepaths',['annotatePaths',['../classSVF_1_1ProgSlice.html#ab1fdec8d39c9890324718607d7464eab',1,'SVF::ProgSlice']]],
|
|
306
306
|
['annotatesinks',['annotateSinks',['../classSVF_1_1SaberAnnotator.html#abec0f249cc64d3588e83a68ed12271bf',1,'SVF::SaberAnnotator']]],
|
|
307
307
|
['annotateslice',['annotateSlice',['../classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd',1,'SVF::SrcSnkDDA']]],
|
|
308
308
|
['annotatesource',['annotateSource',['../classSVF_1_1SaberAnnotator.html#aa9446af29edf126ad30bbada51478c13',1,'SVF::SaberAnnotator']]],
|
|
309
|
-
['annotateswitch',['annotateSwitch',['../classSVF_1_1SaberAnnotator.html#
|
|
309
|
+
['annotateswitch',['annotateSwitch',['../classSVF_1_1SaberAnnotator.html#aebed471b55aa459a007d6a2cf668d886',1,'SVF::SaberAnnotator']]],
|
|
310
310
|
['annotator',['Annotator',['../classSVF_1_1Annotator.html#aa72e6952df50b5b36f0e0fed4024055f',1,'SVF::Annotator']]],
|
|
311
311
|
['answerqueries',['answerQueries',['../classSVF_1_1DDAClient.html#a3b202f9a70b6e23c06a15556d23d245e',1,'SVF::DDAClient']]],
|
|
312
312
|
['arg_5fbegin',['arg_begin',['../classSVF_1_1CallSite.html#aabc0054b7f4e06b7ca0b6072746984e6',1,'SVF::CallSite']]],
|
|
@@ -42,8 +42,8 @@ var searchData=
|
|
|
42
42
|
['evaluate',['evaluate',['../classSVF_1_1NodeIDAllocator_1_1Clusterer.html#acbbc5c04c79846fe1cc46a3bd5a65aba',1,'SVF::NodeIDAllocator::Clusterer']]],
|
|
43
43
|
['evaluatebranchcond',['evaluateBranchCond',['../classSVF_1_1PathCondAllocator.html#a283788ca2886b03803829434150d11fe',1,'SVF::PathCondAllocator']]],
|
|
44
44
|
['evaluateloopexitbranch',['evaluateLoopExitBranch',['../classSVF_1_1PathCondAllocator.html#a623e6ec670e5f6aeedee26b146ad5a0d',1,'SVF::PathCondAllocator']]],
|
|
45
|
-
['evaluateprogexit',['evaluateProgExit',['../classSVF_1_1PathCondAllocator.html#
|
|
46
|
-
['evaluatetestnulllikeexpr',['evaluateTestNullLikeExpr',['../classSVF_1_1PathCondAllocator.html#
|
|
45
|
+
['evaluateprogexit',['evaluateProgExit',['../classSVF_1_1PathCondAllocator.html#a79d6bbd55a134c856f3e80a898af23ee',1,'SVF::PathCondAllocator']]],
|
|
46
|
+
['evaluatetestnulllikeexpr',['evaluateTestNullLikeExpr',['../classSVF_1_1PathCondAllocator.html#af595a4b93bd350f489bfe8635d86cfcc',1,'SVF::PathCondAllocator']]],
|
|
47
47
|
['exactcondelem',['exactCondElem',['../classSVF_1_1PathCondAllocator.html#a61095843f86d1c5c14750a635fb3aacb',1,'SVF::PathCondAllocator']]],
|
|
48
48
|
['executedbythesamethread',['executedByTheSameThread',['../classSVF_1_1MHP.html#aab80f1bc5c359a7d3b03f249bafa1d40',1,'SVF::MHP']]],
|
|
49
49
|
['exit',['exit',['../util_8h.html#a43b6ea6be735bb828bc062c70cadeff8',1,'util.h']]],
|
|
@@ -294,7 +294,7 @@ var searchData=
|
|
|
294
294
|
['getgraphedge',['getGraphEdge',['../classSVF_1_1PTACallGraph.html#a2634a24621ab93fae7ec1cf94a8cba0b',1,'SVF::PTACallGraph::getGraphEdge()'],['../classSVF_1_1TCT.html#a7b40580939dc63f501a32571806c07bc',1,'SVF::TCT::getGraphEdge()']]],
|
|
295
295
|
['getgraphname',['getGraphName',['../classSVF_1_1IRGraph.html#a5a34f23fee4f84e74908041efebd6867',1,'SVF::IRGraph::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html#a942e068d1debc7f7dd7a6232adc2130f',1,'llvm::DOTGraphTraits< CHGraph * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9ed4562e3c1223c20e76e1372ba8b30d',1,'llvm::DOTGraphTraits< ConstraintGraph * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a46226ebac48103764df6427119a322ce',1,'llvm::DOTGraphTraits< ICFG * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html#a6cbd0e71b5ea955de8a548bad9256160',1,'llvm::DOTGraphTraits< IRGraph * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html#af55f35dde97c37966d9d3396662e00aa',1,'llvm::DOTGraphTraits< OfflineConsG * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html#a698264fcfb5bdb99a28618d0701860d6',1,'llvm::DOTGraphTraits< PTACallGraph * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html#a1275496006929be6375a0d71ed86c79b',1,'llvm::DOTGraphTraits< SVFG * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#aaedec44d41a6e36c9e5db804e4a005dd',1,'llvm::DOTGraphTraits< VFG * >::getGraphName()'],['../structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html#ad06b27680684ff1a7f1d0608f67cf89a',1,'llvm::DOTGraphTraits< TCT * >::getGraphName()']]],
|
|
296
296
|
['getheapallocholdingargposition',['getHeapAllocHoldingArgPosition',['../namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b',1,'SVF::SVFUtil::getHeapAllocHoldingArgPosition(const SVFFunction *fun)'],['../namespaceSVF_1_1SVFUtil.html#a298b6366145ed871faf3d01420ae5d20',1,'SVF::SVFUtil::getHeapAllocHoldingArgPosition(const CallSite cs)'],['../namespaceSVF_1_1SVFUtil.html#a5af986a7698e72272707cc2a466d5ae7',1,'SVF::SVFUtil::getHeapAllocHoldingArgPosition(const Instruction *inst)']]],
|
|
297
|
-
['geticfg',['getICFG',['../classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e',1,'SVF::PointerAnalysis::getICFG()'],['../classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da',1,'SVF::SVFIR::getICFG()']]],
|
|
297
|
+
['geticfg',['getICFG',['../classSVF_1_1PointerAnalysis.html#ade879ee99cae01632d567d3736dcad9e',1,'SVF::PointerAnalysis::getICFG()'],['../classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da',1,'SVF::SVFIR::getICFG()'],['../classSVF_1_1PathCondAllocator.html#a80a607028f3a05d478ffbd6fcc0bbc2a',1,'SVF::PathCondAllocator::getICFG()']]],
|
|
298
298
|
['geticfgedge',['getICFGEdge',['../classSVF_1_1ICFG.html#a5dd4ac55123501c47c628adcf27e2475',1,'SVF::ICFG']]],
|
|
299
299
|
['geticfgkind',['getICFGKind',['../classSVF_1_1ICFGPrinter.html#a2c022308f9c7ae3bf33d9482fcb51e03',1,'SVF::ICFGPrinter']]],
|
|
300
300
|
['geticfgnode',['getICFGNode',['../classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b',1,'SVF::ICFG::getICFGNode(NodeID id) const'],['../classSVF_1_1ICFG.html#a489d4265c87304402bb3a20654ab4b99',1,'SVF::ICFG::getICFGNode(const Instruction *inst)'],['../classSVF_1_1VFGNode.html#a0675465e11d1d42ee7e2b7ab3c5de829',1,'SVF::VFGNode::getICFGNode()'],['../classSVF_1_1SVFStmt.html#aa809a57c8cdaaa35dfc3cc0f3b33b52b',1,'SVF::SVFStmt::getICFGNode()']]],
|
|
@@ -202,6 +202,10 @@ public:
|
|
|
202
202
|
return condMgr->isEquivalentBranchCond(lhs, rhs);
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
+
inline ICFG* getICFG() const {
|
|
206
|
+
return PAG::getPAG()->getICFG();
|
|
207
|
+
}
|
|
208
|
+
|
|
205
209
|
private:
|
|
206
210
|
|
|
207
211
|
/// Allocate path condition for every basic block
|
|
@@ -223,9 +227,9 @@ private:
|
|
|
223
227
|
/// Evaluate loop exit branch
|
|
224
228
|
Condition* evaluateLoopExitBranch(const BasicBlock * bb, const BasicBlock *succ);
|
|
225
229
|
/// Return branch condition after evaluating test null like expression
|
|
226
|
-
Condition* evaluateTestNullLikeExpr(const
|
|
230
|
+
Condition* evaluateTestNullLikeExpr(const BranchStmt* branchStmt, const BasicBlock *succ);
|
|
227
231
|
/// Return condition when there is a branch calls program exit
|
|
228
|
-
Condition* evaluateProgExit(const
|
|
232
|
+
Condition* evaluateProgExit(const BranchStmt* branchStmt, const BasicBlock *succ);
|
|
229
233
|
/// Collect basic block contains program exit function call
|
|
230
234
|
void collectBBCallingProgExit(const BasicBlock& bb);
|
|
231
235
|
bool isBBCallsProgExit(const BasicBlock* bb);
|
|
@@ -269,6 +273,8 @@ private:
|
|
|
269
273
|
}
|
|
270
274
|
//@}
|
|
271
275
|
|
|
276
|
+
|
|
277
|
+
|
|
272
278
|
/// Release memory
|
|
273
279
|
void destroy(){
|
|
274
280
|
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
#ifndef SABERANNOTATOR_H_
|
|
31
31
|
#define SABERANNOTATOR_H_
|
|
32
32
|
|
|
33
|
-
#include
|
|
33
|
+
#include <MemoryModel/SVFStatements.h>
|
|
34
34
|
#include "Util/Annotator.h"
|
|
35
35
|
|
|
36
36
|
namespace SVF
|
|
@@ -60,10 +60,10 @@ public:
|
|
|
60
60
|
//@{
|
|
61
61
|
void annotateSource();
|
|
62
62
|
void annotateSinks();
|
|
63
|
-
void annotateFeasibleBranch(const
|
|
64
|
-
void annotateInfeasibleBranch(const
|
|
63
|
+
void annotateFeasibleBranch(const BranchStmt *branchStmt, u32_t succPos);
|
|
64
|
+
void annotateInfeasibleBranch(const BranchStmt *branchStmt, u32_t succPos);
|
|
65
65
|
|
|
66
|
-
void annotateSwitch(
|
|
66
|
+
void annotateSwitch(const BranchStmt *swithStmt, u32_t succPos);
|
|
67
67
|
//@}
|
|
68
68
|
};
|
|
69
69
|
|
|
@@ -177,12 +177,12 @@ void PathCondAllocator::setBranchCond(const BasicBlock *bb, const BasicBlock *su
|
|
|
177
177
|
/*!
|
|
178
178
|
* Evaluate null like expression for source-sink related bug detection in SABER
|
|
179
179
|
*/
|
|
180
|
-
PathCondAllocator::Condition* PathCondAllocator::evaluateTestNullLikeExpr(const
|
|
180
|
+
PathCondAllocator::Condition* PathCondAllocator::evaluateTestNullLikeExpr(const BranchStmt* branchStmt, const BasicBlock *succ)
|
|
181
181
|
{
|
|
182
182
|
|
|
183
|
-
const BasicBlock* succ1 =
|
|
183
|
+
const BasicBlock* succ1 = branchStmt->getSuccessor(0)->getBB();
|
|
184
184
|
|
|
185
|
-
if(isTestNullExpr(
|
|
185
|
+
if(isTestNullExpr(branchStmt->getCondition()->getValue()))
|
|
186
186
|
{
|
|
187
187
|
// succ is then branch
|
|
188
188
|
if(succ1 == succ)
|
|
@@ -191,7 +191,7 @@ PathCondAllocator::Condition* PathCondAllocator::evaluateTestNullLikeExpr(const
|
|
|
191
191
|
else
|
|
192
192
|
return getTrueCond();
|
|
193
193
|
}
|
|
194
|
-
if(isTestNotNullExpr(
|
|
194
|
+
if(isTestNotNullExpr(branchStmt->getCondition()->getValue()))
|
|
195
195
|
{
|
|
196
196
|
// succ is then branch
|
|
197
197
|
if(succ1 == succ)
|
|
@@ -207,10 +207,10 @@ PathCondAllocator::Condition* PathCondAllocator::evaluateTestNullLikeExpr(const
|
|
|
207
207
|
/*!
|
|
208
208
|
* Evaluate condition for program exit (e.g., exit(0))
|
|
209
209
|
*/
|
|
210
|
-
PathCondAllocator::Condition* PathCondAllocator::evaluateProgExit(const
|
|
210
|
+
PathCondAllocator::Condition* PathCondAllocator::evaluateProgExit(const BranchStmt* branchStmt, const BasicBlock *succ)
|
|
211
211
|
{
|
|
212
|
-
const BasicBlock*
|
|
213
|
-
const BasicBlock* succ2 =
|
|
212
|
+
const BasicBlock *succ1 = branchStmt->getSuccessor(0)->getBB();
|
|
213
|
+
const BasicBlock* succ2 = branchStmt->getSuccessor(1)->getBB();
|
|
214
214
|
|
|
215
215
|
bool branch1 = isBBCallsProgExit(succ1);
|
|
216
216
|
bool branch2 = isBBCallsProgExit(succ2);
|
|
@@ -299,26 +299,31 @@ PathCondAllocator::Condition* PathCondAllocator::evaluateBranchCond(const BasicB
|
|
|
299
299
|
return getTrueCond();
|
|
300
300
|
}
|
|
301
301
|
|
|
302
|
-
if(
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
302
|
+
if (ICFGNode *icfgNode = getICFG()->getICFGNode(bb->getTerminator())) {
|
|
303
|
+
for (const auto &svfStmt: icfgNode->getSVFStmts()) {
|
|
304
|
+
if (const BranchStmt *branchStmt = SVFUtil::dyn_cast<BranchStmt>(svfStmt)) {
|
|
305
|
+
if(branchStmt->getNumSuccessors() == 2) {
|
|
306
|
+
const BasicBlock* succ1 = branchStmt->getSuccessor(0)->getBB();
|
|
307
|
+
const BasicBlock* succ2 = branchStmt->getSuccessor(1)->getBB();
|
|
308
|
+
assert((succ1 == succ || succ2 == succ) && "not a successor??");
|
|
309
|
+
|
|
310
|
+
Condition* evalLoopExit = evaluateLoopExitBranch(bb,succ);
|
|
311
|
+
if(evalLoopExit)
|
|
312
|
+
return evalLoopExit;
|
|
313
|
+
|
|
314
|
+
Condition* evalProgExit = evaluateProgExit(branchStmt,succ);
|
|
315
|
+
if(evalProgExit)
|
|
316
|
+
return evalProgExit;
|
|
317
|
+
|
|
318
|
+
Condition* evalTestNullLike = evaluateTestNullLikeExpr(branchStmt,succ);
|
|
319
|
+
if(evalTestNullLike)
|
|
320
|
+
return evalTestNullLike;
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
321
325
|
}
|
|
326
|
+
|
|
322
327
|
return getBranchCond(bb, succ);
|
|
323
328
|
}
|
|
324
329
|
|
package/lib/SABER/ProgSlice.cpp
CHANGED
|
@@ -197,10 +197,13 @@ void ProgSlice::annotatePaths()
|
|
|
197
197
|
{
|
|
198
198
|
Condition* atom = pathAllocator->getCond(*it);
|
|
199
199
|
const Instruction* tinst = pathAllocator->getCondInst(atom);
|
|
200
|
-
if(
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
200
|
+
if (ICFGNode *icfgNode = pathAllocator->getICFG()->getICFGNode(tinst)) {
|
|
201
|
+
for (const auto &svfStmt: icfgNode->getSVFStmts()) {
|
|
202
|
+
if (const BranchStmt *branchStmt = SVFUtil::dyn_cast<BranchStmt>(svfStmt)) {
|
|
203
|
+
annotator.annotateFeasibleBranch(branchStmt,0);
|
|
204
|
+
annotator.annotateFeasibleBranch(branchStmt,1);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
204
207
|
}
|
|
205
208
|
}
|
|
206
209
|
}
|
|
@@ -75,7 +75,7 @@ void SaberAnnotator::annotateSinks()
|
|
|
75
75
|
/*!
|
|
76
76
|
* Annotate branch instruction and its corresponding feasible path
|
|
77
77
|
*/
|
|
78
|
-
void SaberAnnotator::annotateFeasibleBranch(const
|
|
78
|
+
void SaberAnnotator::annotateFeasibleBranch(const BranchStmt *branchStmt, u32_t succPos)
|
|
79
79
|
{
|
|
80
80
|
|
|
81
81
|
assert((succPos == 0 || succPos == 1) && "branch instruction should only have two successors");
|
|
@@ -83,14 +83,14 @@ void SaberAnnotator::annotateFeasibleBranch(const BranchInst *brInst, u32_t succ
|
|
|
83
83
|
std::string str;
|
|
84
84
|
raw_string_ostream rawstr(str);
|
|
85
85
|
rawstr << SB_FESIBLE << _curSlice->getSource()->getId();
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
addMDTag(const_cast<Instruction *>(branchStmt->getInst()),
|
|
87
|
+
const_cast<Value *>(branchStmt->getCondition()->getValue()), rawstr.str());
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
/*!
|
|
91
91
|
* Annotate branch instruction and its corresponding infeasible path
|
|
92
92
|
*/
|
|
93
|
-
void SaberAnnotator::annotateInfeasibleBranch(const
|
|
93
|
+
void SaberAnnotator::annotateInfeasibleBranch(const BranchStmt *branchStmt, u32_t succPos)
|
|
94
94
|
{
|
|
95
95
|
|
|
96
96
|
assert((succPos == 0 || succPos == 1) && "branch instruction should only have two successors");
|
|
@@ -98,17 +98,17 @@ void SaberAnnotator::annotateInfeasibleBranch(const BranchInst *brInst, u32_t su
|
|
|
98
98
|
std::string str;
|
|
99
99
|
raw_string_ostream rawstr(str);
|
|
100
100
|
rawstr << SB_INFESIBLE << _curSlice->getSource()->getId();
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
addMDTag(const_cast<Instruction *>(branchStmt->getInst()),
|
|
102
|
+
const_cast<Value *>(branchStmt->getCondition()->getValue()), rawstr.str());
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
|
|
106
106
|
/*!
|
|
107
107
|
* Annotate switch instruction and its corresponding feasible path
|
|
108
108
|
*/
|
|
109
|
-
void SaberAnnotator::annotateSwitch(
|
|
109
|
+
void SaberAnnotator::annotateSwitch(const BranchStmt *swithStmt, u32_t succPos)
|
|
110
110
|
{
|
|
111
|
-
assert(succPos <
|
|
111
|
+
assert(succPos < swithStmt->getNumSuccessors() && "successor position not correct!");
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.428",
|
|
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": {
|