svf-tools 1.0.569 → 1.0.571
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/CFLAlias_8cpp_source.html +28 -10
- package/SVF-doxygen/html/html/CFLAlias_8h.html +1 -0
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +41 -22
- package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +7 -7
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +11 -8
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h.html +3 -0
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +18 -15
- package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/CFLSolver_8h_source.html +15 -15
- package/SVF-doxygen/html/html/CFLStat_8cpp.html +80 -0
- package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +148 -0
- package/SVF-doxygen/html/html/CFLStat_8h.html +96 -0
- package/SVF-doxygen/html/html/CFLStat_8h_source.html +105 -0
- package/SVF-doxygen/html/html/CFLVF_8cpp.html +82 -0
- package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +106 -0
- package/SVF-doxygen/html/html/CFLVF_8h.html +103 -0
- package/SVF-doxygen/html/html/CFLVF_8h_source.html +110 -0
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +4 -3
- package/SVF-doxygen/html/html/Options_8h_source.html +4 -3
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8txt.html +98 -0
- package/SVF-doxygen/html/html/annotated.html +262 -259
- package/SVF-doxygen/html/html/cfl_8cpp.html +7 -4
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +6 -3
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +8 -6
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +130 -113
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +554 -81
- package/SVF-doxygen/html/html/classSVF_1_1CFLGramGraphChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +27 -26
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1CFLStat-members.html +123 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +700 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLStat.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +259 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +854 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +112 -111
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +28 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +8 -7
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +8 -7
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +9 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder-members.html +100 -0
- package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +407 -0
- package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.png +0 -0
- package/SVF-doxygen/html/html/classes.html +100 -100
- package/SVF-doxygen/html/html/dir_98f9a352f241e0e917d4efaa4086f6e8.html +4 -0
- package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +4 -0
- package/SVF-doxygen/html/html/files.html +6 -2
- package/SVF-doxygen/html/html/functions.html +11 -0
- package/SVF-doxygen/html/html/functions_0x7e.html +6 -0
- package/SVF-doxygen/html/html/functions_a.html +9 -5
- package/SVF-doxygen/html/html/functions_b.html +4 -2
- package/SVF-doxygen/html/html/functions_c.html +48 -24
- package/SVF-doxygen/html/html/functions_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func.html +17 -14
- package/SVF-doxygen/html/html/functions_func_0x7e.html +6 -0
- package/SVF-doxygen/html/html/functions_func_b.html +4 -2
- package/SVF-doxygen/html/html/functions_func_c.html +38 -26
- package/SVF-doxygen/html/html/functions_func_g.html +12 -9
- package/SVF-doxygen/html/html/functions_func_p.html +5 -4
- package/SVF-doxygen/html/html/functions_func_s.html +8 -7
- package/SVF-doxygen/html/html/functions_g.html +15 -10
- package/SVF-doxygen/html/html/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_m.html +4 -2
- package/SVF-doxygen/html/html/functions_n.html +8 -0
- package/SVF-doxygen/html/html/functions_o.html +15 -15
- package/SVF-doxygen/html/html/functions_p.html +16 -14
- package/SVF-doxygen/html/html/functions_r.html +2 -2
- package/SVF-doxygen/html/html/functions_s.html +16 -12
- package/SVF-doxygen/html/html/functions_t.html +9 -3
- package/SVF-doxygen/html/html/functions_type_c.html +1 -0
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars.html +11 -0
- package/SVF-doxygen/html/html/functions_vars_a.html +1 -0
- package/SVF-doxygen/html/html/functions_vars_c.html +5 -0
- package/SVF-doxygen/html/html/functions_vars_g.html +2 -0
- package/SVF-doxygen/html/html/functions_vars_m.html +3 -1
- package/SVF-doxygen/html/html/functions_vars_n.html +8 -0
- package/SVF-doxygen/html/html/functions_vars_p.html +1 -0
- package/SVF-doxygen/html/html/functions_vars_s.html +4 -1
- package/SVF-doxygen/html/html/functions_vars_t.html +6 -0
- package/SVF-doxygen/html/html/functions_w.html +11 -11
- package/SVF-doxygen/html/html/globals.html +2 -1
- package/SVF-doxygen/html/html/globals_vars.html +2 -1
- package/SVF-doxygen/html/html/hierarchy.html +14 -11
- package/SVF-doxygen/html/html/namespaceSVF.html +6 -0
- package/SVF-doxygen/html/html/search/all_0.js +10 -9
- package/SVF-doxygen/html/html/search/all_1.js +4 -4
- package/SVF-doxygen/html/html/search/all_10.js +10 -10
- package/SVF-doxygen/html/html/search/all_11.js +1 -1
- package/SVF-doxygen/html/html/search/all_12.js +10 -10
- package/SVF-doxygen/html/html/search/all_13.js +12 -12
- package/SVF-doxygen/html/html/search/all_15.js +4 -2
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_19.js +2 -0
- package/SVF-doxygen/html/html/search/all_2.js +2 -2
- package/SVF-doxygen/html/html/search/all_3.js +16 -8
- package/SVF-doxygen/html/html/search/all_6.js +3 -3
- package/SVF-doxygen/html/html/search/all_7.js +3 -2
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +3 -3
- package/SVF-doxygen/html/html/search/all_e.js +9 -9
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/classes_12.js +1 -0
- package/SVF-doxygen/html/html/search/classes_2.js +2 -0
- package/SVF-doxygen/html/html/search/files_2.js +4 -0
- package/SVF-doxygen/html/html/search/files_f.js +1 -0
- package/SVF-doxygen/html/html/search/functions_0.js +3 -3
- package/SVF-doxygen/html/html/search/functions_1.js +2 -2
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_17.js +2 -0
- package/SVF-doxygen/html/html/search/functions_2.js +6 -3
- package/SVF-doxygen/html/html/search/functions_6.js +1 -0
- package/SVF-doxygen/html/html/search/functions_f.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
- package/SVF-doxygen/html/html/search/variables_0.js +10 -9
- package/SVF-doxygen/html/html/search/variables_1.js +1 -1
- package/SVF-doxygen/html/html/search/variables_10.js +1 -1
- package/SVF-doxygen/html/html/search/variables_12.js +3 -3
- package/SVF-doxygen/html/html/search/variables_13.js +10 -10
- package/SVF-doxygen/html/html/search/variables_3.js +3 -2
- package/SVF-doxygen/html/html/search/variables_7.js +2 -2
- package/SVF-doxygen/html/html/search/variables_d.js +2 -2
- package/SVF-doxygen/html/html/search/variables_e.js +9 -9
- package/images/svf-stat.pdf +0 -0
- package/include/CFL/CFLAlias.h +31 -0
- package/include/CFL/CFLGramGraphChecker.h +3 -0
- package/include/CFL/CFLGraphBuilder.h +22 -0
- package/include/CFL/CFLSolver.h +6 -1
- package/include/CFL/CFLStat.h +88 -0
- package/include/CFL/CFLVF.h +77 -0
- package/include/CFL/VFG.txt +6 -0
- package/include/Util/Options.h +1 -0
- package/lib/CFL/CFLAlias.cpp +20 -0
- package/lib/CFL/CFLGraphBuilder.cpp +71 -0
- package/lib/CFL/CFLStat.cpp +269 -0
- package/lib/CFL/CFLVF.cpp +89 -0
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
- package/lib/Util/Options.cpp +6 -0
- package/package.json +1 -1
- package/tools/CFL/cfl.cpp +14 -4
|
@@ -58,7 +58,7 @@ var searchData=
|
|
|
58
58
|
['numofentrychi',['NumOfEntryChi',['../classSVF_1_1MemSSAStat.html#ad96437d0c28f8088c711a718d2f2730e',1,'SVF::MemSSAStat']]],
|
|
59
59
|
['numofentrynodes',['numOfEntryNodes',['../classSVF_1_1ICFGStat.html#ad37793e64fe58a8faba201c18d876685',1,'SVF::ICFGStat']]],
|
|
60
60
|
['numofexitnodes',['numOfExitNodes',['../classSVF_1_1ICFGStat.html#ad7e00680fb8ca31afbd166f9a4adc5ec',1,'SVF::ICFGStat']]],
|
|
61
|
-
['numoffieldexpand',['numOfFieldExpand',['../classSVF_1_1AndersenBase.html#a9f453ec1b4236b8194ae590981217259',1,'SVF::AndersenBase']]],
|
|
61
|
+
['numoffieldexpand',['numOfFieldExpand',['../classSVF_1_1CFLAlias.html#a46b3d4d12aa4fbf38038ce68e4e77096',1,'SVF::CFLAlias::numOfFieldExpand()'],['../classSVF_1_1AndersenBase.html#a9f453ec1b4236b8194ae590981217259',1,'SVF::AndersenBase::numOfFieldExpand()']]],
|
|
62
62
|
['numofflattenelements',['numOfFlattenElements',['../classSVF_1_1StInfo.html#a7aa5b5018b4dec4913eb6aecf25568a4',1,'SVF::StInfo']]],
|
|
63
63
|
['numofflattenfields',['numOfFlattenFields',['../classSVF_1_1StInfo.html#aa9b4e659f4a4421aadf736a3de24ca50',1,'SVF::StInfo']]],
|
|
64
64
|
['numofformalin',['numOfFormalIn',['../classSVF_1_1SVFGStat.html#abc5e079242666bb55ec7dbc7f258b3db',1,'SVF::SVFGStat']]],
|
|
@@ -80,7 +80,7 @@ var searchData=
|
|
|
80
80
|
['numofmhpld',['numOfMHPLd',['../classSVF_1_1MTAAnnotator.html#a29e0123620ab072fddc45331c6aa46e8',1,'SVF::MTAAnnotator']]],
|
|
81
81
|
['numofmhpqueries',['numOfMHPQueries',['../classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106',1,'SVF::MHP']]],
|
|
82
82
|
['numofmhpst',['numOfMHPSt',['../classSVF_1_1MTAAnnotator.html#a3a53e90b4f361d1298983bc89795b3d2',1,'SVF::MTAAnnotator']]],
|
|
83
|
-
['numofmssaphi',['
|
|
83
|
+
['numofmssaphi',['NumOfMSSAPhi',['../classSVF_1_1MemSSAStat.html#a4b598cb1d06c4c0963787036862b1c3d',1,'SVF::MemSSAStat::NumOfMSSAPhi()'],['../classSVF_1_1SVFGStat.html#a9fc87025af3b7e54442e78f46ebe0360',1,'SVF::SVFGStat::numOfMSSAPhi()']]],
|
|
84
84
|
['numofnewsvfgedges',['numOfNewSVFGEdges',['../classSVF_1_1MTASVFGBuilder.html#a019a4597074fdad6e51d936ed4ead0d9',1,'SVF::MTASVFGBuilder']]],
|
|
85
85
|
['numofnodes',['numOfNodes',['../classSVF_1_1ICFGStat.html#a8e71a19c266aacd7acb1fee6bb339788',1,'SVF::ICFGStat::numOfNodes()'],['../classSVF_1_1SVFGStat.html#ab499c24856a990dd4adb366107eb3302',1,'SVF::SVFGStat::numOfNodes()']]],
|
|
86
86
|
['numofnodesinscc',['numOfNodesInSCC',['../classSVF_1_1FlowSensitive.html#a9f3fe97202db8170fa9f47c5684bce75',1,'SVF::FlowSensitive']]],
|
|
@@ -88,14 +88,14 @@ var searchData=
|
|
|
88
88
|
['numofnonlocalst',['numOfNonLocalSt',['../classSVF_1_1MTAAnnotator.html#a3c07f9964623b3895b1bab59a63dccfb',1,'SVF::MTAAnnotator']]],
|
|
89
89
|
['numofphi',['numOfPhi',['../classSVF_1_1SVFGStat.html#a0e1fcb9154aad266406c4da4861ba020',1,'SVF::SVFGStat']]],
|
|
90
90
|
['numofprocessedactualparam',['numOfProcessedActualParam',['../classSVF_1_1FlowSensitive.html#abdc30e45347579986c42795a436a1251',1,'SVF::FlowSensitive']]],
|
|
91
|
-
['numofprocessedaddr',['numOfProcessedAddr',['../classSVF_1_1AndersenBase.html#a4acad18a6eb585ba9e3d2276dd591067',1,'SVF::AndersenBase::numOfProcessedAddr()'],['../classSVF_1_1FlowSensitive.html#ae4253bc632ffffe2498263c90f456ca7',1,'SVF::FlowSensitive::numOfProcessedAddr()']]],
|
|
92
|
-
['numofprocessedcopy',['numOfProcessedCopy',['../classSVF_1_1AndersenBase.html#a04acd871bd1b98cd9e83e395334ac130',1,'SVF::AndersenBase::numOfProcessedCopy()'],['../classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54',1,'SVF::FlowSensitive::numOfProcessedCopy()']]],
|
|
91
|
+
['numofprocessedaddr',['numOfProcessedAddr',['../classSVF_1_1CFLAlias.html#acd6070559826ef7983a828852ac93331',1,'SVF::CFLAlias::numOfProcessedAddr()'],['../classSVF_1_1AndersenBase.html#a4acad18a6eb585ba9e3d2276dd591067',1,'SVF::AndersenBase::numOfProcessedAddr()'],['../classSVF_1_1FlowSensitive.html#ae4253bc632ffffe2498263c90f456ca7',1,'SVF::FlowSensitive::numOfProcessedAddr()']]],
|
|
92
|
+
['numofprocessedcopy',['numOfProcessedCopy',['../classSVF_1_1CFLAlias.html#a320eed3b2074070c5a58a97d24e379db',1,'SVF::CFLAlias::numOfProcessedCopy()'],['../classSVF_1_1AndersenBase.html#a04acd871bd1b98cd9e83e395334ac130',1,'SVF::AndersenBase::numOfProcessedCopy()'],['../classSVF_1_1FlowSensitive.html#a19e017f3ed6429fa30687018e64dae54',1,'SVF::FlowSensitive::numOfProcessedCopy()']]],
|
|
93
93
|
['numofprocessedformalret',['numOfProcessedFormalRet',['../classSVF_1_1FlowSensitive.html#ae048cc5350cf2b075c05f5d84777a3c5',1,'SVF::FlowSensitive']]],
|
|
94
|
-
['numofprocessedgep',['numOfProcessedGep',['../classSVF_1_1AndersenBase.html#aa1246b392aeae1fd10c8a9ebedcc2dd9',1,'SVF::AndersenBase::numOfProcessedGep()'],['../classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e',1,'SVF::FlowSensitive::numOfProcessedGep()']]],
|
|
95
|
-
['numofprocessedload',['numOfProcessedLoad',['../classSVF_1_1AndersenBase.html#a69aae96fc1c99bf108075e5061f50f9e',1,'SVF::AndersenBase::numOfProcessedLoad()'],['../classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268',1,'SVF::FlowSensitive::numOfProcessedLoad()']]],
|
|
94
|
+
['numofprocessedgep',['numOfProcessedGep',['../classSVF_1_1CFLAlias.html#aa6a5ed4632eeef28f35910514b9e8a66',1,'SVF::CFLAlias::numOfProcessedGep()'],['../classSVF_1_1AndersenBase.html#aa1246b392aeae1fd10c8a9ebedcc2dd9',1,'SVF::AndersenBase::numOfProcessedGep()'],['../classSVF_1_1FlowSensitive.html#a88a111b6bc347d6562db7af8bd8f2f0e',1,'SVF::FlowSensitive::numOfProcessedGep()']]],
|
|
95
|
+
['numofprocessedload',['numOfProcessedLoad',['../classSVF_1_1CFLAlias.html#a35356e309560c939ca47bccf47d2ba50',1,'SVF::CFLAlias::numOfProcessedLoad()'],['../classSVF_1_1AndersenBase.html#a69aae96fc1c99bf108075e5061f50f9e',1,'SVF::AndersenBase::numOfProcessedLoad()'],['../classSVF_1_1FlowSensitive.html#a0e1a0bdbf4f81a3600ac26ac011ac268',1,'SVF::FlowSensitive::numOfProcessedLoad()']]],
|
|
96
96
|
['numofprocessedmssanode',['numOfProcessedMSSANode',['../classSVF_1_1FlowSensitive.html#af71a5ae3aef022c569e89f40515072cf',1,'SVF::FlowSensitive']]],
|
|
97
97
|
['numofprocessedphi',['numOfProcessedPhi',['../classSVF_1_1FlowSensitive.html#ac39abcb40e4b568ab59b7cf48ed10f70',1,'SVF::FlowSensitive']]],
|
|
98
|
-
['numofprocessedstore',['numOfProcessedStore',['../classSVF_1_1AndersenBase.html#a2b763519509ce21cf40893c01f8357b6',1,'SVF::AndersenBase::numOfProcessedStore()'],['../classSVF_1_1FlowSensitive.html#a669e8f1dd8572b7dcff373c9787a923d',1,'SVF::FlowSensitive::numOfProcessedStore()']]],
|
|
98
|
+
['numofprocessedstore',['numOfProcessedStore',['../classSVF_1_1CFLAlias.html#afc529c27f0e572948de13c319435b415',1,'SVF::CFLAlias::numOfProcessedStore()'],['../classSVF_1_1AndersenBase.html#a2b763519509ce21cf40893c01f8357b6',1,'SVF::AndersenBase::numOfProcessedStore()'],['../classSVF_1_1FlowSensitive.html#a669e8f1dd8572b7dcff373c9787a923d',1,'SVF::FlowSensitive::numOfProcessedStore()']]],
|
|
99
99
|
['numofremovedpts',['numOfRemovedPTS',['../classSVF_1_1MTASVFGBuilder.html#a07c3f5fa2e0092dac28521cf901a26cf',1,'SVF::MTASVFGBuilder']]],
|
|
100
100
|
['numofremovedsvfgedges',['numOfRemovedSVFGEdges',['../classSVF_1_1MTASVFGBuilder.html#a0319d1d2e78c79f9943f2e2f65da26ed',1,'SVF::MTASVFGBuilder']]],
|
|
101
101
|
['numofresolvedindcalledge',['numOfResolvedIndCallEdge',['../classSVF_1_1PTACallGraph.html#adf05313ea8bcc7973acebd3fbcd75c92',1,'SVF::PTACallGraph']]],
|
|
@@ -103,8 +103,8 @@ var searchData=
|
|
|
103
103
|
['numofretmu',['NumOfRetMu',['../classSVF_1_1MemSSAStat.html#a1459465f0a76c09b5dd7d777467ac2e4',1,'SVF::MemSSAStat']]],
|
|
104
104
|
['numofretnodes',['numOfRetNodes',['../classSVF_1_1ICFGStat.html#ac9bfce40c058ed7ab178fe1f1818e9de',1,'SVF::ICFGStat']]],
|
|
105
105
|
['numofscc',['numOfSCC',['../classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3',1,'SVF::FlowSensitive']]],
|
|
106
|
-
['numofsccdetection',['numOfSCCDetection',['../classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968',1,'SVF::AndersenBase']]],
|
|
107
|
-
['numofsfrs',['numOfSfrs',['../classSVF_1_1AndersenBase.html#a25b00d9ca71cbdd27530fc5d0dc84ee5',1,'SVF::AndersenBase']]],
|
|
106
|
+
['numofsccdetection',['numOfSCCDetection',['../classSVF_1_1CFLAlias.html#abde85bf1f0f4ff2cf01e05b2f645a876',1,'SVF::CFLAlias::numOfSCCDetection()'],['../classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968',1,'SVF::AndersenBase::numOfSCCDetection()']]],
|
|
107
|
+
['numofsfrs',['numOfSfrs',['../classSVF_1_1CFLAlias.html#a7f63c7509ac67a697b248dd28e9c2409',1,'SVF::CFLAlias::numOfSfrs()'],['../classSVF_1_1AndersenBase.html#a25b00d9ca71cbdd27530fc5d0dc84ee5',1,'SVF::AndersenBase::numOfSfrs()']]],
|
|
108
108
|
['numofstore',['numOfStore',['../classSVF_1_1SVFGStat.html#a4d15f2de3f226c26cb2af57176444ec9',1,'SVF::SVFGStat']]],
|
|
109
109
|
['numofstorechi',['NumOfStoreChi',['../classSVF_1_1MemSSAStat.html#a810965c025da84c58575c8066bc84056',1,'SVF::MemSSAStat']]],
|
|
110
110
|
['numofstorehaschi',['NumOfStoreHasChi',['../classSVF_1_1MemSSAStat.html#a3bc14307bd0f986cbd8ba5970f1abf0f',1,'SVF::MemSSAStat']]],
|
|
Binary file
|
package/include/CFL/CFLAlias.h
CHANGED
|
@@ -38,10 +38,13 @@
|
|
|
38
38
|
#include "MemoryModel/PointerAnalysis.h"
|
|
39
39
|
#include "Graphs/ConsG.h"
|
|
40
40
|
#include "Util/Options.h"
|
|
41
|
+
#include "CFL/CFLStat.h"
|
|
41
42
|
|
|
42
43
|
namespace SVF
|
|
43
44
|
{
|
|
44
45
|
|
|
46
|
+
class CFLStat;
|
|
47
|
+
|
|
45
48
|
class CFLAlias : public BVDataPTAImpl
|
|
46
49
|
{
|
|
47
50
|
|
|
@@ -138,6 +141,34 @@ public:
|
|
|
138
141
|
void connectCaller2CalleeParams(CallSite cs, const SVFFunction* F);
|
|
139
142
|
|
|
140
143
|
void heapAllocatorViaIndCall(CallSite cs);
|
|
144
|
+
|
|
145
|
+
/// Get CFL graph
|
|
146
|
+
CFLGraph* getCFLGraph()
|
|
147
|
+
{
|
|
148
|
+
return graph;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/// Statistics
|
|
152
|
+
//@{
|
|
153
|
+
static u32_t numOfProcessedAddr; /// Number of processed Addr edge
|
|
154
|
+
static u32_t numOfProcessedCopy; /// Number of processed Copy edge
|
|
155
|
+
static u32_t numOfProcessedGep; /// Number of processed Gep edge
|
|
156
|
+
static u32_t numOfProcessedLoad; /// Number of processed Load edge
|
|
157
|
+
static u32_t numOfProcessedStore; /// Number of processed Store edge
|
|
158
|
+
static u32_t numOfSfrs;
|
|
159
|
+
static u32_t numOfFieldExpand;
|
|
160
|
+
|
|
161
|
+
static u32_t numOfSCCDetection;
|
|
162
|
+
static double timeOfSCCDetection;
|
|
163
|
+
static double timeOfSCCMerges;
|
|
164
|
+
static double timeOfCollapse;
|
|
165
|
+
static u32_t AveragePointsToSetSize;
|
|
166
|
+
static u32_t MaxPointsToSetSize;
|
|
167
|
+
static double timeOfProcessCopyGep;
|
|
168
|
+
static double timeOfProcessLoadStore;
|
|
169
|
+
static double timeOfUpdateCallGraph;
|
|
170
|
+
//@}
|
|
171
|
+
|
|
141
172
|
private:
|
|
142
173
|
CallSite2DummyValPN callsite2DummyValPN; ///< Map an instruction to a dummy obj which created at an indirect callsite, which invokes a heap allocator
|
|
143
174
|
SVFIR* svfir;
|
|
@@ -26,6 +26,8 @@
|
|
|
26
26
|
* Created on: May 23, 2022
|
|
27
27
|
* Author: Pei Xu
|
|
28
28
|
*/
|
|
29
|
+
#ifndef INCLUDE_CFL_CFLGRAMGRAPHCHECKER_H_
|
|
30
|
+
#define INCLUDE_CFL_CFLGRAMGRAPHCHECKER_H_
|
|
29
31
|
|
|
30
32
|
#include "CFL/CFLGrammar.h"
|
|
31
33
|
#include "Graphs/CFLGraph.h"
|
|
@@ -69,3 +71,4 @@ public:
|
|
|
69
71
|
|
|
70
72
|
}// SVF
|
|
71
73
|
|
|
74
|
+
#endif /* INCLUDE_CFL_CFLGRAMGRAPHCHECKER_H_*/
|
|
@@ -32,6 +32,8 @@
|
|
|
32
32
|
|
|
33
33
|
#include "CFL/CFLGrammar.h"
|
|
34
34
|
#include "Graphs/CFLGraph.h"
|
|
35
|
+
#include "Graphs/SVFG.h"
|
|
36
|
+
|
|
35
37
|
namespace SVF
|
|
36
38
|
{
|
|
37
39
|
|
|
@@ -166,6 +168,26 @@ private:
|
|
|
166
168
|
void addBiGepCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFLGrammar::Attribute attri);
|
|
167
169
|
};
|
|
168
170
|
|
|
171
|
+
class VFCFLGraphBuilder : public CFLGraphBuilder
|
|
172
|
+
{
|
|
173
|
+
public:
|
|
174
|
+
/// Build Bidirectional graph by copying nodes and edges from const graph inherited from GenericGraph
|
|
175
|
+
CFLGraph* buildBigraph(SVFG *graph, Kind startKind, GrammarBase *grammar);
|
|
176
|
+
|
|
177
|
+
/// Build Bidirectional graph by copying nodes and edges from any graph inherited from GenericGraph
|
|
178
|
+
/// And transfer Load Store to copy edge and address edge to construct PEG style CFG
|
|
179
|
+
CFLGraph* buildBiPEGgraph(ConstraintGraph *graph, Kind startKind, GrammarBase *grammar, SVFIR* pag);
|
|
180
|
+
|
|
181
|
+
private:
|
|
182
|
+
void connectVGep(CFLGraph *cflGraph, ConstraintGraph *graph, ConstraintNode *src, ConstraintNode *dst, u32_t level, SVFIR* pag);
|
|
183
|
+
|
|
184
|
+
/// Handle edge except for the GEP
|
|
185
|
+
void addBiCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFLGrammar::Kind label);
|
|
186
|
+
|
|
187
|
+
/// Add Bidirectional GEP edge with attribute
|
|
188
|
+
void addBiGepCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFLGrammar::Attribute attri);
|
|
189
|
+
};
|
|
190
|
+
|
|
169
191
|
}// SVF
|
|
170
192
|
|
|
171
193
|
#endif /* INCLUDE_CFL_CFLGRAPHBUILDER_H_*/
|
package/include/CFL/CFLSolver.h
CHANGED
|
@@ -27,6 +27,9 @@
|
|
|
27
27
|
* Author: Yulei Sui
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
+
#ifndef INCLUDE_CFL_CFLSolver_H_
|
|
31
|
+
#define INCLUDE_CFL_CFLSolver_H_
|
|
32
|
+
|
|
30
33
|
#include "Graphs/CFLGraph.h"
|
|
31
34
|
#include "CFL/CFLGrammar.h"
|
|
32
35
|
#include "Util/WorkList.h"
|
|
@@ -99,4 +102,6 @@ private:
|
|
|
99
102
|
|
|
100
103
|
};
|
|
101
104
|
|
|
102
|
-
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
#endif /* INCLUDE_CFL_CFLSolver_H_*/
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
//===- CFLStat.h -- CFL statistics--------------------------------------------//
|
|
2
|
+
//
|
|
3
|
+
// SVF: Static Value-Flow Analysis
|
|
4
|
+
//
|
|
5
|
+
// Copyright (C) <2013-2017> <Yulei Sui>
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
// This program is free software: you can redistribute it and/or modify
|
|
9
|
+
// it under the terms of the GNU General Public License as published by
|
|
10
|
+
// the Free Software Foundation, either version 3 of the License, or
|
|
11
|
+
// (at your option) any later version.
|
|
12
|
+
|
|
13
|
+
// This program is distributed in the hope that it will be useful,
|
|
14
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
// GNU General Public License for more details.
|
|
17
|
+
|
|
18
|
+
// You should have received a copy of the GNU General Public License
|
|
19
|
+
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
+
//
|
|
21
|
+
//===----------------------------------------------------------------------===//
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
/*
|
|
25
|
+
* CFLStat.h
|
|
26
|
+
*
|
|
27
|
+
* Created on: 17/9/2022
|
|
28
|
+
* Author: Pei Xu
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
#ifndef CFL_CFLSTAT_H_
|
|
32
|
+
#define CFL_CFLSTAT_H_
|
|
33
|
+
|
|
34
|
+
#include "Util/PTAStat.h"
|
|
35
|
+
#include "CFL/CFLAlias.h"
|
|
36
|
+
|
|
37
|
+
namespace SVF
|
|
38
|
+
{
|
|
39
|
+
|
|
40
|
+
class CFLAlias;
|
|
41
|
+
class SVFIR;
|
|
42
|
+
class ConstraintGraph;
|
|
43
|
+
|
|
44
|
+
/*!
|
|
45
|
+
* Statistics of CFL's analysis
|
|
46
|
+
*/
|
|
47
|
+
class CFLStat : public PTAStat
|
|
48
|
+
{
|
|
49
|
+
|
|
50
|
+
private:
|
|
51
|
+
CFLAlias* pta;
|
|
52
|
+
|
|
53
|
+
public:
|
|
54
|
+
static const char* CollapseTime;
|
|
55
|
+
|
|
56
|
+
static u32_t _MaxPtsSize;
|
|
57
|
+
static u32_t _NumOfCycles;
|
|
58
|
+
static u32_t _NumOfPWCCycles;
|
|
59
|
+
static u32_t _NumOfNodesInCycles;
|
|
60
|
+
static u32_t _MaxNumOfNodesInSCC;
|
|
61
|
+
u32_t _NumOfNullPtr;
|
|
62
|
+
u32_t _NumOfConstantPtr;
|
|
63
|
+
u32_t _NumOfBlackholePtr;
|
|
64
|
+
|
|
65
|
+
/// CFL Stat
|
|
66
|
+
u32_t _NumofCFLGraphNode;
|
|
67
|
+
|
|
68
|
+
CFLStat(CFLAlias* p);
|
|
69
|
+
|
|
70
|
+
virtual ~CFLStat()
|
|
71
|
+
{
|
|
72
|
+
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
virtual void performStat();
|
|
76
|
+
|
|
77
|
+
void collectCycleInfo(ConstraintGraph* consCG);
|
|
78
|
+
|
|
79
|
+
void collectCFLInfo(CFLGraph* CFLGraph);
|
|
80
|
+
|
|
81
|
+
void statNullPtr();
|
|
82
|
+
|
|
83
|
+
void constraintGraphStat();
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
} // End namespace SVF
|
|
87
|
+
|
|
88
|
+
#endif /* FLOWSENSITIVESTAT_H_ */
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
//===----- CFLVF.h -- CFL Value-Flow Client--------------//
|
|
2
|
+
//
|
|
3
|
+
// SVF: Static Value-Flow Analysis
|
|
4
|
+
//
|
|
5
|
+
// Copyright (C) <2013-> <Yulei Sui>
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
// This program is free software: you can redistribute it and/or modify
|
|
9
|
+
// it under the terms of the GNU General Public License as published by
|
|
10
|
+
// the Free Software Foundation, either version 3 of the License, or
|
|
11
|
+
// (at your option) any later version.
|
|
12
|
+
|
|
13
|
+
// This program is distributed in the hope that it will be useful,
|
|
14
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
// GNU General Public License for more details.
|
|
17
|
+
|
|
18
|
+
// You should have received a copy of the GNU General Public License
|
|
19
|
+
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
+
//
|
|
21
|
+
//===----------------------------------------------------------------------===//
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
* CFLVF.h
|
|
25
|
+
*
|
|
26
|
+
* Created on: September 5, 2022
|
|
27
|
+
* Author: Pei Xu
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
#ifndef INCLUDE_CFL_CFLVF_H_
|
|
31
|
+
#define INCLUDE_CFL_CFLVF_H_
|
|
32
|
+
|
|
33
|
+
#include "CFL/CFLSolver.h"
|
|
34
|
+
#include "CFL/CFGNormalizer.h"
|
|
35
|
+
#include "CFL/GrammarBuilder.h"
|
|
36
|
+
#include "CFL/CFLGraphBuilder.h"
|
|
37
|
+
#include "CFL/CFLGramGraphChecker.h"
|
|
38
|
+
#include "MemoryModel/PointerAnalysis.h"
|
|
39
|
+
#include "Graphs/ConsG.h"
|
|
40
|
+
#include "Util/Options.h"
|
|
41
|
+
#include "SABER/SaberSVFGBuilder.h"
|
|
42
|
+
|
|
43
|
+
namespace SVF
|
|
44
|
+
{
|
|
45
|
+
|
|
46
|
+
class CFLVF : public BVDataPTAImpl
|
|
47
|
+
{
|
|
48
|
+
|
|
49
|
+
public:
|
|
50
|
+
typedef OrderedMap<CallSite, NodeID> CallSite2DummyValPN;
|
|
51
|
+
|
|
52
|
+
CFLVF(SVFIR* ir) : BVDataPTAImpl(ir, PointerAnalysis::CFLFSCS_WPA, false), svfir(ir), graph(nullptr), grammar(nullptr), solver(nullptr)
|
|
53
|
+
{
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/// Destructor
|
|
57
|
+
virtual ~CFLVF()
|
|
58
|
+
{
|
|
59
|
+
delete solver;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/// Start Analysis here (main part of pointer analysis).
|
|
63
|
+
virtual void analyze();
|
|
64
|
+
|
|
65
|
+
private:
|
|
66
|
+
CallSite2DummyValPN callsite2DummyValPN; ///< Map an instruction to a dummy obj which created at an indirect callsite, which invokes a heap allocator
|
|
67
|
+
SVFIR* svfir;
|
|
68
|
+
CFLGraph* graph;
|
|
69
|
+
CFLGrammar* grammar;
|
|
70
|
+
CFLSolver *solver;
|
|
71
|
+
SaberSVFGBuilder memSSA;
|
|
72
|
+
SVFG* svfg;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
} // End namespace SVF
|
|
76
|
+
|
|
77
|
+
#endif /* INCLUDE_CFL_CFLVF_H_*/
|
package/include/Util/Options.h
CHANGED
|
@@ -254,6 +254,7 @@ public:
|
|
|
254
254
|
static const llvm::cl::opt<bool> PrintCFL;
|
|
255
255
|
static const llvm::cl::opt<bool> FlexSymMap;
|
|
256
256
|
static const llvm::cl::opt<bool> PEGTransfer;
|
|
257
|
+
static const llvm::cl::opt<bool> CFLSVFG;
|
|
257
258
|
|
|
258
259
|
// Loop Analysis
|
|
259
260
|
static const llvm::cl::opt<bool> LoopAnalysis;
|
package/lib/CFL/CFLAlias.cpp
CHANGED
|
@@ -34,6 +34,25 @@ using namespace SVF;
|
|
|
34
34
|
using namespace cppUtil;
|
|
35
35
|
using namespace SVFUtil;
|
|
36
36
|
|
|
37
|
+
u32_t CFLAlias::numOfProcessedAddr = 0;
|
|
38
|
+
u32_t CFLAlias::numOfProcessedCopy = 0;
|
|
39
|
+
u32_t CFLAlias::numOfProcessedGep = 0;
|
|
40
|
+
u32_t CFLAlias::numOfProcessedLoad = 0;
|
|
41
|
+
u32_t CFLAlias::numOfProcessedStore = 0;
|
|
42
|
+
u32_t CFLAlias::numOfSfrs = 0;
|
|
43
|
+
u32_t CFLAlias::numOfFieldExpand = 0;
|
|
44
|
+
|
|
45
|
+
u32_t CFLAlias::numOfSCCDetection = 0;
|
|
46
|
+
double CFLAlias::timeOfSCCDetection = 0;
|
|
47
|
+
double CFLAlias::timeOfSCCMerges = 0;
|
|
48
|
+
double CFLAlias::timeOfCollapse = 0;
|
|
49
|
+
|
|
50
|
+
u32_t CFLAlias::AveragePointsToSetSize = 0;
|
|
51
|
+
u32_t CFLAlias::MaxPointsToSetSize = 0;
|
|
52
|
+
double CFLAlias::timeOfProcessCopyGep = 0;
|
|
53
|
+
double CFLAlias::timeOfProcessLoadStore = 0;
|
|
54
|
+
double CFLAlias::timeOfUpdateCallGraph = 0;
|
|
55
|
+
|
|
37
56
|
/*!
|
|
38
57
|
* On the fly call graph construction
|
|
39
58
|
* callsites is candidate indirect callsites need to be analyzed based on points-to results
|
|
@@ -197,6 +216,7 @@ bool CFLAlias::updateCallGraph(const CallSiteToFunPtrMap& callsites)
|
|
|
197
216
|
|
|
198
217
|
void CFLAlias::analyze()
|
|
199
218
|
{
|
|
219
|
+
stat = new CFLStat(this);
|
|
200
220
|
GrammarBuilder grammarBuilder = GrammarBuilder(Options::GrammarFilename);
|
|
201
221
|
CFGNormalizer normalizer = CFGNormalizer();
|
|
202
222
|
AliasCFLGraphBuilder cflGraphBuilder = AliasCFLGraphBuilder();
|
|
@@ -401,4 +401,75 @@ void AliasCFLGraphBuilder::addBiGepCFLEdge(CFLGraph *cflGraph, ConstraintNode*
|
|
|
401
401
|
cflGraph->addCFLEdge(cflGraph->getGNode(dst->getId()), cflGraph->getGNode(src->getId()), CFLGrammar::getAttributedKind(attri, label2KindMap[key]));
|
|
402
402
|
return;
|
|
403
403
|
}
|
|
404
|
+
|
|
405
|
+
CFLGraph* VFCFLGraphBuilder::buildBigraph(SVFG *graph, Kind startKind, GrammarBase *grammar)
|
|
406
|
+
{
|
|
407
|
+
CFLGraph *cflGraph = new CFLGraph(startKind);
|
|
408
|
+
externMap = true;
|
|
409
|
+
for(auto pairV : grammar->getTerminals())
|
|
410
|
+
{
|
|
411
|
+
if(label2KindMap.find(pairV.first) == label2KindMap.end())
|
|
412
|
+
{
|
|
413
|
+
label2KindMap.insert(pairV);
|
|
414
|
+
}
|
|
415
|
+
if(kind2LabelMap.find(pairV.second) == kind2LabelMap.end())
|
|
416
|
+
{
|
|
417
|
+
kind2LabelMap.insert(make_pair(pairV.second, pairV.first));
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
for(auto pairV : grammar->getNonterminals())
|
|
421
|
+
{
|
|
422
|
+
if(label2KindMap.find(pairV.first) == label2KindMap.end())
|
|
423
|
+
{
|
|
424
|
+
label2KindMap.insert(pairV);
|
|
425
|
+
}
|
|
426
|
+
if(kind2LabelMap.find(pairV.second) == kind2LabelMap.end())
|
|
427
|
+
{
|
|
428
|
+
kind2LabelMap.insert(make_pair(pairV.second, pairV.first));
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
for(auto it = graph->begin(); it!= graph->end(); it++)
|
|
432
|
+
{
|
|
433
|
+
CFLNode* node = new CFLNode((*it).first);
|
|
434
|
+
cflGraph->addCFLNode((*it).first, node);
|
|
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
|
+
// }
|
|
465
|
+
return cflGraph;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
CFLGraph* VFCFLGraphBuilder::buildBiPEGgraph(ConstraintGraph *graph, Kind startKind, GrammarBase *grammar, SVFIR* pag)
|
|
469
|
+
{
|
|
470
|
+
CFLGraph *cflGraph = new CFLGraph(startKind);
|
|
471
|
+
return cflGraph;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
|
|
404
475
|
} // end of SVF namespace
|