svf-tools 1.0.768 → 1.0.770

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 (503) hide show
  1. package/SVF-doxygen/html/html/AccessPath_8cpp_source.html +163 -130
  2. package/SVF-doxygen/html/html/AccessPath_8h_source.html +47 -45
  3. package/SVF-doxygen/html/html/AddressValue_8h_source.html +1 -1
  4. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/CFGrammar_8cpp_source.html +3 -3
  6. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +9 -9
  8. package/SVF-doxygen/html/html/CommandLine_8h_source.html +1 -1
  9. package/SVF-doxygen/html/html/ConsExeState_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/ConsExeState_8h_source.html +1 -1
  11. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +9 -9
  12. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
  15. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
  16. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/ExeState_8h_source.html +1 -1
  19. package/SVF-doxygen/html/html/ExtAPI_8cpp.html +1 -1
  20. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +60 -67
  21. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +9 -9
  22. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
  25. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
  27. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +3 -3
  28. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  29. package/SVF-doxygen/html/html/IntervalExeState_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/IntervalValue_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +19 -19
  32. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1108 -1111
  33. package/SVF-doxygen/html/html/LLVMUtil_8h.html +2 -0
  34. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +191 -172
  35. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
  39. package/SVF-doxygen/html/html/NumericLiteral_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
  42. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  43. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/html/RelExeState_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/SVFFileSystem_8cpp_source.html +13 -13
  46. package/SVF-doxygen/html/html/SVFFileSystem_8h_source.html +13 -13
  47. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
  48. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  49. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
  50. package/SVF-doxygen/html/html/SVFIR2ConsExeState_8cpp_source.html +56 -56
  51. package/SVF-doxygen/html/html/SVFIR2ConsExeState_8h_source.html +6 -6
  52. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +831 -749
  53. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8h_source.html +138 -127
  54. package/SVF-doxygen/html/html/SVFIR2Relation_8cpp_source.html +33 -33
  55. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +11 -11
  56. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +11 -11
  57. package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp_source.html +11 -12
  58. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +15 -15
  59. package/SVF-doxygen/html/html/SVFIR_8h_source.html +11 -11
  60. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +20 -20
  61. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +806 -799
  62. package/SVF-doxygen/html/html/SVFType_8h_source.html +1 -1
  63. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
  64. package/SVF-doxygen/html/html/SVFUtil_8h.html +0 -12
  65. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +300 -333
  66. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +1 -1
  67. package/SVF-doxygen/html/html/SVFValue_8h_source.html +2 -2
  68. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  69. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +8 -8
  70. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +2 -2
  71. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  73. package/SVF-doxygen/html/html/SymState_8cpp_source.html +1 -1
  74. package/SVF-doxygen/html/html/SymState_8h_source.html +1 -1
  75. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +52 -62
  76. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -3
  77. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  78. package/SVF-doxygen/html/html/VFGNode_8h_source.html +7 -7
  79. package/SVF-doxygen/html/html/VFG_8cpp_source.html +15 -15
  80. package/SVF-doxygen/html/html/VFG_8h_source.html +10 -10
  81. package/SVF-doxygen/html/html/WTO_8h_source.html +1 -1
  82. package/SVF-doxygen/html/html/cJSON_8cpp.html +3 -2
  83. package/SVF-doxygen/html/html/cJSON_8cpp_source.html +3 -2
  84. package/SVF-doxygen/html/html/classOption.html +1 -1
  85. package/SVF-doxygen/html/html/classSVF_1_1AccessPath-members.html +27 -26
  86. package/SVF-doxygen/html/html/classSVF_1_1AccessPath.html +179 -124
  87. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  88. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1AddressValue.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +69 -69
  94. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  95. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +52 -52
  96. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  97. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTO.html +1 -1
  98. package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTOCycle.html +1 -1
  99. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +9 -9
  101. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  102. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +36 -36
  103. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +98 -98
  104. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1ConsExeState.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +8 -8
  107. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
  108. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  110. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +1 -1
  111. package/SVF-doxygen/html/html/classSVF_1_1CxtDPItem.html +1 -1
  112. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
  113. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
  114. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +1 -1
  115. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +2 -2
  116. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +1 -1
  118. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +1 -1
  119. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +51 -56
  120. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  121. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
  122. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
  123. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  125. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +96 -95
  126. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +55 -20
  127. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  128. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +3 -3
  129. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +3 -3
  130. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
  131. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  132. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  133. package/SVF-doxygen/html/html/classSVF_1_1IntervalExeState.html +1 -1
  134. package/SVF-doxygen/html/html/classSVF_1_1IntervalValue.html +1 -1
  135. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +19 -19
  139. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  141. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +3 -3
  147. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +48 -48
  148. package/SVF-doxygen/html/html/classSVF_1_1NumericLiteral.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  150. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  151. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
  154. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +47 -47
  155. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
  156. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1RelExeState.html +1 -1
  159. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  160. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +36 -36
  161. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +2 -2
  163. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +1 -1
  166. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +14 -14
  167. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ConsExeState.html +49 -49
  168. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState-members.html +45 -42
  169. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +962 -780
  170. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +21 -22
  171. package/SVF-doxygen/html/html/classSVF_1_1SVFIRReader.html +2 -2
  172. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +1 -1
  173. package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +24 -24
  175. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +8 -8
  176. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +39 -39
  177. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  180. package/SVF-doxygen/html/html/classSVF_1_1SymState.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +51 -61
  182. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +23 -23
  184. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +22 -22
  185. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +45 -45
  186. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  187. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +15 -15
  188. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +1 -1
  190. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +1 -1
  192. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +1 -1
  194. package/SVF-doxygen/html/html/extapi_8c.html +1487 -302
  195. package/SVF-doxygen/html/html/extapi_8c_source.html +1120 -1164
  196. package/SVF-doxygen/html/html/functions_a.html +14 -11
  197. package/SVF-doxygen/html/html/functions_c.html +24 -21
  198. package/SVF-doxygen/html/html/functions_f.html +3 -3
  199. package/SVF-doxygen/html/html/functions_func.html +9 -6
  200. package/SVF-doxygen/html/html/functions_func_c.html +19 -16
  201. package/SVF-doxygen/html/html/functions_func_g.html +24 -15
  202. package/SVF-doxygen/html/html/functions_func_h.html +1 -1
  203. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  204. package/SVF-doxygen/html/html/functions_func_s.html +2 -2
  205. package/SVF-doxygen/html/html/functions_g.html +24 -15
  206. package/SVF-doxygen/html/html/functions_h.html +1 -1
  207. package/SVF-doxygen/html/html/functions_i.html +3 -3
  208. package/SVF-doxygen/html/html/functions_l.html +5 -5
  209. package/SVF-doxygen/html/html/functions_o.html +7 -7
  210. package/SVF-doxygen/html/html/functions_p.html +12 -12
  211. package/SVF-doxygen/html/html/functions_r.html +4 -2
  212. package/SVF-doxygen/html/html/functions_s.html +18 -18
  213. package/SVF-doxygen/html/html/functions_v.html +6 -6
  214. package/SVF-doxygen/html/html/functions_w.html +9 -9
  215. package/SVF-doxygen/html/html/globals.html +20 -2
  216. package/SVF-doxygen/html/html/globals_a.html +3 -0
  217. package/SVF-doxygen/html/html/globals_b.html +10 -4
  218. package/SVF-doxygen/html/html/globals_c.html +8 -4
  219. package/SVF-doxygen/html/html/globals_d.html +9 -0
  220. package/SVF-doxygen/html/html/globals_defs.html +3 -0
  221. package/SVF-doxygen/html/html/globals_func.html +18 -399
  222. package/SVF-doxygen/html/html/globals_func_a.html +91 -0
  223. package/SVF-doxygen/html/html/globals_func_b.html +14 -20
  224. package/SVF-doxygen/html/html/globals_func_c.html +16 -849
  225. package/SVF-doxygen/html/html/globals_func_d.html +14 -275
  226. package/SVF-doxygen/html/html/globals_func_e.html +8 -97
  227. package/SVF-doxygen/html/html/globals_func_f.html +17 -20
  228. package/SVF-doxygen/html/html/globals_func_g.html +72 -25
  229. package/SVF-doxygen/html/html/globals_func_h.html +9 -6
  230. package/SVF-doxygen/html/html/globals_func_i.html +49 -31
  231. package/SVF-doxygen/html/html/globals_func_j.html +79 -0
  232. package/SVF-doxygen/html/html/globals_func_l.html +15 -9
  233. package/SVF-doxygen/html/html/globals_func_m.html +13 -87
  234. package/SVF-doxygen/html/html/globals_func_n.html +79 -0
  235. package/SVF-doxygen/html/html/globals_func_p.html +13 -22
  236. package/SVF-doxygen/html/html/globals_func_r.html +16 -28
  237. package/SVF-doxygen/html/html/globals_func_s.html +32 -128
  238. package/SVF-doxygen/html/html/globals_func_t.html +18 -9
  239. package/SVF-doxygen/html/html/globals_func_u.html +8 -18
  240. package/SVF-doxygen/html/html/globals_func_w.html +8 -5
  241. package/SVF-doxygen/html/html/globals_func_z.html +10 -73
  242. package/SVF-doxygen/html/html/globals_g.html +54 -0
  243. package/SVF-doxygen/html/html/globals_l.html +6 -0
  244. package/SVF-doxygen/html/html/globals_n.html +5 -2
  245. package/SVF-doxygen/html/html/globals_p.html +4 -1
  246. package/SVF-doxygen/html/html/globals_r.html +11 -8
  247. package/SVF-doxygen/html/html/globals_s.html +6 -0
  248. package/SVF-doxygen/html/html/globals_t.html +6 -0
  249. package/SVF-doxygen/html/html/globals_z.html +3 -0
  250. package/SVF-doxygen/html/html/iterator_8h_source.html +1 -1
  251. package/SVF-doxygen/html/html/iterator__range_8h_source.html +1 -1
  252. package/SVF-doxygen/html/html/menudata.js +20 -17
  253. package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
  254. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +1058 -1014
  255. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +206 -383
  256. package/SVF-doxygen/html/html/namespacemembers_func_i.html +2 -11
  257. package/SVF-doxygen/html/html/namespacemembers_func_s.html +3 -0
  258. package/SVF-doxygen/html/html/namespacemembers_i.html +5 -14
  259. package/SVF-doxygen/html/html/namespacemembers_s.html +3 -0
  260. package/SVF-doxygen/html/html/search/all_0.js +158 -152
  261. package/SVF-doxygen/html/html/search/all_1.js +478 -476
  262. package/SVF-doxygen/html/html/search/all_10.js +324 -323
  263. package/SVF-doxygen/html/html/search/all_11.js +213 -212
  264. package/SVF-doxygen/html/html/search/all_12.js +539 -536
  265. package/SVF-doxygen/html/html/search/all_13.js +190 -188
  266. package/SVF-doxygen/html/html/search/all_14.js +66 -66
  267. package/SVF-doxygen/html/html/search/all_15.js +170 -170
  268. package/SVF-doxygen/html/html/search/all_16.js +60 -60
  269. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  270. package/SVF-doxygen/html/html/search/all_18.js +1 -1
  271. package/SVF-doxygen/html/html/search/all_19.js +11 -10
  272. package/SVF-doxygen/html/html/search/all_1a.js +169 -169
  273. package/SVF-doxygen/html/html/search/all_2.js +161 -159
  274. package/SVF-doxygen/html/html/search/all_3.js +628 -626
  275. package/SVF-doxygen/html/html/search/all_4.js +229 -226
  276. package/SVF-doxygen/html/html/search/all_5.js +117 -117
  277. package/SVF-doxygen/html/html/search/all_6.js +224 -224
  278. package/SVF-doxygen/html/html/search/all_7.js +1020 -999
  279. package/SVF-doxygen/html/html/search/all_8.js +191 -191
  280. package/SVF-doxygen/html/html/search/all_9.js +602 -605
  281. package/SVF-doxygen/html/html/search/all_a.js +46 -46
  282. package/SVF-doxygen/html/html/search/all_b.js +26 -26
  283. package/SVF-doxygen/html/html/search/all_c.js +116 -114
  284. package/SVF-doxygen/html/html/search/all_d.js +196 -196
  285. package/SVF-doxygen/html/html/search/all_e.js +206 -205
  286. package/SVF-doxygen/html/html/search/all_f.js +116 -116
  287. package/SVF-doxygen/html/html/search/classes_0.js +26 -26
  288. package/SVF-doxygen/html/html/search/classes_1.js +9 -9
  289. package/SVF-doxygen/html/html/search/classes_10.js +73 -73
  290. package/SVF-doxygen/html/html/search/classes_11.js +15 -15
  291. package/SVF-doxygen/html/html/search/classes_12.js +2 -2
  292. package/SVF-doxygen/html/html/search/classes_13.js +10 -10
  293. package/SVF-doxygen/html/html/search/classes_14.js +14 -14
  294. package/SVF-doxygen/html/html/search/classes_15.js +1 -1
  295. package/SVF-doxygen/html/html/search/classes_2.js +76 -76
  296. package/SVF-doxygen/html/html/search/classes_3.js +35 -35
  297. package/SVF-doxygen/html/html/search/classes_4.js +8 -8
  298. package/SVF-doxygen/html/html/search/classes_5.js +28 -28
  299. package/SVF-doxygen/html/html/search/classes_6.js +98 -98
  300. package/SVF-doxygen/html/html/search/classes_7.js +33 -33
  301. package/SVF-doxygen/html/html/search/classes_8.js +56 -56
  302. package/SVF-doxygen/html/html/search/classes_9.js +1 -1
  303. package/SVF-doxygen/html/html/search/classes_a.js +12 -12
  304. package/SVF-doxygen/html/html/search/classes_b.js +29 -29
  305. package/SVF-doxygen/html/html/search/classes_c.js +6 -6
  306. package/SVF-doxygen/html/html/search/classes_d.js +18 -18
  307. package/SVF-doxygen/html/html/search/classes_e.js +36 -36
  308. package/SVF-doxygen/html/html/search/classes_f.js +25 -25
  309. package/SVF-doxygen/html/html/search/defines_0.js +3 -3
  310. package/SVF-doxygen/html/html/search/defines_1.js +2 -2
  311. package/SVF-doxygen/html/html/search/defines_2.js +30 -30
  312. package/SVF-doxygen/html/html/search/defines_3.js +20 -20
  313. package/SVF-doxygen/html/html/search/defines_4.js +3 -3
  314. package/SVF-doxygen/html/html/search/defines_5.js +4 -4
  315. package/SVF-doxygen/html/html/search/defines_6.js +2 -2
  316. package/SVF-doxygen/html/html/search/defines_7.js +5 -5
  317. package/SVF-doxygen/html/html/search/defines_8.js +11 -11
  318. package/SVF-doxygen/html/html/search/defines_9.js +9 -9
  319. package/SVF-doxygen/html/html/search/defines_a.js +2 -2
  320. package/SVF-doxygen/html/html/search/defines_b.js +1 -1
  321. package/SVF-doxygen/html/html/search/defines_c.js +3 -3
  322. package/SVF-doxygen/html/html/search/defines_d.js +2 -2
  323. package/SVF-doxygen/html/html/search/defines_e.js +7 -6
  324. package/SVF-doxygen/html/html/search/defines_f.js +3 -3
  325. package/SVF-doxygen/html/html/search/enums_0.js +3 -3
  326. package/SVF-doxygen/html/html/search/enums_1.js +2 -2
  327. package/SVF-doxygen/html/html/search/enums_10.js +1 -1
  328. package/SVF-doxygen/html/html/search/enums_11.js +1 -1
  329. package/SVF-doxygen/html/html/search/enums_2.js +8 -8
  330. package/SVF-doxygen/html/html/search/enums_3.js +1 -1
  331. package/SVF-doxygen/html/html/search/enums_4.js +3 -3
  332. package/SVF-doxygen/html/html/search/enums_5.js +1 -1
  333. package/SVF-doxygen/html/html/search/enums_6.js +2 -2
  334. package/SVF-doxygen/html/html/search/enums_7.js +2 -2
  335. package/SVF-doxygen/html/html/search/enums_8.js +4 -4
  336. package/SVF-doxygen/html/html/search/enums_9.js +1 -1
  337. package/SVF-doxygen/html/html/search/enums_a.js +1 -1
  338. package/SVF-doxygen/html/html/search/enums_b.js +7 -7
  339. package/SVF-doxygen/html/html/search/enums_c.js +1 -1
  340. package/SVF-doxygen/html/html/search/enums_d.js +4 -4
  341. package/SVF-doxygen/html/html/search/enums_e.js +2 -2
  342. package/SVF-doxygen/html/html/search/enums_f.js +4 -4
  343. package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
  344. package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
  345. package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
  346. package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
  347. package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
  348. package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
  349. package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
  350. package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
  351. package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -36
  352. package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
  353. package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -2
  354. package/SVF-doxygen/html/html/search/enumvalues_5.js +47 -47
  355. package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
  356. package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
  357. package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
  358. package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
  359. package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -15
  360. package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
  361. package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -5
  362. package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
  363. package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -9
  364. package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
  365. package/SVF-doxygen/html/html/search/files_0.js +13 -13
  366. package/SVF-doxygen/html/html/search/files_1.js +7 -7
  367. package/SVF-doxygen/html/html/search/files_10.js +8 -8
  368. package/SVF-doxygen/html/html/search/files_11.js +8 -8
  369. package/SVF-doxygen/html/html/search/files_12.js +2 -2
  370. package/SVF-doxygen/html/html/search/files_2.js +49 -49
  371. package/SVF-doxygen/html/html/search/files_3.js +14 -14
  372. package/SVF-doxygen/html/html/search/files_4.js +5 -5
  373. package/SVF-doxygen/html/html/search/files_5.js +13 -13
  374. package/SVF-doxygen/html/html/search/files_6.js +9 -9
  375. package/SVF-doxygen/html/html/search/files_7.js +14 -14
  376. package/SVF-doxygen/html/html/search/files_8.js +13 -13
  377. package/SVF-doxygen/html/html/search/files_9.js +18 -18
  378. package/SVF-doxygen/html/html/search/files_a.js +3 -3
  379. package/SVF-doxygen/html/html/search/files_b.js +2 -2
  380. package/SVF-doxygen/html/html/search/files_c.js +20 -20
  381. package/SVF-doxygen/html/html/search/files_d.js +4 -4
  382. package/SVF-doxygen/html/html/search/files_e.js +62 -62
  383. package/SVF-doxygen/html/html/search/files_f.js +8 -8
  384. package/SVF-doxygen/html/html/search/functions_0.js +12 -6
  385. package/SVF-doxygen/html/html/search/functions_1.js +350 -348
  386. package/SVF-doxygen/html/html/search/functions_10.js +140 -139
  387. package/SVF-doxygen/html/html/search/functions_11.js +127 -126
  388. package/SVF-doxygen/html/html/search/functions_12.js +275 -273
  389. package/SVF-doxygen/html/html/search/functions_13.js +58 -56
  390. package/SVF-doxygen/html/html/search/functions_14.js +38 -38
  391. package/SVF-doxygen/html/html/search/functions_15.js +71 -71
  392. package/SVF-doxygen/html/html/search/functions_16.js +29 -29
  393. package/SVF-doxygen/html/html/search/functions_17.js +3 -2
  394. package/SVF-doxygen/html/html/search/functions_18.js +169 -169
  395. package/SVF-doxygen/html/html/search/functions_2.js +84 -82
  396. package/SVF-doxygen/html/html/search/functions_3.js +253 -251
  397. package/SVF-doxygen/html/html/search/functions_4.js +74 -71
  398. package/SVF-doxygen/html/html/search/functions_5.js +51 -51
  399. package/SVF-doxygen/html/html/search/functions_6.js +58 -58
  400. package/SVF-doxygen/html/html/search/functions_7.js +840 -819
  401. package/SVF-doxygen/html/html/search/functions_8.js +143 -143
  402. package/SVF-doxygen/html/html/search/functions_9.js +422 -425
  403. package/SVF-doxygen/html/html/search/functions_a.js +30 -30
  404. package/SVF-doxygen/html/html/search/functions_b.js +2 -2
  405. package/SVF-doxygen/html/html/search/functions_c.js +26 -24
  406. package/SVF-doxygen/html/html/search/functions_d.js +77 -77
  407. package/SVF-doxygen/html/html/search/functions_e.js +35 -34
  408. package/SVF-doxygen/html/html/search/functions_f.js +56 -56
  409. package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
  410. package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
  411. package/SVF-doxygen/html/html/search/related_0.js +2 -2
  412. package/SVF-doxygen/html/html/search/related_1.js +1 -1
  413. package/SVF-doxygen/html/html/search/related_2.js +2 -2
  414. package/SVF-doxygen/html/html/search/related_3.js +2 -2
  415. package/SVF-doxygen/html/html/search/related_4.js +2 -2
  416. package/SVF-doxygen/html/html/search/related_5.js +1 -1
  417. package/SVF-doxygen/html/html/search/related_6.js +2 -2
  418. package/SVF-doxygen/html/html/search/related_7.js +4 -4
  419. package/SVF-doxygen/html/html/search/related_8.js +2 -2
  420. package/SVF-doxygen/html/html/search/related_9.js +4 -4
  421. package/SVF-doxygen/html/html/search/related_a.js +19 -19
  422. package/SVF-doxygen/html/html/search/related_b.js +4 -4
  423. package/SVF-doxygen/html/html/search/related_c.js +1 -1
  424. package/SVF-doxygen/html/html/search/related_d.js +11 -11
  425. package/SVF-doxygen/html/html/search/related_e.js +2 -2
  426. package/SVF-doxygen/html/html/search/related_f.js +2 -2
  427. package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
  428. package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
  429. package/SVF-doxygen/html/html/search/typedefs_10.js +60 -60
  430. package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
  431. package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
  432. package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
  433. package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
  434. package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
  435. package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
  436. package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
  437. package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
  438. package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
  439. package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
  440. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  441. package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
  442. package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
  443. package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
  444. package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
  445. package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
  446. package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
  447. package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
  448. package/SVF-doxygen/html/html/search/variables_0.js +147 -147
  449. package/SVF-doxygen/html/html/search/variables_1.js +75 -75
  450. package/SVF-doxygen/html/html/search/variables_10.js +97 -97
  451. package/SVF-doxygen/html/html/search/variables_11.js +46 -46
  452. package/SVF-doxygen/html/html/search/variables_12.js +92 -92
  453. package/SVF-doxygen/html/html/search/variables_13.js +75 -75
  454. package/SVF-doxygen/html/html/search/variables_14.js +14 -14
  455. package/SVF-doxygen/html/html/search/variables_15.js +48 -48
  456. package/SVF-doxygen/html/html/search/variables_16.js +9 -9
  457. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  458. package/SVF-doxygen/html/html/search/variables_18.js +2 -2
  459. package/SVF-doxygen/html/html/search/variables_2.js +34 -34
  460. package/SVF-doxygen/html/html/search/variables_3.js +141 -141
  461. package/SVF-doxygen/html/html/search/variables_4.js +55 -55
  462. package/SVF-doxygen/html/html/search/variables_5.js +38 -38
  463. package/SVF-doxygen/html/html/search/variables_6.js +66 -66
  464. package/SVF-doxygen/html/html/search/variables_7.js +33 -33
  465. package/SVF-doxygen/html/html/search/variables_8.js +7 -7
  466. package/SVF-doxygen/html/html/search/variables_9.js +77 -77
  467. package/SVF-doxygen/html/html/search/variables_a.js +4 -4
  468. package/SVF-doxygen/html/html/search/variables_b.js +10 -10
  469. package/SVF-doxygen/html/html/search/variables_c.js +45 -45
  470. package/SVF-doxygen/html/html/search/variables_d.js +56 -56
  471. package/SVF-doxygen/html/html/search/variables_e.js +123 -123
  472. package/SVF-doxygen/html/html/search/variables_f.js +30 -30
  473. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  474. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  475. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__iterable.html +1 -1
  476. 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
  477. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map.html +1 -1
  478. 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
  479. 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
  480. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container.html +1 -1
  481. 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
  482. 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
  483. 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
  484. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set.html +1 -1
  485. 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
  486. 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
  487. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1make__void.html +2 -2
  488. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +8 -8
  489. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  490. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  491. package/package.json +1 -1
  492. package/svf/include/AbstractExecution/SVFIR2ItvExeState.h +14 -0
  493. package/svf/include/MemoryModel/AccessPath.h +6 -0
  494. package/svf/include/SVFIR/SVFStatements.h +10 -0
  495. package/svf/include/Util/SVFUtil.h +0 -34
  496. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +154 -75
  497. package/svf/lib/MemoryModel/AccessPath.cpp +39 -0
  498. package/svf/lib/Util/ExtAPI.cpp +0 -6
  499. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +19 -2
  500. package/svf-llvm/lib/LLVMUtil.cpp +0 -2
  501. package/svf-llvm/lib/SVFIRExtAPI.cpp +1 -1
  502. package/svf-llvm/lib/SymbolTableBuilder.cpp +0 -9
  503. package/svf-llvm/lib/extapi.c +210 -295
@@ -89,7 +89,7 @@ struct SVF::SVFUtil::make_void&lt; Ts &gt;</h3>
89
89
 
90
90
  <p>void_t is not available until C++17. We define it here for C++11/14. </p>
91
91
 
92
- <p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00661">661</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
92
+ <p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00627">627</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
93
93
  </div><h2 class="groupheader">Member Typedef Documentation</h2>
94
94
  <a id="ac2eb79d0fe9a0f94eb1992600ba91e36"></a>
95
95
  <h2 class="memtitle"><span class="permalink"><a href="#ac2eb79d0fe9a0f94eb1992600ba91e36">&#9670;&nbsp;</a></span>type</h2>
@@ -105,7 +105,7 @@ template&lt;typename... Ts&gt; </div>
105
105
  </table>
106
106
  </div><div class="memdoc">
107
107
 
108
- <p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00663">663</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
108
+ <p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00629">629</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
109
109
 
110
110
  </div>
111
111
  </div>
@@ -82,7 +82,7 @@ Public Member Functions</h2></td></tr>
82
82
  </table>
83
83
  <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
84
84
  <div class="textblock">
85
- <p class="definition">Definition at line <a class="el" href="AccessPath_8h_source.html#l00147">147</a> of file <a class="el" href="AccessPath_8h_source.html">AccessPath.h</a>.</p>
85
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8h_source.html#l00153">153</a> of file <a class="el" href="AccessPath_8h_source.html">AccessPath.h</a>.</p>
86
86
  </div><h2 class="groupheader">Member Function Documentation</h2>
87
87
  <a id="a16b0806f551270a0078f71796a37f07f"></a>
88
88
  <h2 class="memtitle"><span class="permalink"><a href="#a16b0806f551270a0078f71796a37f07f">&#9670;&nbsp;</a></span>operator()()</h2>
@@ -108,13 +108,13 @@ Public Member Functions</h2></td></tr>
108
108
  </table>
109
109
  </div><div class="memdoc">
110
110
 
111
- <p class="definition">Definition at line <a class="el" href="AccessPath_8h_source.html#l00149">149</a> of file <a class="el" href="AccessPath_8h_source.html">AccessPath.h</a>.</p>
112
- <div class="fragment"><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div>
113
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;SVF::NodeID, SVF::NodeID&gt;</a>&gt; h;</div>
114
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; std::hash&lt;SVF::AccessPath::OffsetVarAndGepTypePairs&gt; v;</div>
115
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> h(std::make_pair(ap.<a class="code" href="classSVF_1_1AccessPath.html#a68e49bb797a84ea035ea338549f2e054">getConstantFieldIdx</a>(),</div>
116
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; v(ap.<a class="code" href="classSVF_1_1AccessPath.html#ab0641554924d44f16c2831cac63ccf8b">getOffsetVarAndGepTypePairVec</a>())));</div>
117
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
111
+ <p class="definition">Definition at line <a class="el" href="AccessPath_8h_source.html#l00155">155</a> of file <a class="el" href="AccessPath_8h_source.html">AccessPath.h</a>.</p>
112
+ <div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; {</div>
113
+ <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;SVF::NodeID, SVF::NodeID&gt;</a>&gt; h;</div>
114
+ <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; std::hash&lt;SVF::AccessPath::OffsetVarAndGepTypePairs&gt; v;</div>
115
+ <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> h(std::make_pair(ap.<a class="code" href="classSVF_1_1AccessPath.html#a68e49bb797a84ea035ea338549f2e054">getConstantFieldIdx</a>(),</div>
116
+ <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; v(ap.<a class="code" href="classSVF_1_1AccessPath.html#ab0641554924d44f16c2831cac63ccf8b">getOffsetVarAndGepTypePairVec</a>())));</div>
117
+ <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div>
118
118
  </div><!-- fragment -->
119
119
  </div>
120
120
  </div>
@@ -418,7 +418,7 @@ Functions</h2></td></tr>
418
418
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_abda052b73e869ed6d7c139ad1528da11"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00169">SVFIR.h:169</a></div></div>
419
419
  <div class="ttc" id="aclassSVF_1_1PTACallGraph_html"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html">SVF::PTACallGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00218">PTACallGraph.h:218</a></div></div>
420
420
  <div class="ttc" id="aclassSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00040">SVFModule.h:40</a></div></div>
421
- <div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01159">LLVMUtil.cpp:1159</a></div></div>
421
+ <div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01157">LLVMUtil.cpp:1157</a></div></div>
422
422
  <div class="ttc" id="aclassSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
423
423
  <div class="ttc" id="aclassSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00047">ICFG.h:47</a></div></div>
424
424
  <div class="ttc" id="aclassSVF_1_1PointsTo_html_ad5b582d2672617806c61e6170d0b5a7e"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00128">PointsTo.h:128</a></div></div>
@@ -283,7 +283,7 @@ $(function() {
283
283
  <div class="ttc" id="asvf-ex_8cpp_html_ad2f24f5ef6a8eaf0e4a77a8a4d31bc9f"><div class="ttname"><a href="svf-ex_8cpp.html#ad2f24f5ef6a8eaf0e4a77a8a4d31bc9f">aliasQuery</a></div><div class="ttdeci">SVF::AliasResult aliasQuery(PointerAnalysis *pta, SVFValue *v1, SVFValue *v2)</div><div class="ttdef"><b>Definition:</b> <a href="svf-ex_8cpp_source.html#l00042">svf-ex.cpp:42</a></div></div>
284
284
  <div class="ttc" id="aclassSVF_1_1PTACallGraph_html"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html">SVF::PTACallGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00218">PTACallGraph.h:218</a></div></div>
285
285
  <div class="ttc" id="aclassSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00040">SVFModule.h:40</a></div></div>
286
- <div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01159">LLVMUtil.cpp:1159</a></div></div>
286
+ <div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01157">LLVMUtil.cpp:1157</a></div></div>
287
287
  <div class="ttc" id="aclassSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
288
288
  <div class="ttc" id="aclassSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00047">ICFG.h:47</a></div></div>
289
289
  <div class="ttc" id="aclassSVF_1_1PointsTo_html_ad5b582d2672617806c61e6170d0b5a7e"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00128">PointsTo.h:128</a></div></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.768",
3
+ "version": "1.0.770",
4
4
  "description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -73,9 +73,23 @@ public:
73
73
  /// Return the field address given a pointer points to a struct object and an offset
74
74
  VAddrs getGepObjAddress(u32_t pointer, s32_t offset);
75
75
 
76
+ /// Return the byte offset from one gep param offset
77
+ std::pair<s32_t, s32_t> getBytefromGepTypePair(const AccessPath::VarAndGepTypePair& gep_pair, const GepStmt *gep, s32_t elem_bytesize);
78
+
79
+ /// Return the Index offset from one gep param offset
80
+ std::pair<s32_t, s32_t> getIndexfromGepTypePair(const AccessPath::VarAndGepTypePair& gep_pair, const GepStmt *gep);
81
+
82
+ /// Return the byte offset expression of a GepStmt
83
+ /// elemBytesize is the element byte size of an static alloc or heap alloc array
84
+ /// e.g. GepStmt* gep = **,
85
+ /// s32_t elemBytesize = LLVMUtil::SVFType2ByteSize(gep->getRHSVar()->getValue()->getType());
86
+ /// std::pair<s32_t, s32_t> byteOffset = getGepByteOffset(gep, elemBytesize);
87
+ std::pair<s32_t, s32_t> getGepByteOffset(const GepStmt *gep, s32_t elemBytesize);
88
+
76
89
  /// Return the offset expression of a GepStmt
77
90
  std::pair<s32_t, s32_t> getGepOffset(const GepStmt *gep);
78
91
 
92
+
79
93
  static z3::context &getContext()
80
94
  {
81
95
  return Z3Expr::getContext();
@@ -109,6 +109,12 @@ public:
109
109
  }
110
110
  //@}
111
111
 
112
+ /// Return accumulated constant byte offset given OffsetVarVec and elemByteSize
113
+ /// elemBytesize is the element byte size of an static alloc or heap alloc array
114
+ /// e.g. GepStmt* gep = **,
115
+ /// s32_t elemBytesize = LLVMUtil::SVFType2ByteSize(gep->getRHSVar()->getValue()->getType());
116
+ /// APOffset byteOffset = gep->accumulateConstantByteOffset(elemBytesize);
117
+ APOffset computeConstantByteOffset(u32_t elemBytesize) const;
112
118
  /// Return accumulated constant offset given OffsetVarVec
113
119
  APOffset computeConstantOffset() const;
114
120
 
@@ -500,6 +500,16 @@ public:
500
500
  {
501
501
  return getAccessPath().isConstantOffset();
502
502
  }
503
+ /// Return accumulated constant offset (when accessing array or struct) if this offset is a constant.
504
+ /// elemBytesize is the element byte size of an static alloc or heap alloc array
505
+ /// e.g. GepStmt* gep = **,
506
+ /// s32_t elemBytesize = LLVMUtil::SVFType2ByteSize(gep->getRHSVar()->getValue()->getType());
507
+ /// APOffset byteOffset = gep->accumulateConstantByteOffset(elemBytesize);
508
+ inline APOffset accumulateConstantByteOffset(u32_t elemBytesize) const
509
+ {
510
+ return getAccessPath().computeConstantByteOffset(elemBytesize);
511
+ }
512
+
503
513
  /// Return accumulated constant offset (when accessing array or struct) if this offset is a constant.
504
514
  inline APOffset accumulateConstantOffset() const
505
515
  {
@@ -350,14 +350,6 @@ inline bool isReallocExtFun(const SVFFunction* fun)
350
350
  return fun && (ExtAPI::getExtAPI()->is_realloc(fun));
351
351
  }
352
352
 
353
- /// Return true if the call is a static global call
354
- //@{
355
- /// note that this function is not suppose to be used externally
356
- inline bool isStaticExtFun(const SVFFunction* fun)
357
- {
358
- return fun && ExtAPI::getExtAPI()->has_static(fun);
359
- }
360
-
361
353
  /// Program entry function e.g. main
362
354
  //@{
363
355
  /// Return true if this is a program entry function (e.g. main)
@@ -494,32 +486,6 @@ inline bool isReallocExtCall(const SVFInstruction *inst)
494
486
  }
495
487
  //@}
496
488
 
497
- inline bool isStaticExtCall(const CallSite cs)
498
- {
499
- bool isPtrTy = cs.getInstruction()->getType()->isPointerTy();
500
- return isPtrTy && isStaticExtFun(getCallee(cs));
501
- }
502
-
503
- inline bool isStaticExtCall(const SVFInstruction *inst)
504
- {
505
- bool isPtrTy = inst->getType()->isPointerTy();
506
- return isPtrTy && isStaticExtFun(getCallee(inst));
507
- }
508
- //@}
509
-
510
- /// Return true if the call is a static global call
511
- //@{
512
- inline bool isHeapAllocOrStaticExtCall(const CallSite cs)
513
- {
514
- return isStaticExtCall(cs) || isHeapAllocExtCall(cs);
515
- }
516
-
517
- inline bool isHeapAllocOrStaticExtCall(const SVFInstruction *inst)
518
- {
519
- return isStaticExtCall(inst) || isHeapAllocExtCall(inst);
520
- }
521
- //@}
522
-
523
489
  /// Return true if this is a thread creation call
524
490
  ///@{
525
491
  inline bool isThreadForkCall(const CallSite cs)
@@ -173,108 +173,187 @@ SVFIR2ItvExeState::VAddrs SVFIR2ItvExeState::getGepObjAddress(u32_t pointer, s32
173
173
  return ret;
174
174
  }
175
175
 
176
- std::pair<s32_t, s32_t> SVFIR2ItvExeState::getGepOffset(const GepStmt *gep)
176
+ std::pair<s32_t, s32_t> SVFIR2ItvExeState::getBytefromGepTypePair(const AccessPath::VarAndGepTypePair& gep_pair, const GepStmt *gep, s32_t elemBytesize)
177
177
  {
178
- /// for instant constant index, e.g. gep arr, 1
179
- if (gep->getOffsetVarAndGepTypePairVec().empty())
180
- return std::make_pair(gep->getConstantFieldIdx(), gep->getConstantFieldIdx());
181
-
182
- s32_t totalOffsetLb = 0;
183
- s32_t totalOffsetUb = 0;
184
- /// default value of MaxFieldLimit is 512
185
- u32_t maxFieldLimit = Options::MaxFieldLimit() - 1;
186
- /// for variable index and nested indexes, e.g. 1) gep arr, idx 2) gep arr idx0, idx1
187
- for (int i = gep->getOffsetVarAndGepTypePairVec().size() - 1; i >= 0; i--)
178
+ const SVFValue *value = gep_pair.first->getValue();
179
+ const SVFType *type = gep_pair.second;
180
+ const SVFConstantInt *op = SVFUtil::dyn_cast<SVFConstantInt>(value);
181
+ s32_t offsetLb = 0;
182
+ s32_t offsetUb = 0;
183
+ /// set largest byte offset is 0xFFFFFF in case of int32 overflow
184
+ s32_t maxFieldLimit = 0xFFFFFF;
185
+ /// offset is constant but stored in variable
186
+ if (op)
187
+ {
188
+ offsetLb = offsetUb = op->getSExtValue() >
189
+ maxFieldLimit? maxFieldLimit: op->getSExtValue();
190
+ }
191
+ else
188
192
  {
189
- const SVFValue *value = gep->getOffsetVarAndGepTypePairVec()[i].first->getValue();
190
- const SVFType *type = gep->getOffsetVarAndGepTypePairVec()[i].second;
191
- const SVFConstantInt *op = SVFUtil::dyn_cast<SVFConstantInt>(value);
192
- s32_t offsetLb = 0;
193
- s32_t offsetUb = 0;
194
- /// offset is constant but stored in variable
195
- if (op)
193
+ u32_t idx = _svfir->getValueNode(value);
194
+ IntervalValue &idxVal = _es[idx];
195
+ if (idxVal.isBottom() || idxVal.isTop())
196
+ return std::make_pair(0, maxFieldLimit);
197
+ // if idxVal is a concrete value
198
+ if (idxVal.is_numeral())
196
199
  {
197
- offsetLb = offsetUb = op->getSExtValue();
200
+ offsetLb = offsetUb = idxVal.lb().getNumeral()>
201
+ maxFieldLimit? maxFieldLimit: idxVal.lb().getNumeral();
198
202
  }
199
- /// offset is variable, the concrete value isn't sure util runtime, and maybe not a concrete value.
200
- /// e.g.
201
203
  else
202
204
  {
203
- u32_t idx = _svfir->getValueNode(value);
204
- if (!inVarToIValTable(idx)) return std::make_pair(-1, -1);
205
- IntervalValue &idxVal = _es[idx];
206
- if (idxVal.isBottom() || idxVal.isTop()) return std::make_pair(0, (s32_t)Options::MaxFieldLimit());
207
- // if idxVal is a concrete value
208
- if (idxVal.is_numeral())
209
- {
210
- offsetLb = offsetUb = idxVal.lb().getNumeral();
211
- }
212
- else
213
- {
214
- // if inxVal is an interval. we should make sure that idxVal.lb>0 && idxVal.ub<MaxFieldLimit
215
- offsetLb = idxVal.lb().getNumeral() < 0 ? 0 : idxVal.lb().getNumeral();
216
- offsetLb = idxVal.lb().getNumeral() > maxFieldLimit ? maxFieldLimit : offsetLb;
217
- offsetUb = idxVal.ub().getNumeral() < 0 ? 0 : idxVal.ub().getNumeral();
218
- offsetUb = idxVal.ub().getNumeral() > maxFieldLimit ? maxFieldLimit : offsetUb;
219
- }
205
+ offsetLb = idxVal.lb().getNumeral()> maxFieldLimit? maxFieldLimit:idxVal.lb().getNumeral() * elemBytesize ;
206
+ offsetUb = idxVal.ub().getNumeral() > maxFieldLimit? maxFieldLimit:idxVal.ub().getNumeral() * elemBytesize;
220
207
  }
221
- if (type == nullptr)
208
+ }
209
+
210
+ if (type)
211
+ {
212
+ if (const SVFPointerType *pty = SVFUtil::dyn_cast<SVFPointerType>(type))
222
213
  {
223
- if ((long long) (totalOffsetLb + offsetLb) > maxFieldLimit)
224
- {
225
- totalOffsetLb = maxFieldLimit;
226
- }
227
- else
228
- {
229
- totalOffsetLb += offsetLb;
230
- }
214
+ offsetLb = offsetLb * gep->getAccessPath().getElementNum(pty->getPtrElementType())* elemBytesize;
215
+ offsetUb = offsetUb * gep->getAccessPath().getElementNum(pty->getPtrElementType())* elemBytesize;
216
+ }
217
+ else
218
+ {
219
+ offsetLb = offsetLb * elemBytesize;
220
+ offsetUb = offsetUb * elemBytesize;
221
+ }
222
+ }
223
+ return {offsetLb, offsetUb};
224
+ }
231
225
 
232
- if ((long long) (totalOffsetUb + offsetUb) > maxFieldLimit)
233
- {
234
- totalOffsetUb = maxFieldLimit;
235
- }
236
- else
237
- {
238
- totalOffsetUb += offsetUb;
239
- }
240
- continue;
226
+
227
+ std::pair<s32_t, s32_t> SVFIR2ItvExeState::getIndexfromGepTypePair(const AccessPath::VarAndGepTypePair& gep_pair, const GepStmt *gep)
228
+ {
229
+ const SVFValue *value = gep_pair.first->getValue();
230
+ const SVFType *type = gep_pair.second;
231
+ const SVFConstantInt *op = SVFUtil::dyn_cast<SVFConstantInt>(value);
232
+ s32_t offsetLb = 0;
233
+ s32_t offsetUb = 0;
234
+ s32_t maxFieldLimit = (s32_t)Options::MaxFieldLimit();
235
+ /// offset is constant but stored in variable
236
+ if (op)
237
+ {
238
+ offsetLb = offsetUb = op->getSExtValue() >
239
+ maxFieldLimit? maxFieldLimit: op->getSExtValue();
240
+ }
241
+ else
242
+ {
243
+ u32_t idx = _svfir->getValueNode(value);
244
+ //if (!inVarToIValTable(idx)) return std::make_pair(-1, -1);
245
+ IntervalValue &idxVal = _es[idx];
246
+ if (idxVal.isBottom() || idxVal.isTop())
247
+ return std::make_pair(0, (s32_t)Options::MaxFieldLimit());
248
+ // if idxVal is a concrete value
249
+ if (idxVal.is_numeral())
250
+ {
251
+ offsetLb = offsetUb = idxVal.lb().getNumeral()>
252
+ maxFieldLimit? maxFieldLimit: idxVal.lb().getNumeral();
253
+ }
254
+ else
255
+ {
256
+ offsetLb = idxVal.lb().getNumeral() < 0
257
+ ? 0
258
+ : idxVal.lb().getNumeral();
259
+ offsetLb = idxVal.lb().getNumeral() > maxFieldLimit
260
+ ? maxFieldLimit
261
+ : offsetLb;
262
+ offsetUb = idxVal.ub().getNumeral() < 0
263
+ ? 0
264
+ : idxVal.ub().getNumeral();
265
+ offsetUb = idxVal.ub().getNumeral() > maxFieldLimit
266
+ ? maxFieldLimit
267
+ : offsetUb;
241
268
  }
269
+ }
242
270
 
271
+ if (type)
272
+ {
243
273
  if (const SVFPointerType *pty = SVFUtil::dyn_cast<SVFPointerType>(type))
244
274
  {
245
275
  offsetLb = offsetLb * gep->getAccessPath().getElementNum(pty->getPtrElementType());
246
276
  offsetUb = offsetUb * gep->getAccessPath().getElementNum(pty->getPtrElementType());
247
-
248
277
  }
249
278
  else
250
279
  {
251
- const std::vector<u32_t> &so = SymbolTableInfo::SymbolInfo()->getTypeInfo(type)->getFlattenedElemIdxVec();
252
- if (so.empty() || (u32_t) offsetUb >= so.size() || (u32_t) offsetLb >= so.size())
253
- return std::make_pair(-1, -1);
254
- offsetLb = SymbolTableInfo::SymbolInfo()->getFlattenedElemIdx(type, offsetLb);
255
- offsetUb = SymbolTableInfo::SymbolInfo()->getFlattenedElemIdx(type, offsetUb);
280
+ const std::vector<u32_t>& so = SymbolTableInfo::SymbolInfo()
281
+ ->getTypeInfo(type)
282
+ ->getFlattenedElemIdxVec();
283
+ if (so.empty() || (u32_t)offsetUb >= so.size() ||
284
+ (u32_t)offsetLb >= so.size())
285
+ {
286
+ offsetLb = 0;
287
+ offsetUb = maxFieldLimit;
288
+ }
289
+ else
290
+ {
291
+ offsetLb =
292
+ SymbolTableInfo::SymbolInfo()->getFlattenedElemIdx(
293
+ type, offsetLb);
294
+ offsetUb =
295
+ SymbolTableInfo::SymbolInfo()->getFlattenedElemIdx(
296
+ type, offsetUb);
297
+ }
256
298
  }
299
+ }
300
+ return {offsetLb, offsetUb};
301
+ }
302
+
303
+
304
+ std::pair<s32_t, s32_t> SVFIR2ItvExeState::getGepByteOffset(const GepStmt *gep, s32_t elemBytesize)
305
+ {
306
+ /// for instant constant index, e.g. gep arr, 1
307
+ if (gep->getOffsetVarAndGepTypePairVec().empty())
308
+ return std::make_pair(gep->getConstantFieldIdx(), gep->getConstantFieldIdx());
309
+ s32_t totalOffsetLb = 0;
310
+ s32_t totalOffsetUb = 0;
311
+ /// default value of MaxFieldLimit is 512
312
+ u32_t maxFieldLimit = 0xFFFFFF;
313
+ for (int i = gep->getOffsetVarAndGepTypePairVec().size() - 1; i >= 0; i--)
314
+ {
315
+ std::pair<s32_t, s32_t> offsetIdx = getBytefromGepTypePair(
316
+ gep->getOffsetVarAndGepTypePairVec()[i], gep, elemBytesize);
317
+ s32_t offsetLb = offsetIdx.first;
318
+ s32_t offsetUb = offsetIdx.second;
257
319
  if ((long long) (totalOffsetLb + offsetLb) > maxFieldLimit)
258
- {
259
320
  totalOffsetLb = maxFieldLimit;
260
- }
261
321
  else
262
- {
263
322
  totalOffsetLb += offsetLb;
264
- }
265
323
  if ((long long) (totalOffsetUb + offsetUb) > maxFieldLimit)
266
- {
267
324
  totalOffsetUb = maxFieldLimit;
268
- }
269
325
  else
270
- {
271
- totalOffsetUb += offsetUb;
272
- }
326
+ totalOffsetUb += offsetUb ;
327
+ }
328
+ return {totalOffsetLb, totalOffsetUb};
329
+ }
330
+
331
+
332
+ std::pair<s32_t, s32_t> SVFIR2ItvExeState::getGepOffset(const GepStmt *gep)
333
+ {
334
+ /// for instant constant index, e.g. gep arr, 1
335
+ if (gep->getOffsetVarAndGepTypePairVec().empty())
336
+ return std::make_pair(gep->getConstantFieldIdx(), gep->getConstantFieldIdx());
337
+ s32_t totalOffsetLb = 0;
338
+ s32_t totalOffsetUb = 0;
339
+ /// default value of MaxFieldLimit is 512
340
+ u32_t maxFieldLimit = Options::MaxFieldLimit() - 1;
341
+ for (int i = gep->getOffsetVarAndGepTypePairVec().size() - 1; i >= 0; i--)
342
+ {
343
+ std::pair<s32_t, s32_t> offsetIdx = getIndexfromGepTypePair(
344
+ gep->getOffsetVarAndGepTypePairVec()[i], gep);
345
+ s32_t offsetLb = offsetIdx.first;
346
+ s32_t offsetUb = offsetIdx.second;
347
+ if ((long long) (totalOffsetLb + offsetLb) > maxFieldLimit)
348
+ totalOffsetLb = maxFieldLimit;
349
+ else
350
+ totalOffsetLb += offsetLb;
351
+ if ((long long) (totalOffsetUb + offsetUb) > maxFieldLimit)
352
+ totalOffsetUb = maxFieldLimit;
353
+ else
354
+ totalOffsetUb += offsetUb ;
273
355
  }
274
- std::pair<s32_t, s32_t> offSetPair;
275
- offSetPair.first = totalOffsetLb;
276
- offSetPair.second = totalOffsetUb;
277
- return offSetPair;
356
+ return {totalOffsetLb, totalOffsetUb};
278
357
  }
279
358
 
280
359
  /*!
@@ -87,6 +87,45 @@ u32_t AccessPath::getElementNum(const SVFType* type) const
87
87
  }
88
88
  }
89
89
 
90
+ /// Return accumulated constant offset
91
+ ///
92
+ /// "value" is the offset variable (must be a constant)
93
+ /// "type" is the location where we want to compute offset
94
+ /// Given a vector and elem byte size: [(value1,type1), (value2,type2), (value3,type3)], bytesize
95
+ /// totalConstByteOffset = ByteOffset(value1,type1) * ByteOffset(value2,type2) + ByteOffset(value3,type3)
96
+ /// For a pointer type (e.g., t1 is PointerType), we will retrieve the pointee type and times the offset, i.e., getElementNum(t1) X off1
97
+ APOffset AccessPath::computeConstantByteOffset(u32_t elemBytesize) const
98
+ {
99
+ assert(isConstantOffset() && "not a constant offset");
100
+
101
+ if(offsetVarAndGepTypePairs.empty())
102
+ return getConstantFieldIdx() * elemBytesize;
103
+
104
+ APOffset totalConstOffset = 0;
105
+ for(int i = offsetVarAndGepTypePairs.size() - 1; i >= 0; i--)
106
+ {
107
+ const SVFValue* value = offsetVarAndGepTypePairs[i].first->getValue();
108
+ const SVFType* type = offsetVarAndGepTypePairs[i].second;
109
+ const SVFConstantInt* op = SVFUtil::dyn_cast<SVFConstantInt>(value);
110
+ assert(op && "not a constant offset?");
111
+ if(type==nullptr)
112
+ {
113
+ totalConstOffset += op->getSExtValue() * elemBytesize;
114
+ continue;
115
+ }
116
+
117
+ if(const SVFPointerType* pty = SVFUtil::dyn_cast<SVFPointerType>(type))
118
+ totalConstOffset += op->getSExtValue() * getElementNum(pty->getPtrElementType()) * elemBytesize;
119
+ else
120
+ {
121
+ APOffset offset = op->getSExtValue();
122
+ // if getByteOffset is false, it will retrieve flatten idx
123
+ totalConstOffset += offset * elemBytesize;
124
+ }
125
+ }
126
+ return totalConstOffset;
127
+ }
128
+
90
129
  /// Return accumulated constant offset
91
130
  ///
92
131
  /// "value" is the offset variable (must be a constant)
@@ -144,12 +144,6 @@ bool ExtAPI::hasExtFuncAnnotation(const SVFFunction* fun, const std::string& fun
144
144
  return false;
145
145
  }
146
146
 
147
- // Does (F) have a static var X (unavailable to us) that its return points to?
148
- bool ExtAPI::has_static(const SVFFunction* F)
149
- {
150
- return F && hasExtFuncAnnotation(F, "STATIC");
151
- }
152
-
153
147
  bool ExtAPI::is_memcpy(const SVFFunction *F)
154
148
  {
155
149
  return F && hasExtFuncAnnotation(F, "MEMCPY");
@@ -141,10 +141,10 @@ inline const PointerType *getRefTypeOfHeapAllocOrStatic(const CallBase* cs)
141
141
  if (const PointerType *argType = SVFUtil::dyn_cast<PointerType>(arg->getType()))
142
142
  refType = SVFUtil::dyn_cast<PointerType>(getPtrElementType(argType));
143
143
  }
144
- // Case 2: heap/static object held by return value.
144
+ // Case 2: heap object held by return value.
145
145
  else
146
146
  {
147
- assert((SVFUtil::isStaticExtCall(svfcs) || SVFUtil::isHeapAllocExtCallViaRet(svfcs))
147
+ assert(SVFUtil::isHeapAllocExtCallViaRet(svfcs)
148
148
  && "Must be heap alloc via ret, or static allocation site");
149
149
  refType = SVFUtil::dyn_cast<PointerType>(cs->getType());
150
150
  }
@@ -377,6 +377,23 @@ std::vector<const Function *> getCalledFunctions(const Function *F);
377
377
  std::vector<std::string> getFunAnnotations(const Function* fun);
378
378
  void removeFunAnnotations(std::vector<Function*>& removedFuncList);
379
379
 
380
+ inline u32_t SVFType2ByteSize(const SVFType* type)
381
+ {
382
+ const llvm::Type* llvm_rhs = LLVMModuleSet::getLLVMModuleSet()->getLLVMType(type);
383
+ u32_t llvm_rhs_size = LLVMUtil::getTypeSizeInBytes(llvm_rhs->getPointerElementType());
384
+ u32_t llvm_elem_size = -1;
385
+ if (llvm_rhs->getPointerElementType()->isArrayTy() && llvm_rhs_size > 0)
386
+ {
387
+ size_t array_len = llvm_rhs->getPointerElementType()->getArrayNumElements();
388
+ llvm_elem_size = llvm_rhs_size / array_len;
389
+ }
390
+ else
391
+ {
392
+ llvm_elem_size =llvm_rhs_size;
393
+ }
394
+ return llvm_elem_size;
395
+ }
396
+
380
397
  inline void removeUnusedFuncsAndAnnotations(std::vector<Function*> removedFuncList)
381
398
  {
382
399
  /// Remove unused function annotations in extapi.bc
@@ -53,8 +53,6 @@ const std::string structName = "struct.";
53
53
  */
54
54
  bool LLVMUtil::isObject(const Value* ref)
55
55
  {
56
- if (SVFUtil::isa<Instruction>(ref) && SVFUtil::isStaticExtCall(LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(SVFUtil::cast<Instruction>(ref))) )
57
- return true;
58
56
  if (SVFUtil::isa<Instruction>(ref) && SVFUtil::isHeapAllocExtCallViaRet(LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(SVFUtil::cast<Instruction>(ref))))
59
57
  return true;
60
58
  if (SVFUtil::isa<GlobalVariable>(ref))
@@ -128,7 +128,7 @@ void SVFIRBuilder::handleExtCall(const CallBase* cs, const SVFFunction* svfCalle
128
128
  const SVFInstruction* svfInst = LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(cs);
129
129
  const SVFCallInst* svfCall = SVFUtil::cast<SVFCallInst>(svfInst);
130
130
 
131
- if (isHeapAllocExtCallViaRet(svfCall) || isStaticExtCall(svfCall))
131
+ if (isHeapAllocExtCallViaRet(svfCall))
132
132
  {
133
133
  NodeID val = pag->getValueNode(svfInst);
134
134
  NodeID obj = pag->getObjectNode(svfInst);
@@ -750,15 +750,6 @@ void SymbolTableBuilder::initTypeInfo(ObjTypeInfo* typeinfo, const Value* val,
750
750
  // Heap object, label its field as infinite here
751
751
  objSize = typeinfo->getMaxFieldOffsetLimit();
752
752
  }
753
- else if (SVFUtil::isa<Instruction>(val) &&
754
- isStaticExtCall(
755
- LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(
756
- SVFUtil::cast<Instruction>(val))))
757
- {
758
- analyzeStaticObjType(typeinfo,val);
759
- // static object allocated before main, label its field as infinite here
760
- objSize = typeinfo->getMaxFieldOffsetLimit();
761
- }
762
753
  else if(ArgInProgEntryFunction(val))
763
754
  {
764
755
  analyzeStaticObjType(typeinfo,val);