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.
Files changed (151) hide show
  1. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +28 -10
  2. package/SVF-doxygen/html/html/CFLAlias_8h.html +1 -0
  3. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +41 -22
  4. package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +7 -7
  5. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +11 -8
  6. package/SVF-doxygen/html/html/CFLGraphBuilder_8h.html +3 -0
  7. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +18 -15
  8. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +6 -6
  9. package/SVF-doxygen/html/html/CFLSolver_8h_source.html +15 -15
  10. package/SVF-doxygen/html/html/CFLStat_8cpp.html +80 -0
  11. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +148 -0
  12. package/SVF-doxygen/html/html/CFLStat_8h.html +96 -0
  13. package/SVF-doxygen/html/html/CFLStat_8h_source.html +105 -0
  14. package/SVF-doxygen/html/html/CFLVF_8cpp.html +82 -0
  15. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +106 -0
  16. package/SVF-doxygen/html/html/CFLVF_8h.html +103 -0
  17. package/SVF-doxygen/html/html/CFLVF_8h_source.html +110 -0
  18. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/Options_8cpp_source.html +4 -3
  20. package/SVF-doxygen/html/html/Options_8h_source.html +4 -3
  21. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/VFG_8txt.html +98 -0
  23. package/SVF-doxygen/html/html/annotated.html +262 -259
  24. package/SVF-doxygen/html/html/cfl_8cpp.html +7 -4
  25. package/SVF-doxygen/html/html/cfl_8cpp_source.html +6 -3
  26. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +11 -11
  27. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +8 -6
  28. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.png +0 -0
  29. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +130 -113
  30. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +554 -81
  31. package/SVF-doxygen/html/html/classSVF_1_1CFLGramGraphChecker.html +3 -3
  32. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +27 -26
  33. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.png +0 -0
  34. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +32 -32
  35. package/SVF-doxygen/html/html/classSVF_1_1CFLStat-members.html +123 -0
  36. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +700 -0
  37. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.png +0 -0
  38. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +259 -0
  39. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +854 -0
  40. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.png +0 -0
  41. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
  42. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +112 -111
  43. package/SVF-doxygen/html/html/classSVF_1_1Options.html +28 -2
  44. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +8 -7
  45. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.png +0 -0
  46. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +8 -7
  47. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
  48. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +1 -1
  49. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +9 -8
  50. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.png +0 -0
  51. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder-members.html +100 -0
  52. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +407 -0
  53. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.png +0 -0
  54. package/SVF-doxygen/html/html/classes.html +100 -100
  55. package/SVF-doxygen/html/html/dir_98f9a352f241e0e917d4efaa4086f6e8.html +4 -0
  56. package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +4 -0
  57. package/SVF-doxygen/html/html/files.html +6 -2
  58. package/SVF-doxygen/html/html/functions.html +11 -0
  59. package/SVF-doxygen/html/html/functions_0x7e.html +6 -0
  60. package/SVF-doxygen/html/html/functions_a.html +9 -5
  61. package/SVF-doxygen/html/html/functions_b.html +4 -2
  62. package/SVF-doxygen/html/html/functions_c.html +48 -24
  63. package/SVF-doxygen/html/html/functions_f.html +6 -6
  64. package/SVF-doxygen/html/html/functions_func.html +17 -14
  65. package/SVF-doxygen/html/html/functions_func_0x7e.html +6 -0
  66. package/SVF-doxygen/html/html/functions_func_b.html +4 -2
  67. package/SVF-doxygen/html/html/functions_func_c.html +38 -26
  68. package/SVF-doxygen/html/html/functions_func_g.html +12 -9
  69. package/SVF-doxygen/html/html/functions_func_p.html +5 -4
  70. package/SVF-doxygen/html/html/functions_func_s.html +8 -7
  71. package/SVF-doxygen/html/html/functions_g.html +15 -10
  72. package/SVF-doxygen/html/html/functions_l.html +3 -3
  73. package/SVF-doxygen/html/html/functions_m.html +4 -2
  74. package/SVF-doxygen/html/html/functions_n.html +8 -0
  75. package/SVF-doxygen/html/html/functions_o.html +15 -15
  76. package/SVF-doxygen/html/html/functions_p.html +16 -14
  77. package/SVF-doxygen/html/html/functions_r.html +2 -2
  78. package/SVF-doxygen/html/html/functions_s.html +16 -12
  79. package/SVF-doxygen/html/html/functions_t.html +9 -3
  80. package/SVF-doxygen/html/html/functions_type_c.html +1 -0
  81. package/SVF-doxygen/html/html/functions_v.html +3 -3
  82. package/SVF-doxygen/html/html/functions_vars.html +11 -0
  83. package/SVF-doxygen/html/html/functions_vars_a.html +1 -0
  84. package/SVF-doxygen/html/html/functions_vars_c.html +5 -0
  85. package/SVF-doxygen/html/html/functions_vars_g.html +2 -0
  86. package/SVF-doxygen/html/html/functions_vars_m.html +3 -1
  87. package/SVF-doxygen/html/html/functions_vars_n.html +8 -0
  88. package/SVF-doxygen/html/html/functions_vars_p.html +1 -0
  89. package/SVF-doxygen/html/html/functions_vars_s.html +4 -1
  90. package/SVF-doxygen/html/html/functions_vars_t.html +6 -0
  91. package/SVF-doxygen/html/html/functions_w.html +11 -11
  92. package/SVF-doxygen/html/html/globals.html +2 -1
  93. package/SVF-doxygen/html/html/globals_vars.html +2 -1
  94. package/SVF-doxygen/html/html/hierarchy.html +14 -11
  95. package/SVF-doxygen/html/html/namespaceSVF.html +6 -0
  96. package/SVF-doxygen/html/html/search/all_0.js +10 -9
  97. package/SVF-doxygen/html/html/search/all_1.js +4 -4
  98. package/SVF-doxygen/html/html/search/all_10.js +10 -10
  99. package/SVF-doxygen/html/html/search/all_11.js +1 -1
  100. package/SVF-doxygen/html/html/search/all_12.js +10 -10
  101. package/SVF-doxygen/html/html/search/all_13.js +12 -12
  102. package/SVF-doxygen/html/html/search/all_15.js +4 -2
  103. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  104. package/SVF-doxygen/html/html/search/all_19.js +2 -0
  105. package/SVF-doxygen/html/html/search/all_2.js +2 -2
  106. package/SVF-doxygen/html/html/search/all_3.js +16 -8
  107. package/SVF-doxygen/html/html/search/all_6.js +3 -3
  108. package/SVF-doxygen/html/html/search/all_7.js +3 -2
  109. package/SVF-doxygen/html/html/search/all_b.js +1 -1
  110. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  111. package/SVF-doxygen/html/html/search/all_d.js +3 -3
  112. package/SVF-doxygen/html/html/search/all_e.js +9 -9
  113. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  114. package/SVF-doxygen/html/html/search/classes_12.js +1 -0
  115. package/SVF-doxygen/html/html/search/classes_2.js +2 -0
  116. package/SVF-doxygen/html/html/search/files_2.js +4 -0
  117. package/SVF-doxygen/html/html/search/files_f.js +1 -0
  118. package/SVF-doxygen/html/html/search/functions_0.js +3 -3
  119. package/SVF-doxygen/html/html/search/functions_1.js +2 -2
  120. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  121. package/SVF-doxygen/html/html/search/functions_17.js +2 -0
  122. package/SVF-doxygen/html/html/search/functions_2.js +6 -3
  123. package/SVF-doxygen/html/html/search/functions_6.js +1 -0
  124. package/SVF-doxygen/html/html/search/functions_f.js +2 -2
  125. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  126. package/SVF-doxygen/html/html/search/variables_0.js +10 -9
  127. package/SVF-doxygen/html/html/search/variables_1.js +1 -1
  128. package/SVF-doxygen/html/html/search/variables_10.js +1 -1
  129. package/SVF-doxygen/html/html/search/variables_12.js +3 -3
  130. package/SVF-doxygen/html/html/search/variables_13.js +10 -10
  131. package/SVF-doxygen/html/html/search/variables_3.js +3 -2
  132. package/SVF-doxygen/html/html/search/variables_7.js +2 -2
  133. package/SVF-doxygen/html/html/search/variables_d.js +2 -2
  134. package/SVF-doxygen/html/html/search/variables_e.js +9 -9
  135. package/images/svf-stat.pdf +0 -0
  136. package/include/CFL/CFLAlias.h +31 -0
  137. package/include/CFL/CFLGramGraphChecker.h +3 -0
  138. package/include/CFL/CFLGraphBuilder.h +22 -0
  139. package/include/CFL/CFLSolver.h +6 -1
  140. package/include/CFL/CFLStat.h +88 -0
  141. package/include/CFL/CFLVF.h +77 -0
  142. package/include/CFL/VFG.txt +6 -0
  143. package/include/Util/Options.h +1 -0
  144. package/lib/CFL/CFLAlias.cpp +20 -0
  145. package/lib/CFL/CFLGraphBuilder.cpp +71 -0
  146. package/lib/CFL/CFLStat.cpp +269 -0
  147. package/lib/CFL/CFLVF.cpp +89 -0
  148. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  149. package/lib/Util/Options.cpp +6 -0
  150. package/package.json +1 -1
  151. 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',['numOfMSSAPhi',['../classSVF_1_1SVFGStat.html#a9fc87025af3b7e54442e78f46ebe0360',1,'SVF::SVFGStat::numOfMSSAPhi()'],['../classSVF_1_1MemSSAStat.html#a4b598cb1d06c4c0963787036862b1c3d',1,'SVF::MemSSAStat::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
@@ -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_*/
@@ -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_*/
@@ -0,0 +1,6 @@
1
+ Start:
2
+ A
3
+ Terminal:
4
+ a Call Ret
5
+ Productions:
6
+ A -> A A | a | Call_i A Ret_i | epsilon;
@@ -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;
@@ -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