User Guide - SVF-tools/SVF GitHub Wiki
Quick Start
Set Up Environment
Set up the SVF environment variables to point to the release version executables of SVF
cd $SVF_HOME
. ./setup.sh
Set up the environment variables for the debug version executables of SVF (make sure you have built the debug version of SVF)
cd $SVF_HOME
. ./setup.sh debug
After the build process, the executables are generated in $SVF_HOME/Release+Asserts ($SVF_HOME/Debug+Asserts)
Run whole program analysis engine (wpa)
Run Andersen’s Pointer Analysis
wpa -ander example.bc
Run Andersen’s Pointer Analysis and generate whole-program value-flow graph
wpa -ander -svfg example.bc
Run Flow-Sensitive Pointer Analysis
wpa -fspta example.bc
Analysis Outputs
Dump Graphs
You can dump various graphs used in the analysis in the dot format. You can use any graph visualization tools (e.g., zgrviewer) to view these graphs.
Dump Callgraph
wpa -ander -dump-callgraph example.bc
wpa -fspta -dump-callgraph example.bc
Dump PAG (program assignment graph)
wpa -ander -dump-pag example.bc
Dump Constraint Graph
wpa -ander -dump-constraint-graph example.bc
Dump Value-Flow Graph
wpa -ander -svfg -dump-vfg example.bc
Dump Memory SSA
wpa -ander -svfg -dump-mssa example.bc
Print statistics
wpa -ander -stat example.bc
wpa -fspta -stat example.bc
Output after analyzing 181.mcf from CPU2000 using Andersen's analysis:
****CallGraph SCC Stat****
################ (program : )###############
-------------------------------------------------------
TotalNode 40
TotalEdge 83
TotalCycle 1
NodeInCycle 1
MaxNodeInCycle 1
#######################################################
****Andersen Pointer Analysis Statistics****
################ (program : )###############
TotalPointers 4114
TotalObjects 244
TotalFieldObjects 294
MaxStructSize 28
TotalEdges 4686
FunctionObjs 40
GlobalObjs 9
HeapObjs 6
StackObjs 187
FIObjNum 0
FSObjNum 242
VarStructObj 2
VarArrayObj 3
ConstStructObj 0
ConstArrayObj 0
NonPtrObj 121
AddrsNum 273
LoadsNum 935
StoresNum 305
CopysNum 289
GepsNum 492
CallsNum 47
ReturnsNum 2
IndCallSites 0
LocalVarInRecur 6
BitCastNumber 38
BBWith2Succ 177
BBWith3Succ 1
-------------------------------------------------------
CollapseTime 0
TotalTime 0.25
SCCDetectTime 0.102
SCCMergeTime 0.025
LoadStoreTime 0.013
CopyGepTime 0.094
UpdateCGTime 0
AvgPtsSetSize 0.581672
AvgTopLvlPtsSize 1.20069
CGNodeNum 4306
PointsToConstPtr 0
PointsToBlkPtr 0
TotalPointers 4114
TotalObjects 538
TotalEdges 2992
AddrsNum 244
LoadsNum 908
StoresNum 272
CopysNum 1320
GepsNum 492
AddrProcessed 273
LoadProcessed 957
StoreProcessed 330
CopyProcessed 9296
GepProcessed 3936
Pointers 4098
DYFieldPtrs 16
MemObjects 244
DYFieldObjs 294
MaxPtsSetSize 3
Iterations 8
IndCallSites 0
IndEdgeSolved 0
NumOfSCCDetect 8
TotalCycleNum 27
TotalPWCCycleNum 0
NodesInCycles 184
MaxNodesInSCC 47
Output after analyzing 181.mcf from CPU2000 using the Flow-sensitive analysis:
****Memory SSA Statistics****
################ (program : )###############
-------------------------------------------------------
TotalMSSATime 0.056
GenRegionTime 0.033
GenMUCHITime 0.016
InsertPHITime 0.005
SSARenameTime 0
AverageRegSize 1.34
MaxRegSize 8
MemRegions 150
FunEntryChi 250
FunRetMu 250
CSChiNode 63
CSMuNode 118
LoadMuNode 906
StoreChiNode 294
MSSAPhi 282
FunHasEntryChi 26
FunHasRetMu 26
CSHasChi 22
CSHasMu 30
LoadHasMu 935
StoreHasChi 305
BBHasMSSAPhi 96
#######################################################
****SVFG Statistics****
################ (program : )###############
-------------------------------------------------------
TotalTime 0.087
ConnDirEdgeTime 0.004
ConnIndEdgeTime 0.009
TLNodeTime 0.003
ATNodeTime 0.002
OptTime 0.011
AvgWeight 1.13971
MSSAPhi 135
TotalNode 2577
FormalIn 88
FormalOut 0
FormalParam 0
FormalRet 0
ActualIn 0
ActualOut 18
ActualParam 0
ActualRet 0
Addr 273
Copy 289
Gep 492
Store 305
Load 935
PHI 41
TotalEdge 4415
DirectEdge 2375
IndirectEdge 2040
IndCallEdge 272
IndRetEdge 114
DirectCallEdge 47
DirectRetEdge 2
AvgInDegree 1
AvgOutDegree 1
MaxInDegree 7
MaxOutDegree 63
AvgIndInDeg 1
AvgIndOutDeg 4
MaxIndInDeg 7
MaxIndOutDeg 57
#######################################################
****CallGraph SCC Stat****
################ (program : )###############
-------------------------------------------------------
TotalNode 40
TotalEdge 83
TotalCycle 1
NodeInCycle 1
MaxNodeInCycle 1
CalRetPairInCycle 2
#######################################################
****Flow-Sensitive Pointer Analysis Statistics****
################ (program : )###############
TotalPointers 4114
TotalObjects 244
TotalFieldObjects 294
MaxStructSize 28
TotalEdges 4686
FunctionObjs 40
GlobalObjs 9
HeapObjs 6
StackObjs 187
FIObjNum 0
FSObjNum 242
VarStructObj 2
VarArrayObj 3
ConstStructObj 0
ConstArrayObj 0
NonPtrObj 121
AddrsNum 273
LoadsNum 935
StoresNum 305
CopysNum 289
GepsNum 492
CallsNum 47
ReturnsNum 2
IndCallSites 0
LocalVarInRecur 6
BitCastNumber 38
BBWith2Succ 177
BBWith3Succ 1
-------------------------------------------------------
SolveTime 0.054
SCCTime 0.01
ProcessTime 0.023
PropagationTime 0.007
DirectPropaTime 0.001
IndirectPropaTime 0.004
UpdateTime 0.001
AddrTime 0
CopyGepTime 0.008
LoadTime 0.006
StoreTime 0
UpdateCGTime 0
AvgPtsSize 1.18989
AvgTopLvlPtsSize 1.11001
AvgAddrTakenVarPts 1.1
AvgINPtsSize 1.29249
AvgOUTPtsSize 1.26568
AverageSCCSize 11.4902
TotalTime 0.065
PointsToConstPtr 0
PointsToBlkPtr 0
StrongUpdates 218
SNodesHaveIN 1213
SNodesHaveOUT 253
FI_SNodesHaveIN 68
FI_SNodesHaveOUT 0
FO_SNodesHaveIN 0
FO_SNodesHaveOUT 0
AI_SNodesHaveIN 0
AI_SNodesHaveOUT 0
AO_SNodesHaveIN 18
AO_SNodesHaveOUT 0
LD_SNodesHaveIN 831
LD_SNodesHaveOUT 0
ST_SNodesHaveIN 175
ST_SNodesHaveOUT 253
PHI_SNodesHaveIN 121
PHI_SNodesHaveOUT 0
VarHaveIN 1371
VarHaveOUT 271
VarHaveIN_FI 98
VarHaveOUT_FI 0
VarHaveIN_FO 0
VarHaveOUT_FO 0
VarHaveIN_AI 0
VarHaveOUT_AI 0
VarHaveIN_AO 39
VarHaveOUT_AO 0
VarHaveIN_LD 866
VarHaveOUT_LD 0
VarHaveIN_ST 193
VarHaveOUT_ST 271
VarHaveIN_PHI 175
VarHaveOUT_PHI 0
MaxPtsSize 3
MaxTopLvlPtsSize 3
MaxINPtsSize 3
MaxOUTPtsSize 3
NumOfAddrTakenVar 310
MaxAddrTakenVarPts 3
ProcessedAddr 273
ProcessedCopy 643
ProcessedGep 1018
ProcessedLoad 2513
ProcessedStore 954
ProcessedPhi 91
ProcessedAParam 0
ProcessedFRet 0
ProcessedMSSANode 570
NumOfNodesInSCC 586
MaxSCCSize 199
NumOfSCC 51
TotalPointers 4114
TotalObjects 538
StoresNum 305
CopysNum 289
Pointers 4098
DYFieldPtrs 16
MemObjects 244
DYFieldObjs 294
Iterations 1
IndEdgeSolved 0
#######################################################
Print Points-to Results
wpa -ander -print-pts example.bc
wpa -fspta -print-pts example.bc