svf-tools 1.0.768 → 1.0.769

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 (308) 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/ConsG_8cpp_source.html +8 -8
  4. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
  9. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  10. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  11. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +3 -3
  12. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/LLVMUtil_8h.html +2 -0
  14. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +146 -126
  15. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  16. package/SVF-doxygen/html/html/SVFFileSystem_8cpp_source.html +11 -11
  17. package/SVF-doxygen/html/html/SVFFileSystem_8h_source.html +11 -11
  18. package/SVF-doxygen/html/html/SVFIR2ConsExeState_8cpp_source.html +55 -55
  19. package/SVF-doxygen/html/html/SVFIR2ConsExeState_8h_source.html +6 -6
  20. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +830 -748
  21. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8h_source.html +138 -127
  22. package/SVF-doxygen/html/html/SVFIR2Relation_8cpp_source.html +33 -33
  23. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +4 -4
  24. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +11 -11
  25. package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp_source.html +1 -1
  26. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +14 -14
  27. package/SVF-doxygen/html/html/SVFIR_8h_source.html +11 -11
  28. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +19 -19
  29. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +806 -799
  30. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +7 -7
  31. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +2 -2
  32. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
  33. package/SVF-doxygen/html/html/VFGNode_8h_source.html +7 -7
  34. package/SVF-doxygen/html/html/VFG_8cpp_source.html +15 -15
  35. package/SVF-doxygen/html/html/VFG_8h_source.html +10 -10
  36. package/SVF-doxygen/html/html/classSVF_1_1AccessPath-members.html +27 -26
  37. package/SVF-doxygen/html/html/classSVF_1_1AccessPath.html +179 -124
  38. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +68 -68
  39. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +51 -51
  40. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  41. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +35 -35
  42. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +97 -97
  43. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +8 -8
  44. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
  45. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
  46. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
  47. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
  48. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +96 -95
  49. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +54 -19
  50. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  51. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +3 -3
  52. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +48 -48
  53. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  54. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +46 -46
  55. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +35 -35
  56. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +13 -13
  57. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ConsExeState.html +49 -49
  58. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState-members.html +45 -42
  59. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +961 -779
  60. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +5 -5
  61. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +7 -7
  62. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +38 -38
  63. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
  64. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +22 -22
  65. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +21 -21
  66. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +44 -44
  67. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +15 -15
  68. package/SVF-doxygen/html/html/functions_a.html +14 -11
  69. package/SVF-doxygen/html/html/functions_c.html +24 -21
  70. package/SVF-doxygen/html/html/functions_f.html +3 -3
  71. package/SVF-doxygen/html/html/functions_func.html +9 -6
  72. package/SVF-doxygen/html/html/functions_func_c.html +19 -16
  73. package/SVF-doxygen/html/html/functions_func_g.html +24 -15
  74. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  75. package/SVF-doxygen/html/html/functions_func_s.html +2 -2
  76. package/SVF-doxygen/html/html/functions_g.html +24 -15
  77. package/SVF-doxygen/html/html/functions_i.html +3 -3
  78. package/SVF-doxygen/html/html/functions_l.html +5 -5
  79. package/SVF-doxygen/html/html/functions_o.html +7 -7
  80. package/SVF-doxygen/html/html/functions_p.html +12 -12
  81. package/SVF-doxygen/html/html/functions_r.html +4 -2
  82. package/SVF-doxygen/html/html/functions_s.html +18 -18
  83. package/SVF-doxygen/html/html/functions_v.html +6 -6
  84. package/SVF-doxygen/html/html/functions_w.html +9 -9
  85. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +78 -31
  86. package/SVF-doxygen/html/html/namespacemembers_func_s.html +3 -0
  87. package/SVF-doxygen/html/html/namespacemembers_s.html +3 -0
  88. package/SVF-doxygen/html/html/search/all_1.js +459 -458
  89. package/SVF-doxygen/html/html/search/all_10.js +323 -323
  90. package/SVF-doxygen/html/html/search/all_11.js +212 -212
  91. package/SVF-doxygen/html/html/search/all_12.js +537 -536
  92. package/SVF-doxygen/html/html/search/all_13.js +188 -188
  93. package/SVF-doxygen/html/html/search/all_14.js +66 -66
  94. package/SVF-doxygen/html/html/search/all_15.js +170 -170
  95. package/SVF-doxygen/html/html/search/all_16.js +60 -60
  96. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  97. package/SVF-doxygen/html/html/search/all_18.js +1 -1
  98. package/SVF-doxygen/html/html/search/all_19.js +10 -10
  99. package/SVF-doxygen/html/html/search/all_1a.js +169 -169
  100. package/SVF-doxygen/html/html/search/all_2.js +159 -159
  101. package/SVF-doxygen/html/html/search/all_3.js +627 -626
  102. package/SVF-doxygen/html/html/search/all_4.js +226 -226
  103. package/SVF-doxygen/html/html/search/all_5.js +117 -117
  104. package/SVF-doxygen/html/html/search/all_6.js +224 -224
  105. package/SVF-doxygen/html/html/search/all_7.js +1002 -999
  106. package/SVF-doxygen/html/html/search/all_8.js +191 -191
  107. package/SVF-doxygen/html/html/search/all_9.js +605 -605
  108. package/SVF-doxygen/html/html/search/all_a.js +46 -46
  109. package/SVF-doxygen/html/html/search/all_b.js +26 -26
  110. package/SVF-doxygen/html/html/search/all_c.js +114 -114
  111. package/SVF-doxygen/html/html/search/all_d.js +196 -196
  112. package/SVF-doxygen/html/html/search/all_e.js +205 -205
  113. package/SVF-doxygen/html/html/search/all_f.js +116 -116
  114. package/SVF-doxygen/html/html/search/classes_0.js +26 -26
  115. package/SVF-doxygen/html/html/search/classes_1.js +9 -9
  116. package/SVF-doxygen/html/html/search/classes_10.js +73 -73
  117. package/SVF-doxygen/html/html/search/classes_11.js +15 -15
  118. package/SVF-doxygen/html/html/search/classes_12.js +2 -2
  119. package/SVF-doxygen/html/html/search/classes_13.js +10 -10
  120. package/SVF-doxygen/html/html/search/classes_14.js +14 -14
  121. package/SVF-doxygen/html/html/search/classes_15.js +1 -1
  122. package/SVF-doxygen/html/html/search/classes_2.js +76 -76
  123. package/SVF-doxygen/html/html/search/classes_3.js +35 -35
  124. package/SVF-doxygen/html/html/search/classes_4.js +8 -8
  125. package/SVF-doxygen/html/html/search/classes_5.js +28 -28
  126. package/SVF-doxygen/html/html/search/classes_6.js +98 -98
  127. package/SVF-doxygen/html/html/search/classes_7.js +33 -33
  128. package/SVF-doxygen/html/html/search/classes_8.js +56 -56
  129. package/SVF-doxygen/html/html/search/classes_9.js +1 -1
  130. package/SVF-doxygen/html/html/search/classes_a.js +12 -12
  131. package/SVF-doxygen/html/html/search/classes_b.js +29 -29
  132. package/SVF-doxygen/html/html/search/classes_c.js +6 -6
  133. package/SVF-doxygen/html/html/search/classes_d.js +18 -18
  134. package/SVF-doxygen/html/html/search/classes_e.js +36 -36
  135. package/SVF-doxygen/html/html/search/classes_f.js +25 -25
  136. package/SVF-doxygen/html/html/search/defines_0.js +3 -3
  137. package/SVF-doxygen/html/html/search/defines_1.js +2 -2
  138. package/SVF-doxygen/html/html/search/defines_2.js +30 -30
  139. package/SVF-doxygen/html/html/search/defines_3.js +20 -20
  140. package/SVF-doxygen/html/html/search/defines_4.js +3 -3
  141. package/SVF-doxygen/html/html/search/defines_5.js +4 -4
  142. package/SVF-doxygen/html/html/search/defines_6.js +2 -2
  143. package/SVF-doxygen/html/html/search/defines_7.js +5 -5
  144. package/SVF-doxygen/html/html/search/defines_8.js +11 -11
  145. package/SVF-doxygen/html/html/search/defines_9.js +9 -9
  146. package/SVF-doxygen/html/html/search/defines_a.js +2 -2
  147. package/SVF-doxygen/html/html/search/defines_b.js +1 -1
  148. package/SVF-doxygen/html/html/search/defines_c.js +3 -3
  149. package/SVF-doxygen/html/html/search/defines_d.js +2 -2
  150. package/SVF-doxygen/html/html/search/defines_e.js +6 -6
  151. package/SVF-doxygen/html/html/search/defines_f.js +3 -3
  152. package/SVF-doxygen/html/html/search/enums_0.js +3 -3
  153. package/SVF-doxygen/html/html/search/enums_1.js +2 -2
  154. package/SVF-doxygen/html/html/search/enums_10.js +1 -1
  155. package/SVF-doxygen/html/html/search/enums_11.js +1 -1
  156. package/SVF-doxygen/html/html/search/enums_2.js +8 -8
  157. package/SVF-doxygen/html/html/search/enums_3.js +1 -1
  158. package/SVF-doxygen/html/html/search/enums_4.js +3 -3
  159. package/SVF-doxygen/html/html/search/enums_5.js +1 -1
  160. package/SVF-doxygen/html/html/search/enums_6.js +2 -2
  161. package/SVF-doxygen/html/html/search/enums_7.js +2 -2
  162. package/SVF-doxygen/html/html/search/enums_8.js +4 -4
  163. package/SVF-doxygen/html/html/search/enums_9.js +1 -1
  164. package/SVF-doxygen/html/html/search/enums_a.js +1 -1
  165. package/SVF-doxygen/html/html/search/enums_b.js +7 -7
  166. package/SVF-doxygen/html/html/search/enums_c.js +1 -1
  167. package/SVF-doxygen/html/html/search/enums_d.js +4 -4
  168. package/SVF-doxygen/html/html/search/enums_e.js +2 -2
  169. package/SVF-doxygen/html/html/search/enums_f.js +4 -4
  170. package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
  171. package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
  172. package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
  173. package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
  174. package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
  175. package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
  176. package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
  177. package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
  178. package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -36
  179. package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
  180. package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -2
  181. package/SVF-doxygen/html/html/search/enumvalues_5.js +47 -47
  182. package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
  183. package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
  184. package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
  185. package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
  186. package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -15
  187. package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
  188. package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -5
  189. package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
  190. package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -9
  191. package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
  192. package/SVF-doxygen/html/html/search/files_0.js +13 -13
  193. package/SVF-doxygen/html/html/search/files_1.js +7 -7
  194. package/SVF-doxygen/html/html/search/files_10.js +8 -8
  195. package/SVF-doxygen/html/html/search/files_11.js +8 -8
  196. package/SVF-doxygen/html/html/search/files_12.js +2 -2
  197. package/SVF-doxygen/html/html/search/files_2.js +49 -49
  198. package/SVF-doxygen/html/html/search/files_3.js +14 -14
  199. package/SVF-doxygen/html/html/search/files_4.js +5 -5
  200. package/SVF-doxygen/html/html/search/files_5.js +13 -13
  201. package/SVF-doxygen/html/html/search/files_6.js +9 -9
  202. package/SVF-doxygen/html/html/search/files_7.js +14 -14
  203. package/SVF-doxygen/html/html/search/files_8.js +13 -13
  204. package/SVF-doxygen/html/html/search/files_9.js +18 -18
  205. package/SVF-doxygen/html/html/search/files_a.js +3 -3
  206. package/SVF-doxygen/html/html/search/files_b.js +2 -2
  207. package/SVF-doxygen/html/html/search/files_c.js +20 -20
  208. package/SVF-doxygen/html/html/search/files_d.js +4 -4
  209. package/SVF-doxygen/html/html/search/files_e.js +62 -62
  210. package/SVF-doxygen/html/html/search/files_f.js +8 -8
  211. package/SVF-doxygen/html/html/search/functions_0.js +6 -6
  212. package/SVF-doxygen/html/html/search/functions_1.js +349 -348
  213. package/SVF-doxygen/html/html/search/functions_10.js +139 -139
  214. package/SVF-doxygen/html/html/search/functions_11.js +126 -126
  215. package/SVF-doxygen/html/html/search/functions_12.js +274 -273
  216. package/SVF-doxygen/html/html/search/functions_13.js +56 -56
  217. package/SVF-doxygen/html/html/search/functions_14.js +38 -38
  218. package/SVF-doxygen/html/html/search/functions_15.js +71 -71
  219. package/SVF-doxygen/html/html/search/functions_16.js +29 -29
  220. package/SVF-doxygen/html/html/search/functions_17.js +2 -2
  221. package/SVF-doxygen/html/html/search/functions_18.js +169 -169
  222. package/SVF-doxygen/html/html/search/functions_2.js +82 -82
  223. package/SVF-doxygen/html/html/search/functions_3.js +252 -251
  224. package/SVF-doxygen/html/html/search/functions_4.js +71 -71
  225. package/SVF-doxygen/html/html/search/functions_5.js +51 -51
  226. package/SVF-doxygen/html/html/search/functions_6.js +58 -58
  227. package/SVF-doxygen/html/html/search/functions_7.js +822 -819
  228. package/SVF-doxygen/html/html/search/functions_8.js +143 -143
  229. package/SVF-doxygen/html/html/search/functions_9.js +425 -425
  230. package/SVF-doxygen/html/html/search/functions_a.js +30 -30
  231. package/SVF-doxygen/html/html/search/functions_b.js +2 -2
  232. package/SVF-doxygen/html/html/search/functions_c.js +24 -24
  233. package/SVF-doxygen/html/html/search/functions_d.js +77 -77
  234. package/SVF-doxygen/html/html/search/functions_e.js +34 -34
  235. package/SVF-doxygen/html/html/search/functions_f.js +56 -56
  236. package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
  237. package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
  238. package/SVF-doxygen/html/html/search/related_0.js +2 -2
  239. package/SVF-doxygen/html/html/search/related_1.js +1 -1
  240. package/SVF-doxygen/html/html/search/related_2.js +2 -2
  241. package/SVF-doxygen/html/html/search/related_3.js +2 -2
  242. package/SVF-doxygen/html/html/search/related_4.js +2 -2
  243. package/SVF-doxygen/html/html/search/related_5.js +1 -1
  244. package/SVF-doxygen/html/html/search/related_6.js +2 -2
  245. package/SVF-doxygen/html/html/search/related_7.js +4 -4
  246. package/SVF-doxygen/html/html/search/related_8.js +2 -2
  247. package/SVF-doxygen/html/html/search/related_9.js +4 -4
  248. package/SVF-doxygen/html/html/search/related_a.js +19 -19
  249. package/SVF-doxygen/html/html/search/related_b.js +4 -4
  250. package/SVF-doxygen/html/html/search/related_c.js +1 -1
  251. package/SVF-doxygen/html/html/search/related_d.js +11 -11
  252. package/SVF-doxygen/html/html/search/related_e.js +2 -2
  253. package/SVF-doxygen/html/html/search/related_f.js +2 -2
  254. package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
  255. package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
  256. package/SVF-doxygen/html/html/search/typedefs_10.js +60 -60
  257. package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
  258. package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
  259. package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
  260. package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
  261. package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
  262. package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
  263. package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
  264. package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
  265. package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
  266. package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
  267. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  268. package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
  269. package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
  270. package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
  271. package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
  272. package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
  273. package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
  274. package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
  275. package/SVF-doxygen/html/html/search/variables_0.js +147 -147
  276. package/SVF-doxygen/html/html/search/variables_1.js +75 -75
  277. package/SVF-doxygen/html/html/search/variables_10.js +97 -97
  278. package/SVF-doxygen/html/html/search/variables_11.js +46 -46
  279. package/SVF-doxygen/html/html/search/variables_12.js +92 -92
  280. package/SVF-doxygen/html/html/search/variables_13.js +75 -75
  281. package/SVF-doxygen/html/html/search/variables_14.js +14 -14
  282. package/SVF-doxygen/html/html/search/variables_15.js +48 -48
  283. package/SVF-doxygen/html/html/search/variables_16.js +9 -9
  284. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  285. package/SVF-doxygen/html/html/search/variables_18.js +2 -2
  286. package/SVF-doxygen/html/html/search/variables_2.js +34 -34
  287. package/SVF-doxygen/html/html/search/variables_3.js +141 -141
  288. package/SVF-doxygen/html/html/search/variables_4.js +55 -55
  289. package/SVF-doxygen/html/html/search/variables_5.js +38 -38
  290. package/SVF-doxygen/html/html/search/variables_6.js +66 -66
  291. package/SVF-doxygen/html/html/search/variables_7.js +33 -33
  292. package/SVF-doxygen/html/html/search/variables_8.js +7 -7
  293. package/SVF-doxygen/html/html/search/variables_9.js +77 -77
  294. package/SVF-doxygen/html/html/search/variables_a.js +4 -4
  295. package/SVF-doxygen/html/html/search/variables_b.js +10 -10
  296. package/SVF-doxygen/html/html/search/variables_c.js +45 -45
  297. package/SVF-doxygen/html/html/search/variables_d.js +56 -56
  298. package/SVF-doxygen/html/html/search/variables_e.js +123 -123
  299. package/SVF-doxygen/html/html/search/variables_f.js +30 -30
  300. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  301. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +8 -8
  302. package/package.json +1 -1
  303. package/svf/include/AbstractExecution/SVFIR2ItvExeState.h +14 -0
  304. package/svf/include/MemoryModel/AccessPath.h +6 -0
  305. package/svf/include/SVFIR/SVFStatements.h +10 -0
  306. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +154 -75
  307. package/svf/lib/MemoryModel/AccessPath.cpp +39 -0
  308. package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +17 -0
@@ -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)
@@ -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