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/SVFStat.cpp
CHANGED
|
@@ -40,21 +40,21 @@ double SVFStat::timeOfBuildingSymbolTable = 0;
|
|
|
40
40
|
|
|
41
41
|
SVFStat::SVFStat() : startTime(0), endTime(0)
|
|
42
42
|
{
|
|
43
|
-
assert((Options::ClockType == ClockType::Wall || Options::ClockType == ClockType::CPU)
|
|
43
|
+
assert((Options::ClockType() == ClockType::Wall || Options::ClockType() == ClockType::CPU)
|
|
44
44
|
&& "PTAStat: unknown clock type!");
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
double SVFStat::getClk(bool mark)
|
|
48
48
|
{
|
|
49
|
-
if (Options::MarkedClocksOnly && !mark) return 0.0;
|
|
49
|
+
if (Options::MarkedClocksOnly() && !mark) return 0.0;
|
|
50
50
|
|
|
51
|
-
if (Options::ClockType == ClockType::Wall)
|
|
51
|
+
if (Options::ClockType() == ClockType::Wall)
|
|
52
52
|
{
|
|
53
53
|
struct timespec time;
|
|
54
54
|
clock_gettime(CLOCK_MONOTONIC, &time);
|
|
55
55
|
return (double)(time.tv_nsec + time.tv_sec * 1000000000) / 1000000.0;
|
|
56
56
|
}
|
|
57
|
-
else if (Options::ClockType == ClockType::CPU)
|
|
57
|
+
else if (Options::ClockType() == ClockType::CPU)
|
|
58
58
|
{
|
|
59
59
|
return CLOCK_IN_MS();
|
|
60
60
|
}
|
|
@@ -255,4 +255,4 @@ void PTAStat::bitcastInstStat()
|
|
|
255
255
|
|
|
256
256
|
generalNumMap["BitCastNumber"] = numberOfBitCast;
|
|
257
257
|
}
|
|
258
|
-
*/
|
|
258
|
+
*/
|
package/lib/Util/SVFUtil.cpp
CHANGED
package/lib/Util/Z3Expr.cpp
CHANGED
|
@@ -107,7 +107,7 @@ Z3Expr Z3Expr::AND(const Z3Expr &lhs, const Z3Expr &rhs)
|
|
|
107
107
|
{
|
|
108
108
|
Z3Expr expr = lhs && rhs;
|
|
109
109
|
// check subexpression size and option limit
|
|
110
|
-
if (Z3Expr::getExprSize(expr) > Options::MaxZ3Size)
|
|
110
|
+
if (Z3Expr::getExprSize(expr) > Options::MaxZ3Size())
|
|
111
111
|
{
|
|
112
112
|
getSolver().push();
|
|
113
113
|
getSolver().add(expr.getExpr());
|
|
@@ -145,7 +145,7 @@ Z3Expr Z3Expr::OR(const Z3Expr &lhs, const Z3Expr &rhs)
|
|
|
145
145
|
{
|
|
146
146
|
Z3Expr expr = lhs || rhs;
|
|
147
147
|
// check subexpression size and option limit
|
|
148
|
-
if (Z3Expr::getExprSize(expr) > Options::MaxZ3Size)
|
|
148
|
+
if (Z3Expr::getExprSize(expr) > Options::MaxZ3Size())
|
|
149
149
|
{
|
|
150
150
|
getSolver().push();
|
|
151
151
|
getSolver().add(expr.getExpr());
|
package/lib/WPA/Andersen.cpp
CHANGED
|
@@ -79,7 +79,7 @@ void AndersenBase::initialize()
|
|
|
79
79
|
setGraph(consCG);
|
|
80
80
|
/// Create statistic class
|
|
81
81
|
stat = new AndersenStat(this);
|
|
82
|
-
if (Options::ConsCGDotGraph)
|
|
82
|
+
if (Options::ConsCGDotGraph())
|
|
83
83
|
consCG->dump("consCG_initial");
|
|
84
84
|
}
|
|
85
85
|
|
|
@@ -89,10 +89,10 @@ void AndersenBase::initialize()
|
|
|
89
89
|
void AndersenBase::finalize()
|
|
90
90
|
{
|
|
91
91
|
/// dump constraint graph if PAGDotGraph flag is enabled
|
|
92
|
-
if (Options::ConsCGDotGraph)
|
|
92
|
+
if (Options::ConsCGDotGraph())
|
|
93
93
|
consCG->dump("consCG_final");
|
|
94
94
|
|
|
95
|
-
if (Options::PrintCGGraph)
|
|
95
|
+
if (Options::PrintCGGraph())
|
|
96
96
|
consCG->print();
|
|
97
97
|
BVDataPTAImpl::finalize();
|
|
98
98
|
}
|
|
@@ -106,22 +106,22 @@ void AndersenBase::analyze()
|
|
|
106
106
|
initialize();
|
|
107
107
|
|
|
108
108
|
bool readResultsFromFile = false;
|
|
109
|
-
if(!Options::ReadAnder.empty())
|
|
109
|
+
if(!Options::ReadAnder().empty())
|
|
110
110
|
{
|
|
111
|
-
readResultsFromFile = this->readFromFile(Options::ReadAnder);
|
|
111
|
+
readResultsFromFile = this->readFromFile(Options::ReadAnder());
|
|
112
112
|
// Finalize the analysis
|
|
113
113
|
PointerAnalysis::finalize();
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
if (!Options::WriteAnder.empty())
|
|
117
|
-
this->writeObjVarToFile(Options::WriteAnder);
|
|
116
|
+
if (!Options::WriteAnder().empty())
|
|
117
|
+
this->writeObjVarToFile(Options::WriteAnder());
|
|
118
118
|
|
|
119
119
|
if(!readResultsFromFile)
|
|
120
120
|
{
|
|
121
121
|
// Start solving constraints
|
|
122
122
|
DBOUT(DGENERAL, outs() << SVFUtil::pasMsg("Start Solving Constraints\n"));
|
|
123
123
|
|
|
124
|
-
bool limitTimerSet = SVFUtil::startAnalysisLimitTimer(Options::AnderTimeLimit);
|
|
124
|
+
bool limitTimerSet = SVFUtil::startAnalysisLimitTimer(Options::AnderTimeLimit());
|
|
125
125
|
|
|
126
126
|
initWorklist();
|
|
127
127
|
do
|
|
@@ -147,9 +147,9 @@ void AndersenBase::analyze()
|
|
|
147
147
|
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
if (!Options::WriteAnder.empty())
|
|
150
|
+
if (!Options::WriteAnder().empty())
|
|
151
151
|
{
|
|
152
|
-
this->writeToFile(Options::WriteAnder);
|
|
152
|
+
this->writeToFile(Options::WriteAnder());
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
if (!readResultsFromFile)
|
|
@@ -196,7 +196,7 @@ void Andersen::initialize()
|
|
|
196
196
|
resetData();
|
|
197
197
|
AndersenBase::initialize();
|
|
198
198
|
|
|
199
|
-
if (Options::ClusterAnder) cluster();
|
|
199
|
+
if (Options::ClusterAnder()) cluster();
|
|
200
200
|
|
|
201
201
|
/// Initialize worklist
|
|
202
202
|
processAllAddr();
|
|
@@ -209,7 +209,7 @@ void Andersen::finalize()
|
|
|
209
209
|
{
|
|
210
210
|
// TODO: check -stat too.
|
|
211
211
|
// TODO: broken
|
|
212
|
-
if (Options::ClusterAnder)
|
|
212
|
+
if (Options::ClusterAnder())
|
|
213
213
|
{
|
|
214
214
|
Map<std::string, std::string> stats;
|
|
215
215
|
const PTDataTy *ptd = getPTDataTy();
|
|
@@ -844,7 +844,7 @@ void Andersen::updateNodeRepAndSubs(NodeID nodeId, NodeID newRepId)
|
|
|
844
844
|
|
|
845
845
|
void Andersen::cluster(void) const
|
|
846
846
|
{
|
|
847
|
-
assert(Options::MaxFieldLimit == 0 && "Andersen::cluster: clustering for Andersen's is currently only supported in field-insesnsitive analysis");
|
|
847
|
+
assert(Options::MaxFieldLimit() == 0 && "Andersen::cluster: clustering for Andersen's is currently only supported in field-insesnsitive analysis");
|
|
848
848
|
Steensgaard *steens = Steensgaard::createSteensgaard(pag);
|
|
849
849
|
std::vector<std::pair<unsigned, unsigned>> keys;
|
|
850
850
|
for (SVFIR::iterator pit = pag->begin(); pit != pag->end(); ++pit)
|
package/lib/WPA/AndersenSCD.cpp
CHANGED
|
@@ -108,7 +108,7 @@ NodeStack& AndersenSCD::SCCDetect()
|
|
|
108
108
|
double mergeEnd = stat->getClk();
|
|
109
109
|
timeOfSCCMerges += (mergeEnd - mergeStart)/TIMEINTERVAL;
|
|
110
110
|
|
|
111
|
-
if (Options::DetectPWC)
|
|
111
|
+
if (Options::DetectPWC())
|
|
112
112
|
{
|
|
113
113
|
sccStart = stat->getClk();
|
|
114
114
|
PWCDetect();
|
|
@@ -133,7 +133,7 @@ void AndersenSCD::PWCDetect()
|
|
|
133
133
|
tmpSccCandidates.clear();
|
|
134
134
|
|
|
135
135
|
// set scc edge type as direct edge
|
|
136
|
-
bool pwcFlag = Options::DetectPWC;
|
|
136
|
+
bool pwcFlag = Options::DetectPWC();
|
|
137
137
|
setDetectPWC(true);
|
|
138
138
|
|
|
139
139
|
getSCCDetector()->find(sccCandidates);
|
|
@@ -150,7 +150,7 @@ void AndersenSCD::handleCopyGep(ConstraintNode* node)
|
|
|
150
150
|
{
|
|
151
151
|
NodeID nodeId = node->getId();
|
|
152
152
|
|
|
153
|
-
if (!Options::DetectPWC && getSCCDetector()->subNodes(nodeId).count() > 1)
|
|
153
|
+
if (!Options::DetectPWC() && getSCCDetector()->subNodes(nodeId).count() > 1)
|
|
154
154
|
processPWC(node);
|
|
155
155
|
else if(isInWorklist(nodeId))
|
|
156
156
|
Andersen::handleCopyGep(node);
|
|
@@ -49,20 +49,20 @@ void FlowSensitive::initialize()
|
|
|
49
49
|
stat = new FlowSensitiveStat(this);
|
|
50
50
|
|
|
51
51
|
// TODO: support clustered aux. Andersen's.
|
|
52
|
-
assert(!Options::ClusterAnder && "FlowSensitive::initialize: clustering auxiliary Andersen's unsupported.");
|
|
52
|
+
assert(!Options::ClusterAnder() && "FlowSensitive::initialize: clustering auxiliary Andersen's unsupported.");
|
|
53
53
|
ander = AndersenWaveDiff::createAndersenWaveDiff(getPAG());
|
|
54
54
|
|
|
55
55
|
// If cluster option is not set, it will give us a no-mapping points-to set.
|
|
56
|
-
assert(!(Options::ClusterFs && Options::PlainMappingFs)
|
|
56
|
+
assert(!(Options::ClusterFs() && Options::PlainMappingFs())
|
|
57
57
|
&& "FS::init: plain-mapping and cluster-fs are mutually exclusive.");
|
|
58
|
-
if (Options::ClusterFs)
|
|
58
|
+
if (Options::ClusterFs())
|
|
59
59
|
{
|
|
60
60
|
cluster();
|
|
61
61
|
// Reset the points-to cache although empty so the new mapping could
|
|
62
62
|
// be applied to the inserted empty set.
|
|
63
63
|
getPtCache().reset();
|
|
64
64
|
}
|
|
65
|
-
else if (Options::PlainMappingFs)
|
|
65
|
+
else if (Options::PlainMappingFs())
|
|
66
66
|
{
|
|
67
67
|
plainMap();
|
|
68
68
|
// As above.
|
|
@@ -80,7 +80,7 @@ void FlowSensitive::initialize()
|
|
|
80
80
|
*/
|
|
81
81
|
void FlowSensitive::analyze()
|
|
82
82
|
{
|
|
83
|
-
bool limitTimerSet = SVFUtil::startAnalysisLimitTimer(Options::FsTimeLimit);
|
|
83
|
+
bool limitTimerSet = SVFUtil::startAnalysisLimitTimer(Options::FsTimeLimit());
|
|
84
84
|
|
|
85
85
|
/// Initialization for the Solver
|
|
86
86
|
initialize();
|
|
@@ -120,7 +120,7 @@ void FlowSensitive::analyze()
|
|
|
120
120
|
*/
|
|
121
121
|
void FlowSensitive::finalize()
|
|
122
122
|
{
|
|
123
|
-
if(Options::DumpVFG)
|
|
123
|
+
if(Options::DumpVFG())
|
|
124
124
|
svfg->dump("fs_solved", true);
|
|
125
125
|
|
|
126
126
|
NodeStack& nodeStack = WPASolver<SVFG*>::SCCDetect();
|
|
@@ -139,7 +139,7 @@ void FlowSensitive::finalize()
|
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
// TODO: check -stat too.
|
|
142
|
-
if (Options::ClusterFs)
|
|
142
|
+
if (Options::ClusterFs())
|
|
143
143
|
{
|
|
144
144
|
Map<std::string, std::string> stats;
|
|
145
145
|
const PTDataTy *ptd = getPTDataTy();
|
|
@@ -791,7 +791,7 @@ void FlowSensitive::cluster(void)
|
|
|
791
791
|
|
|
792
792
|
void FlowSensitive::plainMap(void) const
|
|
793
793
|
{
|
|
794
|
-
assert(Options::NodeAllocStrat == NodeIDAllocator::Strategy::DENSE
|
|
794
|
+
assert(Options::NodeAllocStrat() == NodeIDAllocator::Strategy::DENSE
|
|
795
795
|
&& "FS::cluster: plain mapping requires dense allocation strategy.");
|
|
796
796
|
|
|
797
797
|
const size_t numObjects = NodeIDAllocator::get()->getNumObjects();
|
package/lib/WPA/TypeAnalysis.cpp
CHANGED
|
@@ -39,7 +39,7 @@ VersionedFlowSensitive::VersionedFlowSensitive(SVFIR *_pag, PTATY type)
|
|
|
39
39
|
if (SVFUtil::isa<ObjVar>(it->second)) equivalentObject[it->first] = it->first;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
assert(!Options::OPTSVFG && "VFS: -opt-svfg not currently supported with VFS.");
|
|
42
|
+
assert(!Options::OPTSVFG() && "VFS: -opt-svfg not currently supported with VFS.");
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
void VersionedFlowSensitive::initialize()
|
|
@@ -121,7 +121,7 @@ void VersionedFlowSensitive::meldLabel(void)
|
|
|
121
121
|
{
|
|
122
122
|
double start = stat->getClk(true);
|
|
123
123
|
|
|
124
|
-
assert(Options::VersioningThreads > 0 && "VFS::meldLabel: number of versioning threads must be > 0!");
|
|
124
|
+
assert(Options::VersioningThreads() > 0 && "VFS::meldLabel: number of versioning threads must be > 0!");
|
|
125
125
|
|
|
126
126
|
// Nodes which have at least one object on them given a prelabel + the Andersen's points-to
|
|
127
127
|
// set of interest so we don't keep calling getPts. For Store nodes, we'll fill that in, for
|
|
@@ -414,7 +414,7 @@ void VersionedFlowSensitive::meldLabel(void)
|
|
|
414
414
|
};
|
|
415
415
|
|
|
416
416
|
std::vector<std::thread> workers;
|
|
417
|
-
for (unsigned i = 0; i < Options::VersioningThreads; ++i) workers.push_back(std::thread(meldVersionWorker, i));
|
|
417
|
+
for (unsigned i = 0; i < Options::VersioningThreads(); ++i) workers.push_back(std::thread(meldVersionWorker, i));
|
|
418
418
|
for (std::thread &worker : workers) worker.join();
|
|
419
419
|
|
|
420
420
|
delete[] versionMutexes;
|
|
@@ -777,7 +777,7 @@ void VersionedFlowSensitive::cluster(void)
|
|
|
777
777
|
{
|
|
778
778
|
unsigned occ = 1;
|
|
779
779
|
unsigned v = pit->first;
|
|
780
|
-
if (Options::PredictPtOcc && pag->getObject(v) != nullptr) occ = stmtReliance[v].size() + 1;
|
|
780
|
+
if (Options::PredictPtOcc() && pag->getObject(v) != nullptr) occ = stmtReliance[v].size() + 1;
|
|
781
781
|
assert(occ != 0);
|
|
782
782
|
keys.push_back(std::make_pair(v, occ));
|
|
783
783
|
}
|
package/lib/WPA/WPAPass.cpp
CHANGED
|
@@ -70,7 +70,8 @@ void WPAPass::runOnModule(SVFIR* pag)
|
|
|
70
70
|
{
|
|
71
71
|
for (u32_t i = 0; i<= PointerAnalysis::Default_PTA; i++)
|
|
72
72
|
{
|
|
73
|
-
|
|
73
|
+
PointerAnalysis::PTATY iPtaTy = static_cast<PointerAnalysis::PTATY>(i);
|
|
74
|
+
if (Options::PASelected(iPtaTy))
|
|
74
75
|
runPointerAnalysis(pag, i);
|
|
75
76
|
}
|
|
76
77
|
assert(!ptaVector.empty() && "No pointer analysis is specified.\n");
|
|
@@ -115,17 +116,17 @@ void WPAPass::runPointerAnalysis(SVFIR* pag, u32_t kind)
|
|
|
115
116
|
|
|
116
117
|
ptaVector.push_back(_pta);
|
|
117
118
|
_pta->analyze();
|
|
118
|
-
if (Options::AnderSVFG)
|
|
119
|
+
if (Options::AnderSVFG())
|
|
119
120
|
{
|
|
120
121
|
SVFGBuilder memSSA(true);
|
|
121
122
|
assert(SVFUtil::isa<AndersenBase>(_pta) && "supports only andersen/steensgaard for pre-computed SVFG");
|
|
122
123
|
SVFG *svfg = memSSA.buildFullSVFG((BVDataPTAImpl*)_pta);
|
|
123
124
|
/// support mod-ref queries only for -ander
|
|
124
|
-
if (Options::PASelected
|
|
125
|
+
if (Options::PASelected(PointerAnalysis::AndersenWaveDiff_WPA))
|
|
125
126
|
_svfg = svfg;
|
|
126
127
|
}
|
|
127
128
|
|
|
128
|
-
if (Options::PrintAliases)
|
|
129
|
+
if (Options::PrintAliases())
|
|
129
130
|
PrintAliasPairs(_pta);
|
|
130
131
|
}
|
|
131
132
|
|
|
@@ -172,7 +173,7 @@ AliasResult WPAPass::alias(const SVFValue* V1, const SVFValue* V2)
|
|
|
172
173
|
if (pag->hasValueNode(V1) && pag->hasValueNode(V2))
|
|
173
174
|
{
|
|
174
175
|
/// Veto is used by default
|
|
175
|
-
if (Options::AliasRule.
|
|
176
|
+
if (Options::AliasRule.nothingSet() || Options::AliasRule(Veto))
|
|
176
177
|
{
|
|
177
178
|
/// Return NoAlias if any PTA gives NoAlias result
|
|
178
179
|
result = AliasResult::MayAlias;
|
|
@@ -184,7 +185,7 @@ AliasResult WPAPass::alias(const SVFValue* V1, const SVFValue* V2)
|
|
|
184
185
|
result = AliasResult::NoAlias;
|
|
185
186
|
}
|
|
186
187
|
}
|
|
187
|
-
else if (Options::AliasRule
|
|
188
|
+
else if (Options::AliasRule(Conservative))
|
|
188
189
|
{
|
|
189
190
|
/// Return MayAlias if any PTA gives MayAlias result
|
|
190
191
|
result = AliasResult::NoAlias;
|
|
@@ -206,7 +207,7 @@ AliasResult WPAPass::alias(const SVFValue* V1, const SVFValue* V2)
|
|
|
206
207
|
*/
|
|
207
208
|
ModRefInfo WPAPass::getModRefInfo(const CallSite callInst)
|
|
208
209
|
{
|
|
209
|
-
assert(Options::PASelected
|
|
210
|
+
assert(Options::PASelected(PointerAnalysis::AndersenWaveDiff_WPA) && Options::AnderSVFG() && "mod-ref query is only support with -ander and -svfg turned on");
|
|
210
211
|
ICFG* icfg = _svfg->getPAG()->getICFG();
|
|
211
212
|
const CallICFGNode* cbn = icfg->getCallICFGNode(callInst.getInstruction());
|
|
212
213
|
return _svfg->getMSSA()->getMRGenerator()->getModRefInfo(cbn);
|
|
@@ -217,7 +218,7 @@ ModRefInfo WPAPass::getModRefInfo(const CallSite callInst)
|
|
|
217
218
|
*/
|
|
218
219
|
ModRefInfo WPAPass::getModRefInfo(const CallSite callInst, const SVFValue* V)
|
|
219
220
|
{
|
|
220
|
-
assert(Options::PASelected
|
|
221
|
+
assert(Options::PASelected(PointerAnalysis::AndersenWaveDiff_WPA) && Options::AnderSVFG() && "mod-ref query is only support with -ander and -svfg turned on");
|
|
221
222
|
ICFG* icfg = _svfg->getPAG()->getICFG();
|
|
222
223
|
const CallICFGNode* cbn = icfg->getCallICFGNode(callInst.getInstruction());
|
|
223
224
|
return _svfg->getMSSA()->getMRGenerator()->getModRefInfo(cbn, V);
|
|
@@ -228,7 +229,7 @@ ModRefInfo WPAPass::getModRefInfo(const CallSite callInst, const SVFValue* V)
|
|
|
228
229
|
*/
|
|
229
230
|
ModRefInfo WPAPass::getModRefInfo(const CallSite callInst1, const CallSite callInst2)
|
|
230
231
|
{
|
|
231
|
-
assert(Options::PASelected
|
|
232
|
+
assert(Options::PASelected(PointerAnalysis::AndersenWaveDiff_WPA) && Options::AnderSVFG() && "mod-ref query is only support with -ander and -svfg turned on");
|
|
232
233
|
ICFG* icfg = _svfg->getPAG()->getICFG();
|
|
233
234
|
const CallICFGNode* cbn1 = icfg->getCallICFGNode(callInst1.getInstruction());
|
|
234
235
|
const CallICFGNode* cbn2 = icfg->getCallICFGNode(callInst2.getInstruction());
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.621",
|
|
4
4
|
"description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
package/tools/CFL/cfl.cpp
CHANGED
|
@@ -35,29 +35,21 @@
|
|
|
35
35
|
using namespace llvm;
|
|
36
36
|
using namespace SVF;
|
|
37
37
|
|
|
38
|
-
static cl::opt<bool>
|
|
39
|
-
StandardCompileOpts("std-compile-opts",
|
|
40
|
-
cl::desc("Include the standard compile time optimizations"));
|
|
41
|
-
|
|
42
|
-
static llvm::cl::opt<std::string> InputFilename(llvm::cl::Positional,
|
|
43
|
-
llvm::cl::desc("<input bitcode>"), llvm::cl::init("-"));
|
|
44
|
-
|
|
45
38
|
int main(int argc, char ** argv)
|
|
46
39
|
{
|
|
47
|
-
int arg_num = 0;
|
|
48
40
|
char **arg_value = new char*[argc];
|
|
49
41
|
std::vector<std::string> moduleNameVec;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
42
|
+
moduleNameVec = OptionBase::parseOptions(
|
|
43
|
+
argc, argv, "CFL Reachability Analysis", "[options] <input-bitcode...>"
|
|
44
|
+
);
|
|
53
45
|
|
|
54
|
-
if (Options::WriteAnder == "ir_annotator")
|
|
46
|
+
if (Options::WriteAnder() == "ir_annotator")
|
|
55
47
|
{
|
|
56
48
|
LLVMModuleSet::getLLVMModuleSet()->preProcessBCs(moduleNameVec);
|
|
57
49
|
}
|
|
58
50
|
|
|
59
51
|
SVFIR* svfir = nullptr;
|
|
60
|
-
if (Options::CFLGraph.empty())
|
|
52
|
+
if (Options::CFLGraph().empty())
|
|
61
53
|
{
|
|
62
54
|
SVFModule* svfModule = LLVMModuleSet::getLLVMModuleSet()->buildSVFModule(moduleNameVec);
|
|
63
55
|
SVFIRBuilder builder(svfModule);
|
|
@@ -65,8 +57,10 @@ int main(int argc, char ** argv)
|
|
|
65
57
|
} // if no dot form CFLGraph is specified, we use svfir from .bc.
|
|
66
58
|
|
|
67
59
|
std::unique_ptr<CFLBase> cfl;
|
|
68
|
-
if (Options::CFLSVFG)
|
|
60
|
+
if (Options::CFLSVFG())
|
|
69
61
|
cfl = std::make_unique<CFLVF>(svfir);
|
|
62
|
+
else if (Options::POCRAlias())
|
|
63
|
+
cfl = std::make_unique<POCRAlias>(svfir);
|
|
70
64
|
else
|
|
71
65
|
cfl = std::make_unique<CFLAlias>(svfir); // if no svfg is specified, we use CFLAlias as the default one.
|
|
72
66
|
cfl->analyze();
|
package/tools/DDA/dda.cpp
CHANGED
|
@@ -14,45 +14,55 @@
|
|
|
14
14
|
using namespace llvm;
|
|
15
15
|
using namespace SVF;
|
|
16
16
|
|
|
17
|
-
static cl::opt<bool>
|
|
18
|
-
StandardCompileOpts("std-compile-opts",
|
|
19
|
-
cl::desc("Include the standard compile time optimizations"));
|
|
20
|
-
|
|
21
|
-
static llvm::cl::opt<std::string> InputFilename(llvm::cl::Positional,
|
|
22
|
-
llvm::cl::desc("<input bitcode>"), llvm::cl::init("-"));
|
|
23
|
-
|
|
24
17
|
//static cl::list<const PassInfo*, bool, PassNameParser>
|
|
25
18
|
//PassList(cl::desc("Optimizations available:"));
|
|
26
19
|
|
|
27
|
-
static
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
static
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
static
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
20
|
+
static Option<bool> DAA(
|
|
21
|
+
"daa",
|
|
22
|
+
"Demand-Driven Alias Analysis Pass",
|
|
23
|
+
false
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
static Option<bool> REGPT(
|
|
27
|
+
"dreg",
|
|
28
|
+
"Demand-driven regular points-to analysis",
|
|
29
|
+
false
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
static Option<bool> RFINEPT(
|
|
33
|
+
"dref",
|
|
34
|
+
"Demand-driven refinement points-to analysis",
|
|
35
|
+
false
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
static Option<bool> ENABLEFIELD(
|
|
39
|
+
"fdaa",
|
|
40
|
+
"enable field-sensitivity for demand-driven analysis",
|
|
41
|
+
false
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
static Option<bool> ENABLECONTEXT(
|
|
45
|
+
"cdaa",
|
|
46
|
+
"enable context-sensitivity for demand-driven analysis",
|
|
47
|
+
false
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
static Option<bool> ENABLEFLOW(
|
|
51
|
+
"ldaa",
|
|
52
|
+
"enable flow-sensitivity for demand-driven analysis",
|
|
53
|
+
false
|
|
54
|
+
);
|
|
44
55
|
|
|
45
56
|
int main(int argc, char ** argv)
|
|
46
57
|
{
|
|
47
58
|
|
|
48
|
-
int arg_num = 0;
|
|
49
59
|
char **arg_value = new char*[argc];
|
|
50
60
|
std::vector<std::string> moduleNameVec;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
61
|
+
moduleNameVec = OptionBase::parseOptions(
|
|
62
|
+
argc, argv, "Demand-Driven Points-to Analysis", "[options] <input-bitcode...>"
|
|
63
|
+
);
|
|
54
64
|
|
|
55
|
-
if (Options::WriteAnder == "ir_annotator")
|
|
65
|
+
if (Options::WriteAnder() == "ir_annotator")
|
|
56
66
|
{
|
|
57
67
|
LLVMModuleSet::getLLVMModuleSet()->preProcessBCs(moduleNameVec);
|
|
58
68
|
}
|
package/tools/Example/svf-ex.cpp
CHANGED
|
@@ -30,15 +30,13 @@
|
|
|
30
30
|
#include "Graphs/SVFG.h"
|
|
31
31
|
#include "WPA/Andersen.h"
|
|
32
32
|
#include "SVF-LLVM/SVFIRBuilder.h"
|
|
33
|
+
#include "Util/CommandLine.h"
|
|
33
34
|
#include "Util/Options.h"
|
|
34
35
|
|
|
35
36
|
using namespace llvm;
|
|
36
37
|
using namespace std;
|
|
37
38
|
using namespace SVF;
|
|
38
39
|
|
|
39
|
-
static llvm::cl::opt<std::string> InputFilename(llvm::cl::Positional,
|
|
40
|
-
llvm::cl::desc("<input bitcode>"), llvm::cl::init("-"));
|
|
41
|
-
|
|
42
40
|
/*!
|
|
43
41
|
* An example to query alias results of two LLVM values
|
|
44
42
|
*/
|
|
@@ -145,14 +143,13 @@ void traverseOnVFG(const SVFG* vfg, SVFValue* val)
|
|
|
145
143
|
int main(int argc, char ** argv)
|
|
146
144
|
{
|
|
147
145
|
|
|
148
|
-
int arg_num = 0;
|
|
149
146
|
char **arg_value = new char*[argc];
|
|
150
147
|
std::vector<std::string> moduleNameVec;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
148
|
+
moduleNameVec = OptionBase::parseOptions(
|
|
149
|
+
argc, argv, "Whole Program Points-to Analysis", "[options] <input-bitcode...>"
|
|
150
|
+
);
|
|
154
151
|
|
|
155
|
-
if (Options::WriteAnder == "ir_annotator")
|
|
152
|
+
if (Options::WriteAnder() == "ir_annotator")
|
|
156
153
|
{
|
|
157
154
|
LLVMModuleSet::getLLVMModuleSet()->preProcessBCs(moduleNameVec);
|
|
158
155
|
}
|
|
@@ -155,7 +155,7 @@ LockResultValidator::LOCK_FLAG LockResultValidator::validateStmtInLock()
|
|
|
155
155
|
CxtLockSetStr LS = instToCxtLockSet[inst];
|
|
156
156
|
if(LS.size() != (*it).second.size())
|
|
157
157
|
{
|
|
158
|
-
if (Options::PrintValidRes)
|
|
158
|
+
if (Options::PrintValidRes())
|
|
159
159
|
{
|
|
160
160
|
outs() << errMsg("\nValidate Stmt's Lock : Wrong at: ") << inst->toString() << "\n";
|
|
161
161
|
outs() << "Reason: The number of lock on current stmt is wrong\n";
|
|
@@ -185,7 +185,7 @@ LockResultValidator::LOCK_FLAG LockResultValidator::validateStmtInLock()
|
|
|
185
185
|
std::string lockName = SVFUtil::getSVFCallSite(call).getArgOperand(0)->getName();
|
|
186
186
|
if(!match(lockName, LS))
|
|
187
187
|
{
|
|
188
|
-
if(Options::PrintValidRes)
|
|
188
|
+
if(Options::PrintValidRes())
|
|
189
189
|
{
|
|
190
190
|
outs() << "\nValidate Stmt's Lock : Wrong at (" << inst->toString() << ")\n";
|
|
191
191
|
outs() << "Reason: The number of lock on current stmt is wrong\n";
|
|
@@ -108,14 +108,14 @@ void MTAAnnotator::initialize(MHP* m, LockAnalysis* la)
|
|
|
108
108
|
{
|
|
109
109
|
mhp = m;
|
|
110
110
|
lsa = la;
|
|
111
|
-
if (!Options::AnnoFlag)
|
|
111
|
+
if (!Options::AnnoFlag())
|
|
112
112
|
return;
|
|
113
113
|
collectLoadStoreInst(mhp->getTCT()->getPTA()->getModule());
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
void MTAAnnotator::pruneThreadLocal(PointerAnalysis* pta)
|
|
117
117
|
{
|
|
118
|
-
bool AnnoLocal = Options::AnnoFlag & ANNO_LOCAL;
|
|
118
|
+
bool AnnoLocal = Options::AnnoFlag() & ANNO_LOCAL;
|
|
119
119
|
if (!AnnoLocal)
|
|
120
120
|
return;
|
|
121
121
|
|
|
@@ -202,8 +202,8 @@ void MTAAnnotator::pruneThreadLocal(PointerAnalysis* pta)
|
|
|
202
202
|
void MTAAnnotator::pruneAliasMHP(PointerAnalysis* pta)
|
|
203
203
|
{
|
|
204
204
|
|
|
205
|
-
bool AnnoMHP = Options::AnnoFlag & ANNO_MHP;
|
|
206
|
-
bool AnnoAlias = Options::AnnoFlag & ANNO_ALIAS;
|
|
205
|
+
bool AnnoMHP = Options::AnnoFlag() & ANNO_MHP;
|
|
206
|
+
bool AnnoAlias = Options::AnnoFlag() & ANNO_ALIAS;
|
|
207
207
|
|
|
208
208
|
if (!AnnoMHP && !AnnoAlias)
|
|
209
209
|
return;
|
|
@@ -280,7 +280,7 @@ void MTAAnnotator::pruneAliasMHP(PointerAnalysis* pta)
|
|
|
280
280
|
}
|
|
281
281
|
void MTAAnnotator::performAnnotate()
|
|
282
282
|
{
|
|
283
|
-
if (!Options::AnnoFlag)
|
|
283
|
+
if (!Options::AnnoFlag())
|
|
284
284
|
return;
|
|
285
285
|
for (InstSet::iterator it = storeset.begin(), eit = storeset.end(); it != eit; ++it)
|
|
286
286
|
{
|