svf-tools 1.0.358 → 1.0.362
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/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -3
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +25 -25
- package/SVF-doxygen/html/html/ICFG_8h_source.html +17 -18
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +12 -12
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +13 -13
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +91 -89
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +7 -7
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/VFG_8h_source.html +16 -16
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +7 -5
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +80 -12
- package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +236 -235
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +45 -49
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +2 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PCG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TCT-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +6 -6
- package/SVF-doxygen/html/html/functions_a.html +12 -12
- package/SVF-doxygen/html/html/functions_f.html +3 -3
- package/SVF-doxygen/html/html/functions_func.html +12 -12
- package/SVF-doxygen/html/html/functions_func_g.html +36 -42
- package/SVF-doxygen/html/html/functions_func_i.html +9 -8
- package/SVF-doxygen/html/html/functions_g.html +34 -40
- package/SVF-doxygen/html/html/functions_i.html +12 -11
- package/SVF-doxygen/html/html/functions_l.html +8 -8
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_n.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +11 -11
- package/SVF-doxygen/html/html/functions_p.html +1 -1
- package/SVF-doxygen/html/html/functions_s.html +9 -7
- package/SVF-doxygen/html/html/functions_t.html +4 -4
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_w.html +9 -5
- package/SVF-doxygen/html/html/search/all_1.js +5 -5
- package/SVF-doxygen/html/html/search/all_10.js +3 -3
- package/SVF-doxygen/html/html/search/all_13.js +6 -6
- package/SVF-doxygen/html/html/search/all_14.js +4 -4
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_6.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +13 -16
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +3 -3
- package/SVF-doxygen/html/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +5 -5
- package/SVF-doxygen/html/html/search/functions_10.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +13 -16
- package/SVF-doxygen/html/html/search/functions_8.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +2 -2
- package/SVF-doxygen/html/html/search/variables_e.js +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +16 -16
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -2
- package/include/Graphs/ICFG.h +18 -18
- package/include/Graphs/ICFGNode.h +2 -2
- package/include/Graphs/SVFG.h +4 -4
- package/include/Graphs/SVFGOPT.h +2 -2
- package/include/Graphs/VFG.h +5 -5
- package/include/MTA/LockResultValidator.h +1 -1
- package/include/MTA/MHP.h +2 -2
- package/include/MTA/PCG.h +2 -2
- package/include/MTA/TCT.h +2 -2
- package/include/MemoryModel/LocationSet.h +1 -1
- package/include/MemoryModel/SVFIR.h +2 -2
- package/include/MemoryModel/SVFStatements.h +11 -3
- package/include/SVF-FE/ICFGBuilder.h +5 -5
- package/include/SVF-FE/SVFIRBuilder.h +1 -1
- package/lib/Graphs/ICFG.cpp +37 -32
- package/lib/Graphs/SVFG.cpp +4 -4
- package/lib/Graphs/VFG.cpp +3 -3
- package/lib/MSSA/MemRegion.cpp +7 -7
- package/lib/MSSA/MemSSA.cpp +3 -3
- package/lib/MTA/LockAnalysis.cpp +4 -4
- package/lib/MTA/MTAResultValidator.cpp +1 -1
- package/lib/MTA/PCG.cpp +1 -1
- package/lib/MTA/TCT.cpp +2 -2
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
- package/lib/SABER/LeakChecker.cpp +3 -3
- package/lib/SVF-FE/CallGraphBuilder.cpp +4 -4
- package/lib/SVF-FE/ICFGBuilder.cpp +15 -27
- package/lib/SVF-FE/SVFIRBuilder.cpp +15 -15
- package/lib/SVF-FE/SymbolTableBuilder.cpp +1 -1
- package/lib/WPA/Andersen.cpp +3 -3
- package/lib/WPA/WPAPass.cpp +4 -4
- package/package.json +1 -1
- package/tools/Example/svf-ex.cpp +1 -1
|
@@ -791,8 +791,8 @@ void SVFIRBuilder::visitCallSite(CallSite cs)
|
|
|
791
791
|
DBOUT(DPAGBuild,
|
|
792
792
|
outs() << "process callsite " << *cs.getInstruction() << "\n");
|
|
793
793
|
|
|
794
|
-
CallICFGNode* callBlockNode = pag->getICFG()->
|
|
795
|
-
RetICFGNode* retBlockNode = pag->getICFG()->
|
|
794
|
+
CallICFGNode* callBlockNode = pag->getICFG()->getCallICFGNode(cs.getInstruction());
|
|
795
|
+
RetICFGNode* retBlockNode = pag->getICFG()->getRetICFGNode(cs.getInstruction());
|
|
796
796
|
|
|
797
797
|
pag->addCallSite(callBlockNode);
|
|
798
798
|
|
|
@@ -893,7 +893,7 @@ void SVFIRBuilder::visitBranchInst(BranchInst &inst){
|
|
|
893
893
|
for (u32_t i = 0; i < inst.getNumSuccessors(); ++i)
|
|
894
894
|
{
|
|
895
895
|
const Instruction* succInst = &inst.getSuccessor(i)->front();
|
|
896
|
-
const ICFGNode* icfgNode = pag->getICFG()->
|
|
896
|
+
const ICFGNode* icfgNode = pag->getICFG()->getICFGNode(succInst);
|
|
897
897
|
successors.push_back(std::make_pair(icfgNode, 1-i));
|
|
898
898
|
}
|
|
899
899
|
const BranchStmt *brStmt = addBranchStmt(brinst, cond,successors);
|
|
@@ -910,7 +910,7 @@ void SVFIRBuilder::visitSwitchInst(SwitchInst &inst){
|
|
|
910
910
|
const ConstantInt* condVal = inst.findCaseDest(inst.getSuccessor(i));
|
|
911
911
|
/// default case is set to -1;
|
|
912
912
|
s64_t val = condVal ? condVal->getSExtValue() : -1;
|
|
913
|
-
const ICFGNode* icfgNode = pag->getICFG()->
|
|
913
|
+
const ICFGNode* icfgNode = pag->getICFG()->getICFGNode(succInst);
|
|
914
914
|
successors.push_back(std::make_pair(icfgNode,val));
|
|
915
915
|
}
|
|
916
916
|
const BranchStmt *brStmt = addBranchStmt(brinst, cond,successors);
|
|
@@ -960,7 +960,7 @@ void SVFIRBuilder::handleDirectCall(CallSite cs, const SVFFunction *F)
|
|
|
960
960
|
if (!cs.getType()->isVoidTy())
|
|
961
961
|
{
|
|
962
962
|
NodeID srcret = getReturnNode(F);
|
|
963
|
-
CallICFGNode* icfgNode = pag->getICFG()->
|
|
963
|
+
CallICFGNode* icfgNode = pag->getICFG()->getCallICFGNode(cs.getInstruction());
|
|
964
964
|
addRetEdge(srcret, dstrec,icfgNode);
|
|
965
965
|
}
|
|
966
966
|
//Iterators for the actual and formal parameters
|
|
@@ -982,7 +982,7 @@ void SVFIRBuilder::handleDirectCall(CallSite cs, const SVFFunction *F)
|
|
|
982
982
|
|
|
983
983
|
NodeID dstFA = getValueNode(FA);
|
|
984
984
|
NodeID srcAA = getValueNode(AA);
|
|
985
|
-
CallICFGNode* icfgNode = pag->getICFG()->
|
|
985
|
+
CallICFGNode* icfgNode = pag->getICFG()->getCallICFGNode(cs.getInstruction());
|
|
986
986
|
addCallEdge(srcAA, dstFA, icfgNode);
|
|
987
987
|
}
|
|
988
988
|
//Any remaining actual args must be varargs.
|
|
@@ -994,7 +994,7 @@ void SVFIRBuilder::handleDirectCall(CallSite cs, const SVFFunction *F)
|
|
|
994
994
|
{
|
|
995
995
|
Value *AA = *itA;
|
|
996
996
|
NodeID vnAA = getValueNode(AA);
|
|
997
|
-
CallICFGNode* icfgNode = pag->getICFG()->
|
|
997
|
+
CallICFGNode* icfgNode = pag->getICFG()->getCallICFGNode(cs.getInstruction());
|
|
998
998
|
addCallEdge(vnAA,vaF, icfgNode);
|
|
999
999
|
}
|
|
1000
1000
|
}
|
|
@@ -1477,7 +1477,7 @@ void SVFIRBuilder::handleExtCall(CallSite cs, const SVFFunction *callee)
|
|
|
1477
1477
|
/// Connect actual parameter to formal parameter of the start routine
|
|
1478
1478
|
if(SVFUtil::isa<PointerType>(actualParm->getType()) && SVFUtil::isa<PointerType>(formalParm->getType()) )
|
|
1479
1479
|
{
|
|
1480
|
-
CallICFGNode* icfgNode = pag->getICFG()->
|
|
1480
|
+
CallICFGNode* icfgNode = pag->getICFG()->getCallICFGNode(inst);
|
|
1481
1481
|
addThreadForkEdge(pag->getValueNode(actualParm), pag->getValueNode(formalParm),icfgNode);
|
|
1482
1482
|
}
|
|
1483
1483
|
}
|
|
@@ -1506,7 +1506,7 @@ void SVFIRBuilder::handleExtCall(CallSite cs, const SVFFunction *callee)
|
|
|
1506
1506
|
/// Connect actual parameter to formal parameter of the start routine
|
|
1507
1507
|
if(SVFUtil::isa<PointerType>(actualParm->getType()) && SVFUtil::isa<PointerType>(formalParm->getType()) )
|
|
1508
1508
|
{
|
|
1509
|
-
CallICFGNode* icfgNode = pag->getICFG()->
|
|
1509
|
+
CallICFGNode* icfgNode = pag->getICFG()->getCallICFGNode(inst);
|
|
1510
1510
|
addThreadForkEdge(pag->getValueNode(actualParm), pag->getValueNode(formalParm),icfgNode);
|
|
1511
1511
|
}
|
|
1512
1512
|
}
|
|
@@ -1528,7 +1528,7 @@ void SVFIRBuilder::handleExtCall(CallSite cs, const SVFFunction *callee)
|
|
|
1528
1528
|
*/
|
|
1529
1529
|
void SVFIRBuilder::handleIndCall(CallSite cs)
|
|
1530
1530
|
{
|
|
1531
|
-
const CallICFGNode* cbn = pag->getICFG()->
|
|
1531
|
+
const CallICFGNode* cbn = pag->getICFG()->getCallICFGNode(cs.getInstruction());
|
|
1532
1532
|
pag->addIndirectCallsites(cbn,pag->getValueNode(cs.getCalledValue()));
|
|
1533
1533
|
}
|
|
1534
1534
|
|
|
@@ -1618,7 +1618,7 @@ void SVFIRBuilder::setCurrentBBAndValueForPAGEdge(PAGEdge* edge)
|
|
|
1618
1618
|
edge->setValue(curVal);
|
|
1619
1619
|
// backmap in valuToEdgeMap
|
|
1620
1620
|
pag->mapValueToEdge(curVal, edge);
|
|
1621
|
-
ICFGNode* icfgNode = pag->getICFG()->
|
|
1621
|
+
ICFGNode* icfgNode = pag->getICFG()->getGlobalICFGNode();
|
|
1622
1622
|
if (const Instruction *curInst = SVFUtil::dyn_cast<Instruction>(curVal))
|
|
1623
1623
|
{
|
|
1624
1624
|
const Function* srcFun = edge->getSrcNode()->getFunction();
|
|
@@ -1637,23 +1637,23 @@ void SVFIRBuilder::setCurrentBBAndValueForPAGEdge(PAGEdge* edge)
|
|
|
1637
1637
|
/// We will have one unique function exit ICFGNode for all returns
|
|
1638
1638
|
if(const ReturnInst* retInst = SVFUtil::dyn_cast<ReturnInst>(curVal)){
|
|
1639
1639
|
const SVFFunction *fun = LLVMModuleSet::getLLVMModuleSet()->getSVFFunction(retInst->getParent()->getParent());
|
|
1640
|
-
icfgNode = pag->getICFG()->
|
|
1640
|
+
icfgNode = pag->getICFG()->getFunExitICFGNode(fun);
|
|
1641
1641
|
}
|
|
1642
1642
|
else
|
|
1643
|
-
icfgNode = pag->getICFG()->
|
|
1643
|
+
icfgNode = pag->getICFG()->getICFGNode(curInst);
|
|
1644
1644
|
}
|
|
1645
1645
|
else if (const Argument* arg = SVFUtil::dyn_cast<Argument>(curVal))
|
|
1646
1646
|
{
|
|
1647
1647
|
assert(curBB && (&curBB->getParent()->getEntryBlock() == curBB));
|
|
1648
1648
|
const SVFFunction* fun = LLVMModuleSet::getLLVMModuleSet()->getSVFFunction(arg->getParent());
|
|
1649
|
-
icfgNode = pag->getICFG()->
|
|
1649
|
+
icfgNode = pag->getICFG()->getFunEntryICFGNode(fun);
|
|
1650
1650
|
}
|
|
1651
1651
|
else if (SVFUtil::isa<ConstantExpr>(curVal))
|
|
1652
1652
|
{
|
|
1653
1653
|
if (!curBB)
|
|
1654
1654
|
pag->addGlobalPAGEdge(edge);
|
|
1655
1655
|
else
|
|
1656
|
-
icfgNode = pag->getICFG()->
|
|
1656
|
+
icfgNode = pag->getICFG()->getICFGNode(&curBB->front());
|
|
1657
1657
|
}
|
|
1658
1658
|
else if (SVFUtil::isa<GlobalVariable>(curVal) ||
|
|
1659
1659
|
SVFUtil::isa<Function>(curVal) ||
|
|
@@ -613,7 +613,7 @@ u32_t SymbolTableBuilder::getObjSize(const Value* val)
|
|
|
613
613
|
u32_t numOfFields = 1;
|
|
614
614
|
if (SVFUtil::isa<StructType>(ety) || SVFUtil::isa<ArrayType>(ety))
|
|
615
615
|
{
|
|
616
|
-
numOfFields = SymbolTableInfo::SymbolInfo()->
|
|
616
|
+
numOfFields = SymbolTableInfo::SymbolInfo()->getNumOfFlattenElements(ety);
|
|
617
617
|
}
|
|
618
618
|
return numOfFields;
|
|
619
619
|
}
|
package/lib/WPA/Andersen.cpp
CHANGED
|
@@ -654,7 +654,7 @@ bool Andersen::updateCallGraph(const CallSiteToFunPtrMap& callsites)
|
|
|
654
654
|
void Andersen::heapAllocatorViaIndCall(CallSite cs, NodePairSet &cpySrcNodes)
|
|
655
655
|
{
|
|
656
656
|
assert(SVFUtil::getCallee(cs) == nullptr && "not an indirect callsite?");
|
|
657
|
-
RetICFGNode* retBlockNode = pag->getICFG()->
|
|
657
|
+
RetICFGNode* retBlockNode = pag->getICFG()->getRetICFGNode(cs.getInstruction());
|
|
658
658
|
const PAGNode* cs_return = pag->getCallSiteRet(retBlockNode);
|
|
659
659
|
NodeID srcret;
|
|
660
660
|
CallSite2DummyValPN::const_iterator it = callsite2DummyValPN.find(cs);
|
|
@@ -687,8 +687,8 @@ void Andersen::connectCaller2CalleeParams(CallSite cs, const SVFFunction* F, Nod
|
|
|
687
687
|
|
|
688
688
|
DBOUT(DAndersen, outs() << "connect parameters from indirect callsite " << *cs.getInstruction() << " to callee " << *F << "\n");
|
|
689
689
|
|
|
690
|
-
CallICFGNode* callBlockNode = pag->getICFG()->
|
|
691
|
-
RetICFGNode* retBlockNode = pag->getICFG()->
|
|
690
|
+
CallICFGNode* callBlockNode = pag->getICFG()->getCallICFGNode(cs.getInstruction());
|
|
691
|
+
RetICFGNode* retBlockNode = pag->getICFG()->getRetICFGNode(cs.getInstruction());
|
|
692
692
|
|
|
693
693
|
if(SVFUtil::isHeapAllocExtFunViaRet(F) && pag->callsiteHasRet(retBlockNode))
|
|
694
694
|
{
|
package/lib/WPA/WPAPass.cpp
CHANGED
|
@@ -239,7 +239,7 @@ ModRefInfo WPAPass::getModRefInfo(const CallInst* callInst)
|
|
|
239
239
|
{
|
|
240
240
|
assert(Options::PASelected.isSet(PointerAnalysis::AndersenWaveDiff_WPA) && Options::AnderSVFG && "mod-ref query is only support with -ander and -svfg turned on");
|
|
241
241
|
ICFG* icfg = _svfg->getPAG()->getICFG();
|
|
242
|
-
const CallICFGNode* cbn = icfg->
|
|
242
|
+
const CallICFGNode* cbn = icfg->getCallICFGNode(callInst);
|
|
243
243
|
return _svfg->getMSSA()->getMRGenerator()->getModRefInfo(cbn);
|
|
244
244
|
}
|
|
245
245
|
|
|
@@ -250,7 +250,7 @@ ModRefInfo WPAPass::getModRefInfo(const CallInst* callInst, const Value* V)
|
|
|
250
250
|
{
|
|
251
251
|
assert(Options::PASelected.isSet(PointerAnalysis::AndersenWaveDiff_WPA) && Options::AnderSVFG && "mod-ref query is only support with -ander and -svfg turned on");
|
|
252
252
|
ICFG* icfg = _svfg->getPAG()->getICFG();
|
|
253
|
-
const CallICFGNode* cbn = icfg->
|
|
253
|
+
const CallICFGNode* cbn = icfg->getCallICFGNode(callInst);
|
|
254
254
|
return _svfg->getMSSA()->getMRGenerator()->getModRefInfo(cbn, V);
|
|
255
255
|
}
|
|
256
256
|
|
|
@@ -261,7 +261,7 @@ ModRefInfo WPAPass::getModRefInfo(const CallInst* callInst1, const CallInst* cal
|
|
|
261
261
|
{
|
|
262
262
|
assert(Options::PASelected.isSet(PointerAnalysis::AndersenWaveDiff_WPA) && Options::AnderSVFG && "mod-ref query is only support with -ander and -svfg turned on");
|
|
263
263
|
ICFG* icfg = _svfg->getPAG()->getICFG();
|
|
264
|
-
const CallICFGNode* cbn1 = icfg->
|
|
265
|
-
const CallICFGNode* cbn2 = icfg->
|
|
264
|
+
const CallICFGNode* cbn1 = icfg->getCallICFGNode(callInst1);
|
|
265
|
+
const CallICFGNode* cbn2 = icfg->getCallICFGNode(callInst2);
|
|
266
266
|
return _svfg->getMSSA()->getMRGenerator()->getModRefInfo(cbn1, cbn2);
|
|
267
267
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.362",
|
|
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": {
|
package/tools/Example/svf-ex.cpp
CHANGED
|
@@ -79,7 +79,7 @@ std::string printPts(PointerAnalysis* pta, Value* val)
|
|
|
79
79
|
*/
|
|
80
80
|
void traverseOnICFG(ICFG* icfg, const Instruction* inst)
|
|
81
81
|
{
|
|
82
|
-
ICFGNode* iNode = icfg->
|
|
82
|
+
ICFGNode* iNode = icfg->getICFGNode(inst);
|
|
83
83
|
FIFOWorkList<const ICFGNode*> worklist;
|
|
84
84
|
Set<const ICFGNode*> visited;
|
|
85
85
|
worklist.push(iNode);
|