svf-tools 1.0.668 → 1.0.670

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.668",
3
+ "version": "1.0.670",
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": {
@@ -215,6 +215,7 @@ public:
215
215
  static const Option<bool> LocMemModel;
216
216
  static const Option<bool> ModelConsts;
217
217
  static const Option<bool> ModelArrays;
218
+ static const Option<bool> CyclicFldIdx;
218
219
  static const Option<bool> SymTabPrint;
219
220
 
220
221
  // Conditions.cpp
@@ -105,10 +105,32 @@ LocationSet SymbolTableInfo::getModulusOffset(const MemObj* obj, const LocationS
105
105
  offset = abs(offset);
106
106
  }
107
107
  u32_t maxOffset = obj->getMaxFieldOffsetLimit();
108
- if (maxOffset != 0)
109
- offset = offset % maxOffset;
110
- else
108
+
109
+ /*!
110
+ * @offset: the index allocated to the newly generated field node;
111
+ * @Options::MaxFieldLimit(): preset upper bound of field number;
112
+ * @maxOffset: the max field number of the base object;
113
+ */
114
+ if (maxOffset == 0)
111
115
  offset = 0;
116
+ else if (Options::MaxFieldLimit() < maxOffset)
117
+ /*!
118
+ * E.g., offset == 260, maxOffset == 270, Options::MaxFieldLimit() == 256 ==> offset = 4
119
+ */
120
+ offset = offset % maxOffset;
121
+ else if ((u32_t)offset > maxOffset - 1)
122
+ {
123
+ if (Options::CyclicFldIdx())
124
+ /*!
125
+ * E.g., offset == 100, maxOffset == 98, Options::MaxFieldLimit() == 256 ==> offset = 2
126
+ */
127
+ offset = offset % maxOffset;
128
+ else
129
+ /*!
130
+ * E.g., offset == 100, maxOffset == 98, Options::MaxFieldLimit() == 256 ==> offset = 97
131
+ */
132
+ offset = maxOffset - 1;
133
+ }
112
134
 
113
135
  return LocationSet(offset);
114
136
  }
@@ -655,6 +655,12 @@ const Option<bool> Options::ModelArrays(
655
655
  false
656
656
  );
657
657
 
658
+ const Option<bool> Options::CyclicFldIdx(
659
+ "cyclic-field-index",
660
+ "Enable cyclic field index when generating field objects using modulus offset",
661
+ false
662
+ );
663
+
658
664
  const Option<bool> Options::SymTabPrint(
659
665
  "print-symbol-table",
660
666
  "Print Symbol Table to command line",