svf-tools 1.0.571 → 1.0.573

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.
Files changed (45) hide show
  1. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +11 -11
  2. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +10 -10
  3. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +19 -2
  4. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +2 -2
  5. package/SVF-doxygen/html/html/PEGGrammar_8txt.html +2 -2
  6. package/SVF-doxygen/html/html/VFG_8txt.html +18 -0
  7. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer-members.html +5 -5
  8. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +80 -84
  9. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +3 -3
  10. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +16 -3
  11. package/SVF-doxygen/html/html/functions_func_g.html +11 -14
  12. package/SVF-doxygen/html/html/functions_func_r.html +4 -1
  13. package/SVF-doxygen/html/html/functions_func_s.html +2 -2
  14. package/SVF-doxygen/html/html/functions_g.html +13 -16
  15. package/SVF-doxygen/html/html/functions_o.html +12 -12
  16. package/SVF-doxygen/html/html/functions_p.html +6 -6
  17. package/SVF-doxygen/html/html/functions_r.html +9 -4
  18. package/SVF-doxygen/html/html/functions_s.html +7 -7
  19. package/SVF-doxygen/html/html/functions_t.html +7 -5
  20. package/SVF-doxygen/html/html/functions_v.html +3 -3
  21. package/SVF-doxygen/html/html/functions_w.html +11 -11
  22. package/SVF-doxygen/html/html/globals_e.html +1 -0
  23. package/SVF-doxygen/html/html/globals_vars.html +1 -0
  24. package/SVF-doxygen/html/html/search/all_10.js +3 -3
  25. package/SVF-doxygen/html/html/search/all_11.js +2 -1
  26. package/SVF-doxygen/html/html/search/all_12.js +6 -6
  27. package/SVF-doxygen/html/html/search/all_13.js +3 -3
  28. package/SVF-doxygen/html/html/search/all_15.js +3 -3
  29. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  30. package/SVF-doxygen/html/html/search/all_5.js +1 -1
  31. package/SVF-doxygen/html/html/search/all_7.js +1 -2
  32. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  33. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  34. package/SVF-doxygen/html/html/search/functions_10.js +1 -0
  35. package/SVF-doxygen/html/html/search/functions_11.js +2 -2
  36. package/SVF-doxygen/html/html/search/functions_6.js +1 -2
  37. package/SVF-doxygen/html/html/search/variables_13.js +1 -1
  38. package/SVF-doxygen/html/html/search/variables_5.js +1 -1
  39. package/build.sh +1 -1
  40. package/include/CFL/CFGNormalizer.h +3 -3
  41. package/include/CFL/VFG.txt +2 -1
  42. package/lib/CFL/CFGNormalizer.cpp +41 -42
  43. package/lib/CFL/CFLGraphBuilder.cpp +74 -29
  44. package/lib/CFL/CFLVF.cpp +1 -1
  45. package/package.json +1 -1
@@ -66,7 +66,7 @@ var searchData=
66
66
  ['opver',['opVer',['../classSVF_1_1MSSACHI.html#a86f2f3f6e2215cdbe31caee048510757',1,'SVF::MSSACHI']]],
67
67
  ['opverbegin',['opVerBegin',['../classSVF_1_1MSSAPHISVFGNode.html#ace39549f7e300cb4a0ac7b8506a8632a',1,'SVF::MSSAPHISVFGNode::opVerBegin()'],['../classSVF_1_1IntraMSSAPHISVFGNode.html#aff4e88ef6569d3c4f29b532d610cd2b9',1,'SVF::IntraMSSAPHISVFGNode::opVerBegin()'],['../classSVF_1_1CmpVFGNode.html#a78fb624f0ca9ff16e6a8e5fd1c384904',1,'SVF::CmpVFGNode::opVerBegin()'],['../classSVF_1_1BinaryOPVFGNode.html#adaff45c46c4cc8158bd3147d304deab5',1,'SVF::BinaryOPVFGNode::opVerBegin()'],['../classSVF_1_1UnaryOPVFGNode.html#ab63ddaa05181f2c60ca7a001001a908d',1,'SVF::UnaryOPVFGNode::opVerBegin()'],['../classSVF_1_1PHIVFGNode.html#a2e00f6d582aa4ac9aa116cc6d5c79369',1,'SVF::PHIVFGNode::opVerBegin()'],['../classSVF_1_1MSSAPHI.html#a940f9afa26bf54c7175276ea27003c2f',1,'SVF::MSSAPHI::opVerBegin()']]],
68
68
  ['opverend',['opVerEnd',['../classSVF_1_1MSSAPHISVFGNode.html#a33ec42a011781bbb63dce6dbe5f88bdf',1,'SVF::MSSAPHISVFGNode::opVerEnd()'],['../classSVF_1_1IntraMSSAPHISVFGNode.html#a5e78faceb497b0f3cb6f8f1a9fc4f799',1,'SVF::IntraMSSAPHISVFGNode::opVerEnd()'],['../classSVF_1_1CmpVFGNode.html#ae5ba94ffae500168f0e5c1b1ce78af9c',1,'SVF::CmpVFGNode::opVerEnd()'],['../classSVF_1_1BinaryOPVFGNode.html#aed5a32d1a145df7007ba7d934e4c2bd4',1,'SVF::BinaryOPVFGNode::opVerEnd()'],['../classSVF_1_1UnaryOPVFGNode.html#af31a06d33f41bdcff625ac23e269708c',1,'SVF::UnaryOPVFGNode::opVerEnd()'],['../classSVF_1_1PHIVFGNode.html#add18c60773871744123d12a037e78e20',1,'SVF::PHIVFGNode::opVerEnd()'],['../classSVF_1_1MultiOpndStmt.html#ad53097d07487d564e7d13f9d7d9ab10c',1,'SVF::MultiOpndStmt::opVerEnd()'],['../classSVF_1_1MSSAPHI.html#a2a49ad9d2eedf1dea98d725b13878d88',1,'SVF::MSSAPHI::opVerEnd()']]],
69
- ['opvers',['OPVers',['../classSVF_1_1MSSAPHISVFGNode.html#a300f37203eb84fc57e005c27ce0422fb',1,'SVF::MSSAPHISVFGNode::OPVers()'],['../classSVF_1_1CmpVFGNode.html#a0db4ada3c366c811962415454a859b22',1,'SVF::CmpVFGNode::OPVers()'],['../classSVF_1_1BinaryOPVFGNode.html#a880c8260e3acb3fbe431446f2c1f5990',1,'SVF::BinaryOPVFGNode::OPVers()'],['../classSVF_1_1UnaryOPVFGNode.html#af96b598342bbcbcd739e2603acfc5a41',1,'SVF::UnaryOPVFGNode::OPVers()'],['../classSVF_1_1PHIVFGNode.html#a44ba5254e5f4def007c99916cd58668c',1,'SVF::PHIVFGNode::OPVers()'],['../classSVF_1_1MSSAPHI.html#a622892bb1c3c151e646ae1a46838c3ba',1,'SVF::MSSAPHI::OPVers()'],['../classSVF_1_1MSSAPHISVFGNode.html#a9c327923ab939e06877441ebde5c1139',1,'SVF::MSSAPHISVFGNode::opVers()'],['../classSVF_1_1CmpVFGNode.html#aae30d80fd848d62467476d21c691573c',1,'SVF::CmpVFGNode::opVers()'],['../classSVF_1_1BinaryOPVFGNode.html#ae803603f567cc28f5a7e1b66fb324cbc',1,'SVF::BinaryOPVFGNode::opVers()'],['../classSVF_1_1UnaryOPVFGNode.html#ae6fdb5759a0dfeb0635ffd758b752dc1',1,'SVF::UnaryOPVFGNode::opVers()'],['../classSVF_1_1PHIVFGNode.html#a08ccd55d0fb6ce33f69959349008daca',1,'SVF::PHIVFGNode::opVers()'],['../classSVF_1_1MSSAPHI.html#abdabd6dff67cd59622f18d48e8b34271',1,'SVF::MSSAPHI::opVers()']]],
69
+ ['opvers',['opVers',['../classSVF_1_1MSSAPHISVFGNode.html#a9c327923ab939e06877441ebde5c1139',1,'SVF::MSSAPHISVFGNode::opVers()'],['../classSVF_1_1CmpVFGNode.html#aae30d80fd848d62467476d21c691573c',1,'SVF::CmpVFGNode::opVers()'],['../classSVF_1_1BinaryOPVFGNode.html#ae803603f567cc28f5a7e1b66fb324cbc',1,'SVF::BinaryOPVFGNode::opVers()'],['../classSVF_1_1UnaryOPVFGNode.html#ae6fdb5759a0dfeb0635ffd758b752dc1',1,'SVF::UnaryOPVFGNode::opVers()'],['../classSVF_1_1PHIVFGNode.html#a08ccd55d0fb6ce33f69959349008daca',1,'SVF::PHIVFGNode::opVers()'],['../classSVF_1_1MSSAPHI.html#abdabd6dff67cd59622f18d48e8b34271',1,'SVF::MSSAPHI::opVers()'],['../classSVF_1_1MSSAPHISVFGNode.html#a300f37203eb84fc57e005c27ce0422fb',1,'SVF::MSSAPHISVFGNode::OPVers()'],['../classSVF_1_1CmpVFGNode.html#a0db4ada3c366c811962415454a859b22',1,'SVF::CmpVFGNode::OPVers()'],['../classSVF_1_1BinaryOPVFGNode.html#a880c8260e3acb3fbe431446f2c1f5990',1,'SVF::BinaryOPVFGNode::OPVers()'],['../classSVF_1_1UnaryOPVFGNode.html#af96b598342bbcbcd739e2603acfc5a41',1,'SVF::UnaryOPVFGNode::OPVers()'],['../classSVF_1_1PHIVFGNode.html#a44ba5254e5f4def007c99916cd58668c',1,'SVF::PHIVFGNode::OPVers()'],['../classSVF_1_1MSSAPHI.html#a622892bb1c3c151e646ae1a46838c3ba',1,'SVF::MSSAPHI::OPVers()']]],
70
70
  ['or',['OR',['../classSVF_1_1Z3Expr.html#ac063ed06c3495b790c02fe57c781b34e',1,'SVF::Z3Expr']]],
71
71
  ['orderedmap',['OrderedMap',['../namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6',1,'SVF']]],
72
72
  ['orderednodeset',['OrderedNodeSet',['../namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8',1,'SVF']]],
@@ -42,6 +42,7 @@ var searchData=
42
42
  ['removecxtstmttospan',['removeCxtStmtToSpan',['../classSVF_1_1LockAnalysis.html#a0b21446e6d5dfc1b5d0ebd75895225dd',1,'SVF::LockAnalysis']]],
43
43
  ['removedirectedge',['removeDirectEdge',['../classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244',1,'SVF::ConstraintGraph']]],
44
44
  ['removedpmfromloc',['removeDpmFromLoc',['../classSVF_1_1DDAVFSolver.html#a00ae738a76564b7b334faae567674e34',1,'SVF::DDAVFSolver']]],
45
+ ['removefirstsymbol',['removeFirstSymbol',['../classSVF_1_1CFGNormalizer.html#afd29c476dad9728a10e19561e846f97e',1,'SVF::CFGNormalizer']]],
45
46
  ['removefront',['removeFront',['../classSVF_1_1FIFOWorkList.html#a621fe65af285665396fa10af9f96ef3a',1,'SVF::FIFOWorkList']]],
46
47
  ['removegnode',['removeGNode',['../classSVF_1_1GenericGraph.html#a1817b65e76052f11e36a67d6b9efd915',1,'SVF::GenericGraph']]],
47
48
  ['removeicfgedge',['removeICFGEdge',['../classSVF_1_1ICFG.html#a534625b10673efe5b0f344bfebf9b3cf',1,'SVF::ICFG']]],
@@ -167,7 +167,7 @@ var searchData=
167
167
  ['stripqualifiers',['stripQualifiers',['../classSVF_1_1DCHGraph.html#a175ed6ad0c9b23d5617f755ab96c76c4',1,'SVF::DCHGraph']]],
168
168
  ['stripspace',['stripSpace',['../classSVF_1_1GrammarBuilder.html#a6de372fbe80d33a5688cada0adca0bb8',1,'SVF::GrammarBuilder']]],
169
169
  ['strongupdateoutfromin',['strongUpdateOutFromIn',['../classSVF_1_1FlowSensitive.html#a8ebe4342c1496b906ee1b6450558c3e8',1,'SVF::FlowSensitive']]],
170
- ['strtrans',['strTrans',['../classSVF_1_1CFGNormalizer.html#adbd98b8ece3c8234d5791fab47dcdbf9',1,'SVF::CFGNormalizer']]],
170
+ ['strtrans',['strTrans',['../classSVF_1_1CFGNormalizer.html#a4b9b6c676ce6514ae725f543b1e07acf',1,'SVF::CFGNormalizer']]],
171
171
  ['subnodes',['subNodes',['../classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html#a48981e6555ad221d08f16ed2df708027',1,'SVF::SCCDetection::GNodeSCCInfo::subNodes()'],['../classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html#aa2b23b22bb0304ce07ab9b14f0fdc395',1,'SVF::SCCDetection::GNodeSCCInfo::subNodes() const'],['../classSVF_1_1SCCDetection.html#a6ab5eff6a576e6d8703c1ea29b7f425d',1,'SVF::SCCDetection::subNodes()']]],
172
172
  ['sucmsg',['sucMsg',['../namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4',1,'SVF::SVFUtil']]],
173
173
  ['suffix_5fobject',['suffix_object',['../cJSON_8cpp.html#a5d61bcc0045ace88c2ae04f0928eeace',1,'cJSON.cpp']]],
@@ -179,7 +179,7 @@ var searchData=
179
179
  ['svfgnodelockspan',['SVFGNodeLockSpan',['../classSVF_1_1SVFGNodeLockSpan.html#a43f4d595b31259576b141cb99883938e',1,'SVF::SVFGNodeLockSpan']]],
180
180
  ['svfgopt',['SVFGOPT',['../classSVF_1_1SVFGOPT.html#a239475c15b39d54c632427307b8e9350',1,'SVF::SVFGOPT']]],
181
181
  ['svfgsccdetection',['SVFGSCCDetection',['../classSVF_1_1DDAVFSolver.html#aba0ec611a5cfd096ac0b8b11e0bd5580',1,'SVF::DDAVFSolver']]],
182
- ['svfgstat',['SVFGStat',['../classSVF_1_1SVFGStat.html#ae61d5bd92ef495a0f6c2f9dedac3da03',1,'SVF::SVFGStat::SVFGStat()'],['../classSVF_1_1FlowSensitive.html#a5f015d8f2b0956306822172d02b415c3',1,'SVF::FlowSensitive::svfgStat()']]],
182
+ ['svfgstat',['svfgStat',['../classSVF_1_1FlowSensitive.html#a5f015d8f2b0956306822172d02b415c3',1,'SVF::FlowSensitive::svfgStat()'],['../classSVF_1_1SVFGStat.html#ae61d5bd92ef495a0f6c2f9dedac3da03',1,'SVF::SVFGStat::SVFGStat()']]],
183
183
  ['svfir',['SVFIR',['../classSVF_1_1SVFIR.html#abf511f82cdbf7a6d9b6da167aee57636',1,'SVF::SVFIR']]],
184
184
  ['svfirbuilder',['SVFIRBuilder',['../classSVF_1_1SVFIRBuilder.html#a8c25c3903cda26312f182014f29069fc',1,'SVF::SVFIRBuilder']]],
185
185
  ['svfloop',['SVFLoop',['../classSVF_1_1SVFLoop.html#a25b9a079f48aa0374c91be6a1e9697f8',1,'SVF::SVFLoop']]],
@@ -253,8 +253,7 @@ var searchData=
253
253
  ['getfieldtypes',['getFieldTypes',['../classSVF_1_1DCHGraph.html#ae9a0007299178912e2568dc7158d6824',1,'SVF::DCHGraph']]],
254
254
  ['getfieldvalnodenum',['getFieldValNodeNum',['../classSVF_1_1SVFIR.html#a8a24e0bf9f95fc1519d4013e0e82dec9',1,'SVF::SVFIR']]],
255
255
  ['getfilename',['getFileName',['../classSVF_1_1PAGBuilderFromFile.html#aaaa1e516e5eeceece371a9178142c3ff',1,'SVF::PAGBuilderFromFile']]],
256
- ['getfilledprod',['getFilledProd',['../classSVF_1_1CFGNormalizer.html#ab5c5efbb72cf018885e026be65c92fdf',1,'SVF::CFGNormalizer']]],
257
- ['getfilledproductions',['getFilledProductions',['../classSVF_1_1CFGNormalizer.html#ae5932d3d9330e28e5fa89402a5f5ff33',1,'SVF::CFGNormalizer']]],
256
+ ['getfilledproductions',['getFilledProductions',['../classSVF_1_1CFGNormalizer.html#add319949e856049d3e898848a02a75b7',1,'SVF::CFGNormalizer']]],
258
257
  ['getfiobjvar',['getFIObjVar',['../classSVF_1_1ConstraintGraph.html#a7c8a29ad1d270fca745f233bb4800731',1,'SVF::ConstraintGraph::getFIObjVar()'],['../classSVF_1_1PointerAnalysis.html#a68b05bc02c5473c1e0d39ac4f4454bac',1,'SVF::PointerAnalysis::getFIObjVar()'],['../classSVF_1_1SVFIR.html#a2878e202045b7f2c817185e8bf95d354',1,'SVF::SVFIR::getFIObjVar(const MemObj *obj) const'],['../classSVF_1_1SVFIR.html#ac9f860028c8cbd364720888084701628',1,'SVF::SVFIR::getFIObjVar(NodeID id) const']]],
259
258
  ['getfirstrhs2prods',['getFirstRHS2Prods',['../classSVF_1_1CFLGrammar.html#ac0f09c94e9c6efc00398ed7d5ca1fe0f',1,'SVF::CFLGrammar']]],
260
259
  ['getfirstrhssymbol',['getFirstRHSSymbol',['../classSVF_1_1CFLGrammar.html#a837d2db607e1c9403db4d3021f4e52d4',1,'SVF::CFLGrammar']]],
@@ -25,7 +25,7 @@ var searchData=
25
25
  ['timeofbuildingsymboltable',['timeOfBuildingSymbolTable',['../classSVF_1_1SVFStat.html#ae89293bc063bdc74a988e9c37c70321e',1,'SVF::SVFStat']]],
26
26
  ['timeofcollapse',['timeOfCollapse',['../classSVF_1_1CFLAlias.html#a1615a97f72dfa8f979c429b3d4f3463b',1,'SVF::CFLAlias::timeOfCollapse()'],['../classSVF_1_1AndersenBase.html#ad40b196c2c699bd115529b806d20de25',1,'SVF::AndersenBase::timeOfCollapse()']]],
27
27
  ['timeofcreatemuchi',['TimeOfCreateMUCHI',['../classSVF_1_1MemSSAStat.html#a48c70f0ed1c7d031a3cd528035162e52',1,'SVF::MemSSAStat::TimeOfCreateMUCHI()'],['../classSVF_1_1MemSSA.html#a4d2418b7df74f23d8fd328f66e29f198',1,'SVF::MemSSA::timeOfCreateMUCHI()']]],
28
- ['timeofgeneratingmemregions',['timeOfGeneratingMemRegions',['../classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5',1,'SVF::MemSSA::timeOfGeneratingMemRegions()'],['../classSVF_1_1MemSSAStat.html#a74c36654b7452aa94aa241881f0a83c5',1,'SVF::MemSSAStat::TimeOfGeneratingMemRegions()']]],
28
+ ['timeofgeneratingmemregions',['TimeOfGeneratingMemRegions',['../classSVF_1_1MemSSAStat.html#a74c36654b7452aa94aa241881f0a83c5',1,'SVF::MemSSAStat::TimeOfGeneratingMemRegions()'],['../classSVF_1_1MemSSA.html#a37dca8a7d155de4870358146d219b5e5',1,'SVF::MemSSA::timeOfGeneratingMemRegions()']]],
29
29
  ['timeofinsertingphi',['TimeOfInsertingPHI',['../classSVF_1_1MemSSAStat.html#a0c24822c8549af6a96e82312954fab9b',1,'SVF::MemSSAStat::TimeOfInsertingPHI()'],['../classSVF_1_1MemSSA.html#a3c7b5fa73fdc7c805ee3673fbe812b44',1,'SVF::MemSSA::timeOfInsertingPHI()']]],
30
30
  ['timeofprocesscopygep',['timeOfProcessCopyGep',['../classSVF_1_1CFLAlias.html#a2339baef879400c3abceaa6cd710438f',1,'SVF::CFLAlias::timeOfProcessCopyGep()'],['../classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0',1,'SVF::AndersenBase::timeOfProcessCopyGep()']]],
31
31
  ['timeofprocessloadstore',['timeOfProcessLoadStore',['../classSVF_1_1CFLAlias.html#ab8a98cf58afbc7fd00bd42b312073012',1,'SVF::CFLAlias::timeOfProcessLoadStore()'],['../classSVF_1_1AndersenBase.html#a9fe738f1e11c80006d540f246a80bfdf',1,'SVF::AndersenBase::timeOfProcessLoadStore()']]],
@@ -21,7 +21,7 @@ var searchData=
21
21
  ['entry',['entry',['../classSVF_1_1CallPE.html#a88e420e259b8d7d34c9850ddde53d372',1,'SVF::CallPE']]],
22
22
  ['entryfuncset',['entryFuncSet',['../classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a',1,'SVF::TCT']]],
23
23
  ['entryicfgedges',['entryICFGEdges',['../classSVF_1_1SVFLoop.html#a681d712db88d105c8a2f758de3d7e72e',1,'SVF::SVFLoop']]],
24
- ['epsilon',['epsilon',['../CFLGrammar_8txt.html#a114c2e5cd44b3ea4720e9191ed819f3b',1,'CFLGrammar.txt']]],
24
+ ['epsilon',['epsilon',['../CFLGrammar_8txt.html#a114c2e5cd44b3ea4720e9191ed819f3b',1,'epsilon(): CFLGrammar.txt'],['../VFG_8txt.html#ad62a43ea41bf293d8609998d1c808c1f',1,'epsilon(): VFG.txt']]],
25
25
  ['epsilonprods',['epsilonProds',['../classSVF_1_1CFLGrammar.html#a4d9770a2b935bcad74ae551389925f74',1,'SVF::CFLGrammar']]],
26
26
  ['equivalentobject',['equivalentObject',['../classSVF_1_1VersionedFlowSensitive.html#a2d451d89f99a4bff828b682723df477f',1,'SVF::VersionedFlowSensitive']]],
27
27
  ['evaltime',['EvalTime',['../classSVF_1_1NodeIDAllocator_1_1Clusterer.html#a1d98862e19affdd08740f85490d0d856',1,'SVF::NodeIDAllocator::Clusterer']]],
package/build.sh CHANGED
@@ -85,7 +85,7 @@ function build_z3_from_source {
85
85
  mkdir "$Z3Home"
86
86
  echo "Downloading Z3 source..."
87
87
  generic_download_file "$SourceZ3" z3.zip
88
- check_zip
88
+ check_unzip
89
89
  echo "Unzipping Z3 source..."
90
90
  mkdir z3-source
91
91
  unzip z3.zip -d z3-source
@@ -72,11 +72,11 @@ private:
72
72
 
73
73
  GrammarBase::Symbol check_head(GrammarBase::SymbolMap<GrammarBase::Symbol, GrammarBase::Productions>& grammar, GrammarBase::Production& rule);
74
74
 
75
- GrammarBase::Production strTrans(std::string strPro, CFLGrammar *grammar);
75
+ void strTrans(std::string strPro, CFLGrammar *grammar, GrammarBase::Production& normalProd);
76
76
 
77
- GrammarBase::Production getFilledProd(GrammarBase::Production &prod, CFLGrammar::Attribute attribute, CFLGrammar *grammar);
77
+ void getFilledProductions(GrammarBase::Production &prod,const NodeSet& nodeSet, CFLGrammar *grammar, GrammarBase::Productions& normalProds);
78
78
 
79
- GrammarBase::Productions getFilledProductions(GrammarBase::Production &prod,const Map<CFLGrammar::Kind, Set<CFLGrammar::Attribute>>& kind2AttriMap, CFLGrammar *grammar);
79
+ void removeFirstSymbol(CFLGrammar *grammar);
80
80
  };
81
81
 
82
82
  } // End namespace SVF
@@ -3,4 +3,5 @@ Start:
3
3
  Terminal:
4
4
  a Call Ret
5
5
  Productions:
6
- A -> A A | a | Call_i A Ret_i | epsilon;
6
+ A -> A A | a | Call_i A Ret_i | epsilon;
7
+ Abar -> Abar Abar | abar | Retbar_i Abar Callbar_i | epsilon;
@@ -60,6 +60,14 @@ CFLGrammar* CFGNormalizer::normalize(GrammarBase *generalGrammar)
60
60
 
61
61
  CFLGrammar* CFGNormalizer::fillAttribute(CFLGrammar *grammar, const Map<CFLGrammar::Kind, Set<CFLGrammar::Attribute>>& kind2AttrsMap)
62
62
  {
63
+ NodeSet nodeSet = {};
64
+ for (auto pair: kind2AttrsMap)
65
+ {
66
+ for (auto attri: pair.second)
67
+ {
68
+ nodeSet.insert(attri);
69
+ }
70
+ }
63
71
  for(auto symProdsPair: grammar->getRawProductions())
64
72
  {
65
73
  for(auto prod: symProdsPair.second)
@@ -68,8 +76,9 @@ CFLGrammar* CFGNormalizer::fillAttribute(CFLGrammar *grammar, const Map<CFLGramm
68
76
  /// so append to the begin of the production
69
77
  GrammarBase::Production tempP = prod;
70
78
  tempP.insert(tempP.begin(), symProdsPair.first);
71
- GrammarBase::Productions filledProductions = getFilledProductions(tempP, kind2AttrsMap, grammar);
72
- for (auto filledProd : filledProductions)
79
+ GrammarBase::Productions normalProds;
80
+ getFilledProductions(tempP, nodeSet, grammar, normalProds);
81
+ for (auto filledProd : normalProds)
73
82
  {
74
83
  insertToCFLGrammar(grammar, filledProd);
75
84
  }
@@ -83,19 +92,7 @@ void CFGNormalizer::ebnf_bin(CFLGrammar *grammar)
83
92
  {
84
93
  GrammarBase::SymbolMap<GrammarBase::Symbol, GrammarBase::Productions> new_grammar = {};
85
94
  std::string tempStr = "";
86
-
87
- for(auto head : grammar->getRawProductions())
88
- {
89
- for(auto rule: head.second)
90
- {
91
-
92
- GrammarBase::Production long_run = rule;
93
- long_run.erase(long_run.begin());
94
- auto it = grammar->getRawProductions().at(head.first).find(rule);
95
- grammar->getRawProductions().at(head.first).erase(it);
96
- grammar->getRawProductions()[head.first].insert(long_run);
97
- }
98
- }
95
+ removeFirstSymbol(grammar);
99
96
 
100
97
  auto rawProductions = grammar->getRawProductions();
101
98
 
@@ -220,26 +217,13 @@ void CFGNormalizer::ebnf_bin(CFLGrammar *grammar)
220
217
  }
221
218
  }
222
219
 
223
- GrammarBase::Production CFGNormalizer::getFilledProd(GrammarBase::Production &prod, CFLGrammar::Attribute attribute, CFLGrammar *grammar)
224
- {
225
- GrammarBase::Production tempP = prod;
226
- for (int i = 0; i < int(prod.size()); i++)
227
- {
228
- if (grammar->getAttrSyms().find(prod[i].kind) != grammar->getAttrSyms().end())
229
- {
230
- tempP[i] = prod[i].kind;
231
- }
232
- }
233
- return tempP;
234
- }
235
-
236
220
  ///Loop through provided production based on existence of attribute of attribute variable
237
221
  ///and expand to productions set
238
222
  ///e.g Xi -> Y Zi with Xi i = 0, 1, Yi i = 0,2
239
223
  ///Will get {X0 -> Y Z0, X1 -> Y Z1, X2 -> Y Z2}
240
- GrammarBase::Productions CFGNormalizer::getFilledProductions(GrammarBase::Production &prod, const Map<CFLGrammar::Kind, Set<CFLGrammar::Attribute>>& kind2AttriMap, CFLGrammar *grammar)
224
+ void CFGNormalizer::getFilledProductions(GrammarBase::Production &prod, const NodeSet& nodeSet, CFLGrammar *grammar, GrammarBase::Productions& normalProds)
241
225
  {
242
- GrammarBase::Productions filledProductioins{};
226
+ normalProds.clear();
243
227
  CFLFIFOWorkList<GrammarBase::Production> worklist;
244
228
  worklist.push(prod);
245
229
  while( worklist.empty() == false )
@@ -258,10 +242,10 @@ GrammarBase::Productions CFGNormalizer::getFilledProductions(GrammarBase::Produc
258
242
  }
259
243
  if ( currentVariableAttribute == 0)
260
244
  {
261
- filledProductioins.insert(currentProduction);
245
+ normalProds.insert(currentProduction);
262
246
  continue;
263
247
  }
264
- auto nodeSet = {0, 1, 2, 3, 4, 5, 6, 7, 20}; //*(kind2AttriMap.find(baseKind));
248
+ //*(kind2AttriMap.find(baseKind));
265
249
  //for (auto attribute : nodeSet.second)
266
250
  for (auto attribute : nodeSet)
267
251
  {
@@ -285,7 +269,7 @@ GrammarBase::Productions CFGNormalizer::getFilledProductions(GrammarBase::Produc
285
269
  }
286
270
  if ( continueToFill == false)
287
271
  {
288
- filledProductioins.insert(fillingProduction);
272
+ normalProds.insert(fillingProduction);
289
273
  }
290
274
  else
291
275
  {
@@ -293,7 +277,6 @@ GrammarBase::Productions CFGNormalizer::getFilledProductions(GrammarBase::Produc
293
277
  }
294
278
  }
295
279
  }
296
- return filledProductioins;
297
280
  }
298
281
 
299
282
  int CFGNormalizer::ebnfBracketMatch(GrammarBase::Production &prod, int i, CFLGrammar *grammar)
@@ -422,11 +405,12 @@ void CFGNormalizer::ebnfSignReplace(char sign, CFLGrammar *grammar)
422
405
  if (sign == '*' || sign == '?')
423
406
  {
424
407
  /// Insert Back the Group
425
- GrammarBase::Production E = strTrans(rep.first, grammar);
408
+ GrammarBase::Production normalProd;
409
+ strTrans(rep.first, grammar, normalProd);
426
410
  GrammarBase::Production withoutSign = {};
427
411
  if (sign == '*')
428
412
  {
429
- for (auto &word : E)
413
+ for (auto &word : normalProd)
430
414
  {
431
415
  if (word != grammar->str2Symbol("*") && word != grammar->str2Symbol("(") && word != grammar->str2Symbol(")"))
432
416
  {
@@ -437,7 +421,7 @@ void CFGNormalizer::ebnfSignReplace(char sign, CFLGrammar *grammar)
437
421
  }
438
422
  if (sign == '?')
439
423
  {
440
- for (auto &word : E)
424
+ for (auto &word : normalProd)
441
425
  {
442
426
  if (word != grammar->str2Symbol("?") && word != grammar->str2Symbol("(") && word != grammar->str2Symbol(")"))
443
427
  {
@@ -451,9 +435,8 @@ void CFGNormalizer::ebnfSignReplace(char sign, CFLGrammar *grammar)
451
435
  }
452
436
  }
453
437
 
454
- GrammarBase::Production CFGNormalizer::strTrans(std::string LHS, CFLGrammar *grammar)
438
+ void CFGNormalizer::strTrans(std::string LHS, CFLGrammar *grammar, GrammarBase::Production& normalProd)
455
439
  {
456
- GrammarBase::Production prod = {};
457
440
  std::smatch matches;
458
441
  std::regex LHSReg("\\s*(.*)");
459
442
  std::string delimiter;
@@ -466,10 +449,9 @@ GrammarBase::Production CFGNormalizer::strTrans(std::string LHS, CFLGrammar *gra
466
449
  {
467
450
  word = LHS.substr(0, pos);
468
451
  LHS.erase(0, pos + delimiter.length());
469
- prod.push_back(grammar->str2Symbol(word));
452
+ normalProd.push_back(grammar->str2Symbol(word));
470
453
  }
471
- prod.push_back(grammar->str2Symbol(LHS));
472
- return prod;
454
+ normalProd.push_back(grammar->str2Symbol(LHS));
473
455
  }
474
456
 
475
457
  GrammarBase::Symbol CFGNormalizer::check_head(GrammarBase::SymbolMap<GrammarBase::Symbol, GrammarBase::Productions> &grammar, GrammarBase::Production &rule)
@@ -511,3 +493,20 @@ void CFGNormalizer::insertToCFLGrammar(CFLGrammar *grammar, GrammarBase::Product
511
493
  grammar->getSecondRHS2Prods()[prod[2]].insert(prod);
512
494
  }
513
495
  }
496
+
497
+ void CFGNormalizer::removeFirstSymbol(CFLGrammar *grammar)
498
+ {
499
+ // Remove First Terminal
500
+ for(auto head : grammar->getRawProductions())
501
+ {
502
+ for(auto rule: head.second)
503
+ {
504
+
505
+ GrammarBase::Production long_run = rule;
506
+ long_run.erase(long_run.begin());
507
+ auto it = grammar->getRawProductions().at(head.first).find(rule);
508
+ grammar->getRawProductions().at(head.first).erase(it);
509
+ grammar->getRawProductions()[head.first].insert(long_run);
510
+ }
511
+ }
512
+ }
@@ -433,35 +433,80 @@ CFLGraph* VFCFLGraphBuilder::buildBigraph(SVFG *graph, Kind startKind, GrammarBa
433
433
  CFLNode* node = new CFLNode((*it).first);
434
434
  cflGraph->addCFLNode((*it).first, node);
435
435
  }
436
- // for(auto it = graph->begin(); it!= graph->end(); it++)
437
- // {
438
- // ConstraintNode* node = (*it).second;
439
- // for(ConstraintEdge* edge : node->getOutEdges())
440
- // {
441
- // CFLGrammar::Kind edgeLabel = edge->getEdgeKind();
442
- // // Need to get the offset from the Const Edge
443
- // // The offset present edge is only from Normal Gep CG at moment
444
- // if(NormalGepCGEdge::classof(edge))
445
- // {
446
- // NormalGepCGEdge *nGepEdge = SVFUtil::dyn_cast<NormalGepCGEdge>(edge);
447
- // CFLGrammar::Attribute attr = nGepEdge->getConstantFieldIdx();
448
- // addAttribute(edgeLabel, attr);
449
- // edgeLabel = CFLGrammar::getAttributedKind(attr, edgeLabel);
450
- // cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
451
- // std::string key = kind2LabelMap[edge->getEdgeKind()];
452
- // key.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
453
- // cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFLGrammar::getAttributedKind(attr, label2KindMap[key]));
454
- // addAttribute(label2KindMap[key], attr);
455
- // }
456
- // else
457
- // {
458
- // cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
459
- // std::string key = kind2LabelMap[edge->getEdgeKind()];
460
- // key.append("bar");
461
- // cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), label2KindMap[key]);
462
- // }
463
- // }
464
- // }
436
+ for(auto it = graph->begin(); it!= graph->end(); it++)
437
+ {
438
+ VFGNode* node = (*it).second;
439
+ for(VFGEdge* edge : node->getOutEdges())
440
+ {
441
+ CFLGrammar::Kind edgeLabel;
442
+ // Get 'a' edge : IntraDirectVF || IntraIndirectVF
443
+ if (edge->getEdgeKind() == VFGEdge::IntraDirectVF || edge->getEdgeKind() == VFGEdge::IntraIndirectVF || edge->getEdgeKind() == VFGEdge::TheadMHPIndirectVF )
444
+ {
445
+ edgeLabel = 0;
446
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
447
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
448
+ std::string key = kind2LabelMap[edge->getEdgeKind()];
449
+ key.append("bar");
450
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), label2KindMap[key]);
451
+ }
452
+ // Get 'call' edge : CallDirVF || CallIndVF
453
+ else if ( edge->getEdgeKind() == VFGEdge::CallDirVF )
454
+ {
455
+ edgeLabel = 1;
456
+ CallDirSVFGEdge *attributedEdge = SVFUtil::dyn_cast<CallDirSVFGEdge>(edge);
457
+ CFLGrammar::Attribute attr = attributedEdge->getCallSiteId();
458
+ addAttribute(edgeLabel, attr);
459
+ edgeLabel = CFLGrammar::getAttributedKind(attr, edgeLabel);
460
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
461
+ std::string key = kind2LabelMap[edge->getEdgeKind()];
462
+ key.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
463
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFLGrammar::getAttributedKind(attr, label2KindMap[key]));
464
+ addAttribute(label2KindMap[key], attr);
465
+ }
466
+ // Get 'call' edge : CallIndVF
467
+ else if ( edge->getEdgeKind() == VFGEdge::CallIndVF )
468
+ {
469
+ edgeLabel = 1;
470
+ CallIndSVFGEdge *attributedEdge = SVFUtil::dyn_cast<CallIndSVFGEdge>(edge);
471
+ CFLGrammar::Attribute attr = attributedEdge->getCallSiteId();
472
+ addAttribute(edgeLabel, attr);
473
+ edgeLabel = CFLGrammar::getAttributedKind(attr, edgeLabel);
474
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
475
+ std::string key = kind2LabelMap[edge->getEdgeKind()];
476
+ key.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
477
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFLGrammar::getAttributedKind(attr, label2KindMap[key]));
478
+ addAttribute(label2KindMap[key], attr);
479
+ }
480
+ // Get 'ret' edge : RetDirVF
481
+ else if ( edge->getEdgeKind() == VFGEdge::RetDirVF )
482
+ {
483
+ edgeLabel = 2;
484
+ RetDirSVFGEdge *attributedEdge = SVFUtil::dyn_cast<RetDirSVFGEdge>(edge);
485
+ CFLGrammar::Attribute attr = attributedEdge->getCallSiteId();
486
+ addAttribute(edgeLabel, attr);
487
+ edgeLabel = CFLGrammar::getAttributedKind(attr, edgeLabel);
488
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
489
+ std::string key = kind2LabelMap[edge->getEdgeKind()];
490
+ key.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
491
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFLGrammar::getAttributedKind(attr, label2KindMap[key]));
492
+ addAttribute(label2KindMap[key], attr);
493
+ }
494
+ // Get 'ret' edge : RetIndVF
495
+ else if ( edge->getEdgeKind() == VFGEdge::RetIndVF )
496
+ {
497
+ edgeLabel = 2;
498
+ RetIndSVFGEdge *attributedEdge = SVFUtil::dyn_cast<RetIndSVFGEdge>(edge);
499
+ CFLGrammar::Attribute attr = attributedEdge->getCallSiteId();
500
+ addAttribute(edgeLabel, attr);
501
+ edgeLabel = CFLGrammar::getAttributedKind(attr, edgeLabel);
502
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
503
+ std::string key = kind2LabelMap[edge->getEdgeKind()];
504
+ key.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
505
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFLGrammar::getAttributedKind(attr, label2KindMap[key]));
506
+ addAttribute(label2KindMap[key], attr);
507
+ }
508
+ }
509
+ }
465
510
  return cflGraph;
466
511
  }
467
512
 
package/lib/CFL/CFLVF.cpp CHANGED
@@ -48,7 +48,7 @@ void CFLVF::analyze()
48
48
  PointerAnalysis::initialize();
49
49
  GrammarBase *grammarBase = grammarBuilder.build();
50
50
  AndersenWaveDiff* ander = AndersenWaveDiff::createAndersenWaveDiff(pag);
51
- svfg = memSSA.buildPTROnlySVFG(ander);
51
+ svfg = memSSA.buildFullSVFG(ander);
52
52
  ConstraintGraph *consCG = new ConstraintGraph(svfir);
53
53
  if (Options::PEGTransfer)
54
54
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.571",
3
+ "version": "1.0.573",
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": {