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.
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
256
|
+
: BaseObjVar(mem->getValue(), i, mem, ty), callGraphNode(cgNode)
|
|
257
257
|
{
|
|
258
258
|
isPtr = callGraphNode->getFunction()->getType()->isPointerTy();
|
|
259
259
|
}
|
package/svf-llvm/lib/CppUtil.cpp
CHANGED
|
@@ -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
|
|