svf-lib 1.0.1932 → 1.0.1933

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.
Binary file
Binary file
@@ -58,7 +58,7 @@ class AbstractState
58
58
  public:
59
59
  typedef Map<u32_t, AbstractValue> VarToAbsValMap;
60
60
 
61
- typedef VarToAbsValMap LocToAbsValMap;
61
+ typedef VarToAbsValMap AddrToAbsValMap;
62
62
 
63
63
  public:
64
64
  /// default constructor
@@ -66,12 +66,10 @@ public:
66
66
  {
67
67
  }
68
68
 
69
- AbstractState(VarToAbsValMap&_varToValMap, LocToAbsValMap&_locToValMap) : _varToAbsVal(_varToValMap),
70
- _locToAbsVal(_locToValMap) {}
69
+ AbstractState(VarToAbsValMap&_varToValMap, AddrToAbsValMap&_locToValMap) : _varToAbsVal(_varToValMap), _addrToAbsVal(_locToValMap) {}
71
70
 
72
71
  /// copy constructor
73
- AbstractState(const AbstractState&rhs) : _varToAbsVal(rhs.getVarToVal()),
74
- _locToAbsVal(rhs.getLocToVal())
72
+ AbstractState(const AbstractState&rhs) : _varToAbsVal(rhs.getVarToVal()), _addrToAbsVal(rhs.getLocToVal())
75
73
  {
76
74
 
77
75
  }
@@ -107,14 +105,14 @@ public:
107
105
  if (rhs != *this)
108
106
  {
109
107
  _varToAbsVal = rhs._varToAbsVal;
110
- _locToAbsVal = rhs._locToAbsVal;
108
+ _addrToAbsVal = rhs._addrToAbsVal;
111
109
  }
112
110
  return *this;
113
111
  }
114
112
 
115
113
  /// move constructor
116
114
  AbstractState(AbstractState&&rhs) : _varToAbsVal(std::move(rhs._varToAbsVal)),
117
- _locToAbsVal(std::move(rhs._locToAbsVal))
115
+ _addrToAbsVal(std::move(rhs._addrToAbsVal))
118
116
  {
119
117
 
120
118
  }
@@ -125,7 +123,7 @@ public:
125
123
  if (&rhs != this)
126
124
  {
127
125
  _varToAbsVal = std::move(rhs._varToAbsVal);
128
- _locToAbsVal = std::move(rhs._locToAbsVal);
126
+ _addrToAbsVal = std::move(rhs._addrToAbsVal);
129
127
  }
130
128
  return *this;
131
129
  }
@@ -167,7 +165,8 @@ public:
167
165
 
168
166
  protected:
169
167
  VarToAbsValMap _varToAbsVal; ///< Map a variable (symbol) to its abstract value
170
- LocToAbsValMap _locToAbsVal; ///< Map a memory address to its stored abstract value
168
+ AddrToAbsValMap
169
+ _addrToAbsVal; ///< Map a memory address to its stored abstract value
171
170
 
172
171
  public:
173
172
 
@@ -227,9 +226,9 @@ public:
227
226
  /// whether the memory address stores memory addresses
228
227
  inline bool inLocToAddrsTable(u32_t id) const
229
228
  {
230
- if (_locToAbsVal.find(id)!= _locToAbsVal.end())
229
+ if (_addrToAbsVal.find(id)!= _addrToAbsVal.end())
231
230
  {
232
- if (_locToAbsVal.at(id).isAddr())
231
+ if (_addrToAbsVal.at(id).isAddr())
233
232
  {
234
233
  return true;
235
234
  }
@@ -240,9 +239,9 @@ public:
240
239
  /// whether the memory address stores abstract value
241
240
  inline virtual bool inLocToValTable(u32_t id) const
242
241
  {
243
- if (_locToAbsVal.find(id) != _locToAbsVal.end())
242
+ if (_addrToAbsVal.find(id) != _addrToAbsVal.end())
244
243
  {
245
- if (_locToAbsVal.at(id).isInterval())
244
+ if (_addrToAbsVal.at(id).isInterval())
246
245
  {
247
246
  return true;
248
247
  }
@@ -257,9 +256,9 @@ public:
257
256
  }
258
257
 
259
258
  /// get loc2val map
260
- const LocToAbsValMap&getLocToVal() const
259
+ const AddrToAbsValMap&getLocToVal() const
261
260
  {
262
- return _locToAbsVal;
261
+ return _addrToAbsVal;
263
262
  }
264
263
 
265
264
  public:
@@ -303,7 +302,7 @@ public:
303
302
  }
304
303
  }
305
304
  }
306
- for (auto it = _locToAbsVal.begin(); it != _locToAbsVal.end(); ++it)
305
+ for (auto it = _addrToAbsVal.begin(); it != _addrToAbsVal.end(); ++it)
307
306
  {
308
307
  if (it->second.isInterval())
309
308
  {
@@ -324,20 +323,20 @@ public:
324
323
  assert(isVirtualMemAddress(addr) && "not virtual address?");
325
324
  if (isNullPtr(addr)) return;
326
325
  u32_t objId = getInternalID(addr);
327
- _locToAbsVal[objId] = val;
326
+ _addrToAbsVal[objId] = val;
328
327
  }
329
328
 
330
329
  inline virtual AbstractValue &load(u32_t addr)
331
330
  {
332
331
  assert(isVirtualMemAddress(addr) && "not virtual address?");
333
332
  u32_t objId = getInternalID(addr);
334
- auto it = _locToAbsVal.find(objId);
335
- if(it != _locToAbsVal.end())
333
+ auto it = _addrToAbsVal.find(objId);
334
+ if(it != _addrToAbsVal.end())
336
335
  return it->second;
337
336
  else
338
337
  {
339
- _locToAbsVal[objId] = IntervalValue::top();
340
- return _locToAbsVal[objId];
338
+ _addrToAbsVal[objId] = IntervalValue::top();
339
+ return _addrToAbsVal[objId];
341
340
  }
342
341
  }
343
342
 
@@ -421,7 +420,7 @@ public:
421
420
  bool operator==(const AbstractState&rhs) const
422
421
  {
423
422
  return eqVarToValMap(_varToAbsVal, rhs.getVarToVal()) &&
424
- eqVarToValMap(_locToAbsVal, rhs.getLocToVal());
423
+ eqVarToValMap(_addrToAbsVal, rhs.getLocToVal());
425
424
  }
426
425
 
427
426
  bool operator!=(const AbstractState&rhs) const
@@ -437,12 +436,12 @@ public:
437
436
 
438
437
  bool operator>=(const AbstractState&rhs) const
439
438
  {
440
- return geqVarToValMap(_varToAbsVal, rhs.getVarToVal()) && geqVarToValMap(_locToAbsVal, rhs.getLocToVal());
439
+ return geqVarToValMap(_varToAbsVal, rhs.getVarToVal()) && geqVarToValMap(_addrToAbsVal, rhs.getLocToVal());
441
440
  }
442
441
 
443
442
  void clear()
444
443
  {
445
- _locToAbsVal.clear();
444
+ _addrToAbsVal.clear();
446
445
  _varToAbsVal.clear();
447
446
  }
448
447
 
@@ -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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-lib",
3
- "version": "1.0.1932",
3
+ "version": "1.0.1933",
4
4
  "description": "SVF's npm support",
5
5
  "main": "index.js",
6
6
  "scripts": {