svf-tools 1.0.1018 → 1.0.1020

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.1018",
3
+ "version": "1.0.1020",
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": {
@@ -189,7 +189,7 @@ const std::string BaseObjVar::toString() const
189
189
 
190
190
  HeapObjVar::HeapObjVar(const SVFFunction* f, const SVFType* svfType, NodeID i,
191
191
  const MemObj* mem, PNODEK ty)
192
- : BaseObjVar(nullptr, i, mem, ty)
192
+ : BaseObjVar(mem->getValue(), i, mem, ty)
193
193
  {
194
194
  isPtr = svfType->isPointerTy();
195
195
  func = f;
@@ -210,7 +210,7 @@ const std::string HeapObjVar::toString() const
210
210
 
211
211
  StackObjVar::StackObjVar(const SVFFunction* f, const SVFType* svfType, NodeID i,
212
212
  const MemObj* mem, PNODEK ty)
213
- : BaseObjVar(nullptr, i, mem, ty)
213
+ : BaseObjVar(mem->getValue(), i, mem, ty)
214
214
  {
215
215
  isPtr = svfType->isPointerTy();
216
216
  func = f;
@@ -233,7 +233,7 @@ const std::string StackObjVar::toString() const
233
233
 
234
234
  FunValVar::FunValVar(const CallGraphNode* cgn, NodeID i, const ICFGNode* icn,
235
235
  PNODEK ty)
236
- : ValVar(nullptr, i, ty, icn), callGraphNode(cgn)
236
+ : ValVar(cgn->getFunction(), i, ty, icn), callGraphNode(cgn)
237
237
  {
238
238
  isPtr = cgn->getFunction()->getType()->isPointerTy();
239
239
  }
@@ -253,7 +253,7 @@ const std::string FunValVar::toString() const
253
253
 
254
254
  FunObjVar::FunObjVar(const CallGraphNode* cgNode, NodeID i, const MemObj* mem,
255
255
  PNODEK ty)
256
- : BaseObjVar(nullptr, i, mem, ty), callGraphNode(cgNode)
256
+ : BaseObjVar(mem->getValue(), i, mem, ty), callGraphNode(cgNode)
257
257
  {
258
258
  isPtr = callGraphNode->getFunction()->getType()->isPointerTy();
259
259
  }
@@ -705,7 +705,6 @@ bool LLVMUtil::isConstantObjSym(const Value* val)
705
705
  */
706
706
  Set<std::string> cppUtil::extractClsNamesFromFunc(const Function *foo)
707
707
  {
708
- assert(foo->hasName() && "foo does not have a name? possible indirect call");
709
708
  const std::string &name = foo->getName().str();
710
709
  if (isConstructor(foo) || isDestructor(foo))
711
710
  {
@@ -893,9 +892,6 @@ bool cppUtil::matchesLabel(const std::string &foo, const std::string &label)
893
892
  */
894
893
  bool cppUtil::isTemplateFunc(const Function *foo)
895
894
  {
896
- /// if the function does not have a name, it can be a compiler generated internal function.
897
- if(foo->hasName() == false)
898
- return false;
899
895
  const std::string &name = foo->getName().str();
900
896
  bool matchedLabel = matchesLabel(name, znstLabel) || matchesLabel(name, znkstLabel) ||
901
897
  matchesLabel(name, znkLabel);
@@ -911,7 +907,6 @@ bool cppUtil::isTemplateFunc(const Function *foo)
911
907
  */
912
908
  bool cppUtil::isDynCast(const Function *foo)
913
909
  {
914
- assert(foo->hasName() && "foo does not have a name? possible indirect call");
915
910
  return foo->getName().str() == dyncast;
916
911
  }
917
912