svf-tools 1.0.440 → 1.0.441
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/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 +20 -36
- 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,30 +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
|
-
if(varToVal.size() != rhs.getVarToVal().size() || locToVal.size() != rhs.getLocToVal().size())
|
|
154
|
-
return false;
|
|
155
|
-
for (const auto &item: varToVal) {
|
|
156
|
-
auto it = rhs.getVarToVal().find(item.first);
|
|
157
|
-
// return false if SVFVar not exists in rhs
|
|
158
|
-
if (it == rhs.getVarToVal().end())
|
|
159
|
-
return false;
|
|
160
|
-
// return false if Z3Expr is not equivalent
|
|
161
|
-
if (!eq(item.second, it->second))
|
|
162
|
-
return false;
|
|
163
|
-
}
|
|
164
|
-
for (const auto &item: locToVal) {
|
|
165
|
-
auto it = rhs.getLocToVal().find(item.first);
|
|
166
|
-
// return false if location not exists in rhs
|
|
167
|
-
if (it == rhs.getLocToVal().end())
|
|
168
|
-
return false;
|
|
169
|
-
// return false if Z3Expr is not equivalent
|
|
170
|
-
if (!eq(item.second, it->second))
|
|
171
|
-
return false;
|
|
172
|
-
}
|
|
173
|
-
return true;
|
|
150
|
+
return eq(pathConstraint, rhs.getPathConstraint()) && eqVarToValMap(varToVal, rhs.getVarToVal()) &&
|
|
151
|
+
eqVarToValMap(locToVal, rhs.getLocToVal());
|
|
174
152
|
}
|
|
175
153
|
|
|
176
154
|
/*!
|
|
@@ -182,21 +160,28 @@ bool ExeState::operator<(const ExeState &rhs) const {
|
|
|
182
160
|
// judge from path constraint
|
|
183
161
|
if (!eq(pathConstraint, rhs.getPathConstraint()))
|
|
184
162
|
return pathConstraint.id() < rhs.getPathConstraint().id();
|
|
185
|
-
if(varToVal
|
|
163
|
+
if (lessThanVarToValMap(varToVal, rhs.getVarToVal()) || lessThanVarToValMap(locToVal, rhs.getLocToVal()))
|
|
186
164
|
return true;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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))
|
|
191
174
|
return false;
|
|
192
|
-
// judge from expr id
|
|
193
|
-
if (!eq(item.second, it->second))
|
|
194
|
-
return item.second.id() < it->second.id();
|
|
195
175
|
}
|
|
196
|
-
|
|
197
|
-
|
|
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);
|
|
198
183
|
// lhs > rhs if SVFVar not exists in rhs
|
|
199
|
-
if (it == rhs.
|
|
184
|
+
if (it == rhs.end())
|
|
200
185
|
return false;
|
|
201
186
|
// judge from expr id
|
|
202
187
|
if (!eq(item.second, it->second))
|
|
@@ -204,7 +189,6 @@ bool ExeState::operator<(const ExeState &rhs) const {
|
|
|
204
189
|
}
|
|
205
190
|
return false;
|
|
206
191
|
}
|
|
207
|
-
|
|
208
192
|
/*!
|
|
209
193
|
* Store value to location
|
|
210
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.441",
|
|
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": {
|