svf-tools 1.0.757 → 1.0.759

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 (844) hide show
  1. package/CMakeLists.txt +7 -0
  2. package/README.md +2 -2
  3. package/SVF-doxygen/html/html/AccessPath_8cpp_source.html +4 -4
  4. package/SVF-doxygen/html/html/AddressValue_8h_source.html +1 -1
  5. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
  8. package/SVF-doxygen/html/html/Andersen_8h_source.html +3 -3
  9. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/CFBasicBlockG_8cpp_source.html +4 -4
  11. package/SVF-doxygen/html/html/CFBasicBlockG_8h_source.html +2 -2
  12. package/SVF-doxygen/html/html/CFGrammar_8cpp_source.html +11 -8
  13. package/SVF-doxygen/html/html/CFGrammar_8h_source.html +1 -1
  14. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +9 -9
  15. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +17 -17
  18. package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
  19. package/SVF-doxygen/html/html/CHG_8cpp_source.html +7 -7
  20. package/SVF-doxygen/html/html/CHG_8h_source.html +4 -4
  21. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +6 -6
  22. package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/Casting_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/CommandLine_8h_source.html +2 -1
  25. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/ConsExeState_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/ConsExeState_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
  29. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  30. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
  31. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  32. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +2 -2
  33. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +11 -11
  34. package/SVF-doxygen/html/html/DCHG_8h_source.html +3 -3
  35. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  36. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  37. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/ExeState_8h_source.html +1 -1
  41. package/SVF-doxygen/html/html/ExtAPI_8cpp.html +0 -196
  42. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +121 -786
  43. package/SVF-doxygen/html/html/ExtAPI_8h.html +2 -67
  44. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +69 -654
  45. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +2 -2
  46. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +2 -2
  47. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
  48. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  49. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +3 -3
  50. package/SVF-doxygen/html/html/GraphTraits_8h_source.html +1 -1
  51. package/SVF-doxygen/html/html/GraphWriter_8h_source.html +1 -1
  52. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +13 -13
  53. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +2 -2
  54. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +1 -1
  55. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +4 -4
  56. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +7 -7
  57. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  58. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  59. package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
  60. package/SVF-doxygen/html/html/IntervalExeState_8h_source.html +2 -2
  61. package/SVF-doxygen/html/html/IntervalValue_8h.html +1 -1
  62. package/SVF-doxygen/html/html/IntervalValue_8h_source.html +2 -2
  63. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +6 -6
  64. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +1 -1
  65. package/SVF-doxygen/html/html/LLVMModule_8cpp.html +3 -4
  66. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1411 -1292
  67. package/SVF-doxygen/html/html/LLVMModule_8h.html +1 -0
  68. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +418 -400
  69. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +744 -616
  70. package/SVF-doxygen/html/html/LLVMUtil_8h.html +9 -1
  71. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +485 -472
  72. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  73. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +14 -14
  74. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +2 -2
  75. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +8 -8
  76. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +5 -5
  77. package/SVF-doxygen/html/html/MHP_8cpp_source.html +15 -15
  78. package/SVF-doxygen/html/html/MHP_8h_source.html +4 -4
  79. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +4 -4
  80. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
  81. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +4 -4
  82. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +7 -7
  83. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +7 -7
  84. package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
  85. package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
  86. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +13 -13
  87. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  88. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +21 -21
  89. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  90. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  91. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +2 -2
  92. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +1 -1
  93. package/SVF-doxygen/html/html/NumericLiteral_8h_source.html +1 -1
  94. package/SVF-doxygen/html/html/Options_8cpp_source.html +9 -8
  95. package/SVF-doxygen/html/html/PCG_8cpp_source.html +13 -13
  96. package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
  97. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +3 -3
  98. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
  99. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +1 -1
  100. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
  101. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +12 -12
  102. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
  103. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +2 -2
  104. package/SVF-doxygen/html/html/PointsTo_8h_source.html +1 -1
  105. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -2
  106. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
  107. package/SVF-doxygen/html/html/RelExeState_8h_source.html +1 -1
  108. package/SVF-doxygen/html/html/SVFBugReport_8cpp_source.html +362 -365
  109. package/SVF-doxygen/html/html/SVFBugReport_8h_source.html +25 -25
  110. package/SVF-doxygen/html/html/SVFFileSystem_8cpp_source.html +2087 -2084
  111. package/SVF-doxygen/html/html/SVFFileSystem_8h.html +1 -1
  112. package/SVF-doxygen/html/html/SVFFileSystem_8h_source.html +62 -62
  113. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  114. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  115. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +1 -1
  116. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +5 -5
  117. package/SVF-doxygen/html/html/SVFIR2ConsExeState_8cpp_source.html +6 -6
  118. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +5 -5
  119. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +458 -531
  120. package/SVF-doxygen/html/html/SVFIRBuilder_8h.html +1 -1
  121. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +211 -233
  122. package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp.html +2 -0
  123. package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp_source.html +286 -682
  124. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +4 -4
  125. package/SVF-doxygen/html/html/SVFIR_8h_source.html +3 -3
  126. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +9 -9
  127. package/SVF-doxygen/html/html/SVFModule_8h.html +0 -1
  128. package/SVF-doxygen/html/html/SVFModule_8h_source.html +258 -260
  129. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +8 -8
  130. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +5 -5
  131. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +18 -18
  132. package/SVF-doxygen/html/html/SVFType_8h_source.html +6 -6
  133. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -7
  134. package/SVF-doxygen/html/html/SVFUtil_8h.html +6 -11
  135. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +392 -405
  136. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +14 -13
  137. package/SVF-doxygen/html/html/SVFValue_8h_source.html +1038 -1030
  138. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  139. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +1 -1
  140. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  141. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +14 -14
  142. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +6 -6
  143. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  144. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +2 -2
  145. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
  146. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +2 -2
  147. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +5 -5
  148. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  149. package/SVF-doxygen/html/html/SymState_8cpp_source.html +1 -1
  150. package/SVF-doxygen/html/html/SymState_8h_source.html +2 -2
  151. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +30 -30
  152. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +2 -2
  153. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +6 -6
  154. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +5 -5
  155. package/SVF-doxygen/html/html/TCT_8cpp_source.html +16 -16
  156. package/SVF-doxygen/html/html/TCT_8h_source.html +8 -8
  157. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +14 -14
  158. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +5 -5
  159. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  160. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
  161. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  162. package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
  163. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  164. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +2 -2
  165. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  166. package/SVF-doxygen/html/html/WPASolver_8h_source.html +1 -1
  167. package/SVF-doxygen/html/html/WTO_8h_source.html +1 -1
  168. package/SVF-doxygen/html/html/annotated.html +2 -5
  169. package/SVF-doxygen/html/html/cJSON_8cpp.html +2 -1
  170. package/SVF-doxygen/html/html/cJSON_8cpp_source.html +2 -1
  171. package/SVF-doxygen/html/html/cJSON_8h_source.html +1 -1
  172. package/SVF-doxygen/html/html/cfl_8cpp.html +2 -2
  173. package/SVF-doxygen/html/html/cfl_8cpp_source.html +2 -2
  174. package/SVF-doxygen/html/html/classOption.html +2 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1AccessPath.html +6 -6
  176. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  177. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  178. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +2 -2
  180. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +4 -4
  182. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1AddressValue.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +1 -1
  185. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  186. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +13 -13
  187. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
  188. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +4 -4
  189. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +3 -3
  190. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +3 -3
  192. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +2 -2
  194. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
  195. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +5 -5
  196. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
  197. package/SVF-doxygen/html/html/classSVF_1_1BitVector.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +3 -3
  199. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
  200. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1BufferOverflowBug.html +50 -50
  202. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTO.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTOCycle.html +1 -1
  204. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockNode.html +2 -2
  205. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +2 -2
  206. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +9 -9
  207. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +1 -1
  208. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +1 -1
  209. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +18 -18
  210. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +5 -5
  211. package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +1 -1
  212. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  213. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +3 -3
  214. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +6 -6
  215. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +3 -3
  216. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +3 -3
  218. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +95 -95
  219. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +5 -5
  220. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
  221. package/SVF-doxygen/html/html/classSVF_1_1CondPointsToSet.html +3 -3
  222. package/SVF-doxygen/html/html/classSVF_1_1ConsExeState.html +2 -2
  223. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +7 -7
  224. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
  225. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
  226. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +4 -4
  227. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  228. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +4 -4
  229. package/SVF-doxygen/html/html/classSVF_1_1CxtDPItem.html +1 -1
  230. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
  231. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
  232. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +1 -1
  233. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +9 -9
  234. package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1DPItem.html +1 -1
  236. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeBug.html +35 -35
  237. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +3 -3
  238. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +2 -2
  239. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +2 -2
  240. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +1 -1
  241. package/SVF-doxygen/html/html/classSVF_1_1EntryCHI.html +2 -2
  242. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +1 -1
  243. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +8 -77
  244. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +130 -1337
  245. package/SVF-doxygen/html/html/classSVF_1_1FILOWorkList.html +1 -1
  246. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +3 -3
  247. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +4 -4
  248. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +1 -1
  249. package/SVF-doxygen/html/html/classSVF_1_1FileNeverCloseBug.html +10 -10
  250. package/SVF-doxygen/html/html/classSVF_1_1FilePartialCloseBug.html +35 -35
  251. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +4 -4
  252. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  253. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +12 -12
  254. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  255. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  256. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  257. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  258. package/SVF-doxygen/html/html/classSVF_1_1FullNullPtrDereferenceBug.html +10 -10
  259. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +4 -4
  260. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +5 -5
  261. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +2 -2
  262. package/SVF-doxygen/html/html/classSVF_1_1GenericBug.html +9 -13
  263. package/SVF-doxygen/html/html/classSVF_1_1GenericGraphReader.html +1 -1
  264. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +2 -2
  265. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
  266. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +4 -4
  267. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  268. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +3 -3
  269. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  270. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +11 -8
  271. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +2 -2
  272. package/SVF-doxygen/html/html/classSVF_1_1GraphWriter.html +1 -1
  273. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  274. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +13 -13
  275. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  276. package/SVF-doxygen/html/html/classSVF_1_1ICFGWriter.html +11 -11
  277. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +1 -1
  278. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +2 -2
  279. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +2 -2
  280. package/SVF-doxygen/html/html/classSVF_1_1IntervalExeState.html +3 -3
  281. package/SVF-doxygen/html/html/classSVF_1_1IntervalValue.html +1 -1
  282. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  283. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +4 -4
  284. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  285. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
  286. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +5 -5
  287. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +42 -40
  288. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1586 -1455
  289. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
  290. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +4 -4
  291. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  292. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +15 -15
  293. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +8 -8
  294. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +18 -18
  295. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +3 -3
  296. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +14 -14
  297. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  298. package/SVF-doxygen/html/html/classSVF_1_1MSSACHI.html +4 -4
  299. package/SVF-doxygen/html/html/classSVF_1_1MSSADEF.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHI.html +2 -2
  301. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  302. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  303. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +8 -8
  304. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +2 -2
  305. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +7 -7
  306. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  307. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +1 -1
  308. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +24 -24
  309. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +4 -4
  310. package/SVF-doxygen/html/html/classSVF_1_1MutableIncDFPTData.html +6 -6
  311. package/SVF-doxygen/html/html/classSVF_1_1NeverFreeBug.html +10 -10
  312. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +2 -2
  313. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  314. package/SVF-doxygen/html/html/classSVF_1_1NumericLiteral.html +1 -1
  315. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +3 -3
  316. package/SVF-doxygen/html/html/classSVF_1_1Options.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +14 -14
  318. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
  319. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +3 -3
  320. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
  321. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
  322. package/SVF-doxygen/html/html/classSVF_1_1PartialLeakBug.html +34 -34
  323. package/SVF-doxygen/html/html/classSVF_1_1PartialNullPtrDereferenceBug.html +10 -10
  324. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +3 -3
  325. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +5 -5
  326. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +11 -11
  327. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +3 -3
  328. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +1 -1
  329. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +3 -3
  330. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +7 -7
  331. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +3 -3
  332. package/SVF-doxygen/html/html/classSVF_1_1ReaderIDToObjMap.html +2 -2
  333. package/SVF-doxygen/html/html/classSVF_1_1ReaderPtrPool.html +2 -2
  334. package/SVF-doxygen/html/html/classSVF_1_1RelExeState.html +1 -1
  335. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  336. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +3 -3
  337. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +3 -3
  338. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +2 -2
  339. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +30 -30
  340. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +75 -75
  341. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +15 -15
  342. package/SVF-doxygen/html/html/classSVF_1_1SVFBugEvent.html +50 -50
  343. package/SVF-doxygen/html/html/classSVF_1_1SVFBugReport.html +88 -88
  344. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +67 -67
  345. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +17 -17
  346. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +23 -23
  347. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +21 -21
  348. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +27 -27
  349. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +15 -15
  350. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +15 -13
  351. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +222 -153
  352. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +5 -5
  353. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +5 -5
  354. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
  355. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +34 -34
  356. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +7 -7
  357. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ConsExeState.html +5 -5
  358. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +5 -5
  359. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +64 -73
  360. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +915 -1777
  361. package/SVF-doxygen/html/html/classSVF_1_1SVFIRReader.html +1128 -1126
  362. package/SVF-doxygen/html/html/classSVF_1_1SVFIRWriter.html +548 -547
  363. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +53 -53
  364. package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo.html +3 -3
  365. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +15 -15
  366. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +173 -173
  367. package/SVF-doxygen/html/html/classSVF_1_1SVFModuleReader.html +1 -1
  368. package/SVF-doxygen/html/html/classSVF_1_1SVFModuleWriter.html +23 -23
  369. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +1 -1
  370. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +11 -11
  371. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +8 -8
  372. package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +1 -1
  373. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +27 -27
  374. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
  375. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +53 -53
  376. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +15 -15
  377. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
  378. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +5 -5
  379. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +1 -1
  380. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +3 -3
  381. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +12 -12
  382. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +6 -6
  383. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
  384. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +2 -2
  385. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +4 -4
  386. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  387. package/SVF-doxygen/html/html/classSVF_1_1SymState.html +3 -3
  388. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +34 -34
  389. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +11 -11
  390. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfoReader.html +1 -1
  391. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +18 -18
  392. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  393. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +4 -4
  394. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +4 -4
  395. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +8 -8
  396. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  397. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +5 -5
  398. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +4 -4
  399. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +3 -3
  400. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  401. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +2 -2
  402. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  403. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +3 -3
  404. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
  405. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
  406. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
  407. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +1 -1
  408. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +1 -1
  409. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
  410. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +1 -1
  411. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +3 -3
  412. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +1 -1
  413. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +1 -1
  414. package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +1 -1
  415. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +1 -1
  416. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +1 -1
  417. package/SVF-doxygen/html/html/classes.html +335 -338
  418. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  419. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  420. package/SVF-doxygen/html/html/dir_fee120689dee99ef16f8bfcaa7a76083.html +2 -0
  421. package/SVF-doxygen/html/html/extapi_8c.html +1950 -0
  422. package/SVF-doxygen/html/html/extapi_8c_source.html +1488 -0
  423. package/SVF-doxygen/html/html/fastcluster_8cpp.html +1 -1
  424. package/SVF-doxygen/html/html/fastcluster_8cpp_source.html +3 -3
  425. package/SVF-doxygen/html/html/fastcluster_8h.html +2 -2
  426. package/SVF-doxygen/html/html/fastcluster_8h_source.html +4 -4
  427. package/SVF-doxygen/html/html/files.html +10 -9
  428. package/SVF-doxygen/html/html/functions_a.html +17 -27
  429. package/SVF-doxygen/html/html/functions_b.html +9 -12
  430. package/SVF-doxygen/html/html/functions_c.html +26 -70
  431. package/SVF-doxygen/html/html/functions_d.html +3 -7
  432. package/SVF-doxygen/html/html/functions_e.html +4 -121
  433. package/SVF-doxygen/html/html/functions_enum.html +0 -6
  434. package/SVF-doxygen/html/html/functions_eval.html +0 -1
  435. package/SVF-doxygen/html/html/functions_eval_c.html +1 -15
  436. package/SVF-doxygen/html/html/functions_eval_e.html +0 -96
  437. package/SVF-doxygen/html/html/functions_eval_g.html +1 -2
  438. package/SVF-doxygen/html/html/functions_eval_l.html +0 -1
  439. package/SVF-doxygen/html/html/functions_eval_m.html +0 -6
  440. package/SVF-doxygen/html/html/functions_eval_o.html +0 -3
  441. package/SVF-doxygen/html/html/functions_eval_r.html +0 -6
  442. package/SVF-doxygen/html/html/functions_eval_s.html +0 -1
  443. package/SVF-doxygen/html/html/functions_f.html +16 -19
  444. package/SVF-doxygen/html/html/functions_func.html +6 -18
  445. package/SVF-doxygen/html/html/functions_func_e.html +1 -13
  446. package/SVF-doxygen/html/html/functions_func_g.html +24 -91
  447. package/SVF-doxygen/html/html/functions_func_h.html +9 -12
  448. package/SVF-doxygen/html/html/functions_func_i.html +16 -28
  449. package/SVF-doxygen/html/html/functions_func_n.html +0 -3
  450. package/SVF-doxygen/html/html/functions_func_p.html +3 -12
  451. package/SVF-doxygen/html/html/functions_func_s.html +20 -83
  452. package/SVF-doxygen/html/html/functions_g.html +32 -100
  453. package/SVF-doxygen/html/html/functions_h.html +6 -9
  454. package/SVF-doxygen/html/html/functions_i.html +16 -28
  455. package/SVF-doxygen/html/html/functions_l.html +0 -1
  456. package/SVF-doxygen/html/html/functions_m.html +1 -7
  457. package/SVF-doxygen/html/html/functions_n.html +4 -7
  458. package/SVF-doxygen/html/html/functions_o.html +31 -44
  459. package/SVF-doxygen/html/html/functions_p.html +18 -29
  460. package/SVF-doxygen/html/html/functions_r.html +9 -16
  461. package/SVF-doxygen/html/html/functions_s.html +16 -84
  462. package/SVF-doxygen/html/html/functions_t.html +4 -10
  463. package/SVF-doxygen/html/html/functions_v.html +3 -3
  464. package/SVF-doxygen/html/html/functions_vars_a.html +3 -0
  465. package/SVF-doxygen/html/html/functions_vars_b.html +0 -3
  466. package/SVF-doxygen/html/html/functions_vars_c.html +1 -23
  467. package/SVF-doxygen/html/html/functions_vars_d.html +1 -5
  468. package/SVF-doxygen/html/html/functions_vars_e.html +2 -8
  469. package/SVF-doxygen/html/html/functions_vars_f.html +0 -3
  470. package/SVF-doxygen/html/html/functions_vars_o.html +0 -9
  471. package/SVF-doxygen/html/html/functions_vars_r.html +1 -2
  472. package/SVF-doxygen/html/html/functions_vars_s.html +1 -5
  473. package/SVF-doxygen/html/html/functions_vars_t.html +0 -6
  474. package/SVF-doxygen/html/html/globals.html +22 -4
  475. package/SVF-doxygen/html/html/globals_a.html +3 -0
  476. package/SVF-doxygen/html/html/globals_b.html +3 -0
  477. package/SVF-doxygen/html/html/globals_defs.html +3 -9
  478. package/SVF-doxygen/html/html/globals_e.html +0 -3
  479. package/SVF-doxygen/html/html/globals_f.html +11 -2
  480. package/SVF-doxygen/html/html/globals_func.html +159 -15
  481. package/SVF-doxygen/html/html/globals_g.html +13 -4
  482. package/SVF-doxygen/html/html/globals_i.html +41 -2
  483. package/SVF-doxygen/html/html/globals_j.html +3 -6
  484. package/SVF-doxygen/html/html/globals_l.html +3 -0
  485. package/SVF-doxygen/html/html/globals_m.html +8 -2
  486. package/SVF-doxygen/html/html/globals_n.html +2 -1
  487. package/SVF-doxygen/html/html/globals_p.html +1 -4
  488. package/SVF-doxygen/html/html/globals_r.html +12 -6
  489. package/SVF-doxygen/html/html/globals_s.html +33 -0
  490. package/SVF-doxygen/html/html/globals_t.html +3 -0
  491. package/SVF-doxygen/html/html/hierarchy.html +526 -529
  492. package/SVF-doxygen/html/html/iterator_8h_source.html +1 -1
  493. package/SVF-doxygen/html/html/iterator__range_8h_source.html +1 -1
  494. package/SVF-doxygen/html/html/llvm2svf_8cpp.html +1 -1
  495. package/SVF-doxygen/html/html/llvm2svf_8cpp_source.html +1 -1
  496. package/SVF-doxygen/html/html/menudata.js +3 -0
  497. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  498. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  499. package/SVF-doxygen/html/html/namespaceSVF.html +154 -153
  500. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +1003 -776
  501. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +305 -375
  502. package/SVF-doxygen/html/html/namespacemembers_func_g.html +11 -5
  503. package/SVF-doxygen/html/html/namespacemembers_func_i.html +11 -14
  504. package/SVF-doxygen/html/html/namespacemembers_func_r.html +6 -0
  505. package/SVF-doxygen/html/html/namespacemembers_g.html +11 -5
  506. package/SVF-doxygen/html/html/namespacemembers_i.html +8 -11
  507. package/SVF-doxygen/html/html/namespacemembers_r.html +6 -0
  508. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  509. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  510. package/SVF-doxygen/html/html/search/all_0.js +153 -147
  511. package/SVF-doxygen/html/html/search/all_1.js +476 -478
  512. package/SVF-doxygen/html/html/search/all_10.js +323 -327
  513. package/SVF-doxygen/html/html/search/all_11.js +212 -209
  514. package/SVF-doxygen/html/html/search/all_12.js +536 -547
  515. package/SVF-doxygen/html/html/search/all_13.js +188 -189
  516. package/SVF-doxygen/html/html/search/all_14.js +66 -66
  517. package/SVF-doxygen/html/html/search/all_15.js +170 -170
  518. package/SVF-doxygen/html/html/search/all_16.js +60 -60
  519. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  520. package/SVF-doxygen/html/html/search/all_18.js +1 -1
  521. package/SVF-doxygen/html/html/search/all_19.js +10 -10
  522. package/SVF-doxygen/html/html/search/all_1a.js +169 -169
  523. package/SVF-doxygen/html/html/search/all_2.js +159 -159
  524. package/SVF-doxygen/html/html/search/all_3.js +597 -608
  525. package/SVF-doxygen/html/html/search/all_4.js +226 -227
  526. package/SVF-doxygen/html/html/search/all_5.js +116 -156
  527. package/SVF-doxygen/html/html/search/all_6.js +225 -223
  528. package/SVF-doxygen/html/html/search/all_7.js +996 -1012
  529. package/SVF-doxygen/html/html/search/all_8.js +191 -192
  530. package/SVF-doxygen/html/html/search/all_9.js +605 -597
  531. package/SVF-doxygen/html/html/search/all_a.js +46 -47
  532. package/SVF-doxygen/html/html/search/all_b.js +26 -26
  533. package/SVF-doxygen/html/html/search/all_c.js +114 -113
  534. package/SVF-doxygen/html/html/search/all_d.js +196 -196
  535. package/SVF-doxygen/html/html/search/all_e.js +205 -206
  536. package/SVF-doxygen/html/html/search/all_f.js +116 -122
  537. package/SVF-doxygen/html/html/search/classes_0.js +26 -26
  538. package/SVF-doxygen/html/html/search/classes_1.js +9 -9
  539. package/SVF-doxygen/html/html/search/classes_10.js +73 -73
  540. package/SVF-doxygen/html/html/search/classes_11.js +15 -15
  541. package/SVF-doxygen/html/html/search/classes_12.js +2 -2
  542. package/SVF-doxygen/html/html/search/classes_13.js +10 -10
  543. package/SVF-doxygen/html/html/search/classes_14.js +14 -14
  544. package/SVF-doxygen/html/html/search/classes_15.js +1 -1
  545. package/SVF-doxygen/html/html/search/classes_2.js +76 -76
  546. package/SVF-doxygen/html/html/search/classes_3.js +35 -35
  547. package/SVF-doxygen/html/html/search/classes_4.js +8 -10
  548. package/SVF-doxygen/html/html/search/classes_5.js +28 -28
  549. package/SVF-doxygen/html/html/search/classes_6.js +98 -98
  550. package/SVF-doxygen/html/html/search/classes_7.js +33 -33
  551. package/SVF-doxygen/html/html/search/classes_8.js +56 -56
  552. package/SVF-doxygen/html/html/search/classes_9.js +1 -1
  553. package/SVF-doxygen/html/html/search/classes_a.js +12 -12
  554. package/SVF-doxygen/html/html/search/classes_b.js +29 -29
  555. package/SVF-doxygen/html/html/search/classes_c.js +6 -6
  556. package/SVF-doxygen/html/html/search/classes_d.js +18 -19
  557. package/SVF-doxygen/html/html/search/classes_e.js +36 -36
  558. package/SVF-doxygen/html/html/search/classes_f.js +25 -25
  559. package/SVF-doxygen/html/html/search/defines_0.js +3 -3
  560. package/SVF-doxygen/html/html/search/defines_1.js +2 -2
  561. package/SVF-doxygen/html/html/search/defines_2.js +30 -30
  562. package/SVF-doxygen/html/html/search/defines_3.js +20 -20
  563. package/SVF-doxygen/html/html/search/defines_4.js +2 -3
  564. package/SVF-doxygen/html/html/search/defines_5.js +4 -4
  565. package/SVF-doxygen/html/html/search/defines_6.js +2 -2
  566. package/SVF-doxygen/html/html/search/defines_7.js +5 -5
  567. package/SVF-doxygen/html/html/search/defines_8.js +11 -13
  568. package/SVF-doxygen/html/html/search/defines_9.js +9 -9
  569. package/SVF-doxygen/html/html/search/defines_a.js +2 -2
  570. package/SVF-doxygen/html/html/search/defines_b.js +1 -1
  571. package/SVF-doxygen/html/html/search/defines_c.js +3 -2
  572. package/SVF-doxygen/html/html/search/defines_d.js +2 -2
  573. package/SVF-doxygen/html/html/search/defines_e.js +6 -6
  574. package/SVF-doxygen/html/html/search/defines_f.js +3 -3
  575. package/SVF-doxygen/html/html/search/enums_0.js +3 -3
  576. package/SVF-doxygen/html/html/search/enums_1.js +2 -2
  577. package/SVF-doxygen/html/html/search/enums_10.js +1 -1
  578. package/SVF-doxygen/html/html/search/enums_11.js +1 -1
  579. package/SVF-doxygen/html/html/search/enums_2.js +8 -8
  580. package/SVF-doxygen/html/html/search/enums_3.js +1 -1
  581. package/SVF-doxygen/html/html/search/enums_4.js +3 -4
  582. package/SVF-doxygen/html/html/search/enums_5.js +1 -1
  583. package/SVF-doxygen/html/html/search/enums_6.js +2 -2
  584. package/SVF-doxygen/html/html/search/enums_7.js +2 -2
  585. package/SVF-doxygen/html/html/search/enums_8.js +4 -4
  586. package/SVF-doxygen/html/html/search/enums_9.js +1 -1
  587. package/SVF-doxygen/html/html/search/enums_a.js +1 -2
  588. package/SVF-doxygen/html/html/search/enums_b.js +7 -7
  589. package/SVF-doxygen/html/html/search/enums_c.js +1 -1
  590. package/SVF-doxygen/html/html/search/enums_d.js +4 -4
  591. package/SVF-doxygen/html/html/search/enums_e.js +2 -2
  592. package/SVF-doxygen/html/html/search/enums_f.js +4 -4
  593. package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
  594. package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
  595. package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
  596. package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
  597. package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
  598. package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
  599. package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
  600. package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
  601. package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -40
  602. package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
  603. package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -34
  604. package/SVF-doxygen/html/html/search/enumvalues_5.js +48 -48
  605. package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
  606. package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
  607. package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
  608. package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
  609. package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -17
  610. package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
  611. package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -6
  612. package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
  613. package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -11
  614. package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
  615. package/SVF-doxygen/html/html/search/files_0.js +13 -13
  616. package/SVF-doxygen/html/html/search/files_1.js +7 -7
  617. package/SVF-doxygen/html/html/search/files_10.js +8 -8
  618. package/SVF-doxygen/html/html/search/files_11.js +8 -8
  619. package/SVF-doxygen/html/html/search/files_12.js +2 -2
  620. package/SVF-doxygen/html/html/search/files_2.js +49 -49
  621. package/SVF-doxygen/html/html/search/files_3.js +14 -14
  622. package/SVF-doxygen/html/html/search/files_4.js +5 -4
  623. package/SVF-doxygen/html/html/search/files_5.js +13 -13
  624. package/SVF-doxygen/html/html/search/files_6.js +9 -9
  625. package/SVF-doxygen/html/html/search/files_7.js +14 -14
  626. package/SVF-doxygen/html/html/search/files_8.js +13 -13
  627. package/SVF-doxygen/html/html/search/files_9.js +18 -18
  628. package/SVF-doxygen/html/html/search/files_a.js +3 -3
  629. package/SVF-doxygen/html/html/search/files_b.js +2 -2
  630. package/SVF-doxygen/html/html/search/files_c.js +20 -20
  631. package/SVF-doxygen/html/html/search/files_d.js +4 -4
  632. package/SVF-doxygen/html/html/search/files_e.js +62 -62
  633. package/SVF-doxygen/html/html/search/files_f.js +8 -8
  634. package/SVF-doxygen/html/html/search/functions_0.js +6 -351
  635. package/SVF-doxygen/html/html/search/functions_1.js +348 -81
  636. package/SVF-doxygen/html/html/search/functions_10.js +139 -122
  637. package/SVF-doxygen/html/html/search/functions_11.js +126 -283
  638. package/SVF-doxygen/html/html/search/functions_12.js +273 -55
  639. package/SVF-doxygen/html/html/search/functions_13.js +56 -38
  640. package/SVF-doxygen/html/html/search/functions_14.js +38 -71
  641. package/SVF-doxygen/html/html/search/functions_15.js +71 -29
  642. package/SVF-doxygen/html/html/search/functions_16.js +29 -2
  643. package/SVF-doxygen/html/html/search/functions_17.js +2 -169
  644. package/SVF-doxygen/html/html/search/functions_18.html +30 -0
  645. package/SVF-doxygen/html/html/search/functions_18.js +172 -0
  646. package/SVF-doxygen/html/html/search/functions_2.js +82 -251
  647. package/SVF-doxygen/html/html/search/functions_3.js +251 -71
  648. package/SVF-doxygen/html/html/search/functions_4.js +71 -55
  649. package/SVF-doxygen/html/html/search/functions_5.js +51 -55
  650. package/SVF-doxygen/html/html/search/functions_6.js +58 -832
  651. package/SVF-doxygen/html/html/search/functions_7.js +816 -144
  652. package/SVF-doxygen/html/html/search/functions_8.js +143 -417
  653. package/SVF-doxygen/html/html/search/functions_9.js +425 -29
  654. package/SVF-doxygen/html/html/search/functions_a.js +30 -2
  655. package/SVF-doxygen/html/html/search/functions_b.js +2 -23
  656. package/SVF-doxygen/html/html/search/functions_c.js +24 -75
  657. package/SVF-doxygen/html/html/search/functions_d.js +77 -35
  658. package/SVF-doxygen/html/html/search/functions_e.js +34 -56
  659. package/SVF-doxygen/html/html/search/functions_f.js +56 -143
  660. package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
  661. package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
  662. package/SVF-doxygen/html/html/search/related_0.js +2 -2
  663. package/SVF-doxygen/html/html/search/related_1.js +1 -1
  664. package/SVF-doxygen/html/html/search/related_2.js +2 -2
  665. package/SVF-doxygen/html/html/search/related_3.js +2 -2
  666. package/SVF-doxygen/html/html/search/related_4.js +2 -2
  667. package/SVF-doxygen/html/html/search/related_5.js +1 -1
  668. package/SVF-doxygen/html/html/search/related_6.js +2 -2
  669. package/SVF-doxygen/html/html/search/related_7.js +4 -4
  670. package/SVF-doxygen/html/html/search/related_8.js +2 -2
  671. package/SVF-doxygen/html/html/search/related_9.js +4 -4
  672. package/SVF-doxygen/html/html/search/related_a.js +19 -19
  673. package/SVF-doxygen/html/html/search/related_b.js +4 -4
  674. package/SVF-doxygen/html/html/search/related_c.js +1 -1
  675. package/SVF-doxygen/html/html/search/related_d.js +11 -11
  676. package/SVF-doxygen/html/html/search/related_e.js +2 -2
  677. package/SVF-doxygen/html/html/search/related_f.js +2 -2
  678. package/SVF-doxygen/html/html/search/searchdata.js +1 -1
  679. package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
  680. package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
  681. package/SVF-doxygen/html/html/search/typedefs_10.js +60 -60
  682. package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
  683. package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
  684. package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
  685. package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
  686. package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
  687. package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
  688. package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
  689. package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
  690. package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
  691. package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
  692. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  693. package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
  694. package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
  695. package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
  696. package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
  697. package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
  698. package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
  699. package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
  700. package/SVF-doxygen/html/html/search/variables_0.js +147 -147
  701. package/SVF-doxygen/html/html/search/variables_1.js +75 -74
  702. package/SVF-doxygen/html/html/search/variables_10.js +97 -97
  703. package/SVF-doxygen/html/html/search/variables_11.js +46 -46
  704. package/SVF-doxygen/html/html/search/variables_12.js +92 -93
  705. package/SVF-doxygen/html/html/search/variables_13.js +75 -77
  706. package/SVF-doxygen/html/html/search/variables_14.js +14 -14
  707. package/SVF-doxygen/html/html/search/variables_15.js +48 -48
  708. package/SVF-doxygen/html/html/search/variables_16.js +9 -9
  709. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  710. package/SVF-doxygen/html/html/search/variables_18.js +2 -2
  711. package/SVF-doxygen/html/html/search/variables_2.js +34 -35
  712. package/SVF-doxygen/html/html/search/variables_3.js +141 -148
  713. package/SVF-doxygen/html/html/search/variables_4.js +55 -56
  714. package/SVF-doxygen/html/html/search/variables_5.js +38 -40
  715. package/SVF-doxygen/html/html/search/variables_6.js +66 -67
  716. package/SVF-doxygen/html/html/search/variables_7.js +33 -33
  717. package/SVF-doxygen/html/html/search/variables_8.js +7 -7
  718. package/SVF-doxygen/html/html/search/variables_9.js +77 -77
  719. package/SVF-doxygen/html/html/search/variables_a.js +4 -4
  720. package/SVF-doxygen/html/html/search/variables_b.js +10 -10
  721. package/SVF-doxygen/html/html/search/variables_c.js +45 -45
  722. package/SVF-doxygen/html/html/search/variables_d.js +56 -56
  723. package/SVF-doxygen/html/html/search/variables_e.js +123 -123
  724. package/SVF-doxygen/html/html/search/variables_f.js +30 -33
  725. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  726. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  727. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +2 -2
  728. package/SVF-doxygen/html/html/structSVF_1_1MemRegion_1_1equalMemRegion.html +1 -1
  729. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__iterable.html +1 -1
  730. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__iterable_3_01T_00_01void__t_3_01decltype_07std_1_1begin_07std_1_1dec794949348c8e1e00603fd8633b6dd1f3.html +1 -1
  731. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map.html +1 -1
  732. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map_3_01std_1_1map_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  733. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map_3_01std_1_1unordered__map_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  734. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container.html +1 -1
  735. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1deque_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  736. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1list_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  737. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1vector_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  738. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set.html +1 -1
  739. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set_3_01std_1_1set_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  740. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set_3_01std_1_1unordered__set_3_01Ts_8_8_8_01_4_01_4.html +1 -1
  741. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1make__void.html +4 -4
  742. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +7 -7
  743. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
  744. package/SVF-doxygen/html/html/svf-ex_8cpp.html +3 -3
  745. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +4 -4
  746. package/SVF-doxygen/html/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +9 -9
  747. package/SVF-doxygen/html/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +9 -9
  748. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  749. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  750. package/build.sh +1 -1
  751. package/package.json +1 -1
  752. package/svf/include/AbstractExecution/ConsExeState.h +1 -1
  753. package/svf/include/AbstractExecution/IntervalExeState.h +1 -1
  754. package/svf/include/AbstractExecution/IntervalValue.h +1 -1
  755. package/svf/include/AbstractExecution/SymState.h +1 -1
  756. package/svf/include/CFL/CFGrammar.h +1 -1
  757. package/svf/include/CFL/GrammarBuilder.h +3 -3
  758. package/svf/include/FastCluster/fastcluster.h +4 -4
  759. package/svf/include/Graphs/CHG.h +1 -1
  760. package/svf/include/Graphs/ConsG.h +3 -3
  761. package/svf/include/Graphs/GenericGraph.h +2 -2
  762. package/svf/include/Graphs/GraphTraits.h +1 -1
  763. package/svf/include/Graphs/GraphWriter.h +1 -1
  764. package/svf/include/Graphs/IRGraph.h +1 -1
  765. package/svf/include/Graphs/PTACallGraph.h +1 -1
  766. package/svf/include/Graphs/VFGNode.h +2 -2
  767. package/svf/include/MSSA/MSSAMuChi.h +2 -2
  768. package/svf/include/MSSA/MemRegion.h +1 -1
  769. package/svf/include/MSSA/MemSSA.h +1 -1
  770. package/svf/include/MTA/FSMPTA.h +1 -1
  771. package/svf/include/MTA/MHP.h +1 -1
  772. package/svf/include/MTA/TCT.h +1 -1
  773. package/svf/include/MemoryModel/ConditionalPT.h +1 -1
  774. package/svf/include/MemoryModel/MutablePointsToDS.h +2 -2
  775. package/svf/include/MemoryModel/PersistentPointsToDS.h +1 -1
  776. package/svf/include/MemoryModel/PointerAnalysis.h +1 -1
  777. package/svf/include/MemoryModel/PointsTo.h +1 -1
  778. package/svf/include/SABER/SaberCondAllocator.h +1 -1
  779. package/svf/include/SABER/SrcSnkDDA.h +1 -1
  780. package/svf/include/SVFIR/SVFFileSystem.h +3 -3
  781. package/svf/include/SVFIR/SVFIR.h +1 -1
  782. package/svf/include/SVFIR/SVFModule.h +0 -1
  783. package/svf/include/SVFIR/SVFStatements.h +19 -19
  784. package/svf/include/SVFIR/SVFType.h +5 -5
  785. package/svf/include/SVFIR/SVFValue.h +8 -2
  786. package/svf/include/SVFIR/SVFVariables.h +3 -3
  787. package/svf/include/SVFIR/SymbolTableInfo.h +3 -3
  788. package/svf/include/Util/Casting.h +1 -1
  789. package/svf/include/Util/CoreBitVector.h +2 -2
  790. package/svf/include/Util/DPItem.h +1 -1
  791. package/svf/include/Util/ExtAPI.h +11 -457
  792. package/svf/include/Util/NodeIDAllocator.h +1 -1
  793. package/svf/include/Util/Options.h +1 -1
  794. package/svf/include/Util/SVFBugReport.h +1 -1
  795. package/svf/include/Util/SVFUtil.h +11 -26
  796. package/svf/include/Util/WorkList.h +1 -1
  797. package/svf/include/Util/cJSON.h +1 -1
  798. package/svf/include/WPA/Andersen.h +1 -1
  799. package/svf/include/WPA/FlowSensitive.h +1 -1
  800. package/svf/include/WPA/WPASolver.h +1 -1
  801. package/svf/lib/AbstractExecution/SVFIR2ConsExeState.cpp +1 -1
  802. package/svf/lib/CFL/CFGNormalizer.cpp +2 -2
  803. package/svf/lib/CFL/CFLAlias.cpp +2 -2
  804. package/svf/lib/CFL/CFLGraphBuilder.cpp +2 -2
  805. package/svf/lib/CFL/CFLVF.cpp +1 -1
  806. package/svf/lib/DDA/ContextDDA.cpp +1 -1
  807. package/svf/lib/FastCluster/fastcluster.cpp +3 -3
  808. package/svf/lib/Graphs/ConsG.cpp +1 -1
  809. package/svf/lib/Graphs/SVFGOPT.cpp +2 -2
  810. package/svf/lib/Graphs/VFG.cpp +2 -2
  811. package/svf/lib/MSSA/MemRegion.cpp +1 -1
  812. package/svf/lib/MTA/FSMPTA.cpp +1 -1
  813. package/svf/lib/MTA/LockAnalysis.cpp +1 -1
  814. package/svf/lib/MTA/MHP.cpp +1 -1
  815. package/svf/lib/MemoryModel/AccessPath.cpp +2 -2
  816. package/svf/lib/SABER/ProgSlice.cpp +1 -1
  817. package/svf/lib/SABER/SaberCondAllocator.cpp +1 -1
  818. package/svf/lib/SVFIR/SVFFileSystem.cpp +3 -1
  819. package/svf/lib/SVFIR/SVFIR.cpp +3 -3
  820. package/svf/lib/SVFIR/SVFValue.cpp +5 -5
  821. package/svf/lib/SVFIR/SymbolTableInfo.cpp +2 -2
  822. package/svf/lib/Util/ExtAPI.cpp +36 -595
  823. package/svf/lib/Util/NodeIDAllocator.cpp +2 -2
  824. package/svf/lib/Util/Options.cpp +8 -8
  825. package/svf/lib/Util/SVFBugReport.cpp +0 -2
  826. package/svf/lib/Util/SVFUtil.cpp +2 -2
  827. package/svf/lib/Util/extapi.c +1348 -0
  828. package/svf/lib/WPA/Andersen.cpp +6 -6
  829. package/svf/lib/WPA/VersionedFlowSensitive.cpp +2 -2
  830. package/svf-llvm/CMakeLists.txt +1 -1
  831. package/svf-llvm/include/SVF-LLVM/GEPTypeBridgeIterator.h +1 -1
  832. package/svf-llvm/include/SVF-LLVM/LLVMModule.h +17 -0
  833. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +14 -1
  834. package/svf-llvm/include/SVF-LLVM/SVFIRBuilder.h +5 -14
  835. package/svf-llvm/include/SVF-LLVM/SymbolTableBuilder.h +1 -1
  836. package/svf-llvm/lib/BreakConstantExpr.cpp +1 -1
  837. package/svf-llvm/lib/ICFGBuilder.cpp +2 -2
  838. package/svf-llvm/lib/LLVMModule.cpp +160 -46
  839. package/svf-llvm/lib/LLVMUtil.cpp +121 -0
  840. package/svf-llvm/lib/SVFIRBuilder.cpp +12 -81
  841. package/svf-llvm/lib/SVFIRExtAPI.cpp +161 -536
  842. package/svf-llvm/lib/SymbolTableBuilder.cpp +2 -2
  843. package/svf-llvm/tools/MTA/MTAResultValidator.cpp +1 -1
  844. package/svf/include/Util/ExtAPI.json +0 -5853
@@ -28,99 +28,10 @@
28
28
  */
29
29
 
30
30
  #include "Util/ExtAPI.h"
31
- #include "SVFIR/SVFVariables.h"
32
- #include "Util/SVFUtil.h"
33
- #include "Util/cJSON.h"
34
- #include <stdlib.h>
35
- #include <string.h>
36
- #include <sys/stat.h>
37
31
 
38
32
  using namespace SVF;
39
33
 
40
34
  ExtAPI* ExtAPI::extOp = nullptr;
41
- cJSON* ExtAPI::root = nullptr;
42
-
43
- // Get environment variables $SVF_DIR and "npm root" through popen() method
44
- static std::string GetStdoutFromCommand(const std::string& command)
45
- {
46
- char buffer[128];
47
- std::string result = "";
48
- // Open pipe to file
49
- FILE* pipe = popen(command.c_str(), "r");
50
- if (!pipe)
51
- {
52
- return "popen failed!";
53
- }
54
- // read till end of process:
55
- while (!feof(pipe))
56
- {
57
- // use buffer to read and add to result
58
- if (fgets(buffer, 128, pipe) != NULL)
59
- result += buffer;
60
- }
61
- pclose(pipe);
62
- // remove "\n"
63
- result.erase(remove(result.begin(), result.end(), '\n'), result.end());
64
- return result;
65
- }
66
-
67
- // Get ExtAPI.json file
68
- static std::string getJsonFile(const std::string& path)
69
- {
70
- std::string jsonFilePath = GetStdoutFromCommand(path);
71
- if (path.compare("npm root") == 0)
72
- {
73
- int os_flag = 1;
74
- // SVF installed via npm needs to determine the type of operating
75
- // system, otherwise the ExtAPI.json path may not be found.
76
- #ifdef linux
77
- // Linux os
78
- os_flag = 0;
79
- jsonFilePath.append("/svf-lib/SVF-linux");
80
- #endif
81
- // Mac os
82
- if (os_flag == 1)
83
- {
84
- jsonFilePath.append("/svf-lib/SVF-osx");
85
- }
86
- }
87
- if (jsonFilePath.back() != '/') jsonFilePath.push_back('/');
88
- jsonFilePath.append(EXTAPI_JSON_PATH);
89
- return jsonFilePath;
90
- }
91
-
92
- static cJSON* parseJson(const std::string& path, off_t fileSize)
93
- {
94
- FILE* file = fopen(path.c_str(), "r");
95
- if (!file)
96
- {
97
- return nullptr;
98
- }
99
-
100
- // allocate memory size matched with file size
101
- char* jsonStr = (char*)calloc(fileSize + 1, sizeof(char));
102
-
103
- // read json string from file
104
- u32_t size = fread(jsonStr, sizeof(char), fileSize, file);
105
- if (size == 0)
106
- {
107
- SVFUtil::errs() << SVFUtil::errMsg("\t Wrong ExtAPI.json path!! ")
108
- << "The current ExtAPI.json path is: " << path << "\n";
109
- assert(false && "Read ExtAPI.json file fails!");
110
- return nullptr;
111
- }
112
- fclose(file);
113
-
114
- // convert json string to json pointer variable
115
- cJSON* root = cJSON_Parse(jsonStr);
116
- if (!root)
117
- {
118
- free(jsonStr);
119
- return nullptr;
120
- }
121
- free(jsonStr);
122
- return root;
123
- }
124
35
 
125
36
  ExtAPI* ExtAPI::getExtAPI(const std::string& path)
126
37
  {
@@ -128,46 +39,6 @@ ExtAPI* ExtAPI::getExtAPI(const std::string& path)
128
39
  {
129
40
  extOp = new ExtAPI;
130
41
  }
131
- if (root == nullptr)
132
- {
133
- struct stat statbuf;
134
-
135
- // Four ways to get ExtAPI.json path
136
- // 1. Explicit path provided
137
- // 2. default path (get ExtAPI.json path from Util/config.h)
138
- // 3. from $SVF_DIR
139
- // 4. from "npm root"(If SVF is installed via npm)
140
-
141
- std::string jsonFilePath = path;
142
- if (!jsonFilePath.empty() && !stat(jsonFilePath.c_str(), &statbuf))
143
- {
144
- root = parseJson(jsonFilePath, statbuf.st_size);
145
- return extOp;
146
- }
147
-
148
- jsonFilePath = std::string(PROJECT_PATH) + '/' + EXTAPI_JSON_PATH;
149
- if (!stat(jsonFilePath.c_str(), &statbuf))
150
- {
151
- root = parseJson(jsonFilePath, statbuf.st_size);
152
- return extOp;
153
- }
154
-
155
- jsonFilePath = getJsonFile("echo $SVF_DIR");
156
- if (!stat(jsonFilePath.c_str(), &statbuf))
157
- {
158
- root = parseJson(jsonFilePath, statbuf.st_size);
159
- return extOp;
160
- }
161
-
162
- jsonFilePath = getJsonFile("npm root");
163
- if (!stat(jsonFilePath.c_str(), &statbuf))
164
- {
165
- root = parseJson(jsonFilePath, statbuf.st_size);
166
- return extOp;
167
- }
168
- SVFUtil::errs() << "No JsonFile found at " << jsonFilePath << " for getExtAPI(); set $SVF_DIR first!\n";
169
- abort();
170
- }
171
42
  return extOp;
172
43
  }
173
44
 
@@ -178,517 +49,87 @@ void ExtAPI::destory()
178
49
  delete extOp;
179
50
  extOp = nullptr;
180
51
  }
181
- if (root != nullptr)
182
- {
183
- cJSON_Delete(root);
184
- root = nullptr;
185
- }
186
- }
187
-
188
- void ExtAPI::add_entry(const char* funName, const char* returnType,
189
- std::vector<const char*> argTypes, extType type,
190
- bool overwrite_app_function)
191
- {
192
- assert(root && "Parse the json before adding additional entries");
193
- assert(get_type(funName) == EFT_NULL && "Do not add entries that already exist");
194
- auto entry = cJSON_CreateObject();
195
-
196
- // add the signature fields
197
- auto returnTypeString = cJSON_CreateString(returnType);
198
- cJSON_AddItemToObject(entry, "return", returnTypeString);
199
-
200
- std::stringstream ss;
201
- ss << "(";
202
- for (auto str : argTypes)
203
- ss << str << ",";
204
- std::string formattedArgs = ss.str();
205
- if (formattedArgs.back() == ',')
206
- formattedArgs.back() = ')';
207
- else
208
- formattedArgs.append(")");
209
- auto argsString = cJSON_CreateString(formattedArgs.c_str());
210
- cJSON_AddItemToObject(entry, "argument", argsString);
211
-
212
- // add the type field
213
- auto typeString = cJSON_CreateString(extType_toString(type).c_str());
214
- cJSON_AddItemToObject(entry, JSON_OPT_FUNCTIONTYPE, typeString);
215
-
216
- // add the 'overwrite_app_function' field
217
- auto overwriteBool = cJSON_CreateNumber(overwrite_app_function ? 1 : 0);
218
- cJSON_AddItemToObject(entry, JSON_OPT_OVERWRITE, overwriteBool);
219
-
220
- // add object to root
221
- cJSON_AddItemToObject(root, funName, entry);
222
- }
223
-
224
- // Get the corresponding name in ext_t, e.g. "EXT_ADDR" in {"addr", EXT_ADDR},
225
- std::string ExtAPI::get_opName(const std::string& s)
226
- {
227
- u32_t end = 0;
228
- while (end < s.size() && !isdigit(s[end]))
229
- end++;
230
- return s.substr(0, end);
231
- }
232
-
233
- const std::string& ExtAPI::extType_toString(extType type)
234
- {
235
- auto it =
236
- std::find_if(type_pair.begin(), type_pair.end(),
237
- [&](const auto& pair)
238
- {
239
- return pair.second == type;
240
- });
241
- assert(it != type_pair.end());
242
- return it->first;
243
52
  }
244
53
 
245
- // Get numeric index of the argument in external function
246
- u32_t ExtAPI::getArgPos(const std::string& s)
54
+ std::string ExtAPI::getExtFuncAnnotation(const SVFFunction* fun, const std::string& funcAnnotation)
247
55
  {
248
- u32_t start = 0;
249
- while (start < s.size() && isalpha(s[start]))
250
- start++;
251
- if (s.substr(0, start) != "Arg")
252
- assert(false && "the argument of extern function in ExtAPI.json should start with 'Arg' !");
253
- u32_t end = start + 1;
254
- while (end < s.size() && isdigit(s[end]))
255
- end++;
256
- std::string digitStr = s.substr(start, end - start);
257
- u32_t argNum = atoi(digitStr.c_str());
258
- return argNum;
56
+ assert(fun && "Null SVFFunction* pointer");
57
+ const std::vector<std::string>& annotations = fun->getAnnotations();
58
+ for (const std::string& annotation : annotations)
59
+ if (annotation.find(funcAnnotation) != std::string::npos)
60
+ return annotation;
61
+ return "";
259
62
  }
260
63
 
261
- // return value >= 0 is an argument node
262
- // return value = -1 is an inst node
263
- // return value = -2 is a Dummy node
264
- // return value = -3 is an object node
265
- // return value = -4 is a nullptr node
266
- // return value = -5 is an offset
267
- // return value = -6 is an illegal operand format
268
- s32_t ExtAPI::getNodeIDType(const std::string& s)
64
+ bool ExtAPI::hasExtFuncAnnotation(const SVFFunction* fun, const std::string& funcAnnotation)
269
65
  {
270
- u32_t argPos = -1;
271
- // 'A' represents an argument
272
- if (s.size() == 0)
273
- return -5;
274
- u32_t start = 0;
275
- while (start < s.size() && isalpha(s[start]))
276
- start++;
277
- std::string argStr = s.substr(0, start);
278
- if (argStr == "Arg")
279
- {
280
- u32_t end = start + 1;
281
- while (end < s.size() && isdigit(s[end]))
282
- end++;
283
- std::string digitStr = s.substr(start, end - start);
284
- argPos = atoi(digitStr.c_str());
285
- return argPos;
286
- }
287
-
288
- static const Map<std::string, s32_t> argStrToBinOp =
289
- {
290
- {"Ret", -1},
291
- {"Dummy", -2},
292
- {"Obj", -3},
293
- {"NullPtr", -4},
294
- {"Add", BinaryOPStmt::Add},
295
- {"Sub", BinaryOPStmt::Sub},
296
- {"Mul", BinaryOPStmt::Mul},
297
- {"SDiv", BinaryOPStmt::SDiv},
298
- {"SRem", BinaryOPStmt::SRem},
299
- {"Xor", BinaryOPStmt::Xor},
300
- {"And", BinaryOPStmt::And},
301
- {"Or", BinaryOPStmt::Or},
302
- {"AShr", BinaryOPStmt::AShr},
303
- {"Shl", BinaryOPStmt::Shl},
304
- {"ICMP_EQ", CmpStmt::ICMP_EQ},
305
- {"ICMP_NE", CmpStmt::ICMP_NE},
306
- {"ICMP_UGT", CmpStmt::ICMP_UGT},
307
- {"ICMP_SGT", CmpStmt::ICMP_SGT},
308
- {"ICMP_UGE", CmpStmt::ICMP_UGE},
309
- {"ICMP_SGE", CmpStmt::ICMP_SGE},
310
- {"ICMP_ULT", CmpStmt::ICMP_ULT},
311
- {"ICMP_SLT", CmpStmt::ICMP_SLT},
312
- {"ICMP_ULE", CmpStmt::ICMP_ULE},
313
- {"ICMP_SLE", CmpStmt::ICMP_SLE},
314
- {"FNeg", UnaryOPStmt::FNeg},
315
- };
316
-
317
- auto it = argStrToBinOp.find(argStr);
318
- if (it != argStrToBinOp.cend())
319
- return it->second;
320
- // offset
321
- u32_t i = 0;
322
- while (i < s.size() && isdigit(s[i]))
323
- i++;
324
- if (i == s.size())
325
- return -5;
326
- // illegal operand format
327
- return -6;
328
- }
329
-
330
- // Get external function name, e.g "memcpy"
331
- std::string ExtAPI::get_name(const SVFFunction* F)
332
- {
333
- assert(F);
334
- std::string funName = F->getName();
335
- if (F->isIntrinsic())
336
- {
337
- unsigned start = funName.find('.');
338
- unsigned end = funName.substr(start + 1).find('.');
339
- funName = "llvm." + funName.substr(start + 1, end);
340
- }
341
- return funName;
342
- }
343
-
344
- // Get specifications of external functions in ExtAPI.json file
345
- cJSON* ExtAPI::get_FunJson(const std::string& funName)
346
- {
347
- assert(root && "JSON not loaded");
348
- return cJSON_GetObjectItemCaseSensitive(root, funName.c_str());
349
- }
350
-
351
- ExtAPI::Operand ExtAPI::getBasicOperation(cJSON* obj)
352
- {
353
- Operand basicOp;
354
- if (strstr(obj->string, "AddrStmt") != NULL)
355
- basicOp.setType(ExtAPI::OperationType::Addr);
356
- else if (strstr(obj->string, "CopyStmt") != NULL)
357
- basicOp.setType(ExtAPI::OperationType::Copy);
358
- else if (strstr(obj->string, "LoadStmt") != NULL)
359
- basicOp.setType(ExtAPI::OperationType::Load);
360
- else if (strstr(obj->string, "StoreStmt") != NULL)
361
- basicOp.setType(ExtAPI::OperationType::Store);
362
- else if (strstr(obj->string, "GepStmt") != NULL)
363
- basicOp.setType(ExtAPI::OperationType::Gep);
364
- else if (strstr(obj->string, "ReturnStmt") != NULL)
365
- basicOp.setType(ExtAPI::OperationType::Return);
366
- else if (strstr(obj->string, "Rb_tree_ops") != NULL)
367
- basicOp.setType(ExtAPI::OperationType::Rb_tree_ops);
368
- else if (strstr(obj->string, "memcpy_like") != NULL)
369
- basicOp.setType(ExtAPI::OperationType::Memcpy_like);
370
- else if (strstr(obj->string, "memset_like") != NULL)
371
- basicOp.setType(ExtAPI::OperationType::Memset_like);
372
- else
373
- assert(false && "Unknown operation type");
374
-
375
- cJSON* value = obj->child;
376
- while (value)
377
- {
378
- if (strcmp(value->string, "src") == 0)
379
- basicOp.setSrcValue(value->valuestring);
380
- else if (strcmp(value->string, "dst") == 0)
381
- basicOp.setDstValue(value->valuestring);
382
- else if (strcmp(value->string, "offset") == 0 || strcmp(value->string, "size") == 0)
383
- basicOp.setOffsetOrSizeStr(value->valuestring);
384
- else
385
- assert(false && "Unknown operation value");
386
- value = value->next;
387
- }
388
- return basicOp;
389
- }
390
-
391
- // Get all operations of an extern function
392
- ExtAPI::ExtFunctionOps ExtAPI::getExtFunctionOps(const SVFFunction* extFunction)
393
- {
394
- ExtAPI::ExtFunctionOps extFunctionOps;
395
- extFunctionOps.setExtFunName(extFunction->getName());
396
- if (!is_sameSignature(extFunction))
397
- return extFunctionOps;
398
-
399
- auto it = extFunToOps.find(extFunction->getName());
400
- if (it != extFunToOps.end())
401
- return it->second;
402
-
403
- extFunctionOps.setExtFunName(extFunction->getName());
404
- cJSON* item = get_FunJson(extFunction->getName());
405
- if (item != nullptr)
406
- {
407
- cJSON* obj = item->child;
408
- // Get the first operation of the function
409
- obj = obj->next->next->next->next;
410
- while (obj)
411
- {
412
- ExtOperation operation;
413
- if (obj->type == cJSON_Object || obj->type == cJSON_Array)
414
- {
415
- if (strstr(obj->string, "CallStmt") != NULL)
416
- {
417
- extFunctionOps.setCallStmtNum(extFunctionOps.getCallStmtNum() + 1);
418
- operation.setCallOp(true);
419
- cJSON* value = obj->child;
420
- while (value)
421
- {
422
- if (strcmp(value->string, "callee_name") == 0)
423
- operation.setCalleeName(value->valuestring);
424
- else if (strcmp(value->string, "callee_return") == 0)
425
- operation.setCalleeReturn(value->valuestring);
426
- else if (strcmp(value->string, "callee_arguments") == 0)
427
- operation.setCalleeArguments(value->valuestring);
428
- else
429
- operation.getCalleeOperands().push_back(getBasicOperation(value));
430
- value = value->next;
431
- }
432
- }
433
- else if (strstr(obj->string, "CondStmt") != NULL)
434
- {
435
- operation.setConOp(true);
436
- obj = obj->child;
437
- assert(strcmp(obj->string, "Condition") == 0 && "Unknown operation type");
438
- operation.setConOp(obj->valuestring);
439
- obj = obj->next;
440
- assert(strcmp(obj->string, "TrueBranch") == 0 && "Unknown operation type");
441
- cJSON* value = obj->child;
442
- while (value)
443
- {
444
- operation.getTrueBranchOperands().push_back(getBasicOperation(value));
445
- value = value->next;
446
- }
447
- obj = obj->next;
448
- assert(strcmp(obj->string, "FalseBranch") == 0&& "Unknown operation type");
449
- value = obj->child;
450
- while (value)
451
- {
452
- operation.getFalseBranchOperands().push_back(getBasicOperation(value));
453
- value = value->next;
454
- }
455
- }
456
- else
457
- operation.setBasicOp(getBasicOperation(obj));
458
- }
459
- obj = obj->next;
460
- extFunctionOps.getOperations().push_back(operation);
461
- }
462
- }
463
- extFunToOps[extFunction->getName()] = extFunctionOps;
464
- return extFunctionOps;
465
- }
466
-
467
- // Get arguments of the operation, e.g. ["A1R", "A0", "A2"]
468
- std::vector<std::string> ExtAPI::get_opArgs(const cJSON* value)
469
- {
470
- std::vector<std::string> args;
471
- while (value)
472
- {
473
- if (value->type == cJSON_String)
474
- args.push_back(value->valuestring);
475
- value = value->next;
476
- }
477
- return args;
478
- }
479
-
480
- ExtAPI::extType ExtAPI::get_type(const std::string& funName)
481
- {
482
- cJSON* item = get_FunJson(funName);
483
- std::string type = "";
484
- if (item != nullptr)
485
- {
486
- // Get the first operation of the function
487
- cJSON* obj = item->child->next->next;
488
- if (strcmp(obj->string, JSON_OPT_FUNCTIONTYPE) == 0)
489
- type = obj->valuestring;
490
- else
491
- assert(false && "The function operation format is illegal!");
492
- }
493
- std::map<std::string, extType>::const_iterator it = type_pair.find(type);
494
- if (it == type_pair.end())
495
- return EFT_NULL;
496
- else
497
- return it->second;
498
- }
499
-
500
- // Get property of the operation, e.g. "EFT_A1R_A0R"
501
- ExtAPI::extType ExtAPI::get_type(const SVF::SVFFunction* F)
502
- {
503
- return get_type(get_name(F));
504
- }
505
-
506
- // Get priority of he function, return value
507
- // 0: Apply user-defined functions
508
- // 1: Apply function specification in ExtAPI.json
509
- u32_t ExtAPI::isOverwrittenAppFunction(const SVF::SVFFunction* callee)
510
- {
511
- std::string funName = get_name(callee);
512
- return isOverwrittenAppFunction(funName);
513
- }
514
-
515
- u32_t ExtAPI::isOverwrittenAppFunction(const std::string& funName)
516
- {
517
- cJSON* item = get_FunJson(funName);
518
- if (item != nullptr)
519
- {
520
- cJSON* obj = item->child;
521
- obj = obj->next->next->next;
522
- if (strcmp(obj->string, JSON_OPT_OVERWRITE) == 0)
523
- return obj->valueint;
524
- else
525
- assert(false && "The function operation format is illegal!");
526
- }
527
- return 0;
528
- }
529
-
530
- void ExtAPI::setOverWrittenAppFunction(const std::string& funcName, u32_t overwrite_app_function)
531
- {
532
- auto item = get_FunJson(funcName);
533
- assert(item && "Do not set fields for ExtAPI funcs that don't exist!");
534
- auto overwrite_obj = item->child->next->next->next;
535
- assert(overwrite_obj);
536
- assert(strcmp(overwrite_obj->string, JSON_OPT_OVERWRITE) == 0);
537
- cJSON_SetIntValue(overwrite_obj, overwrite_app_function);
66
+ assert(fun && "Null SVFFunction* pointer");
67
+ const std::vector<std::string>& annotations = fun->getAnnotations();
68
+ for (const std::string& annotation : annotations)
69
+ if (annotation.find(funcAnnotation) != std::string::npos)
70
+ return true;
71
+ return false;
538
72
  }
539
73
 
540
74
  // Does (F) have a static var X (unavailable to us) that its return points to?
541
75
  bool ExtAPI::has_static(const SVFFunction* F)
542
76
  {
543
- ExtAPI::extType t = get_type(F);
544
- return t == EFT_STAT || t == EFT_STAT2;
77
+ return F && hasExtFuncAnnotation(F, "STATIC");
545
78
  }
546
79
 
547
- // Assuming hasStatic(F), does (F) have a second static Y where X -> Y?
548
- bool ExtAPI::has_static2(const SVFFunction* F)
80
+ bool ExtAPI::is_memcpy(const SVFFunction *F)
549
81
  {
550
- ExtAPI::extType t = get_type(F);
551
- return t == EFT_STAT2;
82
+ return F && hasExtFuncAnnotation(F, "MEMCPY");
552
83
  }
553
84
 
554
- bool ExtAPI::is_memset_or_memcpy(const SVFFunction* F)
85
+ bool ExtAPI::is_memset(const SVFFunction *F)
555
86
  {
556
- ExtAPI::extType t = get_type(F);
557
- return t == EFT_L_A0__A0R_A1 || t == EFT_L_A0__A0R_A1R || t == EFT_A1R_A0R || t == EFT_A3R_A1R_NS
558
- || t == EFT_STD_RB_TREE_INSERT_AND_REBALANCE || t == EFT_L_A0__A1_A0;
87
+ return F && hasExtFuncAnnotation(F, "MEMSET");
559
88
  }
560
89
 
561
90
  bool ExtAPI::is_alloc(const SVFFunction* F)
562
91
  {
563
- ExtAPI::extType t = get_type(F);
564
- return t == EFT_ALLOC || t == EFT_NOSTRUCT_ALLOC;
92
+ return F && hasExtFuncAnnotation(F, "ALLOC_RET");
565
93
  }
566
94
 
567
95
  // Does (F) allocate a new object and assign it to one of its arguments?
568
96
  bool ExtAPI::is_arg_alloc(const SVFFunction* F)
569
97
  {
570
- ExtAPI::extType t = get_type(F);
571
- return t == EFT_A0R_NEW || t == EFT_A1R_NEW || t == EFT_A2R_NEW ||
572
- t == EFT_A4R_NEW || t == EFT_A11R_NEW;
98
+ return F && hasExtFuncAnnotation(F, "ALLOC_ARG");
573
99
  }
574
100
 
575
101
  // Get the position of argument which holds the new object
576
102
  s32_t ExtAPI::get_alloc_arg_pos(const SVFFunction* F)
577
103
  {
578
- ExtAPI::extType t = get_type(F);
579
- switch (t)
104
+ std::string s = "ALLOC_ARG";
105
+ std::string allocArg = getExtFuncAnnotation(F, s);
106
+ assert(!allocArg.empty() && "Not an alloc call via argument or incorrect extern function annotation!");
107
+
108
+ std::string number;
109
+ for (char c : allocArg)
580
110
  {
581
- case EFT_A0R_NEW:
582
- return 0;
583
- case EFT_A1R_NEW:
584
- return 1;
585
- case EFT_A2R_NEW:
586
- return 2;
587
- case EFT_A4R_NEW:
588
- return 4;
589
- case EFT_A11R_NEW:
590
- return 11;
591
- default:
592
- assert(false && "Not an alloc call via argument.");
593
- return -1;
111
+ if (isdigit(c))
112
+ number.push_back(c);
594
113
  }
595
- }
596
-
597
- // Does (F) allocate only non-struct objects?
598
- bool ExtAPI::no_struct_alloc(const SVFFunction* F)
599
- {
600
- ExtAPI::extType t = get_type(F);
601
- return t == EFT_NOSTRUCT_ALLOC;
602
- }
603
-
604
- // Does (F) not free/release any memory?
605
- bool ExtAPI::is_dealloc(const SVFFunction* F)
606
- {
607
- ExtAPI::extType t = get_type(F);
608
- return t == EFT_FREE;
609
- }
610
-
611
- // Does (F) not do anything with the known pointers?
612
- bool ExtAPI::is_noop(const SVFFunction* F)
613
- {
614
- ExtAPI::extType t = get_type(F);
615
- return t == EFT_NOOP || t == EFT_FREE;
114
+ assert(!number.empty() && "Incorrect naming convention for svf external functions(ALLOC_ARG + number)?");
115
+ return std::stoi(number);
616
116
  }
617
117
 
618
118
  // Does (F) reallocate a new object?
619
119
  bool ExtAPI::is_realloc(const SVFFunction* F)
620
120
  {
621
- ExtAPI::extType t = get_type(F);
622
- return t == EFT_REALLOC;
121
+ return F && hasExtFuncAnnotation(F, "REALLOC_RET");
623
122
  }
624
123
 
625
- // Does (F) have the same return type(pointer or nonpointer) and same number of
626
- // arguments
627
- bool ExtAPI::is_sameSignature(const SVFFunction* F)
628
- {
629
- cJSON* item = get_FunJson(F->getName());
630
- // If return type is pointer
631
- bool isPointer = false;
632
- // The number of arguments
633
- u32_t argNum = 0;
634
- if (item != nullptr)
635
- {
636
- // Get the "return" attribute
637
- cJSON* obj = item->child;
638
- if (strlen(obj->valuestring) == 0) // e.g. "return": ""
639
- assert(false && "'return' should not be empty!");
640
- // If "return": "..." includes "*", the return type of extern function is a pointer
641
- if (strstr(obj->valuestring, "*") != NULL)
642
- isPointer = true;
643
- // Get the "arguments" attribute
644
- obj = obj->next;
645
- if (strlen(obj->valuestring) == 0) // e.g. "arguments": "",
646
- assert(false && "'arguments' should not be empty!");
647
- // If "arguments": "()", the number of arguments is 0, otherwise, number >= 1;
648
- if (strcmp(obj->valuestring, "()") != 0)
649
- {
650
- argNum++;
651
- for (u32_t i = 0; i < strlen(obj->valuestring); i++)
652
- if (obj->valuestring[i] == ',') // Calculate the number of arguments based on the number of ","
653
- argNum++;
654
- }
655
- }
656
-
657
- if ( !F->isVarArg() && F->arg_size() != argNum) // The number of arguments is different
658
- return false;
659
- // Is the return type the same?
660
- return F->getReturnType()->isPointerTy() == isPointer;
661
- }
662
124
 
663
125
  // Should (F) be considered "external" (either not defined in the program
664
126
  // or a user-defined version of a known alloc or no-op)?
665
127
  bool ExtAPI::is_ext(const SVFFunction* F)
666
128
  {
667
129
  assert(F && "Null SVFFunction* pointer");
668
- bool res;
669
130
  if (F->isDeclaration() || F->isIntrinsic())
670
- {
671
- res = 1;
672
- }
131
+ return true;
673
132
  else
674
- {
675
- ExtAPI::extType t = get_type(F);
676
- if (t != EFT_NULL)
677
- {
678
- u32_t overwrittenAppFunction = isOverwrittenAppFunction(F);
679
- if (!is_sameSignature(F))
680
- res = 0;
681
- // overwrittenAppFunction = 1: Execute function specification in
682
- // ExtAPI.json F is considered as external function
683
- else if (overwrittenAppFunction == 1)
684
- res = 1;
685
- // overwrittenAppFunction = 0: Execute user-defined functions
686
- // F is not considered as external function
687
- else
688
- res = 0;
689
- }
690
- else
691
- res = 0;
692
- }
693
- return res;
694
- }
133
+ return hasExtFuncAnnotation(F, "SVF");
134
+ return false;
135
+ }