svf-tools 1.0.619 → 1.0.621
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/AndersenSCD_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/Andersen_8h_source.html +4 -3
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +9 -4
- package/SVF-doxygen/html/html/CFLAlias_8h.html +4 -0
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +19 -10
- package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CFLBase_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLDataBuilder_8h.html +96 -0
- package/SVF-doxygen/html/html/CFLDataBuilder_8h_source.html +99 -0
- package/SVF-doxygen/html/html/CFLData_8h.html +106 -0
- package/SVF-doxygen/html/html/CFLData_8h_source.html +136 -0
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/CFLSolver_8h.html +4 -0
- package/SVF-doxygen/html/html/CFLSolver_8h_source.html +22 -16
- package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CommandLine_8h.html +129 -0
- package/SVF-doxygen/html/html/CommandLine_8h_source.html +132 -0
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +20 -19
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +9 -9
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/GraphWriter_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/GraphWriter_8h_source.html +2 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +21 -20
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +17 -17
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/Options_8cpp.html +1 -0
- package/SVF-doxygen/html/html/Options_8cpp_source.html +124 -119
- package/SVF-doxygen/html/html/Options_8h.html +1 -1
- package/SVF-doxygen/html/html/Options_8h_source.html +125 -120
- package/SVF-doxygen/html/html/PCG_8cpp.html +2 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +13 -12
- package/SVF-doxygen/html/html/PCG_8h_source.html +12 -12
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +4 -3
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +5 -4
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFType_8h.html +2 -2
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +10 -9
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +4 -4
- package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/annotated.html +363 -353
- package/SVF-doxygen/html/html/cfl_8cpp.html +3 -85
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +3 -5
- package/SVF-doxygen/html/html/classOption-members.html +99 -0
- package/SVF-doxygen/html/html/classOption.html +567 -0
- package/SVF-doxygen/html/html/classOption.png +0 -0
- package/SVF-doxygen/html/html/classOptionBase-members.html +95 -0
- package/SVF-doxygen/html/html/classOptionBase.html +823 -0
- package/SVF-doxygen/html/html/classOptionBase.png +0 -0
- package/SVF-doxygen/html/html/classOptionMap-members.html +97 -0
- package/SVF-doxygen/html/html/classOptionMap.html +428 -0
- package/SVF-doxygen/html/html/classOptionMap.png +0 -0
- package/SVF-doxygen/html/html/classOptionMultiple-members.html +97 -0
- package/SVF-doxygen/html/html/classOptionMultiple.html +460 -0
- package/SVF-doxygen/html/html/classOptionMultiple.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +16 -15
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +7 -6
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +33 -30
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +9 -8
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLData-members.html +110 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLData.html +1126 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLDataBuilder-members.html +88 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLDataBuilder.html +380 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +48 -39
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +72 -72
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +36 -35
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +22 -8
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GraphWriter.html +3 -2
- package/SVF-doxygen/html/html/classSVF_1_1HybridData-members.html +89 -0
- package/SVF-doxygen/html/html/classSVF_1_1HybridData.html +449 -0
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntervalExeState.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +73 -72
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +2 -2
- 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 +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +121 -120
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +641 -615
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1POCRAlias-members.html +281 -0
- package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.html +828 -0
- package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1POCRSolver-members.html +98 -0
- package/SVF-doxygen/html/html/classSVF_1_1POCRSolver.html +245 -0
- package/SVF-doxygen/html/html/classSVF_1_1POCRSolver.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +9 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +27 -26
- package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +6 -6
- package/SVF-doxygen/html/html/classes.html +110 -108
- package/SVF-doxygen/html/html/dda_8cpp.html +51 -248
- package/SVF-doxygen/html/html/dda_8cpp_source.html +9 -10
- package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
- package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +4 -0
- package/SVF-doxygen/html/html/files.html +27 -24
- package/SVF-doxygen/html/html/functions.html +7 -1
- package/SVF-doxygen/html/html/functions_0x7e.html +18 -0
- package/SVF-doxygen/html/html/functions_a.html +45 -21
- package/SVF-doxygen/html/html/functions_b.html +15 -7
- package/SVF-doxygen/html/html/functions_c.html +72 -49
- package/SVF-doxygen/html/html/functions_d.html +25 -16
- package/SVF-doxygen/html/html/functions_e.html +11 -4
- package/SVF-doxygen/html/html/functions_f.html +19 -16
- package/SVF-doxygen/html/html/functions_func.html +35 -11
- package/SVF-doxygen/html/html/functions_func_0x7e.html +18 -0
- package/SVF-doxygen/html/html/functions_func_b.html +11 -3
- package/SVF-doxygen/html/html/functions_func_c.html +55 -34
- package/SVF-doxygen/html/html/functions_func_e.html +5 -1
- package/SVF-doxygen/html/html/functions_func_f.html +4 -1
- package/SVF-doxygen/html/html/functions_func_g.html +26 -7
- package/SVF-doxygen/html/html/functions_func_h.html +10 -3
- package/SVF-doxygen/html/html/functions_func_i.html +25 -10
- package/SVF-doxygen/html/html/functions_func_m.html +3 -2
- package/SVF-doxygen/html/html/functions_func_n.html +4 -1
- package/SVF-doxygen/html/html/functions_func_o.html +23 -6
- package/SVF-doxygen/html/html/functions_func_p.html +15 -3
- package/SVF-doxygen/html/html/functions_func_s.html +20 -19
- package/SVF-doxygen/html/html/functions_func_t.html +3 -0
- package/SVF-doxygen/html/html/functions_func_u.html +3 -0
- package/SVF-doxygen/html/html/functions_g.html +28 -9
- package/SVF-doxygen/html/html/functions_h.html +13 -6
- package/SVF-doxygen/html/html/functions_i.html +44 -20
- package/SVF-doxygen/html/html/functions_k.html +1 -1
- package/SVF-doxygen/html/html/functions_l.html +4 -4
- package/SVF-doxygen/html/html/functions_m.html +14 -13
- package/SVF-doxygen/html/html/functions_n.html +9 -5
- package/SVF-doxygen/html/html/functions_o.html +48 -25
- package/SVF-doxygen/html/html/functions_p.html +65 -34
- package/SVF-doxygen/html/html/functions_r.html +7 -9
- package/SVF-doxygen/html/html/functions_s.html +34 -32
- package/SVF-doxygen/html/html/functions_t.html +17 -8
- package/SVF-doxygen/html/html/functions_type_c.html +2 -1
- package/SVF-doxygen/html/html/functions_type_d.html +3 -0
- package/SVF-doxygen/html/html/functions_type_i.html +2 -1
- package/SVF-doxygen/html/html/functions_type_o.html +7 -0
- package/SVF-doxygen/html/html/functions_type_p.html +6 -0
- package/SVF-doxygen/html/html/functions_type_t.html +3 -0
- package/SVF-doxygen/html/html/functions_u.html +6 -3
- package/SVF-doxygen/html/html/functions_v.html +7 -5
- package/SVF-doxygen/html/html/functions_vars.html +7 -1
- package/SVF-doxygen/html/html/functions_vars_a.html +7 -7
- package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_c.html +15 -12
- package/SVF-doxygen/html/html/functions_vars_d.html +21 -15
- package/SVF-doxygen/html/html/functions_vars_e.html +5 -2
- package/SVF-doxygen/html/html/functions_vars_f.html +6 -6
- package/SVF-doxygen/html/html/functions_vars_g.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_h.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_i.html +14 -6
- package/SVF-doxygen/html/html/functions_vars_k.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_l.html +4 -4
- package/SVF-doxygen/html/html/functions_vars_m.html +11 -11
- package/SVF-doxygen/html/html/functions_vars_n.html +3 -2
- package/SVF-doxygen/html/html/functions_vars_o.html +5 -2
- package/SVF-doxygen/html/html/functions_vars_p.html +34 -21
- package/SVF-doxygen/html/html/functions_vars_r.html +5 -5
- package/SVF-doxygen/html/html/functions_vars_s.html +13 -10
- package/SVF-doxygen/html/html/functions_vars_t.html +7 -4
- package/SVF-doxygen/html/html/functions_vars_u.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_v.html +6 -4
- package/SVF-doxygen/html/html/functions_vars_w.html +3 -3
- package/SVF-doxygen/html/html/functions_w.html +11 -7
- package/SVF-doxygen/html/html/globals_d.html +4 -4
- package/SVF-doxygen/html/html/globals_e.html +6 -6
- package/SVF-doxygen/html/html/globals_f.html +2 -2
- package/SVF-doxygen/html/html/globals_func.html +6 -58
- package/SVF-doxygen/html/html/globals_i.html +4 -12
- package/SVF-doxygen/html/html/globals_l.html +2 -2
- package/SVF-doxygen/html/html/globals_r.html +4 -4
- package/SVF-doxygen/html/html/globals_s.html +0 -4
- package/SVF-doxygen/html/html/globals_type.html +3 -0
- package/SVF-doxygen/html/html/globals_u.html +3 -0
- package/SVF-doxygen/html/html/globals_vars.html +43 -12
- package/SVF-doxygen/html/html/hierarchy.html +517 -496
- package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/menudata.js +1 -2
- package/SVF-doxygen/html/html/mta_8cpp.html +4 -47
- package/SVF-doxygen/html/html/mta_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/namespaceSVF.html +29 -0
- package/SVF-doxygen/html/html/namespaceSVF_1_1DOT.html +3 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_l.html +3 -0
- package/SVF-doxygen/html/html/namespacemembers_type_l.html +3 -0
- package/SVF-doxygen/html/html/saber_8cpp.html +38 -136
- package/SVF-doxygen/html/html/saber_8cpp_source.html +8 -7
- package/SVF-doxygen/html/html/search/all_0.js +2 -1
- package/SVF-doxygen/html/html/search/all_1.js +15 -8
- package/SVF-doxygen/html/html/search/all_10.js +33 -25
- package/SVF-doxygen/html/html/search/all_11.js +9 -9
- package/SVF-doxygen/html/html/search/all_12.js +22 -22
- package/SVF-doxygen/html/html/search/all_13.js +14 -11
- package/SVF-doxygen/html/html/search/all_14.js +5 -4
- package/SVF-doxygen/html/html/search/all_15.js +5 -5
- package/SVF-doxygen/html/html/search/all_16.js +4 -4
- package/SVF-doxygen/html/html/search/all_19.js +6 -0
- package/SVF-doxygen/html/html/search/all_2.js +5 -3
- package/SVF-doxygen/html/html/search/all_3.js +25 -18
- package/SVF-doxygen/html/html/search/all_4.js +20 -18
- package/SVF-doxygen/html/html/search/all_5.js +8 -6
- package/SVF-doxygen/html/html/search/all_6.js +9 -8
- package/SVF-doxygen/html/html/search/all_7.js +9 -3
- package/SVF-doxygen/html/html/search/all_8.js +5 -3
- package/SVF-doxygen/html/html/search/all_9.js +16 -11
- package/SVF-doxygen/html/html/search/all_b.js +2 -2
- package/SVF-doxygen/html/html/search/all_c.js +7 -6
- package/SVF-doxygen/html/html/search/all_d.js +13 -13
- package/SVF-doxygen/html/html/search/all_e.js +4 -3
- package/SVF-doxygen/html/html/search/all_f.js +24 -6
- package/SVF-doxygen/html/html/search/classes_10.js +1 -0
- package/SVF-doxygen/html/html/search/classes_2.js +2 -0
- package/SVF-doxygen/html/html/search/classes_7.js +2 -1
- package/SVF-doxygen/html/html/search/classes_c.js +15 -0
- package/SVF-doxygen/html/html/search/classes_d.js +2 -0
- package/SVF-doxygen/html/html/search/files_2.js +3 -0
- package/SVF-doxygen/html/html/search/functions_0.js +8 -1
- package/SVF-doxygen/html/html/search/functions_1.js +4 -2
- package/SVF-doxygen/html/html/search/functions_10.js +0 -2
- package/SVF-doxygen/html/html/search/functions_11.js +2 -3
- package/SVF-doxygen/html/html/search/functions_12.js +1 -0
- package/SVF-doxygen/html/html/search/functions_13.js +1 -0
- package/SVF-doxygen/html/html/search/functions_17.js +6 -0
- package/SVF-doxygen/html/html/search/functions_2.js +5 -1
- package/SVF-doxygen/html/html/search/functions_3.js +0 -2
- package/SVF-doxygen/html/html/search/functions_4.js +2 -4
- package/SVF-doxygen/html/html/search/functions_5.js +2 -1
- package/SVF-doxygen/html/html/search/functions_6.js +7 -1
- package/SVF-doxygen/html/html/search/functions_7.js +4 -2
- package/SVF-doxygen/html/html/search/functions_8.js +6 -3
- package/SVF-doxygen/html/html/search/functions_b.js +1 -1
- package/SVF-doxygen/html/html/search/functions_c.js +1 -1
- package/SVF-doxygen/html/html/search/functions_d.js +1 -0
- package/SVF-doxygen/html/html/search/functions_e.js +7 -3
- package/SVF-doxygen/html/html/search/functions_f.js +3 -0
- package/SVF-doxygen/html/html/search/typedefs_11.js +2 -1
- package/SVF-doxygen/html/html/search/typedefs_12.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_3.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_7.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_a.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_d.js +2 -0
- package/SVF-doxygen/html/html/search/typedefs_e.js +2 -0
- package/SVF-doxygen/html/html/search/variables_0.js +2 -1
- package/SVF-doxygen/html/html/search/variables_1.js +7 -7
- package/SVF-doxygen/html/html/search/variables_10.js +25 -21
- package/SVF-doxygen/html/html/search/variables_11.js +7 -5
- package/SVF-doxygen/html/html/search/variables_12.js +11 -10
- package/SVF-doxygen/html/html/search/variables_13.js +9 -8
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_15.js +4 -4
- package/SVF-doxygen/html/html/search/variables_16.js +3 -3
- package/SVF-doxygen/html/html/search/variables_2.js +1 -1
- package/SVF-doxygen/html/html/search/variables_3.js +13 -12
- package/SVF-doxygen/html/html/search/variables_4.js +19 -15
- package/SVF-doxygen/html/html/search/variables_5.js +6 -2
- package/SVF-doxygen/html/html/search/variables_6.js +7 -6
- package/SVF-doxygen/html/html/search/variables_7.js +2 -2
- package/SVF-doxygen/html/html/search/variables_8.js +1 -1
- package/SVF-doxygen/html/html/search/variables_9.js +9 -7
- package/SVF-doxygen/html/html/search/variables_b.js +1 -1
- package/SVF-doxygen/html/html/search/variables_c.js +5 -4
- package/SVF-doxygen/html/html/search/variables_d.js +11 -11
- package/SVF-doxygen/html/html/search/variables_e.js +2 -2
- package/SVF-doxygen/html/html/search/variables_f.js +3 -2
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +4 -4
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +4 -4
- package/SVF-doxygen/html/html/structSVF_1_1HybridData_1_1TreeNode-members.html +86 -0
- package/SVF-doxygen/html/html/structSVF_1_1HybridData_1_1TreeNode.html +255 -0
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +12 -55
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp.html +4 -47
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +4 -4
- package/include/CFL/CFLAlias.h +34 -0
- package/include/CFL/CFLData.h +316 -0
- package/include/CFL/CFLDataBuilder.h +91 -0
- package/include/CFL/CFLSolver.h +21 -0
- package/include/Util/CommandLine.h +527 -0
- package/include/Util/Options.h +125 -124
- package/include/WPA/Andersen.h +5 -5
- package/lib/AbstractExecution/SVFIR2ItvExeState.cpp +2 -2
- package/lib/CFL/CFLAlias.cpp +40 -4
- package/lib/CFL/CFLBase.cpp +4 -4
- package/lib/CFL/CFLGraphBuilder.cpp +2 -2
- package/lib/CFL/CFLVF.cpp +5 -5
- package/lib/DDA/ContextDDA.cpp +1 -1
- package/lib/DDA/DDAPass.cpp +14 -13
- package/lib/DDA/FlowDDA.cpp +1 -1
- package/lib/Graphs/ConsG.cpp +10 -10
- package/lib/Graphs/ICFG.cpp +1 -1
- package/lib/Graphs/IRGraph.cpp +2 -2
- package/lib/Graphs/SVFG.cpp +5 -5
- package/lib/Graphs/SVFGOPT.cpp +5 -5
- package/lib/Graphs/VFG.cpp +1 -1
- package/lib/MSSA/MemRegion.cpp +2 -2
- package/lib/MSSA/MemSSA.cpp +4 -4
- package/lib/MSSA/SVFGBuilder.cpp +4 -4
- package/lib/MTA/FSMPTA.cpp +13 -13
- package/lib/MTA/MHP.cpp +1 -1
- package/lib/MTA/MTA.cpp +2 -2
- package/lib/MTA/MTAStat.cpp +1 -1
- package/lib/MTA/PCG.cpp +8 -2
- package/lib/MTA/TCT.cpp +2 -2
- package/lib/MemoryModel/PointerAnalysis.cpp +13 -13
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +13 -13
- package/lib/MemoryModel/PointsTo.cpp +1 -1
- package/lib/SABER/DoubleFreeChecker.cpp +1 -1
- package/lib/SABER/LeakChecker.cpp +1 -1
- package/lib/SABER/SaberCondAllocator.cpp +1 -1
- package/lib/SABER/SrcSnkDDA.cpp +5 -5
- package/lib/SVF-LLVM/CHGBuilder.cpp +1 -1
- package/lib/SVF-LLVM/DCHG.cpp +1 -1
- package/lib/SVF-LLVM/LLVMLoopAnalysis.cpp +2 -2
- package/lib/SVF-LLVM/LLVMModule.cpp +10 -4
- package/lib/SVF-LLVM/SVFIRBuilder.cpp +8 -8
- package/lib/SVF-LLVM/SymbolTableBuilder.cpp +5 -5
- package/lib/SVFIR/SVFIR.cpp +4 -4
- package/lib/SVFIR/SVFStatements.cpp +16 -16
- package/lib/SVFIR/SVFVariables.cpp +5 -5
- package/lib/SVFIR/SymbolTableInfo.cpp +6 -6
- package/lib/Util/NodeIDAllocator.cpp +9 -9
- package/lib/Util/Options.cpp +431 -412
- package/lib/Util/SVFStat.cpp +5 -5
- package/lib/Util/SVFUtil.cpp +1 -1
- package/lib/Util/Z3Expr.cpp +2 -2
- package/lib/WPA/Andersen.cpp +13 -13
- package/lib/WPA/AndersenSCD.cpp +3 -3
- package/lib/WPA/FlowSensitive.cpp +8 -8
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
- package/lib/WPA/WPAPass.cpp +10 -9
- package/package.json +1 -1
- package/tools/CFL/cfl.cpp +8 -14
- package/tools/DDA/dda.cpp +39 -29
- package/tools/Example/svf-ex.cpp +5 -8
- package/tools/MTA/LockResultValidator.cpp +2 -2
- package/tools/MTA/MTAAnnotator.cpp +5 -5
- package/tools/MTA/MTAResultValidator.cpp +8 -8
- package/tools/MTA/mta.cpp +5 -8
- package/tools/SABER/saber.cpp +23 -17
- package/tools/WPA/wpa.cpp +6 -9
package/lib/Util/Options.cpp
CHANGED
|
@@ -1,825 +1,844 @@
|
|
|
1
1
|
//===- Options.cpp -- Command line options ------------------------//
|
|
2
2
|
|
|
3
3
|
#include "Util/Options.h"
|
|
4
|
+
#include "Util/CommandLine.h"
|
|
4
5
|
|
|
5
6
|
namespace SVF
|
|
6
7
|
{
|
|
7
|
-
const
|
|
8
|
+
const OptionMap<enum PTAStat::ClockType> Options::ClockType(
|
|
8
9
|
"clock-type",
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
"how time should be measured",
|
|
11
|
+
PTAStat::ClockType::CPU,
|
|
12
|
+
{
|
|
13
|
+
{PTAStat::ClockType::Wall, "wall", "use wall time"},
|
|
14
|
+
{PTAStat::ClockType::CPU, "cpu", "use CPU time"},
|
|
15
|
+
}
|
|
15
16
|
);
|
|
16
17
|
|
|
17
|
-
const
|
|
18
|
+
const Option<bool> Options::MarkedClocksOnly(
|
|
18
19
|
"marked-clocks-only",
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
"Only measure times where explicitly marked",
|
|
21
|
+
true
|
|
22
|
+
);
|
|
21
23
|
|
|
22
|
-
const
|
|
24
|
+
const OptionMap<NodeIDAllocator::Strategy> Options::NodeAllocStrat(
|
|
23
25
|
"node-alloc-strat",
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
"Method of allocating (LLVM) values and memory objects as node IDs",
|
|
27
|
+
NodeIDAllocator::Strategy::SEQ,
|
|
28
|
+
{
|
|
29
|
+
{NodeIDAllocator::Strategy::DENSE, "dense", "allocate objects together [0-n] and values together [m-MAX], separately"},
|
|
30
|
+
{NodeIDAllocator::Strategy::REVERSE_DENSE, "reverse-dense", "like dense but flipped, objects are [m-MAX], values are [0-n]"},
|
|
31
|
+
{NodeIDAllocator::Strategy::SEQ, "seq", "allocate values and objects sequentially, intermixed (default)"},
|
|
32
|
+
{NodeIDAllocator::Strategy::DEBUG, "debug", "allocate value and objects sequentially, intermixed, except GEP objects as offsets"},
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
const Option<u32_t> Options::MaxFieldLimit(
|
|
33
37
|
"field-limit",
|
|
34
|
-
|
|
35
|
-
|
|
38
|
+
"Maximum number of fields for field sensitive analysis",
|
|
39
|
+
512
|
|
40
|
+
);
|
|
36
41
|
|
|
37
|
-
const
|
|
42
|
+
const OptionMap<BVDataPTAImpl::PTBackingType> Options::ptDataBacking(
|
|
38
43
|
"ptd",
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
"Overarching points-to data structure",
|
|
45
|
+
BVDataPTAImpl::PTBackingType::Persistent,
|
|
46
|
+
{
|
|
47
|
+
{BVDataPTAImpl::PTBackingType::Mutable, "mutable", "points-to set per pointer"},
|
|
48
|
+
{BVDataPTAImpl::PTBackingType::Persistent, "persistent", "points-to set ID per pointer, operations hash-consed"},
|
|
49
|
+
}
|
|
50
|
+
);
|
|
44
51
|
|
|
45
|
-
const
|
|
52
|
+
const Option<u32_t> Options::FsTimeLimit(
|
|
46
53
|
"fs-time-limit",
|
|
47
|
-
|
|
48
|
-
|
|
54
|
+
"time limit for main phase of flow-sensitive analyses",
|
|
55
|
+
0
|
|
49
56
|
);
|
|
50
57
|
|
|
51
|
-
const
|
|
58
|
+
const Option<u32_t> Options::VersioningThreads(
|
|
52
59
|
"versioning-threads",
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
"number of threads to use in the versioning phase of versioned flow-sensitive analysis",
|
|
61
|
+
1
|
|
55
62
|
);
|
|
56
63
|
|
|
57
|
-
const
|
|
64
|
+
const Option<u32_t> Options::AnderTimeLimit(
|
|
58
65
|
"ander-time-limit",
|
|
59
|
-
|
|
60
|
-
|
|
66
|
+
"time limit for Andersen's analyses (ignored when -fs-time-limit set)",
|
|
67
|
+
0
|
|
61
68
|
);
|
|
62
69
|
|
|
63
70
|
// ContextDDA.cpp
|
|
64
|
-
const
|
|
71
|
+
const Option<u32_t> Options::CxtBudget(
|
|
65
72
|
"cxt-bg",
|
|
66
|
-
|
|
67
|
-
|
|
73
|
+
"Maximum step budget of context-sensitive traversing",
|
|
74
|
+
10000
|
|
68
75
|
);
|
|
69
76
|
|
|
70
77
|
|
|
71
78
|
// DDAClient.cpp
|
|
72
|
-
const
|
|
79
|
+
const Option<bool> Options::SingleLoad(
|
|
73
80
|
"single-load",
|
|
74
|
-
|
|
75
|
-
|
|
81
|
+
"Count load pointer with same source operand as one query",
|
|
82
|
+
true
|
|
76
83
|
);
|
|
77
84
|
|
|
78
|
-
const
|
|
85
|
+
const Option<bool> Options::DumpFree(
|
|
79
86
|
"dump-free",
|
|
80
|
-
|
|
81
|
-
|
|
87
|
+
"Dump use after free locations",
|
|
88
|
+
false
|
|
82
89
|
);
|
|
83
90
|
|
|
84
|
-
const
|
|
91
|
+
const Option<bool> Options::DumpUninitVar(
|
|
85
92
|
"dump-uninit-var",
|
|
86
|
-
|
|
87
|
-
|
|
93
|
+
"Dump uninitialised variables",
|
|
94
|
+
false
|
|
88
95
|
);
|
|
89
96
|
|
|
90
|
-
const
|
|
97
|
+
const Option<bool> Options::DumpUninitPtr(
|
|
91
98
|
"dump-uninit-ptr",
|
|
92
|
-
|
|
93
|
-
|
|
99
|
+
"Dump uninitialised pointers",
|
|
100
|
+
false
|
|
94
101
|
);
|
|
95
102
|
|
|
96
|
-
const
|
|
103
|
+
const Option<bool> Options::DumpSUPts(
|
|
97
104
|
"dump-su-pts",
|
|
98
|
-
|
|
99
|
-
|
|
105
|
+
"Dump strong updates store",
|
|
106
|
+
false
|
|
100
107
|
);
|
|
101
108
|
|
|
102
|
-
const
|
|
109
|
+
const Option<bool> Options::DumpSUStore(
|
|
103
110
|
"dump-su-store",
|
|
104
|
-
|
|
105
|
-
|
|
111
|
+
"Dump strong updates store",
|
|
112
|
+
false
|
|
106
113
|
);
|
|
107
114
|
|
|
108
|
-
const
|
|
115
|
+
const Option<bool> Options::MallocOnly(
|
|
109
116
|
"malloc-only",
|
|
110
|
-
|
|
111
|
-
|
|
117
|
+
"Only add tainted objects for malloc",
|
|
118
|
+
true
|
|
112
119
|
);
|
|
113
120
|
|
|
114
|
-
const
|
|
121
|
+
const Option<bool> Options::TaintUninitHeap(
|
|
115
122
|
"uninit-heap",
|
|
116
|
-
|
|
117
|
-
|
|
123
|
+
"detect uninitialized heap variables",
|
|
124
|
+
true
|
|
118
125
|
);
|
|
119
126
|
|
|
120
|
-
const
|
|
127
|
+
const Option<bool> Options::TaintUninitStack(
|
|
121
128
|
"uninit-stack",
|
|
122
|
-
|
|
123
|
-
|
|
129
|
+
"detect uninitialized stack variables",
|
|
130
|
+
true
|
|
124
131
|
);
|
|
125
132
|
|
|
126
133
|
// DDAPass.cpp
|
|
127
|
-
const
|
|
134
|
+
const Option<u32_t> Options::MaxPathLen(
|
|
128
135
|
"max-path",
|
|
129
|
-
|
|
130
|
-
|
|
136
|
+
"Maximum path limit for DDA",
|
|
137
|
+
100000
|
|
131
138
|
);
|
|
132
139
|
|
|
133
|
-
const
|
|
140
|
+
const Option<u32_t> Options::MaxContextLen(
|
|
134
141
|
"max-cxt",
|
|
135
|
-
|
|
136
|
-
|
|
142
|
+
"Maximum context limit for DDA",
|
|
143
|
+
3
|
|
137
144
|
);
|
|
138
145
|
|
|
139
|
-
const
|
|
146
|
+
const Option<u32_t> Options::MaxStepInWrapper(
|
|
140
147
|
"max-step",
|
|
141
|
-
|
|
142
|
-
|
|
148
|
+
"Maximum steps when traversing on SVFG to identify a memory allocation wrapper",
|
|
149
|
+
10
|
|
143
150
|
);
|
|
144
151
|
|
|
145
|
-
const
|
|
152
|
+
const Option<std::string> Options::UserInputQuery(
|
|
146
153
|
"query",
|
|
147
|
-
|
|
148
|
-
|
|
154
|
+
"Please specify queries by inputing their pointer ids",
|
|
155
|
+
"all"
|
|
149
156
|
);
|
|
150
157
|
|
|
151
|
-
const
|
|
158
|
+
const Option<bool> Options::InsenRecur(
|
|
152
159
|
"in-recur",
|
|
153
|
-
|
|
154
|
-
|
|
160
|
+
"Mark context insensitive SVFG edges due to function recursions",
|
|
161
|
+
false
|
|
155
162
|
);
|
|
156
163
|
|
|
157
|
-
const
|
|
164
|
+
const Option<bool> Options::InsenCycle(
|
|
158
165
|
"in-cycle",
|
|
159
|
-
|
|
160
|
-
|
|
166
|
+
"Mark context insensitive SVFG edges due to value-flow cycles",
|
|
167
|
+
false
|
|
161
168
|
);
|
|
162
169
|
|
|
163
|
-
const
|
|
170
|
+
const Option<bool> Options::PrintCPts(
|
|
164
171
|
"cpts",
|
|
165
|
-
|
|
166
|
-
|
|
172
|
+
"Dump conditional points-to set ",
|
|
173
|
+
false
|
|
167
174
|
);
|
|
168
175
|
|
|
169
|
-
const
|
|
176
|
+
const Option<bool> Options::PrintQueryPts(
|
|
170
177
|
"print-query-pts",
|
|
171
|
-
|
|
172
|
-
|
|
178
|
+
"Dump queries' conditional points-to set ",
|
|
179
|
+
false
|
|
173
180
|
);
|
|
174
181
|
|
|
175
|
-
const
|
|
182
|
+
const Option<bool> Options::WPANum(
|
|
176
183
|
"wpa-num",
|
|
177
|
-
|
|
178
|
-
|
|
184
|
+
"collect WPA FS number only ",
|
|
185
|
+
false
|
|
179
186
|
);
|
|
180
187
|
|
|
181
188
|
/// register this into alias analysis group
|
|
182
189
|
//static RegisterAnalysisGroup<AliasAnalysis> AA_GROUP(DDAPA);
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
190
|
+
OptionMultiple<PointerAnalysis::PTATY> Options::DDASelected(
|
|
191
|
+
"Select pointer analysis",
|
|
192
|
+
{
|
|
193
|
+
{PointerAnalysis::FlowS_DDA, "dfs", "Demand-driven flow sensitive analysis"},
|
|
194
|
+
{PointerAnalysis::Cxt_DDA, "cxt", "Demand-driven context- flow- sensitive analysis"},
|
|
195
|
+
}
|
|
196
|
+
);
|
|
189
197
|
|
|
190
198
|
// FlowDDA.cpp
|
|
191
|
-
const
|
|
199
|
+
const Option<u32_t> Options::FlowBudget(
|
|
192
200
|
"flow-bg",
|
|
193
|
-
|
|
194
|
-
|
|
201
|
+
"Maximum step budget of flow-sensitive traversing",
|
|
202
|
+
10000
|
|
195
203
|
);
|
|
196
204
|
|
|
197
205
|
|
|
198
206
|
// Offline constraint graph (OfflineConsG.cpp)
|
|
199
|
-
const
|
|
207
|
+
const Option<bool> Options::OCGDotGraph(
|
|
200
208
|
"dump-ocg",
|
|
201
|
-
|
|
202
|
-
|
|
209
|
+
"Dump dot graph of Offline Constraint Graph",
|
|
210
|
+
false
|
|
203
211
|
);
|
|
204
212
|
|
|
205
213
|
|
|
206
214
|
// Program Assignment Graph for pointer analysis (SVFIR.cpp)
|
|
207
|
-
|
|
215
|
+
Option<bool> Options::HandBlackHole(
|
|
208
216
|
"blk",
|
|
209
|
-
|
|
210
|
-
|
|
217
|
+
"Hanle blackhole edge",
|
|
218
|
+
false
|
|
211
219
|
);
|
|
212
220
|
|
|
213
|
-
const
|
|
221
|
+
const Option<bool> Options::FirstFieldEqBase(
|
|
214
222
|
"ff-eq-base",
|
|
215
|
-
|
|
216
|
-
|
|
223
|
+
"Treat base objects as their first fields",
|
|
224
|
+
false
|
|
217
225
|
);
|
|
218
226
|
|
|
219
227
|
|
|
220
228
|
// SVFG optimizer (SVFGOPT.cpp)
|
|
221
|
-
const
|
|
229
|
+
const Option<bool> Options::ContextInsensitive(
|
|
222
230
|
"ci-svfg",
|
|
223
|
-
|
|
224
|
-
|
|
231
|
+
"Reduce SVFG into a context-insensitive one",
|
|
232
|
+
false
|
|
225
233
|
);
|
|
226
234
|
|
|
227
|
-
const
|
|
235
|
+
const Option<bool> Options::KeepAOFI(
|
|
228
236
|
"keep-aofi",
|
|
229
|
-
|
|
230
|
-
|
|
237
|
+
"Keep formal-in and actual-out parameters",
|
|
238
|
+
false
|
|
231
239
|
);
|
|
232
240
|
|
|
233
|
-
const
|
|
241
|
+
const Option<std::string> Options::SelfCycle(
|
|
234
242
|
"keep-self-cycle",
|
|
235
|
-
|
|
236
|
-
|
|
243
|
+
"How to handle self cycle edges: all, context, none",
|
|
244
|
+
""
|
|
237
245
|
);
|
|
238
246
|
|
|
239
247
|
|
|
240
248
|
// Sparse value-flow graph (VFG.cpp)
|
|
241
|
-
const
|
|
249
|
+
const Option<bool> Options::DumpVFG(
|
|
242
250
|
"dump-vfg",
|
|
243
|
-
|
|
244
|
-
|
|
251
|
+
"Dump dot graph of VFG",
|
|
252
|
+
false
|
|
245
253
|
);
|
|
246
254
|
|
|
247
255
|
|
|
248
256
|
// Location set for modeling abstract memory object (LocationSet.cpp)
|
|
249
|
-
const
|
|
257
|
+
const Option<bool> Options::SingleStride(
|
|
250
258
|
"stride-only",
|
|
251
|
-
|
|
252
|
-
|
|
259
|
+
"Only use single stride in LocMemoryModel",
|
|
260
|
+
false
|
|
253
261
|
);
|
|
254
262
|
|
|
255
263
|
|
|
256
264
|
// Base class of pointer analyses (PointerAnalysis.cpp)
|
|
257
|
-
const
|
|
265
|
+
const Option<bool> Options::TypePrint(
|
|
258
266
|
"print-type",
|
|
259
|
-
|
|
260
|
-
|
|
267
|
+
"Print type",
|
|
268
|
+
false
|
|
261
269
|
);
|
|
262
270
|
|
|
263
|
-
const
|
|
271
|
+
const Option<bool> Options::FuncPointerPrint(
|
|
264
272
|
"print-fp",
|
|
265
|
-
|
|
266
|
-
|
|
273
|
+
"Print targets of indirect call site",
|
|
274
|
+
false
|
|
267
275
|
);
|
|
268
276
|
|
|
269
|
-
const
|
|
277
|
+
const Option<bool> Options::PTSPrint(
|
|
270
278
|
"print-pts",
|
|
271
|
-
|
|
272
|
-
|
|
279
|
+
"Print points-to set of top-level pointers",
|
|
280
|
+
false
|
|
273
281
|
);
|
|
274
282
|
|
|
275
|
-
const
|
|
283
|
+
const Option<bool> Options::PTSAllPrint(
|
|
276
284
|
"print-all-pts",
|
|
277
|
-
|
|
278
|
-
|
|
285
|
+
"Print all points-to set of both top-level and address-taken variables",
|
|
286
|
+
false
|
|
279
287
|
);
|
|
280
288
|
|
|
281
|
-
const
|
|
289
|
+
const Option<bool> Options::PStat(
|
|
282
290
|
"stat",
|
|
283
|
-
|
|
284
|
-
|
|
291
|
+
"Statistic for Pointer analysis",
|
|
292
|
+
true
|
|
285
293
|
);
|
|
286
294
|
|
|
287
|
-
const
|
|
295
|
+
const Option<u32_t> Options::StatBudget(
|
|
288
296
|
"stat-limit",
|
|
289
|
-
|
|
290
|
-
|
|
297
|
+
"Iteration budget for On-the-fly statistics",
|
|
298
|
+
20
|
|
291
299
|
);
|
|
292
300
|
|
|
293
|
-
const
|
|
301
|
+
const Option<bool> Options::PAGDotGraph(
|
|
294
302
|
"dump-pag",
|
|
295
|
-
|
|
296
|
-
|
|
303
|
+
"Dump dot graph of SVFIR",
|
|
304
|
+
false
|
|
297
305
|
);
|
|
298
306
|
|
|
299
|
-
const
|
|
307
|
+
const Option<bool> Options::ShowSVFIRValue(
|
|
300
308
|
"show-ir-value",
|
|
301
|
-
|
|
302
|
-
|
|
309
|
+
"Show values of SVFIR (e.g., when generating dot graph)",
|
|
310
|
+
true
|
|
303
311
|
);
|
|
304
312
|
|
|
305
|
-
const
|
|
313
|
+
const Option<bool> Options::DumpICFG(
|
|
306
314
|
"dump-icfg",
|
|
307
|
-
|
|
308
|
-
|
|
315
|
+
"Dump dot graph of ICFG",
|
|
316
|
+
false
|
|
309
317
|
);
|
|
310
318
|
|
|
311
|
-
const
|
|
319
|
+
const Option<bool> Options::CallGraphDotGraph(
|
|
312
320
|
"dump-callgraph",
|
|
313
|
-
|
|
314
|
-
|
|
321
|
+
"Dump dot graph of Call Graph",
|
|
322
|
+
false
|
|
315
323
|
);
|
|
316
324
|
|
|
317
|
-
const
|
|
325
|
+
const Option<bool> Options::PAGPrint(
|
|
318
326
|
"print-pag",
|
|
319
|
-
|
|
320
|
-
|
|
327
|
+
"Print SVFIR to command line",
|
|
328
|
+
false
|
|
321
329
|
);
|
|
322
330
|
|
|
323
|
-
const
|
|
331
|
+
const Option<u32_t> Options::IndirectCallLimit(
|
|
324
332
|
"ind-call-limit",
|
|
325
|
-
|
|
326
|
-
|
|
333
|
+
"Indirect solved call edge limit",
|
|
334
|
+
50000
|
|
327
335
|
);
|
|
328
336
|
|
|
329
|
-
const
|
|
337
|
+
const Option<bool> Options::UsePreCompFieldSensitive(
|
|
330
338
|
"pre-field-sensitive",
|
|
331
|
-
|
|
332
|
-
|
|
339
|
+
"Use pre-computed field-sensitivity for later analysis",
|
|
340
|
+
true
|
|
333
341
|
);
|
|
334
342
|
|
|
335
|
-
const
|
|
343
|
+
const Option<bool> Options::EnableAliasCheck(
|
|
336
344
|
"alias-check",
|
|
337
|
-
|
|
338
|
-
|
|
345
|
+
"Enable alias check functions",
|
|
346
|
+
true
|
|
339
347
|
);
|
|
340
348
|
|
|
341
|
-
const
|
|
349
|
+
const Option<bool> Options::EnableThreadCallGraph(
|
|
342
350
|
"enable-tcg",
|
|
343
|
-
|
|
344
|
-
|
|
351
|
+
"Enable pointer analysis to use thread call graph",
|
|
352
|
+
true
|
|
345
353
|
);
|
|
346
354
|
|
|
347
|
-
const
|
|
355
|
+
const Option<bool> Options::ConnectVCallOnCHA(
|
|
348
356
|
"v-call-cha",
|
|
349
|
-
|
|
350
|
-
|
|
357
|
+
"connect virtual calls using cha",
|
|
358
|
+
false
|
|
351
359
|
);
|
|
352
360
|
|
|
353
361
|
|
|
354
362
|
// PointerAnalysisImpl.cpp
|
|
355
|
-
const
|
|
363
|
+
const Option<bool> Options::INCDFPTData(
|
|
356
364
|
"inc-data",
|
|
357
|
-
|
|
358
|
-
|
|
365
|
+
"Enable incremental DFPTData for flow-sensitive analysis",
|
|
366
|
+
true
|
|
359
367
|
);
|
|
360
368
|
|
|
361
|
-
const
|
|
369
|
+
const Option<bool> Options::ClusterAnder(
|
|
362
370
|
"cluster-ander",
|
|
363
|
-
|
|
364
|
-
|
|
371
|
+
"Stage Andersen's with Steensgard's and cluster based on that",
|
|
372
|
+
false
|
|
365
373
|
);
|
|
366
374
|
|
|
367
|
-
const
|
|
375
|
+
const Option<bool> Options::ClusterFs(
|
|
368
376
|
"cluster-fs",
|
|
369
|
-
|
|
370
|
-
|
|
377
|
+
"Cluster for FS/VFS with auxiliary Andersen's",
|
|
378
|
+
false
|
|
371
379
|
);
|
|
372
380
|
|
|
373
|
-
const
|
|
381
|
+
const Option<bool> Options::PlainMappingFs(
|
|
374
382
|
"plain-mapping-fs",
|
|
375
|
-
|
|
376
|
-
|
|
383
|
+
"Use an explicitly (not null) plain mapping for FS",
|
|
384
|
+
false
|
|
377
385
|
);
|
|
378
386
|
|
|
379
|
-
const
|
|
387
|
+
const OptionMap<PointsTo::Type> Options::PtType(
|
|
380
388
|
"pt-type",
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
389
|
+
"points-to set data structure to use in all analyses",
|
|
390
|
+
PointsTo::Type::SBV,
|
|
391
|
+
{
|
|
392
|
+
{PointsTo::Type::SBV, "sbv", "sparse bit-vector"},
|
|
393
|
+
{PointsTo::Type::CBV, "cbv", "core bit-vector (dynamic bit-vector without leading and trailing 0s)"},
|
|
394
|
+
{PointsTo::Type::BV, "bv", "bit-vector (dynamic bit-vector without trailing 0s)"},
|
|
395
|
+
}
|
|
388
396
|
);
|
|
389
397
|
|
|
390
|
-
const
|
|
398
|
+
const OptionMap<enum hclust_fast_methods> Options::ClusterMethod(
|
|
391
399
|
"cluster-method",
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
const llvm::cl::opt<bool> Options::RegionedClustering(
|
|
400
|
+
"hierarchical clustering method for objects",
|
|
401
|
+
HCLUST_METHOD_SVF_BEST,
|
|
402
|
+
{
|
|
403
|
+
{HCLUST_METHOD_SINGLE, "single", "single linkage; minimum spanning tree algorithm"},
|
|
404
|
+
{HCLUST_METHOD_COMPLETE, "complete", "complete linkage; nearest-neighbour-chain algorithm"},
|
|
405
|
+
{HCLUST_METHOD_AVERAGE, "average", "unweighted average linkage; nearest-neighbour-chain algorithm"},
|
|
406
|
+
{HCLUST_METHOD_SVF_BEST, "best", "try all linkage criteria; choose best"},
|
|
407
|
+
}
|
|
408
|
+
);
|
|
409
|
+
|
|
410
|
+
const Option<bool> Options::RegionedClustering(
|
|
404
411
|
// Use cluster to "gather" the options closer together, even if it sounds a little worse.
|
|
405
412
|
"cluster-regioned",
|
|
406
|
-
|
|
407
|
-
|
|
413
|
+
"cluster regions separately",
|
|
414
|
+
true
|
|
408
415
|
);
|
|
409
416
|
|
|
410
|
-
const
|
|
417
|
+
const Option<bool> Options::RegionAlign(
|
|
411
418
|
"cluster-region-aligned",
|
|
412
|
-
|
|
413
|
-
|
|
419
|
+
"align each region's identifiers to the native word size",
|
|
420
|
+
true
|
|
414
421
|
);
|
|
415
422
|
|
|
416
|
-
const
|
|
423
|
+
const Option<bool> Options::PredictPtOcc(
|
|
417
424
|
"cluster-predict-occ",
|
|
418
|
-
|
|
419
|
-
|
|
425
|
+
"try to predict which points-to sets are more important in staged analysis",
|
|
426
|
+
false
|
|
420
427
|
);
|
|
421
428
|
|
|
422
429
|
// Memory region (MemRegion.cpp)
|
|
423
|
-
const
|
|
430
|
+
const Option<bool> Options::IgnoreDeadFun(
|
|
424
431
|
"mssa-ignore-dead-fun",
|
|
425
|
-
|
|
426
|
-
|
|
432
|
+
"Don't construct memory SSA for deadfunction",
|
|
433
|
+
false
|
|
427
434
|
);
|
|
428
435
|
|
|
429
436
|
|
|
430
437
|
// Base class of pointer analyses (MemSSA.cpp)
|
|
431
|
-
const
|
|
438
|
+
const Option<bool> Options::DumpMSSA(
|
|
432
439
|
"dump-mssa",
|
|
433
|
-
|
|
434
|
-
|
|
440
|
+
"Dump memory SSA",
|
|
441
|
+
false
|
|
435
442
|
);
|
|
436
443
|
|
|
437
|
-
const
|
|
444
|
+
const Option<std::string> Options::MSSAFun(
|
|
438
445
|
"mssa-fun",
|
|
439
|
-
|
|
440
|
-
|
|
446
|
+
"Please specify which function needs to be dumped",
|
|
447
|
+
""
|
|
441
448
|
);
|
|
442
449
|
|
|
443
|
-
const
|
|
450
|
+
const OptionMap<MemSSA::MemPartition> Options::MemPar(
|
|
444
451
|
"mem-par",
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
452
|
+
"Memory region partiion strategies (e.g., for SVFG construction)",
|
|
453
|
+
MemSSA::MemPartition::IntraDisjoint,
|
|
454
|
+
{
|
|
455
|
+
{MemSSA::MemPartition::Distinct, "distinct", "memory region per each object"},
|
|
456
|
+
{MemSSA::MemPartition::IntraDisjoint, "intra-disjoint", "memory regions partioned based on each function"},
|
|
457
|
+
{MemSSA::MemPartition::InterDisjoint, "inter-disjoint", "memory regions partioned across functions"},
|
|
458
|
+
}
|
|
451
459
|
);
|
|
452
460
|
|
|
453
461
|
|
|
454
462
|
// SVFG builder (SVFGBuilder.cpp)
|
|
455
|
-
const
|
|
463
|
+
const Option<bool> Options::SVFGWithIndirectCall(
|
|
456
464
|
"svfg-with-ind-call",
|
|
457
|
-
|
|
458
|
-
|
|
465
|
+
"Update Indirect Calls for SVFG using pre-analysis",
|
|
466
|
+
false
|
|
459
467
|
);
|
|
460
468
|
|
|
461
|
-
|
|
469
|
+
Option<bool> Options::OPTSVFG(
|
|
462
470
|
"opt-svfg",
|
|
463
|
-
|
|
464
|
-
|
|
471
|
+
"Optimize SVFG to eliminate formal-in and actual-out",
|
|
472
|
+
false
|
|
465
473
|
);
|
|
466
474
|
|
|
467
|
-
const
|
|
475
|
+
const Option<std::string> Options::WriteSVFG(
|
|
468
476
|
"write-svfg",
|
|
469
|
-
|
|
470
|
-
|
|
477
|
+
"Write SVFG's analysis results to a file",
|
|
478
|
+
""
|
|
471
479
|
);
|
|
472
480
|
|
|
473
|
-
const
|
|
481
|
+
const Option<std::string> Options::ReadSVFG(
|
|
474
482
|
"read-svfg",
|
|
475
|
-
|
|
476
|
-
|
|
483
|
+
"Read SVFG's analysis results from a file",
|
|
484
|
+
""
|
|
477
485
|
);
|
|
478
486
|
|
|
479
487
|
// FSMPTA.cpp
|
|
480
|
-
const
|
|
488
|
+
const Option<bool> Options::UsePCG(
|
|
481
489
|
"pcg-td-edge",
|
|
482
|
-
|
|
483
|
-
|
|
490
|
+
"Use PCG lock for non-sparsely adding SVFG edges",
|
|
491
|
+
false
|
|
484
492
|
);
|
|
485
493
|
|
|
486
|
-
const
|
|
494
|
+
const Option<bool> Options::IntraLock(
|
|
487
495
|
"intra-lock-td-edge",
|
|
488
|
-
|
|
489
|
-
|
|
496
|
+
"Use simple intra-procedual lock for adding SVFG edges",
|
|
497
|
+
true
|
|
490
498
|
);
|
|
491
499
|
|
|
492
|
-
const
|
|
500
|
+
const Option<bool> Options::ReadPrecisionTDEdge(
|
|
493
501
|
"rp-td-edge",
|
|
494
|
-
|
|
495
|
-
|
|
502
|
+
"perform read precision to refine SVFG edges",
|
|
503
|
+
false
|
|
496
504
|
);
|
|
497
505
|
|
|
498
|
-
const
|
|
506
|
+
const Option<u32_t> Options::AddModelFlag(
|
|
499
507
|
"add-td-edge",
|
|
500
|
-
|
|
501
|
-
|
|
508
|
+
"Add thread SVFG edges with models: 0 Non Add Edge; 1 NonSparse; 2 All Optimisation; 3 No MHP; 4 No Alias; 5 No Lock; 6 No Read Precision.",
|
|
509
|
+
0
|
|
502
510
|
);
|
|
503
511
|
|
|
504
512
|
|
|
505
513
|
// LockAnalysis.cpp
|
|
506
|
-
const
|
|
514
|
+
const Option<bool> Options::PrintLockSpan(
|
|
507
515
|
"print-lock",
|
|
508
|
-
|
|
509
|
-
|
|
516
|
+
"Print Thread Interleaving Results",
|
|
517
|
+
false
|
|
510
518
|
);
|
|
511
519
|
|
|
512
520
|
|
|
513
521
|
// MHP.cpp
|
|
514
|
-
const
|
|
522
|
+
const Option<bool> Options::PrintInterLev(
|
|
515
523
|
"print-interlev",
|
|
516
|
-
|
|
517
|
-
|
|
524
|
+
"Print Thread Interleaving Results",
|
|
525
|
+
false
|
|
518
526
|
);
|
|
519
527
|
|
|
520
|
-
const
|
|
528
|
+
const Option<bool> Options::DoLockAnalysis(
|
|
521
529
|
"lock-analysis",
|
|
522
|
-
|
|
523
|
-
|
|
530
|
+
"Run Lock Analysis",
|
|
531
|
+
true
|
|
524
532
|
);
|
|
525
533
|
|
|
526
534
|
|
|
527
535
|
// MTA.cpp
|
|
528
|
-
const
|
|
536
|
+
const Option<bool> Options::AndersenAnno(
|
|
529
537
|
"tsan-ander",
|
|
530
|
-
|
|
531
|
-
|
|
538
|
+
"Add TSan annotation according to Andersen",
|
|
539
|
+
false
|
|
532
540
|
);
|
|
533
541
|
|
|
534
|
-
const
|
|
542
|
+
const Option<bool> Options::FSAnno(
|
|
535
543
|
"tsan-fs",
|
|
536
|
-
|
|
537
|
-
|
|
544
|
+
"Add TSan annotation according to flow-sensitive analysis",
|
|
545
|
+
false
|
|
538
546
|
);
|
|
539
547
|
|
|
540
548
|
|
|
541
549
|
// MTAAnnotator.cpp
|
|
542
|
-
const
|
|
550
|
+
const Option<u32_t> Options::AnnoFlag(
|
|
543
551
|
"anno",
|
|
544
|
-
|
|
545
|
-
|
|
552
|
+
"prune annotated instructions: 0001 Thread Local; 0002 Alias; 0004 MHP.",
|
|
553
|
+
0
|
|
546
554
|
);
|
|
547
555
|
|
|
548
556
|
|
|
549
557
|
// MTAResultValidator.cpp
|
|
550
|
-
const
|
|
558
|
+
const Option<bool> Options::PrintValidRes(
|
|
551
559
|
"mhp-validation",
|
|
552
|
-
|
|
553
|
-
|
|
560
|
+
"Print MHP Validation Results",
|
|
561
|
+
false
|
|
554
562
|
);
|
|
555
563
|
// LockResultValidator.cpp
|
|
556
|
-
const
|
|
564
|
+
const Option<bool> Options::LockValid(
|
|
557
565
|
"lock-validation",
|
|
558
|
-
|
|
559
|
-
|
|
566
|
+
"Print Lock Validation Results",
|
|
567
|
+
false
|
|
560
568
|
);
|
|
561
569
|
|
|
562
570
|
|
|
563
571
|
// MTAStat.cpp
|
|
564
|
-
const
|
|
572
|
+
const Option<bool> Options::AllPairMHP(
|
|
565
573
|
"all-pair-mhp",
|
|
566
|
-
|
|
567
|
-
|
|
574
|
+
"All pair MHP computation",
|
|
575
|
+
false
|
|
568
576
|
);
|
|
569
577
|
|
|
570
578
|
|
|
571
579
|
// PCG.cpp
|
|
572
|
-
//const
|
|
573
|
-
//
|
|
574
|
-
//
|
|
575
|
-
//
|
|
580
|
+
//const Option<bool> TDPrint(
|
|
581
|
+
// "print-td",
|
|
582
|
+
// "Print Thread Analysis Results",
|
|
583
|
+
// true
|
|
584
|
+
//);
|
|
576
585
|
|
|
577
586
|
|
|
578
587
|
// TCT.cpp
|
|
579
|
-
const
|
|
588
|
+
const Option<bool> Options::TCTDotGraph(
|
|
580
589
|
"dump-tct",
|
|
581
|
-
|
|
582
|
-
|
|
590
|
+
"Dump dot graph of Call Graph",
|
|
591
|
+
false
|
|
583
592
|
);
|
|
584
593
|
|
|
585
594
|
|
|
586
595
|
// LeakChecker.cpp
|
|
587
|
-
const
|
|
596
|
+
const Option<bool> Options::ValidateTests(
|
|
588
597
|
"valid-tests",
|
|
589
|
-
|
|
590
|
-
|
|
598
|
+
"Validate memory leak tests",
|
|
599
|
+
false
|
|
591
600
|
);
|
|
592
601
|
|
|
593
602
|
|
|
594
603
|
// Source-sink analyzer (SrcSnkDDA.cpp)
|
|
595
|
-
const
|
|
604
|
+
const Option<bool> Options::DumpSlice(
|
|
596
605
|
"dump-slice",
|
|
597
|
-
|
|
598
|
-
|
|
606
|
+
"Dump dot graph of Saber Slices",
|
|
607
|
+
false
|
|
599
608
|
);
|
|
600
609
|
|
|
601
|
-
const
|
|
610
|
+
const Option<u32_t> Options::CxtLimit(
|
|
602
611
|
"cxt-limit",
|
|
603
|
-
|
|
604
|
-
|
|
612
|
+
"Source-Sink Analysis Contexts Limit",
|
|
613
|
+
3
|
|
605
614
|
);
|
|
606
615
|
|
|
607
616
|
|
|
608
617
|
// CHG.cpp
|
|
609
|
-
const
|
|
618
|
+
const Option<bool> Options::DumpCHA(
|
|
610
619
|
"dump-cha",
|
|
611
|
-
|
|
612
|
-
|
|
620
|
+
"dump the class hierarchy graph",
|
|
621
|
+
false
|
|
613
622
|
);
|
|
614
623
|
|
|
615
624
|
|
|
616
625
|
// DCHG.cpp
|
|
617
|
-
const
|
|
626
|
+
const Option<bool> Options::PrintDCHG(
|
|
618
627
|
"print-dchg",
|
|
619
|
-
|
|
620
|
-
|
|
628
|
+
"print the DCHG if debug information is available",
|
|
629
|
+
false
|
|
621
630
|
);
|
|
622
631
|
|
|
623
632
|
|
|
624
633
|
// LLVMModule.cpp
|
|
625
|
-
const
|
|
634
|
+
const Option<std::string> Options::Graphtxt(
|
|
626
635
|
"graph-txt",
|
|
627
|
-
|
|
628
|
-
|
|
636
|
+
"graph txt file to build SVFIR",
|
|
637
|
+
""
|
|
629
638
|
);
|
|
630
639
|
|
|
631
|
-
const
|
|
640
|
+
const Option<bool> Options::SVFMain(
|
|
632
641
|
"svf-main",
|
|
633
|
-
|
|
634
|
-
|
|
642
|
+
"add svf.main()",
|
|
643
|
+
false
|
|
635
644
|
);
|
|
636
645
|
|
|
637
|
-
const
|
|
646
|
+
const Option<bool> Options::ModelConsts(
|
|
638
647
|
"model-consts",
|
|
639
|
-
|
|
640
|
-
|
|
648
|
+
"Modeling individual constant objects",
|
|
649
|
+
false
|
|
641
650
|
);
|
|
642
651
|
|
|
643
|
-
const
|
|
652
|
+
const Option<bool> Options::ModelArrays(
|
|
644
653
|
"model-arrays",
|
|
645
|
-
|
|
646
|
-
|
|
654
|
+
"Modeling Gep offsets for array accesses",
|
|
655
|
+
false
|
|
647
656
|
);
|
|
648
657
|
|
|
649
|
-
const
|
|
650
|
-
"print-symbol-table",
|
|
651
|
-
|
|
658
|
+
const Option<bool> Options::SymTabPrint(
|
|
659
|
+
"print-symbol-table",
|
|
660
|
+
"Print Symbol Table to command line",
|
|
661
|
+
false
|
|
652
662
|
);
|
|
653
663
|
|
|
654
664
|
|
|
655
665
|
|
|
656
666
|
// Conditions.cpp
|
|
657
|
-
const
|
|
667
|
+
const Option<u32_t> Options::MaxZ3Size(
|
|
658
668
|
"max-z3-size",
|
|
659
|
-
|
|
660
|
-
|
|
669
|
+
"Maximum size limit for Z3 expression",
|
|
670
|
+
30
|
|
661
671
|
);
|
|
662
672
|
|
|
663
673
|
|
|
664
674
|
// SaberCondAllocator.cpp
|
|
665
|
-
const
|
|
675
|
+
const Option<bool> Options::PrintPathCond(
|
|
666
676
|
"print-pc",
|
|
667
|
-
|
|
668
|
-
|
|
677
|
+
"Print out path condition",
|
|
678
|
+
false
|
|
669
679
|
);
|
|
670
680
|
|
|
671
681
|
|
|
672
682
|
// SVFUtil.cpp
|
|
673
|
-
const
|
|
683
|
+
const Option<bool> Options::DisableWarn(
|
|
674
684
|
"dwarn",
|
|
675
|
-
|
|
676
|
-
|
|
685
|
+
"Disable warning",
|
|
686
|
+
true
|
|
677
687
|
);
|
|
678
688
|
|
|
679
689
|
|
|
680
690
|
// Andersen.cpp
|
|
681
|
-
const
|
|
691
|
+
const Option<bool> Options::ConsCGDotGraph(
|
|
682
692
|
"dump-constraint-graph",
|
|
683
|
-
|
|
684
|
-
|
|
693
|
+
"Dump dot graph of Constraint Graph",
|
|
694
|
+
false
|
|
685
695
|
);
|
|
686
696
|
|
|
687
|
-
const
|
|
697
|
+
const Option<bool> Options::BriefConsCGDotGraph(
|
|
688
698
|
"brief-constraint-graph",
|
|
689
|
-
|
|
690
|
-
|
|
699
|
+
"Dump dot graph of Constraint Graph",
|
|
700
|
+
true
|
|
691
701
|
);
|
|
692
702
|
|
|
693
|
-
const
|
|
703
|
+
const Option<bool> Options::PrintCGGraph(
|
|
694
704
|
"print-constraint-graph",
|
|
695
|
-
|
|
696
|
-
|
|
705
|
+
"Print Constraint Graph to Terminal",
|
|
706
|
+
false
|
|
697
707
|
);
|
|
698
708
|
|
|
699
|
-
const
|
|
709
|
+
const Option<std::string> Options::WriteAnder(
|
|
700
710
|
"write-ander",
|
|
701
|
-
|
|
702
|
-
|
|
711
|
+
"-write-ander=ir_annotator (Annotated IR with Andersen's results) or write Andersen's analysis results to a user-specified text file",
|
|
712
|
+
""
|
|
703
713
|
);
|
|
704
714
|
|
|
705
|
-
const
|
|
715
|
+
const Option<std::string> Options::ReadAnder(
|
|
706
716
|
"read-ander",
|
|
707
|
-
|
|
708
|
-
|
|
717
|
+
"-read-ander=ir_annotator (Read Andersen's analysis results from the annotated IR, e.g., *.pre.bc) or from a text file",
|
|
718
|
+
""
|
|
709
719
|
);
|
|
710
720
|
|
|
711
|
-
const
|
|
721
|
+
const Option<bool> Options::DiffPts(
|
|
712
722
|
"diff",
|
|
713
|
-
|
|
714
|
-
|
|
723
|
+
"Enable differential point-to set",
|
|
724
|
+
true
|
|
715
725
|
);
|
|
716
726
|
|
|
717
|
-
|
|
727
|
+
Option<bool> Options::DetectPWC(
|
|
718
728
|
"merge-pwc",
|
|
719
|
-
|
|
720
|
-
|
|
729
|
+
"Enable PWC detection",
|
|
730
|
+
true
|
|
721
731
|
);
|
|
722
732
|
|
|
723
733
|
//SVFIRBuilder.cpp
|
|
724
|
-
const
|
|
734
|
+
const Option<bool> Options::VtableInSVFIR(
|
|
725
735
|
"vt-in-ir",
|
|
726
|
-
|
|
727
|
-
|
|
736
|
+
"Handle vtable in ConstantArray/ConstantStruct in SVFIRBuilder (already handled in CHA?)",
|
|
737
|
+
false
|
|
728
738
|
);
|
|
729
739
|
|
|
730
740
|
|
|
731
741
|
//WPAPass.cpp
|
|
732
|
-
const
|
|
742
|
+
const Option<bool> Options::AnderSVFG(
|
|
733
743
|
"svfg",
|
|
734
|
-
|
|
735
|
-
|
|
744
|
+
"Generate SVFG after Andersen's Analysis",
|
|
745
|
+
false
|
|
736
746
|
);
|
|
737
747
|
|
|
738
|
-
const
|
|
748
|
+
const Option<bool> Options::SABERFULLSVFG(
|
|
739
749
|
"saber-full-svfg",
|
|
740
|
-
|
|
741
|
-
|
|
750
|
+
"When using SABER for bug detection pass, enable full svfg on top of the pointer-only one",
|
|
751
|
+
false
|
|
742
752
|
);
|
|
743
753
|
|
|
744
|
-
const
|
|
754
|
+
const Option<bool> Options::PrintAliases(
|
|
745
755
|
"print-aliases",
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
);
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
756
|
+
"Print results for all pair aliases",
|
|
757
|
+
false
|
|
758
|
+
);
|
|
759
|
+
|
|
760
|
+
OptionMultiple<PointerAnalysis::PTATY> Options::PASelected(
|
|
761
|
+
"Select pointer analysis",
|
|
762
|
+
{
|
|
763
|
+
{PointerAnalysis::Andersen_WPA, "nander", "Standard inclusion-based analysis"},
|
|
764
|
+
{PointerAnalysis::AndersenSCD_WPA, "sander", "Selective cycle detection inclusion-based analysis"},
|
|
765
|
+
{PointerAnalysis::AndersenSFR_WPA, "sfrander", "Stride-based field representation includion-based analysis"},
|
|
766
|
+
{PointerAnalysis::AndersenWaveDiff_WPA, "ander", "Diff wave propagation inclusion-based analysis"},
|
|
767
|
+
{PointerAnalysis::Steensgaard_WPA, "steens", "Steensgaard's pointer analysis"},
|
|
768
|
+
// Disabled till further work is done.
|
|
769
|
+
{PointerAnalysis::FSSPARSE_WPA, "fspta", "Sparse flow sensitive pointer analysis"},
|
|
770
|
+
{PointerAnalysis::VFS_WPA, "vfspta", "Versioned sparse flow-sensitive points-to analysis"},
|
|
771
|
+
{PointerAnalysis::TypeCPP_WPA, "type", "Type-based fast analysis for Callgraph, SVFIR and CHA"},
|
|
772
|
+
}
|
|
773
|
+
);
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
OptionMultiple<WPAPass::AliasCheckRule> Options::AliasRule(
|
|
777
|
+
"Select alias check rule",
|
|
778
|
+
{
|
|
779
|
+
{WPAPass::Conservative, "conservative", "return MayAlias if any pta says alias"},
|
|
780
|
+
{WPAPass::Veto, "veto", "return NoAlias if any pta says no alias"},
|
|
781
|
+
}
|
|
782
|
+
);
|
|
783
|
+
|
|
784
|
+
const Option<bool> Options::ShowHiddenNode(
|
|
772
785
|
"show-hidden-nodes",
|
|
773
|
-
|
|
774
|
-
|
|
786
|
+
"Show hidden nodes on DOT Graphs (e.g., isolated node on a graph)",
|
|
787
|
+
false
|
|
775
788
|
);
|
|
776
789
|
|
|
777
|
-
const
|
|
790
|
+
const Option<std::string> Options::GrammarFilename(
|
|
778
791
|
"grammar",
|
|
779
|
-
|
|
780
|
-
|
|
792
|
+
"<Grammar textfile>",
|
|
793
|
+
""
|
|
781
794
|
);
|
|
782
795
|
|
|
783
|
-
const
|
|
796
|
+
const Option<std::string> Options::CFLGraph(
|
|
784
797
|
"cflgraph",
|
|
785
|
-
|
|
786
|
-
|
|
798
|
+
"<Dot file as the CFLGraph input>",
|
|
799
|
+
""
|
|
787
800
|
);
|
|
788
801
|
|
|
789
|
-
const
|
|
802
|
+
const Option<bool> Options::PrintCFL(
|
|
790
803
|
"print-cfl",
|
|
791
|
-
|
|
792
|
-
|
|
804
|
+
"Print ir, grammar and cflgraph for debug.",
|
|
805
|
+
false
|
|
793
806
|
);
|
|
794
807
|
|
|
795
|
-
const
|
|
808
|
+
const Option<bool> Options::FlexSymMap(
|
|
796
809
|
"flex-symmap",
|
|
797
|
-
|
|
798
|
-
|
|
810
|
+
"Extend exist sym map while read graph from dot if sym not in map.",
|
|
811
|
+
false
|
|
799
812
|
);
|
|
800
813
|
|
|
801
|
-
const
|
|
814
|
+
const Option<bool> Options::PEGTransfer(
|
|
802
815
|
"peg-transfer",
|
|
803
|
-
|
|
804
|
-
|
|
816
|
+
"When explicit to true, cfl graph builder will transfer PAG load and store edges to copy and addr.",
|
|
817
|
+
false
|
|
805
818
|
);
|
|
806
819
|
|
|
807
|
-
const
|
|
820
|
+
const Option<bool> Options::CFLSVFG(
|
|
808
821
|
"cflsvfg",
|
|
809
|
-
|
|
810
|
-
|
|
822
|
+
"When explicit to true, cfl graph builder will transfer SVFG to CFL Reachability.",
|
|
823
|
+
false
|
|
811
824
|
);
|
|
812
825
|
|
|
826
|
+
const Option<bool> Options::POCRAlias(
|
|
827
|
+
"pocr-alias",
|
|
828
|
+
"When explicit to true, cfl data builder will transfer CFL graph to CFLData.",
|
|
829
|
+
false
|
|
830
|
+
);
|
|
813
831
|
|
|
814
|
-
const
|
|
832
|
+
const Option<bool> Options::LoopAnalysis(
|
|
815
833
|
"loop-analysis",
|
|
816
|
-
|
|
817
|
-
|
|
834
|
+
"Analyze every func and get loop info and loop bounds.",
|
|
835
|
+
true
|
|
818
836
|
);
|
|
819
837
|
|
|
820
|
-
const
|
|
838
|
+
const Option<u32_t> Options::LoopBound(
|
|
821
839
|
"loop-bound",
|
|
822
|
-
|
|
823
|
-
|
|
840
|
+
"Maximum number of loop",
|
|
841
|
+
1
|
|
842
|
+
);
|
|
824
843
|
|
|
825
844
|
} // namespace SVF.
|