svf-tools 1.0.536 → 1.0.539
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/AndersenSFR_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/Andersen_8h_source.html +6 -9
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +4 -4
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +13 -12
- package/SVF-doxygen/html/html/Options_8h_source.html +13 -12
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +32 -32
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +33 -33
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +150 -152
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +45 -140
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +149 -151
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +4 -10
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +161 -163
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +3 -9
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +156 -158
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +13 -19
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +4 -3
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +38 -12
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +86 -88
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +120 -118
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
- package/SVF-doxygen/html/html/functions_a.html +3 -6
- package/SVF-doxygen/html/html/functions_func.html +5 -8
- package/SVF-doxygen/html/html/functions_func_m.html +1 -4
- package/SVF-doxygen/html/html/functions_l.html +6 -6
- package/SVF-doxygen/html/html/functions_m.html +0 -3
- package/SVF-doxygen/html/html/functions_n.html +4 -4
- package/SVF-doxygen/html/html/functions_o.html +3 -3
- package/SVF-doxygen/html/html/functions_p.html +13 -13
- package/SVF-doxygen/html/html/functions_r.html +3 -5
- package/SVF-doxygen/html/html/functions_s.html +3 -3
- package/SVF-doxygen/html/html/functions_t.html +4 -4
- package/SVF-doxygen/html/html/functions_v.html +6 -3
- package/SVF-doxygen/html/html/functions_vars_v.html +3 -0
- package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +0 -1
- package/SVF-doxygen/html/html/search/all_10.js +6 -6
- package/SVF-doxygen/html/html/search/all_11.js +1 -1
- package/SVF-doxygen/html/html/search/all_12.js +2 -2
- package/SVF-doxygen/html/html/search/all_13.js +3 -3
- package/SVF-doxygen/html/html/search/all_14.js +1 -1
- package/SVF-doxygen/html/html/search/all_15.js +3 -2
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +4 -4
- package/SVF-doxygen/html/html/search/all_d.js +0 -1
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +0 -1
- package/SVF-doxygen/html/html/search/functions_c.js +0 -1
- package/SVF-doxygen/html/html/search/variables_13.js +2 -2
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_15.js +1 -0
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/include/MemoryModel/SVFIR.h +1 -4
- package/include/Util/Options.h +1 -0
- package/include/WPA/Andersen.h +0 -11
- package/lib/Graphs/SVFGReadWrite.cpp +3 -3
- package/lib/SVF-FE/SVFIRBuilder.cpp +2 -0
- package/lib/Util/Options.cpp +7 -0
- package/lib/WPA/Andersen.cpp +0 -3
- package/package.json +1 -1
|
@@ -5,7 +5,7 @@ var searchData=
|
|
|
5
5
|
['uniqueintersections',['uniqueIntersections',['../classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531',1,'SVF::PersistentPointsToCache']]],
|
|
6
6
|
['uniqueunions',['uniqueUnions',['../classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4',1,'SVF::PersistentPointsToCache']]],
|
|
7
7
|
['unlocksites',['unlocksites',['../classSVF_1_1LockAnalysis.html#aec459af1d1624df55ffc95cd75655780',1,'SVF::LockAnalysis']]],
|
|
8
|
-
['updatecallgraphtime',['
|
|
8
|
+
['updatecallgraphtime',['UpdateCallGraphTime',['../classSVF_1_1PTAStat.html#a8aedfeb35f76e6d33135637156468894',1,'SVF::PTAStat::UpdateCallGraphTime()'],['../classSVF_1_1FlowSensitive.html#afc140b6c8e78dc2d962f64fdf53b1e07',1,'SVF::FlowSensitive::updateCallGraphTime()']]],
|
|
9
9
|
['updatetime',['updateTime',['../classSVF_1_1FlowSensitive.html#af5a94d14096ae2bbc47b3b3b9f723226',1,'SVF::FlowSensitive']]],
|
|
10
10
|
['usedregs',['usedRegs',['../classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa',1,'SVF::MemSSA']]],
|
|
11
11
|
['usepcg',['UsePCG',['../classSVF_1_1Options.html#af2f66307e1d51947676f622c98ef0762',1,'SVF::Options']]],
|
|
@@ -35,6 +35,7 @@ var searchData=
|
|
|
35
35
|
['visitedset',['visitedSet',['../classSVF_1_1SrcSnkDDA.html#a2349db6c540e418600e2fdbe2e665628',1,'SVF::SrcSnkDDA']]],
|
|
36
36
|
['vptd',['vPtD',['../classSVF_1_1VersionedFlowSensitive.html#a03f5f16377daa0258166a73de3e21f07',1,'SVF::VersionedFlowSensitive']]],
|
|
37
37
|
['vtable',['vtable',['../classSVF_1_1CHNode.html#a08a717043e8b8c3d87742f0ecd3a3cc1',1,'SVF::CHNode::vtable()'],['../classSVF_1_1DCHNode.html#a620ac2c6a9095510be5999431ff54b6d',1,'SVF::DCHNode::vtable()']]],
|
|
38
|
+
['vtableinsvfir',['VtableInSVFIR',['../classSVF_1_1Options.html#a2a9fe90fae25f3de780f91b7e296b49a',1,'SVF::Options']]],
|
|
38
39
|
['vtabletocallsitemap',['vtableToCallSiteMap',['../classSVF_1_1FunptrDDAClient.html#a357db092c3c39d7b1c6dd0fec3888048',1,'SVF::FunptrDDAClient::vtableToCallSiteMap()'],['../classSVF_1_1AliasDDAClient.html#a123e98572cf077ffdf7116ac5f5fc5e4',1,'SVF::AliasDDAClient::vtableToCallSiteMap()']]],
|
|
39
40
|
['vtblchamap',['vtblCHAMap',['../classSVF_1_1DCHGraph.html#a294e7a04aff9cef87c1008e91a620155',1,'SVF::DCHGraph']]],
|
|
40
41
|
['vtbllabelafterdemangle',['vtblLabelAfterDemangle',['../CPPUtil_8cpp.html#ac43d67cde6cc257e442b3ac2ae8fb3f9',1,'CPPUtil.cpp']]],
|
|
@@ -38,7 +38,7 @@ var searchData=
|
|
|
38
38
|
['lookupintersections',['lookupIntersections',['../classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff',1,'SVF::PersistentPointsToCache']]],
|
|
39
39
|
['lookupunions',['lookupUnions',['../classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8',1,'SVF::PersistentPointsToCache']]],
|
|
40
40
|
['loopanalysis',['LoopAnalysis',['../classSVF_1_1Options.html#a420e6656b02fd900430d51b8b4a5c6c1',1,'SVF::Options']]],
|
|
41
|
-
['loopbound',['
|
|
41
|
+
['loopbound',['loopBound',['../classSVF_1_1SVFLoop.html#ac4e2c365e2a08477381802205029b85c',1,'SVF::SVFLoop::loopBound()'],['../classSVF_1_1Options.html#ab7161ca7a809792af82e5aabdfcc3bfb',1,'SVF::Options::LoopBound()']]],
|
|
42
42
|
['loopinfobuilder',['loopInfoBuilder',['../classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2',1,'SVF::TCT']]],
|
|
43
43
|
['lowlink',['lowlink',['../structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html#a6d66813dfb5338c22de62c100e951cf2',1,'SVF::VersionedFlowSensitive::SCC::NodeData']]],
|
|
44
44
|
['ls',['ls',['../classSVF_1_1NormalGepCGEdge.html#a7cbcaa28acde49ef0b03a8554a41344b',1,'SVF::NormalGepCGEdge::ls()'],['../classSVF_1_1GepStmt.html#a543a3f4801b22719f7b9677246bf2ac7',1,'SVF::GepStmt::ls()'],['../classSVF_1_1GepValVar.html#a2ee5e9a2e5a92b32fd81fda09b560ad6',1,'SVF::GepValVar::ls()'],['../classSVF_1_1GepObjVar.html#a55b057663180420c6bb09bf849d83f6b',1,'SVF::GepObjVar::ls()']]],
|
|
@@ -137,7 +137,7 @@ var searchData=
|
|
|
137
137
|
['numofretnodes',['numOfRetNodes',['../classSVF_1_1ICFGStat.html#ac9bfce40c058ed7ab178fe1f1818e9de',1,'SVF::ICFGStat']]],
|
|
138
138
|
['numofreturns',['NumOfReturns',['../classSVF_1_1PTAStat.html#a0a552611fcd20e1310290bdae404a514',1,'SVF::PTAStat']]],
|
|
139
139
|
['numofscc',['numOfSCC',['../classSVF_1_1FlowSensitive.html#a0ac955bf06261eec1c6bb78ec99652e3',1,'SVF::FlowSensitive']]],
|
|
140
|
-
['numofsccdetection',['
|
|
140
|
+
['numofsccdetection',['numOfSCCDetection',['../classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968',1,'SVF::AndersenBase::numOfSCCDetection()'],['../classSVF_1_1PTAStat.html#ad1731b88c24bb79728f62cd3e9c55699',1,'SVF::PTAStat::NumOfSCCDetection()']]],
|
|
141
141
|
['numofsfr',['NumOfSfr',['../classSVF_1_1PTAStat.html#a07a1db62ddba50bda787b2985ef8d135',1,'SVF::PTAStat']]],
|
|
142
142
|
['numofsfrs',['numOfSfrs',['../classSVF_1_1AndersenBase.html#a25b00d9ca71cbdd27530fc5d0dc84ee5',1,'SVF::AndersenBase']]],
|
|
143
143
|
['numofstackobjs',['NumOfStackObjs',['../classSVF_1_1PTAStat.html#ae05503909688a17dc1f282d1d029d24e',1,'SVF::PTAStat']]],
|
|
@@ -367,10 +367,7 @@ public:
|
|
|
367
367
|
}
|
|
368
368
|
inline NodeID getFIObjVar(NodeID id) const
|
|
369
369
|
{
|
|
370
|
-
|
|
371
|
-
assert(SVFUtil::isa<ObjVar>(node) && "need an object node");
|
|
372
|
-
ObjVar* obj = SVFUtil::cast<ObjVar>(node);
|
|
373
|
-
return getFIObjVar(obj->getMemObj());
|
|
370
|
+
return getBaseObjVar(id);
|
|
374
371
|
}
|
|
375
372
|
//@}
|
|
376
373
|
|
package/include/Util/Options.h
CHANGED
|
@@ -236,6 +236,7 @@ public:
|
|
|
236
236
|
static const llvm::cl::opt<std :: string> ReadAnder;
|
|
237
237
|
static const llvm::cl::opt<bool> PtsDiff;
|
|
238
238
|
static const llvm::cl::opt<bool> MergePWC;
|
|
239
|
+
static const llvm::cl::opt<bool> VtableInSVFIR;
|
|
239
240
|
|
|
240
241
|
// WPAPass.cpp
|
|
241
242
|
static const llvm::cl::opt<bool> AnderSVFG;
|
package/include/WPA/Andersen.h
CHANGED
|
@@ -386,17 +386,6 @@ protected:
|
|
|
386
386
|
return "AndersenWPA";
|
|
387
387
|
}
|
|
388
388
|
|
|
389
|
-
/// match types for Gep Edges
|
|
390
|
-
virtual bool matchType(NodeID, NodeID, const NormalGepCGEdge*)
|
|
391
|
-
{
|
|
392
|
-
return true;
|
|
393
|
-
}
|
|
394
|
-
/// add type for newly created GepObjNode
|
|
395
|
-
virtual void addTypeForGepObjNode(NodeID, const NormalGepCGEdge*)
|
|
396
|
-
{
|
|
397
|
-
return;
|
|
398
|
-
}
|
|
399
|
-
|
|
400
389
|
/// Runs a Steensgaard analysis and performs clustering based on those
|
|
401
390
|
/// results set the global best mapping.
|
|
402
391
|
virtual void cluster(void) const;
|
|
@@ -124,7 +124,7 @@ void SVFG::writeToFile(const string& filename)
|
|
|
124
124
|
if(LOADMU* mu = SVFUtil::dyn_cast<LOADMU>(*it))
|
|
125
125
|
{
|
|
126
126
|
NodeID def = getDef(mu->getMRVer());
|
|
127
|
-
f << "srcSVFGNodeID: " << nodeId << " => " << "dstSVFGNodeID: " << def << " >= LoadNode | MVER: {"<< *mu->getMRVer() << "}" << "\n";
|
|
127
|
+
f << "srcSVFGNodeID: " << nodeId << " => " << "dstSVFGNodeID: " << def << " >= LoadNode | MVER: {" << *mu->getMRVer() << "}" << "\n";
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
}
|
|
@@ -136,7 +136,7 @@ void SVFG::writeToFile(const string& filename)
|
|
|
136
136
|
if(STORECHI* chi = SVFUtil::dyn_cast<STORECHI>(*it))
|
|
137
137
|
{
|
|
138
138
|
NodeID def = getDef(chi->getOpVer());
|
|
139
|
-
f << "srcSVFGNodeID: " << nodeId << " => " << "dstSVFGNodeID: " << def << " >= StoreNode | MVER: {"<< *chi->getOpVer() << "}" << "\n";
|
|
139
|
+
f << "srcSVFGNodeID: " << nodeId << " => " << "dstSVFGNodeID: " << def << " >= StoreNode | MVER: {" << *chi->getOpVer() << "}" << "\n";
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
}
|
|
@@ -189,7 +189,7 @@ void SVFG::writeToFile(const string& filename)
|
|
|
189
189
|
{
|
|
190
190
|
const MRVer* op = it->second;
|
|
191
191
|
NodeID def = getDef(op);
|
|
192
|
-
f << "srcSVFGNodeID: " << nodeId << " => " << "dstSVFGNodeID: " << def << " >= PHISVFGNode | MVER: {"<< *op << "}" << "\n";
|
|
192
|
+
f << "srcSVFGNodeID: " << nodeId << " => " << "dstSVFGNodeID: " << def << " >= PHISVFGNode | MVER: {" << *op << "}" << "\n";
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
}
|
|
@@ -492,6 +492,8 @@ void SVFIRBuilder::InitialGlobal(const GlobalVariable *gvar, Constant *C,
|
|
|
492
492
|
}
|
|
493
493
|
else if (SVFUtil::isa<ConstantArray>(C) || SVFUtil::isa<ConstantStruct>(C))
|
|
494
494
|
{
|
|
495
|
+
if(cppUtil::isValVtbl(gvar) && !Options::VtableInSVFIR)
|
|
496
|
+
return;
|
|
495
497
|
for (u32_t i = 0, e = C->getNumOperands(); i != e; i++)
|
|
496
498
|
{
|
|
497
499
|
u32_t off = SymbolTableInfo::SymbolInfo()->getFlattenedElemIdx(C->getType(), i);
|
package/lib/Util/Options.cpp
CHANGED
|
@@ -727,6 +727,13 @@ const llvm::cl::opt<bool> Options::MergePWC(
|
|
|
727
727
|
llvm::cl::desc("Enable PWC in graph solving")
|
|
728
728
|
);
|
|
729
729
|
|
|
730
|
+
//SVFIRBuilder.cpp
|
|
731
|
+
const llvm::cl::opt<bool> Options::VtableInSVFIR(
|
|
732
|
+
"vt-in-ir",
|
|
733
|
+
llvm::cl::init(false),
|
|
734
|
+
llvm::cl::desc("Handle vtable in ConstantArray/ConstantStruct in SVFIRBuilder (already handled in CHA?)")
|
|
735
|
+
);
|
|
736
|
+
|
|
730
737
|
|
|
731
738
|
//WPAPass.cpp
|
|
732
739
|
const llvm::cl::opt<bool> Options::AnderSVFG(
|
package/lib/WPA/Andersen.cpp
CHANGED
|
@@ -431,11 +431,8 @@ bool Andersen::processGepPts(const PointsTo& pts, const GepCGEdge* edge)
|
|
|
431
431
|
continue;
|
|
432
432
|
}
|
|
433
433
|
|
|
434
|
-
if (!matchType(edge->getSrcID(), o, normalGepEdge)) continue;
|
|
435
|
-
|
|
436
434
|
NodeID fieldSrcPtdNode = consCG->getGepObjVar(o, normalGepEdge->getLocationSet());
|
|
437
435
|
tmpDstPts.set(fieldSrcPtdNode);
|
|
438
|
-
addTypeForGepObjNode(fieldSrcPtdNode, normalGepEdge);
|
|
439
436
|
}
|
|
440
437
|
}
|
|
441
438
|
else
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.539",
|
|
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": {
|