svf-tools 1.0.618 → 1.0.620

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 (385) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
  3. package/SVF-doxygen/html/html/Andersen_8h_source.html +4 -3
  4. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +3 -3
  5. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +4 -4
  6. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +3 -3
  8. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -2
  9. package/SVF-doxygen/html/html/CommandLine_8h.html +129 -0
  10. package/SVF-doxygen/html/html/CommandLine_8h_source.html +132 -0
  11. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  12. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -4
  13. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
  14. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +20 -19
  16. package/SVF-doxygen/html/html/DDAPass_8h_source.html +9 -9
  17. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +6 -6
  19. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
  21. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
  22. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  23. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  24. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +21 -20
  26. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +17 -17
  27. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  28. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  29. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +2 -2
  30. package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
  31. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -3
  32. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
  33. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
  34. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +2 -2
  36. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
  37. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
  38. package/SVF-doxygen/html/html/Options_8cpp.html +1 -0
  39. package/SVF-doxygen/html/html/Options_8cpp_source.html +123 -119
  40. package/SVF-doxygen/html/html/Options_8h.html +1 -1
  41. package/SVF-doxygen/html/html/Options_8h_source.html +124 -120
  42. package/SVF-doxygen/html/html/PCG_8cpp.html +2 -1
  43. package/SVF-doxygen/html/html/PCG_8cpp_source.html +13 -12
  44. package/SVF-doxygen/html/html/PCG_8h_source.html +12 -12
  45. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +4 -4
  46. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +13 -13
  47. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  49. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +5 -5
  50. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
  51. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +2 -2
  52. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +4 -3
  53. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +5 -4
  55. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +3 -3
  56. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +2 -2
  57. package/SVF-doxygen/html/html/SVFType_8h.html +2 -2
  58. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +2 -2
  59. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  60. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +2 -2
  61. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +5 -5
  62. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -7
  63. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
  64. package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
  65. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  66. package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
  67. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
  68. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +10 -9
  69. package/SVF-doxygen/html/html/WPAPass_8h_source.html +4 -4
  70. package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +2 -2
  71. package/SVF-doxygen/html/html/annotated.html +6 -2
  72. package/SVF-doxygen/html/html/cfl_8cpp.html +3 -85
  73. package/SVF-doxygen/html/html/cfl_8cpp_source.html +3 -5
  74. package/SVF-doxygen/html/html/classOption-members.html +99 -0
  75. package/SVF-doxygen/html/html/classOption.html +567 -0
  76. package/SVF-doxygen/html/html/classOption.png +0 -0
  77. package/SVF-doxygen/html/html/classOptionBase-members.html +95 -0
  78. package/SVF-doxygen/html/html/classOptionBase.html +823 -0
  79. package/SVF-doxygen/html/html/classOptionBase.png +0 -0
  80. package/SVF-doxygen/html/html/classOptionMap-members.html +97 -0
  81. package/SVF-doxygen/html/html/classOptionMap.html +428 -0
  82. package/SVF-doxygen/html/html/classOptionMap.png +0 -0
  83. package/SVF-doxygen/html/html/classOptionMultiple-members.html +97 -0
  84. package/SVF-doxygen/html/html/classOptionMultiple.html +460 -0
  85. package/SVF-doxygen/html/html/classOptionMultiple.png +0 -0
  86. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +2 -2
  87. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +16 -15
  88. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +9 -9
  89. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +6 -6
  90. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +6 -6
  91. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +2 -2
  92. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  93. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +6 -6
  94. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +7 -7
  95. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +2 -2
  96. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +4 -4
  97. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +5 -5
  98. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +2 -2
  99. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +2 -2
  100. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +2 -2
  101. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +2 -2
  102. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  103. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +72 -72
  104. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
  105. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +2 -2
  106. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +8 -8
  107. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +2 -2
  108. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +36 -35
  109. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
  110. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +4 -4
  111. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +2 -2
  112. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  113. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +11 -11
  114. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +22 -8
  115. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  116. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +2 -2
  117. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +2 -2
  118. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +2 -2
  119. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  120. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +1 -1
  121. package/SVF-doxygen/html/html/classSVF_1_1IntervalExeState.html +8 -8
  122. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +2 -2
  123. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +73 -72
  124. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +2 -2
  125. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +2 -2
  126. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
  127. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +2 -2
  128. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +2 -2
  129. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +10 -10
  131. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +6 -6
  132. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +12 -12
  133. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
  134. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +4 -4
  135. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +2 -2
  136. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +8 -8
  137. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
  138. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +2 -2
  139. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +120 -120
  140. package/SVF-doxygen/html/html/classSVF_1_1Options.html +613 -613
  141. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +28 -28
  142. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
  143. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +18 -18
  144. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +2 -2
  145. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  146. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +2 -2
  147. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +3 -3
  148. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +7 -7
  149. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +9 -9
  150. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +9 -8
  151. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +2 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +18 -18
  153. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +6 -6
  154. package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +3 -3
  156. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +2 -2
  157. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +9 -9
  158. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +2 -2
  159. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +11 -11
  160. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +10 -10
  161. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +4 -4
  162. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +2 -2
  163. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +2 -2
  164. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  165. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +2 -2
  166. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +8 -8
  167. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +2 -2
  168. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +6 -6
  169. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +27 -26
  170. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +6 -6
  171. package/SVF-doxygen/html/html/classes.html +113 -112
  172. package/SVF-doxygen/html/html/dda_8cpp.html +51 -248
  173. package/SVF-doxygen/html/html/dda_8cpp_source.html +9 -10
  174. package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
  175. package/SVF-doxygen/html/html/files.html +18 -17
  176. package/SVF-doxygen/html/html/functions_a.html +7 -7
  177. package/SVF-doxygen/html/html/functions_b.html +9 -6
  178. package/SVF-doxygen/html/html/functions_c.html +48 -46
  179. package/SVF-doxygen/html/html/functions_d.html +20 -17
  180. package/SVF-doxygen/html/html/functions_e.html +6 -3
  181. package/SVF-doxygen/html/html/functions_f.html +19 -16
  182. package/SVF-doxygen/html/html/functions_func_b.html +5 -2
  183. package/SVF-doxygen/html/html/functions_func_c.html +36 -30
  184. package/SVF-doxygen/html/html/functions_func_e.html +5 -2
  185. package/SVF-doxygen/html/html/functions_func_f.html +4 -1
  186. package/SVF-doxygen/html/html/functions_func_g.html +12 -6
  187. package/SVF-doxygen/html/html/functions_func_i.html +18 -7
  188. package/SVF-doxygen/html/html/functions_func_n.html +4 -1
  189. package/SVF-doxygen/html/html/functions_func_o.html +28 -13
  190. package/SVF-doxygen/html/html/functions_func_p.html +13 -4
  191. package/SVF-doxygen/html/html/functions_func_s.html +20 -19
  192. package/SVF-doxygen/html/html/functions_func_u.html +3 -0
  193. package/SVF-doxygen/html/html/functions_g.html +16 -10
  194. package/SVF-doxygen/html/html/functions_h.html +1 -1
  195. package/SVF-doxygen/html/html/functions_i.html +38 -23
  196. package/SVF-doxygen/html/html/functions_k.html +1 -1
  197. package/SVF-doxygen/html/html/functions_l.html +7 -7
  198. package/SVF-doxygen/html/html/functions_m.html +12 -12
  199. package/SVF-doxygen/html/html/functions_n.html +6 -2
  200. package/SVF-doxygen/html/html/functions_o.html +46 -25
  201. package/SVF-doxygen/html/html/functions_p.html +55 -33
  202. package/SVF-doxygen/html/html/functions_r.html +6 -6
  203. package/SVF-doxygen/html/html/functions_s.html +30 -29
  204. package/SVF-doxygen/html/html/functions_t.html +4 -4
  205. package/SVF-doxygen/html/html/functions_type_o.html +7 -0
  206. package/SVF-doxygen/html/html/functions_type_p.html +6 -0
  207. package/SVF-doxygen/html/html/functions_u.html +6 -3
  208. package/SVF-doxygen/html/html/functions_v.html +10 -8
  209. package/SVF-doxygen/html/html/functions_vars_a.html +7 -7
  210. package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
  211. package/SVF-doxygen/html/html/functions_vars_c.html +12 -12
  212. package/SVF-doxygen/html/html/functions_vars_d.html +18 -15
  213. package/SVF-doxygen/html/html/functions_vars_e.html +2 -2
  214. package/SVF-doxygen/html/html/functions_vars_f.html +6 -6
  215. package/SVF-doxygen/html/html/functions_vars_g.html +2 -2
  216. package/SVF-doxygen/html/html/functions_vars_h.html +1 -1
  217. package/SVF-doxygen/html/html/functions_vars_i.html +10 -6
  218. package/SVF-doxygen/html/html/functions_vars_k.html +1 -1
  219. package/SVF-doxygen/html/html/functions_vars_l.html +4 -4
  220. package/SVF-doxygen/html/html/functions_vars_m.html +11 -11
  221. package/SVF-doxygen/html/html/functions_vars_n.html +3 -2
  222. package/SVF-doxygen/html/html/functions_vars_o.html +5 -2
  223. package/SVF-doxygen/html/html/functions_vars_p.html +28 -21
  224. package/SVF-doxygen/html/html/functions_vars_r.html +5 -5
  225. package/SVF-doxygen/html/html/functions_vars_s.html +10 -10
  226. package/SVF-doxygen/html/html/functions_vars_t.html +4 -4
  227. package/SVF-doxygen/html/html/functions_vars_u.html +3 -3
  228. package/SVF-doxygen/html/html/functions_vars_v.html +6 -4
  229. package/SVF-doxygen/html/html/functions_vars_w.html +3 -3
  230. package/SVF-doxygen/html/html/functions_w.html +11 -7
  231. package/SVF-doxygen/html/html/globals_d.html +4 -4
  232. package/SVF-doxygen/html/html/globals_e.html +6 -6
  233. package/SVF-doxygen/html/html/globals_f.html +2 -2
  234. package/SVF-doxygen/html/html/globals_func.html +6 -58
  235. package/SVF-doxygen/html/html/globals_i.html +4 -12
  236. package/SVF-doxygen/html/html/globals_l.html +2 -2
  237. package/SVF-doxygen/html/html/globals_r.html +4 -4
  238. package/SVF-doxygen/html/html/globals_s.html +0 -4
  239. package/SVF-doxygen/html/html/globals_type.html +3 -0
  240. package/SVF-doxygen/html/html/globals_u.html +3 -0
  241. package/SVF-doxygen/html/html/globals_vars.html +43 -12
  242. package/SVF-doxygen/html/html/hierarchy.html +197 -182
  243. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
  244. package/SVF-doxygen/html/html/menudata.js +1 -2
  245. package/SVF-doxygen/html/html/mta_8cpp.html +4 -47
  246. package/SVF-doxygen/html/html/mta_8cpp_source.html +4 -4
  247. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  248. package/SVF-doxygen/html/html/saber_8cpp.html +38 -136
  249. package/SVF-doxygen/html/html/saber_8cpp_source.html +8 -7
  250. package/SVF-doxygen/html/html/search/all_1.js +7 -7
  251. package/SVF-doxygen/html/html/search/all_10.js +31 -26
  252. package/SVF-doxygen/html/html/search/all_11.js +8 -8
  253. package/SVF-doxygen/html/html/search/all_12.js +19 -20
  254. package/SVF-doxygen/html/html/search/all_13.js +7 -7
  255. package/SVF-doxygen/html/html/search/all_14.js +5 -4
  256. package/SVF-doxygen/html/html/search/all_15.js +6 -6
  257. package/SVF-doxygen/html/html/search/all_16.js +4 -4
  258. package/SVF-doxygen/html/html/search/all_2.js +2 -1
  259. package/SVF-doxygen/html/html/search/all_3.js +16 -14
  260. package/SVF-doxygen/html/html/search/all_4.js +18 -17
  261. package/SVF-doxygen/html/html/search/all_5.js +6 -5
  262. package/SVF-doxygen/html/html/search/all_6.js +9 -8
  263. package/SVF-doxygen/html/html/search/all_7.js +4 -2
  264. package/SVF-doxygen/html/html/search/all_8.js +1 -1
  265. package/SVF-doxygen/html/html/search/all_9.js +12 -9
  266. package/SVF-doxygen/html/html/search/all_b.js +2 -2
  267. package/SVF-doxygen/html/html/search/all_c.js +7 -7
  268. package/SVF-doxygen/html/html/search/all_d.js +12 -12
  269. package/SVF-doxygen/html/html/search/all_e.js +4 -3
  270. package/SVF-doxygen/html/html/search/all_f.js +24 -6
  271. package/SVF-doxygen/html/html/search/classes_c.js +15 -0
  272. package/SVF-doxygen/html/html/search/files_2.js +1 -0
  273. package/SVF-doxygen/html/html/search/functions_1.js +1 -0
  274. package/SVF-doxygen/html/html/search/functions_10.js +0 -2
  275. package/SVF-doxygen/html/html/search/functions_11.js +1 -2
  276. package/SVF-doxygen/html/html/search/functions_13.js +1 -0
  277. package/SVF-doxygen/html/html/search/functions_2.js +1 -0
  278. package/SVF-doxygen/html/html/search/functions_3.js +0 -2
  279. package/SVF-doxygen/html/html/search/functions_4.js +1 -3
  280. package/SVF-doxygen/html/html/search/functions_5.js +2 -1
  281. package/SVF-doxygen/html/html/search/functions_6.js +2 -0
  282. package/SVF-doxygen/html/html/search/functions_8.js +3 -1
  283. package/SVF-doxygen/html/html/search/functions_b.js +1 -1
  284. package/SVF-doxygen/html/html/search/functions_d.js +1 -0
  285. package/SVF-doxygen/html/html/search/functions_e.js +5 -1
  286. package/SVF-doxygen/html/html/search/functions_f.js +2 -0
  287. package/SVF-doxygen/html/html/search/typedefs_12.js +1 -1
  288. package/SVF-doxygen/html/html/search/typedefs_7.js +1 -1
  289. package/SVF-doxygen/html/html/search/typedefs_d.js +2 -0
  290. package/SVF-doxygen/html/html/search/typedefs_e.js +2 -0
  291. package/SVF-doxygen/html/html/search/variables_1.js +7 -7
  292. package/SVF-doxygen/html/html/search/variables_10.js +23 -21
  293. package/SVF-doxygen/html/html/search/variables_11.js +7 -5
  294. package/SVF-doxygen/html/html/search/variables_12.js +10 -10
  295. package/SVF-doxygen/html/html/search/variables_13.js +7 -7
  296. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  297. package/SVF-doxygen/html/html/search/variables_15.js +4 -4
  298. package/SVF-doxygen/html/html/search/variables_16.js +3 -3
  299. package/SVF-doxygen/html/html/search/variables_2.js +1 -1
  300. package/SVF-doxygen/html/html/search/variables_3.js +12 -12
  301. package/SVF-doxygen/html/html/search/variables_4.js +18 -15
  302. package/SVF-doxygen/html/html/search/variables_5.js +5 -2
  303. package/SVF-doxygen/html/html/search/variables_6.js +7 -6
  304. package/SVF-doxygen/html/html/search/variables_7.js +2 -2
  305. package/SVF-doxygen/html/html/search/variables_8.js +1 -1
  306. package/SVF-doxygen/html/html/search/variables_9.js +7 -6
  307. package/SVF-doxygen/html/html/search/variables_b.js +1 -1
  308. package/SVF-doxygen/html/html/search/variables_c.js +5 -4
  309. package/SVF-doxygen/html/html/search/variables_d.js +11 -11
  310. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  311. package/SVF-doxygen/html/html/search/variables_f.js +3 -2
  312. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +4 -4
  313. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  314. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
  315. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +4 -4
  316. package/SVF-doxygen/html/html/svf-ex_8cpp.html +12 -55
  317. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +8 -8
  318. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  319. package/SVF-doxygen/html/html/wpa_8cpp.html +4 -47
  320. package/SVF-doxygen/html/html/wpa_8cpp_source.html +4 -4
  321. package/include/Util/CommandLine.h +527 -0
  322. package/include/Util/Options.h +124 -124
  323. package/include/WPA/Andersen.h +5 -5
  324. package/lib/AbstractExecution/SVFIR2ItvExeState.cpp +2 -2
  325. package/lib/CFL/CFLAlias.cpp +5 -5
  326. package/lib/CFL/CFLBase.cpp +4 -4
  327. package/lib/CFL/CFLGraphBuilder.cpp +2 -2
  328. package/lib/CFL/CFLVF.cpp +5 -5
  329. package/lib/CMakeLists.txt +8 -4
  330. package/lib/DDA/ContextDDA.cpp +1 -1
  331. package/lib/DDA/DDAPass.cpp +14 -13
  332. package/lib/DDA/FlowDDA.cpp +1 -1
  333. package/lib/Graphs/ConsG.cpp +10 -10
  334. package/lib/Graphs/ICFG.cpp +1 -1
  335. package/lib/Graphs/IRGraph.cpp +2 -2
  336. package/lib/Graphs/SVFG.cpp +5 -5
  337. package/lib/Graphs/SVFGOPT.cpp +5 -5
  338. package/lib/Graphs/VFG.cpp +1 -1
  339. package/lib/MSSA/MemRegion.cpp +2 -2
  340. package/lib/MSSA/MemSSA.cpp +4 -4
  341. package/lib/MSSA/SVFGBuilder.cpp +4 -4
  342. package/lib/MTA/FSMPTA.cpp +13 -13
  343. package/lib/MTA/MHP.cpp +1 -1
  344. package/lib/MTA/MTA.cpp +2 -2
  345. package/lib/MTA/MTAStat.cpp +1 -1
  346. package/lib/MTA/PCG.cpp +8 -2
  347. package/lib/MTA/TCT.cpp +2 -2
  348. package/lib/MemoryModel/PointerAnalysis.cpp +13 -13
  349. package/lib/MemoryModel/PointerAnalysisImpl.cpp +13 -13
  350. package/lib/MemoryModel/PointsTo.cpp +1 -1
  351. package/lib/SABER/DoubleFreeChecker.cpp +1 -1
  352. package/lib/SABER/LeakChecker.cpp +1 -1
  353. package/lib/SABER/SaberCondAllocator.cpp +1 -1
  354. package/lib/SABER/SrcSnkDDA.cpp +5 -5
  355. package/lib/SVF-LLVM/CHGBuilder.cpp +1 -1
  356. package/lib/SVF-LLVM/DCHG.cpp +1 -1
  357. package/lib/SVF-LLVM/LLVMLoopAnalysis.cpp +2 -2
  358. package/lib/SVF-LLVM/LLVMModule.cpp +10 -4
  359. package/lib/SVF-LLVM/SVFIRBuilder.cpp +8 -8
  360. package/lib/SVF-LLVM/SymbolTableBuilder.cpp +5 -5
  361. package/lib/SVFIR/SVFIR.cpp +4 -4
  362. package/lib/SVFIR/SVFStatements.cpp +16 -16
  363. package/lib/SVFIR/SVFVariables.cpp +5 -5
  364. package/lib/SVFIR/SymbolTableInfo.cpp +6 -6
  365. package/lib/Util/NodeIDAllocator.cpp +9 -9
  366. package/lib/Util/Options.cpp +426 -412
  367. package/lib/Util/SVFStat.cpp +5 -5
  368. package/lib/Util/SVFUtil.cpp +1 -1
  369. package/lib/Util/Z3Expr.cpp +2 -2
  370. package/lib/WPA/Andersen.cpp +13 -13
  371. package/lib/WPA/AndersenSCD.cpp +3 -3
  372. package/lib/WPA/FlowSensitive.cpp +8 -8
  373. package/lib/WPA/TypeAnalysis.cpp +1 -1
  374. package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
  375. package/lib/WPA/WPAPass.cpp +10 -9
  376. package/package.json +1 -1
  377. package/tools/CFL/cfl.cpp +6 -14
  378. package/tools/DDA/dda.cpp +39 -29
  379. package/tools/Example/svf-ex.cpp +5 -8
  380. package/tools/MTA/LockResultValidator.cpp +2 -2
  381. package/tools/MTA/MTAAnnotator.cpp +5 -5
  382. package/tools/MTA/MTAResultValidator.cpp +8 -8
  383. package/tools/MTA/mta.cpp +5 -8
  384. package/tools/SABER/saber.cpp +23 -17
  385. package/tools/WPA/wpa.cpp +6 -9
@@ -63,7 +63,8 @@ $(function() {
63
63
  </div><!-- top -->
64
64
  <div class="header">
65
65
  <div class="summary">
66
- <a href="#func-members">Functions</a> </div>
66
+ <a href="#func-members">Functions</a> &#124;
67
+ <a href="#var-members">Variables</a> </div>
67
68
  <div class="headertitle">
68
69
  <div class="title">saber.cpp File Reference</div> </div>
69
70
  </div><!--header-->
@@ -73,6 +74,7 @@ $(function() {
73
74
  <code>#include &quot;<a class="el" href="LeakChecker_8h_source.html">SABER/LeakChecker.h</a>&quot;</code><br />
74
75
  <code>#include &quot;<a class="el" href="FileChecker_8h_source.html">SABER/FileChecker.h</a>&quot;</code><br />
75
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 />
76
78
  <code>#include &quot;<a class="el" href="Options_8h_source.html">Util/Options.h</a>&quot;</code><br />
77
79
  <code>#include &quot;<a class="el" href="Z3Expr_8h_source.html">Util/Z3Expr.h</a>&quot;</code><br />
78
80
  </div>
@@ -80,44 +82,36 @@ $(function() {
80
82
  <table class="memberdecls">
81
83
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
82
84
  Functions</h2></td></tr>
83
- <tr class="memitem:a2d332c504284f0bc181289ee67479845"><td class="memItemLeft" align="right" valign="top">static llvm::cl::opt&lt; <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="saber_8cpp.html#a2d332c504284f0bc181289ee67479845">InputFilename</a> (cl::Positional, llvm::cl::desc(&quot;&lt;input bitcode&gt;&quot;), llvm::cl::init(&quot;-&quot;))</td></tr>
84
- <tr class="separator:a2d332c504284f0bc181289ee67479845"><td class="memSeparator" colspan="2">&#160;</td></tr>
85
- <tr class="memitem:a3bebf1fb890054c49ae16f9706fa38d2"><td class="memItemLeft" align="right" valign="top">static llvm::cl::opt&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="saber_8cpp.html#a3bebf1fb890054c49ae16f9706fa38d2">LEAKCHECKER</a> (&quot;leak&quot;, llvm::cl::init(<a class="el" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a>), llvm::cl::desc(&quot;Memory Leak Detection&quot;))</td></tr>
86
- <tr class="separator:a3bebf1fb890054c49ae16f9706fa38d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
87
- <tr class="memitem:ae054770c30aa9b9ef72d5bc84084b472"><td class="memItemLeft" align="right" valign="top">static llvm::cl::opt&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="saber_8cpp.html#ae054770c30aa9b9ef72d5bc84084b472">FILECHECKER</a> (&quot;fileck&quot;, llvm::cl::init(<a class="el" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a>), llvm::cl::desc(&quot;File Open/Close Detection&quot;))</td></tr>
88
- <tr class="separator:ae054770c30aa9b9ef72d5bc84084b472"><td class="memSeparator" colspan="2">&#160;</td></tr>
89
- <tr class="memitem:ae783b2330e99490ef5d366605d1098cf"><td class="memItemLeft" align="right" valign="top">static llvm::cl::opt&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="saber_8cpp.html#ae783b2330e99490ef5d366605d1098cf">DFREECHECKER</a> (&quot;dfree&quot;, llvm::cl::init(<a class="el" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a>), llvm::cl::desc(&quot;Double Free Detection&quot;))</td></tr>
90
- <tr class="separator:ae783b2330e99490ef5d366605d1098cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
91
85
  <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>
92
86
  <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>
93
96
  </table>
94
97
  <h2 class="groupheader">Function Documentation</h2>
95
- <a id="ae783b2330e99490ef5d366605d1098cf"></a>
96
- <h2 class="memtitle"><span class="permalink"><a href="#ae783b2330e99490ef5d366605d1098cf">&#9670;&nbsp;</a></span>DFREECHECKER()</h2>
98
+ <a id="a3c04138a5bfe5d72780bb7e82a18e627"></a>
99
+ <h2 class="memtitle"><span class="permalink"><a href="#a3c04138a5bfe5d72780bb7e82a18e627">&#9670;&nbsp;</a></span>main()</h2>
97
100
 
98
101
  <div class="memitem">
99
102
  <div class="memproto">
100
- <table class="mlabels">
101
- <tr>
102
- <td class="mlabels-left">
103
103
  <table class="memname">
104
104
  <tr>
105
- <td class="memname">static llvm::cl::opt&lt;bool&gt; DFREECHECKER </td>
105
+ <td class="memname">int main </td>
106
106
  <td>(</td>
107
- <td class="paramtype">&quot;dfree&quot;&#160;</td>
108
- <td class="paramname">, </td>
109
- </tr>
110
- <tr>
111
- <td class="paramkey"></td>
112
- <td></td>
113
- <td class="paramtype">llvm::cl::init(<a class="el" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a>)&#160;</td>
114
- <td class="paramname">, </td>
107
+ <td class="paramtype">int&#160;</td>
108
+ <td class="paramname"><em>argc</em>, </td>
115
109
  </tr>
116
110
  <tr>
117
111
  <td class="paramkey"></td>
118
112
  <td></td>
119
- <td class="paramtype">llvm::cl::desc(&quot;Double Free Detection&quot;)&#160;</td>
120
- <td class="paramname">&#160;</td>
113
+ <td class="paramtype">char **&#160;</td>
114
+ <td class="paramname"><em>argv</em>&#160;</td>
121
115
  </tr>
122
116
  <tr>
123
117
  <td></td>
@@ -125,17 +119,22 @@ Functions</h2></td></tr>
125
119
  <td></td><td></td>
126
120
  </tr>
127
121
  </table>
128
- </td>
129
- <td class="mlabels-right">
130
- <span class="mlabels"><span class="mlabel">static</span></span> </td>
131
- </tr>
132
- </table>
133
122
  </div><div class="memdoc">
134
123
 
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#l00045">SVFIRBuilder.h:45</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 -->
135
133
  </div>
136
134
  </div>
137
- <a id="ae054770c30aa9b9ef72d5bc84084b472"></a>
138
- <h2 class="memtitle"><span class="permalink"><a href="#ae054770c30aa9b9ef72d5bc84084b472">&#9670;&nbsp;</a></span>FILECHECKER()</h2>
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>
139
138
 
140
139
  <div class="memitem">
141
140
  <div class="memproto">
@@ -144,27 +143,7 @@ Functions</h2></td></tr>
144
143
  <td class="mlabels-left">
145
144
  <table class="memname">
146
145
  <tr>
147
- <td class="memname">static llvm::cl::opt&lt;bool&gt; FILECHECKER </td>
148
- <td>(</td>
149
- <td class="paramtype">&quot;fileck&quot;&#160;</td>
150
- <td class="paramname">, </td>
151
- </tr>
152
- <tr>
153
- <td class="paramkey"></td>
154
- <td></td>
155
- <td class="paramtype">llvm::cl::init(<a class="el" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a>)&#160;</td>
156
- <td class="paramname">, </td>
157
- </tr>
158
- <tr>
159
- <td class="paramkey"></td>
160
- <td></td>
161
- <td class="paramtype">llvm::cl::desc(&quot;File Open/Close Detection&quot;)&#160;</td>
162
- <td class="paramname">&#160;</td>
163
- </tr>
164
- <tr>
165
- <td></td>
166
- <td>)</td>
167
- <td></td><td></td>
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>
168
147
  </tr>
169
148
  </table>
170
149
  </td>
@@ -176,8 +155,8 @@ Functions</h2></td></tr>
176
155
 
177
156
  </div>
178
157
  </div>
179
- <a id="a2d332c504284f0bc181289ee67479845"></a>
180
- <h2 class="memtitle"><span class="permalink"><a href="#a2d332c504284f0bc181289ee67479845">&#9670;&nbsp;</a></span>InputFilename()</h2>
158
+ <a id="a040433670c569ad3978a19fb1bf44d5b"></a>
159
+ <h2 class="memtitle"><span class="permalink"><a href="#a040433670c569ad3978a19fb1bf44d5b">&#9670;&nbsp;</a></span>FILECHECKER</h2>
181
160
 
182
161
  <div class="memitem">
183
162
  <div class="memproto">
@@ -186,27 +165,7 @@ Functions</h2></td></tr>
186
165
  <td class="mlabels-left">
187
166
  <table class="memname">
188
167
  <tr>
189
- <td class="memname">static llvm::cl::opt&lt;<a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>&gt; InputFilename </td>
190
- <td>(</td>
191
- <td class="paramtype">cl::Positional&#160;</td>
192
- <td class="paramname">, </td>
193
- </tr>
194
- <tr>
195
- <td class="paramkey"></td>
196
- <td></td>
197
- <td class="paramtype">llvm::cl::desc(&quot;&lt;input bitcode&gt;&quot;)&#160;</td>
198
- <td class="paramname">, </td>
199
- </tr>
200
- <tr>
201
- <td class="paramkey"></td>
202
- <td></td>
203
- <td class="paramtype">llvm::cl::init(&quot;-&quot;)&#160;</td>
204
- <td class="paramname">&#160;</td>
205
- </tr>
206
- <tr>
207
- <td></td>
208
- <td>)</td>
209
- <td></td><td></td>
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>
210
169
  </tr>
211
170
  </table>
212
171
  </td>
@@ -218,8 +177,8 @@ Functions</h2></td></tr>
218
177
 
219
178
  </div>
220
179
  </div>
221
- <a id="a3bebf1fb890054c49ae16f9706fa38d2"></a>
222
- <h2 class="memtitle"><span class="permalink"><a href="#a3bebf1fb890054c49ae16f9706fa38d2">&#9670;&nbsp;</a></span>LEAKCHECKER()</h2>
180
+ <a id="a789415bb7081a399af0d4218ead5e6a5"></a>
181
+ <h2 class="memtitle"><span class="permalink"><a href="#a789415bb7081a399af0d4218ead5e6a5">&#9670;&nbsp;</a></span>LEAKCHECKER</h2>
223
182
 
224
183
  <div class="memitem">
225
184
  <div class="memproto">
@@ -228,27 +187,7 @@ Functions</h2></td></tr>
228
187
  <td class="mlabels-left">
229
188
  <table class="memname">
230
189
  <tr>
231
- <td class="memname">static llvm::cl::opt&lt;bool&gt; LEAKCHECKER </td>
232
- <td>(</td>
233
- <td class="paramtype">&quot;leak&quot;&#160;</td>
234
- <td class="paramname">, </td>
235
- </tr>
236
- <tr>
237
- <td class="paramkey"></td>
238
- <td></td>
239
- <td class="paramtype">llvm::cl::init(<a class="el" href="cJSON_8cpp.html#a65e9886d74aaee76545e83dd09011727">false</a>)&#160;</td>
240
- <td class="paramname">, </td>
241
- </tr>
242
- <tr>
243
- <td class="paramkey"></td>
244
- <td></td>
245
- <td class="paramtype">llvm::cl::desc(&quot;Memory Leak Detection&quot;)&#160;</td>
246
- <td class="paramname">&#160;</td>
247
- </tr>
248
- <tr>
249
- <td></td>
250
- <td>)</td>
251
- <td></td><td></td>
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>
252
191
  </tr>
253
192
  </table>
254
193
  </td>
@@ -258,43 +197,6 @@ Functions</h2></td></tr>
258
197
  </table>
259
198
  </div><div class="memdoc">
260
199
 
261
- </div>
262
- </div>
263
- <a id="a3c04138a5bfe5d72780bb7e82a18e627"></a>
264
- <h2 class="memtitle"><span class="permalink"><a href="#a3c04138a5bfe5d72780bb7e82a18e627">&#9670;&nbsp;</a></span>main()</h2>
265
-
266
- <div class="memitem">
267
- <div class="memproto">
268
- <table class="memname">
269
- <tr>
270
- <td class="memname">int main </td>
271
- <td>(</td>
272
- <td class="paramtype">int&#160;</td>
273
- <td class="paramname"><em>argc</em>, </td>
274
- </tr>
275
- <tr>
276
- <td class="paramkey"></td>
277
- <td></td>
278
- <td class="paramtype">char **&#160;</td>
279
- <td class="paramname"><em>argv</em>&#160;</td>
280
- </tr>
281
- <tr>
282
- <td></td>
283
- <td>)</td>
284
- <td></td><td></td>
285
- </tr>
286
- </table>
287
- </div><div class="memdoc">
288
-
289
- <p class="definition">Definition at line <a class="el" href="saber_8cpp_source.html#l00053">53</a> of file <a class="el" href="saber_8cpp_source.html">saber.cpp</a>.</p>
290
- <div class="fragment"><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">int</span> arg_num = 0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</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="l00058"></a><span class="lineno"> 58</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(argc, argv, arg_num, arg_value, moduleNameVec);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; cl::ParseCommandLineOptions(arg_num, arg_value,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="stringliteral">&quot;Source-Sink Bug Detector\n&quot;</span>);</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="keywordflow">if</span> (Options::WriteAnder == <span class="stringliteral">&quot;ir_annotator&quot;</span>)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</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; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder(svfModule);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = builder.build();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; std::unique_ptr&lt;LeakChecker&gt; saber;</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; <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#a3bebf1fb890054c49ae16f9706fa38d2">LEAKCHECKER</a>)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; saber = std::make_unique&lt;LeakChecker&gt;();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#ae054770c30aa9b9ef72d5bc84084b472">FILECHECKER</a>)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; saber = std::make_unique&lt;FileChecker&gt;();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#ae783b2330e99490ef5d366605d1098cf">DFREECHECKER</a>)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; saber = std::make_unique&lt;DoubleFreeChecker&gt;();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</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="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; saber-&gt;runOnModule(pag);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">delete</span>[] arg_value;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> 0;</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;}</div><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>
291
- <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#l00045">SVFIRBuilder.h:45</a></div></div>
292
- <div class="ttc" id="saber_8cpp_html_a3bebf1fb890054c49ae16f9706fa38d2"><div class="ttname"><a href="saber_8cpp.html#a3bebf1fb890054c49ae16f9706fa38d2">LEAKCHECKER</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; LEAKCHECKER(&quot;leak&quot;, llvm::cl::init(false), llvm::cl::desc(&quot;Memory Leak Detection&quot;))</div></div>
293
- <div class="ttc" id="saber_8cpp_html_ae054770c30aa9b9ef72d5bc84084b472"><div class="ttname"><a href="saber_8cpp.html#ae054770c30aa9b9ef72d5bc84084b472">FILECHECKER</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; FILECHECKER(&quot;fileck&quot;, llvm::cl::init(false), llvm::cl::desc(&quot;File Open/Close Detection&quot;))</div></div>
294
- <div class="ttc" id="saber_8cpp_html_ae783b2330e99490ef5d366605d1098cf"><div class="ttname"><a href="saber_8cpp.html#ae783b2330e99490ef5d366605d1098cf">DFREECHECKER</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; DFREECHECKER(&quot;dfree&quot;, llvm::cl::init(false), llvm::cl::desc(&quot;Double Free Detection&quot;))</div></div>
295
- <div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00413">LLVMUtil.cpp:413</a></div></div>
296
- <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>
297
- </div><!-- fragment -->
298
200
  </div>
299
201
  </div>
300
202
  </div><!-- contents -->
@@ -66,22 +66,23 @@ $(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="Options_8h.html">Util/Options.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="Z3Expr_8h.html">Util/Z3Expr.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</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;<span class="keyword">using namespace </span><a class="code" href="namespacellvm.html">llvm</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">static</span> llvm::cl::opt&lt;std::string&gt; <a class="code" href="saber_8cpp.html#a2d332c504284f0bc181289ee67479845">InputFilename</a>(cl::Positional,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; llvm::cl::desc(<span class="stringliteral">&quot;&lt;input bitcode&gt;&quot;</span>), llvm::cl::init(<span class="stringliteral">&quot;-&quot;</span>));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">static</span> llvm::cl::opt&lt;bool&gt; <a class="code" href="saber_8cpp.html#a3bebf1fb890054c49ae16f9706fa38d2">LEAKCHECKER</a>(<span class="stringliteral">&quot;leak&quot;</span>, llvm::cl::init(<span class="keyword">false</span>),</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; llvm::cl::desc(<span class="stringliteral">&quot;Memory Leak Detection&quot;</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;<span class="keyword">static</span> llvm::cl::opt&lt;bool&gt; <a class="code" href="saber_8cpp.html#ae054770c30aa9b9ef72d5bc84084b472">FILECHECKER</a>(<span class="stringliteral">&quot;fileck&quot;</span>, llvm::cl::init(<span class="keyword">false</span>),</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; llvm::cl::desc(<span class="stringliteral">&quot;File Open/Close Detection&quot;</span>));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">static</span> llvm::cl::opt&lt;bool&gt; <a class="code" href="saber_8cpp.html#ae783b2330e99490ef5d366605d1098cf">DFREECHECKER</a>(<span class="stringliteral">&quot;dfree&quot;</span>, llvm::cl::init(<span class="keyword">false</span>),</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; llvm::cl::desc(<span class="stringliteral">&quot;Double Free Detection&quot;</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"><a class="line" href="saber_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627"> 53</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="l00054"></a><span class="lineno"> 54</span>&#160;{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">int</span> arg_num = 0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</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="l00058"></a><span class="lineno"> 58</span>&#160; std::vector&lt;std::string&gt; moduleNameVec;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(argc, argv, arg_num, arg_value, moduleNameVec);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; cl::ParseCommandLineOptions(arg_num, arg_value,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="stringliteral">&quot;Source-Sink Bug Detector\n&quot;</span>);</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="keywordflow">if</span> (Options::WriteAnder == <span class="stringliteral">&quot;ir_annotator&quot;</span>)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; LLVMModuleSet::getLLVMModuleSet()-&gt;preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</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; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()-&gt;buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder(svfModule);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</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="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; std::unique_ptr&lt;LeakChecker&gt; saber;</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; <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#a3bebf1fb890054c49ae16f9706fa38d2">LEAKCHECKER</a>)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; saber = std::make_unique&lt;LeakChecker&gt;();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#ae054770c30aa9b9ef72d5bc84084b472">FILECHECKER</a>)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; saber = std::make_unique&lt;FileChecker&gt;();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="saber_8cpp.html#ae783b2330e99490ef5d366605d1098cf">DFREECHECKER</a>)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; saber = std::make_unique&lt;DoubleFreeChecker&gt;();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</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="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; saber-&gt;runOnModule(pag);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">delete</span>[] arg_value;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> 0;</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;}</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>
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>
70
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>
71
- <div class="ttc" id="saber_8cpp_html_a2d332c504284f0bc181289ee67479845"><div class="ttname"><a href="saber_8cpp.html#a2d332c504284f0bc181289ee67479845">InputFilename</a></div><div class="ttdeci">static llvm::cl::opt&lt; std::string &gt; InputFilename(cl::Positional, llvm::cl::desc(&quot;&lt;input bitcode&gt;&quot;), llvm::cl::init(&quot;-&quot;))</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>
72
73
  <div class="ttc" id="FileChecker_8h_html"><div class="ttname"><a href="FileChecker_8h.html">FileChecker.h</a></div></div>
73
- <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#l00053">saber.cpp:53</a></div></div>
74
+ <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>
74
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>
75
77
  <div class="ttc" id="LeakChecker_8h_html"><div class="ttname"><a href="LeakChecker_8h.html">LeakChecker.h</a></div></div>
76
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#l00045">SVFIRBuilder.h:45</a></div></div>
77
- <div class="ttc" id="saber_8cpp_html_a3bebf1fb890054c49ae16f9706fa38d2"><div class="ttname"><a href="saber_8cpp.html#a3bebf1fb890054c49ae16f9706fa38d2">LEAKCHECKER</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; LEAKCHECKER(&quot;leak&quot;, llvm::cl::init(false), llvm::cl::desc(&quot;Memory Leak Detection&quot;))</div></div>
79
+ <div class="ttc" id="CommandLine_8h_html"><div class="ttname"><a href="CommandLine_8h.html">CommandLine.h</a></div></div>
78
80
  <div class="ttc" id="Z3Expr_8h_html"><div class="ttname"><a href="Z3Expr_8h.html">Z3Expr.h</a></div></div>
79
- <div class="ttc" id="saber_8cpp_html_ae054770c30aa9b9ef72d5bc84084b472"><div class="ttname"><a href="saber_8cpp.html#ae054770c30aa9b9ef72d5bc84084b472">FILECHECKER</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; FILECHECKER(&quot;fileck&quot;, llvm::cl::init(false), llvm::cl::desc(&quot;File Open/Close Detection&quot;))</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>
80
82
  <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
81
- <div class="ttc" id="saber_8cpp_html_ae783b2330e99490ef5d366605d1098cf"><div class="ttname"><a href="saber_8cpp.html#ae783b2330e99490ef5d366605d1098cf">DFREECHECKER</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; DFREECHECKER(&quot;dfree&quot;, llvm::cl::init(false), llvm::cl::desc(&quot;Double Free Detection&quot;))</div></div>
82
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>
83
84
  <div class="ttc" id="SVFIRBuilder_8h_html"><div class="ttname"><a href="SVFIRBuilder_8h.html">SVFIRBuilder.h</a></div></div>
84
- <div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &amp;arg_num, char **arg_value, std::vector&lt; std::string &gt; &amp;moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00413">LLVMUtil.cpp:413</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>
85
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>
86
87
  <div class="ttc" id="LLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
87
88
  <div class="ttc" id="DoubleFreeChecker_8h_html"><div class="ttname"><a href="DoubleFreeChecker_8h.html">DoubleFreeChecker.h</a></div></div>
@@ -200,7 +200,7 @@ var searchData=
200
200
  ['addloadstmt',['addLoadStmt',['../classSVF_1_1SVFIR.html#a3837804b2622baf7e6991aa993286e9e',1,'SVF::SVFIR']]],
201
201
  ['addloadvfgnode',['addLoadVFGNode',['../classSVF_1_1VFG.html#a373e7066630719ffb7c62681f2c2a74e',1,'SVF::VFG']]],
202
202
  ['addmdtag',['addMDTag',['../classSVF_1_1Annotator.html#ad1424270d91f70dee1461b6301ce8091',1,'SVF::Annotator::addMDTag(Instruction *inst, std::string str)'],['../classSVF_1_1Annotator.html#ade321f69e1a727f1be15860e01effa43',1,'SVF::Annotator::addMDTag(Instruction *inst, Value *val, std::string str)']]],
203
- ['addmodelflag',['AddModelFlag',['../classSVF_1_1Options.html#af129d2ff94af3f6830c0678cb4b72371',1,'SVF::Options']]],
203
+ ['addmodelflag',['AddModelFlag',['../classSVF_1_1Options.html#aac637c9746749320a4ebd6af36212c56',1,'SVF::Options']]],
204
204
  ['addmodsideeffectofcallsite',['addModSideEffectOfCallSite',['../classSVF_1_1MRGenerator.html#a915486be8b119c1f1cc87143a2a5180e',1,'SVF::MRGenerator']]],
205
205
  ['addmodsideeffectoffunction',['addModSideEffectOfFunction',['../classSVF_1_1MRGenerator.html#a39604645ca9ba10607ada3872b14705a',1,'SVF::MRGenerator']]],
206
206
  ['addmssaphi',['AddMSSAPHI',['../classSVF_1_1MemSSA.html#ae1e97a53e1267cf357515d64fd916e1d',1,'SVF::MemSSA::AddMSSAPHI(const SVFBasicBlock *bb, const MRSet &amp;mrSet)'],['../classSVF_1_1MemSSA.html#a7c1fdb3947b503ed5ca16360e52e1cc0',1,'SVF::MemSSA::AddMSSAPHI(const SVFBasicBlock *bb, const MemRegion *mr)']]],
@@ -343,7 +343,7 @@ var searchData=
343
343
  ['aliased',['aliased',['../classSVF_1_1CondPointsToSet.html#afcbb2cae75a5dd7947cb22c440b8fd0b',1,'SVF::CondPointsToSet']]],
344
344
  ['aliasquery',['aliasQuery',['../svf-ex_8cpp.html#ad2f24f5ef6a8eaf0e4a77a8a4d31bc9f',1,'svf-ex.cpp']]],
345
345
  ['aliasresult',['AliasResult',['../namespaceSVF.html#a61c01e2e687ab3a001fb806737583943',1,'SVF']]],
346
- ['aliasrule',['AliasRule',['../classSVF_1_1Options.html#ab9db3ae038f26a350afc964952907bd7',1,'SVF::Options']]],
346
+ ['aliasrule',['AliasRule',['../classSVF_1_1Options.html#a2960fcb679f8dfee7d8822fcf9609f4a',1,'SVF::Options']]],
347
347
  ['aliasset',['AliasSet',['../classSVF_1_1SVFModule.html#a65ca3949501f11efa1eb94e08a40a2f9',1,'SVF::SVFModule']]],
348
348
  ['aliassettype',['AliasSetType',['../classSVF_1_1SVFModule.html#a9dc9266c21ba80b13ebb22731e1e9caf',1,'SVF::SVFModule']]],
349
349
  ['aliastestfailmayalias',['aliasTestFailMayAlias',['../classSVF_1_1PointerAnalysis.html#a32c6f12ce8bc0554dbb6aafa36f9a235',1,'SVF::PointerAnalysis']]],
@@ -369,7 +369,7 @@ var searchData=
369
369
  ['allocateobjectid',['allocateObjectId',['../classSVF_1_1NodeIDAllocator.html#a6ce6b40b8291c6378dda07d943d66e53',1,'SVF::NodeIDAllocator']]],
370
370
  ['allocatevalueid',['allocateValueId',['../classSVF_1_1NodeIDAllocator.html#a26b5e09e10448694435f74a8b622a7e8',1,'SVF::NodeIDAllocator']]],
371
371
  ['allocator',['allocator',['../classSVF_1_1NodeIDAllocator.html#a67e85749e539ea34146b197668a4ea64',1,'SVF::NodeIDAllocator']]],
372
- ['allpairmhp',['AllPairMHP',['../classSVF_1_1Options.html#aa78f442ee8d7272e98396fd86dea4993',1,'SVF::Options']]],
372
+ ['allpairmhp',['AllPairMHP',['../classSVF_1_1Options.html#aaa27474452c68545e883d02a334cab70',1,'SVF::Options']]],
373
373
  ['allpathreachablesolve',['AllPathReachableSolve',['../classSVF_1_1ProgSlice.html#aa7979418bed24fcecfc6fa04532cd586',1,'SVF::ProgSlice']]],
374
374
  ['analyze',['analyze',['../classSVF_1_1CFLBase.html#a2aac58e19676290042874c262f1edd4d',1,'SVF::CFLBase::analyze()'],['../classSVF_1_1ContextDDA.html#ac8fe1cb3af6048a28028f00bb87a5eba',1,'SVF::ContextDDA::analyze()'],['../classSVF_1_1FlowDDA.html#aa26f9b5ba2e51f904d8ede1db8584460',1,'SVF::FlowDDA::analyze()'],['../classSVF_1_1PointerAnalysis.html#ae1e217dc18be0ce70bee5ad930cb54c6',1,'SVF::PointerAnalysis::analyze()'],['../classSVF_1_1LockAnalysis.html#ad1516b6cb1dbd06b8dff04ae3c944621',1,'SVF::LockAnalysis::analyze()'],['../classSVF_1_1MHP.html#a02457fa6e3c85c897ec3b3d8db18cc4b',1,'SVF::MHP::analyze()'],['../classSVF_1_1MTAResultValidator.html#a462f1554e058b656861abfb0aa2e47ff',1,'SVF::MTAResultValidator::analyze()'],['../classSVF_1_1RaceResultValidator.html#ab8a261120a7f6520d22a6f5cdf2257e9',1,'SVF::RaceResultValidator::analyze()'],['../classSVF_1_1PCG.html#a50b677ec622247a464cee7f0f45c5a53',1,'SVF::PCG::analyze()'],['../classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc',1,'SVF::SrcSnkDDA::analyze()'],['../classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751',1,'SVF::AndersenBase::analyze()'],['../classSVF_1_1FlowSensitive.html#a7b3f1ca7f8996edc3ed80fdff536d519',1,'SVF::FlowSensitive::analyze()'],['../classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef',1,'SVF::TypeAnalysis::analyze()'],['../classSVF_1_1LockResultValidator.html#a88ff3ed1398a0b847d71a4c0352ed66d',1,'SVF::LockResultValidator::analyze()'],['../classSVF_1_1MTAResultValidator.html#a13073beef204314602c2dc92ec473484',1,'SVF::MTAResultValidator::analyze()'],['../classSVF_1_1RaceResultValidator.html#ab8a261120a7f6520d22a6f5cdf2257e9',1,'SVF::RaceResultValidator::analyze()']]],
375
375
  ['analyzeforkjoinpair',['analyzeForkJoinPair',['../classSVF_1_1ForkJoinAnalysis.html#a16061e7c28e7a9177d9ab798c102b815',1,'SVF::ForkJoinAnalysis']]],
@@ -387,7 +387,7 @@ var searchData=
387
387
  ['andersen_2eh',['Andersen.h',['../Andersen_8h.html',1,'']]],
388
388
  ['andersen_5fbase',['Andersen_BASE',['../classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49',1,'SVF::PointerAnalysis']]],
389
389
  ['andersen_5fwpa',['Andersen_WPA',['../classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6',1,'SVF::PointerAnalysis']]],
390
- ['andersenanno',['AndersenAnno',['../classSVF_1_1Options.html#aa4849115111e0ec81670c725027da6be',1,'SVF::Options']]],
390
+ ['andersenanno',['AndersenAnno',['../classSVF_1_1Options.html#ae639e80aa18a56bd1c6bcf41ce281930',1,'SVF::Options']]],
391
391
  ['andersenbase',['AndersenBase',['../classSVF_1_1AndersenBase.html',1,'SVF::AndersenBase'],['../classSVF_1_1AndersenBase.html#af89bc974fda6bed754bb07b3b6ee8ffe',1,'SVF::AndersenBase::AndersenBase()']]],
392
392
  ['andersenpwc_2eh',['AndersenPWC.h',['../AndersenPWC_8h.html',1,'']]],
393
393
  ['andersenscd',['AndersenSCD',['../classSVF_1_1AndersenSCD.html',1,'SVF::AndersenSCD'],['../classSVF_1_1AndersenSCD.html#a65593ef3db3762b476936f473e900a18',1,'SVF::AndersenSCD::AndersenSCD()']]],
@@ -401,12 +401,12 @@ var searchData=
401
401
  ['andersenwavediff',['AndersenWaveDiff',['../classSVF_1_1AndersenWaveDiff.html',1,'SVF::AndersenWaveDiff'],['../classSVF_1_1AndersenWaveDiff.html#a7478d23055a5db981d7a9515cffc99da',1,'SVF::AndersenWaveDiff::AndersenWaveDiff()']]],
402
402
  ['andersenwavediff_2ecpp',['AndersenWaveDiff.cpp',['../AndersenWaveDiff_8cpp.html',1,'']]],
403
403
  ['andersenwavediff_5fwpa',['AndersenWaveDiff_WPA',['../classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2',1,'SVF::PointerAnalysis']]],
404
- ['andersvfg',['AnderSVFG',['../classSVF_1_1Options.html#a30cbb0b3633c769c92f4625680ec17e3',1,'SVF::Options']]],
405
- ['andertimelimit',['AnderTimeLimit',['../classSVF_1_1Options.html#a620fe156ba70f997eace0ccb0d2c9f67',1,'SVF::Options']]],
404
+ ['andersvfg',['AnderSVFG',['../classSVF_1_1Options.html#aea9e5e0cc5de48f3b959fa25d6ef5e1f',1,'SVF::Options']]],
405
+ ['andertimelimit',['AnderTimeLimit',['../classSVF_1_1Options.html#a36db0fdd38ff9093d2e6bb30581b25e1',1,'SVF::Options']]],
406
406
  ['anno_5falias',['ANNO_ALIAS',['../classSVF_1_1MTAAnnotator.html#a27f54c50256fc4a2f96fa2305ad04eb1',1,'SVF::MTAAnnotator']]],
407
407
  ['anno_5flocal',['ANNO_LOCAL',['../classSVF_1_1MTAAnnotator.html#aded5add82485d493d57e293fd59bf960',1,'SVF::MTAAnnotator']]],
408
408
  ['anno_5fmhp',['ANNO_MHP',['../classSVF_1_1MTAAnnotator.html#a4e10dbbb742125ebcbdc079ad647b87b',1,'SVF::MTAAnnotator']]],
409
- ['annoflag',['AnnoFlag',['../classSVF_1_1Options.html#ae1dadbd4c213f1bd5b8957b5c747bebd',1,'SVF::Options']]],
409
+ ['annoflag',['AnnoFlag',['../classSVF_1_1Options.html#a279f634c0ba3b01beed6a55b01d6eae7',1,'SVF::Options']]],
410
410
  ['annotatedrcheck',['annotateDRCheck',['../classSVF_1_1MTAAnnotator.html#a5513a9f2a5b89ab5f90549552fb2b20f',1,'SVF::MTAAnnotator']]],
411
411
  ['annotateslice',['annotateSlice',['../classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd',1,'SVF::SrcSnkDDA']]],
412
412
  ['annotationtime',['AnnotationTime',['../classSVF_1_1MTAStat.html#a51e1ba35f81d89e210a937942f516839',1,'SVF::MTAStat']]],