svf-tools 1.0.1267 → 1.0.1269
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.1269",
|
|
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": {
|
|
@@ -619,7 +619,7 @@ template <> struct Hash<NodePair>
|
|
|
619
619
|
* processor time is measured and is returned by 'clock'.
|
|
620
620
|
*/
|
|
621
621
|
#define TIMEINTERVAL 1000
|
|
622
|
-
#define CLOCK_IN_MS() (clock() / (CLOCKS_PER_SEC / TIMEINTERVAL))
|
|
622
|
+
#define CLOCK_IN_MS() (clock() / (CLOCKS_PER_SEC / (double)TIMEINTERVAL))
|
|
623
623
|
|
|
624
624
|
/// Size of native integer that we'll use for bit vectors, in bits.
|
|
625
625
|
#define NATIVE_INT_SIZE (sizeof(unsigned long long) * CHAR_BIT)
|
|
@@ -758,7 +758,7 @@ void SVFIRBuilder::processCE(const Value* val)
|
|
|
758
758
|
if (const ConstantExpr* gepce = isGepConstantExpr(ref))
|
|
759
759
|
{
|
|
760
760
|
DBOUT(DPAGBuild, outs() << "handle gep constant expression "
|
|
761
|
-
|
|
761
|
+
<< LLVMUtil::dumpValue(ref) << "\n");
|
|
762
762
|
const Constant* opnd = gepce->getOperand(0);
|
|
763
763
|
// handle recursive constant express case (gep (bitcast (gep X 1)) 1)
|
|
764
764
|
processCE(opnd);
|
|
@@ -780,7 +780,7 @@ void SVFIRBuilder::processCE(const Value* val)
|
|
|
780
780
|
else if (const ConstantExpr* castce = isCastConstantExpr(ref))
|
|
781
781
|
{
|
|
782
782
|
DBOUT(DPAGBuild, outs() << "handle cast constant expression "
|
|
783
|
-
|
|
783
|
+
<< LLVMUtil::dumpValue(ref) << "\n");
|
|
784
784
|
const Constant* opnd = castce->getOperand(0);
|
|
785
785
|
processCE(opnd);
|
|
786
786
|
const Value* cval = getCurrentValue();
|
|
@@ -792,7 +792,7 @@ void SVFIRBuilder::processCE(const Value* val)
|
|
|
792
792
|
else if (const ConstantExpr* selectce = isSelectConstantExpr(ref))
|
|
793
793
|
{
|
|
794
794
|
DBOUT(DPAGBuild, outs() << "handle select constant expression "
|
|
795
|
-
|
|
795
|
+
<< LLVMUtil::dumpValue(ref) << "\n");
|
|
796
796
|
const Constant* src1 = selectce->getOperand(1);
|
|
797
797
|
const Constant* src2 = selectce->getOperand(2);
|
|
798
798
|
processCE(src1);
|
|
@@ -916,8 +916,8 @@ void SVFIRBuilder::InitialGlobal(const GlobalVariable *gvar, Constant *C,
|
|
|
916
916
|
u32_t offset)
|
|
917
917
|
{
|
|
918
918
|
DBOUT(DPAGBuild, outs() << "global " << LLVMUtil::dumpValue(gvar)
|
|
919
|
-
|
|
920
|
-
|
|
919
|
+
<< " constant initializer: "
|
|
920
|
+
<< LLVMUtil::dumpValue(C) << "\n");
|
|
921
921
|
if (C->getType()->isSingleValueType())
|
|
922
922
|
{
|
|
923
923
|
NodeID src = getValueNode(C);
|
|
@@ -1011,7 +1011,7 @@ void SVFIRBuilder::visitGlobal()
|
|
|
1011
1011
|
{
|
|
1012
1012
|
Constant *C = gvar->getInitializer();
|
|
1013
1013
|
DBOUT(DPAGBuild, outs() << "add global var node "
|
|
1014
|
-
|
|
1014
|
+
<< LLVMUtil::dumpValue(gvar) << "\n");
|
|
1015
1015
|
InitialGlobal(gvar, C, 0);
|
|
1016
1016
|
}
|
|
1017
1017
|
}
|
|
@@ -1518,7 +1518,7 @@ void SVFIRBuilder::handleDirectCall(CallBase* cs, const Function *F)
|
|
|
1518
1518
|
CallICFGNode* callICFGNode = llvmModuleSet()->getCallICFGNode(cs);
|
|
1519
1519
|
const FunObjVar* svffun = llvmModuleSet()->getFunObjVar(F);
|
|
1520
1520
|
DBOUT(DPAGBuild, outs() << "handle direct call " << LLVMUtil::dumpValue(cs)
|
|
1521
|
-
|
|
1521
|
+
<< " callee " << F->getName().str() << "\n");
|
|
1522
1522
|
|
|
1523
1523
|
//Only handle the ret.val. if it's used as a ptr.
|
|
1524
1524
|
NodeID dstrec = getValueNode(cs);
|
|
@@ -1545,7 +1545,7 @@ void SVFIRBuilder::handleDirectCall(CallBase* cs, const Function *F)
|
|
|
1545
1545
|
const Value* AA = cs->getArgOperand(itA), *FA = &*itF; //current actual/formal arg
|
|
1546
1546
|
|
|
1547
1547
|
DBOUT(DPAGBuild, outs() << "process actual parm "
|
|
1548
|
-
|
|
1548
|
+
<< LLVMUtil::dumpValue(AA) << "\n");
|
|
1549
1549
|
|
|
1550
1550
|
NodeID dstFA = getValueNode(FA);
|
|
1551
1551
|
NodeID srcAA = getValueNode(AA);
|
|
@@ -392,7 +392,7 @@ void SymbolTableBuilder::handleCE(const Value* val)
|
|
|
392
392
|
if (const ConstantExpr* ce = isGepConstantExpr(ref))
|
|
393
393
|
{
|
|
394
394
|
DBOUT(DMemModelCE, outs() << "handle constant expression "
|
|
395
|
-
|
|
395
|
+
<< LLVMUtil::dumpValue(ref) << "\n");
|
|
396
396
|
collectVal(ce);
|
|
397
397
|
|
|
398
398
|
// handle the recursive constant express case
|
|
@@ -406,7 +406,7 @@ void SymbolTableBuilder::handleCE(const Value* val)
|
|
|
406
406
|
else if (const ConstantExpr* ce = isCastConstantExpr(ref))
|
|
407
407
|
{
|
|
408
408
|
DBOUT(DMemModelCE, outs() << "handle constant expression "
|
|
409
|
-
|
|
409
|
+
<< LLVMUtil::dumpValue(ref) << "\n");
|
|
410
410
|
collectVal(ce);
|
|
411
411
|
collectVal(ce->getOperand(0));
|
|
412
412
|
// handle the recursive constant express case
|
|
@@ -416,7 +416,7 @@ void SymbolTableBuilder::handleCE(const Value* val)
|
|
|
416
416
|
else if (const ConstantExpr* ce = isSelectConstantExpr(ref))
|
|
417
417
|
{
|
|
418
418
|
DBOUT(DMemModelCE, outs() << "handle constant expression "
|
|
419
|
-
|
|
419
|
+
<< LLVMUtil::dumpValue(ref) << "\n");
|
|
420
420
|
collectVal(ce);
|
|
421
421
|
collectVal(ce->getOperand(0));
|
|
422
422
|
collectVal(ce->getOperand(1));
|