svf-tools 1.0.633 → 1.0.635

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 (386) hide show
  1. package/CMakeLists.txt +111 -90
  2. package/SVF-doxygen/html/html/CFL_2CMakeLists_8txt.html +102 -0
  3. package/SVF-doxygen/html/html/CMakeLists_8txt.html +73 -0
  4. package/SVF-doxygen/html/html/DDA_2CMakeLists_8txt.html +102 -0
  5. package/SVF-doxygen/html/html/Example_2CMakeLists_8txt.html +102 -0
  6. package/SVF-doxygen/html/html/LockResultValidator_8cpp.html +2 -3
  7. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +6 -52
  8. package/SVF-doxygen/html/html/LockResultValidator_8h.html +2 -3
  9. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -26
  10. package/SVF-doxygen/html/html/MTAAnnotator_8cpp.html +3 -3
  11. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -57
  12. package/SVF-doxygen/html/html/MTAAnnotator_8h.html +5 -6
  13. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -22
  14. package/SVF-doxygen/html/html/MTAResultValidator_8cpp.html +2 -3
  15. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +12 -72
  16. package/SVF-doxygen/html/html/MTAResultValidator_8h.html +6 -6
  17. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +76 -114
  18. package/SVF-doxygen/html/html/MTA_2CMakeLists_8txt.html +102 -0
  19. package/SVF-doxygen/html/html/SABER_2CMakeLists_8txt.html +102 -0
  20. package/SVF-doxygen/html/html/WPA_2CMakeLists_8txt.html +102 -0
  21. package/SVF-doxygen/html/html/annotated.html +9 -468
  22. package/SVF-doxygen/html/html/cfl_8cpp.html +5 -10
  23. package/SVF-doxygen/html/html/cfl_8cpp_source.html +2 -12
  24. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +51 -119
  25. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator-members.html +2 -14
  26. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +14 -49
  27. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator-members.html +25 -43
  28. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +67 -187
  29. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.png +0 -0
  30. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator-members.html +20 -48
  31. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +345 -1317
  32. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator-members.html +8 -23
  33. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +137 -758
  34. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator_1_1AccessPair-members.html +3 -7
  35. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator_1_1AccessPair.html +37 -184
  36. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator-members.html +1 -13
  37. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +13 -48
  38. package/SVF-doxygen/html/html/classes.html +10 -123
  39. package/SVF-doxygen/html/html/dda_8cpp.html +172 -63
  40. package/SVF-doxygen/html/html/dda_8cpp_source.html +8 -20
  41. package/SVF-doxygen/html/html/dir_0c09191358c30c0f2d864382d285cb43.html +1 -1
  42. package/SVF-doxygen/html/html/files.html +19 -288
  43. package/SVF-doxygen/html/html/functions.html +322 -300
  44. package/SVF-doxygen/html/html/functions_func.html +171 -1020
  45. package/SVF-doxygen/html/html/functions_type.html +27 -17
  46. package/SVF-doxygen/html/html/functions_vars.html +151 -364
  47. package/SVF-doxygen/html/html/globals.html +53 -11
  48. package/SVF-doxygen/html/html/globals_func.html +22 -236
  49. package/SVF-doxygen/html/html/hierarchy.html +9 -543
  50. package/SVF-doxygen/html/html/menudata.js +44 -294
  51. package/SVF-doxygen/html/html/mta_8cpp.html +8 -16
  52. package/SVF-doxygen/html/html/mta_8cpp_source.html +4 -18
  53. package/SVF-doxygen/html/html/namespaceSVF.html +9 -6287
  54. package/SVF-doxygen/html/html/namespacemembers.html +3 -35
  55. package/SVF-doxygen/html/html/namespacemembers_type.html +3 -26
  56. package/SVF-doxygen/html/html/namespaces.html +2 -9
  57. package/SVF-doxygen/html/html/saber_8cpp.html +104 -53
  58. package/SVF-doxygen/html/html/saber_8cpp_source.html +5 -19
  59. package/SVF-doxygen/html/html/search/all_0.js +1 -131
  60. package/SVF-doxygen/html/html/search/all_1.js +4 -449
  61. package/SVF-doxygen/html/html/search/all_10.js +9 -310
  62. package/SVF-doxygen/html/html/search/all_11.js +1 -187
  63. package/SVF-doxygen/html/html/search/all_12.js +4 -474
  64. package/SVF-doxygen/html/html/search/all_2.js +17 -141
  65. package/SVF-doxygen/html/html/search/all_3.js +5 -592
  66. package/SVF-doxygen/html/html/search/all_4.js +3 -222
  67. package/SVF-doxygen/html/html/search/all_5.js +3 -141
  68. package/SVF-doxygen/html/html/search/all_6.js +12 -211
  69. package/SVF-doxygen/html/html/search/all_7.js +1 -923
  70. package/SVF-doxygen/html/html/search/all_8.js +17 -187
  71. package/SVF-doxygen/html/html/search/all_9.js +11 -553
  72. package/SVF-doxygen/html/html/search/all_a.js +17 -10
  73. package/SVF-doxygen/html/html/search/all_b.js +11 -21
  74. package/SVF-doxygen/html/html/search/all_c.js +5 -112
  75. package/SVF-doxygen/html/html/search/all_d.js +15 -190
  76. package/SVF-doxygen/html/html/search/all_e.js +7 -198
  77. package/SVF-doxygen/html/html/search/all_f.js +6 -122
  78. package/SVF-doxygen/html/html/search/classes_0.js +1 -25
  79. package/SVF-doxygen/html/html/search/classes_1.js +1 -7
  80. package/SVF-doxygen/html/html/search/classes_2.js +3 -69
  81. package/SVF-doxygen/html/html/search/classes_3.js +2 -32
  82. package/SVF-doxygen/html/html/search/files_0.js +2 -11
  83. package/SVF-doxygen/html/html/search/files_1.js +1 -5
  84. package/SVF-doxygen/html/html/search/files_2.js +2 -48
  85. package/SVF-doxygen/html/html/search/files_3.js +5 -14
  86. package/SVF-doxygen/html/html/search/files_4.js +2 -4
  87. package/SVF-doxygen/html/html/search/files_5.js +1 -13
  88. package/SVF-doxygen/html/html/search/functions_0.js +3 -339
  89. package/SVF-doxygen/html/html/search/functions_1.js +8 -73
  90. package/SVF-doxygen/html/html/search/functions_2.js +4 -228
  91. package/SVF-doxygen/html/html/search/functions_3.js +3 -69
  92. package/SVF-doxygen/html/html/search/functions_4.js +1 -50
  93. package/SVF-doxygen/html/html/search/functions_5.js +12 -49
  94. package/SVF-doxygen/html/html/search/functions_6.js +1 -766
  95. package/SVF-doxygen/html/html/search/functions_7.js +7 -143
  96. package/SVF-doxygen/html/html/search/functions_8.js +2 -393
  97. package/SVF-doxygen/html/html/search/functions_9.js +9 -4
  98. package/SVF-doxygen/html/html/search/functions_a.js +5 -1
  99. package/SVF-doxygen/html/html/search/functions_b.js +4 -20
  100. package/SVF-doxygen/html/html/search/functions_c.js +2 -72
  101. package/SVF-doxygen/html/html/search/functions_d.js +2 -31
  102. package/SVF-doxygen/html/html/search/functions_e.js +5 -58
  103. package/SVF-doxygen/html/html/search/functions_f.js +4 -132
  104. package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
  105. package/SVF-doxygen/html/html/search/searchdata.js +9 -21
  106. package/SVF-doxygen/html/html/search/typedefs_0.js +3 -15
  107. package/SVF-doxygen/html/html/search/typedefs_1.js +2 -24
  108. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -120
  109. package/SVF-doxygen/html/html/search/typedefs_3.js +1 -41
  110. package/SVF-doxygen/html/html/search/typedefs_4.js +3 -15
  111. package/SVF-doxygen/html/html/search/typedefs_5.js +2 -41
  112. package/SVF-doxygen/html/html/search/variables_0.js +1 -131
  113. package/SVF-doxygen/html/html/search/variables_1.js +2 -66
  114. package/SVF-doxygen/html/html/search/variables_2.js +4 -30
  115. package/SVF-doxygen/html/html/search/variables_3.js +2 -136
  116. package/SVF-doxygen/html/html/search/variables_4.js +8 -54
  117. package/SVF-doxygen/html/html/search/variables_5.js +6 -35
  118. package/SVF-doxygen/html/html/search/variables_6.js +3 -66
  119. package/SVF-doxygen/html/html/search/variables_7.js +10 -30
  120. package/SVF-doxygen/html/html/search/variables_8.js +7 -8
  121. package/SVF-doxygen/html/html/search/variables_9.js +2 -68
  122. package/SVF-doxygen/html/html/search/variables_a.js +4 -3
  123. package/SVF-doxygen/html/html/search/variables_b.js +2 -10
  124. package/SVF-doxygen/html/html/svf-ex_8cpp.html +31 -86
  125. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -64
  126. package/SVF-doxygen/html/html/wpa_8cpp.html +6 -12
  127. package/SVF-doxygen/html/html/wpa_8cpp_source.html +2 -14
  128. package/package.json +1 -1
  129. package/svf/CMakeLists.txt +26 -0
  130. package/{include → svf/include}/AbstractExecution/AbstractValue.h +0 -0
  131. package/{include → svf/include}/AbstractExecution/AddressValue.h +0 -0
  132. package/{include → svf/include}/AbstractExecution/ExeState.h +0 -0
  133. package/{include → svf/include}/AbstractExecution/IntervalExeState.h +0 -0
  134. package/{include → svf/include}/AbstractExecution/IntervalValue.h +0 -0
  135. package/{include → svf/include}/AbstractExecution/NumericLiteral.h +0 -0
  136. package/{include → svf/include}/AbstractExecution/RelExeState.h +0 -0
  137. package/{include → svf/include}/AbstractExecution/RelationSolver.h +0 -0
  138. package/{include → svf/include}/AbstractExecution/SVFIR2ItvExeState.h +0 -0
  139. package/{include → svf/include}/AbstractExecution/WTO.h +0 -0
  140. package/{include → svf/include}/CFL/CFGNormalizer.h +0 -0
  141. package/{include → svf/include}/CFL/CFLAlias.h +0 -0
  142. package/{include → svf/include}/CFL/CFLBase.h +0 -0
  143. package/{include → svf/include}/CFL/CFLData.h +0 -0
  144. package/{include → svf/include}/CFL/CFLDataBuilder.h +0 -0
  145. package/{include → svf/include}/CFL/CFLGramGraphChecker.h +0 -0
  146. package/{include → svf/include}/CFL/CFLGrammar.h +0 -0
  147. package/{include → svf/include}/CFL/CFLGrammar.txt +0 -0
  148. package/{include → svf/include}/CFL/CFLGraphBuilder.h +0 -0
  149. package/{include → svf/include}/CFL/CFLSolver.h +0 -0
  150. package/{include → svf/include}/CFL/CFLStat.h +0 -0
  151. package/{include → svf/include}/CFL/CFLVF.h +0 -0
  152. package/{include → svf/include}/CFL/GrammarBuilder.h +0 -0
  153. package/{include → svf/include}/CFL/PEGGrammar.txt +0 -0
  154. package/{include → svf/include}/CFL/VFG.txt +0 -0
  155. package/{include → svf/include}/DDA/ContextDDA.h +0 -0
  156. package/{include → svf/include}/DDA/DDAClient.h +0 -0
  157. package/{include → svf/include}/DDA/DDAPass.h +0 -0
  158. package/{include → svf/include}/DDA/DDAStat.h +0 -0
  159. package/{include → svf/include}/DDA/DDAVFSolver.h +0 -0
  160. package/{include → svf/include}/DDA/FlowDDA.h +0 -0
  161. package/{include → svf/include}/FastCluster/LICENSE.TXT +0 -0
  162. package/{include → svf/include}/FastCluster/fastcluster.h +0 -0
  163. package/{include → svf/include}/Graphs/CFLGraph.h +0 -0
  164. package/{include → svf/include}/Graphs/CHG.h +0 -0
  165. package/{include → svf/include}/Graphs/ConsG.h +0 -0
  166. package/{include → svf/include}/Graphs/ConsGEdge.h +0 -0
  167. package/{include → svf/include}/Graphs/ConsGNode.h +0 -0
  168. package/{include → svf/include}/Graphs/DOTGraphTraits.h +0 -0
  169. package/{include → svf/include}/Graphs/GenericGraph.h +0 -0
  170. package/{include → svf/include}/Graphs/GraphPrinter.h +0 -0
  171. package/{include → svf/include}/Graphs/GraphTraits.h +0 -0
  172. package/{include → svf/include}/Graphs/GraphWriter.h +0 -0
  173. package/{include → svf/include}/Graphs/ICFG.h +0 -0
  174. package/{include → svf/include}/Graphs/ICFGEdge.h +0 -0
  175. package/{include → svf/include}/Graphs/ICFGNode.h +0 -0
  176. package/{include → svf/include}/Graphs/ICFGStat.h +0 -0
  177. package/{include → svf/include}/Graphs/IRGraph.h +0 -0
  178. package/{include → svf/include}/Graphs/PTACallGraph.h +0 -0
  179. package/{include → svf/include}/Graphs/SVFG.h +0 -0
  180. package/{include → svf/include}/Graphs/SVFGEdge.h +0 -0
  181. package/{include → svf/include}/Graphs/SVFGNode.h +0 -0
  182. package/{include → svf/include}/Graphs/SVFGOPT.h +0 -0
  183. package/{include → svf/include}/Graphs/SVFGStat.h +0 -0
  184. package/{include → svf/include}/Graphs/ThreadCallGraph.h +0 -0
  185. package/{include → svf/include}/Graphs/VFG.h +0 -0
  186. package/{include → svf/include}/Graphs/VFGEdge.h +0 -0
  187. package/{include → svf/include}/Graphs/VFGNode.h +0 -0
  188. package/{include → svf/include}/MSSA/MSSAMuChi.h +0 -0
  189. package/{include → svf/include}/MSSA/MemPartition.h +0 -0
  190. package/{include → svf/include}/MSSA/MemRegion.h +0 -0
  191. package/{include → svf/include}/MSSA/MemSSA.h +0 -0
  192. package/{include → svf/include}/MSSA/SVFGBuilder.h +0 -0
  193. package/{include → svf/include}/MTA/FSMPTA.h +0 -0
  194. package/{include → svf/include}/MTA/LockAnalysis.h +0 -0
  195. package/{include → svf/include}/MTA/MHP.h +0 -0
  196. package/{include → svf/include}/MTA/MTA.h +0 -0
  197. package/{include → svf/include}/MTA/MTAResultValidator.h +0 -0
  198. package/{include → svf/include}/MTA/MTAStat.h +0 -0
  199. package/{include → svf/include}/MTA/PCG.h +0 -0
  200. package/{include → svf/include}/MTA/TCT.h +0 -0
  201. package/{include → svf/include}/MemoryModel/AbstractPointsToDS.h +0 -0
  202. package/{include → svf/include}/MemoryModel/ConditionalPT.h +0 -0
  203. package/{include → svf/include}/MemoryModel/LocationSet.h +0 -0
  204. package/{include → svf/include}/MemoryModel/MutablePointsToDS.h +0 -0
  205. package/{include → svf/include}/MemoryModel/PersistentPointsToCache.h +0 -0
  206. package/{include → svf/include}/MemoryModel/PersistentPointsToDS.h +0 -0
  207. package/{include → svf/include}/MemoryModel/PointerAnalysis.h +0 -0
  208. package/{include → svf/include}/MemoryModel/PointerAnalysisImpl.h +0 -0
  209. package/{include → svf/include}/MemoryModel/PointsTo.h +0 -0
  210. package/{include → svf/include}/MemoryModel/SVFLoop.h +0 -0
  211. package/{include → svf/include}/SABER/DoubleFreeChecker.h +0 -0
  212. package/{include → svf/include}/SABER/FileChecker.h +0 -0
  213. package/{include → svf/include}/SABER/LeakChecker.h +0 -0
  214. package/{include → svf/include}/SABER/ProgSlice.h +0 -0
  215. package/{include → svf/include}/SABER/SaberCheckerAPI.h +0 -0
  216. package/{include → svf/include}/SABER/SaberCondAllocator.h +0 -0
  217. package/{include → svf/include}/SABER/SaberSVFGBuilder.h +0 -0
  218. package/{include → svf/include}/SABER/SrcSnkDDA.h +0 -0
  219. package/{include → svf/include}/SABER/SrcSnkSolver.h +0 -0
  220. package/{include → svf/include}/SVFIR/PAGBuilderFromFile.h +0 -0
  221. package/{include → svf/include}/SVFIR/SVFIR.h +0 -0
  222. package/{include → svf/include}/SVFIR/SVFModule.h +0 -0
  223. package/{include → svf/include}/SVFIR/SVFStatements.h +0 -0
  224. package/{include → svf/include}/SVFIR/SVFType.h +12 -14
  225. package/{include → svf/include}/SVFIR/SVFValue.h +0 -0
  226. package/{include → svf/include}/SVFIR/SVFVariables.h +0 -0
  227. package/{include → svf/include}/SVFIR/SymbolTableInfo.h +0 -0
  228. package/{include → svf/include}/Util/Annotator.h +0 -0
  229. package/{include → svf/include}/Util/BitVector.h +0 -0
  230. package/{include → svf/include}/Util/CallGraphBuilder.h +0 -0
  231. package/{include → svf/include}/Util/Casting.h +0 -0
  232. package/{include → svf/include}/Util/CommandLine.h +0 -0
  233. package/{include → svf/include}/Util/CoreBitVector.h +0 -0
  234. package/{include → svf/include}/Util/CppUtil.h +0 -0
  235. package/{include → svf/include}/Util/CxtStmt.h +0 -0
  236. package/{include → svf/include}/Util/DPItem.h +0 -0
  237. package/{include → svf/include}/Util/ExtAPI.h +2 -2
  238. package/{include → svf/include}/Util/ExtAPI.json +0 -0
  239. package/{include → svf/include}/Util/GraphReachSolver.h +0 -0
  240. package/{include → svf/include}/Util/NodeIDAllocator.h +0 -0
  241. package/{include → svf/include}/Util/Options.h +0 -0
  242. package/{include → svf/include}/Util/PTAStat.h +0 -0
  243. package/{include → svf/include}/Util/SCC.h +0 -0
  244. package/{include → svf/include}/Util/SVFStat.h +0 -0
  245. package/{include → svf/include}/Util/SVFUtil.h +0 -0
  246. package/{include → svf/include}/Util/SparseBitVector.h +0 -0
  247. package/{include → svf/include}/Util/ThreadAPI.h +0 -0
  248. package/{include → svf/include}/Util/WorkList.h +0 -0
  249. package/{include → svf/include}/Util/Z3Expr.h +0 -0
  250. package/{include → svf/include}/Util/cJSON.h +0 -0
  251. package/{include → svf/include}/Util/iterator.h +0 -0
  252. package/{include → svf/include}/Util/iterator_range.h +0 -0
  253. package/{include → svf/include}/WPA/Andersen.h +0 -0
  254. package/{include → svf/include}/WPA/AndersenPWC.h +0 -0
  255. package/{include → svf/include}/WPA/CSC.h +0 -0
  256. package/{include → svf/include}/WPA/FlowSensitive.h +0 -0
  257. package/{include → svf/include}/WPA/Steensgaard.h +0 -0
  258. package/{include → svf/include}/WPA/TypeAnalysis.h +0 -0
  259. package/{include → svf/include}/WPA/VersionedFlowSensitive.h +0 -0
  260. package/{include → svf/include}/WPA/WPAFSSolver.h +0 -0
  261. package/{include → svf/include}/WPA/WPAPass.h +0 -0
  262. package/{include → svf/include}/WPA/WPASolver.h +0 -0
  263. package/{include → svf/include}/WPA/WPAStat.h +0 -0
  264. package/{lib → svf/lib}/AbstractExecution/ExeState.cpp +0 -0
  265. package/{lib → svf/lib}/AbstractExecution/IntervalExeState.cpp +0 -0
  266. package/{lib → svf/lib}/AbstractExecution/RelExeState.cpp +0 -0
  267. package/{lib → svf/lib}/AbstractExecution/RelationSolver.cpp +0 -0
  268. package/{lib → svf/lib}/AbstractExecution/SVFIR2ItvExeState.cpp +0 -0
  269. package/{lib → svf/lib}/AbstractExecution/SVFIR2Relation.cpp +0 -0
  270. package/{lib → svf/lib}/CFL/CFGNormalizer.cpp +0 -0
  271. package/{lib → svf/lib}/CFL/CFLAlias.cpp +0 -0
  272. package/{lib → svf/lib}/CFL/CFLBase.cpp +0 -0
  273. package/{lib → svf/lib}/CFL/CFLGrammar.cpp +0 -0
  274. package/{lib → svf/lib}/CFL/CFLGraphBuilder.cpp +0 -0
  275. package/{lib → svf/lib}/CFL/CFLSolver.cpp +0 -0
  276. package/{lib → svf/lib}/CFL/CFLStat.cpp +0 -0
  277. package/{lib → svf/lib}/CFL/CFLVF.cpp +0 -0
  278. package/{lib → svf/lib}/CFL/GrammarBuilder.cpp +6 -1
  279. package/{lib → svf/lib}/DDA/ContextDDA.cpp +0 -0
  280. package/{lib → svf/lib}/DDA/DDAClient.cpp +0 -0
  281. package/{lib → svf/lib}/DDA/DDAPass.cpp +0 -0
  282. package/{lib → svf/lib}/DDA/DDAStat.cpp +0 -0
  283. package/{lib → svf/lib}/DDA/FlowDDA.cpp +0 -0
  284. package/{lib → svf/lib}/FastCluster/LICENSE.TXT +0 -0
  285. package/{lib → svf/lib}/FastCluster/fastcluster.cpp +0 -0
  286. package/{lib → svf/lib}/FastCluster/fastcluster_R_dm.cpp.inc +0 -0
  287. package/{lib → svf/lib}/FastCluster/fastcluster_dm.cpp.inc +0 -0
  288. package/{lib → svf/lib}/Graphs/CFLGraph.cpp +0 -0
  289. package/{lib → svf/lib}/Graphs/CHG.cpp +0 -0
  290. package/{lib → svf/lib}/Graphs/ConsG.cpp +0 -0
  291. package/{lib → svf/lib}/Graphs/GraphWriter.cpp +0 -0
  292. package/{lib → svf/lib}/Graphs/ICFG.cpp +0 -0
  293. package/{lib → svf/lib}/Graphs/IRGraph.cpp +0 -0
  294. package/{lib → svf/lib}/Graphs/PTACallGraph.cpp +0 -0
  295. package/{lib → svf/lib}/Graphs/SVFG.cpp +0 -0
  296. package/{lib → svf/lib}/Graphs/SVFGOPT.cpp +0 -0
  297. package/{lib → svf/lib}/Graphs/SVFGReadWrite.cpp +0 -0
  298. package/{lib → svf/lib}/Graphs/SVFGStat.cpp +0 -0
  299. package/{lib → svf/lib}/Graphs/ThreadCallGraph.cpp +0 -0
  300. package/{lib → svf/lib}/Graphs/VFG.cpp +0 -0
  301. package/{lib → svf/lib}/MSSA/MemPartition.cpp +0 -0
  302. package/{lib → svf/lib}/MSSA/MemRegion.cpp +0 -0
  303. package/{lib → svf/lib}/MSSA/MemSSA.cpp +0 -0
  304. package/{lib → svf/lib}/MSSA/SVFGBuilder.cpp +0 -0
  305. package/{lib → svf/lib}/MTA/FSMPTA.cpp +0 -0
  306. package/{lib → svf/lib}/MTA/LockAnalysis.cpp +0 -0
  307. package/{lib → svf/lib}/MTA/MHP.cpp +0 -0
  308. package/{lib → svf/lib}/MTA/MTA.cpp +0 -0
  309. package/{lib → svf/lib}/MTA/MTAStat.cpp +0 -0
  310. package/{lib → svf/lib}/MTA/PCG.cpp +0 -0
  311. package/{lib → svf/lib}/MTA/TCT.cpp +0 -0
  312. package/{lib → svf/lib}/MemoryModel/LocationSet.cpp +0 -0
  313. package/{lib → svf/lib}/MemoryModel/PointerAnalysis.cpp +0 -0
  314. package/{lib → svf/lib}/MemoryModel/PointerAnalysisImpl.cpp +0 -0
  315. package/{lib → svf/lib}/MemoryModel/PointsTo.cpp +0 -0
  316. package/{lib → svf/lib}/SABER/DoubleFreeChecker.cpp +0 -0
  317. package/{lib → svf/lib}/SABER/FileChecker.cpp +0 -0
  318. package/{lib → svf/lib}/SABER/LeakChecker.cpp +0 -0
  319. package/{lib → svf/lib}/SABER/ProgSlice.cpp +0 -0
  320. package/{lib → svf/lib}/SABER/SaberCheckerAPI.cpp +0 -0
  321. package/{lib → svf/lib}/SABER/SaberCondAllocator.cpp +0 -0
  322. package/{lib → svf/lib}/SABER/SaberSVFGBuilder.cpp +0 -0
  323. package/{lib → svf/lib}/SABER/SrcSnkDDA.cpp +0 -0
  324. package/{lib → svf/lib}/SVFIR/PAGBuilderFromFile.cpp +0 -0
  325. package/{lib → svf/lib}/SVFIR/SVFIR.cpp +0 -0
  326. package/{lib → svf/lib}/SVFIR/SVFModule.cpp +0 -0
  327. package/{lib → svf/lib}/SVFIR/SVFStatements.cpp +0 -0
  328. package/{lib → svf/lib}/SVFIR/SVFValue.cpp +0 -0
  329. package/{lib → svf/lib}/SVFIR/SVFVariables.cpp +0 -0
  330. package/{lib → svf/lib}/SVFIR/SymbolTableInfo.cpp +0 -0
  331. package/{lib → svf/lib}/Util/BitVector.cpp +0 -0
  332. package/{lib → svf/lib}/Util/CallGraphBuilder.cpp +0 -0
  333. package/{lib → svf/lib}/Util/CoreBitVector.cpp +0 -0
  334. package/{lib → svf/lib}/Util/CppUtil.cpp +0 -0
  335. package/{lib → svf/lib}/Util/ExtAPI.cpp +64 -58
  336. package/{lib → svf/lib}/Util/NodeIDAllocator.cpp +0 -0
  337. package/{lib → svf/lib}/Util/Options.cpp +0 -0
  338. package/{lib → svf/lib}/Util/PTAStat.cpp +0 -0
  339. package/{lib → svf/lib}/Util/SVFStat.cpp +0 -0
  340. package/{lib → svf/lib}/Util/SVFUtil.cpp +0 -0
  341. package/{lib → svf/lib}/Util/ThreadAPI.cpp +0 -0
  342. package/{lib → svf/lib}/Util/Z3Expr.cpp +0 -0
  343. package/{lib → svf/lib}/Util/cJSON.cpp +0 -0
  344. package/{lib → svf/lib}/WPA/Andersen.cpp +0 -0
  345. package/{lib → svf/lib}/WPA/AndersenSCD.cpp +0 -0
  346. package/{lib → svf/lib}/WPA/AndersenSFR.cpp +0 -0
  347. package/{lib → svf/lib}/WPA/AndersenStat.cpp +0 -0
  348. package/{lib → svf/lib}/WPA/AndersenWaveDiff.cpp +0 -0
  349. package/{lib → svf/lib}/WPA/CSC.cpp +0 -0
  350. package/{lib → svf/lib}/WPA/FlowSensitive.cpp +0 -0
  351. package/{lib → svf/lib}/WPA/FlowSensitiveStat.cpp +0 -0
  352. package/{lib → svf/lib}/WPA/Steensgaard.cpp +0 -0
  353. package/{lib → svf/lib}/WPA/TypeAnalysis.cpp +0 -0
  354. package/{lib → svf/lib}/WPA/VersionedFlowSensitive.cpp +0 -0
  355. package/{lib → svf/lib}/WPA/VersionedFlowSensitiveStat.cpp +0 -0
  356. package/{lib → svf/lib}/WPA/WPAPass.cpp +0 -0
  357. package/svf-llvm/CMakeLists.txt +21 -0
  358. package/{include → svf-llvm/include}/SVF-LLVM/BasicTypes.h +0 -0
  359. package/{include → svf-llvm/include}/SVF-LLVM/BreakConstantExpr.h +0 -0
  360. package/{include → svf-llvm/include}/SVF-LLVM/CHGBuilder.h +0 -0
  361. package/{include → svf-llvm/include}/SVF-LLVM/DCHG.h +0 -0
  362. package/{include → svf-llvm/include}/SVF-LLVM/GEPTypeBridgeIterator.h +0 -0
  363. package/{include → svf-llvm/include}/SVF-LLVM/ICFGBuilder.h +0 -0
  364. package/{include → svf-llvm/include}/SVF-LLVM/LLVMLoopAnalysis.h +0 -0
  365. package/{include → svf-llvm/include}/SVF-LLVM/LLVMModule.h +0 -0
  366. package/{include → svf-llvm/include}/SVF-LLVM/LLVMUtil.h +0 -0
  367. package/{include → svf-llvm/include}/SVF-LLVM/SVFIRBuilder.h +0 -0
  368. package/{include → svf-llvm/include}/SVF-LLVM/SymbolTableBuilder.h +0 -0
  369. package/{lib/SVF-LLVM → svf-llvm/lib}/BreakConstantExpr.cpp +0 -0
  370. package/{lib/SVF-LLVM → svf-llvm/lib}/CHGBuilder.cpp +0 -0
  371. package/{lib/SVF-LLVM → svf-llvm/lib}/DCHG.cpp +0 -0
  372. package/{lib/SVF-LLVM → svf-llvm/lib}/ICFGBuilder.cpp +0 -0
  373. package/{lib/SVF-LLVM → svf-llvm/lib}/LLVMLoopAnalysis.cpp +0 -0
  374. package/{lib/SVF-LLVM → svf-llvm/lib}/LLVMModule.cpp +0 -0
  375. package/{lib/SVF-LLVM → svf-llvm/lib}/LLVMUtil.cpp +0 -0
  376. package/{lib/SVF-LLVM → svf-llvm/lib}/SVFIRBuilder.cpp +0 -0
  377. package/{lib/SVF-LLVM → svf-llvm/lib}/SymbolTableBuilder.cpp +0 -0
  378. package/tools/CFL/CMakeLists.txt +18 -7
  379. package/tools/CMakeLists.txt +2 -1
  380. package/tools/DDA/CMakeLists.txt +18 -7
  381. package/tools/Example/CMakeLists.txt +18 -7
  382. package/tools/Example/svf-ex.cpp +0 -1
  383. package/tools/MTA/CMakeLists.txt +20 -9
  384. package/tools/SABER/CMakeLists.txt +18 -7
  385. package/tools/WPA/CMakeLists.txt +18 -8
  386. package/lib/CMakeLists.txt +0 -55
@@ -58,41 +58,9 @@ $(function() {
58
58
  </div>
59
59
 
60
60
  <div class="contents">
61
- <div class="textblock">Here is a list of all namespace members with links to the namespace documentation for each member:</div>
62
-
63
- <h3><a id="index_a"></a>- a -</h3><ul>
64
- <li>ActualParmSVFGNode
65
- : <a class="el" href="namespaceSVF.html#a11c50c2f81327753b3ff3ffdbe356812">SVF</a>
66
- </li>
67
- <li>ActualRetSVFGNode
68
- : <a class="el" href="namespaceSVF.html#a77b8b8ca831e1eba3e47f2ca29667f67">SVF</a>
69
- </li>
70
- <li>AddrSVFGNode
71
- : <a class="el" href="namespaceSVF.html#a959453cbb8ff2d852b526fd1ff74ce49">SVF</a>
72
- </li>
73
- <li>AliasResult
74
- : <a class="el" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">SVF</a>
75
- </li>
76
- <li>AllocaInst
77
- : <a class="el" href="namespaceSVF.html#a3bacb4f95c73e6d794901d01c6b65a83">SVF</a>
78
- </li>
79
- <li>ArgInDeadFunction()
80
- : <a class="el" href="namespaceSVF_1_1LLVMUtil.html#a5cbde00eef789f682df972ae71b44449">SVF::LLVMUtil</a>
81
- </li>
82
- <li>ArgInProgEntryFunction()
83
- : <a class="el" href="namespaceSVF_1_1LLVMUtil.html#adad59a953dd81e213db71babbbc9df2f">SVF::LLVMUtil</a>
84
- </li>
85
- <li>Argument
86
- : <a class="el" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF</a>
87
- </li>
88
- <li>ArrayType
89
- : <a class="el" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF</a>
90
- </li>
91
- <li>AtomicCmpXchgInst
92
- : <a class="el" href="namespaceSVF.html#a582e3736a2bbb0540364c1693d831b49">SVF</a>
93
- </li>
94
- <li>AtomicRMWInst
95
- : <a class="el" href="namespaceSVF.html#a468154e0ab9e7be82afef1aa0a2fb9e0">SVF</a>
61
+ <div class="textblock">Here is a list of all namespace members with links to the namespace documentation for each member:</div><ul>
62
+ <li>NodeID
63
+ : <a class="el" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF</a>
96
64
  </li>
97
65
  </ul>
98
66
  </div><!-- contents -->
@@ -58,32 +58,9 @@ $(function() {
58
58
  </div>
59
59
 
60
60
  <div class="contents">
61
- &#160;
62
-
63
- <h3><a id="index_a"></a>- a -</h3><ul>
64
- <li>ActualParmSVFGNode
65
- : <a class="el" href="namespaceSVF.html#a11c50c2f81327753b3ff3ffdbe356812">SVF</a>
66
- </li>
67
- <li>ActualRetSVFGNode
68
- : <a class="el" href="namespaceSVF.html#a77b8b8ca831e1eba3e47f2ca29667f67">SVF</a>
69
- </li>
70
- <li>AddrSVFGNode
71
- : <a class="el" href="namespaceSVF.html#a959453cbb8ff2d852b526fd1ff74ce49">SVF</a>
72
- </li>
73
- <li>AllocaInst
74
- : <a class="el" href="namespaceSVF.html#a3bacb4f95c73e6d794901d01c6b65a83">SVF</a>
75
- </li>
76
- <li>Argument
77
- : <a class="el" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF</a>
78
- </li>
79
- <li>ArrayType
80
- : <a class="el" href="namespaceSVF.html#a146d286041987860388da3d8bc85cee3">SVF</a>
81
- </li>
82
- <li>AtomicCmpXchgInst
83
- : <a class="el" href="namespaceSVF.html#a582e3736a2bbb0540364c1693d831b49">SVF</a>
84
- </li>
85
- <li>AtomicRMWInst
86
- : <a class="el" href="namespaceSVF.html#a468154e0ab9e7be82afef1aa0a2fb9e0">SVF</a>
61
+ &#160;<ul>
62
+ <li>NodeID
63
+ : <a class="el" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF</a>
87
64
  </li>
88
65
  </ul>
89
66
  </div><!-- contents -->
@@ -63,15 +63,8 @@ $(function() {
63
63
  </div><!--header-->
64
64
  <div class="contents">
65
65
  <div class="textblock">Here is a list of all namespaces with brief descriptions:</div><div class="directory">
66
- <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
67
- <tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacellvm.html" target="_self">llvm</a></td><td class="desc"></td></tr>
68
- <tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceSVF.html" target="_self">SVF</a></td><td class="desc">For isBitcode </td></tr>
69
- <tr id="row_1_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_0_" class="arrow" onclick="toggleFolder('1_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceSVF_1_1cppUtil.html" target="_self">cppUtil</a></td><td class="desc"></td></tr>
70
- <tr id="row_1_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceSVF_1_1cppUtil_1_1ctir.html" target="_self">ctir</a></td><td class="desc"></td></tr>
71
- <tr id="row_1_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceSVF_1_1DOT.html" target="_self">DOT</a></td><td class="desc"></td></tr>
72
- <tr id="row_1_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceSVF_1_1GraphProgram.html" target="_self">GraphProgram</a></td><td class="desc"></td></tr>
73
- <tr id="row_1_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceSVF_1_1LLVMUtil.html" target="_self">LLVMUtil</a></td><td class="desc"></td></tr>
74
- <tr id="row_1_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceSVF_1_1SVFUtil.html" target="_self">SVFUtil</a></td><td class="desc"></td></tr>
66
+ <table class="directory">
67
+ <tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceSVF.html" target="_self">SVF</a></td><td class="desc"></td></tr>
75
68
  </table>
76
69
  </div><!-- directory -->
77
70
  </div><!-- contents -->
@@ -63,55 +63,60 @@ $(function() {
63
63
  </div><!-- top -->
64
64
  <div class="header">
65
65
  <div class="summary">
66
- <a href="#func-members">Functions</a> &#124;
67
- <a href="#var-members">Variables</a> </div>
66
+ <a href="#func-members">Functions</a> </div>
68
67
  <div class="headertitle">
69
68
  <div class="title">saber.cpp File Reference</div> </div>
70
69
  </div><!--header-->
71
70
  <div class="contents">
72
- <div class="textblock"><code>#include &quot;<a class="el" href="LLVMUtil_8h_source.html">SVF-LLVM/LLVMUtil.h</a>&quot;</code><br />
73
- <code>#include &quot;<a class="el" href="SVFIRBuilder_8h_source.html">SVF-LLVM/SVFIRBuilder.h</a>&quot;</code><br />
74
- <code>#include &quot;<a class="el" href="LeakChecker_8h_source.html">SABER/LeakChecker.h</a>&quot;</code><br />
75
- <code>#include &quot;<a class="el" href="FileChecker_8h_source.html">SABER/FileChecker.h</a>&quot;</code><br />
76
- <code>#include &quot;<a class="el" href="DoubleFreeChecker_8h_source.html">SABER/DoubleFreeChecker.h</a>&quot;</code><br />
77
- <code>#include &quot;<a class="el" href="CommandLine_8h_source.html">Util/CommandLine.h</a>&quot;</code><br />
78
- <code>#include &quot;<a class="el" href="Options_8h_source.html">Util/Options.h</a>&quot;</code><br />
79
- <code>#include &quot;<a class="el" href="Z3Expr_8h_source.html">Util/Z3Expr.h</a>&quot;</code><br />
71
+ <div class="textblock"><code>#include &quot;SVF-LLVM/LLVMUtil.h&quot;</code><br />
72
+ <code>#include &quot;SVF-LLVM/SVFIRBuilder.h&quot;</code><br />
73
+ <code>#include &quot;SABER/LeakChecker.h&quot;</code><br />
74
+ <code>#include &quot;SABER/FileChecker.h&quot;</code><br />
75
+ <code>#include &quot;SABER/DoubleFreeChecker.h&quot;</code><br />
76
+ <code>#include &quot;Util/CommandLine.h&quot;</code><br />
77
+ <code>#include &quot;Util/Options.h&quot;</code><br />
78
+ <code>#include &quot;Util/Z3Expr.h&quot;</code><br />
80
79
  </div>
81
80
  <p><a href="saber_8cpp_source.html">Go to the source code of this file.</a></p>
82
81
  <table class="memberdecls">
83
82
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
84
83
  Functions</h2></td></tr>
84
+ <tr class="memitem:ab978200e20fbbdb10acca9efeff745bc"><td class="memItemLeft" align="right" valign="top">static Option&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="saber_8cpp.html#ab978200e20fbbdb10acca9efeff745bc">LEAKCHECKER</a> (&quot;leak&quot;, &quot;Memory Leak Detection&quot;, false)</td></tr>
85
+ <tr class="separator:ab978200e20fbbdb10acca9efeff745bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
86
+ <tr class="memitem:a7fcc25f6477cb14786e27bf43226cc87"><td class="memItemLeft" align="right" valign="top">static Option&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="saber_8cpp.html#a7fcc25f6477cb14786e27bf43226cc87">FILECHECKER</a> (&quot;fileck&quot;, &quot;File Open/Close Detection&quot;, false)</td></tr>
87
+ <tr class="separator:a7fcc25f6477cb14786e27bf43226cc87"><td class="memSeparator" colspan="2">&#160;</td></tr>
88
+ <tr class="memitem:a7414c3557fff03632694a567163935e4"><td class="memItemLeft" align="right" valign="top">static Option&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="saber_8cpp.html#a7414c3557fff03632694a567163935e4">DFREECHECKER</a> (&quot;dfree&quot;, &quot;Double Free Detection&quot;, false)</td></tr>
89
+ <tr class="separator:a7414c3557fff03632694a567163935e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
85
90
  <tr class="memitem:a3c04138a5bfe5d72780bb7e82a18e627"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="saber_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a> (int argc, char **argv)</td></tr>
86
91
  <tr class="separator:a3c04138a5bfe5d72780bb7e82a18e627"><td class="memSeparator" colspan="2">&#160;</td></tr>
87
- </table><table class="memberdecls">
88
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
89
- Variables</h2></td></tr>
90
- <tr class="memitem:a789415bb7081a399af0d4218ead5e6a5"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classOption.html">Option</a>&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="saber_8cpp.html#a789415bb7081a399af0d4218ead5e6a5">LEAKCHECKER</a> (&quot;leak&quot;, &quot;Memory Leak Detection&quot;, false)</td></tr>
91
- <tr class="separator:a789415bb7081a399af0d4218ead5e6a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
92
- <tr class="memitem:a040433670c569ad3978a19fb1bf44d5b"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classOption.html">Option</a>&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="saber_8cpp.html#a040433670c569ad3978a19fb1bf44d5b">FILECHECKER</a> (&quot;fileck&quot;, &quot;File Open/Close Detection&quot;, false)</td></tr>
93
- <tr class="separator:a040433670c569ad3978a19fb1bf44d5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
94
- <tr class="memitem:ab233df6b8c190aa2c26fa20bd1ac7c52"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classOption.html">Option</a>&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="saber_8cpp.html#ab233df6b8c190aa2c26fa20bd1ac7c52">DFREECHECKER</a> (&quot;dfree&quot;, &quot;Double Free Detection&quot;, false)</td></tr>
95
- <tr class="separator:ab233df6b8c190aa2c26fa20bd1ac7c52"><td class="memSeparator" colspan="2">&#160;</td></tr>
96
92
  </table>
97
93
  <h2 class="groupheader">Function Documentation</h2>
98
- <a id="a3c04138a5bfe5d72780bb7e82a18e627"></a>
99
- <h2 class="memtitle"><span class="permalink"><a href="#a3c04138a5bfe5d72780bb7e82a18e627">&#9670;&nbsp;</a></span>main()</h2>
94
+ <a id="a7414c3557fff03632694a567163935e4"></a>
95
+ <h2 class="memtitle"><span class="permalink"><a href="#a7414c3557fff03632694a567163935e4">&#9670;&nbsp;</a></span>DFREECHECKER()</h2>
100
96
 
101
97
  <div class="memitem">
102
98
  <div class="memproto">
99
+ <table class="mlabels">
100
+ <tr>
101
+ <td class="mlabels-left">
103
102
  <table class="memname">
104
103
  <tr>
105
- <td class="memname">int main </td>
104
+ <td class="memname">static Option&lt;bool&gt; DFREECHECKER </td>
106
105
  <td>(</td>
107
- <td class="paramtype">int&#160;</td>
108
- <td class="paramname"><em>argc</em>, </td>
106
+ <td class="paramtype">&quot;dfree&quot;&#160;</td>
107
+ <td class="paramname">, </td>
109
108
  </tr>
110
109
  <tr>
111
110
  <td class="paramkey"></td>
112
111
  <td></td>
113
- <td class="paramtype">char **&#160;</td>
114
- <td class="paramname"><em>argv</em>&#160;</td>
112
+ <td class="paramtype">&quot;Double Free Detection&quot;&#160;</td>
113
+ <td class="paramname">, </td>
114
+ </tr>
115
+ <tr>
116
+ <td class="paramkey"></td>
117
+ <td></td>
118
+ <td class="paramtype">false&#160;</td>
119
+ <td class="paramname">&#160;</td>
115
120
  </tr>
116
121
  <tr>
117
122
  <td></td>
@@ -119,22 +124,17 @@ Variables</h2></td></tr>
119
124
  <td></td><td></td>
120
125
  </tr>
121
126
  </table>
127
+ </td>
128
+ <td class="mlabels-right">
129
+ <span class="mlabels"><span class="mlabel">static</span></span> </td>
130
+ </tr>
131
+ </table>
122
132
  </div><div class="memdoc">
123
133
 
124
- <p class="definition">Definition at line <a class="el" href="saber_8cpp_source.html#l00060">60</a> of file <a class="el" href="saber_8cpp_source.html">saber.cpp</a>.</p>
125
- <div class="fragment"><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; moduleNameVec = <a class="code" href="classOptionBase.html#a4fb6c6e4a1754d702c6c1730f54457e5">OptionBase::parseOptions</a>(</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; argc, argv, <span class="stringliteral">&quot;Source-Sink Bug Detector&quot;</span>, <span class="stringliteral">&quot;[options] &lt;input-bitcode...&gt;&quot;</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span> (Options::WriteAnder() == <span class="stringliteral">&quot;ir_annotator&quot;</span>)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder(svfModule);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = builder.build();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::unique_ptr&lt;LeakChecker&gt; saber;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#a789415bb7081a399af0d4218ead5e6a5">LEAKCHECKER</a>())</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; saber = std::make_unique&lt;LeakChecker&gt;();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#a040433670c569ad3978a19fb1bf44d5b">FILECHECKER</a>())</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; saber = std::make_unique&lt;FileChecker&gt;();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#ab233df6b8c190aa2c26fa20bd1ac7c52">DFREECHECKER</a>())</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; saber = std::make_unique&lt;DoubleFreeChecker&gt;();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; saber = std::make_unique&lt;LeakChecker&gt;(); <span class="comment">// if no checker is specified, we use leak checker as the default one.</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; saber-&gt;runOnModule(pag);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">delete</span>[] arg_value;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;}</div><div class="ttc" id="saber_8cpp_html_ab233df6b8c190aa2c26fa20bd1ac7c52"><div class="ttname"><a href="saber_8cpp.html#ab233df6b8c190aa2c26fa20bd1ac7c52">DFREECHECKER</a></div><div class="ttdeci">static Option&lt; bool &gt; DFREECHECKER(&quot;dfree&quot;, &quot;Double Free Detection&quot;, false)</div></div>
126
- <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
127
- <div class="ttc" id="saber_8cpp_html_a040433670c569ad3978a19fb1bf44d5b"><div class="ttname"><a href="saber_8cpp.html#a040433670c569ad3978a19fb1bf44d5b">FILECHECKER</a></div><div class="ttdeci">static Option&lt; bool &gt; FILECHECKER(&quot;fileck&quot;, &quot;File Open/Close Detection&quot;, false)</div></div>
128
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html">SVF::SVFIRBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00046">SVFIRBuilder.h:46</a></div></div>
129
- <div class="ttc" id="saber_8cpp_html_a789415bb7081a399af0d4218ead5e6a5"><div class="ttname"><a href="saber_8cpp.html#a789415bb7081a399af0d4218ead5e6a5">LEAKCHECKER</a></div><div class="ttdeci">static Option&lt; bool &gt; LEAKCHECKER(&quot;leak&quot;, &quot;Memory Leak Detection&quot;, false)</div></div>
130
- <div class="ttc" id="classOptionBase_html_a4fb6c6e4a1754d702c6c1730f54457e5"><div class="ttname"><a href="classOptionBase.html#a4fb6c6e4a1754d702c6c1730f54457e5">OptionBase::parseOptions</a></div><div class="ttdeci">static std::vector&lt; std::string &gt; parseOptions(int argc, char *argv[], std::string description, std::string callFormat)</div><div class="ttdef"><b>Definition:</b> <a href="CommandLine_8h_source.html#l00075">CommandLine.h:75</a></div></div>
131
- <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
132
- </div><!-- fragment -->
133
134
  </div>
134
135
  </div>
135
- <h2 class="groupheader">Variable Documentation</h2>
136
- <a id="ab233df6b8c190aa2c26fa20bd1ac7c52"></a>
137
- <h2 class="memtitle"><span class="permalink"><a href="#ab233df6b8c190aa2c26fa20bd1ac7c52">&#9670;&nbsp;</a></span>DFREECHECKER</h2>
136
+ <a id="a7fcc25f6477cb14786e27bf43226cc87"></a>
137
+ <h2 class="memtitle"><span class="permalink"><a href="#a7fcc25f6477cb14786e27bf43226cc87">&#9670;&nbsp;</a></span>FILECHECKER()</h2>
138
138
 
139
139
  <div class="memitem">
140
140
  <div class="memproto">
@@ -143,7 +143,27 @@ Variables</h2></td></tr>
143
143
  <td class="mlabels-left">
144
144
  <table class="memname">
145
145
  <tr>
146
- <td class="memname"><a class="el" href="classOption.html">Option</a>&lt;bool&gt; DFREECHECKER(&quot;dfree&quot;, &quot;Double Free Detection&quot;, false)</td>
146
+ <td class="memname">static Option&lt;bool&gt; FILECHECKER </td>
147
+ <td>(</td>
148
+ <td class="paramtype">&quot;fileck&quot;&#160;</td>
149
+ <td class="paramname">, </td>
150
+ </tr>
151
+ <tr>
152
+ <td class="paramkey"></td>
153
+ <td></td>
154
+ <td class="paramtype">&quot;File Open/Close Detection&quot;&#160;</td>
155
+ <td class="paramname">, </td>
156
+ </tr>
157
+ <tr>
158
+ <td class="paramkey"></td>
159
+ <td></td>
160
+ <td class="paramtype">false&#160;</td>
161
+ <td class="paramname">&#160;</td>
162
+ </tr>
163
+ <tr>
164
+ <td></td>
165
+ <td>)</td>
166
+ <td></td><td></td>
147
167
  </tr>
148
168
  </table>
149
169
  </td>
@@ -155,8 +175,8 @@ Variables</h2></td></tr>
155
175
 
156
176
  </div>
157
177
  </div>
158
- <a id="a040433670c569ad3978a19fb1bf44d5b"></a>
159
- <h2 class="memtitle"><span class="permalink"><a href="#a040433670c569ad3978a19fb1bf44d5b">&#9670;&nbsp;</a></span>FILECHECKER</h2>
178
+ <a id="ab978200e20fbbdb10acca9efeff745bc"></a>
179
+ <h2 class="memtitle"><span class="permalink"><a href="#ab978200e20fbbdb10acca9efeff745bc">&#9670;&nbsp;</a></span>LEAKCHECKER()</h2>
160
180
 
161
181
  <div class="memitem">
162
182
  <div class="memproto">
@@ -165,7 +185,27 @@ Variables</h2></td></tr>
165
185
  <td class="mlabels-left">
166
186
  <table class="memname">
167
187
  <tr>
168
- <td class="memname"><a class="el" href="classOption.html">Option</a>&lt;bool&gt; FILECHECKER(&quot;fileck&quot;, &quot;File Open/Close Detection&quot;, false)</td>
188
+ <td class="memname">static Option&lt;bool&gt; LEAKCHECKER </td>
189
+ <td>(</td>
190
+ <td class="paramtype">&quot;leak&quot;&#160;</td>
191
+ <td class="paramname">, </td>
192
+ </tr>
193
+ <tr>
194
+ <td class="paramkey"></td>
195
+ <td></td>
196
+ <td class="paramtype">&quot;Memory Leak Detection&quot;&#160;</td>
197
+ <td class="paramname">, </td>
198
+ </tr>
199
+ <tr>
200
+ <td class="paramkey"></td>
201
+ <td></td>
202
+ <td class="paramtype">false&#160;</td>
203
+ <td class="paramname">&#160;</td>
204
+ </tr>
205
+ <tr>
206
+ <td></td>
207
+ <td>)</td>
208
+ <td></td><td></td>
169
209
  </tr>
170
210
  </table>
171
211
  </td>
@@ -177,26 +217,37 @@ Variables</h2></td></tr>
177
217
 
178
218
  </div>
179
219
  </div>
180
- <a id="a789415bb7081a399af0d4218ead5e6a5"></a>
181
- <h2 class="memtitle"><span class="permalink"><a href="#a789415bb7081a399af0d4218ead5e6a5">&#9670;&nbsp;</a></span>LEAKCHECKER</h2>
220
+ <a id="a3c04138a5bfe5d72780bb7e82a18e627"></a>
221
+ <h2 class="memtitle"><span class="permalink"><a href="#a3c04138a5bfe5d72780bb7e82a18e627">&#9670;&nbsp;</a></span>main()</h2>
182
222
 
183
223
  <div class="memitem">
184
224
  <div class="memproto">
185
- <table class="mlabels">
186
- <tr>
187
- <td class="mlabels-left">
188
225
  <table class="memname">
189
226
  <tr>
190
- <td class="memname"><a class="el" href="classOption.html">Option</a>&lt;bool&gt; LEAKCHECKER(&quot;leak&quot;, &quot;Memory Leak Detection&quot;, false)</td>
227
+ <td class="memname">int main </td>
228
+ <td>(</td>
229
+ <td class="paramtype">int&#160;</td>
230
+ <td class="paramname"><em>argc</em>, </td>
231
+ </tr>
232
+ <tr>
233
+ <td class="paramkey"></td>
234
+ <td></td>
235
+ <td class="paramtype">char **&#160;</td>
236
+ <td class="paramname"><em>argv</em>&#160;</td>
237
+ </tr>
238
+ <tr>
239
+ <td></td>
240
+ <td>)</td>
241
+ <td></td><td></td>
191
242
  </tr>
192
243
  </table>
193
- </td>
194
- <td class="mlabels-right">
195
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
196
- </tr>
197
- </table>
198
244
  </div><div class="memdoc">
199
245
 
246
+ <p class="definition">Definition at line <a class="el" href="saber_8cpp_source.html#l00060">60</a> of file <a class="el" href="saber_8cpp_source.html">saber.cpp</a>.</p>
247
+ <div class="fragment"><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; moduleNameVec = OptionBase::parseOptions(</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; argc, argv, <span class="stringliteral">&quot;Source-Sink Bug Detector&quot;</span>, <span class="stringliteral">&quot;[options] &lt;input-bitcode...&gt;&quot;</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span> (Options::WriteAnder() == <span class="stringliteral">&quot;ir_annotator&quot;</span>)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; SVFModule* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; SVFIRBuilder builder(svfModule);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; SVFIR* pag = builder.build();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::unique_ptr&lt;LeakChecker&gt; saber;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#ab978200e20fbbdb10acca9efeff745bc">LEAKCHECKER</a>())</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; saber = std::make_unique&lt;LeakChecker&gt;();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#a7fcc25f6477cb14786e27bf43226cc87">FILECHECKER</a>())</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; saber = std::make_unique&lt;FileChecker&gt;();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#a7414c3557fff03632694a567163935e4">DFREECHECKER</a>())</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; saber = std::make_unique&lt;DoubleFreeChecker&gt;();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; saber = std::make_unique&lt;LeakChecker&gt;(); <span class="comment">// if no checker is specified, we use leak checker as the default one.</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; saber-&gt;runOnModule(pag);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">delete</span>[] arg_value;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;}</div><div class="ttc" id="saber_8cpp_html_a7fcc25f6477cb14786e27bf43226cc87"><div class="ttname"><a href="saber_8cpp.html#a7fcc25f6477cb14786e27bf43226cc87">FILECHECKER</a></div><div class="ttdeci">static Option&lt; bool &gt; FILECHECKER(&quot;fileck&quot;, &quot;File Open/Close Detection&quot;, false)</div></div>
248
+ <div class="ttc" id="saber_8cpp_html_ab978200e20fbbdb10acca9efeff745bc"><div class="ttname"><a href="saber_8cpp.html#ab978200e20fbbdb10acca9efeff745bc">LEAKCHECKER</a></div><div class="ttdeci">static Option&lt; bool &gt; LEAKCHECKER(&quot;leak&quot;, &quot;Memory Leak Detection&quot;, false)</div></div>
249
+ <div class="ttc" id="saber_8cpp_html_a7414c3557fff03632694a567163935e4"><div class="ttname"><a href="saber_8cpp.html#a7414c3557fff03632694a567163935e4">DFREECHECKER</a></div><div class="ttdeci">static Option&lt; bool &gt; DFREECHECKER(&quot;dfree&quot;, &quot;Double Free Detection&quot;, false)</div></div>
250
+ </div><!-- fragment -->
200
251
  </div>
201
252
  </div>
202
253
  </div><!-- contents -->
@@ -66,26 +66,12 @@ $(function() {
66
66
  <div class="title">saber.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="saber_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- saber.cpp -- Source-sink bug checker------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===-----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> // Saber: Software Bug Check.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> //</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> // Author: Yulei Sui,</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMUtil_8h.html">SVF-LLVM/LLVMUtil.h</a>&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIRBuilder_8h.html">SVF-LLVM/SVFIRBuilder.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LeakChecker_8h.html">SABER/LeakChecker.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="FileChecker_8h.html">SABER/FileChecker.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="DoubleFreeChecker_8h.html">SABER/DoubleFreeChecker.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="CommandLine_8h.html">Util/CommandLine.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Z3Expr_8h.html">Util/Z3Expr.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacellvm.html">llvm</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">static</span> <a class="code" href="classOption.html">Option&lt;bool&gt;</a> <a class="code" href="saber_8cpp.html#a789415bb7081a399af0d4218ead5e6a5">LEAKCHECKER</a>(</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="stringliteral">&quot;leak&quot;</span>,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="stringliteral">&quot;Memory Leak Detection&quot;</span>,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">false</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">static</span> <a class="code" href="classOption.html">Option&lt;bool&gt;</a> <a class="code" href="saber_8cpp.html#a040433670c569ad3978a19fb1bf44d5b">FILECHECKER</a>(</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="stringliteral">&quot;fileck&quot;</span>,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="stringliteral">&quot;File Open/Close Detection&quot;</span>,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">false</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">static</span> <a class="code" href="classOption.html">Option&lt;bool&gt;</a> <a class="code" href="saber_8cpp.html#ab233df6b8c190aa2c26fa20bd1ac7c52">DFREECHECKER</a>(</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="stringliteral">&quot;dfree&quot;</span>,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="stringliteral">&quot;Double Free Detection&quot;</span>,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">false</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="saber_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627"> 60</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="saber_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> ** argv)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; moduleNameVec = <a class="code" href="classOptionBase.html#a4fb6c6e4a1754d702c6c1730f54457e5">OptionBase::parseOptions</a>(</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; argc, argv, <span class="stringliteral">&quot;Source-Sink Bug Detector&quot;</span>, <span class="stringliteral">&quot;[options] &lt;input-bitcode...&gt;&quot;</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span> (Options::WriteAnder() == <span class="stringliteral">&quot;ir_annotator&quot;</span>)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder(svfModule);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = builder.<a class="code" href="classSVF_1_1SVFIRBuilder.html#a5ecf1deb5646ccb46b0b3101417f4689">build</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::unique_ptr&lt;LeakChecker&gt; saber;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#a789415bb7081a399af0d4218ead5e6a5">LEAKCHECKER</a>())</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; saber = std::make_unique&lt;LeakChecker&gt;();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#a040433670c569ad3978a19fb1bf44d5b">FILECHECKER</a>())</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; saber = std::make_unique&lt;FileChecker&gt;();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#ab233df6b8c190aa2c26fa20bd1ac7c52">DFREECHECKER</a>())</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; saber = std::make_unique&lt;DoubleFreeChecker&gt;();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; saber = std::make_unique&lt;LeakChecker&gt;(); <span class="comment">// if no checker is specified, we use leak checker as the default one.</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; saber-&gt;runOnModule(pag);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">delete</span>[] arg_value;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;}</div><div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00013">GEPTypeBridgeIterator.h:13</a></div></div>
70
- <div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option&lt; bool &gt;</a></div></div>
71
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html_a5ecf1deb5646ccb46b0b3101417f4689"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#a5ecf1deb5646ccb46b0b3101417f4689">SVF::SVFIRBuilder::build</a></div><div class="ttdeci">virtual SVFIR * build()</div><div class="ttdoc">Start building SVFIR here. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00051">SVFIRBuilder.cpp:51</a></div></div>
72
- <div class="ttc" id="saber_8cpp_html_ab233df6b8c190aa2c26fa20bd1ac7c52"><div class="ttname"><a href="saber_8cpp.html#ab233df6b8c190aa2c26fa20bd1ac7c52">DFREECHECKER</a></div><div class="ttdeci">static Option&lt; bool &gt; DFREECHECKER(&quot;dfree&quot;, &quot;Double Free Detection&quot;, false)</div></div>
73
- <div class="ttc" id="FileChecker_8h_html"><div class="ttname"><a href="FileChecker_8h.html">FileChecker.h</a></div></div>
69
+ <a href="saber_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- saber.cpp -- Source-sink bug checker------------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===-----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> // Saber: Software Bug Check.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> //</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> // Author: Yulei Sui,</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;SVF-LLVM/LLVMUtil.h&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;SVF-LLVM/SVFIRBuilder.h&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;SABER/LeakChecker.h&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;SABER/FileChecker.h&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;SABER/DoubleFreeChecker.h&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;Util/CommandLine.h&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;Util/Options.h&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;Util/Z3Expr.h&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacellvm.html">llvm</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">static</span> Option&lt;bool&gt; <a class="code" href="saber_8cpp.html#ab978200e20fbbdb10acca9efeff745bc">LEAKCHECKER</a>(</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="stringliteral">&quot;leak&quot;</span>,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="stringliteral">&quot;Memory Leak Detection&quot;</span>,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">false</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">static</span> Option&lt;bool&gt; <a class="code" href="saber_8cpp.html#a7fcc25f6477cb14786e27bf43226cc87">FILECHECKER</a>(</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="stringliteral">&quot;fileck&quot;</span>,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="stringliteral">&quot;File Open/Close Detection&quot;</span>,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">false</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">static</span> Option&lt;bool&gt; <a class="code" href="saber_8cpp.html#a7414c3557fff03632694a567163935e4">DFREECHECKER</a>(</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="stringliteral">&quot;dfree&quot;</span>,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="stringliteral">&quot;Double Free Detection&quot;</span>,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">false</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="saber_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627"> 60</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="saber_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> ** argv)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; moduleNameVec = OptionBase::parseOptions(</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; argc, argv, <span class="stringliteral">&quot;Source-Sink Bug Detector&quot;</span>, <span class="stringliteral">&quot;[options] &lt;input-bitcode...&gt;&quot;</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span> (Options::WriteAnder() == <span class="stringliteral">&quot;ir_annotator&quot;</span>)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; SVFModule* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; SVFIRBuilder builder(svfModule);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; SVFIR* pag = builder.build();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::unique_ptr&lt;LeakChecker&gt; saber;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#ab978200e20fbbdb10acca9efeff745bc">LEAKCHECKER</a>())</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; saber = std::make_unique&lt;LeakChecker&gt;();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#a7fcc25f6477cb14786e27bf43226cc87">FILECHECKER</a>())</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; saber = std::make_unique&lt;FileChecker&gt;();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#a7414c3557fff03632694a567163935e4">DFREECHECKER</a>())</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; saber = std::make_unique&lt;DoubleFreeChecker&gt;();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; saber = std::make_unique&lt;LeakChecker&gt;(); <span class="comment">// if no checker is specified, we use leak checker as the default one.</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; saber-&gt;runOnModule(pag);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">delete</span>[] arg_value;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;}</div><div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div></div>
74
70
  <div class="ttc" id="saber_8cpp_html_a3c04138a5bfe5d72780bb7e82a18e627"><div class="ttname"><a href="saber_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a></div><div class="ttdeci">int main(int argc, char **argv)</div><div class="ttdef"><b>Definition:</b> <a href="saber_8cpp_source.html#l00060">saber.cpp:60</a></div></div>
75
- <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
76
- <div class="ttc" id="saber_8cpp_html_a040433670c569ad3978a19fb1bf44d5b"><div class="ttname"><a href="saber_8cpp.html#a040433670c569ad3978a19fb1bf44d5b">FILECHECKER</a></div><div class="ttdeci">static Option&lt; bool &gt; FILECHECKER(&quot;fileck&quot;, &quot;File Open/Close Detection&quot;, false)</div></div>
77
- <div class="ttc" id="LeakChecker_8h_html"><div class="ttname"><a href="LeakChecker_8h.html">LeakChecker.h</a></div></div>
78
- <div class="ttc" id="classSVF_1_1SVFIRBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html">SVF::SVFIRBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00046">SVFIRBuilder.h:46</a></div></div>
79
- <div class="ttc" id="CommandLine_8h_html"><div class="ttname"><a href="CommandLine_8h.html">CommandLine.h</a></div></div>
80
- <div class="ttc" id="Z3Expr_8h_html"><div class="ttname"><a href="Z3Expr_8h.html">Z3Expr.h</a></div></div>
81
- <div class="ttc" id="saber_8cpp_html_a789415bb7081a399af0d4218ead5e6a5"><div class="ttname"><a href="saber_8cpp.html#a789415bb7081a399af0d4218ead5e6a5">LEAKCHECKER</a></div><div class="ttdeci">static Option&lt; bool &gt; LEAKCHECKER(&quot;leak&quot;, &quot;Memory Leak Detection&quot;, false)</div></div>
82
- <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
83
- <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="AbstractValue_8h_source.html#l00037">AbstractValue.h:37</a></div></div>
84
- <div class="ttc" id="SVFIRBuilder_8h_html"><div class="ttname"><a href="SVFIRBuilder_8h.html">SVFIRBuilder.h</a></div></div>
85
- <div class="ttc" id="classOptionBase_html_a4fb6c6e4a1754d702c6c1730f54457e5"><div class="ttname"><a href="classOptionBase.html#a4fb6c6e4a1754d702c6c1730f54457e5">OptionBase::parseOptions</a></div><div class="ttdeci">static std::vector&lt; std::string &gt; parseOptions(int argc, char *argv[], std::string description, std::string callFormat)</div><div class="ttdef"><b>Definition:</b> <a href="CommandLine_8h_source.html#l00075">CommandLine.h:75</a></div></div>
86
- <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
87
- <div class="ttc" id="LLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
88
- <div class="ttc" id="DoubleFreeChecker_8h_html"><div class="ttname"><a href="DoubleFreeChecker_8h.html">DoubleFreeChecker.h</a></div></div>
71
+ <div class="ttc" id="saber_8cpp_html_a7fcc25f6477cb14786e27bf43226cc87"><div class="ttname"><a href="saber_8cpp.html#a7fcc25f6477cb14786e27bf43226cc87">FILECHECKER</a></div><div class="ttdeci">static Option&lt; bool &gt; FILECHECKER(&quot;fileck&quot;, &quot;File Open/Close Detection&quot;, false)</div></div>
72
+ <div class="ttc" id="saber_8cpp_html_ab978200e20fbbdb10acca9efeff745bc"><div class="ttname"><a href="saber_8cpp.html#ab978200e20fbbdb10acca9efeff745bc">LEAKCHECKER</a></div><div class="ttdeci">static Option&lt; bool &gt; LEAKCHECKER(&quot;leak&quot;, &quot;Memory Leak Detection&quot;, false)</div></div>
73
+ <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00016">LockResultValidator.cpp:16</a></div></div>
74
+ <div class="ttc" id="saber_8cpp_html_a7414c3557fff03632694a567163935e4"><div class="ttname"><a href="saber_8cpp.html#a7414c3557fff03632694a567163935e4">DFREECHECKER</a></div><div class="ttdeci">static Option&lt; bool &gt; DFREECHECKER(&quot;dfree&quot;, &quot;Double Free Detection&quot;, false)</div></div>
89
75
  </div><!-- fragment --></div><!-- contents -->
90
76
  <!-- start footer part -->
91
77
  <hr class="footer"/><address class="footer"><small>