11 "how time should be measured",
21 "Only measure times where explicitly marked",
27 "Method of allocating (LLVM) values and memory objects as node IDs",
39 "Maximum number of fields for field sensitive analysis",
45 "Overarching points-to data structure",
55 "time limit for main phase of flow-sensitive analyses",
61 "number of threads to use in the versioning phase of versioned flow-sensitive analysis",
67 "time limit for Andersen's analyses (ignored when -fs-time-limit set)",
74 "Maximum step budget of context-sensitive traversing",
81 "Maximum path limit for DDA",
87 "Maximum context limit for DDA",
93 "Maximum steps when traversing on SVFG to identify a memory allocation wrapper",
99 "Please specify queries by inputing their pointer ids",
105 "Mark context insensitive SVFG edges due to function recursions",
111 "Mark context insensitive SVFG edges due to value-flow cycles",
117 "Dump conditional points-to set ",
123 "Dump queries' conditional points-to set ",
129 "collect WPA FS number only ",
136 "Select pointer analysis",
146 "Maximum step budget of flow-sensitive traversing",
154 "Dump dot graph of Offline Constraint Graph",
162 "Handle blackhole edge",
168 "Treat base objects as their first fields",
176 "Reduce SVFG into a context-insensitive one",
182 "Keep formal-in and actual-out parameters",
188 "How to handle self cycle edges: all, context, none",
196 "Dump dot graph of VFG",
210 "Print targets of indirect call site",
216 "Print points-to set of top-level pointers",
222 "Print field object with base object id as the prefix",
228 "Print all points-to set of both top-level and address-taken variables",
234 "Statistic for Pointer analysis",
240 "Iteration budget for On-the-fly statistics",
246 "Dump dot graph of SVFIR",
252 "Show values of SVFIR (e.g., when generating dot graph)",
258 "Dump dot graph of ICFG",
264 "Dump the SVFIR in JSON format",
270 "Read the SVFIR in JSON format",
276 "Dump dot graph of Call Graph",
282 "Print SVFIR to command line",
288 "Indirect solved call edge limit",
293 "pre-field-sensitive",
294 "Use pre-computed field-sensitivity for later analysis",
300 "Enable alias check functions",
306 "Enable type check functions",
312 "Enable pointer analysis to use thread call graph",
318 "connect virtual calls using cha",
326 "Enable incremental DFPTData for flow-sensitive analysis",
332 "Stage Andersen's with Steensgard's and cluster based on that",
338 "Cluster for FS/VFS with auxiliary Andersen's",
344 "Use an explicitly (not null) plain mapping for FS",
350 "points-to set data structure to use in all analyses",
353 {PointsTo::Type::SBV,
"sbv",
"sparse bit-vector"},
354 {PointsTo::Type::CBV,
"cbv",
"core bit-vector (dynamic bit-vector without leading and trailing 0s)"},
355 {PointsTo::Type::BV,
"bv",
"bit-vector (dynamic bit-vector without trailing 0s)"},
361 "hierarchical clustering method for objects",
374 "cluster regions separately",
379 "cluster-region-aligned",
380 "align each region's identifiers to the native word size",
385 "cluster-predict-occ",
386 "try to predict which points-to sets are more important in staged analysis",
392 "mssa-ignore-dead-fun",
393 "Don't construct memory SSA for deadfunction",
407 "Please specify which function needs to be dumped",
413 "Memory region partition strategies (e.g., for SVFG construction)",
425 "svfg-with-ind-call",
426 "Update Indirect Calls for SVFG using pre-analysis",
432 "Optimize SVFG to eliminate formal-in and actual-out",
438 "Write SVFG's analysis results to a file",
444 "Read SVFG's analysis results from a file",
450 "intra-lock-td-edge",
451 "Use simple intra-procedural lock for adding SVFG edges",
459 "Print Thread Interleaving Results",
467 "Print Thread Interleaving Results",
481 "All pair MHP computation",
489 "Dump dot graph of Call Graph",
497 "Validate memory leak tests",
505 "Dump dot graph of Saber Slices",
511 "Source-Sink Analysis Contexts Limit",
519 "dump the class hierarchy graph",
527 "print the DCHG if debug information is available",
535 "graph txt file to build SVFIR",
547 "Modeling individual constant objects",
553 "Modeling Gep offsets for array accesses",
558 "cyclic-field-index",
559 "Enable cyclic field index when generating field objects using modulus offset",
564 "print-symbol-table",
565 "Print Symbol Table to command line",
572 "Maximum size limit for Z3 expression",
579 "Maximum length limit for Z3 bitvector",
588 "Print out path condition",
595 "saber-collect-extret-globals",
596 "Don't include pointers returned by external function during collecting globals",
611 "dump-constraint-graph",
612 "Dump dot graph of Constraint Graph",
617 "brief-constraint-graph",
618 "Dump dot graph of Constraint Graph",
623 "print-constraint-graph",
624 "Print Constraint Graph to Terminal",
630 "-write-ander=ir_annotator (Annotated IR with Andersen's results) or write Andersen's analysis results to a user-specified text file",
636 "-read-ander=ir_annotator (Read Andersen's analysis results from the annotated IR, e.g., *.pre.bc) or from a text file",
642 "Enable differential point-to set",
648 "Enable PWC detection",
655 "Handle vtable in ConstantArray/ConstantStruct in SVFIRBuilder (already handled in CHA?)",
662 "External API extapi.bc",
668 "Generate SVFG after Andersen's Analysis",
674 "When using SABER for bug detection pass, enable full svfg on top of the pointer-only one",
680 "Print results for all pair aliases",
685 "Select pointer analysis",
701 "Select alias check rule",
704 {
WPAPass::Veto,
"veto",
"return NoAlias if any pta says no alias"},
710 "Show hidden nodes on DOT Graphs (e.g., isolated node on a graph)",
716 "<Grammar textfile>",
722 "<Dot file as the CFLGraph input>",
728 "Print ir, grammar and cflgraph for debug.",
734 "Extend exist sym map while read graph from dot if sym not in map.",
740 "When explicit to true, cfl graph builder will transfer PAG load and store edges to copy and addr.",
746 "When explicit to true, cfl graph builder will transfer SVFG to CFL Reachability.",
752 "When explicit to true, cfl data builder will transfer CFL graph to CFLData.",
758 "When explicit to true, POCRHybridSolver transfer CFL graph to internal hybrid graph representation.",
764 "When explicit to true, user can use any grammar file.",
770 "Analyze every func and get loop info and loop bounds.",
776 "Maximum number of loop",
781 "widen-delay",
"Loop Widen Delay", 3);
783 "timeout",
"time out (seconds), set -1 (no timeout), default 14400s",14400);
785 "output",
"output db file",
"output.db");
787 "overflow",
"Buffer Overflow Detection",
false);
789 "leak",
"Memory Leak Detection",
false);
791 "fileck",
"File Open/Close Detection",
false);
793 "dfree",
"Double Free Detection",
false);
795 "race",
"Data race Detection",
false);
797 "gep-unknown-idx",
"Skip Gep Unknown Index",
false);
799 "run-uncall-fun",
"Skip Gep Unknown Index",
false);
801 "icfg-merge-adjnodes",
"ICFG Simplification - Merge Adjacent Nodes in the Same Basic Block.",
false);
806 "symbolic abstraction precision for float",
@ SEQ
Allocate objects objects and values sequentially, intermixed.
static const Option< bool > IgnoreDeadFun
static const Option< bool > PlainMappingFs
Use an explicitly plain mapping with flow-sensitive (not null).
static const Option< std::string > ReadSVFG
static const Option< bool > SVFGWithIndirectCall
static const Option< bool > KeepAOFI
static const Option< bool > CallGraphDotGraph
static const Option< bool > DumpMSSA
static const Option< bool > InsenCycle
static const Option< bool > FirstFieldEqBase
static const Option< bool > Customized
static const Option< bool > DisableWarn
static const Option< bool > INCDFPTData
static const Option< u32_t > LoopBound
static const Option< bool > ModelConsts
static const Option< bool > PrintInterLev
static const Option< bool > EnableThreadCallGraph
static const Option< bool > PAGDotGraph
static const Option< bool > BriefConsCGDotGraph
static const Option< std::string > WriteSVFG
static const OptionMap< enum PTAStat::ClockType > ClockType
static OptionMultiple< WPAPass::AliasCheckRule > AliasRule
static const Option< std::string > ExtAPIPath
static const Option< bool > RaceCheck
data race checker, Default: false
static const Option< bool > POCRAlias
static const Option< bool > EnableTypeCheck
static const Option< bool > PrintLockSpan
static const Option< u32_t > AnderTimeLimit
Time limit for the Andersen's analyses.
static const OptionMap< SVF::NodeIDAllocator::Strategy > NodeAllocStrat
static const Option< bool > POCRHybrid
static const Option< bool > CyclicFldIdx
static const Option< bool > DFreeCheck
double free checker, Default: false
static const Option< bool > SVFMain
static const Option< u32_t > CxtBudget
static const Option< std::string > DumpJson
static Option< bool > DetectPWC
static const Option< u32_t > CxtLimit
static const Option< bool > PrintFieldWithBasePrefix
static const Option< bool > ShowSVFIRValue
static const Option< bool > PTSPrint
static const Option< bool > ModelArrays
static const Option< std::string > ReadAnder
static const Option< bool > ClusterAnder
Whether to stage Andersen's with Steensgaard and cluster based on that data.
static OptionMultiple< PointerAnalysis::PTATY > PASelected
static const Option< bool > PEGTransfer
static const Option< u32_t > Timeout
the max time consumptions (seconds). Default: 4 hours 14400s
static Option< bool > HandBlackHole
static const Option< bool > SymTabPrint
static const Option< std::string > Graphtxt
static const OptionMap< PointsTo::Type > PtType
Type of points-to set to use for all analyses.
static const Option< bool > RegionAlign
Align identifiers in each region to a word.
static const Option< std::string > UserInputQuery
static const Option< bool > EnableAliasCheck
static const Option< bool > PrintPathCond
static const Option< u32_t > MaxContextLen
static const Option< u32_t > MaxPathLen
static const Option< bool > GepUnknownIdx
if the access index of gepstmt is unknown, skip it, Default: false
static const Option< bool > FileCheck
file open close checker, Default: false
static const Option< u32_t > FsTimeLimit
Time limit for the main phase (i.e., the actual solving) of FS analyses.
static const Option< u32_t > MaxBVLen
static const Option< bool > PTSAllPrint
static const Option< bool > UsePreCompFieldSensitive
static const Option< bool > ICFGMergeAdjacentNodes
static const Option< bool > WPANum
static const Option< bool > PAGPrint
static const Option< bool > CFLSVFG
static const Option< std::string > CFLGraph
static const Option< bool > TypePrint
static const Option< bool > ClusterFs
Whether to cluster FS or VFS with the auxiliary Andersen's.
static const Option< u32_t > MaxZ3Size
static const Option< bool > VtableInSVFIR
static const Option< u32_t > FlowBudget
static const Option< bool > RegionedClustering
Cluster partitions separately.
static const Option< bool > FlexSymMap
static const Option< u32_t > AEPrecision
static const Option< bool > SABERFULLSVFG
static const Option< bool > CollectExtRetGlobals
static const Option< bool > PrintCGGraph
static const Option< std::string > SelfCycle
static const Option< bool > PrintCFL
static const OptionMap< MemSSA::MemPartition > MemPar
static const Option< u32_t > IndirectCallLimit
static const Option< std::string > MSSAFun
static const Option< bool > AllPairMHP
static const Option< u32_t > MaxFieldLimit
Maximum number of field derivations for an object.
static const Option< u32_t > MaxStepInWrapper
static const Option< bool > PrintDCHG
static const Option< std::string > WriteAnder
static const Option< u32_t > WidenDelay
static Option< bool > OPTSVFG
static const Option< bool > DumpSlice
static const Option< bool > FuncPointerPrint
static const Option< bool > RunUncallFuncs
static const Option< bool > MarkedClocksOnly
static const Option< bool > PrintCPts
static const Option< bool > ConnectVCallOnCHA
static const Option< bool > LoopAnalysis
static const OptionMap< enum hclust_fast_methods > ClusterMethod
static const Option< bool > PrintAliases
static const Option< bool > PStat
static const Option< bool > ValidateTests
static const Option< std::string > GrammarFilename
static const Option< u32_t > StatBudget
static const Option< bool > OCGDotGraph
static const Option< bool > ConsCGDotGraph
static const Option< std::string > OutputName
bug info output file, Default: output.db
static const Option< bool > TCTDotGraph
static const Option< bool > ShowHiddenNode
static const Option< bool > ReadJson
static const Option< bool > DoLockAnalysis
static const Option< bool > DumpVFG
static const OptionMap< BVDataPTAImpl::PTBackingType > ptDataBacking
PTData type.
static const Option< bool > ContextInsensitive
static const Option< bool > MemoryLeakCheck
memory leak check, Default: false
static const Option< bool > DiffPts
static const Option< bool > DumpICFG
static const Option< bool > PrintQueryPts
static const Option< bool > AnderSVFG
static const Option< bool > InsenRecur
static const Option< bool > PredictPtOcc
static const Option< bool > IntraLock
static OptionMultiple< PointerAnalysis::PTATY > DDASelected
register this into alias analysis group
static const Option< bool > BufferOverflowCheck
buffer overflow checker, Default: false
static const Option< bool > DumpCHA
static const Option< u32_t > VersioningThreads
Number of threads for the versioning phase.
@ Cxt_DDA
context sensitive DDA
@ VFS_WPA
Versioned sparse flow-sensitive WPA.
@ AndersenSCD_WPA
Selective cycle detection andersen-style WPA.
@ FlowS_DDA
Flow sensitive DDA.
@ Andersen_WPA
Andersen PTA.
@ AndersenWaveDiff_WPA
Diff wave propagation andersen-style WPA.
@ TypeCPP_WPA
Type-based analysis for C++.
@ AndersenSFR_WPA
Stride-based field representation.
@ Steensgaard_WPA
Steensgaard PTA.
@ FSSPARSE_WPA
Sparse flow sensitive WPA.
@ Conservative
return MayAlias if any pta says alias
@ Veto
return NoAlias if any pta says no alias