svf-tools 1.0.1066 → 1.0.1068
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.1068",
|
|
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": {
|
|
@@ -324,10 +324,11 @@ class SVFFunctionType : public SVFType
|
|
|
324
324
|
private:
|
|
325
325
|
const SVFType* retTy;
|
|
326
326
|
std::vector<const SVFType*> params;
|
|
327
|
+
bool varArg;
|
|
327
328
|
|
|
328
329
|
public:
|
|
329
|
-
SVFFunctionType(const SVFType* rt, const std::vector<const SVFType*>& p)
|
|
330
|
-
: SVFType(false, SVFFunctionTy, 1), retTy(rt), params(p)
|
|
330
|
+
SVFFunctionType(const SVFType* rt, const std::vector<const SVFType*>& p, bool isvararg)
|
|
331
|
+
: SVFType(false, SVFFunctionTy, 1), retTy(rt), params(p), varArg(isvararg)
|
|
331
332
|
{
|
|
332
333
|
}
|
|
333
334
|
|
|
@@ -345,6 +346,11 @@ public:
|
|
|
345
346
|
return params;
|
|
346
347
|
}
|
|
347
348
|
|
|
349
|
+
|
|
350
|
+
bool isVarArg() const {
|
|
351
|
+
return varArg;
|
|
352
|
+
}
|
|
353
|
+
|
|
348
354
|
void print(std::ostream& os) const override;
|
|
349
355
|
};
|
|
350
356
|
|
|
@@ -93,7 +93,8 @@ const FunObjVar *CallGraph::getCallerOfCallSite(CallSiteID id) const
|
|
|
93
93
|
bool CallGraphNode::isReachableFromProgEntry(Map<NodeID, bool> &reachableFromEntry, NodeBS &visitedNodes) const
|
|
94
94
|
{
|
|
95
95
|
std::function<bool(const CallGraphNode*)> dfs =
|
|
96
|
-
|
|
96
|
+
[&reachableFromEntry, &visitedNodes, &dfs](const CallGraphNode *v)
|
|
97
|
+
{
|
|
97
98
|
NodeID id = v->getId();
|
|
98
99
|
if (!visitedNodes.test_and_set(id))
|
|
99
100
|
return reachableFromEntry[id];
|
|
@@ -300,7 +301,7 @@ void CallGraph::verifyCallGraph()
|
|
|
300
301
|
const CallICFGNode* cs = it->first;
|
|
301
302
|
const FunObjVar* func = cs->getCaller();
|
|
302
303
|
if (getCallGraphNode(func)->
|
|
303
|
-
|
|
304
|
+
isReachableFromProgEntry(reachableFromEntry, visitedNodes) == false)
|
|
304
305
|
writeWrnMsg(func->getName() + " has indirect call site but not reachable from main");
|
|
305
306
|
}
|
|
306
307
|
}
|
|
@@ -1234,7 +1234,7 @@ SVFType* LLVMModuleSet::addSVFTypeInfo(const Type* T)
|
|
|
1234
1234
|
{
|
|
1235
1235
|
paramTypes.push_back(getSVFType(t));
|
|
1236
1236
|
}
|
|
1237
|
-
svftype = new SVFFunctionType(getSVFType(ft->getReturnType()), paramTypes);
|
|
1237
|
+
svftype = new SVFFunctionType(getSVFType(ft->getReturnType()), paramTypes, ft->isVarArg());
|
|
1238
1238
|
}
|
|
1239
1239
|
else if (const StructType* st = SVFUtil::dyn_cast<StructType>(T))
|
|
1240
1240
|
{
|