svf-tools 1.0.952 → 1.0.954
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.954",
|
|
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": {
|
|
@@ -382,10 +382,7 @@ public:
|
|
|
382
382
|
void view();
|
|
383
383
|
};
|
|
384
384
|
|
|
385
|
-
} // End namespace SVF
|
|
386
385
|
|
|
387
|
-
namespace SVF
|
|
388
|
-
{
|
|
389
386
|
/* !
|
|
390
387
|
* GenericGraphTraits specializations for the generic graph algorithms.
|
|
391
388
|
* Provide graph traits for traversing from a constraint node using standard graph traversals.
|
|
@@ -405,6 +402,6 @@ template<> struct GenericGraphTraits<SVF::ConstraintGraph*> : public GenericGrap
|
|
|
405
402
|
typedef SVF::ConstraintNode *NodeRef;
|
|
406
403
|
};
|
|
407
404
|
|
|
408
|
-
} // End namespace
|
|
405
|
+
} // End namespace SVF
|
|
409
406
|
|
|
410
407
|
#endif /* CONSG_H_ */
|
|
@@ -207,7 +207,7 @@ const Type *ObjTypeInference::fwInferObjType(const Value *var)
|
|
|
207
207
|
}
|
|
208
208
|
if (const auto *gepInst = SVFUtil::dyn_cast<GetElementPtrInst>(curValue))
|
|
209
209
|
insertInferSite(gepInst);
|
|
210
|
-
for (const auto
|
|
210
|
+
for (const auto it: curValue->users())
|
|
211
211
|
{
|
|
212
212
|
if (const auto *loadInst = SVFUtil::dyn_cast<LoadInst>(it))
|
|
213
213
|
{
|
|
@@ -233,7 +233,7 @@ const Type *ObjTypeInference::fwInferObjType(const Value *var)
|
|
|
233
233
|
}
|
|
234
234
|
else
|
|
235
235
|
{
|
|
236
|
-
for (const auto
|
|
236
|
+
for (const auto nit: storeInst->getPointerOperand()->users())
|
|
237
237
|
{
|
|
238
238
|
/*
|
|
239
239
|
* propagate across store (value operand) and load
|
|
@@ -265,14 +265,14 @@ const Type *ObjTypeInference::fwInferObjType(const Value *var)
|
|
|
265
265
|
const Value *gepBase = gepInst->getPointerOperand();
|
|
266
266
|
if(const auto *load = SVFUtil::dyn_cast<LoadInst>(gepBase))
|
|
267
267
|
{
|
|
268
|
-
for (const auto
|
|
268
|
+
for (const auto loadUse: load->getPointerOperand()->users())
|
|
269
269
|
{
|
|
270
270
|
if (loadUse == load || !SVFUtil::isa<LoadInst>(loadUse))
|
|
271
271
|
continue;
|
|
272
|
-
for (const auto
|
|
272
|
+
for (const auto gepUse: loadUse->users())
|
|
273
273
|
{
|
|
274
274
|
if (!SVFUtil::isa<GetElementPtrInst>(gepUse)) continue;
|
|
275
|
-
for (const auto
|
|
275
|
+
for (const auto loadUse2: gepUse->users())
|
|
276
276
|
{
|
|
277
277
|
if (SVFUtil::isa<LoadInst>(loadUse2))
|
|
278
278
|
{
|
|
@@ -294,10 +294,10 @@ const Type *ObjTypeInference::fwInferObjType(const Value *var)
|
|
|
294
294
|
%6 = load ptr, ptr %5, align 8
|
|
295
295
|
%7 = getelementptr inbounds %struct.ll, ptr %6, i32 0, i32 0
|
|
296
296
|
*/
|
|
297
|
-
for (const auto
|
|
297
|
+
for (const auto gepUse: alloc->users())
|
|
298
298
|
{
|
|
299
299
|
if (!SVFUtil::isa<GetElementPtrInst>(gepUse)) continue;
|
|
300
|
-
for (const auto
|
|
300
|
+
for (const auto loadUse2: gepUse->users())
|
|
301
301
|
{
|
|
302
302
|
if (SVFUtil::isa<LoadInst>(loadUse2))
|
|
303
303
|
{
|
|
@@ -344,7 +344,7 @@ const Type *ObjTypeInference::fwInferObjType(const Value *var)
|
|
|
344
344
|
%call = call i8* @malloc_wrapper()
|
|
345
345
|
..infer based on %call..
|
|
346
346
|
*/
|
|
347
|
-
for (const auto
|
|
347
|
+
for (const auto callsite: retInst->getFunction()->users())
|
|
348
348
|
{
|
|
349
349
|
if (const auto *callBase = SVFUtil::dyn_cast<CallBase>(callsite))
|
|
350
350
|
{
|
|
@@ -499,7 +499,7 @@ Set<const Value *> &ObjTypeInference::bwfindAllocOfVar(const Value *var)
|
|
|
499
499
|
}
|
|
500
500
|
else if (const auto *loadInst = SVFUtil::dyn_cast<LoadInst>(curValue))
|
|
501
501
|
{
|
|
502
|
-
for (const auto
|
|
502
|
+
for (const auto use: loadInst->getPointerOperand()->users())
|
|
503
503
|
{
|
|
504
504
|
if (const StoreInst *storeInst = SVFUtil::dyn_cast<StoreInst>(use))
|
|
505
505
|
{
|
|
@@ -512,7 +512,7 @@ Set<const Value *> &ObjTypeInference::bwfindAllocOfVar(const Value *var)
|
|
|
512
512
|
}
|
|
513
513
|
else if (const auto *argument = SVFUtil::dyn_cast<Argument>(curValue))
|
|
514
514
|
{
|
|
515
|
-
for (const auto
|
|
515
|
+
for (const auto use: argument->getParent()->users())
|
|
516
516
|
{
|
|
517
517
|
if (const CallBase *callBase = SVFUtil::dyn_cast<CallBase>(use))
|
|
518
518
|
{
|