svf-lib 1.0.2319 → 1.0.2321

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 (320) hide show
  1. package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/WorkList.h +0 -0
  2. package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/Modules/FindZ3.cmake +93 -0
  3. package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFConfig.cmake +106 -0
  4. package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFConfigVersion.cmake +43 -0
  5. package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFTargets-release.cmake +101 -0
  6. package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFTargets.cmake +180 -0
  7. package/SVF-linux-aarch64/Release-build/lib/libSvfCore.so.3.1 +0 -0
  8. package/SVF-linux-aarch64/Release-build/lib/libSvfLLVM.so.3.1 +0 -0
  9. package/SVF-linux-aarch64/Release-build/lib/pkgconfig/SVF.pc +12 -0
  10. package/SVF-osx/Release-build/bin/ae +0 -0
  11. package/SVF-osx/Release-build/bin/cfl +0 -0
  12. package/SVF-osx/Release-build/bin/dvf +0 -0
  13. package/SVF-osx/Release-build/bin/llvm2svf +0 -0
  14. package/SVF-osx/Release-build/bin/mta +0 -0
  15. package/SVF-osx/Release-build/bin/saber +0 -0
  16. package/SVF-osx/Release-build/bin/svf-ex +0 -0
  17. package/SVF-osx/Release-build/bin/wpa +0 -0
  18. package/SVF-osx/Release-build/include/SVF/AE/Core/AbstractState.h +425 -0
  19. package/SVF-osx/Release-build/include/SVF/AE/Core/AbstractValue.h +157 -0
  20. package/SVF-osx/Release-build/include/SVF/AE/Core/AddressValue.h +225 -0
  21. package/SVF-osx/Release-build/include/SVF/AE/Core/ICFGWTO.h +135 -0
  22. package/SVF-osx/Release-build/include/SVF/AE/Core/IntervalValue.h +1055 -0
  23. package/SVF-osx/Release-build/include/SVF/AE/Core/NumericValue.h +1292 -0
  24. package/SVF-osx/Release-build/include/SVF/AE/Core/RelExeState.h +226 -0
  25. package/SVF-osx/Release-build/include/SVF/AE/Core/RelationSolver.h +91 -0
  26. package/SVF-osx/Release-build/include/SVF/AE/Svfexe/AEDetector.h +439 -0
  27. package/SVF-osx/Release-build/include/SVF/AE/Svfexe/AbsExtAPI.h +138 -0
  28. package/SVF-osx/Release-build/include/SVF/AE/Svfexe/AbstractInterpretation.h +384 -0
  29. package/SVF-osx/Release-build/include/SVF/CFL/CFGNormalizer.h +84 -0
  30. package/SVF-osx/Release-build/include/SVF/CFL/CFGrammar.h +468 -0
  31. package/SVF-osx/Release-build/include/SVF/CFL/CFLAlias.h +168 -0
  32. package/SVF-osx/Release-build/include/SVF/CFL/CFLBase.h +118 -0
  33. package/SVF-osx/Release-build/include/SVF/CFL/CFLGramGraphChecker.h +74 -0
  34. package/SVF-osx/Release-build/include/SVF/CFL/CFLGraphBuilder.h +168 -0
  35. package/SVF-osx/Release-build/include/SVF/CFL/CFLSVFGBuilder.h +58 -0
  36. package/SVF-osx/Release-build/include/SVF/CFL/CFLSolver.h +374 -0
  37. package/SVF-osx/Release-build/include/SVF/CFL/CFLStat.h +67 -0
  38. package/SVF-osx/Release-build/include/SVF/CFL/CFLVF.h +68 -0
  39. package/SVF-osx/Release-build/include/SVF/CFL/GrammarBuilder.h +100 -0
  40. package/SVF-osx/Release-build/include/SVF/DDA/ContextDDA.h +230 -0
  41. package/SVF-osx/Release-build/include/SVF/DDA/DDAClient.h +163 -0
  42. package/SVF-osx/Release-build/include/SVF/DDA/DDAPass.h +102 -0
  43. package/SVF-osx/Release-build/include/SVF/DDA/DDAStat.h +121 -0
  44. package/SVF-osx/Release-build/include/SVF/DDA/DDAVFSolver.h +794 -0
  45. package/SVF-osx/Release-build/include/SVF/DDA/FlowDDA.h +178 -0
  46. package/SVF-osx/Release-build/include/SVF/FastCluster/fastcluster.h +80 -0
  47. package/SVF-osx/Release-build/include/SVF/Graphs/BasicBlockG.h +318 -0
  48. package/SVF-osx/Release-build/include/SVF/Graphs/CDG.h +482 -0
  49. package/SVF-osx/Release-build/include/SVF/Graphs/CFLGraph.h +232 -0
  50. package/SVF-osx/Release-build/include/SVF/Graphs/CHG.h +368 -0
  51. package/SVF-osx/Release-build/include/SVF/Graphs/CallGraph.h +497 -0
  52. package/SVF-osx/Release-build/include/SVF/Graphs/ConsG.h +402 -0
  53. package/SVF-osx/Release-build/include/SVF/Graphs/ConsGEdge.h +355 -0
  54. package/SVF-osx/Release-build/include/SVF/Graphs/ConsGNode.h +418 -0
  55. package/SVF-osx/Release-build/include/SVF/Graphs/DOTGraphTraits.h +188 -0
  56. package/SVF-osx/Release-build/include/SVF/Graphs/GenericGraph.h +628 -0
  57. package/SVF-osx/Release-build/include/SVF/Graphs/GraphPrinter.h +111 -0
  58. package/SVF-osx/Release-build/include/SVF/Graphs/GraphTraits.h +150 -0
  59. package/SVF-osx/Release-build/include/SVF/Graphs/GraphWriter.h +380 -0
  60. package/SVF-osx/Release-build/include/SVF/Graphs/ICFG.h +331 -0
  61. package/SVF-osx/Release-build/include/SVF/Graphs/ICFGEdge.h +281 -0
  62. package/SVF-osx/Release-build/include/SVF/Graphs/ICFGNode.h +669 -0
  63. package/SVF-osx/Release-build/include/SVF/Graphs/ICFGStat.h +164 -0
  64. package/SVF-osx/Release-build/include/SVF/Graphs/IRGraph.h +398 -0
  65. package/SVF-osx/Release-build/include/SVF/Graphs/SCC.h +375 -0
  66. package/SVF-osx/Release-build/include/SVF/Graphs/SVFG.h +491 -0
  67. package/SVF-osx/Release-build/include/SVF/Graphs/SVFGEdge.h +237 -0
  68. package/SVF-osx/Release-build/include/SVF/Graphs/SVFGNode.h +501 -0
  69. package/SVF-osx/Release-build/include/SVF/Graphs/SVFGOPT.h +372 -0
  70. package/SVF-osx/Release-build/include/SVF/Graphs/SVFGStat.h +273 -0
  71. package/SVF-osx/Release-build/include/SVF/Graphs/ThreadCallGraph.h +399 -0
  72. package/SVF-osx/Release-build/include/SVF/Graphs/VFG.h +726 -0
  73. package/SVF-osx/Release-build/include/SVF/Graphs/VFGEdge.h +295 -0
  74. package/SVF-osx/Release-build/include/SVF/Graphs/VFGNode.h +1266 -0
  75. package/SVF-osx/Release-build/include/SVF/Graphs/WTO.h +872 -0
  76. package/SVF-osx/Release-build/include/SVF/MSSA/MSSAMuChi.h +722 -0
  77. package/SVF-osx/Release-build/include/SVF/MSSA/MemPartition.h +169 -0
  78. package/SVF-osx/Release-build/include/SVF/MSSA/MemRegion.h +489 -0
  79. package/SVF-osx/Release-build/include/SVF/MSSA/MemSSA.h +452 -0
  80. package/SVF-osx/Release-build/include/SVF/MSSA/SVFGBuilder.h +104 -0
  81. package/SVF-osx/Release-build/include/SVF/MTA/LockAnalysis.h +533 -0
  82. package/SVF-osx/Release-build/include/SVF/MTA/MHP.h +546 -0
  83. package/SVF-osx/Release-build/include/SVF/MTA/MTA.h +97 -0
  84. package/SVF-osx/Release-build/include/SVF/MTA/MTAStat.h +73 -0
  85. package/SVF-osx/Release-build/include/SVF/MTA/TCT.h +620 -0
  86. package/SVF-osx/Release-build/include/SVF/MemoryModel/AbstractPointsToDS.h +316 -0
  87. package/SVF-osx/Release-build/include/SVF/MemoryModel/AccessPath.h +194 -0
  88. package/SVF-osx/Release-build/include/SVF/MemoryModel/ConditionalPT.h +878 -0
  89. package/SVF-osx/Release-build/include/SVF/MemoryModel/MutablePointsToDS.h +1025 -0
  90. package/SVF-osx/Release-build/include/SVF/MemoryModel/PersistentPointsToCache.h +463 -0
  91. package/SVF-osx/Release-build/include/SVF/MemoryModel/PersistentPointsToDS.h +955 -0
  92. package/SVF-osx/Release-build/include/SVF/MemoryModel/PointerAnalysis.h +428 -0
  93. package/SVF-osx/Release-build/include/SVF/MemoryModel/PointerAnalysisImpl.h +602 -0
  94. package/SVF-osx/Release-build/include/SVF/MemoryModel/PointsTo.h +255 -0
  95. package/SVF-osx/Release-build/include/SVF/MemoryModel/SVFLoop.h +167 -0
  96. package/SVF-osx/Release-build/include/SVF/SABER/DoubleFreeChecker.h +76 -0
  97. package/SVF-osx/Release-build/include/SVF/SABER/FileChecker.h +80 -0
  98. package/SVF-osx/Release-build/include/SVF/SABER/LeakChecker.h +122 -0
  99. package/SVF-osx/Release-build/include/SVF/SABER/ProgSlice.h +327 -0
  100. package/SVF-osx/Release-build/include/SVF/SABER/SaberCheckerAPI.h +151 -0
  101. package/SVF-osx/Release-build/include/SVF/SABER/SaberCondAllocator.h +317 -0
  102. package/SVF-osx/Release-build/include/SVF/SABER/SaberSVFGBuilder.h +114 -0
  103. package/SVF-osx/Release-build/include/SVF/SABER/SrcSnkDDA.h +327 -0
  104. package/SVF-osx/Release-build/include/SVF/SABER/SrcSnkSolver.h +186 -0
  105. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/BasicTypes.h +280 -0
  106. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/BreakConstantExpr.h +93 -0
  107. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/CHGBuilder.h +78 -0
  108. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/CppUtil.h +184 -0
  109. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/DCHG.h +474 -0
  110. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/GEPTypeBridgeIterator.h +183 -0
  111. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/ICFGBuilder.h +160 -0
  112. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/LLVMLoopAnalysis.h +60 -0
  113. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/LLVMModule.h +527 -0
  114. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/LLVMUtil.h +433 -0
  115. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/ObjTypeInference.h +129 -0
  116. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/SVFIRBuilder.h +523 -0
  117. package/SVF-osx/Release-build/include/SVF/SVF-LLVM/SymbolTableBuilder.h +132 -0
  118. package/SVF-osx/Release-build/include/SVF/SVFIR/ObjTypeInfo.h +224 -0
  119. package/SVF-osx/Release-build/include/SVF/SVFIR/PAGBuilderFromFile.h +80 -0
  120. package/SVF-osx/Release-build/include/SVF/SVFIR/SVFIR.h +856 -0
  121. package/SVF-osx/Release-build/include/SVF/SVFIR/SVFStatements.h +1330 -0
  122. package/SVF-osx/Release-build/include/SVF/SVFIR/SVFType.h +606 -0
  123. package/SVF-osx/Release-build/include/SVF/SVFIR/SVFValue.h +338 -0
  124. package/SVF-osx/Release-build/include/SVF/SVFIR/SVFVariables.h +2212 -0
  125. package/SVF-osx/Release-build/include/SVF/Util/Annotator.h +180 -0
  126. package/SVF-osx/Release-build/include/SVF/Util/BitVector.h +55 -0
  127. package/SVF-osx/Release-build/include/SVF/Util/CDGBuilder.h +107 -0
  128. package/SVF-osx/Release-build/include/SVF/Util/CallGraphBuilder.h +61 -0
  129. package/SVF-osx/Release-build/include/SVF/Util/Casting.h +426 -0
  130. package/SVF-osx/Release-build/include/SVF/Util/CommandLine.h +530 -0
  131. package/SVF-osx/Release-build/include/SVF/Util/CoreBitVector.h +214 -0
  132. package/SVF-osx/Release-build/include/SVF/Util/CxtStmt.h +502 -0
  133. package/SVF-osx/Release-build/include/SVF/Util/DPItem.h +618 -0
  134. package/SVF-osx/Release-build/include/SVF/Util/ExtAPI.h +117 -0
  135. package/SVF-osx/Release-build/include/SVF/Util/GeneralType.h +127 -0
  136. package/SVF-osx/Release-build/include/SVF/Util/GraphReachSolver.h +186 -0
  137. package/SVF-osx/Release-build/include/SVF/Util/NodeIDAllocator.h +203 -0
  138. package/SVF-osx/Release-build/include/SVF/Util/Options.h +273 -0
  139. package/SVF-osx/Release-build/include/SVF/Util/PTAStat.h +83 -0
  140. package/SVF-osx/Release-build/include/SVF/Util/SVFBugReport.h +427 -0
  141. package/SVF-osx/Release-build/include/SVF/Util/SVFLoopAndDomInfo.h +169 -0
  142. package/SVF-osx/Release-build/include/SVF/Util/SVFStat.h +103 -0
  143. package/SVF-osx/Release-build/include/SVF/Util/SVFUtil.h +478 -0
  144. package/SVF-osx/Release-build/include/SVF/Util/SparseBitVector.h +1252 -0
  145. package/SVF-osx/Release-build/include/SVF/Util/ThreadAPI.h +188 -0
  146. package/SVF-osx/Release-build/include/SVF/Util/WorkList.h +317 -0
  147. package/SVF-osx/Release-build/include/SVF/Util/Z3Expr.h +325 -0
  148. package/SVF-osx/Release-build/include/SVF/Util/cJSON.h +300 -0
  149. package/SVF-osx/Release-build/include/SVF/Util/config.h +46 -0
  150. package/SVF-osx/Release-build/include/SVF/Util/iterator.h +407 -0
  151. package/SVF-osx/Release-build/include/SVF/Util/iterator_range.h +76 -0
  152. package/SVF-osx/Release-build/include/SVF/WPA/Andersen.h +434 -0
  153. package/SVF-osx/Release-build/include/SVF/WPA/AndersenPWC.h +160 -0
  154. package/SVF-osx/Release-build/include/SVF/WPA/CSC.h +95 -0
  155. package/SVF-osx/Release-build/include/SVF/WPA/FlowSensitive.h +322 -0
  156. package/SVF-osx/Release-build/include/SVF/WPA/Steensgaard.h +131 -0
  157. package/SVF-osx/Release-build/include/SVF/WPA/TypeAnalysis.h +90 -0
  158. package/SVF-osx/Release-build/include/SVF/WPA/VersionedFlowSensitive.h +295 -0
  159. package/SVF-osx/Release-build/include/SVF/WPA/WPAFSSolver.h +246 -0
  160. package/SVF-osx/Release-build/include/SVF/WPA/WPAPass.h +115 -0
  161. package/SVF-osx/Release-build/include/SVF/WPA/WPASolver.h +205 -0
  162. package/SVF-osx/Release-build/include/SVF/WPA/WPAStat.h +222 -0
  163. package/SVF-osx/Release-build/include/SVF/extapi.bc +2384 -0
  164. package/SVF-osx/Release-build/lib/cmake/SVF/Modules/FindZ3.cmake +93 -0
  165. package/SVF-osx/Release-build/lib/cmake/SVF/SVFConfig.cmake +106 -0
  166. package/SVF-osx/Release-build/lib/cmake/SVF/SVFConfigVersion.cmake +43 -0
  167. package/SVF-osx/Release-build/lib/cmake/SVF/SVFTargets-release.cmake +101 -0
  168. package/SVF-osx/Release-build/lib/cmake/SVF/SVFTargets.cmake +180 -0
  169. package/SVF-osx/Release-build/lib/libSvfCore.3.1.dylib +0 -0
  170. package/SVF-osx/Release-build/lib/libSvfLLVM.3.1.dylib +0 -0
  171. package/SVF-osx/Release-build/lib/pkgconfig/SVF.pc +12 -0
  172. package/package.json +1 -1
  173. package/SVF-linux-aarch64/Release-build/include/CFL/grammar/PAGGrammar.txt +0 -15
  174. package/SVF-linux-aarch64/Release-build/include/CFL/grammar/PEGGrammar.txt +0 -11
  175. package/SVF-linux-aarch64/Release-build/include/CFL/grammar/VFGGrammar.txt +0 -7
  176. package/SVF-linux-aarch64/Release-build/include/FastCluster/LICENSE.TXT +0 -13
  177. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/AbstractState.h +0 -0
  178. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/AbstractValue.h +0 -0
  179. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/AddressValue.h +0 -0
  180. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/ICFGWTO.h +0 -0
  181. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/IntervalValue.h +0 -0
  182. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/NumericValue.h +0 -0
  183. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/RelExeState.h +0 -0
  184. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/RelationSolver.h +0 -0
  185. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Svfexe/AEDetector.h +0 -0
  186. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Svfexe/AbsExtAPI.h +0 -0
  187. /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Svfexe/AbstractInterpretation.h +0 -0
  188. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFGNormalizer.h +0 -0
  189. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFGrammar.h +0 -0
  190. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLAlias.h +0 -0
  191. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLBase.h +0 -0
  192. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLGramGraphChecker.h +0 -0
  193. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLGraphBuilder.h +0 -0
  194. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLSVFGBuilder.h +0 -0
  195. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLSolver.h +0 -0
  196. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLStat.h +0 -0
  197. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLVF.h +0 -0
  198. /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/GrammarBuilder.h +0 -0
  199. /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/ContextDDA.h +0 -0
  200. /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAClient.h +0 -0
  201. /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAPass.h +0 -0
  202. /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAStat.h +0 -0
  203. /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAVFSolver.h +0 -0
  204. /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/FlowDDA.h +0 -0
  205. /package/SVF-linux-aarch64/Release-build/include/{FastCluster → SVF/FastCluster}/fastcluster.h +0 -0
  206. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/BasicBlockG.h +0 -0
  207. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CDG.h +0 -0
  208. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CFLGraph.h +0 -0
  209. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CHG.h +0 -0
  210. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CallGraph.h +0 -0
  211. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ConsG.h +0 -0
  212. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ConsGEdge.h +0 -0
  213. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ConsGNode.h +0 -0
  214. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/DOTGraphTraits.h +0 -0
  215. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GenericGraph.h +0 -0
  216. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GraphPrinter.h +0 -0
  217. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GraphTraits.h +0 -0
  218. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GraphWriter.h +0 -0
  219. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFG.h +0 -0
  220. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFGEdge.h +0 -0
  221. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFGNode.h +0 -0
  222. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFGStat.h +0 -0
  223. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/IRGraph.h +0 -0
  224. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SCC.h +0 -0
  225. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFG.h +0 -0
  226. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGEdge.h +0 -0
  227. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGNode.h +0 -0
  228. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGOPT.h +0 -0
  229. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGStat.h +0 -0
  230. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ThreadCallGraph.h +0 -0
  231. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/VFG.h +0 -0
  232. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/VFGEdge.h +0 -0
  233. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/VFGNode.h +0 -0
  234. /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/WTO.h +0 -0
  235. /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MSSAMuChi.h +0 -0
  236. /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MemPartition.h +0 -0
  237. /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MemRegion.h +0 -0
  238. /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MemSSA.h +0 -0
  239. /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/SVFGBuilder.h +0 -0
  240. /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/LockAnalysis.h +0 -0
  241. /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/MHP.h +0 -0
  242. /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/MTA.h +0 -0
  243. /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/MTAStat.h +0 -0
  244. /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/TCT.h +0 -0
  245. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/AbstractPointsToDS.h +0 -0
  246. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/AccessPath.h +0 -0
  247. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/ConditionalPT.h +0 -0
  248. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/MutablePointsToDS.h +0 -0
  249. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PersistentPointsToCache.h +0 -0
  250. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PersistentPointsToDS.h +0 -0
  251. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PointerAnalysis.h +0 -0
  252. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PointerAnalysisImpl.h +0 -0
  253. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PointsTo.h +0 -0
  254. /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/SVFLoop.h +0 -0
  255. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/DoubleFreeChecker.h +0 -0
  256. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/FileChecker.h +0 -0
  257. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/LeakChecker.h +0 -0
  258. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/ProgSlice.h +0 -0
  259. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SaberCheckerAPI.h +0 -0
  260. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SaberCondAllocator.h +0 -0
  261. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SaberSVFGBuilder.h +0 -0
  262. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SrcSnkDDA.h +0 -0
  263. /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SrcSnkSolver.h +0 -0
  264. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/BasicTypes.h +0 -0
  265. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/BreakConstantExpr.h +0 -0
  266. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/CHGBuilder.h +0 -0
  267. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/CppUtil.h +0 -0
  268. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/DCHG.h +0 -0
  269. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/GEPTypeBridgeIterator.h +0 -0
  270. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/ICFGBuilder.h +0 -0
  271. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/LLVMLoopAnalysis.h +0 -0
  272. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/LLVMModule.h +0 -0
  273. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/LLVMUtil.h +0 -0
  274. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/ObjTypeInference.h +0 -0
  275. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/SVFIRBuilder.h +0 -0
  276. /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/SymbolTableBuilder.h +0 -0
  277. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/ObjTypeInfo.h +0 -0
  278. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/PAGBuilderFromFile.h +0 -0
  279. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFIR.h +0 -0
  280. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFStatements.h +0 -0
  281. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFType.h +0 -0
  282. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFValue.h +0 -0
  283. /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFVariables.h +0 -0
  284. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Annotator.h +0 -0
  285. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/BitVector.h +0 -0
  286. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CDGBuilder.h +0 -0
  287. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CallGraphBuilder.h +0 -0
  288. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Casting.h +0 -0
  289. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CommandLine.h +0 -0
  290. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CoreBitVector.h +0 -0
  291. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CxtStmt.h +0 -0
  292. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/DPItem.h +0 -0
  293. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/ExtAPI.h +0 -0
  294. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/GeneralType.h +0 -0
  295. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/GraphReachSolver.h +0 -0
  296. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/NodeIDAllocator.h +0 -0
  297. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Options.h +0 -0
  298. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/PTAStat.h +0 -0
  299. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFBugReport.h +0 -0
  300. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFLoopAndDomInfo.h +0 -0
  301. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFStat.h +0 -0
  302. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFUtil.h +0 -0
  303. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SparseBitVector.h +0 -0
  304. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/ThreadAPI.h +0 -0
  305. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Z3Expr.h +0 -0
  306. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/cJSON.h +0 -0
  307. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/iterator.h +0 -0
  308. /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/iterator_range.h +0 -0
  309. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/Andersen.h +0 -0
  310. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/AndersenPWC.h +0 -0
  311. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/CSC.h +0 -0
  312. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/FlowSensitive.h +0 -0
  313. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/Steensgaard.h +0 -0
  314. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/TypeAnalysis.h +0 -0
  315. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/VersionedFlowSensitive.h +0 -0
  316. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPAFSSolver.h +0 -0
  317. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPAPass.h +0 -0
  318. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPASolver.h +0 -0
  319. /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPAStat.h +0 -0
  320. /package/SVF-linux-aarch64/Release-build/{lib → include/SVF}/extapi.bc +0 -0
@@ -0,0 +1,280 @@
1
+ //===- BasicTypes.h --Basic Types of SVF-LLVM---------------------------//
2
+ //
3
+ // SVF: Static Value-Flow Analysis
4
+ //
5
+ // Copyright (C) <2013-2022> <Yulei Sui>
6
+ //
7
+
8
+ // This program is free software: you can redistribute it and/or modify
9
+ // it under the terms of the GNU Affero General Public License as published by
10
+ // the Free Software Foundation, either version 3 of the License, or
11
+ // (at your option) any later version.
12
+
13
+ // This program is distributed in the hope that it will be useful,
14
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ // GNU Affero General Public License for more details.
17
+
18
+ // You should have received a copy of the GNU Affero General Public License
19
+ // along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ //
21
+ //===----------------------------------------------------------------------===//
22
+
23
+ #ifndef SVF_FE_BASIC_TYPES_H
24
+ #define SVF_FE_BASIC_TYPES_H
25
+
26
+ #include "SVF-LLVM/GEPTypeBridgeIterator.h"
27
+
28
+ #include <llvm/Pass.h>
29
+
30
+ #include <llvm/IR/Instructions.h>
31
+ #include <llvm/IR/GetElementPtrTypeIterator.h> //for gep iterator
32
+ #include <llvm/IR/GlobalVariable.h> // for GlobalVariable
33
+ #include <llvm/IR/BasicBlock.h>
34
+ #include <llvm/IR/IntrinsicInst.h>
35
+ #include <llvm/IR/LLVMContext.h>
36
+ #include <llvm/IR/Metadata.h>
37
+ #include <llvm/IR/DataLayout.h>
38
+ #include <llvm/IR/IRBuilder.h>
39
+ #include <llvm/IR/DebugInfo.h>
40
+ #include <llvm/IR/InstIterator.h>
41
+ #include <llvm/IR/GetElementPtrTypeIterator.h>
42
+ #include <llvm/IR/DerivedTypes.h>
43
+ #include <llvm/IR/Statepoint.h>
44
+ #include <llvm/IR/Intrinsics.h>
45
+
46
+ #include <llvm/Analysis/MemoryLocation.h>
47
+ #include <llvm/Analysis/DominanceFrontier.h>
48
+ #include <llvm/Analysis/PostDominators.h>
49
+ #include <llvm/Analysis/ScalarEvolution.h>
50
+ #include <llvm/Analysis/ScalarEvolutionExpressions.h>
51
+
52
+ #include <llvm/Transforms/Utils/UnifyFunctionExitNodes.h>
53
+
54
+ #include <llvm/Support/SourceMgr.h>
55
+
56
+ #include <llvm/Bitcode/BitcodeWriter.h> // for WriteBitcodeToFile
57
+ #include <llvm/Bitcode/BitcodeReader.h> /// for isBitcode
58
+ #include <llvm/IRReader/IRReader.h> // IR reader for bit file
59
+ #include <llvm/IR/InstVisitor.h> // for instruction visitor
60
+ #include <llvm/IR/InstIterator.h> // for inst iteration
61
+
62
+ #include <llvm/BinaryFormat/Dwarf.h> // for dwarf tags
63
+
64
+ #include <llvm/Analysis/LoopInfo.h>
65
+ #include <llvm/Demangle/Demangle.h>
66
+
67
+ namespace SVF
68
+ {
69
+
70
+ typedef llvm::LLVMContext LLVMContext;
71
+ typedef llvm::GlobalObject GlobalObject;
72
+ typedef llvm::Use Use;
73
+ typedef llvm::ModulePass ModulePass;
74
+ typedef llvm::IRBuilder<> IRBuilder;
75
+ #if LLVM_VERSION_MAJOR >= 12
76
+ typedef llvm::UnifyFunctionExitNodesLegacyPass UnifyFunctionExitNodes;
77
+ #else
78
+ typedef llvm::UnifyFunctionExitNodes UnifyFunctionExitNodes;
79
+ #endif
80
+
81
+ /// LLVM Basic classes
82
+ typedef llvm::Value Value;
83
+ typedef llvm::Type Type;
84
+ typedef llvm::Module Module;
85
+ typedef llvm::Function Function;
86
+ typedef llvm::BasicBlock BasicBlock;
87
+ typedef llvm::Instruction Instruction;
88
+ typedef llvm::GlobalValue GlobalValue;
89
+
90
+ typedef llvm::SMDiagnostic SMDiagnostic;
91
+ typedef llvm::BlockAddress BlockAddress;
92
+
93
+ /// LLVM types
94
+ typedef llvm::StructType StructType;
95
+ typedef llvm::ArrayType ArrayType;
96
+ typedef llvm::PointerType PointerType;
97
+ typedef llvm::IntegerType IntegerType;
98
+ typedef llvm::FunctionType FunctionType;
99
+
100
+ // LLVM Metadata
101
+ typedef llvm::MDString MDString;
102
+ typedef llvm::MetadataAsValue MetadataAsValue;
103
+
104
+ // LLVM data layout
105
+ typedef llvm::StructLayout StructLayout;
106
+ typedef llvm::ConstantStruct ConstantStruct;
107
+ typedef llvm::MemoryLocation MemoryLocation;
108
+ typedef llvm::DataLayout DataLayout;
109
+
110
+ /// LLVM metadata and debug information
111
+ typedef llvm::NamedMDNode NamedMDNode;
112
+ typedef llvm::MDNode MDNode;
113
+ typedef llvm::DISubprogram DISubprogram;
114
+
115
+ // LLVM Aliases and constants
116
+ typedef llvm::ConstantData ConstantData;
117
+ typedef llvm::ConstantAggregate ConstantAggregate;
118
+ typedef llvm::ConstantAggregateZero ConstantAggregateZero;
119
+ typedef llvm::ConstantDataSequential ConstantDataSequential;
120
+ typedef llvm::ConstantExpr ConstantExpr;
121
+ typedef llvm::ConstantDataArray ConstantDataArray;
122
+ typedef llvm::ConstantData ConstantData;
123
+ typedef llvm::ConstantArray ConstantArray;
124
+ typedef llvm::Constant Constant;
125
+ typedef llvm::ConstantInt ConstantInt;
126
+ typedef llvm::ConstantFP ConstantFP;
127
+ typedef llvm::ConstantPointerNull ConstantPointerNull;
128
+ typedef llvm::GlobalAlias GlobalAlias;
129
+ typedef llvm::GlobalIFunc GlobalIFunc;
130
+ typedef llvm::GlobalVariable GlobalVariable;
131
+
132
+ /// LLVM Dominators
133
+ typedef llvm::DominatorTree DominatorTree;
134
+ typedef llvm::DomTreeNode DomTreeNode;
135
+ typedef llvm::DominanceFrontier DominanceFrontier;
136
+ typedef llvm::PostDominatorTree PostDominatorTree;
137
+ typedef llvm::DominanceFrontierBase<llvm::BasicBlock, false> DominanceFrontierBase;
138
+
139
+ /// LLVM Loop
140
+ typedef llvm::Loop Loop;
141
+ typedef llvm::LoopInfo LoopInfo;
142
+ typedef llvm::User User;
143
+
144
+ // LLVM Instructions
145
+ typedef llvm::Argument Argument;
146
+ typedef llvm::CallBase CallBase;
147
+ typedef llvm::CallInst CallInst;
148
+ typedef llvm::StoreInst StoreInst;
149
+ typedef llvm::LoadInst LoadInst;
150
+ typedef llvm::AllocaInst AllocaInst;
151
+ typedef llvm::AtomicCmpXchgInst AtomicCmpXchgInst;
152
+ typedef llvm::AtomicRMWInst AtomicRMWInst;
153
+ typedef llvm::BitCastInst BitCastInst;
154
+ typedef llvm::BranchInst BranchInst;
155
+ typedef llvm::SwitchInst SwitchInst;
156
+ typedef llvm::CallBrInst CallBrInst;
157
+ typedef llvm::ReturnInst ReturnInst;
158
+ typedef llvm::CastInst CastInst;
159
+ typedef llvm::CmpInst CmpInst;
160
+ typedef llvm::ExtractValueInst ExtractValueInst;
161
+ typedef llvm::ExtractElementInst ExtractElementInst;
162
+ typedef llvm::GetElementPtrInst GetElementPtrInst;
163
+ typedef llvm::InvokeInst InvokeInst;
164
+ typedef llvm::ShuffleVectorInst ShuffleVectorInst;
165
+ typedef llvm::PHINode PHINode;
166
+ typedef llvm::IntToPtrInst IntToPtrInst;
167
+ typedef llvm::InsertValueInst InsertValueInst;
168
+ typedef llvm::FenceInst FenceInst;
169
+ typedef llvm::FreezeInst FreezeInst;
170
+ typedef llvm::UnreachableInst UnreachableInst;
171
+ typedef llvm::InsertElementInst InsertElementInst;
172
+ typedef llvm::LandingPadInst LandingPadInst;
173
+ typedef llvm::ResumeInst ResumeInst;
174
+ typedef llvm::SelectInst SelectInst;
175
+ typedef llvm::VAArgInst VAArgInst;
176
+ typedef llvm::VACopyInst VACopyInst;
177
+ typedef llvm::VAEndInst VAEndInst;
178
+ typedef llvm::VAStartInst VAStartInst;
179
+ typedef llvm::BinaryOperator BinaryOperator;
180
+ typedef llvm::UnaryOperator UnaryOperator;
181
+ typedef llvm::UndefValue UndefValue;
182
+ typedef llvm::GEPOperator GEPOperator;
183
+
184
+ // Related to Switch Case
185
+ typedef std::pair<const BasicBlock*, const ConstantInt*> SuccBBAndCondValPair;
186
+ typedef std::vector<SuccBBAndCondValPair> SuccBBAndCondValPairVec;
187
+
188
+ // LLVM Intrinsic Instructions
189
+ #if LLVM_VERSION_MAJOR >= 13
190
+ typedef llvm::IntrinsicInst IntrinsicInst;
191
+ typedef llvm::DbgInfoIntrinsic DbgInfoIntrinsic;
192
+ typedef llvm::DbgVariableIntrinsic DbgVariableIntrinsic;
193
+ typedef llvm::DbgDeclareInst DbgDeclareInst;
194
+ typedef llvm::DbgInfoIntrinsic DbgInfoIntrinsic;
195
+ typedef llvm::DbgValueInst DbgValueInst;
196
+ typedef llvm::DbgLabelInst DbgLabelInst;
197
+ typedef llvm::VPIntrinsic VPIntrinsic;
198
+ typedef llvm::ConstrainedFPIntrinsic ConstrainedFPIntrinsic;
199
+ typedef llvm::ConstrainedFPCmpIntrinsic ConstrainedFPCmpIntrinsic;
200
+ typedef llvm::MinMaxIntrinsic MinMaxIntrinsic;
201
+ typedef llvm::BinaryOpIntrinsic BinaryOpIntrinsic;
202
+ typedef llvm::WithOverflowInst WithOverflowInst;
203
+ typedef llvm::SaturatingInst SaturatingInst;
204
+ typedef llvm::AtomicMemIntrinsic AtomicMemIntrinsic;
205
+ typedef llvm::AtomicMemSetInst AtomicMemSetInst;
206
+ typedef llvm::AtomicMemTransferInst AtomicMemTransferInst;
207
+ typedef llvm::AtomicMemCpyInst AtomicMemCpyInst;
208
+ typedef llvm::AtomicMemMoveInst AtomicMemMoveInst;
209
+ typedef llvm::MemIntrinsic MemIntrinsic;
210
+ typedef llvm::MemSetInst MemSetInst;
211
+ typedef llvm::MemTransferInst MemTransferInst;
212
+ typedef llvm::MemCpyInst MemCpyInst;
213
+ typedef llvm::MemMoveInst MemMoveInst;
214
+ typedef llvm::MemCpyInlineInst MemCpyInlineInst;
215
+ typedef llvm::AnyMemIntrinsic AnyMemIntrinsic;
216
+ typedef llvm::AnyMemSetInst AnyMemSetInst;
217
+ typedef llvm::AnyMemTransferInst AnyMemTransferInst;
218
+ typedef llvm::AnyMemCpyInst AnyMemCpyInst;
219
+ typedef llvm::AnyMemMoveInst AnyMemMoveInst;
220
+ typedef llvm::VAStartInst VAStartInst;
221
+ typedef llvm::VAEndInst VAEndInst;
222
+ typedef llvm::VACopyInst VACopyInst;
223
+ typedef llvm::InstrProfIncrementInst InstrProfIncrementInst;
224
+ typedef llvm::InstrProfIncrementInstStep InstrProfIncrementInstStep;
225
+ typedef llvm::InstrProfValueProfileInst InstrProfValueProfileInst;
226
+ typedef llvm::PseudoProbeInst PseudoProbeInst;
227
+ typedef llvm::NoAliasScopeDeclInst NoAliasScopeDeclInst;
228
+ typedef llvm::GCStatepointInst GCStatepointInst;
229
+ typedef llvm::GCProjectionInst GCProjectionInst;
230
+ typedef llvm::GCRelocateInst GCRelocateInst;
231
+ typedef llvm::GCResultInst GCResultInst;
232
+ typedef llvm::AssumeInst AssumeInst;
233
+ #endif
234
+
235
+ // LLVM Debug Information
236
+ typedef llvm::DIType DIType;
237
+ typedef llvm::DICompositeType DICompositeType;
238
+ typedef llvm::DIDerivedType DIDerivedType;
239
+ typedef llvm::DebugInfoFinder DebugInfoFinder;
240
+ typedef llvm::DISubroutineType DISubroutineType;
241
+ typedef llvm::DIBasicType DIBasicType;
242
+ typedef llvm::DISubrange DISubrange;
243
+ typedef llvm::DINode DINode;
244
+ typedef llvm::DINodeArray DINodeArray;
245
+ typedef llvm::DITypeRefArray DITypeRefArray;
246
+ namespace dwarf = llvm::dwarf;
247
+
248
+ // Iterators.
249
+ typedef llvm::inst_iterator inst_iterator;
250
+ typedef llvm::const_inst_iterator const_inst_iterator;
251
+ typedef llvm::gep_type_iterator gep_type_iterator;
252
+ typedef llvm::bridge_gep_iterator bridge_gep_iterator;
253
+ typedef llvm::const_inst_iterator const_inst_iterator;
254
+ typedef llvm::const_pred_iterator const_pred_iterator;
255
+
256
+ // LLVM Scalar Evolution.
257
+ typedef llvm::ScalarEvolutionWrapperPass ScalarEvolutionWrapperPass;
258
+ typedef llvm::SCEVAddRecExpr SCEVAddRecExpr;
259
+ typedef llvm::SCEVConstant SCEVConstant;
260
+ typedef llvm::ScalarEvolution ScalarEvolution;
261
+ typedef llvm::SCEV SCEV;
262
+
263
+ /// LLVM outputs
264
+ typedef llvm::raw_fd_ostream raw_fd_ostream;
265
+
266
+ // LLVM Types.
267
+ typedef llvm::VectorType VectorType;
268
+ #if (LLVM_VERSION_MAJOR >= 9)
269
+ typedef llvm::FunctionCallee FunctionCallee;
270
+ #endif
271
+
272
+ /// LLVM Iterators
273
+ #if LLVM_VERSION_MAJOR >= 11
274
+ typedef llvm::const_succ_iterator succ_const_iterator;
275
+ #else
276
+ typedef llvm::succ_const_iterator succ_const_iterator;
277
+ #endif
278
+ } // End namespace SVF
279
+
280
+ #endif // SVF_FE_BASIC_TYPES_H
@@ -0,0 +1,93 @@
1
+ //===- BreakConstantGEPs.h - Change constant GEPs into GEP instructions --- --//
2
+ //
3
+ // The SAFECode Compiler
4
+ //
5
+ // This file was developed by the LLVM research group and is distributed under
6
+ // the University of Illinois Open Source License. See LICENSE.TXT for details.
7
+ //
8
+ //===----------------------------------------------------------------------===//
9
+ //
10
+ // This pass changes all GEP constant expressions into GEP instructions. This
11
+ // permits the rest of SAFECode to put run-time checks on them if necessary.
12
+ //
13
+ //===----------------------------------------------------------------------===//
14
+
15
+ #ifndef BREAKCONSTANTGEPS_H
16
+ #define BREAKCONSTANTGEPS_H
17
+
18
+
19
+ namespace SVF
20
+ {
21
+
22
+ //
23
+ // Pass: BreakConstantGEPs
24
+ //
25
+ // Description:
26
+ // This pass modifies a function so that it uses GEP instructions instead of
27
+ // GEP constant expressions.
28
+ //
29
+ class BreakConstantGEPs : public ModulePass
30
+ {
31
+ private:
32
+ // Private methods
33
+
34
+ // Private variables
35
+
36
+ public:
37
+ static char ID;
38
+ BreakConstantGEPs() : ModulePass(ID) {}
39
+ llvm::StringRef getPassName() const
40
+ {
41
+ return "Remove Constant GEP Expressions";
42
+ }
43
+ virtual bool runOnModule (Module & M);
44
+ };
45
+
46
+
47
+ //
48
+ // Pass: MergeFunctionRets
49
+ //
50
+ // Description:
51
+ // This pass modifies a function so that each function only have one unified exit basic block
52
+ //
53
+ class MergeFunctionRets : public ModulePass
54
+ {
55
+ private:
56
+ // Private methods
57
+
58
+ // Private variables
59
+
60
+ public:
61
+ static char ID;
62
+ MergeFunctionRets() : ModulePass(ID) {}
63
+ llvm::StringRef getPassName() const
64
+ {
65
+ return "unify function exit into one dummy exit basic block";
66
+ }
67
+ virtual bool runOnModule (Module & M)
68
+ {
69
+ UnifyFunctionExit(M);
70
+ return true;
71
+ }
72
+ inline void UnifyFunctionExit(Module& module)
73
+ {
74
+ for (Module::const_iterator iter = module.begin(), eiter = module.end();
75
+ iter != eiter; ++iter)
76
+ {
77
+ const Function& fun = *iter;
78
+ if(fun.isDeclaration())
79
+ continue;
80
+ getUnifyExit(fun)->runOnFunction(const_cast<Function&>(fun));
81
+ }
82
+ }
83
+ /// Get Unified Exit basic block node
84
+ inline UnifyFunctionExitNodes* getUnifyExit(const Function& fn)
85
+ {
86
+ assert(!fn.isDeclaration() && "external function does not have DF");
87
+ return &getAnalysis<UnifyFunctionExitNodes>(const_cast<Function&>(fn));
88
+ }
89
+ };
90
+
91
+ } // End namespace SVF
92
+
93
+ #endif
@@ -0,0 +1,78 @@
1
+ //===----- CHGBuiler.h -- Class hierarchy graph builder ---------------------------//
2
+ //
3
+ // SVF: Static Value-Flow Analysis
4
+ //
5
+ // Copyright (C) <2013-> <Yulei Sui>
6
+ //
7
+
8
+ // This program is free software: you can redistribute it and/or modify
9
+ // it under the terms of the GNU Affero General Public License as published by
10
+ // the Free Software Foundation, either version 3 of the License, or
11
+ // (at your option) any later version.
12
+
13
+ // This program is distributed in the hope that it will be useful,
14
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ // GNU Affero General Public License for more details.
17
+
18
+ // You should have received a copy of the GNU Affero General Public License
19
+ // along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ //
21
+ //===----------------------------------------------------------------------===//
22
+
23
+ /*
24
+ * CHGBuiler.h
25
+ *
26
+ * Created on: Jun 4, 2021
27
+ * Author: Yulei Sui
28
+ */
29
+
30
+ #include "Graphs/CHG.h"
31
+ #include "SVF-LLVM/BasicTypes.h"
32
+
33
+ namespace SVF
34
+ {
35
+
36
+ class LLVMModuleSet;
37
+
38
+ class CHGBuilder
39
+ {
40
+
41
+ private:
42
+ CHGraph* chg;
43
+
44
+ public:
45
+ typedef CHGraph::CHNodeSetTy CHNodeSetTy;
46
+ typedef CHGraph::WorkList WorkList;
47
+
48
+ CHGBuilder(CHGraph* c): chg(c)
49
+ {
50
+
51
+ }
52
+ void buildCHG();
53
+ void buildCHGNodes(const GlobalValue *V);
54
+ void buildCHGNodes(const Function* F);
55
+ void buildCHGEdges(const Function* F);
56
+ void buildInternalMaps();
57
+ void readInheritanceMetadataFromModule(const Module &M);
58
+
59
+ CHNode *createNode(const std::string& name);
60
+
61
+ void connectInheritEdgeViaCall(const Function* caller, const CallBase* cs);
62
+ void connectInheritEdgeViaStore(const Function* caller, const StoreInst* store);
63
+
64
+ void buildClassNameToAncestorsDescendantsMap();
65
+ const CHGraph::CHNodeSetTy& getInstancesAndDescendants(const std::string& className);
66
+
67
+ void analyzeVTables(const Module &M);
68
+ void buildVirtualFunctionToIDMap();
69
+ void buildCSToCHAVtblsAndVfnsMap();
70
+ const CHNodeSetTy& getCSClasses(const CallBase* cs);
71
+ void addFuncToFuncVector(CHNode::FuncVector &v, const Function *f);
72
+
73
+ private:
74
+ LLVMModuleSet* llvmModuleSet();
75
+ };
76
+
77
+ } // End namespace SVF
78
+
@@ -0,0 +1,184 @@
1
+ //===- CPPUtil.h -- Base class of pointer analyses ---------------------------//
2
+ //
3
+ // SVF: Static Value-Flow Analysis
4
+ //
5
+ // Copyright (C) <2013-2017> <Yulei Sui>
6
+ //
7
+
8
+ // This program is free software: you can redistribute it and/or modify
9
+ // it under the terms of the GNU Affero General Public License as published by
10
+ // the Free Software Foundation, either version 3 of the License, or
11
+ // (at your option) any later version.
12
+
13
+ // This program is distributed in the hope that it will be useful,
14
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ // GNU Affero General Public License for more details.
17
+
18
+ // You should have received a copy of the GNU Affero General Public License
19
+ // along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ //
21
+ //===----------------------------------------------------------------------===//
22
+
23
+ /*
24
+ * CPPUtil.h
25
+ *
26
+ * Created on: Apr 13, 2016
27
+ * Author: Xiaokang Fan
28
+ */
29
+
30
+ #ifndef CPPUtil_H_
31
+ #define CPPUtil_H_
32
+
33
+ #include "SVF-LLVM/BasicTypes.h"
34
+ #include "Util/GeneralType.h"
35
+
36
+ namespace SVF
37
+ {
38
+
39
+ class CHGraph;
40
+ /*
41
+ * Util class to assist pointer analysis for cpp programs
42
+ */
43
+
44
+ namespace cppUtil
45
+ {
46
+
47
+ struct DemangledName
48
+ {
49
+ std::string className;
50
+ std::string funcName;
51
+ bool isThunkFunc;
52
+ };
53
+
54
+ struct DemangledName demangle(const std::string& name);
55
+
56
+
57
+ Set<std::string> getClsNamesInBrackets(const std::string& name);
58
+
59
+ std::string getBeforeBrackets(const std::string& name);
60
+ std::string getClassNameFromVtblObj(const std::string& vtblName);
61
+
62
+ /*
63
+ * Get the vtable struct of a class.
64
+ *
65
+ * Given the class:
66
+ *
67
+ * class A {
68
+ * virtual ~A();
69
+ * };
70
+ * A::~A() = default;
71
+ *
72
+ * The corresponding vtable @_ZTV1A is of type:
73
+ *
74
+ * { [4 x i8*] }
75
+ *
76
+ * If the program has been compiled with AddressSanitizer,
77
+ * the vtable will have redzones and appear as:
78
+ *
79
+ * { { [4 x i8*] }, [32 x i8] }
80
+ *
81
+ * See https://github.com/SVF-tools/SVF/issues/1114 for more.
82
+ */
83
+ const ConstantStruct *getVtblStruct(const GlobalValue *vtbl);
84
+
85
+ bool isValVtbl(const Value* val);
86
+ bool isVirtualCallSite(const CallBase* cs);
87
+ bool isConstructor(const Function* F);
88
+ bool isDestructor(const Function* F);
89
+ bool isCPPThunkFunction(const Function* F);
90
+ const Function* getThunkTarget(const Function* F);
91
+
92
+ /*
93
+ * VtableA = {&A::foo}
94
+ * A::A(this){
95
+ * *this = &VtableA;
96
+ * }
97
+ *
98
+ *
99
+ * A* p = new A;
100
+ * cs: p->foo(...)
101
+ * ==>
102
+ * vtptr = *p;
103
+ * vfn = &vtptr[i]
104
+ * %funp = *vfn
105
+ * call %funp(p,...)
106
+ * getConstructorThisPtr(A) return "this" pointer
107
+ * getVCallThisPtr(cs) return p (this pointer)
108
+ * getVCallVtblPtr(cs) return vtptr
109
+ * getVCallIdx(cs) return i
110
+ * getClassNameFromVtblObj(VtableA) return
111
+ * getClassNameFromType(type of p) return type A
112
+ */
113
+ const Argument* getConstructorThisPtr(const Function* fun);
114
+ const Value* getVCallThisPtr(const CallBase* cs);
115
+ const Value* getVCallVtblPtr(const CallBase* cs);
116
+ s32_t getVCallIdx(const CallBase* cs);
117
+ bool classTyHasVTable(const StructType* ty);
118
+ std::string getClassNameFromType(const StructType* ty);
119
+ Set<std::string> getClassNameOfThisPtr(const CallBase* cs);
120
+ std::string getFunNameOfVCallSite(const CallBase* cs);
121
+ bool VCallInCtorOrDtor(const CallBase* cs);
122
+
123
+ /*
124
+ * A(A* this){
125
+ * store this this.addr;
126
+ * tmp = load this.addr;
127
+ * this1 = bitcast(tmp);
128
+ * B(this1);
129
+ * }
130
+ * this and this1 are the same thisPtr in the constructor
131
+ */
132
+ bool isSameThisPtrInConstructor(const Argument* thisPtr1,
133
+ const Value* thisPtr2);
134
+
135
+ /// extract class name from the c++ function name, e.g., constructor/destructors
136
+ Set<std::string> extractClsNamesFromFunc(const Function *foo);
137
+
138
+ /// extract class names from template functions
139
+ Set<std::string> extractClsNamesFromTemplate(const std::string &oname);
140
+
141
+ /// class sources can be heap allocation
142
+ /// or functions where we can extract the class name (constructors/destructors or template functions)
143
+ bool isClsNameSource(const Value *val);
144
+
145
+ /// whether foo matches the mangler label
146
+ bool matchesLabel(const std::string &foo, const std::string &label);
147
+
148
+ /// whether foo is a cpp template function
149
+ bool isTemplateFunc(const Function *foo);
150
+
151
+ /// whether foo is a cpp dyncast function
152
+ bool isDynCast(const Function *foo);
153
+
154
+ /// extract class name from cpp dyncast function
155
+ std::string extractClsNameFromDynCast(const CallBase* callBase);
156
+
157
+ const Type *cppClsNameToType(const std::string &className);
158
+
159
+
160
+
161
+ /// Constants pertaining to CTir, for C and C++.
162
+ /// TODO: move helper functions here too?
163
+ namespace ctir
164
+ {
165
+ /// On loads, stores, GEPs representing dereferences, and calls
166
+ /// representing virtual calls.
167
+ /// (The static type.)
168
+ const std::string derefMDName = "ctir";
169
+ /// On the (global) virtual table itself.
170
+ /// (The class it corresponds to.)
171
+ const std::string vtMDName = "ctir.vt";
172
+ /// On the bitcast of `this` to i8*.
173
+ /// (The class the constructor it corresponds to.)
174
+ const std::string vtInitMDName = "ctir.vt.init";
175
+
176
+ /// Value we expect a ctir-annotated module to have.
177
+ const uint32_t moduleFlagValue = 1;
178
+ } // namespace ctir
179
+
180
+ } // End namespace cppUtil
181
+
182
+ } // End namespace SVF
183
+
184
+ #endif /* CPPUtil_H_ */