svf-tools 1.0.439 → 1.0.442
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/.gitignore +1 -0
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +11 -8
- package/SVF-doxygen/html/html/ExeState_8h_source.html +21 -19
- package/SVF-doxygen/html/html/classSVF_1_1ExeState-members.html +16 -14
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +153 -67
- package/SVF-doxygen/html/html/functions_e.html +4 -1
- package/SVF-doxygen/html/html/functions_f.html +3 -3
- package/SVF-doxygen/html/html/functions_func_e.html +5 -2
- package/SVF-doxygen/html/html/functions_func_l.html +4 -1
- package/SVF-doxygen/html/html/functions_l.html +11 -8
- package/SVF-doxygen/html/html/functions_n.html +4 -4
- package/SVF-doxygen/html/html/functions_o.html +3 -3
- package/SVF-doxygen/html/html/functions_p.html +9 -7
- package/SVF-doxygen/html/html/functions_r.html +1 -1
- package/SVF-doxygen/html/html/functions_s.html +10 -12
- package/SVF-doxygen/html/html/functions_t.html +7 -5
- package/SVF-doxygen/html/html/functions_type_l.html +1 -1
- package/SVF-doxygen/html/html/search/all_10.js +6 -6
- package/SVF-doxygen/html/html/search/all_12.js +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +7 -7
- package/SVF-doxygen/html/html/search/all_14.js +3 -3
- package/SVF-doxygen/html/html/search/all_5.js +1 -0
- package/SVF-doxygen/html/html/search/all_6.js +1 -1
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +4 -3
- package/SVF-doxygen/html/html/search/all_e.js +3 -3
- package/SVF-doxygen/html/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_10.js +1 -1
- package/SVF-doxygen/html/html/search/functions_4.js +1 -0
- package/SVF-doxygen/html/html/search/functions_a.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_b.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +2 -2
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +5 -5
- package/include/Util/ExeState.h +6 -1
- package/lib/Util/ExeState.cpp +21 -33
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ var searchData=
|
|
|
4
4
|
['nametochnodesmap',['NameToCHNodesMap',['../classSVF_1_1CHGraph.html#aedb20aca2fa11a070cfe28e14fd3552b',1,'SVF::CHGraph']]],
|
|
5
5
|
['nan',['nan',['../unionEpTypeUnion.html#a110c7a597a2ccf931b674e2338c64885',1,'EpTypeUnion']]],
|
|
6
6
|
['native_5fint_5fsize',['NATIVE_INT_SIZE',['../SVFBasicTypes_8h.html#ab8ca0fd9d0caa6817d305cae0f1cf022',1,'SVFBasicTypes.h']]],
|
|
7
|
-
['neg',['
|
|
7
|
+
['neg',['neg',['../structcuddPathPair.html#a968dc3d34b592da2876517a687873281',1,'cuddPathPair::neg()'],['../classSVF_1_1BDDExprManager.html#ace340608e136c33867b3e1a986d65c81',1,'SVF::BDDExprManager::NEG()']]],
|
|
8
8
|
['never_5ffree_5fleak',['NEVER_FREE_LEAK',['../classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da3ec849f333df9530fb0a6a285c26b86d',1,'SVF::LeakChecker']]],
|
|
9
9
|
['newbvnumwords',['NewBvNumWords',['../classSVF_1_1NodeIDAllocator_1_1Clusterer.html#af3fe4b4098898ee38928c9db30ea0fe9',1,'SVF::NodeIDAllocator::Clusterer']]],
|
|
10
10
|
['newcond',['newCond',['../classSVF_1_1PathCondAllocator.html#a3cd08242b82129e6074b2f30a19b5c17',1,'SVF::PathCondAllocator']]],
|
|
@@ -20,7 +20,7 @@ var searchData=
|
|
|
20
20
|
['nil',['NIL',['../util_8h.html#a31bfee01545b78af63301bf9e857218b',1,'util.h']]],
|
|
21
21
|
['no_5fstruct_5falloc',['no_struct_alloc',['../classSVF_1_1ExtAPI.html#a235ef40373e36583004eb6d289ce63f9',1,'SVF::ExtAPI']]],
|
|
22
22
|
['noalias',['NoAlias',['../namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239',1,'SVF']]],
|
|
23
|
-
['node',['
|
|
23
|
+
['node',['node',['../structDdGen.html#a7678908601787fa2d5ce4bccdd004ffb',1,'DdGen::node()'],['../classSVF_1_1NullPtrVFGNode.html#adef43dcc86e61145a7fdc6711b28239d',1,'SVF::NullPtrVFGNode::node()'],['../classSVF_1_1List.html#a4eba65b40d347ea80e2427320eb9c5a1',1,'SVF::List::Node()'],['../classSVF_1_1SCCDetection.html#a6458c27c625add944fcb8a3ef7b536a6',1,'SVF::SCCDetection::Node()'],['../classSVF_1_1WPASolver.html#a5fd488d74e04aa9e66ca4eb42c6dbbf4',1,'SVF::WPASolver::Node()']]],
|
|
24
24
|
['node_5findex',['Node_Index',['../classSVF_1_1SCCDetection.html#a5fa111bb849052b8a753194cd0cd5e0c',1,'SVF::SCCDetection::Node_Index()'],['../classSVF_1_1WPASolver.html#a01450e1475679d093413e6496c198fc0',1,'SVF::WPASolver::Node_Index()']]],
|
|
25
25
|
['node_5fiterator',['node_iterator',['../classSVF_1_1SrcSnkSolver.html#a14a76b28f06e167bf66e15b336570cd3',1,'SVF::SrcSnkSolver::node_iterator()'],['../classSVF_1_1SCCDetection.html#abaf75ef45e8f5349b902dab063999ad8',1,'SVF::SCCDetection::node_iterator()']]],
|
|
26
26
|
['nodeallocstrat',['NodeAllocStrat',['../classSVF_1_1Options.html#a2537be131132830c63d408133619a065',1,'SVF::Options']]],
|
|
@@ -63,7 +63,7 @@ var searchData=
|
|
|
63
63
|
['nodetoptssmap',['NodeToPTSSMap',['../classSVF_1_1MRGenerator.html#ab075a7c7fbc60f678b3fee8bbc06194d',1,'SVF::MRGenerator::NodeToPTSSMap()'],['../classSVF_1_1SaberSVFGBuilder.html#a4cb1f607e33d106dfa178e822c5ab7e1',1,'SVF::SaberSVFGBuilder::NodeToPTSSMap()']]],
|
|
64
64
|
['nodetorefmap',['nodeToRefMap',['../classSVF_1_1OfflineConsG.html#aebeb8a44fcfbb677a738fa04c8e9c5e1',1,'SVF::OfflineConsG']]],
|
|
65
65
|
['nodetorepmap',['NodeToRepMap',['../classSVF_1_1ConstraintGraph.html#afe34ca6bdbb22b188799a4297fd19004',1,'SVF::ConstraintGraph::NodeToRepMap()'],['../classSVF_1_1ConstraintGraph.html#ab1b5ee9202bd9f5d738f9850b42a45d2',1,'SVF::ConstraintGraph::nodeToRepMap()']]],
|
|
66
|
-
['nodetosubsmap',['
|
|
66
|
+
['nodetosubsmap',['NodeToSubsMap',['../classSVF_1_1ConstraintGraph.html#ac7d24753491a9bab39a13b32bb65f139',1,'SVF::ConstraintGraph::NodeToSubsMap()'],['../classSVF_1_1Steensgaard.html#a45d49eef110e3bc15509a2020be38453',1,'SVF::Steensgaard::NodeToSubsMap()'],['../classSVF_1_1ConstraintGraph.html#af91f1027cd5de591ae40865f691c5f60',1,'SVF::ConstraintGraph::nodeToSubsMap()'],['../classSVF_1_1Steensgaard.html#aca87fc74b6acb096a7165f105b14854b',1,'SVF::Steensgaard::nodeToSubsMap()']]],
|
|
67
67
|
['nodetype',['NodeType',['../classSVF_1_1GenericEdge.html#aff95460d4b859e657a9198b7c5e5c736',1,'SVF::GenericEdge::NodeType()'],['../classSVF_1_1GenericNode.html#ad63e862eb1d1369bd69318fe698e4a22',1,'SVF::GenericNode::NodeType()'],['../classSVF_1_1GenericGraph.html#a86c50fc6775fd29f88df2cb4646bb211',1,'SVF::GenericGraph::NodeType()'],['../structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html#aec39caaa600f638af5e5fa57ae0b6706',1,'llvm::GraphTraits< SVF::GenericNode< NodeTy, EdgeTy > * >::NodeType()'],['../structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html#ab7627f7ad0d6ea6dbe89132031ef732c',1,'llvm::GraphTraits< Inverse< SVF::GenericNode< NodeTy, EdgeTy > *> >::NodeType()'],['../structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html#af8a1cf62dc7ed9d8da15e6e92e3a433c',1,'llvm::GraphTraits< SVF::GenericGraph< NodeTy, EdgeTy > *>::NodeType()'],['../structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html#a73928161c8b1427e8150ca68ec48160e',1,'llvm::DOTGraphTraits< CHGraph * >::NodeType()'],['../structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ac3889bd563cdc21a55df0524df2ae4da',1,'llvm::DOTGraphTraits< ConstraintGraph * >::NodeType()'],['../structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html#a7ef3894da60c3e3350b8d2de3e94a562',1,'llvm::DOTGraphTraits< ICFG * >::NodeType()'],['../structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html#ad6174f74f7a037a7ffd13df41c5f50f7',1,'llvm::DOTGraphTraits< IRGraph * >::NodeType()'],['../structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html#a4de1b76db4f60446aa2db97535fff54f',1,'llvm::DOTGraphTraits< OfflineConsG * >::NodeType()'],['../structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html#ad08b2b59081251fcf467fa992c83986c',1,'llvm::DOTGraphTraits< PTACallGraph * >::NodeType()'],['../structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html#a07ad41a658bfc0a404a5f6abc823040b',1,'llvm::DOTGraphTraits< SVFG * >::NodeType()'],['../structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html#afd7d2c80916a68b53814e6de593bf520',1,'llvm::DOTGraphTraits< VFG * >::NodeType()'],['../structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html#a86caa5eb1467eea028ea13aac175f949',1,'llvm::DOTGraphTraits< TCT * >::NodeType()']]],
|
|
68
68
|
['nodevector',['NodeVector',['../namespaceSVF.html#a39d27055a14d9d6363c668ee215a4676',1,'SVF']]],
|
|
69
69
|
['nomodref',['NoModRef',['../namespaceSVF.html#a3e2b6638b0fbca37846e953142bcc844a4756baeb9dbb8b8c737941d67ca99d4f',1,'SVF']]],
|
|
@@ -58,7 +58,7 @@ var searchData=
|
|
|
58
58
|
['operator_7c_7c',['operator||',['../classSVF_1_1Z3Expr.html#a31327900a231526ff8f62be87c5f309d',1,'SVF::Z3Expr']]],
|
|
59
59
|
['opicfgnodes',['opICFGNodes',['../classSVF_1_1PhiStmt.html#a4c75a8f8430621aaec62a5189db136b5',1,'SVF::PhiStmt']]],
|
|
60
60
|
['opicfgnodevec',['OpICFGNodeVec',['../classSVF_1_1PhiStmt.html#ac505a4fe33e82f555663872e81220ba4',1,'SVF::PhiStmt']]],
|
|
61
|
-
['opincomingbbs',['
|
|
61
|
+
['opincomingbbs',['opIncomingBBs',['../classSVF_1_1IntraPHIVFGNode.html#a73f39a488ad82300010abd18afe247a4',1,'SVF::IntraPHIVFGNode::opIncomingBBs()'],['../classSVF_1_1IntraPHIVFGNode.html#a66928f6cc755bd2a048804d00f859a80',1,'SVF::IntraPHIVFGNode::OPIncomingBBs()']]],
|
|
62
62
|
['opit',['OpIt',['../classllvm_1_1generic__bridge__gep__type__iterator.html#aa3fd4dca27e09df9ee726879624ae47e',1,'llvm::generic_bridge_gep_type_iterator']]],
|
|
63
63
|
['oppts',['opPts',['../classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639',1,'SVF::PersistentPointsToCache']]],
|
|
64
64
|
['options',['Options',['../classSVF_1_1Options.html',1,'SVF::Options'],['../classSVF_1_1Options.html#a08c25694f8f9e31eb8b116ad58c1c078',1,'SVF::Options::Options()']]],
|
|
@@ -201,7 +201,7 @@ var searchData=
|
|
|
201
201
|
['svfgnodelockspan',['SVFGNodeLockSpan',['../classSVF_1_1SVFGNodeLockSpan.html#a43f4d595b31259576b141cb99883938e',1,'SVF::SVFGNodeLockSpan']]],
|
|
202
202
|
['svfgopt',['SVFGOPT',['../classSVF_1_1SVFGOPT.html#a239475c15b39d54c632427307b8e9350',1,'SVF::SVFGOPT']]],
|
|
203
203
|
['svfgsccdetection',['SVFGSCCDetection',['../classSVF_1_1DDAVFSolver.html#aba0ec611a5cfd096ac0b8b11e0bd5580',1,'SVF::DDAVFSolver']]],
|
|
204
|
-
['svfgstat',['
|
|
204
|
+
['svfgstat',['SVFGStat',['../classSVF_1_1SVFGStat.html#ae61d5bd92ef495a0f6c2f9dedac3da03',1,'SVF::SVFGStat::SVFGStat()'],['../classSVF_1_1FlowSensitive.html#a5f015d8f2b0956306822172d02b415c3',1,'SVF::FlowSensitive::svfgStat()']]],
|
|
205
205
|
['svfir',['SVFIR',['../classSVF_1_1SVFIR.html#abf511f82cdbf7a6d9b6da167aee57636',1,'SVF::SVFIR']]],
|
|
206
206
|
['svfirbuilder',['SVFIRBuilder',['../classSVF_1_1SVFIRBuilder.html#a8c25c3903cda26312f182014f29069fc',1,'SVF::SVFIRBuilder']]],
|
|
207
207
|
['svfmodule',['SVFModule',['../classSVF_1_1SVFModule.html#a22b214595dd7841eb974e7c633ed8bb1',1,'SVF::SVFModule']]],
|
|
@@ -35,6 +35,7 @@ var searchData=
|
|
|
35
35
|
['epdpow2',['EpdPow2',['../epd_8h.html#ab698b565b8fe370d23a71a92f1cbd460',1,'EpdPow2(int n, EpDouble *epd): epd.c'],['../epd_8c.html#ab698b565b8fe370d23a71a92f1cbd460',1,'EpdPow2(int n, EpDouble *epd): epd.c']]],
|
|
36
36
|
['epdpow2decimal',['EpdPow2Decimal',['../epd_8h.html#aa69188dd624691e44c14889eba0cd9ca',1,'EpdPow2Decimal(int n, EpDouble *epd): epd.c'],['../epd_8c.html#aa69188dd624691e44c14889eba0cd9ca',1,'EpdPow2Decimal(int n, EpDouble *epd): epd.c']]],
|
|
37
37
|
['epdsubtract3',['EpdSubtract3',['../epd_8h.html#a766747cec957171a7386fec2faf697cd',1,'EpdSubtract3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3): epd.c'],['../epd_8c.html#a766747cec957171a7386fec2faf697cd',1,'EpdSubtract3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3): epd.c']]],
|
|
38
|
+
['eqvartovalmap',['eqVarToValMap',['../classSVF_1_1ExeState.html#a8447b7c20dd6bb724270026f55cbdece',1,'SVF::ExeState']]],
|
|
38
39
|
['errmsg',['errMsg',['../namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01',1,'SVF::SVFUtil']]],
|
|
39
40
|
['errs',['errs',['../namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc',1,'SVF::SVFUtil']]],
|
|
40
41
|
['evalfinalcond',['evalFinalCond',['../classSVF_1_1ProgSlice.html#afac06b0be2b04cb8a65af21fd697b756',1,'SVF::ProgSlice']]],
|
|
@@ -2,6 +2,7 @@ var searchData=
|
|
|
2
2
|
[
|
|
3
3
|
['largest',['largest',['../cuddInt_8c.html#ae1fb84f2a4466a90328a944b5f1a810d',1,'cuddInt.c']]],
|
|
4
4
|
['leakchecker',['LeakChecker',['../classSVF_1_1LeakChecker.html#af1140475e97947d193784d2b90809036',1,'SVF::LeakChecker::LeakChecker()'],['../saber_8cpp.html#a3bebf1fb890054c49ae16f9706fa38d2',1,'LEAKCHECKER(): saber.cpp']]],
|
|
5
|
+
['lessthanvartovalmap',['lessThanVarToValMap',['../classSVF_1_1ExeState.html#a29c29c85982ffafd4c496e293a80eeeb',1,'SVF::ExeState']]],
|
|
5
6
|
['list',['List',['../classSVF_1_1List.html#aeb697e85085a332e5d593b6f8ee95713',1,'SVF::List']]],
|
|
6
7
|
['listnode',['ListNode',['../classSVF_1_1List_1_1ListNode.html#ab5a3ef6fe687d646d402516c85b53853',1,'SVF::List::ListNode']]],
|
|
7
8
|
['llvmfunbegin',['llvmFunBegin',['../classSVF_1_1SVFModule.html#a648542aa5c4b487ad5aa12a39d15e951',1,'SVF::SVFModule::llvmFunBegin()'],['../classSVF_1_1SVFModule.html#a83ed76263dbe297ee0ecaf672c3a1805',1,'SVF::SVFModule::llvmFunBegin() const']]],
|
|
@@ -21,7 +21,7 @@ var searchData=
|
|
|
21
21
|
['locksitetolockset',['LockSiteToLockSet',['../classSVF_1_1LockAnalysis.html#a1f9ae41c4ed7450d0d8b29cd20a6ef25',1,'SVF::LockAnalysis']]],
|
|
22
22
|
['lockspan',['LockSpan',['../classSVF_1_1LockAnalysis.html#a07b7d49e1fbe3e5dc694b6aadbee05b8',1,'SVF::LockAnalysis::LockSpan()'],['../classSVF_1_1MHP.html#a08ba219ec02b07b1bbd91a88ebb4acd7',1,'SVF::MHP::LockSpan()']]],
|
|
23
23
|
['loctodpmvecmap',['LocToDPMVecMap',['../classSVF_1_1DDAVFSolver.html#aab76f98ae4f0c1f62f101ac5c5fdbf83',1,'SVF::DDAVFSolver']]],
|
|
24
|
-
['loctovalmap',['LocToValMap',['../classSVF_1_1ExeState.html#
|
|
24
|
+
['loctovalmap',['LocToValMap',['../classSVF_1_1ExeState.html#a887d6f9108cbbe7dca68dea67f70c392',1,'SVF::ExeState']]],
|
|
25
25
|
['locversionmap',['LocVersionMap',['../classSVF_1_1VersionedFlowSensitive.html#aa689d29ead80303b1ef1e1a91f31c296',1,'SVF::VersionedFlowSensitive']]],
|
|
26
26
|
['loop',['Loop',['../namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314',1,'SVF']]],
|
|
27
27
|
['loopinfo',['LoopInfo',['../namespaceSVF.html#a77e088bfe47c0b0ddcbbe0693dec6fe5',1,'SVF']]],
|
|
@@ -25,9 +25,9 @@ var searchData=
|
|
|
25
25
|
['tid',['tid',['../classSVF_1_1CxtThreadStmt.html#ad96bacc3de1ce576ad397d19aa99a269',1,'SVF::CxtThreadStmt::tid()'],['../classSVF_1_1CxtThreadProc.html#a99b24e1be2bfb49569532c2c28c68969',1,'SVF::CxtThreadProc::tid()']]],
|
|
26
26
|
['timelimit',['timeLimit',['../structDdManager.html#a6c14f932c4a66c6234e6b19bd8b6647f',1,'DdManager']]],
|
|
27
27
|
['timeofcollapse',['timeOfCollapse',['../classSVF_1_1AndersenBase.html#ad40b196c2c699bd115529b806d20de25',1,'SVF::AndersenBase']]],
|
|
28
|
-
['timeofcreatemuchi',['
|
|
28
|
+
['timeofcreatemuchi',['timeOfCreateMUCHI',['../classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198',1,'SVF::MemSSA::timeOfCreateMUCHI()'],['../classSVF_1_1MemSSAStat.html#a48c70f0ed1c7d031a3cd528035162e52',1,'SVF::MemSSAStat::TimeOfCreateMUCHI()']]],
|
|
29
29
|
['timeofgeneratingmemregions',['TimeOfGeneratingMemRegions',['../classSVF_1_1MemSSAStat.html#a74c36654b7452aa94aa241881f0a83c5',1,'SVF::MemSSAStat::TimeOfGeneratingMemRegions()'],['../classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5',1,'SVF::MemSSA::timeOfGeneratingMemRegions()']]],
|
|
30
|
-
['timeofinsertingphi',['
|
|
30
|
+
['timeofinsertingphi',['timeOfInsertingPHI',['../classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44',1,'SVF::MemSSA::timeOfInsertingPHI()'],['../classSVF_1_1MemSSAStat.html#a0c24822c8549af6a96e82312954fab9b',1,'SVF::MemSSAStat::TimeOfInsertingPHI()']]],
|
|
31
31
|
['timeofprocesscopygep',['timeOfProcessCopyGep',['../classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0',1,'SVF::AndersenBase']]],
|
|
32
32
|
['timeofprocessloadstore',['timeOfProcessLoadStore',['../classSVF_1_1AndersenBase.html#a9fe738f1e11c80006d540f246a80bfdf',1,'SVF::AndersenBase']]],
|
|
33
33
|
['timeofsccdetection',['timeOfSCCDetection',['../classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143',1,'SVF::AndersenBase']]],
|
|
@@ -82,7 +82,7 @@ Public Member Functions</h2></td></tr>
|
|
|
82
82
|
struct std::hash< SVF::ExeState ></h3>
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
<p class="definition">Definition at line <a class="el" href="ExeState_8h_source.html#
|
|
85
|
+
<p class="definition">Definition at line <a class="el" href="ExeState_8h_source.html#l00156">156</a> of file <a class="el" href="ExeState_8h_source.html">ExeState.h</a>.</p>
|
|
86
86
|
</div><h2 class="groupheader">Member Function Documentation</h2>
|
|
87
87
|
<a id="a99f262842505ca11c987d68a790aee10"></a>
|
|
88
88
|
<h2 class="memtitle"><span class="permalink"><a href="#a99f262842505ca11c987d68a790aee10">◆ </a></span>operator()()</h2>
|
|
@@ -108,11 +108,11 @@ struct std::hash< SVF::ExeState ></h3>
|
|
|
108
108
|
</table>
|
|
109
109
|
</div><div class="memdoc">
|
|
110
110
|
|
|
111
|
-
<p class="definition">Definition at line <a class="el" href="ExeState_8h_source.html#
|
|
112
|
-
<div class="fragment"><div class="line"><a name="
|
|
111
|
+
<p class="definition">Definition at line <a class="el" href="ExeState_8h_source.html#l00157">157</a> of file <a class="el" href="ExeState_8h_source.html">ExeState.h</a>.</p>
|
|
112
|
+
<div class="fragment"><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordtype">size_t</span> h = exeState.<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>().size() * 2;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="structSVF_1_1Hash.html">SVF::Hash<SVF::u32_t></a> hf;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &t: exeState.<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>()) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  h ^= hf(t.first) + 0x9e3779b9 + (h << 6) + (h >> 2);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  h ^= hf(t.second.id()) + 0x9e3779b9 + (h << 6) + (h >> 2);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordtype">size_t</span> h2 = exeState.<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>().size() * 2;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &t: exeState.<a class="code" href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">getLocToVal</a>()) {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  h2 ^= hf(t.first) + 0x9e3779b9 + (h2 << 6) + (h2 >> 2);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  h2 ^= hf(t.second.id()) + 0x9e3779b9 + (h2 << 6) + (h2 >> 2);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="structSVF_1_1Hash.html">SVF::Hash<std::pair<SVF::u32_t, SVF::u32_t></a>> pairH;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">return</span> pairH(make_pair(pairH(make_pair(h, h2)), exeState.<a class="code" href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">getPathConstraint</a>().<a class="code" href="classSVF_1_1Z3Expr.html#acdb4fbb53f19bac033e79cfe96ce82ca">id</a>()));</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="ttc" id="classSVF_1_1ExeState_html_a4ee40de7eca22ac055b52360e0101623"><div class="ttname"><a href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">SVF::ExeState::getLocToVal</a></div><div class="ttdeci">const LocToValMap & getLocToVal() const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00086">ExeState.h:86</a></div></div>
|
|
113
113
|
<div class="ttc" id="structSVF_1_1Hash_html"><div class="ttname"><a href="structSVF_1_1Hash.html">SVF::Hash</a></div><div class="ttdoc">provide extra hash function for std::pair handling </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00056">SVFBasicTypes.h:56</a></div></div>
|
|
114
|
-
<div class="ttc" id="classSVF_1_1ExeState_html_a00bd54e2dc70a8547581008e27790eb8"><div class="ttname"><a href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">SVF::ExeState::getPathConstraint</a></div><div class="ttdeci">const Z3Expr & getPathConstraint() const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#
|
|
115
|
-
<div class="ttc" id="classSVF_1_1ExeState_html_abf1237f5e4661a2da6e479f147957b18"><div class="ttname"><a href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">SVF::ExeState::getVarToVal</a></div><div class="ttdeci">const VarToValMap & getVarToVal() const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#
|
|
114
|
+
<div class="ttc" id="classSVF_1_1ExeState_html_a00bd54e2dc70a8547581008e27790eb8"><div class="ttname"><a href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">SVF::ExeState::getPathConstraint</a></div><div class="ttdeci">const Z3Expr & getPathConstraint() const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00090">ExeState.h:90</a></div></div>
|
|
115
|
+
<div class="ttc" id="classSVF_1_1ExeState_html_abf1237f5e4661a2da6e479f147957b18"><div class="ttname"><a href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">SVF::ExeState::getVarToVal</a></div><div class="ttdeci">const VarToValMap & getVarToVal() const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00082">ExeState.h:82</a></div></div>
|
|
116
116
|
<div class="ttc" id="classSVF_1_1Z3Expr_html_acdb4fbb53f19bac033e79cfe96ce82ca"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#acdb4fbb53f19bac033e79cfe96ce82ca">SVF::Z3Expr::id</a></div><div class="ttdeci">u32_t id() const</div><div class="ttdoc">get id </div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00094">Z3Expr.h:94</a></div></div>
|
|
117
117
|
</div><!-- fragment -->
|
|
118
118
|
</div>
|
package/include/Util/ExeState.h
CHANGED
|
@@ -39,7 +39,7 @@ namespace SVF {
|
|
|
39
39
|
class ExeState {
|
|
40
40
|
public:
|
|
41
41
|
typedef Map<u32_t, Z3Expr> VarToValMap;
|
|
42
|
-
typedef
|
|
42
|
+
typedef VarToValMap LocToValMap;
|
|
43
43
|
|
|
44
44
|
protected:
|
|
45
45
|
VarToValMap varToVal;
|
|
@@ -73,6 +73,8 @@ public:
|
|
|
73
73
|
/// Overloading Operator==
|
|
74
74
|
bool operator<(const ExeState &rhs) const;
|
|
75
75
|
|
|
76
|
+
|
|
77
|
+
|
|
76
78
|
z3::context &getContext() {
|
|
77
79
|
return Z3Expr::getContext();
|
|
78
80
|
}
|
|
@@ -136,6 +138,9 @@ public:
|
|
|
136
138
|
/// Print values of all expressions
|
|
137
139
|
void printExprValues();
|
|
138
140
|
|
|
141
|
+
private:
|
|
142
|
+
bool eqVarToValMap(const VarToValMap &lhs, const VarToValMap &rhs) const;
|
|
143
|
+
bool lessThanVarToValMap(const VarToValMap &lhs, const VarToValMap &rhs) const;
|
|
139
144
|
protected:
|
|
140
145
|
inline void store(u32_t objId, const Z3Expr &z3Expr) {
|
|
141
146
|
locToVal[objId] = z3Expr.simplify();
|
package/lib/Util/ExeState.cpp
CHANGED
|
@@ -147,28 +147,8 @@ ExeState &ExeState::operator=(const ExeState &rhs) {
|
|
|
147
147
|
* @return
|
|
148
148
|
*/
|
|
149
149
|
bool ExeState::operator==(const ExeState &rhs) const {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
return false;
|
|
153
|
-
for (const auto &item: varToVal) {
|
|
154
|
-
auto it = rhs.getVarToVal().find(item.first);
|
|
155
|
-
// return false if SVFVar not exists in rhs
|
|
156
|
-
if (it == rhs.getVarToVal().end())
|
|
157
|
-
return false;
|
|
158
|
-
// return false if Z3Expr is not equivalent
|
|
159
|
-
if (!eq(item.second, it->second))
|
|
160
|
-
return false;
|
|
161
|
-
}
|
|
162
|
-
for (const auto &item: locToVal) {
|
|
163
|
-
auto it = rhs.getLocToVal().find(item.first);
|
|
164
|
-
// return false if location not exists in rhs
|
|
165
|
-
if (it == rhs.getLocToVal().end())
|
|
166
|
-
return false;
|
|
167
|
-
// return false if Z3Expr is not equivalent
|
|
168
|
-
if (!eq(item.second, it->second))
|
|
169
|
-
return false;
|
|
170
|
-
}
|
|
171
|
-
return true;
|
|
150
|
+
return eq(pathConstraint, rhs.getPathConstraint()) && eqVarToValMap(varToVal, rhs.getVarToVal()) &&
|
|
151
|
+
eqVarToValMap(locToVal, rhs.getLocToVal());
|
|
172
152
|
}
|
|
173
153
|
|
|
174
154
|
/*!
|
|
@@ -180,19 +160,28 @@ bool ExeState::operator<(const ExeState &rhs) const {
|
|
|
180
160
|
// judge from path constraint
|
|
181
161
|
if (!eq(pathConstraint, rhs.getPathConstraint()))
|
|
182
162
|
return pathConstraint.id() < rhs.getPathConstraint().id();
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
163
|
+
if (lessThanVarToValMap(varToVal, rhs.getVarToVal()) || lessThanVarToValMap(locToVal, rhs.getLocToVal()))
|
|
164
|
+
return true;
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
bool ExeState::eqVarToValMap(const VarToValMap &lhs, const VarToValMap &rhs) const {
|
|
169
|
+
if(lhs.size() != rhs.size()) return false;
|
|
170
|
+
for (const auto &item: lhs) {
|
|
171
|
+
auto it = rhs.find(item.first);
|
|
172
|
+
// return false if SVFVar not exists in rhs or z3Expr not equal
|
|
173
|
+
if (it == rhs.end() || !eq(item.second, it->second))
|
|
187
174
|
return false;
|
|
188
|
-
// judge from expr id
|
|
189
|
-
if (!eq(item.second, it->second))
|
|
190
|
-
return item.second.id() < it->second.id();
|
|
191
175
|
}
|
|
192
|
-
|
|
193
|
-
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
bool ExeState::lessThanVarToValMap(const VarToValMap &lhs, const VarToValMap &rhs) const {
|
|
180
|
+
if(lhs.size() != rhs.size()) return lhs.size() < rhs.size();
|
|
181
|
+
for (const auto &item: lhs) {
|
|
182
|
+
auto it = rhs.find(item.first);
|
|
194
183
|
// lhs > rhs if SVFVar not exists in rhs
|
|
195
|
-
if (it == rhs.
|
|
184
|
+
if (it == rhs.end())
|
|
196
185
|
return false;
|
|
197
186
|
// judge from expr id
|
|
198
187
|
if (!eq(item.second, it->second))
|
|
@@ -200,7 +189,6 @@ bool ExeState::operator<(const ExeState &rhs) const {
|
|
|
200
189
|
}
|
|
201
190
|
return false;
|
|
202
191
|
}
|
|
203
|
-
|
|
204
192
|
/*!
|
|
205
193
|
* Store value to location
|
|
206
194
|
* @param loc location, e.g., int_val(0x7f..01)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.442",
|
|
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": {
|