svf-tools 1.0.440 → 1.0.443

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 (528) hide show
  1. package/.gitignore +1 -0
  2. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +1 -1
  9. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
  12. package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/Annotator_8h_source.html +1 -1
  14. package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +1 -1
  15. package/SVF-doxygen/html/html/BDDExpr_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/BitVector_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/BitVector_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
  19. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +1 -1
  20. package/SVF-doxygen/html/html/CFGNormalizer_8cpp.html +86 -0
  21. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +104 -0
  22. package/SVF-doxygen/html/html/CFGNormalizer_8h.html +95 -0
  23. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +95 -0
  24. package/SVF-doxygen/html/html/CFLAlias_8h.html +100 -0
  25. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +136 -0
  26. package/SVF-doxygen/html/html/CFLGrammar_8cpp.html +81 -0
  27. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +90 -0
  28. package/SVF-doxygen/html/html/CFLGrammar_8h.html +97 -0
  29. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +114 -0
  30. package/SVF-doxygen/html/html/CFLGraph_8cpp.html +96 -0
  31. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +123 -0
  32. package/SVF-doxygen/html/html/CFLGraph_8h.html +124 -0
  33. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +114 -0
  34. package/SVF-doxygen/html/html/CFLSolver_8cpp.html +80 -0
  35. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +107 -0
  36. package/SVF-doxygen/html/html/CFLSolver_8h.html +6 -5
  37. package/SVF-doxygen/html/html/CFLSolver_8h_source.html +27 -33
  38. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/CHG_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
  42. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -1
  43. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
  44. package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
  45. package/SVF-doxygen/html/html/CSC_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/Casting_8h_source.html +1 -1
  49. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  50. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +1 -1
  51. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +6 -6
  52. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  53. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  54. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  55. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +2 -2
  56. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  57. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +1 -1
  58. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
  59. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  60. package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
  61. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  63. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  64. package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
  65. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  66. package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
  68. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  69. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +2 -2
  70. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +1 -1
  71. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
  72. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  73. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +12 -9
  74. package/SVF-doxygen/html/html/ExeState_8h_source.html +22 -20
  75. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
  76. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  77. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
  78. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  79. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
  80. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  81. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  82. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  83. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  84. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
  85. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +1 -1
  86. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  87. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
  88. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  89. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +2 -2
  90. package/SVF-doxygen/html/html/GrammarBuilder_8cpp.html +94 -0
  91. package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +92 -0
  92. package/SVF-doxygen/html/html/GrammarBuilder_8h.html +96 -0
  93. package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +87 -0
  94. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  95. package/SVF-doxygen/html/html/Graph2Json_8h_source.html +1 -1
  96. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
  97. package/SVF-doxygen/html/html/GraphReachSolver_8h.html +96 -0
  98. package/SVF-doxygen/html/html/GraphReachSolver_8h_source.html +113 -0
  99. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
  100. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  101. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +1 -1
  102. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
  103. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  104. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  105. package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
  106. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  107. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  108. package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
  109. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
  110. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +1 -1
  111. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  112. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  113. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  114. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
  115. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
  116. package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
  117. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  118. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
  119. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  120. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  121. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
  122. package/SVF-doxygen/html/html/MHP_8h_source.html +1 -1
  123. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  124. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  125. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
  126. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  127. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
  128. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
  129. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  130. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  131. package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
  132. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  133. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  134. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  135. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  136. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -1
  137. package/SVF-doxygen/html/html/MemSSA_8h_source.html +1 -1
  138. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +1 -1
  139. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  140. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +1 -1
  141. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  142. package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
  143. package/SVF-doxygen/html/html/Options_8cpp_source.html +7 -2
  144. package/SVF-doxygen/html/html/Options_8h_source.html +7 -2
  145. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  146. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
  147. package/SVF-doxygen/html/html/PCG_8cpp_source.html +1 -1
  148. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  149. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
  150. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
  151. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +1 -1
  152. package/SVF-doxygen/html/html/PTAStat_8h_source.html +1 -1
  153. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  154. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +1 -1
  155. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +1 -1
  156. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +1 -1
  157. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  158. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  159. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  160. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
  161. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  162. package/SVF-doxygen/html/html/PointsTo_8h_source.html +1 -1
  163. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
  164. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
  165. package/SVF-doxygen/html/html/SCC_8h_source.html +1 -1
  166. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +2 -2
  167. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
  168. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +1 -1
  169. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  170. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  171. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
  172. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  173. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +1 -1
  174. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
  175. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
  176. package/SVF-doxygen/html/html/SVFG_8h_source.html +2 -2
  177. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -1
  178. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
  179. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +1 -1
  180. package/SVF-doxygen/html/html/SVFIR_8h_source.html +1 -1
  181. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  182. package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
  183. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  184. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
  185. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
  186. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +1 -1
  187. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  188. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +1 -1
  189. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  190. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
  191. package/SVF-doxygen/html/html/SaberCheckerAPI_8cpp_source.html +1 -1
  192. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  193. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  194. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
  195. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +4 -4
  196. package/SVF-doxygen/html/html/SrcSnkDDA_8h.html +3 -3
  197. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +61 -61
  198. package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +1 -1
  199. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  200. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  201. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +1 -1
  202. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  203. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  204. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +1 -1
  205. package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
  206. package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
  207. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +1 -1
  208. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
  209. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  210. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
  211. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  212. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +1 -1
  213. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
  214. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
  215. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +1 -1
  216. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +1 -1
  217. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  218. package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
  219. package/SVF-doxygen/html/html/VFG_8h_source.html +2 -2
  220. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  221. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
  222. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +1 -1
  223. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +1 -1
  224. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  225. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  226. package/SVF-doxygen/html/html/WPASolver_8h_source.html +1 -1
  227. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  228. package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
  229. package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
  230. package/SVF-doxygen/html/html/annotated.html +302 -288
  231. package/SVF-doxygen/html/html/cfl_8cpp.html +171 -0
  232. package/SVF-doxygen/html/html/cfl_8cpp_source.html +95 -0
  233. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +51 -51
  234. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +3 -3
  235. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +39 -39
  236. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
  237. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +56 -56
  238. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +3 -3
  239. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +55 -55
  240. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +3 -3
  241. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +51 -51
  242. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +3 -3
  243. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +52 -52
  244. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +3 -3
  245. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +59 -59
  246. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +3 -3
  247. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +53 -53
  248. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +3 -3
  249. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +33 -33
  250. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
  251. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer-members.html +90 -0
  252. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +458 -0
  253. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +216 -0
  254. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +801 -0
  255. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.png +0 -0
  256. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge-members.html +96 -0
  257. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +216 -0
  258. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.png +0 -0
  259. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar-members.html +110 -0
  260. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.html +591 -0
  261. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.png +0 -0
  262. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph-members.html +122 -0
  263. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +756 -0
  264. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.png +0 -0
  265. package/SVF-doxygen/html/html/classSVF_1_1CFLNode-members.html +118 -0
  266. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +257 -0
  267. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.png +0 -0
  268. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver-members.html +17 -28
  269. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +181 -548
  270. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +36 -36
  271. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +3 -3
  272. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  273. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  274. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +57 -57
  275. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
  276. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +55 -55
  277. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +64 -64
  278. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.png +0 -0
  279. package/SVF-doxygen/html/html/classSVF_1_1ExeState-members.html +16 -14
  280. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +153 -67
  281. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +55 -55
  282. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +3 -3
  283. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +57 -57
  284. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +66 -66
  285. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.png +0 -0
  286. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +48 -48
  287. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  288. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +47 -47
  289. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
  290. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +59 -59
  291. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +3 -3
  292. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +8 -24
  293. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
  294. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +10 -9
  295. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.png +0 -0
  296. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +21 -20
  297. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  298. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase-members.html +93 -0
  299. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +399 -0
  300. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.png +0 -0
  301. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder-members.html +85 -0
  302. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +226 -0
  303. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver-members.html +106 -0
  304. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.html +937 -0
  305. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.png +0 -0
  306. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +55 -55
  307. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +81 -81
  308. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.png +0 -0
  309. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +80 -75
  310. package/SVF-doxygen/html/html/classSVF_1_1Options.html +130 -0
  311. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +25 -25
  312. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +17 -16
  313. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
  314. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +51 -51
  315. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +207 -207
  316. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.png +0 -0
  317. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver.html +0 -12
  318. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +42 -42
  319. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +3 -3
  320. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +45 -45
  321. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
  322. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +61 -61
  323. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +5 -5
  324. package/SVF-doxygen/html/html/classes.html +103 -101
  325. package/SVF-doxygen/html/html/cuddInt_8c.html +6 -6
  326. package/SVF-doxygen/html/html/cuddInt_8c_source.html +2 -2
  327. package/SVF-doxygen/html/html/cudd_8h.html +4 -4
  328. package/SVF-doxygen/html/html/dda_8cpp.html +2 -46
  329. package/SVF-doxygen/html/html/dda_8cpp_source.html +4 -5
  330. package/SVF-doxygen/html/html/dir_1870ebf480d659cc38d2dd7ac3aa8993.html +2 -0
  331. package/SVF-doxygen/html/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html +2 -0
  332. package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
  333. package/SVF-doxygen/html/html/dir_97aefd0d527b934f1d99a682da8fe6a9.html +2 -0
  334. package/SVF-doxygen/html/html/dir_98f9a352f241e0e917d4efaa4086f6e8.html +89 -0
  335. package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +91 -0
  336. package/SVF-doxygen/html/html/dir_d44c64559bbebec7f509842c48db8b23.html +2 -0
  337. package/SVF-doxygen/html/html/dir_e6cca4e14eddbb730e0cbe3cab632ce5.html +83 -0
  338. package/SVF-doxygen/html/html/dir_fa02919a30fec2d2c2d591b4d920d648.html +2 -0
  339. package/SVF-doxygen/html/html/files.html +268 -252
  340. package/SVF-doxygen/html/html/functions.html +2 -1
  341. package/SVF-doxygen/html/html/functions_0x7e.html +18 -0
  342. package/SVF-doxygen/html/html/functions_a.html +16 -14
  343. package/SVF-doxygen/html/html/functions_b.html +16 -5
  344. package/SVF-doxygen/html/html/functions_c.html +69 -26
  345. package/SVF-doxygen/html/html/functions_d.html +3 -1
  346. package/SVF-doxygen/html/html/functions_e.html +22 -4
  347. package/SVF-doxygen/html/html/functions_eval.html +0 -6
  348. package/SVF-doxygen/html/html/functions_eval_c.html +9 -0
  349. package/SVF-doxygen/html/html/functions_eval_f.html +0 -3
  350. package/SVF-doxygen/html/html/functions_f.html +31 -24
  351. package/SVF-doxygen/html/html/functions_func.html +18 -10
  352. package/SVF-doxygen/html/html/functions_func_0x7e.html +18 -0
  353. package/SVF-doxygen/html/html/functions_func_b.html +19 -8
  354. package/SVF-doxygen/html/html/functions_func_c.html +42 -18
  355. package/SVF-doxygen/html/html/functions_func_d.html +4 -2
  356. package/SVF-doxygen/html/html/functions_func_e.html +13 -1
  357. package/SVF-doxygen/html/html/functions_func_f.html +6 -3
  358. package/SVF-doxygen/html/html/functions_func_g.html +56 -10
  359. package/SVF-doxygen/html/html/functions_func_h.html +12 -2
  360. package/SVF-doxygen/html/html/functions_func_i.html +19 -9
  361. package/SVF-doxygen/html/html/functions_func_l.html +4 -1
  362. package/SVF-doxygen/html/html/functions_func_n.html +7 -1
  363. package/SVF-doxygen/html/html/functions_func_p.html +8 -4
  364. package/SVF-doxygen/html/html/functions_func_s.html +20 -6
  365. package/SVF-doxygen/html/html/functions_func_v.html +3 -2
  366. package/SVF-doxygen/html/html/functions_g.html +86 -21
  367. package/SVF-doxygen/html/html/functions_h.html +15 -5
  368. package/SVF-doxygen/html/html/functions_i.html +27 -12
  369. package/SVF-doxygen/html/html/functions_l.html +15 -9
  370. package/SVF-doxygen/html/html/functions_n.html +18 -3
  371. package/SVF-doxygen/html/html/functions_o.html +3 -3
  372. package/SVF-doxygen/html/html/functions_p.html +22 -13
  373. package/SVF-doxygen/html/html/functions_r.html +10 -5
  374. package/SVF-doxygen/html/html/functions_s.html +51 -17
  375. package/SVF-doxygen/html/html/functions_t.html +6 -0
  376. package/SVF-doxygen/html/html/functions_type_c.html +5 -1
  377. package/SVF-doxygen/html/html/functions_type_g.html +6 -3
  378. package/SVF-doxygen/html/html/functions_type_i.html +4 -2
  379. package/SVF-doxygen/html/html/functions_type_l.html +1 -1
  380. package/SVF-doxygen/html/html/functions_type_n.html +6 -3
  381. package/SVF-doxygen/html/html/functions_type_p.html +9 -0
  382. package/SVF-doxygen/html/html/functions_type_s.html +6 -0
  383. package/SVF-doxygen/html/html/functions_type_w.html +3 -1
  384. package/SVF-doxygen/html/html/functions_v.html +2 -1
  385. package/SVF-doxygen/html/html/functions_vars.html +2 -1
  386. package/SVF-doxygen/html/html/functions_vars_c.html +6 -0
  387. package/SVF-doxygen/html/html/functions_vars_e.html +6 -0
  388. package/SVF-doxygen/html/html/functions_vars_f.html +9 -0
  389. package/SVF-doxygen/html/html/functions_vars_g.html +17 -1
  390. package/SVF-doxygen/html/html/functions_vars_i.html +3 -0
  391. package/SVF-doxygen/html/html/functions_vars_l.html +3 -0
  392. package/SVF-doxygen/html/html/functions_vars_n.html +6 -0
  393. package/SVF-doxygen/html/html/functions_vars_r.html +3 -0
  394. package/SVF-doxygen/html/html/functions_vars_s.html +16 -0
  395. package/SVF-doxygen/html/html/functions_vars_t.html +6 -0
  396. package/SVF-doxygen/html/html/functions_vars_w.html +3 -1
  397. package/SVF-doxygen/html/html/functions_w.html +15 -1
  398. package/SVF-doxygen/html/html/globals_func_i.html +3 -10
  399. package/SVF-doxygen/html/html/globals_func_m.html +12 -11
  400. package/SVF-doxygen/html/html/globals_func_s.html +1 -0
  401. package/SVF-doxygen/html/html/globals_i.html +3 -10
  402. package/SVF-doxygen/html/html/globals_m.html +14 -13
  403. package/SVF-doxygen/html/html/globals_s.html +8 -7
  404. package/SVF-doxygen/html/html/hierarchy.html +433 -417
  405. package/SVF-doxygen/html/html/mta_8cpp.html +2 -46
  406. package/SVF-doxygen/html/html/mta_8cpp_source.html +3 -4
  407. package/SVF-doxygen/html/html/namespaceSVF.html +83 -6
  408. package/SVF-doxygen/html/html/namespacellvm.html +9 -0
  409. package/SVF-doxygen/html/html/namespacemembers_c.html +1 -1
  410. package/SVF-doxygen/html/html/namespacemembers_g.html +11 -2
  411. package/SVF-doxygen/html/html/namespacemembers_type.html +10 -1
  412. package/SVF-doxygen/html/html/saber_8cpp.html +2 -46
  413. package/SVF-doxygen/html/html/saber_8cpp_source.html +4 -5
  414. package/SVF-doxygen/html/html/search/all_0.js +1 -1
  415. package/SVF-doxygen/html/html/search/all_1.js +4 -4
  416. package/SVF-doxygen/html/html/search/all_10.js +10 -8
  417. package/SVF-doxygen/html/html/search/all_12.js +3 -2
  418. package/SVF-doxygen/html/html/search/all_13.js +25 -16
  419. package/SVF-doxygen/html/html/search/all_14.js +6 -4
  420. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  421. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  422. package/SVF-doxygen/html/html/search/all_1b.js +6 -0
  423. package/SVF-doxygen/html/html/search/all_2.js +6 -4
  424. package/SVF-doxygen/html/html/search/all_3.js +27 -4
  425. package/SVF-doxygen/html/html/search/all_4.js +3 -2
  426. package/SVF-doxygen/html/html/search/all_5.js +6 -0
  427. package/SVF-doxygen/html/html/search/all_6.js +7 -4
  428. package/SVF-doxygen/html/html/search/all_7.js +40 -13
  429. package/SVF-doxygen/html/html/search/all_8.js +4 -1
  430. package/SVF-doxygen/html/html/search/all_9.js +8 -6
  431. package/SVF-doxygen/html/html/search/all_c.js +6 -4
  432. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  433. package/SVF-doxygen/html/html/search/all_e.js +8 -4
  434. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  435. package/SVF-doxygen/html/html/search/classes_2.js +7 -0
  436. package/SVF-doxygen/html/html/search/classes_3.js +1 -0
  437. package/SVF-doxygen/html/html/search/classes_5.js +1 -0
  438. package/SVF-doxygen/html/html/search/classes_6.js +7 -0
  439. package/SVF-doxygen/html/html/search/enumvalues_0.js +0 -2
  440. package/SVF-doxygen/html/html/search/enumvalues_2.js +3 -0
  441. package/SVF-doxygen/html/html/search/enumvalues_5.js +0 -1
  442. package/SVF-doxygen/html/html/search/files_2.js +11 -1
  443. package/SVF-doxygen/html/html/search/files_6.js +4 -1
  444. package/SVF-doxygen/html/html/search/functions_0.js +4 -2
  445. package/SVF-doxygen/html/html/search/functions_1.js +6 -4
  446. package/SVF-doxygen/html/html/search/functions_10.js +8 -4
  447. package/SVF-doxygen/html/html/search/functions_13.js +1 -1
  448. package/SVF-doxygen/html/html/search/functions_16.js +6 -0
  449. package/SVF-doxygen/html/html/search/functions_2.js +8 -0
  450. package/SVF-doxygen/html/html/search/functions_3.js +2 -2
  451. package/SVF-doxygen/html/html/search/functions_4.js +4 -0
  452. package/SVF-doxygen/html/html/search/functions_5.js +3 -3
  453. package/SVF-doxygen/html/html/search/functions_6.js +22 -10
  454. package/SVF-doxygen/html/html/search/functions_7.js +4 -1
  455. package/SVF-doxygen/html/html/search/functions_8.js +5 -4
  456. package/SVF-doxygen/html/html/search/functions_a.js +1 -0
  457. package/SVF-doxygen/html/html/search/functions_b.js +1 -1
  458. package/SVF-doxygen/html/html/search/functions_c.js +2 -0
  459. package/SVF-doxygen/html/html/search/functions_e.js +2 -2
  460. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -0
  461. package/SVF-doxygen/html/html/search/typedefs_15.js +1 -1
  462. package/SVF-doxygen/html/html/search/typedefs_2.js +3 -2
  463. package/SVF-doxygen/html/html/search/typedefs_6.js +6 -3
  464. package/SVF-doxygen/html/html/search/typedefs_8.js +2 -2
  465. package/SVF-doxygen/html/html/search/typedefs_b.js +1 -1
  466. package/SVF-doxygen/html/html/search/typedefs_d.js +3 -3
  467. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -0
  468. package/SVF-doxygen/html/html/search/variables_0.js +1 -1
  469. package/SVF-doxygen/html/html/search/variables_12.js +1 -0
  470. package/SVF-doxygen/html/html/search/variables_13.js +5 -0
  471. package/SVF-doxygen/html/html/search/variables_14.js +5 -3
  472. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  473. package/SVF-doxygen/html/html/search/variables_3.js +2 -0
  474. package/SVF-doxygen/html/html/search/variables_5.js +3 -1
  475. package/SVF-doxygen/html/html/search/variables_6.js +3 -0
  476. package/SVF-doxygen/html/html/search/variables_7.js +5 -1
  477. package/SVF-doxygen/html/html/search/variables_9.js +1 -0
  478. package/SVF-doxygen/html/html/search/variables_c.js +1 -0
  479. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  480. package/SVF-doxygen/html/html/search/variables_e.js +2 -0
  481. package/SVF-doxygen/html/html/st_8c.html +4 -4
  482. package/SVF-doxygen/html/html/st_8c_source.html +2 -2
  483. package/SVF-doxygen/html/html/st_8h.html +4 -4
  484. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4-members.html +87 -0
  485. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +381 -0
  486. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.png +0 -0
  487. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +100 -0
  488. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.png +0 -0
  489. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4-members.html +81 -0
  490. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +122 -0
  491. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.png +0 -0
  492. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +96 -0
  493. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.png +0 -0
  494. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +5 -5
  495. package/SVF-doxygen/html/html/svf-ex_8cpp.html +10 -54
  496. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +8 -9
  497. package/SVF-doxygen/html/html/tools_2CFL_2CMakeLists_8txt.html +102 -0
  498. package/SVF-doxygen/html/html/wpa_8cpp.html +2 -46
  499. package/SVF-doxygen/html/html/wpa_8cpp_source.html +3 -4
  500. package/include/CFL/CFGNormalizer.h +70 -0
  501. package/include/CFL/CFLAlias.h +124 -0
  502. package/include/CFL/CFLGrammar.h +127 -0
  503. package/include/CFL/CFLSolver.h +94 -0
  504. package/include/CFL/GrammarBuilder.h +65 -0
  505. package/include/Graphs/CFLGraph.h +175 -0
  506. package/include/Graphs/IRGraph.h +1 -1
  507. package/include/MemoryModel/PointerAnalysis.h +3 -3
  508. package/include/SABER/SrcSnkDDA.h +3 -2
  509. package/include/Util/ExeState.h +6 -1
  510. package/include/Util/GraphReachSolver.h +186 -0
  511. package/include/Util/Options.h +6 -0
  512. package/lib/CFL/CFGNormalizer.cpp +329 -0
  513. package/lib/CFL/CFLGrammar.cpp +101 -0
  514. package/lib/CFL/CFLSolver.cpp +106 -0
  515. package/lib/CFL/GrammarBuilder.cpp +155 -0
  516. package/lib/CMakeLists.txt +1 -0
  517. package/lib/Graphs/CFLGraph.cpp +225 -0
  518. package/lib/Util/ExeState.cpp +20 -36
  519. package/lib/Util/Options.cpp +31 -0
  520. package/package.json +1 -1
  521. package/tools/CFL/CMakeLists.txt +12 -0
  522. package/tools/CFL/cfl.cpp +80 -0
  523. package/tools/CMakeLists.txt +1 -0
  524. package/tools/DDA/dda.cpp +0 -3
  525. package/tools/Example/svf-ex.cpp +0 -3
  526. package/tools/MTA/mta.cpp +0 -4
  527. package/tools/SABER/saber.cpp +0 -3
  528. package/tools/WPA/wpa.cpp +0 -4
@@ -0,0 +1,225 @@
1
+ //===----- CFLGraph.cpp -- Graph for context-free language reachability analysis --//
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
+ /*
25
+ * CFLGraph.cpp
26
+ *
27
+ * Created on: March 5, 2022
28
+ * Author: Yulei Sui
29
+ */
30
+
31
+ #include "Util/Options.h"
32
+ #include "Graphs/CFLGraph.h"
33
+ #include "Util/SVFUtil.h"
34
+
35
+ using namespace SVF;
36
+
37
+ //// Build graph from file
38
+ void CFLGraph::build(std::string filename){
39
+
40
+ }
41
+
42
+ void CFLGraph::addCFLNode(NodeID id, CFLNode* node){
43
+ addGNode(id, node);
44
+ }
45
+
46
+ const CFLEdge* CFLGraph::addCFLEdge(CFLNode* src, CFLNode* dst, CFLEdge::GEdgeFlag label){
47
+ CFLEdge* edge = new CFLEdge(src,dst,label);
48
+ if(cflEdgeSet.insert(edge).second){
49
+ src->addOutgoingEdge(edge);
50
+ dst->addIncomingEdge(edge);
51
+ return edge;
52
+ }
53
+ else
54
+ return nullptr;
55
+ }
56
+
57
+ const CFLEdge* CFLGraph::hasEdge(CFLNode* src, CFLNode* dst, CFLEdge::GEdgeFlag label){
58
+ CFLEdge edge(src,dst,label);
59
+ auto it = cflEdgeSet.find(&edge);
60
+ if(it !=cflEdgeSet.end())
61
+ return *it;
62
+ else
63
+ return nullptr;
64
+ }
65
+
66
+ void CFLGraph::dump(const std::string& filename)
67
+ {
68
+ GraphPrinter::WriteGraphToFile(SVFUtil::outs(), filename, this);
69
+ }
70
+
71
+ void CFLGraph::view()
72
+ {
73
+ llvm::ViewGraph(this, "CFL Graph");
74
+ }
75
+
76
+ void CFLGraph::buildFromDot(std::string fileName)
77
+ {
78
+ std::cout << "Building CFL Graph from dot file: " << fileName << "..\n";
79
+ std::string lineString;
80
+ std::ifstream inputFile(fileName);
81
+
82
+ std::regex reg("Node(\\w+)\\s*->\\s*Node(\\w+)\\s*\\[.*label=(.*)\\]");
83
+
84
+ std::cout << std::boolalpha;
85
+ u32_t lineNum = 0 ;
86
+
87
+ while (getline(inputFile, lineString))
88
+ {
89
+ lineNum += 1;
90
+ std::smatch matches;
91
+ if (std::regex_search(lineString, matches, reg))
92
+ {
93
+ CFLNode *src, *dst;
94
+ if (hasGNode(std::stoul(matches.str(1), nullptr, 16))==false) {
95
+ src = new CFLNode(std::stoul(matches.str(1), nullptr, 16));
96
+ addCFLNode(src->getId(), src);
97
+ } else {
98
+ src = getGNode(std::stoul(matches.str(1), nullptr, 16));
99
+ }
100
+ if (hasGNode(std::stoul(matches.str(2), nullptr, 16))==false){
101
+ dst = new CFLNode(std::stoul(matches.str(2), nullptr, 16));
102
+ addCFLNode(dst->getId(), dst);
103
+ }else{
104
+ dst = getGNode(std::stoul(matches.str(2), nullptr, 16));
105
+ }
106
+ if (externMap == false){
107
+ if (label2SymMap.find(matches.str(3)) != label2SymMap.end()) {
108
+ addCFLEdge(src, dst, label2SymMap[matches.str(3)]);
109
+ }
110
+ else {
111
+ label2SymMap.insert({matches.str(3), current++});
112
+ addCFLEdge(src, dst, label2SymMap[matches.str(3)]);
113
+ }
114
+ }
115
+ else {
116
+ if (label2SymMap.find(matches.str(3)) != label2SymMap.end()) {
117
+ addCFLEdge(src, dst, label2SymMap[matches.str(3)]);
118
+ }
119
+ else {
120
+ if(Options::FlexSymMap == true){
121
+ label2SymMap.insert({matches.str(3), current++});
122
+ addCFLEdge(src, dst, label2SymMap[matches.str(3)]);
123
+ }
124
+ else {
125
+ std::string msg = "In line " + std::to_string(lineNum) + " sym can not find in grammar, please correct the input dot or set --flexsymmap.";
126
+ SVFUtil::errMsg(msg);
127
+ std::cout << msg;
128
+ abort();
129
+ }
130
+ }
131
+ }
132
+ }
133
+ }
134
+ inputFile.close();
135
+ }
136
+
137
+ void CFLGraph::setMap(Map<std::string, Symbol>* terminals, Map<std::string, Symbol>* nonterminals)
138
+ {
139
+ externMap = true;
140
+ for(auto pairV : *terminals){
141
+ if(label2SymMap.find(pairV.first) == label2SymMap.end()){
142
+ label2SymMap.insert(pairV);
143
+ }
144
+ }
145
+
146
+ for(auto pairV : *nonterminals){
147
+ if(label2SymMap.find(pairV.first) == label2SymMap.end()){
148
+ label2SymMap.insert(pairV);
149
+ }
150
+ }
151
+ current = label2SymMap.size();
152
+ }
153
+
154
+
155
+
156
+ namespace llvm
157
+ {
158
+ /*!
159
+ * Write value flow graph into dot file for debugging
160
+ */
161
+ template<>
162
+ struct DOTGraphTraits<CFLGraph*> : public DefaultDOTGraphTraits
163
+ {
164
+
165
+ typedef CFLNode NodeType;
166
+
167
+ DOTGraphTraits(bool isSimple = false) : DefaultDOTGraphTraits(isSimple)
168
+ {
169
+ }
170
+
171
+ /// Return name of the graph
172
+ static std::string getGraphName(CFLGraph*)
173
+ {
174
+ return "CFL Reachability Graph";
175
+ }
176
+ /// Return function name;
177
+ static std::string getNodeLabel(CFLNode *node, CFLGraph*)
178
+ {
179
+ std::string str;
180
+ raw_string_ostream rawstr(str);
181
+ rawstr << "Node ID: " << node->getId() << " ";
182
+ return rawstr.str();
183
+ }
184
+
185
+ static std::string getNodeAttributes(CFLNode *node, CFLGraph*)
186
+ {
187
+ return "shape=box";
188
+ }
189
+
190
+ template<class EdgeIter>
191
+ static std::string getEdgeAttributes(CFLNode*, EdgeIter EI, CFLGraph* graph)
192
+ {
193
+ CFLEdge* edge = *(EI.getCurrent());
194
+ assert(edge && "No edge found!!");
195
+ std::string str;
196
+ raw_string_ostream rawstr(str);
197
+ std::string key = "";
198
+ for (auto &i : graph->label2SymMap)
199
+ {
200
+ if (i.second == edge->getEdgeKind())
201
+ {
202
+ key = i.first;
203
+ }
204
+ }
205
+ rawstr << "label=" << '"' <<key << '"';
206
+ if( graph->label2SymMap[key] == graph->startSymbol){
207
+ rawstr << ',' << "color=red";
208
+ }
209
+
210
+ return rawstr.str();
211
+ }
212
+
213
+ template<class EdgeIter>
214
+ static std::string getEdgeSourceLabel(NodeType*, EdgeIter EI)
215
+ {
216
+ CFLEdge* edge = *(EI.getCurrent());
217
+ assert(edge && "No edge found!!");
218
+ std::string str;
219
+ raw_string_ostream rawstr(str);
220
+ rawstr << "Edge label: " << edge->getEdgeKind() << " ";
221
+ return rawstr.str();
222
+ }
223
+ };
224
+
225
+ }
@@ -147,30 +147,8 @@ ExeState &ExeState::operator=(const ExeState &rhs) {
147
147
  * @return
148
148
  */
149
149
  bool ExeState::operator==(const ExeState &rhs) const {
150
- // return false if path constraint is not equivalent
151
- if (!eq(pathConstraint, rhs.getPathConstraint()))
152
- return false;
153
- if(varToVal.size() != rhs.getVarToVal().size() || locToVal.size() != rhs.getLocToVal().size())
154
- return false;
155
- for (const auto &item: varToVal) {
156
- auto it = rhs.getVarToVal().find(item.first);
157
- // return false if SVFVar not exists in rhs
158
- if (it == rhs.getVarToVal().end())
159
- return false;
160
- // return false if Z3Expr is not equivalent
161
- if (!eq(item.second, it->second))
162
- return false;
163
- }
164
- for (const auto &item: locToVal) {
165
- auto it = rhs.getLocToVal().find(item.first);
166
- // return false if location not exists in rhs
167
- if (it == rhs.getLocToVal().end())
168
- return false;
169
- // return false if Z3Expr is not equivalent
170
- if (!eq(item.second, it->second))
171
- return false;
172
- }
173
- return true;
150
+ return eq(pathConstraint, rhs.getPathConstraint()) && eqVarToValMap(varToVal, rhs.getVarToVal()) &&
151
+ eqVarToValMap(locToVal, rhs.getLocToVal());
174
152
  }
175
153
 
176
154
  /*!
@@ -182,21 +160,28 @@ bool ExeState::operator<(const ExeState &rhs) const {
182
160
  // judge from path constraint
183
161
  if (!eq(pathConstraint, rhs.getPathConstraint()))
184
162
  return pathConstraint.id() < rhs.getPathConstraint().id();
185
- if(varToVal.size() < rhs.getVarToVal().size() || locToVal.size() < rhs.getLocToVal().size())
163
+ if (lessThanVarToValMap(varToVal, rhs.getVarToVal()) || lessThanVarToValMap(locToVal, rhs.getLocToVal()))
186
164
  return true;
187
- for (const auto &item: varToVal) {
188
- auto it = rhs.getVarToVal().find(item.first);
189
- // lhs > rhs if SVFVar not exists in rhs
190
- if (it == rhs.getVarToVal().end())
165
+ return false;
166
+ }
167
+
168
+ bool ExeState::eqVarToValMap(const VarToValMap &lhs, const VarToValMap &rhs) const {
169
+ if(lhs.size() != rhs.size()) return false;
170
+ for (const auto &item: lhs) {
171
+ auto it = rhs.find(item.first);
172
+ // return false if SVFVar not exists in rhs or z3Expr not equal
173
+ if (it == rhs.end() || !eq(item.second, it->second))
191
174
  return false;
192
- // judge from expr id
193
- if (!eq(item.second, it->second))
194
- return item.second.id() < it->second.id();
195
175
  }
196
- for (const auto &item: locToVal) {
197
- auto it = rhs.getLocToVal().find(item.first);
176
+ return true;
177
+ }
178
+
179
+ bool ExeState::lessThanVarToValMap(const VarToValMap &lhs, const VarToValMap &rhs) const {
180
+ if(lhs.size() != rhs.size()) return lhs.size() < rhs.size();
181
+ for (const auto &item: lhs) {
182
+ auto it = rhs.find(item.first);
198
183
  // lhs > rhs if SVFVar not exists in rhs
199
- if (it == rhs.getLocToVal().end())
184
+ if (it == rhs.end())
200
185
  return false;
201
186
  // judge from expr id
202
187
  if (!eq(item.second, it->second))
@@ -204,7 +189,6 @@ bool ExeState::operator<(const ExeState &rhs) const {
204
189
  }
205
190
  return false;
206
191
  }
207
-
208
192
  /*!
209
193
  * Store value to location
210
194
  * @param loc location, e.g., int_val(0x7f..01)
@@ -797,4 +797,35 @@ namespace SVF
797
797
  llvm::cl::init(false),
798
798
  llvm::cl::desc("Show hidden nodes on DOT Graphs (e.g., isolated node on a graph)")
799
799
  );
800
+
801
+ const llvm::cl::opt<std::string> Options::InputFilename(
802
+ llvm::cl::Positional,
803
+ llvm::cl::desc("<input bitcode>"),
804
+ llvm::cl::init("-")
805
+ );
806
+
807
+ const llvm::cl::opt<std::string> Options::GrammarFilename(
808
+ llvm::cl::Positional,
809
+ llvm::cl::desc("<Grammar textfile>"),
810
+ llvm::cl::init("-")
811
+ );
812
+
813
+ const llvm::cl::opt<bool> Options::GraphIsFromDot(
814
+ "dot-graph",
815
+ llvm::cl::init(false),
816
+ llvm::cl::desc("Dot text as graph input")
817
+ );
818
+
819
+ const llvm::cl::opt<bool> Options::GrammarIsEBNF(
820
+ "ebnf-grammar",
821
+ llvm::cl::init(false),
822
+ llvm::cl::desc("EBNF grammar as grammar input")
823
+ );
824
+
825
+ const llvm::cl::opt<bool> Options::FlexSymMap(
826
+ "flex-symmap",
827
+ llvm::cl::init(false),
828
+ llvm::cl::desc("extend exist sym map while read graph from dot if sym not in map.")
829
+ );
830
+
800
831
  } // namespace SVF.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.440",
3
+ "version": "1.0.443",
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": {
@@ -0,0 +1,12 @@
1
+
2
+ if(DEFINED IN_SOURCE_BUILD)
3
+ set(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd)
4
+ add_llvm_tool( cfl cfl.cpp )
5
+ else()
6
+ add_executable( cfl cfl.cpp )
7
+
8
+ target_link_libraries( cfl Svf Cudd ${llvm_libs} )
9
+
10
+ set_target_properties( cfl PROPERTIES
11
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
12
+ endif()
@@ -0,0 +1,80 @@
1
+ //===- cfl.cpp -- A driver of CFL Reachability Analysis-------------------------------------//
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
+ // A driver of CFL Reachability Analysis
25
+ //
26
+ // Author: Yulei Sui,
27
+ */
28
+
29
+
30
+ #include "SVF-FE/LLVMUtil.h"
31
+ #include "CFL/CFLAlias.h"
32
+ #include "Util/Options.h"
33
+ #include "SVF-FE/SVFIRBuilder.h"
34
+ #include "CFL/CFGNormalizer.h"
35
+
36
+ using namespace llvm;
37
+ using namespace SVF;
38
+
39
+ static cl::opt<bool>
40
+ StandardCompileOpts("std-compile-opts",
41
+ cl::desc("Include the standard compile time optimizations"));
42
+
43
+ int main(int argc, char ** argv)
44
+ {
45
+ int arg_num = 0;
46
+ char **arg_value = new char*[argc];
47
+ std::vector<std::string> moduleNameVec;
48
+ SVFUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
49
+ cl::ParseCommandLineOptions(arg_num, arg_value,
50
+ "CFL Reachability Analysis\n");
51
+
52
+ if (Options::WriteAnder == "ir_annotator")
53
+ {
54
+ LLVMModuleSet::getLLVMModuleSet()->preProcessBCs(moduleNameVec);
55
+ }
56
+ if (Options::GraphIsFromDot == false){
57
+ SVFModule* svfModule = LLVMModuleSet::getLLVMModuleSet()->buildSVFModule(moduleNameVec);
58
+ svfModule->buildSymbolTableInfo();
59
+
60
+ /// Build Program Assignment Graph (SVFIR)
61
+ SVFIRBuilder builder;
62
+ SVFIR* svfir = builder.build(svfModule);
63
+ CFLAlias* cflaa = new CFLAlias(svfir);
64
+ cflaa->analyze();
65
+ delete cflaa;
66
+ }
67
+ else {
68
+ SVFIR* svfir = nullptr;
69
+ CFLAlias* cflaa = new CFLAlias(svfir);
70
+ cflaa->analyze();
71
+ delete cflaa;
72
+ }
73
+
74
+ SVFIR::releaseSVFIR();
75
+ SVF::LLVMModuleSet::releaseLLVMModuleSet();
76
+
77
+ return 0;
78
+
79
+ }
80
+
@@ -3,3 +3,4 @@ add_subdirectory(WPA)
3
3
  add_subdirectory(Example)
4
4
  add_subdirectory(DDA)
5
5
  add_subdirectory(MTA)
6
+ add_subdirectory(CFL)
package/tools/DDA/dda.cpp CHANGED
@@ -13,9 +13,6 @@
13
13
  using namespace llvm;
14
14
  using namespace SVF;
15
15
 
16
- static cl::opt<std::string> InputFilename(cl::Positional,
17
- cl::desc("<input bitcode>"), cl::init("-"));
18
-
19
16
  static cl::opt<bool>
20
17
  StandardCompileOpts("std-compile-opts",
21
18
  cl::desc("Include the standard compile time optimizations"));
@@ -36,9 +36,6 @@ using namespace llvm;
36
36
  using namespace std;
37
37
  using namespace SVF;
38
38
 
39
- static llvm::cl::opt<std::string> InputFilename(cl::Positional,
40
- llvm::cl::desc("<input bitcode>"), llvm::cl::init("-"));
41
-
42
39
  /*!
43
40
  * An example to query alias results of two LLVM values
44
41
  */
package/tools/MTA/mta.cpp CHANGED
@@ -6,10 +6,6 @@ using namespace llvm;
6
6
  using namespace std;
7
7
  using namespace SVF;
8
8
 
9
- static llvm::cl::opt<std::string> InputFilename(cl::Positional,
10
- llvm::cl::desc("<input bitcode>"), llvm::cl::init("-"));
11
-
12
-
13
9
  int main(int argc, char ** argv)
14
10
  {
15
11
 
@@ -35,9 +35,6 @@
35
35
  using namespace llvm;
36
36
  using namespace SVF;
37
37
 
38
- static llvm::cl::opt<std::string> InputFilename(cl::Positional,
39
- llvm::cl::desc("<input bitcode>"), llvm::cl::init("-"));
40
-
41
38
  static llvm::cl::opt<bool> LEAKCHECKER("leak", llvm::cl::init(false),
42
39
  llvm::cl::desc("Memory Leak Detection"));
43
40
 
package/tools/WPA/wpa.cpp CHANGED
@@ -34,10 +34,6 @@ using namespace llvm;
34
34
  using namespace std;
35
35
  using namespace SVF;
36
36
 
37
- static llvm::cl::opt<std::string> InputFilename(cl::Positional,
38
- llvm::cl::desc("<input bitcode>"), llvm::cl::init("-"));
39
-
40
-
41
37
  int main(int argc, char ** argv)
42
38
  {
43
39