svf-tools 1.0.633 → 1.0.635

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/CMakeLists.txt +111 -90
  2. package/SVF-doxygen/html/html/CFL_2CMakeLists_8txt.html +102 -0
  3. package/SVF-doxygen/html/html/CMakeLists_8txt.html +73 -0
  4. package/SVF-doxygen/html/html/DDA_2CMakeLists_8txt.html +102 -0
  5. package/SVF-doxygen/html/html/Example_2CMakeLists_8txt.html +102 -0
  6. package/SVF-doxygen/html/html/LockResultValidator_8cpp.html +2 -3
  7. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +6 -52
  8. package/SVF-doxygen/html/html/LockResultValidator_8h.html +2 -3
  9. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -26
  10. package/SVF-doxygen/html/html/MTAAnnotator_8cpp.html +3 -3
  11. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -57
  12. package/SVF-doxygen/html/html/MTAAnnotator_8h.html +5 -6
  13. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -22
  14. package/SVF-doxygen/html/html/MTAResultValidator_8cpp.html +2 -3
  15. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +12 -72
  16. package/SVF-doxygen/html/html/MTAResultValidator_8h.html +6 -6
  17. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +76 -114
  18. package/SVF-doxygen/html/html/MTA_2CMakeLists_8txt.html +102 -0
  19. package/SVF-doxygen/html/html/SABER_2CMakeLists_8txt.html +102 -0
  20. package/SVF-doxygen/html/html/WPA_2CMakeLists_8txt.html +102 -0
  21. package/SVF-doxygen/html/html/annotated.html +9 -468
  22. package/SVF-doxygen/html/html/cfl_8cpp.html +5 -10
  23. package/SVF-doxygen/html/html/cfl_8cpp_source.html +2 -12
  24. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +51 -119
  25. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator-members.html +2 -14
  26. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +14 -49
  27. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator-members.html +25 -43
  28. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +67 -187
  29. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.png +0 -0
  30. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator-members.html +20 -48
  31. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +345 -1317
  32. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator-members.html +8 -23
  33. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +137 -758
  34. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator_1_1AccessPair-members.html +3 -7
  35. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator_1_1AccessPair.html +37 -184
  36. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator-members.html +1 -13
  37. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +13 -48
  38. package/SVF-doxygen/html/html/classes.html +10 -123
  39. package/SVF-doxygen/html/html/dda_8cpp.html +172 -63
  40. package/SVF-doxygen/html/html/dda_8cpp_source.html +8 -20
  41. package/SVF-doxygen/html/html/dir_0c09191358c30c0f2d864382d285cb43.html +1 -1
  42. package/SVF-doxygen/html/html/files.html +19 -288
  43. package/SVF-doxygen/html/html/functions.html +322 -300
  44. package/SVF-doxygen/html/html/functions_func.html +171 -1020
  45. package/SVF-doxygen/html/html/functions_type.html +27 -17
  46. package/SVF-doxygen/html/html/functions_vars.html +151 -364
  47. package/SVF-doxygen/html/html/globals.html +53 -11
  48. package/SVF-doxygen/html/html/globals_func.html +22 -236
  49. package/SVF-doxygen/html/html/hierarchy.html +9 -543
  50. package/SVF-doxygen/html/html/menudata.js +44 -294
  51. package/SVF-doxygen/html/html/mta_8cpp.html +8 -16
  52. package/SVF-doxygen/html/html/mta_8cpp_source.html +4 -18
  53. package/SVF-doxygen/html/html/namespaceSVF.html +9 -6287
  54. package/SVF-doxygen/html/html/namespacemembers.html +3 -35
  55. package/SVF-doxygen/html/html/namespacemembers_type.html +3 -26
  56. package/SVF-doxygen/html/html/namespaces.html +2 -9
  57. package/SVF-doxygen/html/html/saber_8cpp.html +104 -53
  58. package/SVF-doxygen/html/html/saber_8cpp_source.html +5 -19
  59. package/SVF-doxygen/html/html/search/all_0.js +1 -131
  60. package/SVF-doxygen/html/html/search/all_1.js +4 -449
  61. package/SVF-doxygen/html/html/search/all_10.js +9 -310
  62. package/SVF-doxygen/html/html/search/all_11.js +1 -187
  63. package/SVF-doxygen/html/html/search/all_12.js +4 -474
  64. package/SVF-doxygen/html/html/search/all_2.js +17 -141
  65. package/SVF-doxygen/html/html/search/all_3.js +5 -592
  66. package/SVF-doxygen/html/html/search/all_4.js +3 -222
  67. package/SVF-doxygen/html/html/search/all_5.js +3 -141
  68. package/SVF-doxygen/html/html/search/all_6.js +12 -211
  69. package/SVF-doxygen/html/html/search/all_7.js +1 -923
  70. package/SVF-doxygen/html/html/search/all_8.js +17 -187
  71. package/SVF-doxygen/html/html/search/all_9.js +11 -553
  72. package/SVF-doxygen/html/html/search/all_a.js +17 -10
  73. package/SVF-doxygen/html/html/search/all_b.js +11 -21
  74. package/SVF-doxygen/html/html/search/all_c.js +5 -112
  75. package/SVF-doxygen/html/html/search/all_d.js +15 -190
  76. package/SVF-doxygen/html/html/search/all_e.js +7 -198
  77. package/SVF-doxygen/html/html/search/all_f.js +6 -122
  78. package/SVF-doxygen/html/html/search/classes_0.js +1 -25
  79. package/SVF-doxygen/html/html/search/classes_1.js +1 -7
  80. package/SVF-doxygen/html/html/search/classes_2.js +3 -69
  81. package/SVF-doxygen/html/html/search/classes_3.js +2 -32
  82. package/SVF-doxygen/html/html/search/files_0.js +2 -11
  83. package/SVF-doxygen/html/html/search/files_1.js +1 -5
  84. package/SVF-doxygen/html/html/search/files_2.js +2 -48
  85. package/SVF-doxygen/html/html/search/files_3.js +5 -14
  86. package/SVF-doxygen/html/html/search/files_4.js +2 -4
  87. package/SVF-doxygen/html/html/search/files_5.js +1 -13
  88. package/SVF-doxygen/html/html/search/functions_0.js +3 -339
  89. package/SVF-doxygen/html/html/search/functions_1.js +8 -73
  90. package/SVF-doxygen/html/html/search/functions_2.js +4 -228
  91. package/SVF-doxygen/html/html/search/functions_3.js +3 -69
  92. package/SVF-doxygen/html/html/search/functions_4.js +1 -50
  93. package/SVF-doxygen/html/html/search/functions_5.js +12 -49
  94. package/SVF-doxygen/html/html/search/functions_6.js +1 -766
  95. package/SVF-doxygen/html/html/search/functions_7.js +7 -143
  96. package/SVF-doxygen/html/html/search/functions_8.js +2 -393
  97. package/SVF-doxygen/html/html/search/functions_9.js +9 -4
  98. package/SVF-doxygen/html/html/search/functions_a.js +5 -1
  99. package/SVF-doxygen/html/html/search/functions_b.js +4 -20
  100. package/SVF-doxygen/html/html/search/functions_c.js +2 -72
  101. package/SVF-doxygen/html/html/search/functions_d.js +2 -31
  102. package/SVF-doxygen/html/html/search/functions_e.js +5 -58
  103. package/SVF-doxygen/html/html/search/functions_f.js +4 -132
  104. package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
  105. package/SVF-doxygen/html/html/search/searchdata.js +9 -21
  106. package/SVF-doxygen/html/html/search/typedefs_0.js +3 -15
  107. package/SVF-doxygen/html/html/search/typedefs_1.js +2 -24
  108. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -120
  109. package/SVF-doxygen/html/html/search/typedefs_3.js +1 -41
  110. package/SVF-doxygen/html/html/search/typedefs_4.js +3 -15
  111. package/SVF-doxygen/html/html/search/typedefs_5.js +2 -41
  112. package/SVF-doxygen/html/html/search/variables_0.js +1 -131
  113. package/SVF-doxygen/html/html/search/variables_1.js +2 -66
  114. package/SVF-doxygen/html/html/search/variables_2.js +4 -30
  115. package/SVF-doxygen/html/html/search/variables_3.js +2 -136
  116. package/SVF-doxygen/html/html/search/variables_4.js +8 -54
  117. package/SVF-doxygen/html/html/search/variables_5.js +6 -35
  118. package/SVF-doxygen/html/html/search/variables_6.js +3 -66
  119. package/SVF-doxygen/html/html/search/variables_7.js +10 -30
  120. package/SVF-doxygen/html/html/search/variables_8.js +7 -8
  121. package/SVF-doxygen/html/html/search/variables_9.js +2 -68
  122. package/SVF-doxygen/html/html/search/variables_a.js +4 -3
  123. package/SVF-doxygen/html/html/search/variables_b.js +2 -10
  124. package/SVF-doxygen/html/html/svf-ex_8cpp.html +31 -86
  125. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -64
  126. package/SVF-doxygen/html/html/wpa_8cpp.html +6 -12
  127. package/SVF-doxygen/html/html/wpa_8cpp_source.html +2 -14
  128. package/package.json +1 -1
  129. package/svf/CMakeLists.txt +26 -0
  130. package/{include → svf/include}/AbstractExecution/AbstractValue.h +0 -0
  131. package/{include → svf/include}/AbstractExecution/AddressValue.h +0 -0
  132. package/{include → svf/include}/AbstractExecution/ExeState.h +0 -0
  133. package/{include → svf/include}/AbstractExecution/IntervalExeState.h +0 -0
  134. package/{include → svf/include}/AbstractExecution/IntervalValue.h +0 -0
  135. package/{include → svf/include}/AbstractExecution/NumericLiteral.h +0 -0
  136. package/{include → svf/include}/AbstractExecution/RelExeState.h +0 -0
  137. package/{include → svf/include}/AbstractExecution/RelationSolver.h +0 -0
  138. package/{include → svf/include}/AbstractExecution/SVFIR2ItvExeState.h +0 -0
  139. package/{include → svf/include}/AbstractExecution/WTO.h +0 -0
  140. package/{include → svf/include}/CFL/CFGNormalizer.h +0 -0
  141. package/{include → svf/include}/CFL/CFLAlias.h +0 -0
  142. package/{include → svf/include}/CFL/CFLBase.h +0 -0
  143. package/{include → svf/include}/CFL/CFLData.h +0 -0
  144. package/{include → svf/include}/CFL/CFLDataBuilder.h +0 -0
  145. package/{include → svf/include}/CFL/CFLGramGraphChecker.h +0 -0
  146. package/{include → svf/include}/CFL/CFLGrammar.h +0 -0
  147. package/{include → svf/include}/CFL/CFLGrammar.txt +0 -0
  148. package/{include → svf/include}/CFL/CFLGraphBuilder.h +0 -0
  149. package/{include → svf/include}/CFL/CFLSolver.h +0 -0
  150. package/{include → svf/include}/CFL/CFLStat.h +0 -0
  151. package/{include → svf/include}/CFL/CFLVF.h +0 -0
  152. package/{include → svf/include}/CFL/GrammarBuilder.h +0 -0
  153. package/{include → svf/include}/CFL/PEGGrammar.txt +0 -0
  154. package/{include → svf/include}/CFL/VFG.txt +0 -0
  155. package/{include → svf/include}/DDA/ContextDDA.h +0 -0
  156. package/{include → svf/include}/DDA/DDAClient.h +0 -0
  157. package/{include → svf/include}/DDA/DDAPass.h +0 -0
  158. package/{include → svf/include}/DDA/DDAStat.h +0 -0
  159. package/{include → svf/include}/DDA/DDAVFSolver.h +0 -0
  160. package/{include → svf/include}/DDA/FlowDDA.h +0 -0
  161. package/{include → svf/include}/FastCluster/LICENSE.TXT +0 -0
  162. package/{include → svf/include}/FastCluster/fastcluster.h +0 -0
  163. package/{include → svf/include}/Graphs/CFLGraph.h +0 -0
  164. package/{include → svf/include}/Graphs/CHG.h +0 -0
  165. package/{include → svf/include}/Graphs/ConsG.h +0 -0
  166. package/{include → svf/include}/Graphs/ConsGEdge.h +0 -0
  167. package/{include → svf/include}/Graphs/ConsGNode.h +0 -0
  168. package/{include → svf/include}/Graphs/DOTGraphTraits.h +0 -0
  169. package/{include → svf/include}/Graphs/GenericGraph.h +0 -0
  170. package/{include → svf/include}/Graphs/GraphPrinter.h +0 -0
  171. package/{include → svf/include}/Graphs/GraphTraits.h +0 -0
  172. package/{include → svf/include}/Graphs/GraphWriter.h +0 -0
  173. package/{include → svf/include}/Graphs/ICFG.h +0 -0
  174. package/{include → svf/include}/Graphs/ICFGEdge.h +0 -0
  175. package/{include → svf/include}/Graphs/ICFGNode.h +0 -0
  176. package/{include → svf/include}/Graphs/ICFGStat.h +0 -0
  177. package/{include → svf/include}/Graphs/IRGraph.h +0 -0
  178. package/{include → svf/include}/Graphs/PTACallGraph.h +0 -0
  179. package/{include → svf/include}/Graphs/SVFG.h +0 -0
  180. package/{include → svf/include}/Graphs/SVFGEdge.h +0 -0
  181. package/{include → svf/include}/Graphs/SVFGNode.h +0 -0
  182. package/{include → svf/include}/Graphs/SVFGOPT.h +0 -0
  183. package/{include → svf/include}/Graphs/SVFGStat.h +0 -0
  184. package/{include → svf/include}/Graphs/ThreadCallGraph.h +0 -0
  185. package/{include → svf/include}/Graphs/VFG.h +0 -0
  186. package/{include → svf/include}/Graphs/VFGEdge.h +0 -0
  187. package/{include → svf/include}/Graphs/VFGNode.h +0 -0
  188. package/{include → svf/include}/MSSA/MSSAMuChi.h +0 -0
  189. package/{include → svf/include}/MSSA/MemPartition.h +0 -0
  190. package/{include → svf/include}/MSSA/MemRegion.h +0 -0
  191. package/{include → svf/include}/MSSA/MemSSA.h +0 -0
  192. package/{include → svf/include}/MSSA/SVFGBuilder.h +0 -0
  193. package/{include → svf/include}/MTA/FSMPTA.h +0 -0
  194. package/{include → svf/include}/MTA/LockAnalysis.h +0 -0
  195. package/{include → svf/include}/MTA/MHP.h +0 -0
  196. package/{include → svf/include}/MTA/MTA.h +0 -0
  197. package/{include → svf/include}/MTA/MTAResultValidator.h +0 -0
  198. package/{include → svf/include}/MTA/MTAStat.h +0 -0
  199. package/{include → svf/include}/MTA/PCG.h +0 -0
  200. package/{include → svf/include}/MTA/TCT.h +0 -0
  201. package/{include → svf/include}/MemoryModel/AbstractPointsToDS.h +0 -0
  202. package/{include → svf/include}/MemoryModel/ConditionalPT.h +0 -0
  203. package/{include → svf/include}/MemoryModel/LocationSet.h +0 -0
  204. package/{include → svf/include}/MemoryModel/MutablePointsToDS.h +0 -0
  205. package/{include → svf/include}/MemoryModel/PersistentPointsToCache.h +0 -0
  206. package/{include → svf/include}/MemoryModel/PersistentPointsToDS.h +0 -0
  207. package/{include → svf/include}/MemoryModel/PointerAnalysis.h +0 -0
  208. package/{include → svf/include}/MemoryModel/PointerAnalysisImpl.h +0 -0
  209. package/{include → svf/include}/MemoryModel/PointsTo.h +0 -0
  210. package/{include → svf/include}/MemoryModel/SVFLoop.h +0 -0
  211. package/{include → svf/include}/SABER/DoubleFreeChecker.h +0 -0
  212. package/{include → svf/include}/SABER/FileChecker.h +0 -0
  213. package/{include → svf/include}/SABER/LeakChecker.h +0 -0
  214. package/{include → svf/include}/SABER/ProgSlice.h +0 -0
  215. package/{include → svf/include}/SABER/SaberCheckerAPI.h +0 -0
  216. package/{include → svf/include}/SABER/SaberCondAllocator.h +0 -0
  217. package/{include → svf/include}/SABER/SaberSVFGBuilder.h +0 -0
  218. package/{include → svf/include}/SABER/SrcSnkDDA.h +0 -0
  219. package/{include → svf/include}/SABER/SrcSnkSolver.h +0 -0
  220. package/{include → svf/include}/SVFIR/PAGBuilderFromFile.h +0 -0
  221. package/{include → svf/include}/SVFIR/SVFIR.h +0 -0
  222. package/{include → svf/include}/SVFIR/SVFModule.h +0 -0
  223. package/{include → svf/include}/SVFIR/SVFStatements.h +0 -0
  224. package/{include → svf/include}/SVFIR/SVFType.h +12 -14
  225. package/{include → svf/include}/SVFIR/SVFValue.h +0 -0
  226. package/{include → svf/include}/SVFIR/SVFVariables.h +0 -0
  227. package/{include → svf/include}/SVFIR/SymbolTableInfo.h +0 -0
  228. package/{include → svf/include}/Util/Annotator.h +0 -0
  229. package/{include → svf/include}/Util/BitVector.h +0 -0
  230. package/{include → svf/include}/Util/CallGraphBuilder.h +0 -0
  231. package/{include → svf/include}/Util/Casting.h +0 -0
  232. package/{include → svf/include}/Util/CommandLine.h +0 -0
  233. package/{include → svf/include}/Util/CoreBitVector.h +0 -0
  234. package/{include → svf/include}/Util/CppUtil.h +0 -0
  235. package/{include → svf/include}/Util/CxtStmt.h +0 -0
  236. package/{include → svf/include}/Util/DPItem.h +0 -0
  237. package/{include → svf/include}/Util/ExtAPI.h +2 -2
  238. package/{include → svf/include}/Util/ExtAPI.json +0 -0
  239. package/{include → svf/include}/Util/GraphReachSolver.h +0 -0
  240. package/{include → svf/include}/Util/NodeIDAllocator.h +0 -0
  241. package/{include → svf/include}/Util/Options.h +0 -0
  242. package/{include → svf/include}/Util/PTAStat.h +0 -0
  243. package/{include → svf/include}/Util/SCC.h +0 -0
  244. package/{include → svf/include}/Util/SVFStat.h +0 -0
  245. package/{include → svf/include}/Util/SVFUtil.h +0 -0
  246. package/{include → svf/include}/Util/SparseBitVector.h +0 -0
  247. package/{include → svf/include}/Util/ThreadAPI.h +0 -0
  248. package/{include → svf/include}/Util/WorkList.h +0 -0
  249. package/{include → svf/include}/Util/Z3Expr.h +0 -0
  250. package/{include → svf/include}/Util/cJSON.h +0 -0
  251. package/{include → svf/include}/Util/iterator.h +0 -0
  252. package/{include → svf/include}/Util/iterator_range.h +0 -0
  253. package/{include → svf/include}/WPA/Andersen.h +0 -0
  254. package/{include → svf/include}/WPA/AndersenPWC.h +0 -0
  255. package/{include → svf/include}/WPA/CSC.h +0 -0
  256. package/{include → svf/include}/WPA/FlowSensitive.h +0 -0
  257. package/{include → svf/include}/WPA/Steensgaard.h +0 -0
  258. package/{include → svf/include}/WPA/TypeAnalysis.h +0 -0
  259. package/{include → svf/include}/WPA/VersionedFlowSensitive.h +0 -0
  260. package/{include → svf/include}/WPA/WPAFSSolver.h +0 -0
  261. package/{include → svf/include}/WPA/WPAPass.h +0 -0
  262. package/{include → svf/include}/WPA/WPASolver.h +0 -0
  263. package/{include → svf/include}/WPA/WPAStat.h +0 -0
  264. package/{lib → svf/lib}/AbstractExecution/ExeState.cpp +0 -0
  265. package/{lib → svf/lib}/AbstractExecution/IntervalExeState.cpp +0 -0
  266. package/{lib → svf/lib}/AbstractExecution/RelExeState.cpp +0 -0
  267. package/{lib → svf/lib}/AbstractExecution/RelationSolver.cpp +0 -0
  268. package/{lib → svf/lib}/AbstractExecution/SVFIR2ItvExeState.cpp +0 -0
  269. package/{lib → svf/lib}/AbstractExecution/SVFIR2Relation.cpp +0 -0
  270. package/{lib → svf/lib}/CFL/CFGNormalizer.cpp +0 -0
  271. package/{lib → svf/lib}/CFL/CFLAlias.cpp +0 -0
  272. package/{lib → svf/lib}/CFL/CFLBase.cpp +0 -0
  273. package/{lib → svf/lib}/CFL/CFLGrammar.cpp +0 -0
  274. package/{lib → svf/lib}/CFL/CFLGraphBuilder.cpp +0 -0
  275. package/{lib → svf/lib}/CFL/CFLSolver.cpp +0 -0
  276. package/{lib → svf/lib}/CFL/CFLStat.cpp +0 -0
  277. package/{lib → svf/lib}/CFL/CFLVF.cpp +0 -0
  278. package/{lib → svf/lib}/CFL/GrammarBuilder.cpp +6 -1
  279. package/{lib → svf/lib}/DDA/ContextDDA.cpp +0 -0
  280. package/{lib → svf/lib}/DDA/DDAClient.cpp +0 -0
  281. package/{lib → svf/lib}/DDA/DDAPass.cpp +0 -0
  282. package/{lib → svf/lib}/DDA/DDAStat.cpp +0 -0
  283. package/{lib → svf/lib}/DDA/FlowDDA.cpp +0 -0
  284. package/{lib → svf/lib}/FastCluster/LICENSE.TXT +0 -0
  285. package/{lib → svf/lib}/FastCluster/fastcluster.cpp +0 -0
  286. package/{lib → svf/lib}/FastCluster/fastcluster_R_dm.cpp.inc +0 -0
  287. package/{lib → svf/lib}/FastCluster/fastcluster_dm.cpp.inc +0 -0
  288. package/{lib → svf/lib}/Graphs/CFLGraph.cpp +0 -0
  289. package/{lib → svf/lib}/Graphs/CHG.cpp +0 -0
  290. package/{lib → svf/lib}/Graphs/ConsG.cpp +0 -0
  291. package/{lib → svf/lib}/Graphs/GraphWriter.cpp +0 -0
  292. package/{lib → svf/lib}/Graphs/ICFG.cpp +0 -0
  293. package/{lib → svf/lib}/Graphs/IRGraph.cpp +0 -0
  294. package/{lib → svf/lib}/Graphs/PTACallGraph.cpp +0 -0
  295. package/{lib → svf/lib}/Graphs/SVFG.cpp +0 -0
  296. package/{lib → svf/lib}/Graphs/SVFGOPT.cpp +0 -0
  297. package/{lib → svf/lib}/Graphs/SVFGReadWrite.cpp +0 -0
  298. package/{lib → svf/lib}/Graphs/SVFGStat.cpp +0 -0
  299. package/{lib → svf/lib}/Graphs/ThreadCallGraph.cpp +0 -0
  300. package/{lib → svf/lib}/Graphs/VFG.cpp +0 -0
  301. package/{lib → svf/lib}/MSSA/MemPartition.cpp +0 -0
  302. package/{lib → svf/lib}/MSSA/MemRegion.cpp +0 -0
  303. package/{lib → svf/lib}/MSSA/MemSSA.cpp +0 -0
  304. package/{lib → svf/lib}/MSSA/SVFGBuilder.cpp +0 -0
  305. package/{lib → svf/lib}/MTA/FSMPTA.cpp +0 -0
  306. package/{lib → svf/lib}/MTA/LockAnalysis.cpp +0 -0
  307. package/{lib → svf/lib}/MTA/MHP.cpp +0 -0
  308. package/{lib → svf/lib}/MTA/MTA.cpp +0 -0
  309. package/{lib → svf/lib}/MTA/MTAStat.cpp +0 -0
  310. package/{lib → svf/lib}/MTA/PCG.cpp +0 -0
  311. package/{lib → svf/lib}/MTA/TCT.cpp +0 -0
  312. package/{lib → svf/lib}/MemoryModel/LocationSet.cpp +0 -0
  313. package/{lib → svf/lib}/MemoryModel/PointerAnalysis.cpp +0 -0
  314. package/{lib → svf/lib}/MemoryModel/PointerAnalysisImpl.cpp +0 -0
  315. package/{lib → svf/lib}/MemoryModel/PointsTo.cpp +0 -0
  316. package/{lib → svf/lib}/SABER/DoubleFreeChecker.cpp +0 -0
  317. package/{lib → svf/lib}/SABER/FileChecker.cpp +0 -0
  318. package/{lib → svf/lib}/SABER/LeakChecker.cpp +0 -0
  319. package/{lib → svf/lib}/SABER/ProgSlice.cpp +0 -0
  320. package/{lib → svf/lib}/SABER/SaberCheckerAPI.cpp +0 -0
  321. package/{lib → svf/lib}/SABER/SaberCondAllocator.cpp +0 -0
  322. package/{lib → svf/lib}/SABER/SaberSVFGBuilder.cpp +0 -0
  323. package/{lib → svf/lib}/SABER/SrcSnkDDA.cpp +0 -0
  324. package/{lib → svf/lib}/SVFIR/PAGBuilderFromFile.cpp +0 -0
  325. package/{lib → svf/lib}/SVFIR/SVFIR.cpp +0 -0
  326. package/{lib → svf/lib}/SVFIR/SVFModule.cpp +0 -0
  327. package/{lib → svf/lib}/SVFIR/SVFStatements.cpp +0 -0
  328. package/{lib → svf/lib}/SVFIR/SVFValue.cpp +0 -0
  329. package/{lib → svf/lib}/SVFIR/SVFVariables.cpp +0 -0
  330. package/{lib → svf/lib}/SVFIR/SymbolTableInfo.cpp +0 -0
  331. package/{lib → svf/lib}/Util/BitVector.cpp +0 -0
  332. package/{lib → svf/lib}/Util/CallGraphBuilder.cpp +0 -0
  333. package/{lib → svf/lib}/Util/CoreBitVector.cpp +0 -0
  334. package/{lib → svf/lib}/Util/CppUtil.cpp +0 -0
  335. package/{lib → svf/lib}/Util/ExtAPI.cpp +64 -58
  336. package/{lib → svf/lib}/Util/NodeIDAllocator.cpp +0 -0
  337. package/{lib → svf/lib}/Util/Options.cpp +0 -0
  338. package/{lib → svf/lib}/Util/PTAStat.cpp +0 -0
  339. package/{lib → svf/lib}/Util/SVFStat.cpp +0 -0
  340. package/{lib → svf/lib}/Util/SVFUtil.cpp +0 -0
  341. package/{lib → svf/lib}/Util/ThreadAPI.cpp +0 -0
  342. package/{lib → svf/lib}/Util/Z3Expr.cpp +0 -0
  343. package/{lib → svf/lib}/Util/cJSON.cpp +0 -0
  344. package/{lib → svf/lib}/WPA/Andersen.cpp +0 -0
  345. package/{lib → svf/lib}/WPA/AndersenSCD.cpp +0 -0
  346. package/{lib → svf/lib}/WPA/AndersenSFR.cpp +0 -0
  347. package/{lib → svf/lib}/WPA/AndersenStat.cpp +0 -0
  348. package/{lib → svf/lib}/WPA/AndersenWaveDiff.cpp +0 -0
  349. package/{lib → svf/lib}/WPA/CSC.cpp +0 -0
  350. package/{lib → svf/lib}/WPA/FlowSensitive.cpp +0 -0
  351. package/{lib → svf/lib}/WPA/FlowSensitiveStat.cpp +0 -0
  352. package/{lib → svf/lib}/WPA/Steensgaard.cpp +0 -0
  353. package/{lib → svf/lib}/WPA/TypeAnalysis.cpp +0 -0
  354. package/{lib → svf/lib}/WPA/VersionedFlowSensitive.cpp +0 -0
  355. package/{lib → svf/lib}/WPA/VersionedFlowSensitiveStat.cpp +0 -0
  356. package/{lib → svf/lib}/WPA/WPAPass.cpp +0 -0
  357. package/svf-llvm/CMakeLists.txt +21 -0
  358. package/{include → svf-llvm/include}/SVF-LLVM/BasicTypes.h +0 -0
  359. package/{include → svf-llvm/include}/SVF-LLVM/BreakConstantExpr.h +0 -0
  360. package/{include → svf-llvm/include}/SVF-LLVM/CHGBuilder.h +0 -0
  361. package/{include → svf-llvm/include}/SVF-LLVM/DCHG.h +0 -0
  362. package/{include → svf-llvm/include}/SVF-LLVM/GEPTypeBridgeIterator.h +0 -0
  363. package/{include → svf-llvm/include}/SVF-LLVM/ICFGBuilder.h +0 -0
  364. package/{include → svf-llvm/include}/SVF-LLVM/LLVMLoopAnalysis.h +0 -0
  365. package/{include → svf-llvm/include}/SVF-LLVM/LLVMModule.h +0 -0
  366. package/{include → svf-llvm/include}/SVF-LLVM/LLVMUtil.h +0 -0
  367. package/{include → svf-llvm/include}/SVF-LLVM/SVFIRBuilder.h +0 -0
  368. package/{include → svf-llvm/include}/SVF-LLVM/SymbolTableBuilder.h +0 -0
  369. package/{lib/SVF-LLVM → svf-llvm/lib}/BreakConstantExpr.cpp +0 -0
  370. package/{lib/SVF-LLVM → svf-llvm/lib}/CHGBuilder.cpp +0 -0
  371. package/{lib/SVF-LLVM → svf-llvm/lib}/DCHG.cpp +0 -0
  372. package/{lib/SVF-LLVM → svf-llvm/lib}/ICFGBuilder.cpp +0 -0
  373. package/{lib/SVF-LLVM → svf-llvm/lib}/LLVMLoopAnalysis.cpp +0 -0
  374. package/{lib/SVF-LLVM → svf-llvm/lib}/LLVMModule.cpp +0 -0
  375. package/{lib/SVF-LLVM → svf-llvm/lib}/LLVMUtil.cpp +0 -0
  376. package/{lib/SVF-LLVM → svf-llvm/lib}/SVFIRBuilder.cpp +0 -0
  377. package/{lib/SVF-LLVM → svf-llvm/lib}/SymbolTableBuilder.cpp +0 -0
  378. package/tools/CFL/CMakeLists.txt +18 -7
  379. package/tools/CMakeLists.txt +2 -1
  380. package/tools/DDA/CMakeLists.txt +18 -7
  381. package/tools/Example/CMakeLists.txt +18 -7
  382. package/tools/Example/svf-ex.cpp +0 -1
  383. package/tools/MTA/CMakeLists.txt +20 -9
  384. package/tools/SABER/CMakeLists.txt +18 -7
  385. package/tools/WPA/CMakeLists.txt +18 -8
  386. package/lib/CMakeLists.txt +0 -55
@@ -66,58 +66,34 @@ $(function() {
66
66
  <div class="title">LockResultValidator.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="LockResultValidator_8h.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">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * LOCKResultValidator.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: 24/07/2021</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</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;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef LOCKRESULTVALIDATOR_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#define LOCKRESULTVALIDATOR_H_</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LockAnalysis_8h.html">MTA/LockAnalysis.h</a>&quot;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</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="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">/* Validate the result of lock analysis */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html"> 19</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1LockResultValidator.html">LockResultValidator</a></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6"> 22</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6">CxtLockSetStr</a>;</div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a284e4c4d5d84da5ebe0938cad8490dfc"> 23</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFInstruction*, CxtLockSetStr&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a284e4c4d5d84da5ebe0938cad8490dfc">CxtStmtToCxtLockS</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f"> 25</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f">LOCK_FLAG</a>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#acfe0b43eee73c5e02f5744d8993cb529"> 27</a></span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#acfe0b43eee73c5e02f5744d8993cb529">LockResultValidator</a>(<a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* la) : <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>(la)</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; <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a> = <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-&gt;<a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; }</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375"> 32</a></span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375">~LockResultValidator</a>() {}</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a88ff3ed1398a0b847d71a4c0352ed66d">analyze</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2"> 36</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2">getModule</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// Get CallICFGNode</span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a7638247e903414b084847b07a8bed78c"> 42</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a7638247e903414b084847b07a8bed78c">getCBN</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</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="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-&gt;<a class="code" href="classSVF_1_1TCT.html#a90f5d399420894f087a24d315ad2ee8e">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6"> 46</a></span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6">getPreviousMemoryAccessInst</a>( <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* I)</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; I = I-&gt;getPrevNode();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">while</span> (I)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(I) || SVFUtil::isa&lt;StoreInst&gt;(I))</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <span class="keyword">nullptr</span>;</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; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">LLVMUtil::isCallSite</a>(I))</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(I);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;<a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-&gt;<a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(<a class="code" href="classSVF_1_1LockResultValidator.html#a7638247e903414b084847b07a8bed78c">getCBN</a>(svfInst), callees);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">for</span>(PTACallGraph::FunctionSet::const_iterator cit = callees.begin(),</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; ecit = callees.end(); cit!=ecit; cit++)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">if</span>(*cit != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; callee = <span class="keyword">const_cast&lt;</span><a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*<span class="keyword">&gt;</span> (*cit);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">break</span>;</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;</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; }</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; <span class="keywordflow">if</span> (callee)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (callee-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">getName</a>().find(<span class="stringliteral">&quot;llvm.memset&quot;</span>) != std::string::npos)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> I;</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; I = I-&gt;getPrevNode();</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">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</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"><a class="line" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb"> 83</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb">inFilter</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)</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="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a>.find(name) != <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a>.end();</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;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07"> 88</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07">match</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> lockName, CxtLockSetStr LS)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span> LS.find(lockName) != LS.end();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</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; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> &amp;<a class="code" href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">split</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &amp;s, <span class="keywordtype">char</span> delim, <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> &amp;elems);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">split</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &amp;s, <span class="keywordtype">char</span> delim);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1LockResultValidator.html#ab71d89c954395df7d108263b3fa87330">getOutput</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* scenario, LOCK_FLAG analysisRes);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a1b1b841451fe51cb58417e864a28cbfc">getStringArg</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> arg_num);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#ae6c8782d10e96951f059789aaa309cc2">collectLockTargets</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#acddd2f9d118cbf448d92626d281fdaf9">validateStmtInLock</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a"> 103</a></span>&#160; CxtStmtToCxtLockS <a class="code" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">instToCxtLockSet</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb"> 104</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">LockAnalysis::CxtStmtToCxtLockSet</a> <a class="code" href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb">cxtStmtToCxtLockSet</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9"> 105</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">LockAnalysis::CxtLockSet</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9">cxtLockSet</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798"> 107</a></span>&#160; <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61"> 108</a></span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f"> 110</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f">LOCK_TRUE</a> = 0x01;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8"> 111</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8">LOCK_IMPRECISE</a> = 0x02;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf"> 112</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf">LOCK_UNSOUND</a> = 0x04;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371"> 114</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <span class="keyword">const</span> *<a class="code" href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">LOCK</a> = <span class="stringliteral">&quot;LOCK&quot;</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91"> 116</a></span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;std::string&gt;</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a> = {<span class="stringliteral">&quot;LOCK&quot;</span>, <span class="stringliteral">&quot;INTERLEV_ACCESS&quot;</span>, <span class="stringliteral">&quot;PAUSE&quot;</span>, <span class="stringliteral">&quot;CXT_THREAD&quot;</span>, <span class="stringliteral">&quot;TCT_ACCESS&quot;</span>};</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;};</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* LOCKRESULTVALIDATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LockResultValidator_html_adb743de97f26167b39f6a348a63db371"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">SVF::LockResultValidator::LOCK</a></div><div class="ttdeci">static constexpr char const * LOCK</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00114">LockResultValidator.h:114</a></div></div>
69
+ <a href="LockResultValidator_8h.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">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * LOCKResultValidator.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: 24/07/2021</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</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;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef LOCKRESULTVALIDATOR_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#define LOCKRESULTVALIDATOR_H_</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;MTA/LockAnalysis.h&quot;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;SVF-LLVM/LLVMUtil.h&quot;</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">/* Validate the result of lock analysis */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{</div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html"> 19</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1LockResultValidator.html">LockResultValidator</a></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6"> 22</a></span>&#160; <span class="keyword">typedef</span> Set&lt;std::string&gt; <a class="code" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6">CxtLockSetStr</a>;</div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a284e4c4d5d84da5ebe0938cad8490dfc"> 23</a></span>&#160; <span class="keyword">typedef</span> Map&lt;const SVFInstruction*, CxtLockSetStr&gt; <a class="code" href="classSVF_1_1LockResultValidator.html#a284e4c4d5d84da5ebe0938cad8490dfc">CxtStmtToCxtLockS</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f"> 25</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f">LOCK_FLAG</a>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#acfe0b43eee73c5e02f5744d8993cb529"> 27</a></span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#acfe0b43eee73c5e02f5744d8993cb529">LockResultValidator</a>(LockAnalysis* la) : <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>(la)</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; <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a> = <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;getTCT()-&gt;getSVFModule();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; }</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375"> 32</a></span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375">~LockResultValidator</a>() {}</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a88ff3ed1398a0b847d71a4c0352ed66d">analyze</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2"> 36</a></span>&#160; <span class="keyword">inline</span> SVFModule* <a class="code" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2">getModule</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// Get CallICFGNode</span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a7638247e903414b084847b07a8bed78c"> 42</a></span>&#160; <span class="keyword">inline</span> CallICFGNode* <a class="code" href="classSVF_1_1LockResultValidator.html#a7638247e903414b084847b07a8bed78c">getCBN</a>(<span class="keyword">const</span> SVFInstruction* inst)</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="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;getTCT()-&gt;getCallICFGNode(inst);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6"> 46</a></span>&#160; <span class="keyword">const</span> Instruction* <a class="code" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6">getPreviousMemoryAccessInst</a>( <span class="keyword">const</span> Instruction* I)</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; I = I-&gt;getPrevNode();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">while</span> (I)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadInst&gt;(I) || SVFUtil::isa&lt;StoreInst&gt;(I))</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; SVFFunction* callee = <span class="keyword">nullptr</span>;</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; <span class="keywordflow">if</span>(LLVMUtil::isCallSite(I))</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; PTACallGraph::FunctionSet callees;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> SVFInstruction* svfInst = LLVMModuleSet::getLLVMModuleSet()-&gt;getSVFInstruction(I);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-&gt;getTCT()-&gt;getThreadCallGraph()-&gt;getCallees(<a class="code" href="classSVF_1_1LockResultValidator.html#a7638247e903414b084847b07a8bed78c">getCBN</a>(svfInst), callees);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">for</span>(PTACallGraph::FunctionSet::const_iterator cit = callees.begin(),</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; ecit = callees.end(); cit!=ecit; cit++)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">if</span>(*cit != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; callee = <span class="keyword">const_cast&lt;</span>SVFFunction*<span class="keyword">&gt;</span> (*cit);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">break</span>;</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;</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; }</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; <span class="keywordflow">if</span> (callee)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (callee-&gt;getName().find(<span class="stringliteral">&quot;llvm.memset&quot;</span>) != std::string::npos)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> I;</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; I = I-&gt;getPrevNode();</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">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</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"><a class="line" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb"> 83</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb">inFilter</a>(std::string name)</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="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a>.find(name) != <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a>.end();</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;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07"> 88</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07">match</a>(std::string lockName, CxtLockSetStr LS)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span> LS.find(lockName) != LS.end();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</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; Set&lt;std::string&gt; &amp;<a class="code" href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">split</a>(<span class="keyword">const</span> std::string &amp;s, <span class="keywordtype">char</span> delim, Set&lt;std::string&gt; &amp;elems);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; Set&lt;std::string&gt; <a class="code" href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">split</a>(<span class="keyword">const</span> std::string &amp;s, <span class="keywordtype">char</span> delim);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; std::string <a class="code" href="classSVF_1_1LockResultValidator.html#ab71d89c954395df7d108263b3fa87330">getOutput</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* scenario, LOCK_FLAG analysisRes);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; Set&lt;std::string&gt; <a class="code" href="classSVF_1_1LockResultValidator.html#a1b1b841451fe51cb58417e864a28cbfc">getStringArg</a>(<span class="keyword">const</span> Instruction* inst, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> arg_num);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#ae6c8782d10e96951f059789aaa309cc2">collectLockTargets</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#acddd2f9d118cbf448d92626d281fdaf9">validateStmtInLock</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a"> 103</a></span>&#160; CxtStmtToCxtLockS <a class="code" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">instToCxtLockSet</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb"> 104</a></span>&#160; LockAnalysis::CxtStmtToCxtLockSet <a class="code" href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb">cxtStmtToCxtLockSet</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9"> 105</a></span>&#160; LockAnalysis::CxtLockSet <a class="code" href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9">cxtLockSet</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798"> 107</a></span>&#160; LockAnalysis* <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61"> 108</a></span>&#160; SVFModule* <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f"> 110</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f">LOCK_TRUE</a> = 0x01;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8"> 111</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8">LOCK_IMPRECISE</a> = 0x02;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf"> 112</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf">LOCK_UNSOUND</a> = 0x04;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371"> 114</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <span class="keyword">const</span> *<a class="code" href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">LOCK</a> = <span class="stringliteral">&quot;LOCK&quot;</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91"> 116</a></span>&#160; Set&lt;std::string&gt; <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a> = {<span class="stringliteral">&quot;LOCK&quot;</span>, <span class="stringliteral">&quot;INTERLEV_ACCESS&quot;</span>, <span class="stringliteral">&quot;PAUSE&quot;</span>, <span class="stringliteral">&quot;CXT_THREAD&quot;</span>, <span class="stringliteral">&quot;TCT_ACCESS&quot;</span>};</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;};</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* LOCKRESULTVALIDATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LockResultValidator_html_adb743de97f26167b39f6a348a63db371"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">SVF::LockResultValidator::LOCK</a></div><div class="ttdeci">static constexpr char const * LOCK</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00114">LockResultValidator.h:114</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_ad8a03181445edeb835fed08c88f6e0bb"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb">SVF::LockResultValidator::cxtStmtToCxtLockSet</a></div><div class="ttdeci">LockAnalysis::CxtStmtToCxtLockSet cxtStmtToCxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00104">LockResultValidator.h:104</a></div></div>
71
- <div class="ttc" id="classSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00570">SVFValue.h:570</a></div></div>
72
- <div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a5a7dc8680a9714e08b01dd339b85bb20"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">SVF::LLVMUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00047">LLVMUtil.h:47</a></div></div>
73
- <div class="ttc" id="classSVF_1_1SVFValue_html_a68b40576b24c4cb81cc3ba75550f4654"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a68b40576b24c4cb81cc3ba75550f4654">SVF::SVFValue::getName</a></div><div class="ttdeci">virtual const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00210">SVFValue.h:210</a></div></div>
74
71
  <div class="ttc" id="classSVF_1_1LockResultValidator_html"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html">SVF::LockResultValidator</a></div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00019">LockResultValidator.h:19</a></div></div>
75
- <div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set&lt; const SVFFunction * &gt; FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
76
- <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
77
72
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a03589368482d3f7ee7f6734e257dcbdf"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf">SVF::LockResultValidator::LOCK_UNSOUND</a></div><div class="ttdeci">static const LOCK_FLAG LOCK_UNSOUND</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00112">LockResultValidator.h:112</a></div></div>
78
73
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a445dbda778198acac87fbbfa029b0dfb"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb">SVF::LockResultValidator::inFilter</a></div><div class="ttdeci">bool inFilter(std::string name)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00083">LockResultValidator.h:83</a></div></div>
79
- <div class="ttc" id="cJSON_8h_html_a25d22ecc7e656d2c59332072684e8766"><div class="ttname"><a href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a></div><div class="ttdeci">const char *const name</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00264">cJSON.h:264</a></div></div>
80
- <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>
81
- <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00099">SVFType.h:99</a></div></div>
82
74
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_ab71d89c954395df7d108263b3fa87330"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#ab71d89c954395df7d108263b3fa87330">SVF::LockResultValidator::getOutput</a></div><div class="ttdeci">std::string getOutput(const char *scenario, LOCK_FLAG analysisRes)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00073">LockResultValidator.cpp:73</a></div></div>
83
75
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_ab8a6935e1ea6f99d60ead862a7b1782f"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">SVF::LockResultValidator::split</a></div><div class="ttdeci">Set&lt; std::string &gt; &amp; split(const std::string &amp;s, char delim, Set&lt; std::string &gt; &amp;elems)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00055">LockResultValidator.cpp:55</a></div></div>
84
76
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a7b8a2bf9962bd57e103039ead85821d2"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2">SVF::LockResultValidator::getModule</a></div><div class="ttdeci">SVFModule * getModule() const</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00036">LockResultValidator.h:36</a></div></div>
85
77
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a0be1cdab3c36835044e3b26d5d8402e6"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6">SVF::LockResultValidator::getPreviousMemoryAccessInst</a></div><div class="ttdeci">const Instruction * getPreviousMemoryAccessInst(const Instruction *I)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00046">LockResultValidator.h:46</a></div></div>
86
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a0716c155b42b3ae7a6c8d7593bb6ac83"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">SVF::LockAnalysis::CxtLockSet</a></div><div class="ttdeci">Set&lt; CxtLock &gt; CxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00070">LockAnalysis.h:70</a></div></div>
87
78
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_afec6058866fe334646db78227fb4d6a6"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6">SVF::LockResultValidator::CxtLockSetStr</a></div><div class="ttdeci">Set&lt; std::string &gt; CxtLockSetStr</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00022">LockResultValidator.h:22</a></div></div>
88
- <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00094">SVFType.h:94</a></div></div>
89
- <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00063">BasicTypes.h:63</a></div></div>
90
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a3e0bdc0a404d0b77ae0a1dde49c6b43d"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">SVF::LockAnalysis::getTCT</a></div><div class="ttdeci">TCT * getTCT()</div><div class="ttdoc">Get tct. </div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00324">LockAnalysis.h:324</a></div></div>
91
79
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a760c0f6f891daa4532a44c6594794bb8"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8">SVF::LockResultValidator::LOCK_IMPRECISE</a></div><div class="ttdeci">static const LOCK_FLAG LOCK_IMPRECISE</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00111">LockResultValidator.h:111</a></div></div>
92
- <div class="ttc" id="classSVF_1_1LockAnalysis_html"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html">SVF::LockAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00044">LockAnalysis.h:44</a></div></div>
93
- <div class="ttc" id="classSVF_1_1TCT_html_aabc2c84e951ed9ae64207e379acb3074"><div class="ttname"><a href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">SVF::TCT::getSVFModule</a></div><div class="ttdeci">SVFModule * getSVFModule() const</div><div class="ttdoc">Get SVFFModule. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00176">TCT.h:176</a></div></div>
94
80
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_acfe0b43eee73c5e02f5744d8993cb529"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#acfe0b43eee73c5e02f5744d8993cb529">SVF::LockResultValidator::LockResultValidator</a></div><div class="ttdeci">LockResultValidator(LockAnalysis *la)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00027">LockResultValidator.h:27</a></div></div>
95
81
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a841c1dfb065999215b5f415e403f7a2a"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">SVF::LockResultValidator::instToCxtLockSet</a></div><div class="ttdeci">CxtStmtToCxtLockS instToCxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00103">LockResultValidator.h:103</a></div></div>
96
82
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a3b7d25dfe5251f49afbb733c25eee70f"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f">SVF::LockResultValidator::LOCK_FLAG</a></div><div class="ttdeci">unsigned LOCK_FLAG</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00025">LockResultValidator.h:25</a></div></div>
97
83
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a51e6f48be9f2a65b390e4e0350eb12a9"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9">SVF::LockResultValidator::cxtLockSet</a></div><div class="ttdeci">LockAnalysis::CxtLockSet cxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00105">LockResultValidator.h:105</a></div></div>
98
- <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
99
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00096">LLVMModule.h:96</a></div></div>
100
84
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_ae6c8782d10e96951f059789aaa309cc2"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#ae6c8782d10e96951f059789aaa309cc2">SVF::LockResultValidator::collectLockTargets</a></div><div class="ttdeci">bool collectLockTargets()</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00094">LockResultValidator.cpp:94</a></div></div>
101
- <div class="ttc" id="classSVF_1_1TCT_html_a1602d02773578bca73dcbd29b95c67d0"><div class="ttname"><a href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">SVF::TCT::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get TCG. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00182">TCT.h:182</a></div></div>
102
- <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>
85
+ <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00016">LockResultValidator.cpp:16</a></div></div>
103
86
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a1b1b841451fe51cb58417e864a28cbfc"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a1b1b841451fe51cb58417e864a28cbfc">SVF::LockResultValidator::getStringArg</a></div><div class="ttdeci">Set&lt; std::string &gt; getStringArg(const Instruction *inst, unsigned int arg_num)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00038">LockResultValidator.cpp:38</a></div></div>
104
- <div class="ttc" id="classSVF_1_1TCT_html_a90f5d399420894f087a24d315ad2ee8e"><div class="ttname"><a href="classSVF_1_1TCT.html#a90f5d399420894f087a24d315ad2ee8e">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const SVFInstruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00171">TCT.h:171</a></div></div>
105
87
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a284e4c4d5d84da5ebe0938cad8490dfc"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a284e4c4d5d84da5ebe0938cad8490dfc">SVF::LockResultValidator::CxtStmtToCxtLockS</a></div><div class="ttdeci">Map&lt; const SVFInstruction *, CxtLockSetStr &gt; CxtStmtToCxtLockS</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00023">LockResultValidator.h:23</a></div></div>
106
88
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a005c38dd07eb66d52066fa1927b1e19f"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f">SVF::LockResultValidator::LOCK_TRUE</a></div><div class="ttdeci">static const LOCK_FLAG LOCK_TRUE</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00110">LockResultValidator.h:110</a></div></div>
107
- <div class="ttc" id="LockAnalysis_8h_html"><div class="ttname"><a href="LockAnalysis_8h.html">LockAnalysis.h</a></div></div>
108
89
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a2e3ded56c4e1e1a2a0b28c0d44011b61"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">SVF::LockResultValidator::_mod</a></div><div class="ttdeci">SVFModule * _mod</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00108">LockResultValidator.h:108</a></div></div>
109
90
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a88ff3ed1398a0b847d71a4c0352ed66d"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a88ff3ed1398a0b847d71a4c0352ed66d">SVF::LockResultValidator::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00201">LockResultValidator.cpp:201</a></div></div>
110
- <div class="ttc" id="classSVF_1_1LockAnalysis_html_a710aad28484677637367e9098a55c7d7"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">SVF::LockAnalysis::CxtStmtToCxtLockSet</a></div><div class="ttdeci">Map&lt; CxtStmt, CxtLockSet &gt; CxtStmtToCxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00076">LockAnalysis.h:76</a></div></div>
111
91
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_acddd2f9d118cbf448d92626d281fdaf9"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#acddd2f9d118cbf448d92626d281fdaf9">SVF::LockResultValidator::validateStmtInLock</a></div><div class="ttdeci">LOCK_FLAG validateStmtInLock()</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00135">LockResultValidator.cpp:135</a></div></div>
112
92
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_ae68afb4d129dc6cecfc3561f6a17c798"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">SVF::LockResultValidator::_la</a></div><div class="ttdeci">LockAnalysis * _la</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00107">LockResultValidator.h:107</a></div></div>
113
93
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_aa1b48d5792e596703f3283316e9f4c07"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07">SVF::LockResultValidator::match</a></div><div class="ttdeci">bool match(std::string lockName, CxtLockSetStr LS)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00088">LockResultValidator.h:88</a></div></div>
114
- <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
115
94
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a70cdb993b3e90c70cc083fb8ed93fb91"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">SVF::LockResultValidator::filterFun</a></div><div class="ttdeci">Set&lt; std::string &gt; filterFun</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00116">LockResultValidator.h:116</a></div></div>
116
- <div class="ttc" id="LLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
117
95
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a6790b9a632b172e1ea537ab93f526375"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375">SVF::LockResultValidator::~LockResultValidator</a></div><div class="ttdeci">~LockResultValidator()</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00032">LockResultValidator.h:32</a></div></div>
118
96
  <div class="ttc" id="classSVF_1_1LockResultValidator_html_a7638247e903414b084847b07a8bed78c"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a7638247e903414b084847b07a8bed78c">SVF::LockResultValidator::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const SVFInstruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00042">LockResultValidator.h:42</a></div></div>
119
- <div class="ttc" id="classSVF_1_1PTACallGraph_html_a317e09edb29b110cf4273009551d31ec"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">SVF::PTACallGraph::getCallees</a></div><div class="ttdeci">void getCallees(const CallICFGNode *cs, FunctionSet &amp;callees)</div><div class="ttdoc">Get all callees for a callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00382">PTACallGraph.h:382</a></div></div>
120
- <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00209">LLVMModule.h:209</a></div></div>
121
97
  </div><!-- fragment --></div><!-- contents -->
122
98
  <!-- start footer part -->
123
99
  <hr class="footer"/><address class="footer"><small>
@@ -66,10 +66,10 @@ $(function() {
66
66
  <div class="title">MTAAnnotator.cpp File Reference</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <div class="textblock"><code>#include &quot;<a class="el" href="Options_8h_source.html">Util/Options.h</a>&quot;</code><br />
69
+ <div class="textblock"><code>#include &quot;Util/Options.h&quot;</code><br />
70
70
  <code>#include &quot;<a class="el" href="MTAAnnotator_8h_source.html">MTAAnnotator.h</a>&quot;</code><br />
71
- <code>#include &quot;<a class="el" href="LockAnalysis_8h_source.html">MTA/LockAnalysis.h</a>&quot;</code><br />
72
- <code>#include &quot;<a class="el" href="PointsTo_8h_source.html">MemoryModel/PointsTo.h</a>&quot;</code><br />
71
+ <code>#include &quot;MTA/LockAnalysis.h&quot;</code><br />
72
+ <code>#include &quot;MemoryModel/PointsTo.h&quot;</code><br />
73
73
  <code>#include &lt;sstream&gt;</code><br />
74
74
  </div>
75
75
  <p><a href="MTAAnnotator_8cpp_source.html">Go to the source code of this file.</a></p>