Static Value-Flow Analysis
Options.h
Go to the documentation of this file.
1 //===- Options.h -- Command line options ------------------------//
2 
3 #ifndef OPTIONS_H_
4 #define OPTIONS_H_
5 
6 #include <sstream>
8 #include "Util/CommandLine.h"
9 #include "Util/PTAStat.h"
11 #include "Util/NodeIDAllocator.h"
12 #include "MSSA/MemSSA.h"
13 #include "WPA/WPAPass.h"
14 
15 namespace SVF
16 {
17 
19 class Options
20 {
21 public:
22  Options(void) = delete;
23 
25 
32 
36 
39 
41  static const Option<bool> ClusterAnder;
42 
44  static const Option<bool> ClusterFs;
45 
48 
51 
57 
60 
62  static const Option<bool> RegionAlign;
63 
66  static const Option<bool> PredictPtOcc;
67 
70 
72  static const Option<u32_t> FsTimeLimit;
73 
76 
79 
80  // ContextDDA.cpp
81  static const Option<u32_t> CxtBudget;
82 
83  // DDAPass.cpp
84  static const Option<u32_t> MaxPathLen;
88  static const Option<bool> InsenRecur;
89  static const Option<bool> InsenCycle;
90  static const Option<bool> PrintCPts;
92  static const Option<bool> WPANum;
94 
95  // FlowDDA.cpp
96  static const Option<u32_t> FlowBudget;
97 
98  // Offline constraint graph (OfflineConsG.cpp)
99  static const Option<bool> OCGDotGraph;
100 
101  // Program Assignment Graph for pointer analysis (SVFIR.cpp)
104 
105  // SVFG optimizer (SVFGOPT.cpp)
107  static const Option<bool> KeepAOFI;
109 
110  // Sparse value-flow graph (VFG.cpp)
111  static const Option<bool> DumpVFG;
112 
113  // Base class of pointer analyses (PointerAnalysis.cpp)
114  static const Option<bool> TypePrint;
116  static const Option<bool> PTSPrint;
117  static const Option<bool> PTSAllPrint;
119  static const Option<bool> PStat;
120  static const Option<u32_t> StatBudget;
121  static const Option<bool> PAGDotGraph;
123  static const Option<bool> DumpICFG;
125  static const Option<bool> ReadJson;
127  static const Option<bool> PAGPrint;
134 
135  // PointerAnalysisImpl.cpp
136  static const Option<bool> INCDFPTData;
137 
138  // Memory region (MemRegion.cpp)
140 
141  // Base class of pointer analyses (MemSSA.cpp)
142  static const Option<bool> DumpMSSA;
144  // static const llvm::cl::opt<string> MSSAFun;
146 
147  // SVFG builder (SVFGBuilder.cpp)
150 
153 
154  // LockAnalysis.cpp
155  static const Option<bool> IntraLock;
157 
158  // MHP.cpp
161 
162  //MTAStat.cpp
163  static const Option<bool> AllPairMHP;
164 
165  // TCT.cpp
166  static const Option<bool> TCTDotGraph;
167 
168  // LeakChecker.cpp
170 
171  // Source-sink analyzer (SrcSnkDDA.cpp)
172  static const Option<bool> DumpSlice;
173  static const Option<u32_t> CxtLimit;
174 
175  // CHG.cpp
176  static const Option<bool> DumpCHA;
177 
178  // DCHG.cpp
179  static const Option<bool> PrintDCHG;
180 
181  // LLVMModule.cpp
183  static const Option<bool> SVFMain;
184 
185  // SymbolTableInfo.cpp
186  static const Option<bool> LocMemModel;
187  static const Option<bool> ModelConsts;
188  static const Option<bool> ModelArrays;
190  static const Option<bool> SymTabPrint;
191 
192  // Conditions.cpp
193  static const Option<u32_t> MaxZ3Size;
194 
195  // BoundedZ3Expr.cpp
196  static const Option<u32_t> MaxBVLen;
197 
198  // SaberCondAllocator.cpp
200 
201  // SaberSVFGBuilder.cpp
203 
204  // SVFUtil.cpp
205  static const Option<bool> DisableWarn;
206 
207  // Andersen.cpp
211  // static const Option<string> WriteAnder;
213  // static const Option<string> ReadAnder;
215  static const Option<bool> DiffPts;
218 
219  // WPAPass.cpp
221  static const Option<bool> AnderSVFG;
226 
227  // DOTGraphTraits
229 
230  // CFL option
233  static const Option<bool> PrintCFL;
234  static const Option<bool> FlexSymMap;
235  static const Option<bool> PEGTransfer;
236  static const Option<bool> CFLSVFG;
237  static const Option<bool> POCRAlias;
238  static const Option<bool> POCRHybrid;
239  static const Option<bool> Customized;
240 
241  // Loop Analysis
243  static const Option<u32_t> LoopBound;
244 
245  // Abstract Execution
246  static const Option<u32_t> WidenDelay;
248  static const Option<u32_t> Timeout;
256  static const Option<bool> FileCheck;
258  static const Option<bool> DFreeCheck;
260  static const Option<bool> RaceCheck;
264 
266 
267  // float precision for symbolic abstraction
269 };
270 } // namespace SVF
271 
272 #endif // ifdef OPTIONS_H_
Carries around command line options.
Definition: Options.h:20
static const Option< bool > IgnoreDeadFun
Definition: Options.h:139
static const Option< bool > PlainMappingFs
Use an explicitly plain mapping with flow-sensitive (not null).
Definition: Options.h:47
static const Option< std::string > ReadSVFG
Definition: Options.h:152
static const Option< bool > SVFGWithIndirectCall
Definition: Options.h:148
Options(void)=delete
static const Option< bool > KeepAOFI
Definition: Options.h:107
static const Option< bool > CallGraphDotGraph
Definition: Options.h:126
static const Option< bool > DumpMSSA
Definition: Options.h:142
static const Option< bool > InsenCycle
Definition: Options.h:89
static const Option< bool > FirstFieldEqBase
Definition: Options.h:103
static const Option< bool > Customized
Definition: Options.h:239
static const Option< bool > DisableWarn
Definition: Options.h:205
static const Option< bool > INCDFPTData
Definition: Options.h:136
static const Option< u32_t > LoopBound
Definition: Options.h:243
static const Option< bool > ModelConsts
Definition: Options.h:187
static const Option< bool > LocMemModel
Definition: Options.h:186
static const Option< bool > PrintInterLev
Definition: Options.h:159
static const Option< bool > EnableThreadCallGraph
Definition: Options.h:132
static const Option< bool > PAGDotGraph
Definition: Options.h:121
static const Option< bool > BriefConsCGDotGraph
Definition: Options.h:209
static const Option< std::string > WriteSVFG
Definition: Options.h:151
static const OptionMap< enum PTAStat::ClockType > ClockType
Definition: Options.h:24
static OptionMultiple< WPAPass::AliasCheckRule > AliasRule
Definition: Options.h:225
static const Option< std::string > ExtAPIPath
Definition: Options.h:220
static const Option< bool > RaceCheck
data race checker, Default: false
Definition: Options.h:260
static const Option< bool > POCRAlias
Definition: Options.h:237
static const Option< bool > EnableTypeCheck
Definition: Options.h:131
static const Option< bool > PrintLockSpan
Definition: Options.h:156
static const Option< u32_t > AnderTimeLimit
Time limit for the Andersen's analyses.
Definition: Options.h:75
static const OptionMap< SVF::NodeIDAllocator::Strategy > NodeAllocStrat
Definition: Options.h:35
static const Option< bool > POCRHybrid
Definition: Options.h:238
static const Option< bool > CyclicFldIdx
Definition: Options.h:189
static const Option< bool > DFreeCheck
double free checker, Default: false
Definition: Options.h:258
static const Option< bool > SVFMain
Definition: Options.h:183
static const Option< u32_t > CxtBudget
Definition: Options.h:81
static const Option< std::string > DumpJson
Definition: Options.h:124
static Option< bool > DetectPWC
Definition: Options.h:216
static const Option< u32_t > CxtLimit
Definition: Options.h:173
static const Option< bool > PrintFieldWithBasePrefix
Definition: Options.h:118
static const Option< bool > ShowSVFIRValue
Definition: Options.h:122
static const Option< bool > PTSPrint
Definition: Options.h:116
static const Option< bool > ModelArrays
Definition: Options.h:188
static const Option< std::string > ReadAnder
Definition: Options.h:214
static const Option< bool > ClusterAnder
Whether to stage Andersen's with Steensgaard and cluster based on that data.
Definition: Options.h:41
static OptionMultiple< PointerAnalysis::PTATY > PASelected
Definition: Options.h:224
static const Option< bool > PEGTransfer
Definition: Options.h:235
static const Option< u32_t > Timeout
the max time consumptions (seconds). Default: 4 hours 14400s
Definition: Options.h:248
static Option< bool > HandBlackHole
Definition: Options.h:102
static const Option< bool > SymTabPrint
Definition: Options.h:190
static const Option< std::string > Graphtxt
Definition: Options.h:182
static const OptionMap< PointsTo::Type > PtType
Type of points-to set to use for all analyses.
Definition: Options.h:50
static const Option< bool > RegionAlign
Align identifiers in each region to a word.
Definition: Options.h:62
static const Option< std::string > UserInputQuery
Definition: Options.h:87
static const Option< bool > EnableAliasCheck
Definition: Options.h:130
static const Option< bool > PrintPathCond
Definition: Options.h:199
static const Option< u32_t > MaxContextLen
Definition: Options.h:85
static const Option< u32_t > MaxPathLen
Definition: Options.h:84
static const Option< bool > GepUnknownIdx
if the access index of gepstmt is unknown, skip it, Default: false
Definition: Options.h:262
static const Option< bool > FileCheck
file open close checker, Default: false
Definition: Options.h:256
static const Option< u32_t > FsTimeLimit
Time limit for the main phase (i.e., the actual solving) of FS analyses.
Definition: Options.h:72
static const Option< u32_t > MaxBVLen
Definition: Options.h:196
static const Option< bool > PTSAllPrint
Definition: Options.h:117
static const Option< bool > UsePreCompFieldSensitive
Definition: Options.h:129
static const Option< bool > ICFGMergeAdjacentNodes
Definition: Options.h:265
static const Option< bool > WPANum
Definition: Options.h:92
static const Option< bool > PAGPrint
Definition: Options.h:127
static const Option< bool > CFLSVFG
Definition: Options.h:236
static const Option< std::string > CFLGraph
Definition: Options.h:232
static const Option< bool > TypePrint
Definition: Options.h:114
static const Option< bool > ClusterFs
Whether to cluster FS or VFS with the auxiliary Andersen's.
Definition: Options.h:44
static const Option< u32_t > MaxZ3Size
Definition: Options.h:193
static const Option< bool > VtableInSVFIR
Definition: Options.h:217
static const Option< u32_t > FlowBudget
Definition: Options.h:96
static const Option< bool > RegionedClustering
Cluster partitions separately.
Definition: Options.h:59
static const Option< bool > FlexSymMap
Definition: Options.h:234
static const Option< u32_t > AEPrecision
Definition: Options.h:268
static const Option< bool > SABERFULLSVFG
Definition: Options.h:222
static const Option< bool > CollectExtRetGlobals
Definition: Options.h:202
static const Option< bool > PrintCGGraph
Definition: Options.h:210
static const Option< std::string > SelfCycle
Definition: Options.h:108
static const Option< bool > PrintCFL
Definition: Options.h:233
static const OptionMap< MemSSA::MemPartition > MemPar
Definition: Options.h:145
static const Option< u32_t > IndirectCallLimit
Definition: Options.h:128
static const Option< std::string > MSSAFun
Definition: Options.h:143
static const Option< bool > AllPairMHP
Definition: Options.h:163
static const Option< u32_t > MaxFieldLimit
Maximum number of field derivations for an object.
Definition: Options.h:38
static const Option< u32_t > MaxStepInWrapper
Definition: Options.h:86
static const Option< bool > PrintDCHG
Definition: Options.h:179
static const Option< std::string > WriteAnder
Definition: Options.h:212
static const Option< u32_t > WidenDelay
Definition: Options.h:246
static Option< bool > OPTSVFG
Definition: Options.h:149
static const Option< bool > DumpSlice
Definition: Options.h:172
static const Option< bool > FuncPointerPrint
Definition: Options.h:115
static const Option< bool > RunUncallFuncs
Definition: Options.h:263
static const Option< bool > MarkedClocksOnly
Definition: Options.h:31
static const Option< bool > PrintCPts
Definition: Options.h:90
static const Option< bool > ConnectVCallOnCHA
Definition: Options.h:133
static const Option< bool > LoopAnalysis
Definition: Options.h:242
static const OptionMap< enum hclust_fast_methods > ClusterMethod
Definition: Options.h:56
static const Option< bool > PrintAliases
Definition: Options.h:223
static const Option< bool > PStat
Definition: Options.h:119
static const Option< bool > ValidateTests
Definition: Options.h:169
static const Option< std::string > GrammarFilename
Definition: Options.h:231
static const Option< u32_t > StatBudget
Definition: Options.h:120
static const Option< bool > OCGDotGraph
Definition: Options.h:99
static const Option< bool > ConsCGDotGraph
Definition: Options.h:208
static const Option< std::string > OutputName
bug info output file, Default: output.db
Definition: Options.h:250
static const Option< bool > TCTDotGraph
Definition: Options.h:166
static const Option< bool > ShowHiddenNode
Definition: Options.h:228
static const Option< bool > ReadJson
Definition: Options.h:125
static const Option< bool > DoLockAnalysis
Definition: Options.h:160
static const Option< bool > DumpVFG
Definition: Options.h:111
static const OptionMap< BVDataPTAImpl::PTBackingType > ptDataBacking
PTData type.
Definition: Options.h:69
static const Option< bool > ContextInsensitive
Definition: Options.h:106
static const Option< bool > MemoryLeakCheck
memory leak check, Default: false
Definition: Options.h:254
static const Option< bool > DiffPts
Definition: Options.h:215
static const Option< bool > DumpICFG
Definition: Options.h:123
static const Option< bool > PrintQueryPts
Definition: Options.h:91
static const Option< bool > AnderSVFG
Definition: Options.h:221
static const Option< bool > InsenRecur
Definition: Options.h:88
static const Option< bool > PredictPtOcc
Definition: Options.h:66
static const Option< bool > IntraLock
Definition: Options.h:155
static OptionMultiple< PointerAnalysis::PTATY > DDASelected
register this into alias analysis group
Definition: Options.h:93
static const Option< bool > BufferOverflowCheck
buffer overflow checker, Default: false
Definition: Options.h:252
static const Option< bool > DumpCHA
Definition: Options.h:176
static const Option< u32_t > VersioningThreads
Number of threads for the versioning phase.
Definition: Options.h:78
for isBitcode
Definition: BasicTypes.h:68