svf-tools 1.0.481 → 1.0.482
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/AndersenSFR_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/Andersen_8h_source.html +6 -6
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +14 -15
- package/SVF-doxygen/html/html/CPPUtil_8h_source.html +14 -14
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ExeState_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +4 -4
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +12 -12
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitive_8cpp.html +0 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +32 -38
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +66 -67
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -7
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +17 -21
- package/SVF-doxygen/html/html/Options_8h_source.html +13 -16
- package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +21 -22
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +17 -17
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp.html +0 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +64 -69
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +109 -110
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +9 -9
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +26 -32
- package/SVF-doxygen/html/html/SVFVariables_8h.html +0 -6
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +109 -130
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +5 -5
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
- package/SVF-doxygen/html/html/WPAPass_8cpp.html +0 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +16 -19
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +6 -6
- package/SVF-doxygen/html/html/annotated.html +248 -253
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +173 -174
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +27 -29
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +146 -147
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +17 -19
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +185 -186
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +7 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +189 -190
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +6 -7
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +180 -181
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +8 -9
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +182 -183
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +11 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +185 -186
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +8 -9
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +177 -178
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +8 -9
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +103 -104
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +42 -48
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +73 -74
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +13 -14
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +94 -95
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +26 -28
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +163 -164
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +33 -35
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +72 -75
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +16 -27
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +70 -73
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +17 -20
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +72 -75
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +18 -29
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +112 -114
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +12 -15
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +163 -164
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +25 -27
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +106 -108
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +234 -314
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +77 -80
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +38 -49
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +73 -76
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +28 -31
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +44 -45
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +4 -45
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +71 -74
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +30 -42
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +104 -107
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +13 -94
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +69 -70
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +302 -319
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +70 -73
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +18 -21
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +73 -76
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +84 -99
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -3
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +157 -158
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +6 -7
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +150 -151
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +21 -23
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +69 -72
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +23 -26
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +70 -73
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +18 -21
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +125 -127
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +44 -48
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +6 -7
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +38 -40
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +17 -15
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver.png +0 -0
- package/SVF-doxygen/html/html/classes.html +104 -105
- package/SVF-doxygen/html/html/dir_66541c162fd98954e2c32089ba9a721f.html +0 -4
- package/SVF-doxygen/html/html/dir_ea25a8a5b2904424d8a51916f8b475b2.html +0 -4
- package/SVF-doxygen/html/html/files.html +12 -16
- package/SVF-doxygen/html/html/functions_0x7e.html +0 -6
- package/SVF-doxygen/html/html/functions_a.html +8 -30
- package/SVF-doxygen/html/html/functions_b.html +8 -12
- package/SVF-doxygen/html/html/functions_c.html +24 -54
- package/SVF-doxygen/html/html/functions_d.html +1 -13
- package/SVF-doxygen/html/html/functions_e.html +1 -2
- package/SVF-doxygen/html/html/functions_eval_c.html +0 -9
- package/SVF-doxygen/html/html/functions_eval_f.html +0 -3
- package/SVF-doxygen/html/html/functions_f.html +19 -24
- package/SVF-doxygen/html/html/functions_func.html +6 -25
- package/SVF-doxygen/html/html/functions_func_0x7e.html +0 -6
- package/SVF-doxygen/html/html/functions_func_b.html +1 -5
- package/SVF-doxygen/html/html/functions_func_c.html +20 -37
- package/SVF-doxygen/html/html/functions_func_d.html +0 -6
- package/SVF-doxygen/html/html/functions_func_e.html +2 -3
- package/SVF-doxygen/html/html/functions_func_f.html +1 -5
- package/SVF-doxygen/html/html/functions_func_g.html +8 -48
- package/SVF-doxygen/html/html/functions_func_i.html +5 -15
- package/SVF-doxygen/html/html/functions_func_p.html +2 -16
- package/SVF-doxygen/html/html/functions_func_s.html +6 -19
- package/SVF-doxygen/html/html/functions_func_t.html +0 -6
- package/SVF-doxygen/html/html/functions_func_u.html +0 -4
- package/SVF-doxygen/html/html/functions_func_v.html +0 -3
- package/SVF-doxygen/html/html/functions_g.html +12 -55
- package/SVF-doxygen/html/html/functions_i.html +11 -21
- package/SVF-doxygen/html/html/functions_l.html +8 -14
- package/SVF-doxygen/html/html/functions_m.html +0 -6
- package/SVF-doxygen/html/html/functions_n.html +0 -36
- package/SVF-doxygen/html/html/functions_o.html +12 -20
- package/SVF-doxygen/html/html/functions_p.html +9 -31
- package/SVF-doxygen/html/html/functions_s.html +15 -31
- package/SVF-doxygen/html/html/functions_t.html +8 -18
- package/SVF-doxygen/html/html/functions_u.html +2 -9
- package/SVF-doxygen/html/html/functions_v.html +7 -10
- package/SVF-doxygen/html/html/functions_vars_a.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_c.html +0 -6
- package/SVF-doxygen/html/html/functions_vars_d.html +0 -6
- package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_l.html +0 -6
- package/SVF-doxygen/html/html/functions_vars_m.html +0 -6
- package/SVF-doxygen/html/html/functions_vars_n.html +0 -36
- package/SVF-doxygen/html/html/functions_vars_o.html +0 -12
- package/SVF-doxygen/html/html/functions_vars_p.html +0 -4
- package/SVF-doxygen/html/html/functions_vars_s.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_t.html +0 -6
- package/SVF-doxygen/html/html/functions_vars_u.html +0 -3
- package/SVF-doxygen/html/html/functions_w.html +10 -6
- package/SVF-doxygen/html/html/globals_func_g.html +0 -3
- package/SVF-doxygen/html/html/globals_func_i.html +2 -7
- package/SVF-doxygen/html/html/globals_g.html +2 -5
- package/SVF-doxygen/html/html/globals_i.html +4 -7
- package/SVF-doxygen/html/html/globals_r.html +3 -3
- package/SVF-doxygen/html/html/globals_s.html +9 -7
- package/SVF-doxygen/html/html/hierarchy.html +13 -19
- package/SVF-doxygen/html/html/namespaceSVF.html +0 -10
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +36 -38
- package/SVF-doxygen/html/html/search/all_1.js +1 -8
- package/SVF-doxygen/html/html/search/all_10.js +19 -21
- package/SVF-doxygen/html/html/search/all_12.js +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +12 -17
- package/SVF-doxygen/html/html/search/all_14.js +8 -12
- package/SVF-doxygen/html/html/search/all_15.js +5 -6
- package/SVF-doxygen/html/html/search/all_16.js +4 -5
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_1b.js +0 -2
- package/SVF-doxygen/html/html/search/all_2.js +0 -1
- package/SVF-doxygen/html/html/search/all_3.js +2 -11
- package/SVF-doxygen/html/html/search/all_4.js +0 -4
- package/SVF-doxygen/html/html/search/all_5.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +2 -6
- package/SVF-doxygen/html/html/search/all_7.js +3 -16
- package/SVF-doxygen/html/html/search/all_9.js +5 -8
- package/SVF-doxygen/html/html/search/all_c.js +4 -6
- package/SVF-doxygen/html/html/search/all_d.js +4 -6
- package/SVF-doxygen/html/html/search/all_e.js +3 -15
- package/SVF-doxygen/html/html/search/all_f.js +0 -4
- package/SVF-doxygen/html/html/search/classes_10.js +1 -2
- package/SVF-doxygen/html/html/search/classes_2.js +0 -3
- package/SVF-doxygen/html/html/search/classes_5.js +0 -1
- package/SVF-doxygen/html/html/search/enumvalues_2.js +0 -3
- package/SVF-doxygen/html/html/search/enumvalues_5.js +0 -1
- package/SVF-doxygen/html/html/search/files_5.js +0 -2
- package/SVF-doxygen/html/html/search/files_e.js +1 -3
- package/SVF-doxygen/html/html/search/functions_0.js +1 -7
- package/SVF-doxygen/html/html/search/functions_1.js +0 -1
- package/SVF-doxygen/html/html/search/functions_11.js +2 -6
- package/SVF-doxygen/html/html/search/functions_12.js +2 -3
- package/SVF-doxygen/html/html/search/functions_13.js +4 -4
- package/SVF-doxygen/html/html/search/functions_14.js +0 -1
- package/SVF-doxygen/html/html/search/functions_17.js +0 -2
- package/SVF-doxygen/html/html/search/functions_2.js +2 -6
- package/SVF-doxygen/html/html/search/functions_3.js +0 -2
- package/SVF-doxygen/html/html/search/functions_4.js +1 -1
- package/SVF-doxygen/html/html/search/functions_5.js +1 -2
- package/SVF-doxygen/html/html/search/functions_6.js +3 -15
- package/SVF-doxygen/html/html/search/functions_8.js +4 -7
- package/SVF-doxygen/html/html/search/functions_f.js +12 -13
- package/SVF-doxygen/html/html/search/variables_1.js +0 -1
- package/SVF-doxygen/html/html/search/variables_10.js +1 -2
- package/SVF-doxygen/html/html/search/variables_13.js +0 -1
- package/SVF-doxygen/html/html/search/variables_14.js +3 -5
- package/SVF-doxygen/html/html/search/variables_15.js +1 -2
- package/SVF-doxygen/html/html/search/variables_3.js +0 -2
- package/SVF-doxygen/html/html/search/variables_4.js +0 -2
- package/SVF-doxygen/html/html/search/variables_5.js +1 -1
- package/SVF-doxygen/html/html/search/variables_7.js +0 -1
- package/SVF-doxygen/html/html/search/variables_c.js +1 -3
- package/SVF-doxygen/html/html/search/variables_d.js +1 -3
- package/SVF-doxygen/html/html/search/variables_e.js +2 -14
- package/SVF-doxygen/html/html/search/variables_f.js +0 -4
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +4 -4
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/build.sh +1 -28
- package/include/MemoryModel/PointerAnalysis.h +0 -1
- package/include/MemoryModel/SVFVariables.h +11 -140
- package/include/SVF-FE/LLVMModule.h +0 -24
- package/include/Util/Options.h +0 -7
- package/include/WPA/FlowSensitive.h +0 -4
- package/lib/MemoryModel/PointerAnalysis.cpp +4 -22
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
- package/lib/MemoryModel/SVFVariables.cpp +1 -28
- package/lib/SVF-FE/CPPUtil.cpp +0 -7
- package/lib/Util/Options.cpp +0 -24
- package/lib/WPA/FlowSensitive.cpp +1 -75
- package/lib/WPA/WPAPass.cpp +0 -4
- package/package.json +1 -1
- package/include/WPA/FlowSensitiveTBHC.h +0 -122
- package/include/WPA/TypeBasedHeapCloning.h +0 -188
- package/lib/WPA/FlowSensitiveTBHC.cpp +0 -695
- package/lib/WPA/TypeBasedHeapCloning.cpp +0 -795
|
@@ -58,7 +58,6 @@ public:
|
|
|
58
58
|
/// GepValNode: tempory gep obj node for field sensitivity
|
|
59
59
|
/// FIObjNode: for field insensitive analysis
|
|
60
60
|
/// DummyValNode and DummyObjNode: for non-llvm-value node
|
|
61
|
-
/// Clone*Node: objects created by TBHC.
|
|
62
61
|
enum PNODEK
|
|
63
62
|
{
|
|
64
63
|
ValNode,
|
|
@@ -70,9 +69,6 @@ public:
|
|
|
70
69
|
FIObjNode,
|
|
71
70
|
DummyValNode,
|
|
72
71
|
DummyObjNode,
|
|
73
|
-
CloneGepObjNode, // NOTE: only used for TBHC.
|
|
74
|
-
CloneFIObjNode, // NOTE: only used for TBHC.
|
|
75
|
-
CloneDummyObjNode // NOTE: only used for TBHC.
|
|
76
72
|
};
|
|
77
73
|
|
|
78
74
|
|
|
@@ -327,20 +323,14 @@ public:
|
|
|
327
323
|
return node->getNodeKind() == SVFVar::ObjNode ||
|
|
328
324
|
node->getNodeKind() == SVFVar::GepObjNode ||
|
|
329
325
|
node->getNodeKind() == SVFVar::FIObjNode ||
|
|
330
|
-
node->getNodeKind() == SVFVar::DummyObjNode
|
|
331
|
-
node->getNodeKind() == SVFVar::CloneGepObjNode ||
|
|
332
|
-
node->getNodeKind() == SVFVar::CloneFIObjNode ||
|
|
333
|
-
node->getNodeKind() == SVFVar::CloneDummyObjNode;
|
|
326
|
+
node->getNodeKind() == SVFVar::DummyObjNode;
|
|
334
327
|
}
|
|
335
328
|
static inline bool classof(const GenericPAGNodeTy *node)
|
|
336
329
|
{
|
|
337
330
|
return node->getNodeKind() == SVFVar::ObjNode ||
|
|
338
331
|
node->getNodeKind() == SVFVar::GepObjNode ||
|
|
339
332
|
node->getNodeKind() == SVFVar::FIObjNode ||
|
|
340
|
-
node->getNodeKind() == SVFVar::DummyObjNode
|
|
341
|
-
node->getNodeKind() == SVFVar::CloneGepObjNode ||
|
|
342
|
-
node->getNodeKind() == SVFVar::CloneFIObjNode ||
|
|
343
|
-
node->getNodeKind() == SVFVar::CloneDummyObjNode;
|
|
333
|
+
node->getNodeKind() == SVFVar::DummyObjNode;
|
|
344
334
|
}
|
|
345
335
|
//@}
|
|
346
336
|
|
|
@@ -448,18 +438,15 @@ public:
|
|
|
448
438
|
}
|
|
449
439
|
static inline bool classof(const ObjVar * node)
|
|
450
440
|
{
|
|
451
|
-
return node->getNodeKind() == SVFVar::GepObjNode
|
|
452
|
-
|| node->getNodeKind() == SVFVar::CloneGepObjNode;
|
|
441
|
+
return node->getNodeKind() == SVFVar::GepObjNode;
|
|
453
442
|
}
|
|
454
443
|
static inline bool classof(const SVFVar *node)
|
|
455
444
|
{
|
|
456
|
-
return node->getNodeKind() == SVFVar::GepObjNode
|
|
457
|
-
|| node->getNodeKind() == SVFVar::CloneGepObjNode;
|
|
445
|
+
return node->getNodeKind() == SVFVar::GepObjNode;
|
|
458
446
|
}
|
|
459
447
|
static inline bool classof(const GenericPAGNodeTy *node)
|
|
460
448
|
{
|
|
461
|
-
return node->getNodeKind() == SVFVar::GepObjNode
|
|
462
|
-
|| node->getNodeKind() == SVFVar::CloneGepObjNode;
|
|
449
|
+
return node->getNodeKind() == SVFVar::GepObjNode;
|
|
463
450
|
}
|
|
464
451
|
//@}
|
|
465
452
|
|
|
@@ -527,18 +514,15 @@ public:
|
|
|
527
514
|
}
|
|
528
515
|
static inline bool classof(const ObjVar * node)
|
|
529
516
|
{
|
|
530
|
-
return node->getNodeKind() == SVFVar::FIObjNode
|
|
531
|
-
|| node->getNodeKind() == SVFVar::CloneFIObjNode;
|
|
517
|
+
return node->getNodeKind() == SVFVar::FIObjNode;
|
|
532
518
|
}
|
|
533
519
|
static inline bool classof(const SVFVar *node)
|
|
534
520
|
{
|
|
535
|
-
return node->getNodeKind() == SVFVar::FIObjNode
|
|
536
|
-
|| node->getNodeKind() == SVFVar::CloneFIObjNode;
|
|
521
|
+
return node->getNodeKind() == SVFVar::FIObjNode;
|
|
537
522
|
}
|
|
538
523
|
static inline bool classof(const GenericPAGNodeTy *node)
|
|
539
524
|
{
|
|
540
|
-
return node->getNodeKind() == SVFVar::FIObjNode
|
|
541
|
-
|| node->getNodeKind() == SVFVar::CloneFIObjNode;
|
|
525
|
+
return node->getNodeKind() == SVFVar::FIObjNode;
|
|
542
526
|
}
|
|
543
527
|
//@}
|
|
544
528
|
|
|
@@ -705,18 +689,15 @@ public:
|
|
|
705
689
|
}
|
|
706
690
|
static inline bool classof(const SVFVar *node)
|
|
707
691
|
{
|
|
708
|
-
return node->getNodeKind() == SVFVar::DummyObjNode
|
|
709
|
-
|| node->getNodeKind() == SVFVar::CloneDummyObjNode;
|
|
692
|
+
return node->getNodeKind() == SVFVar::DummyObjNode;
|
|
710
693
|
}
|
|
711
694
|
static inline bool classof(const ObjVar *node)
|
|
712
695
|
{
|
|
713
|
-
return node->getNodeKind() == SVFVar::DummyObjNode
|
|
714
|
-
|| node->getNodeKind() == SVFVar::CloneDummyObjNode;
|
|
696
|
+
return node->getNodeKind() == SVFVar::DummyObjNode;
|
|
715
697
|
}
|
|
716
698
|
static inline bool classof(const GenericPAGNodeTy *node)
|
|
717
699
|
{
|
|
718
|
-
return node->getNodeKind() == SVFVar::DummyObjNode
|
|
719
|
-
|| node->getNodeKind() == SVFVar::CloneDummyObjNode;
|
|
700
|
+
return node->getNodeKind() == SVFVar::DummyObjNode;
|
|
720
701
|
}
|
|
721
702
|
//@}
|
|
722
703
|
|
|
@@ -735,116 +716,6 @@ public:
|
|
|
735
716
|
virtual const std::string toString() const;
|
|
736
717
|
};
|
|
737
718
|
|
|
738
|
-
/*
|
|
739
|
-
* Clone object node for dummy objects.
|
|
740
|
-
*/
|
|
741
|
-
class CloneDummyObjVar: public DummyObjVar
|
|
742
|
-
{
|
|
743
|
-
public:
|
|
744
|
-
//@{ Methods to support type inquiry through isa, cast, and dyn_cast:
|
|
745
|
-
static inline bool classof(const CloneDummyObjVar *)
|
|
746
|
-
{
|
|
747
|
-
return true;
|
|
748
|
-
}
|
|
749
|
-
static inline bool classof(const SVFVar *node)
|
|
750
|
-
{
|
|
751
|
-
return node->getNodeKind() == SVFVar::CloneDummyObjNode;
|
|
752
|
-
}
|
|
753
|
-
static inline bool classof(const GenericPAGNodeTy *node)
|
|
754
|
-
{
|
|
755
|
-
return node->getNodeKind() == SVFVar::CloneDummyObjNode;
|
|
756
|
-
}
|
|
757
|
-
//@}
|
|
758
|
-
|
|
759
|
-
/// Constructor
|
|
760
|
-
CloneDummyObjVar(NodeID i, const MemObj* m, PNODEK ty = CloneDummyObjNode)
|
|
761
|
-
: DummyObjVar(i, m, ty)
|
|
762
|
-
{
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
/// Return name of this node
|
|
766
|
-
inline const std::string getValueName() const
|
|
767
|
-
{
|
|
768
|
-
return "clone of " + ObjVar::getValueName();
|
|
769
|
-
}
|
|
770
|
-
|
|
771
|
-
virtual const std::string toString() const;
|
|
772
|
-
};
|
|
773
|
-
|
|
774
|
-
/*
|
|
775
|
-
* Clone object for GEP objects.
|
|
776
|
-
*/
|
|
777
|
-
class CloneGepObjVar : public GepObjVar
|
|
778
|
-
{
|
|
779
|
-
public:
|
|
780
|
-
//@{ Methods to support type inquiry through isa, cast, and dyn_cast:
|
|
781
|
-
static inline bool classof(const CloneGepObjVar *)
|
|
782
|
-
{
|
|
783
|
-
return true;
|
|
784
|
-
}
|
|
785
|
-
static inline bool classof(const SVFVar *node)
|
|
786
|
-
{
|
|
787
|
-
return node->getNodeKind() == SVFVar::CloneGepObjNode;
|
|
788
|
-
}
|
|
789
|
-
static inline bool classof(const GenericPAGNodeTy *node)
|
|
790
|
-
{
|
|
791
|
-
return node->getNodeKind() == SVFVar::CloneGepObjNode;
|
|
792
|
-
}
|
|
793
|
-
//@}
|
|
794
|
-
|
|
795
|
-
/// Constructor
|
|
796
|
-
CloneGepObjVar(const MemObj* mem, NodeID i, const LocationSet& l, PNODEK ty = CloneGepObjNode) :
|
|
797
|
-
GepObjVar(mem, i, l, ty)
|
|
798
|
-
{
|
|
799
|
-
}
|
|
800
|
-
|
|
801
|
-
/// Return name of this node
|
|
802
|
-
inline const std::string getValueName() const
|
|
803
|
-
{
|
|
804
|
-
return "clone (gep) of " + GepObjVar::getValueName();
|
|
805
|
-
}
|
|
806
|
-
|
|
807
|
-
virtual const std::string toString() const;
|
|
808
|
-
};
|
|
809
|
-
|
|
810
|
-
/*
|
|
811
|
-
* Clone object for FI objects.
|
|
812
|
-
*/
|
|
813
|
-
class CloneFIObjVar : public FIObjVar
|
|
814
|
-
{
|
|
815
|
-
public:
|
|
816
|
-
//@{ Methods to support type inquiry through isa, cast, and dyn_cast:
|
|
817
|
-
static inline bool classof(const CloneFIObjVar *)
|
|
818
|
-
{
|
|
819
|
-
return true;
|
|
820
|
-
}
|
|
821
|
-
static inline bool classof(const SVFVar *node)
|
|
822
|
-
{
|
|
823
|
-
return node->getNodeKind() == SVFVar::CloneFIObjNode;
|
|
824
|
-
}
|
|
825
|
-
static inline bool classof(const GenericPAGNodeTy *node)
|
|
826
|
-
{
|
|
827
|
-
return node->getNodeKind() == SVFVar::CloneFIObjNode;
|
|
828
|
-
}
|
|
829
|
-
//@}
|
|
830
|
-
|
|
831
|
-
/// Constructor
|
|
832
|
-
CloneFIObjVar(const Value* val, NodeID i, const MemObj* mem, PNODEK ty = CloneFIObjNode) :
|
|
833
|
-
FIObjVar(val, i, mem, ty)
|
|
834
|
-
{
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
/// Return name of this node
|
|
838
|
-
inline const std::string getValueName() const
|
|
839
|
-
{
|
|
840
|
-
return "clone (FI) of " + FIObjVar::getValueName();
|
|
841
|
-
}
|
|
842
|
-
|
|
843
|
-
virtual const std::string toString() const;
|
|
844
|
-
};
|
|
845
|
-
|
|
846
719
|
} // End namespace SVF
|
|
847
720
|
|
|
848
|
-
|
|
849
|
-
|
|
850
721
|
#endif /* OBJECTANDSYMBOL_H_ */
|
|
@@ -208,30 +208,6 @@ public:
|
|
|
208
208
|
return getModuleNum() == 0;
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
-
/// Returns true if all LLVM modules are compiled with ctir.
|
|
212
|
-
bool allCTir(void) const
|
|
213
|
-
{
|
|
214
|
-
// Iterate over all modules. If a single module does not have the correct ctir module flag,
|
|
215
|
-
// short-circuit and return false.
|
|
216
|
-
for (u32_t i = 0; i < getModuleNum(); ++i)
|
|
217
|
-
{
|
|
218
|
-
llvm::Metadata *ctirModuleFlag = llvmModuleSet->getModule(i)->getModuleFlag(cppUtil::ctir::derefMDName);
|
|
219
|
-
if (ctirModuleFlag == nullptr)
|
|
220
|
-
{
|
|
221
|
-
return false;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
llvm::ConstantAsMetadata *flagConstMetadata = SVFUtil::dyn_cast<llvm::ConstantAsMetadata>(ctirModuleFlag);
|
|
225
|
-
ConstantInt *flagConstInt = SVFUtil::dyn_cast<ConstantInt>(flagConstMetadata->getValue());
|
|
226
|
-
if (flagConstInt->getZExtValue() != cppUtil::ctir::moduleFlagValue)
|
|
227
|
-
{
|
|
228
|
-
return false;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
return true;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
211
|
private:
|
|
236
212
|
void loadModules(const std::vector<std::string> &moduleNameVec);
|
|
237
213
|
void addSVFMain();
|
package/include/Util/Options.h
CHANGED
|
@@ -237,13 +237,6 @@ public:
|
|
|
237
237
|
static const llvm::cl::opt<bool> PtsDiff;
|
|
238
238
|
static const llvm::cl::opt<bool> MergePWC;
|
|
239
239
|
|
|
240
|
-
// FlowSensitive.cpp
|
|
241
|
-
static const llvm::cl::opt<bool> CTirAliasEval;
|
|
242
|
-
|
|
243
|
-
//FlowSensitiveTBHC.cpp
|
|
244
|
-
static const llvm::cl::opt<bool> TBHCStoreReuse;
|
|
245
|
-
static const llvm::cl::opt<bool> TBHCAllReuse;
|
|
246
|
-
|
|
247
240
|
// WPAPass.cpp
|
|
248
241
|
static const llvm::cl::opt<bool> AnderSVFG;
|
|
249
242
|
static const llvm::cl::opt<bool> SABERFULLSVFG;
|
|
@@ -240,10 +240,6 @@ protected:
|
|
|
240
240
|
/// Return TRUE if this is a strong update STORE statement.
|
|
241
241
|
bool isStrongUpdate(const SVFGNode* node, NodeID& singleton);
|
|
242
242
|
|
|
243
|
-
/// Prints some easily parseable stats on aliasing of relevant CTir TL PTS.
|
|
244
|
-
/// Format: eval-ctir-aliases #TOTAL_TESTS #MAY_ALIAS #NO_ALIAS
|
|
245
|
-
virtual void printCTirAliasStats(void);
|
|
246
|
-
|
|
247
243
|
/// Fills may/noAliases for the location/pointer pairs in cmp.
|
|
248
244
|
virtual void countAliases(Set<std::pair<NodeID, NodeID>> cmp, unsigned *mayAliases, unsigned *noAliases);
|
|
249
245
|
|
|
@@ -42,7 +42,6 @@
|
|
|
42
42
|
#include "MemoryModel/PTAStat.h"
|
|
43
43
|
#include "Graphs/ThreadCallGraph.h"
|
|
44
44
|
#include "Graphs/ICFG.h"
|
|
45
|
-
#include "WPA/FlowSensitiveTBHC.h"
|
|
46
45
|
|
|
47
46
|
#include <iomanip>
|
|
48
47
|
#include <iostream>
|
|
@@ -117,20 +116,10 @@ void PointerAnalysis::initialize()
|
|
|
117
116
|
assert(pag && "SVFIR has not been built!");
|
|
118
117
|
if (chgraph == nullptr)
|
|
119
118
|
{
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
dchg->buildCHG(true);
|
|
125
|
-
chgraph = dchg;
|
|
126
|
-
}
|
|
127
|
-
else
|
|
128
|
-
{
|
|
129
|
-
CHGraph *chg = new CHGraph(pag->getModule());
|
|
130
|
-
CHGBuilder builder(chg);
|
|
131
|
-
builder.buildCHG();
|
|
132
|
-
chgraph = chg;
|
|
133
|
-
}
|
|
119
|
+
CHGraph *chg = new CHGraph(pag->getModule());
|
|
120
|
+
CHGBuilder builder(chg);
|
|
121
|
+
builder.buildCHG();
|
|
122
|
+
chgraph = chg;
|
|
134
123
|
}
|
|
135
124
|
|
|
136
125
|
svfMod = pag->getModule();
|
|
@@ -209,8 +198,6 @@ void PointerAnalysis::finalize()
|
|
|
209
198
|
/// Print statistics
|
|
210
199
|
dumpStat();
|
|
211
200
|
|
|
212
|
-
SVFIR* pag = SVFIR::getPAG();
|
|
213
|
-
|
|
214
201
|
/// Dump results
|
|
215
202
|
if (Options::PTSPrint)
|
|
216
203
|
{
|
|
@@ -233,11 +220,6 @@ void PointerAnalysis::finalize()
|
|
|
233
220
|
if (Options::CallGraphDotGraph)
|
|
234
221
|
getPTACallGraph()->dump("callgraph_final");
|
|
235
222
|
|
|
236
|
-
// FSTBHC has its own TBHC-specific test validation.
|
|
237
|
-
if(!pag->isBuiltFromFile() && alias_validation
|
|
238
|
-
&& !SVFUtil::isa<FlowSensitiveTBHC>(this))
|
|
239
|
-
validateTests();
|
|
240
|
-
|
|
241
223
|
if (!Options::UsePreCompFieldSensitive)
|
|
242
224
|
resetObjFieldSensitive();
|
|
243
225
|
}
|
|
@@ -43,7 +43,7 @@ BVDataPTAImpl::BVDataPTAImpl(SVFIR* p, PointerAnalysis::PTATY type, bool alias_c
|
|
|
43
43
|
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = new PersDiffPTDataTy(getPtCache(), false);
|
|
44
44
|
else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
|
|
45
45
|
}
|
|
46
|
-
else if (type == FSSPARSE_WPA
|
|
46
|
+
else if (type == FSSPARSE_WPA)
|
|
47
47
|
{
|
|
48
48
|
if (Options::INCDFPTData)
|
|
49
49
|
{
|
|
@@ -41,7 +41,7 @@ using namespace SVFUtil;
|
|
|
41
41
|
SVFVar::SVFVar(const Value* val, NodeID i, PNODEK k) :
|
|
42
42
|
GenericPAGNodeTy(i,k), value(val)
|
|
43
43
|
{
|
|
44
|
-
assert( ValNode <= k && k <=
|
|
44
|
+
assert( ValNode <= k && k <= DummyObjNode && "new SVFIR node kind?");
|
|
45
45
|
switch (k)
|
|
46
46
|
{
|
|
47
47
|
case ValNode:
|
|
@@ -67,9 +67,6 @@ SVFVar::SVFVar(const Value* val, NodeID i, PNODEK k) :
|
|
|
67
67
|
case GepObjNode:
|
|
68
68
|
case FIObjNode:
|
|
69
69
|
case DummyObjNode:
|
|
70
|
-
case CloneGepObjNode:
|
|
71
|
-
case CloneFIObjNode:
|
|
72
|
-
case CloneDummyObjNode:
|
|
73
70
|
{
|
|
74
71
|
isPtr = true;
|
|
75
72
|
if(val)
|
|
@@ -202,30 +199,6 @@ const std::string DummyObjVar::toString() const
|
|
|
202
199
|
return rawstr.str();
|
|
203
200
|
}
|
|
204
201
|
|
|
205
|
-
const std::string CloneDummyObjVar::toString() const
|
|
206
|
-
{
|
|
207
|
-
std::string str;
|
|
208
|
-
raw_string_ostream rawstr(str);
|
|
209
|
-
rawstr << "CloneDummyObjVar ID: " << getId();
|
|
210
|
-
return rawstr.str();
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
const std::string CloneGepObjVar::toString() const
|
|
214
|
-
{
|
|
215
|
-
std::string str;
|
|
216
|
-
raw_string_ostream rawstr(str);
|
|
217
|
-
rawstr << "CloneGepObjVar ID: " << getId();
|
|
218
|
-
return rawstr.str();
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
const std::string CloneFIObjVar::toString() const
|
|
222
|
-
{
|
|
223
|
-
std::string str;
|
|
224
|
-
raw_string_ostream rawstr(str);
|
|
225
|
-
rawstr << "CloneFIObjVar ID: " << getId();
|
|
226
|
-
return rawstr.str();
|
|
227
|
-
}
|
|
228
|
-
|
|
229
202
|
/// Whether it is constant data, i.e., "0", "1.001", "str"
|
|
230
203
|
/// or llvm's metadata, i.e., metadata !4087
|
|
231
204
|
bool SVFVar::isConstantData() const
|
package/lib/SVF-FE/CPPUtil.cpp
CHANGED
|
@@ -263,13 +263,6 @@ bool cppUtil::isVirtualCallSite(CallSite cs)
|
|
|
263
263
|
if (cs.getCalledFunction() != nullptr || cs.arg_empty())
|
|
264
264
|
return false;
|
|
265
265
|
|
|
266
|
-
// When compiled with ctir, we'd be using the DCHG which has its own
|
|
267
|
-
// virtual annotations.
|
|
268
|
-
if (LLVMModuleSet::getLLVMModuleSet()->allCTir())
|
|
269
|
-
{
|
|
270
|
-
return cs.getInstruction()->getMetadata(cppUtil::ctir::derefMDName) != nullptr;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
266
|
const Value *vfunc = cs.getCalledValue();
|
|
274
267
|
if (const LoadInst *vfuncloadinst = SVFUtil::dyn_cast<LoadInst>(vfunc))
|
|
275
268
|
{
|
package/lib/Util/Options.cpp
CHANGED
|
@@ -727,29 +727,6 @@ const llvm::cl::opt<bool> Options::MergePWC(
|
|
|
727
727
|
);
|
|
728
728
|
|
|
729
729
|
|
|
730
|
-
// FlowSensitive.cpp
|
|
731
|
-
const llvm::cl::opt<bool> Options::CTirAliasEval(
|
|
732
|
-
"ctir-alias-eval",
|
|
733
|
-
llvm::cl::init(false),
|
|
734
|
-
llvm::cl::desc("Prints alias evaluation of ctir instructions in FS analyses")
|
|
735
|
-
);
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
// FlowSensitiveTBHC.cpp
|
|
739
|
-
/// Whether we allow reuse for TBHC.
|
|
740
|
-
const llvm::cl::opt<bool> Options::TBHCStoreReuse(
|
|
741
|
-
"tbhc-store-reuse",
|
|
742
|
-
llvm::cl::init(false),
|
|
743
|
-
llvm::cl::desc("Allow for object reuse in at stores in FSTBHC")
|
|
744
|
-
);
|
|
745
|
-
|
|
746
|
-
const llvm::cl::opt<bool> Options::TBHCAllReuse(
|
|
747
|
-
"tbhc-all-reuse",
|
|
748
|
-
llvm::cl::init(false),
|
|
749
|
-
llvm::cl::desc("Allow for object reuse everywhere in FSTBHC")
|
|
750
|
-
);
|
|
751
|
-
|
|
752
|
-
|
|
753
730
|
//WPAPass.cpp
|
|
754
731
|
const llvm::cl::opt<bool> Options::AnderSVFG(
|
|
755
732
|
"svfg",
|
|
@@ -783,7 +760,6 @@ llvm::cl::bits<PointerAnalysis::PTATY> Options::PASelected(
|
|
|
783
760
|
// Disabled till further work is done.
|
|
784
761
|
// clEnumValN(PointerAnalysis::AndersenWaveDiffWithType_WPA, "andertype", "Diff wave propagation with type inclusion-based analysis"),
|
|
785
762
|
clEnumValN(PointerAnalysis::FSSPARSE_WPA, "fspta", "Sparse flow sensitive pointer analysis"),
|
|
786
|
-
clEnumValN(PointerAnalysis::FSTBHC_WPA, "fstbhc", "Sparse flow-sensitive type-based heap cloning pointer analysis"),
|
|
787
763
|
clEnumValN(PointerAnalysis::VFS_WPA, "vfspta", "Versioned sparse flow-sensitive points-to analysis"),
|
|
788
764
|
clEnumValN(PointerAnalysis::TypeCPP_WPA, "type", "Type-based fast analysis for Callgraph, SVFIR and CHA")
|
|
789
765
|
));
|
|
@@ -30,13 +30,11 @@
|
|
|
30
30
|
#include "Util/Options.h"
|
|
31
31
|
#include "SVF-FE/DCHG.h"
|
|
32
32
|
#include "Util/SVFModule.h"
|
|
33
|
-
#include "WPA/TypeBasedHeapCloning.h"
|
|
34
33
|
#include "WPA/WPAStat.h"
|
|
35
34
|
#include "WPA/FlowSensitive.h"
|
|
36
35
|
#include "WPA/Andersen.h"
|
|
37
36
|
#include "MemoryModel/PointsTo.h"
|
|
38
37
|
|
|
39
|
-
|
|
40
38
|
using namespace SVF;
|
|
41
39
|
using namespace SVFUtil;
|
|
42
40
|
|
|
@@ -72,9 +70,7 @@ void FlowSensitive::initialize()
|
|
|
72
70
|
getPtCache().reset();
|
|
73
71
|
}
|
|
74
72
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
svfg = Options::CTirAliasEval ? memSSA.buildFullSVFG(ander) : memSSA.buildPTROnlySVFG(ander);
|
|
73
|
+
svfg = memSSA.buildPTROnlySVFG(ander);
|
|
78
74
|
|
|
79
75
|
setGraph(svfg);
|
|
80
76
|
//AndersenWaveDiff::releaseAndersenWaveDiff();
|
|
@@ -116,11 +112,6 @@ void FlowSensitive::analyze()
|
|
|
116
112
|
double end = stat->getClk(true);
|
|
117
113
|
solveTime += (end - start) / TIMEINTERVAL;
|
|
118
114
|
|
|
119
|
-
if (Options::CTirAliasEval)
|
|
120
|
-
{
|
|
121
|
-
printCTirAliasStats();
|
|
122
|
-
}
|
|
123
|
-
|
|
124
115
|
/// finalize the analysis
|
|
125
116
|
finalize();
|
|
126
117
|
}
|
|
@@ -815,71 +806,6 @@ void FlowSensitive::plainMap(void) const
|
|
|
815
806
|
PointsTo::setCurrentBestNodeMapping(plainMapping, reversePlainMapping);
|
|
816
807
|
}
|
|
817
808
|
|
|
818
|
-
void FlowSensitive::printCTirAliasStats(void)
|
|
819
|
-
{
|
|
820
|
-
DCHGraph *dchg = SVFUtil::dyn_cast<DCHGraph>(chgraph);
|
|
821
|
-
assert(dchg && "eval-ctir-aliases needs DCHG.");
|
|
822
|
-
|
|
823
|
-
// < SVFG node ID (loc), SVFIR node of interest (top-level pointer) >.
|
|
824
|
-
Set<std::pair<NodeID, NodeID>> cmpLocs;
|
|
825
|
-
for (SVFG::iterator npair = svfg->begin(); npair != svfg->end(); ++npair)
|
|
826
|
-
{
|
|
827
|
-
NodeID loc = npair->first;
|
|
828
|
-
SVFGNode *node = npair->second;
|
|
829
|
-
|
|
830
|
-
// Only care about loads, stores, and GEPs.
|
|
831
|
-
if (StmtSVFGNode *stmt = SVFUtil::dyn_cast<StmtSVFGNode>(node))
|
|
832
|
-
{
|
|
833
|
-
if (!SVFUtil::isa<LoadSVFGNode>(stmt) && !SVFUtil::isa<StoreSVFGNode>(stmt)
|
|
834
|
-
&& !SVFUtil::isa<GepSVFGNode>(stmt))
|
|
835
|
-
{
|
|
836
|
-
continue;
|
|
837
|
-
}
|
|
838
|
-
|
|
839
|
-
if (!TypeBasedHeapCloning::getRawCTirMetadata(stmt->getInst() ? stmt->getInst() : stmt->getPAGEdge()->getValue()))
|
|
840
|
-
{
|
|
841
|
-
continue;
|
|
842
|
-
}
|
|
843
|
-
|
|
844
|
-
NodeID p = 0;
|
|
845
|
-
if (SVFUtil::isa<LoadSVFGNode>(stmt))
|
|
846
|
-
{
|
|
847
|
-
p = stmt->getPAGSrcNodeID();
|
|
848
|
-
}
|
|
849
|
-
else if (SVFUtil::isa<StoreSVFGNode>(stmt))
|
|
850
|
-
{
|
|
851
|
-
p = stmt->getPAGDstNodeID();
|
|
852
|
-
}
|
|
853
|
-
else if (SVFUtil::isa<GepSVFGNode>(stmt))
|
|
854
|
-
{
|
|
855
|
-
p = stmt->getPAGSrcNodeID();
|
|
856
|
-
}
|
|
857
|
-
else
|
|
858
|
-
{
|
|
859
|
-
// Not interested.
|
|
860
|
-
continue;
|
|
861
|
-
}
|
|
862
|
-
|
|
863
|
-
cmpLocs.insert(std::make_pair(loc, p));
|
|
864
|
-
}
|
|
865
|
-
}
|
|
866
|
-
|
|
867
|
-
unsigned mayAliases = 0, noAliases = 0;
|
|
868
|
-
countAliases(cmpLocs, &mayAliases, &noAliases);
|
|
869
|
-
|
|
870
|
-
unsigned total = mayAliases + noAliases;
|
|
871
|
-
SVFUtil::outs() << "eval-ctir-aliases "
|
|
872
|
-
<< total << " "
|
|
873
|
-
<< mayAliases << " "
|
|
874
|
-
<< noAliases << " "
|
|
875
|
-
<< "\n";
|
|
876
|
-
SVFUtil::outs() << " " << "TOTAL : " << total << "\n"
|
|
877
|
-
<< " " << "MAY : " << mayAliases << "\n"
|
|
878
|
-
<< " " << "MAY % : " << 100 * ((double)mayAliases/(double)(total)) << "\n"
|
|
879
|
-
<< " " << "NO : " << noAliases << "\n"
|
|
880
|
-
<< " " << "NO % : " << 100 * ((double)noAliases/(double)(total)) << "\n";
|
|
881
|
-
}
|
|
882
|
-
|
|
883
809
|
void FlowSensitive::countAliases(Set<std::pair<NodeID, NodeID>> cmp, unsigned *mayAliases, unsigned *noAliases)
|
|
884
810
|
{
|
|
885
811
|
for (std::pair<NodeID, NodeID> locPA : cmp)
|
package/lib/WPA/WPAPass.cpp
CHANGED
|
@@ -40,7 +40,6 @@
|
|
|
40
40
|
#include "WPA/Andersen.h"
|
|
41
41
|
#include "WPA/AndersenSFR.h"
|
|
42
42
|
#include "WPA/FlowSensitive.h"
|
|
43
|
-
#include "WPA/FlowSensitiveTBHC.h"
|
|
44
43
|
#include "WPA/VersionedFlowSensitive.h"
|
|
45
44
|
#include "WPA/TypeAnalysis.h"
|
|
46
45
|
#include "WPA/Steensgaard.h"
|
|
@@ -126,9 +125,6 @@ void WPAPass::runPointerAnalysis(SVFModule* svfModule, u32_t kind)
|
|
|
126
125
|
case PointerAnalysis::FSSPARSE_WPA:
|
|
127
126
|
_pta = new FlowSensitive(pag);
|
|
128
127
|
break;
|
|
129
|
-
case PointerAnalysis::FSTBHC_WPA:
|
|
130
|
-
_pta = new FlowSensitiveTBHC(pag);
|
|
131
|
-
break;
|
|
132
128
|
case PointerAnalysis::VFS_WPA:
|
|
133
129
|
_pta = new VersionedFlowSensitive(pag);
|
|
134
130
|
break;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.482",
|
|
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": {
|