svf-tools 1.0.908 → 1.0.910

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 (268) hide show
  1. package/SVF-doxygen/html/AbstractInterpretation_8cpp_source.html +1549 -1576
  2. package/SVF-doxygen/html/AbstractInterpretation_8h_source.html +68 -75
  3. package/SVF-doxygen/html/AbstractState_8cpp_source.html +25 -25
  4. package/SVF-doxygen/html/AbstractState_8h_source.html +390 -391
  5. package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +15 -15
  6. package/SVF-doxygen/html/RelExeState_8cpp_source.html +5 -5
  7. package/SVF-doxygen/html/RelExeState_8h_source.html +178 -179
  8. package/SVF-doxygen/html/RelationSolver_8cpp_source.html +3 -3
  9. package/SVF-doxygen/html/SVFIR2AbsState_8cpp_source.html +10 -10
  10. package/SVF-doxygen/html/SVFIR2AbsState_8h_source.html +12 -17
  11. package/SVF-doxygen/html/ae_8cpp_source.html +3 -3
  12. package/SVF-doxygen/html/classSVF_1_1AEStat.html +115 -115
  13. package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation-members.html +7 -9
  14. package/SVF-doxygen/html/classSVF_1_1AbstractInterpretation.html +1435 -1521
  15. package/SVF-doxygen/html/classSVF_1_1AbstractState-members.html +25 -25
  16. package/SVF-doxygen/html/classSVF_1_1AbstractState.html +340 -342
  17. package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker-members.html +7 -9
  18. package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.html +20 -10
  19. package/SVF-doxygen/html/classSVF_1_1RelExeState-members.html +19 -19
  20. package/SVF-doxygen/html/classSVF_1_1RelExeState.html +131 -132
  21. package/SVF-doxygen/html/classSVF_1_1RelationSolver.html +3 -3
  22. package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState-members.html +22 -24
  23. package/SVF-doxygen/html/classSVF_1_1SVFIR2AbsState.html +23 -91
  24. package/SVF-doxygen/html/classSymblicAbstractionTest.html +2 -2
  25. package/SVF-doxygen/html/functions.html +6 -9
  26. package/SVF-doxygen/html/functions_a.html +9 -3
  27. package/SVF-doxygen/html/functions_f.html +3 -3
  28. package/SVF-doxygen/html/functions_func.html +1 -1
  29. package/SVF-doxygen/html/functions_func_g.html +9 -9
  30. package/SVF-doxygen/html/functions_func_i.html +7 -13
  31. package/SVF-doxygen/html/functions_func_p.html +3 -3
  32. package/SVF-doxygen/html/functions_g.html +10 -10
  33. package/SVF-doxygen/html/functions_i.html +12 -18
  34. package/SVF-doxygen/html/functions_l.html +3 -9
  35. package/SVF-doxygen/html/functions_o.html +17 -17
  36. package/SVF-doxygen/html/functions_p.html +18 -22
  37. package/SVF-doxygen/html/functions_r.html +1 -1
  38. package/SVF-doxygen/html/functions_s.html +12 -14
  39. package/SVF-doxygen/html/functions_t.html +2 -2
  40. package/SVF-doxygen/html/functions_type.html +6 -0
  41. package/SVF-doxygen/html/functions_type_l.html +0 -6
  42. package/SVF-doxygen/html/functions_v.html +3 -3
  43. package/SVF-doxygen/html/functions_vars.html +6 -9
  44. package/SVF-doxygen/html/functions_w.html +1 -1
  45. package/SVF-doxygen/html/search/all_0.js +167 -168
  46. package/SVF-doxygen/html/search/all_1.js +504 -502
  47. package/SVF-doxygen/html/search/all_10.js +326 -326
  48. package/SVF-doxygen/html/search/all_11.js +227 -227
  49. package/SVF-doxygen/html/search/all_12.js +562 -562
  50. package/SVF-doxygen/html/search/all_13.js +186 -186
  51. package/SVF-doxygen/html/search/all_14.js +74 -74
  52. package/SVF-doxygen/html/search/all_15.js +175 -175
  53. package/SVF-doxygen/html/search/all_16.js +77 -77
  54. package/SVF-doxygen/html/search/all_17.js +1 -1
  55. package/SVF-doxygen/html/search/all_18.js +1 -1
  56. package/SVF-doxygen/html/search/all_19.js +27 -27
  57. package/SVF-doxygen/html/search/all_1a.js +174 -174
  58. package/SVF-doxygen/html/search/all_2.js +180 -180
  59. package/SVF-doxygen/html/search/all_3.js +635 -635
  60. package/SVF-doxygen/html/search/all_4.js +237 -237
  61. package/SVF-doxygen/html/search/all_5.js +120 -120
  62. package/SVF-doxygen/html/search/all_6.js +236 -236
  63. package/SVF-doxygen/html/search/all_7.js +1039 -1039
  64. package/SVF-doxygen/html/search/all_8.js +224 -224
  65. package/SVF-doxygen/html/search/all_9.js +623 -625
  66. package/SVF-doxygen/html/search/all_a.js +46 -46
  67. package/SVF-doxygen/html/search/all_b.js +24 -24
  68. package/SVF-doxygen/html/search/all_c.js +111 -113
  69. package/SVF-doxygen/html/search/all_d.js +204 -204
  70. package/SVF-doxygen/html/search/all_e.js +207 -207
  71. package/SVF-doxygen/html/search/all_f.js +122 -122
  72. package/SVF-doxygen/html/search/classes_0.js +29 -29
  73. package/SVF-doxygen/html/search/classes_1.js +11 -11
  74. package/SVF-doxygen/html/search/classes_10.js +71 -71
  75. package/SVF-doxygen/html/search/classes_11.js +14 -14
  76. package/SVF-doxygen/html/search/classes_12.js +2 -2
  77. package/SVF-doxygen/html/search/classes_13.js +10 -10
  78. package/SVF-doxygen/html/search/classes_14.js +19 -19
  79. package/SVF-doxygen/html/search/classes_15.js +1 -1
  80. package/SVF-doxygen/html/search/classes_2.js +72 -72
  81. package/SVF-doxygen/html/search/classes_3.js +35 -35
  82. package/SVF-doxygen/html/search/classes_4.js +7 -7
  83. package/SVF-doxygen/html/search/classes_5.js +28 -28
  84. package/SVF-doxygen/html/search/classes_6.js +98 -98
  85. package/SVF-doxygen/html/search/classes_7.js +33 -33
  86. package/SVF-doxygen/html/search/classes_8.js +57 -57
  87. package/SVF-doxygen/html/search/classes_9.js +1 -1
  88. package/SVF-doxygen/html/search/classes_a.js +12 -12
  89. package/SVF-doxygen/html/search/classes_b.js +29 -29
  90. package/SVF-doxygen/html/search/classes_c.js +6 -6
  91. package/SVF-doxygen/html/search/classes_d.js +19 -19
  92. package/SVF-doxygen/html/search/classes_e.js +36 -36
  93. package/SVF-doxygen/html/search/classes_f.js +25 -25
  94. package/SVF-doxygen/html/search/defines_0.js +3 -3
  95. package/SVF-doxygen/html/search/defines_1.js +3 -3
  96. package/SVF-doxygen/html/search/defines_10.js +2 -2
  97. package/SVF-doxygen/html/search/defines_2.js +30 -30
  98. package/SVF-doxygen/html/search/defines_3.js +20 -20
  99. package/SVF-doxygen/html/search/defines_4.js +3 -3
  100. package/SVF-doxygen/html/search/defines_5.js +4 -4
  101. package/SVF-doxygen/html/search/defines_6.js +2 -2
  102. package/SVF-doxygen/html/search/defines_7.js +5 -5
  103. package/SVF-doxygen/html/search/defines_8.js +11 -11
  104. package/SVF-doxygen/html/search/defines_9.js +9 -9
  105. package/SVF-doxygen/html/search/defines_a.js +2 -2
  106. package/SVF-doxygen/html/search/defines_b.js +1 -1
  107. package/SVF-doxygen/html/search/defines_c.js +3 -3
  108. package/SVF-doxygen/html/search/defines_d.js +2 -2
  109. package/SVF-doxygen/html/search/defines_e.js +8 -8
  110. package/SVF-doxygen/html/search/defines_f.js +4 -4
  111. package/SVF-doxygen/html/search/enums_0.js +3 -3
  112. package/SVF-doxygen/html/search/enums_1.js +2 -2
  113. package/SVF-doxygen/html/search/enums_10.js +1 -1
  114. package/SVF-doxygen/html/search/enums_11.js +1 -1
  115. package/SVF-doxygen/html/search/enums_2.js +9 -9
  116. package/SVF-doxygen/html/search/enums_3.js +2 -2
  117. package/SVF-doxygen/html/search/enums_4.js +3 -3
  118. package/SVF-doxygen/html/search/enums_5.js +1 -1
  119. package/SVF-doxygen/html/search/enums_6.js +2 -2
  120. package/SVF-doxygen/html/search/enums_7.js +2 -2
  121. package/SVF-doxygen/html/search/enums_8.js +4 -4
  122. package/SVF-doxygen/html/search/enums_9.js +1 -1
  123. package/SVF-doxygen/html/search/enums_a.js +1 -1
  124. package/SVF-doxygen/html/search/enums_b.js +7 -7
  125. package/SVF-doxygen/html/search/enums_c.js +1 -1
  126. package/SVF-doxygen/html/search/enums_d.js +4 -4
  127. package/SVF-doxygen/html/search/enums_e.js +2 -2
  128. package/SVF-doxygen/html/search/enums_f.js +4 -4
  129. package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
  130. package/SVF-doxygen/html/search/enumvalues_1.js +16 -16
  131. package/SVF-doxygen/html/search/enumvalues_10.js +36 -36
  132. package/SVF-doxygen/html/search/enumvalues_11.js +6 -6
  133. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  134. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  135. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  136. package/SVF-doxygen/html/search/enumvalues_15.js +4 -4
  137. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  138. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  139. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  140. package/SVF-doxygen/html/search/enumvalues_5.js +50 -50
  141. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  142. package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
  143. package/SVF-doxygen/html/search/enumvalues_8.js +24 -24
  144. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  145. package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
  146. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  147. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  148. package/SVF-doxygen/html/search/enumvalues_d.js +19 -19
  149. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  150. package/SVF-doxygen/html/search/enumvalues_f.js +48 -48
  151. package/SVF-doxygen/html/search/files_0.js +18 -18
  152. package/SVF-doxygen/html/search/files_1.js +9 -9
  153. package/SVF-doxygen/html/search/files_10.js +8 -8
  154. package/SVF-doxygen/html/search/files_11.js +8 -8
  155. package/SVF-doxygen/html/search/files_12.js +2 -2
  156. package/SVF-doxygen/html/search/files_2.js +51 -51
  157. package/SVF-doxygen/html/search/files_3.js +14 -14
  158. package/SVF-doxygen/html/search/files_4.js +3 -3
  159. package/SVF-doxygen/html/search/files_5.js +13 -13
  160. package/SVF-doxygen/html/search/files_6.js +10 -10
  161. package/SVF-doxygen/html/search/files_7.js +15 -15
  162. package/SVF-doxygen/html/search/files_8.js +13 -13
  163. package/SVF-doxygen/html/search/files_9.js +18 -18
  164. package/SVF-doxygen/html/search/files_a.js +3 -3
  165. package/SVF-doxygen/html/search/files_b.js +4 -4
  166. package/SVF-doxygen/html/search/files_c.js +20 -20
  167. package/SVF-doxygen/html/search/files_d.js +4 -4
  168. package/SVF-doxygen/html/search/files_e.js +57 -57
  169. package/SVF-doxygen/html/search/files_f.js +8 -8
  170. package/SVF-doxygen/html/search/functions_0.js +13 -13
  171. package/SVF-doxygen/html/search/functions_1.js +366 -366
  172. package/SVF-doxygen/html/search/functions_10.js +140 -140
  173. package/SVF-doxygen/html/search/functions_11.js +140 -140
  174. package/SVF-doxygen/html/search/functions_12.js +293 -293
  175. package/SVF-doxygen/html/search/functions_13.js +52 -52
  176. package/SVF-doxygen/html/search/functions_14.js +41 -41
  177. package/SVF-doxygen/html/search/functions_15.js +70 -70
  178. package/SVF-doxygen/html/search/functions_16.js +38 -38
  179. package/SVF-doxygen/html/search/functions_17.js +3 -3
  180. package/SVF-doxygen/html/search/functions_18.js +174 -174
  181. package/SVF-doxygen/html/search/functions_2.js +92 -92
  182. package/SVF-doxygen/html/search/functions_3.js +257 -257
  183. package/SVF-doxygen/html/search/functions_4.js +85 -85
  184. package/SVF-doxygen/html/search/functions_5.js +54 -54
  185. package/SVF-doxygen/html/search/functions_6.js +65 -65
  186. package/SVF-doxygen/html/search/functions_7.js +857 -857
  187. package/SVF-doxygen/html/search/functions_8.js +176 -176
  188. package/SVF-doxygen/html/search/functions_9.js +436 -438
  189. package/SVF-doxygen/html/search/functions_a.js +30 -30
  190. package/SVF-doxygen/html/search/functions_b.js +2 -2
  191. package/SVF-doxygen/html/search/functions_c.js +22 -22
  192. package/SVF-doxygen/html/search/functions_d.js +81 -81
  193. package/SVF-doxygen/html/search/functions_e.js +34 -34
  194. package/SVF-doxygen/html/search/functions_f.js +58 -58
  195. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  196. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  197. package/SVF-doxygen/html/search/related_0.js +4 -4
  198. package/SVF-doxygen/html/search/related_1.js +2 -2
  199. package/SVF-doxygen/html/search/related_2.js +2 -2
  200. package/SVF-doxygen/html/search/related_3.js +2 -2
  201. package/SVF-doxygen/html/search/related_4.js +2 -2
  202. package/SVF-doxygen/html/search/related_5.js +1 -1
  203. package/SVF-doxygen/html/search/related_6.js +2 -2
  204. package/SVF-doxygen/html/search/related_7.js +5 -5
  205. package/SVF-doxygen/html/search/related_8.js +2 -2
  206. package/SVF-doxygen/html/search/related_9.js +4 -4
  207. package/SVF-doxygen/html/search/related_a.js +19 -19
  208. package/SVF-doxygen/html/search/related_b.js +4 -4
  209. package/SVF-doxygen/html/search/related_c.js +2 -2
  210. package/SVF-doxygen/html/search/related_d.js +11 -11
  211. package/SVF-doxygen/html/search/related_e.js +2 -2
  212. package/SVF-doxygen/html/search/related_f.js +2 -2
  213. package/SVF-doxygen/html/search/typedefs_0.js +20 -18
  214. package/SVF-doxygen/html/search/typedefs_1.js +27 -27
  215. package/SVF-doxygen/html/search/typedefs_10.js +65 -65
  216. package/SVF-doxygen/html/search/typedefs_11.js +12 -12
  217. package/SVF-doxygen/html/search/typedefs_12.js +13 -13
  218. package/SVF-doxygen/html/search/typedefs_13.js +40 -40
  219. package/SVF-doxygen/html/search/typedefs_14.js +11 -11
  220. package/SVF-doxygen/html/search/typedefs_2.js +125 -125
  221. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  222. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  223. package/SVF-doxygen/html/search/typedefs_5.js +42 -42
  224. package/SVF-doxygen/html/search/typedefs_6.js +54 -54
  225. package/SVF-doxygen/html/search/typedefs_7.js +47 -47
  226. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  227. package/SVF-doxygen/html/search/typedefs_9.js +4 -4
  228. package/SVF-doxygen/html/search/typedefs_a.js +28 -30
  229. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  230. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  231. package/SVF-doxygen/html/search/typedefs_d.js +15 -15
  232. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  233. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  234. package/SVF-doxygen/html/search/variables_0.js +170 -171
  235. package/SVF-doxygen/html/search/variables_1.js +78 -78
  236. package/SVF-doxygen/html/search/variables_10.js +98 -98
  237. package/SVF-doxygen/html/search/variables_11.js +47 -47
  238. package/SVF-doxygen/html/search/variables_12.js +93 -93
  239. package/SVF-doxygen/html/search/variables_13.js +76 -76
  240. package/SVF-doxygen/html/search/variables_14.js +14 -14
  241. package/SVF-doxygen/html/search/variables_15.js +49 -49
  242. package/SVF-doxygen/html/search/variables_16.js +11 -11
  243. package/SVF-doxygen/html/search/variables_17.js +1 -1
  244. package/SVF-doxygen/html/search/variables_18.js +17 -17
  245. package/SVF-doxygen/html/search/variables_2.js +40 -40
  246. package/SVF-doxygen/html/search/variables_3.js +143 -143
  247. package/SVF-doxygen/html/search/variables_4.js +51 -51
  248. package/SVF-doxygen/html/search/variables_5.js +39 -39
  249. package/SVF-doxygen/html/search/variables_6.js +66 -66
  250. package/SVF-doxygen/html/search/variables_7.js +32 -32
  251. package/SVF-doxygen/html/search/variables_8.js +8 -8
  252. package/SVF-doxygen/html/search/variables_9.js +80 -80
  253. package/SVF-doxygen/html/search/variables_a.js +4 -4
  254. package/SVF-doxygen/html/search/variables_b.js +10 -10
  255. package/SVF-doxygen/html/search/variables_c.js +44 -44
  256. package/SVF-doxygen/html/search/variables_d.js +58 -58
  257. package/SVF-doxygen/html/search/variables_e.js +123 -123
  258. package/SVF-doxygen/html/search/variables_f.js +31 -31
  259. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1RelExeState_01_4.html +6 -6
  260. package/package.json +1 -1
  261. package/svf/include/AE/Core/AbstractState.h +23 -24
  262. package/svf/include/AE/Core/RelExeState.h +10 -11
  263. package/svf/include/AE/Svfexe/AbstractInterpretation.h +4 -9
  264. package/svf/include/AE/Svfexe/SVFIR2AbsState.h +0 -3
  265. package/svf/lib/AE/Core/AbstractState.cpp +22 -22
  266. package/svf/lib/AE/Core/RelExeState.cpp +3 -3
  267. package/svf/lib/AE/Svfexe/AbstractInterpretation.cpp +3 -27
  268. package/svf/lib/AE/Svfexe/SVFIR2AbsState.cpp +8 -8
@@ -42,19 +42,18 @@ class RelExeState
42
42
 
43
43
  public:
44
44
  typedef Map<u32_t, Z3Expr> VarToValMap;
45
- typedef VarToValMap LocToValMap;
45
+ typedef VarToValMap AddrToValMap;
46
46
 
47
47
  protected:
48
48
  VarToValMap _varToVal;
49
- LocToValMap _locToVal;
49
+ AddrToValMap _addrToVal;
50
50
 
51
51
  public:
52
52
  RelExeState() = default;
53
53
 
54
- RelExeState(VarToValMap &varToVal, LocToValMap &locToVal) : _varToVal(varToVal),
55
- _locToVal(locToVal) {}
54
+ RelExeState(VarToValMap &varToVal, AddrToValMap&locToVal) : _varToVal(varToVal), _addrToVal(locToVal) {}
56
55
 
57
- RelExeState(const RelExeState &rhs) : _varToVal(rhs.getVarToVal()), _locToVal(rhs.getLocToVal())
56
+ RelExeState(const RelExeState &rhs) : _varToVal(rhs.getVarToVal()), _addrToVal(rhs.getLocToVal())
58
57
  {
59
58
 
60
59
  }
@@ -64,7 +63,7 @@ public:
64
63
  RelExeState &operator=(const RelExeState &rhs);
65
64
 
66
65
  RelExeState(RelExeState &&rhs) noexcept: _varToVal(std::move(rhs._varToVal)),
67
- _locToVal(std::move(rhs._locToVal))
66
+ _addrToVal(std::move(rhs._addrToVal))
68
67
  {
69
68
 
70
69
  }
@@ -74,7 +73,7 @@ public:
74
73
  if (&rhs != this)
75
74
  {
76
75
  _varToVal = std::move(rhs._varToVal);
77
- _locToVal = std::move(rhs._locToVal);
76
+ _addrToVal = std::move(rhs._addrToVal);
78
77
  }
79
78
  return *this;
80
79
  }
@@ -102,9 +101,9 @@ public:
102
101
  return _varToVal;
103
102
  }
104
103
 
105
- const LocToValMap &getLocToVal() const
104
+ const AddrToValMap&getLocToVal() const
106
105
  {
107
- return _locToVal;
106
+ return _addrToVal;
108
107
  }
109
108
 
110
109
  inline Z3Expr &operator[](u32_t varId)
@@ -203,12 +202,12 @@ private:
203
202
  protected:
204
203
  inline void store(u32_t objId, const Z3Expr &z3Expr)
205
204
  {
206
- _locToVal[objId] = z3Expr.simplify();
205
+ _addrToVal[objId] = z3Expr.simplify();
207
206
  }
208
207
 
209
208
  inline Z3Expr &load(u32_t objId)
210
209
  {
211
- return _locToVal[objId];
210
+ return _addrToVal[objId];
212
211
  }
213
212
  }; // end class RelExeState
214
213
  } // end namespace SVF
@@ -143,10 +143,10 @@ protected:
143
143
  /**
144
144
  * Check if execution state exist by merging states of predecessor nodes
145
145
  *
146
- * @param block The ICFGNode to analyse
146
+ * @param curNode The ICFGNode to analyse
147
147
  * @return if this node has preceding execution state
148
148
  */
149
- bool propogateAbsStateToCurNode(const ICFGNode* block);
149
+ bool propagateStateIfFeasible(const ICFGNode* curNode);
150
150
 
151
151
  /**
152
152
  * Check if execution state exist at the branch edge
@@ -161,7 +161,7 @@ protected:
161
161
  *
162
162
  * @param block basic block that has a series of instructions
163
163
  */
164
- void handleWTONode(const ICFGNode* node);
164
+ virtual void handleWTONode(const ICFGNode* node);
165
165
 
166
166
  /**
167
167
  * handle one instruction in ICFGNode
@@ -368,10 +368,7 @@ private:
368
368
  virtual bool isIndirectCall(const CallICFGNode* callNode);
369
369
  virtual void indirectCallFunPass(const CallICFGNode* callNode);
370
370
 
371
- // helper functions in hasInEdgesES
372
- bool isFunEntry(const ICFGNode* node);
373
- bool isGlobalEntry(const ICFGNode* node);
374
-
371
+ protected:
375
372
  // helper functions in handleCycle
376
373
  bool widenFixpointPass(const ICFGNode* cycle_head,
377
374
  AbstractState& pre_es);
@@ -383,8 +380,6 @@ protected:
383
380
  Map<std::string, std::function<void(const CallSite &)>> _func_map;
384
381
  Set<const CallICFGNode*> _checkpoints;
385
382
  Set<std::string> _checkpoint_names;
386
-
387
- private:
388
383
  Map<const ICFGNode*, AbstractState> _preAbstractTrace;
389
384
  Map<const ICFGNode*, AbstractState> _postAbstractTrace;
390
385
  std::string _moduleName;
@@ -208,9 +208,6 @@ private:
208
208
  SVFIR *_svfir;
209
209
  AbstractState _es;
210
210
  RelExeState _relEs;
211
-
212
- Map<NodeID, AbstractState*> _br_cond;
213
- AbstractValue getZExtValue(const SVFVar* var, const SVFType*);
214
211
  };
215
212
  }
216
213
 
@@ -66,12 +66,12 @@ AbstractState AbstractState::widening(const AbstractState& other)
66
66
  if (it->second.isInterval() && other._varToAbsVal.at(key).isInterval())
67
67
  it->second.getInterval().widen_with(other._varToAbsVal.at(key).getInterval());
68
68
  }
69
- for (auto it = es._locToAbsVal.begin(); it != es._locToAbsVal.end(); ++it)
69
+ for (auto it = es._addrToAbsVal.begin(); it != es._addrToAbsVal.end(); ++it)
70
70
  {
71
71
  auto key = it->first;
72
- if (other._locToAbsVal.find(key) != other._locToAbsVal.end())
73
- if (it->second.isInterval() && other._locToAbsVal.at(key).isInterval())
74
- it->second.getInterval().widen_with(other._locToAbsVal.at(key).getInterval());
72
+ if (other._addrToAbsVal.find(key) != other._addrToAbsVal.end())
73
+ if (it->second.isInterval() && other._addrToAbsVal.at(key).isInterval())
74
+ it->second.getInterval().widen_with(other._addrToAbsVal.at(key).getInterval());
75
75
  }
76
76
  return es;
77
77
  }
@@ -86,12 +86,12 @@ AbstractState AbstractState::narrowing(const AbstractState& other)
86
86
  if (it->second.isInterval() && other._varToAbsVal.at(key).isInterval())
87
87
  it->second.getInterval().narrow_with(other._varToAbsVal.at(key).getInterval());
88
88
  }
89
- for (auto it = es._locToAbsVal.begin(); it != es._locToAbsVal.end(); ++it)
89
+ for (auto it = es._addrToAbsVal.begin(); it != es._addrToAbsVal.end(); ++it)
90
90
  {
91
91
  auto key = it->first;
92
- if (other._locToAbsVal.find(key) != other._locToAbsVal.end())
93
- if (it->second.isInterval() && other._locToAbsVal.at(key).isInterval())
94
- it->second.getInterval().narrow_with(other._locToAbsVal.at(key).getInterval());
92
+ if (other._addrToAbsVal.find(key) != other._addrToAbsVal.end())
93
+ if (it->second.isInterval() && other._addrToAbsVal.at(key).isInterval())
94
+ it->second.getInterval().narrow_with(other._addrToAbsVal.at(key).getInterval());
95
95
  }
96
96
  return es;
97
97
 
@@ -107,12 +107,12 @@ void AbstractState::widenWith(const AbstractState& other)
107
107
  if (it->second.isInterval() && other._varToAbsVal.at(key).isInterval())
108
108
  it->second.getInterval().widen_with(other._varToAbsVal.at(key).getInterval());
109
109
  }
110
- for (auto it = _locToAbsVal.begin(); it != _locToAbsVal.end(); ++it)
110
+ for (auto it = _addrToAbsVal.begin(); it != _addrToAbsVal.end(); ++it)
111
111
  {
112
112
  auto key = it->first;
113
- if (other._locToAbsVal.find(key) != other._locToAbsVal.end())
113
+ if (other._addrToAbsVal.find(key) != other._addrToAbsVal.end())
114
114
  if (it->second.isInterval() && other._varToAbsVal.at(key).isInterval())
115
- it->second.getInterval().widen_with(other._locToAbsVal.at(key).getInterval());
115
+ it->second.getInterval().widen_with(other._addrToAbsVal.at(key).getInterval());
116
116
  }
117
117
  }
118
118
 
@@ -143,11 +143,11 @@ void AbstractState::joinWith(const AbstractState& other)
143
143
  _varToAbsVal.emplace(key, it->second);
144
144
  }
145
145
  }
146
- for (auto it = other._locToAbsVal.begin(); it != other._locToAbsVal.end(); ++it)
146
+ for (auto it = other._addrToAbsVal.begin(); it != other._addrToAbsVal.end(); ++it)
147
147
  {
148
148
  auto key = it->first;
149
- auto oit = _locToAbsVal.find(key);
150
- if (oit != _locToAbsVal.end())
149
+ auto oit = _addrToAbsVal.find(key);
150
+ if (oit != _addrToAbsVal.end())
151
151
  {
152
152
  if (oit->second.isInterval() && it->second.isInterval())
153
153
  {
@@ -164,7 +164,7 @@ void AbstractState::joinWith(const AbstractState& other)
164
164
  }
165
165
  else
166
166
  {
167
- _locToAbsVal.emplace(key, it->second);
167
+ _addrToAbsVal.emplace(key, it->second);
168
168
  }
169
169
  }
170
170
  }
@@ -180,11 +180,11 @@ void AbstractState::narrowWith(const AbstractState& other)
180
180
  if (it->second.isInterval() && oit->second.isInterval())
181
181
  it->second.getInterval().narrow_with(oit->second.getInterval());
182
182
  }
183
- for (auto it = _locToAbsVal.begin(); it != _locToAbsVal.end(); ++it)
183
+ for (auto it = _addrToAbsVal.begin(); it != _addrToAbsVal.end(); ++it)
184
184
  {
185
185
  auto key = it->first;
186
- auto oit = other._locToAbsVal.find(key);
187
- if (oit != other._locToAbsVal.end())
186
+ auto oit = other._addrToAbsVal.find(key);
187
+ if (oit != other._addrToAbsVal.end())
188
188
  if (it->second.isInterval() && oit->second.isInterval())
189
189
  it->second.getInterval().narrow_with(oit->second.getInterval());
190
190
  }
@@ -213,11 +213,11 @@ void AbstractState::meetWith(const AbstractState& other)
213
213
  }
214
214
  }
215
215
  }
216
- for (auto it = other._locToAbsVal.begin(); it != other._locToAbsVal.end(); ++it)
216
+ for (auto it = other._addrToAbsVal.begin(); it != other._addrToAbsVal.end(); ++it)
217
217
  {
218
218
  auto key = it->first;
219
- auto oit = _locToAbsVal.find(key);
220
- if (oit != _locToAbsVal.end())
219
+ auto oit = _addrToAbsVal.find(key);
220
+ if (oit != _addrToAbsVal.end())
221
221
  {
222
222
  if (oit->second.isInterval() && it->second.isInterval())
223
223
  {
@@ -240,7 +240,7 @@ void AbstractState::printExprValues(std::ostream &oss) const
240
240
  {
241
241
  oss << "-----------Var and Value-----------\n";
242
242
  printTable(_varToAbsVal, oss);
243
- printTable(_locToAbsVal, oss);
243
+ printTable(_addrToAbsVal, oss);
244
244
  oss << "-----------------------------------------\n";
245
245
  }
246
246
 
@@ -106,7 +106,7 @@ RelExeState &RelExeState::operator=(const RelExeState &rhs)
106
106
  if (*this != rhs)
107
107
  {
108
108
  _varToVal = rhs.getVarToVal();
109
- _locToVal = rhs.getLocToVal();
109
+ _addrToVal = rhs.getLocToVal();
110
110
  }
111
111
  return *this;
112
112
  }
@@ -119,7 +119,7 @@ RelExeState &RelExeState::operator=(const RelExeState &rhs)
119
119
  bool RelExeState::operator==(const RelExeState &rhs) const
120
120
  {
121
121
  return eqVarToValMap(_varToVal, rhs.getVarToVal()) &&
122
- eqVarToValMap(_locToVal, rhs.getLocToVal());
122
+ eqVarToValMap(_addrToVal, rhs.getLocToVal());
123
123
  }
124
124
 
125
125
  /*!
@@ -130,7 +130,7 @@ bool RelExeState::operator==(const RelExeState &rhs) const
130
130
  bool RelExeState::operator<(const RelExeState &rhs) const
131
131
  {
132
132
  return lessThanVarToValMap(_varToVal, rhs.getVarToVal()) ||
133
- lessThanVarToValMap(_locToVal, rhs.getLocToVal());
133
+ lessThanVarToValMap(_addrToVal, rhs.getLocToVal());
134
134
  }
135
135
 
136
136
  bool RelExeState::eqVarToValMap(const VarToValMap &lhs, const VarToValMap &rhs) const
@@ -177,7 +177,7 @@ void AbstractInterpretation::handleGlobalNode()
177
177
  /// get execution state by merging states of predecessor blocks
178
178
  /// Scenario 1: preblock -----(intraEdge)----> block, join the preES of inEdges
179
179
  /// Scenario 2: preblock -----(callEdge)----> block
180
- bool AbstractInterpretation::propogateAbsStateToCurNode(const ICFGNode *block)
180
+ bool AbstractInterpretation::propagateStateIfFeasible(const ICFGNode *block)
181
181
  {
182
182
  AbstractState es;
183
183
  u32_t inEdgeNum = 0;
@@ -224,29 +224,6 @@ bool AbstractInterpretation::propogateAbsStateToCurNode(const ICFGNode *block)
224
224
  assert(false && "implement this part");
225
225
  }
226
226
 
227
- bool AbstractInterpretation::isFunEntry(const SVF::ICFGNode *block)
228
- {
229
- if (SVFUtil::isa<FunEntryICFGNode>(block))
230
- {
231
- if (_preAbstractTrace.find(block) != _preAbstractTrace.end())
232
- {
233
- return true;
234
- }
235
- }
236
- return false;
237
- }
238
-
239
- bool AbstractInterpretation::isGlobalEntry(const SVF::ICFGNode *block)
240
- {
241
- for (auto *edge : _icfg->getGlobalICFGNode()->getOutEdges())
242
- {
243
- if (edge->getDstNode() == block)
244
- {
245
- return true;
246
- }
247
- }
248
- return false;
249
- }
250
227
 
251
228
  bool AbstractInterpretation::hasCmpBranchES(const CmpStmt* cmpStmt, s64_t succ,
252
229
  AbstractState& es)
@@ -544,7 +521,7 @@ void AbstractInterpretation::handleWTONode(const ICFGNode *node)
544
521
  {
545
522
  _stat->getBlockTrace()++;
546
523
  // Get execution states from in edges
547
- if (!propogateAbsStateToCurNode(node))
524
+ if (!propagateStateIfFeasible(node))
548
525
  {
549
526
  // No ES on the in edges - Infeasible block
550
527
  return;
@@ -717,7 +694,7 @@ void AbstractInterpretation::handleICFGNode(const ICFGNode *curICFGNode)
717
694
  void AbstractInterpretation::handleCycle(const ICFGWTOCycle *cycle)
718
695
  {
719
696
  // Get execution states from in edges
720
- if (!propogateAbsStateToCurNode(cycle->head()))
697
+ if (!propagateStateIfFeasible(cycle->head()))
721
698
  {
722
699
  // No ES on the in edges - Infeasible block
723
700
  return;
@@ -851,7 +828,6 @@ void AbstractInterpretation::handleFunc(const SVFFunction *func)
851
828
 
852
829
  void AbstractInterpretation::handleSVFStatement(const SVFStmt *stmt)
853
830
  {
854
- std::cout << stmt->toString() << std::endl;
855
831
  if (const AddrStmt *addr = SVFUtil::dyn_cast<AddrStmt>(stmt))
856
832
  {
857
833
  _svfir2ExeState->handleAddr(addr);
@@ -277,9 +277,9 @@ void SVFIR2AbsState::applySummary(AbstractState&es)
277
277
  {
278
278
  _es._varToAbsVal[item.first] = item.second;
279
279
  }
280
- for (const auto &item: es._locToAbsVal)
280
+ for (const auto &item: es._addrToAbsVal)
281
281
  {
282
- _es._locToAbsVal[item.first] = item.second;
282
+ _es._addrToAbsVal[item.first] = item.second;
283
283
  }
284
284
  }
285
285
 
@@ -305,10 +305,10 @@ void SVFIR2AbsState::widenAddrs(AbstractState&lhs, const AbstractState&rhs)
305
305
  }
306
306
  }
307
307
  }
308
- for (const auto &rhsItem: rhs._locToAbsVal)
308
+ for (const auto &rhsItem: rhs._addrToAbsVal)
309
309
  {
310
- auto lhsIter = lhs._locToAbsVal.find(rhsItem.first);
311
- if (lhsIter != lhs._locToAbsVal.end())
310
+ auto lhsIter = lhs._addrToAbsVal.find(rhsItem.first);
311
+ if (lhsIter != lhs._addrToAbsVal.end())
312
312
  {
313
313
  if (rhsItem.second.isAddr())
314
314
  {
@@ -349,10 +349,10 @@ void SVFIR2AbsState::narrowAddrs(AbstractState&lhs, const AbstractState&rhs)
349
349
  }
350
350
  }
351
351
  }
352
- for (const auto &rhsItem: rhs._locToAbsVal)
352
+ for (const auto &rhsItem: rhs._addrToAbsVal)
353
353
  {
354
- auto lhsIter = lhs._locToAbsVal.find(rhsItem.first);
355
- if (lhsIter != lhs._locToAbsVal.end())
354
+ auto lhsIter = lhs._addrToAbsVal.find(rhsItem.first);
355
+ if (lhsIter != lhs._addrToAbsVal.end())
356
356
  {
357
357
  if (lhsIter->second.isAddr())
358
358
  {