svf-tools 1.0.342 → 1.0.346
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/CallGraphBuilder_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +7 -7
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +15 -15
- package/SVF-doxygen/html/html/ICFGNode_8h.html +7 -7
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +69 -69
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +45 -44
- package/SVF-doxygen/html/html/ICFG_8h_source.html +34 -34
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MHP_8h_source.html +6 -6
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +9 -9
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +26 -26
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +18 -18
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +12 -12
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +41 -41
- package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +47 -46
- package/SVF-doxygen/html/html/Options_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PCG_8h_source.html +4 -4
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +17 -17
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +17 -17
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +9 -9
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +31 -31
- package/SVF-doxygen/html/html/SVFG_8h_source.html +27 -27
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +13 -13
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +31 -31
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +14 -14
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +7 -7
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TCT_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +20 -20
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/VFG_8h_source.html +19 -19
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/annotated.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1CallCHI-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +158 -0
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +852 -0
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CallMU-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +60 -60
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +52 -52
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +45 -45
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode-members.html +150 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +618 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode-members.html +149 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +624 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode-members.html +144 -0
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +413 -0
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +191 -184
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +69 -66
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode-members.html +144 -0
- package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +399 -0
- package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode-members.html +146 -0
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +494 -0
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +61 -61
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1MHP-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +196 -196
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +77 -77
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator-members.html +5 -4
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +43 -39
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +90 -90
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PCG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph-members.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +118 -118
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +107 -107
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode-members.html +153 -0
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +696 -0
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +159 -159
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +76 -76
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +132 -132
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +58 -58
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TCT-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph-members.html +40 -40
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +220 -220
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +96 -96
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +39 -39
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
- package/SVF-doxygen/html/html/classes.html +16 -16
- package/SVF-doxygen/html/html/functions_a.html +59 -59
- package/SVF-doxygen/html/html/functions_c.html +65 -67
- package/SVF-doxygen/html/html/functions_eval_r.html +3 -0
- package/SVF-doxygen/html/html/functions_f.html +14 -14
- package/SVF-doxygen/html/html/functions_func.html +56 -56
- package/SVF-doxygen/html/html/functions_func_c.html +28 -28
- package/SVF-doxygen/html/html/functions_func_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func_g.html +86 -86
- package/SVF-doxygen/html/html/functions_func_h.html +17 -17
- package/SVF-doxygen/html/html/functions_func_i.html +12 -12
- package/SVF-doxygen/html/html/functions_func_m.html +1 -1
- package/SVF-doxygen/html/html/functions_func_p.html +1 -1
- package/SVF-doxygen/html/html/functions_func_r.html +6 -6
- package/SVF-doxygen/html/html/functions_func_s.html +2 -2
- package/SVF-doxygen/html/html/functions_func_t.html +7 -7
- package/SVF-doxygen/html/html/functions_func_u.html +3 -3
- package/SVF-doxygen/html/html/functions_g.html +88 -88
- package/SVF-doxygen/html/html/functions_h.html +16 -16
- package/SVF-doxygen/html/html/functions_i.html +22 -22
- package/SVF-doxygen/html/html/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_m.html +2 -2
- package/SVF-doxygen/html/html/functions_o.html +13 -13
- package/SVF-doxygen/html/html/functions_p.html +14 -14
- package/SVF-doxygen/html/html/functions_r.html +13 -12
- package/SVF-doxygen/html/html/functions_s.html +13 -13
- package/SVF-doxygen/html/html/functions_t.html +12 -14
- package/SVF-doxygen/html/html/functions_type.html +1 -1
- package/SVF-doxygen/html/html/functions_type_c.html +24 -24
- package/SVF-doxygen/html/html/functions_type_f.html +3 -3
- package/SVF-doxygen/html/html/functions_type_i.html +2 -2
- package/SVF-doxygen/html/html/functions_type_p.html +1 -1
- package/SVF-doxygen/html/html/functions_type_s.html +1 -1
- package/SVF-doxygen/html/html/functions_type_v.html +2 -2
- package/SVF-doxygen/html/html/functions_u.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +8 -8
- package/SVF-doxygen/html/html/functions_vars_a.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_c.html +11 -11
- package/SVF-doxygen/html/html/functions_vars_f.html +5 -5
- package/SVF-doxygen/html/html/functions_vars_g.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_i.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_r.html +1 -1
- package/SVF-doxygen/html/html/functions_w.html +9 -5
- package/SVF-doxygen/html/html/hierarchy.html +7 -7
- package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
- package/SVF-doxygen/html/html/search/all_1.js +58 -58
- package/SVF-doxygen/html/html/search/all_10.js +8 -8
- package/SVF-doxygen/html/html/search/all_12.js +8 -7
- package/SVF-doxygen/html/html/search/all_13.js +11 -11
- package/SVF-doxygen/html/html/search/all_14.js +8 -8
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +4 -4
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +35 -34
- package/SVF-doxygen/html/html/search/all_6.js +12 -12
- package/SVF-doxygen/html/html/search/all_7.js +62 -61
- package/SVF-doxygen/html/html/search/all_8.js +17 -17
- package/SVF-doxygen/html/html/search/all_9.js +16 -16
- package/SVF-doxygen/html/html/search/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +5 -5
- package/SVF-doxygen/html/html/search/all_e.js +3 -3
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/classes_2.js +1 -1
- package/SVF-doxygen/html/html/search/classes_5.js +2 -2
- package/SVF-doxygen/html/html/search/classes_6.js +1 -1
- package/SVF-doxygen/html/html/search/classes_8.js +2 -2
- package/SVF-doxygen/html/html/search/classes_e.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_e.js +2 -1
- package/SVF-doxygen/html/html/search/functions_0.js +55 -55
- package/SVF-doxygen/html/html/search/functions_10.js +3 -3
- package/SVF-doxygen/html/html/search/functions_11.js +4 -4
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_2.js +10 -10
- package/SVF-doxygen/html/html/search/functions_5.js +4 -4
- package/SVF-doxygen/html/html/search/functions_6.js +61 -61
- package/SVF-doxygen/html/html/search/functions_7.js +17 -17
- package/SVF-doxygen/html/html/search/functions_8.js +12 -12
- package/SVF-doxygen/html/html/search/functions_b.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/functions_f.js +4 -4
- package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +21 -21
- package/SVF-doxygen/html/html/search/typedefs_5.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_8.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_f.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1.js +2 -2
- package/SVF-doxygen/html/html/search/variables_12.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_3.js +4 -4
- package/SVF-doxygen/html/html/search/variables_6.js +5 -5
- package/SVF-doxygen/html/html/search/variables_7.js +1 -1
- package/SVF-doxygen/html/html/search/variables_9.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +22 -22
- package/include/DDA/ContextDDA.h +3 -3
- package/include/DDA/DDAClient.h +2 -2
- package/include/DDA/DDAVFSolver.h +2 -2
- package/include/DDA/FlowDDA.h +2 -2
- package/include/Graphs/ICFG.h +33 -33
- package/include/Graphs/ICFGNode.h +33 -33
- package/include/Graphs/ICFGStat.h +11 -11
- package/include/Graphs/PTACallGraph.h +19 -19
- package/include/Graphs/SVFG.h +16 -16
- package/include/Graphs/SVFGNode.h +14 -14
- package/include/Graphs/SVFGOPT.h +1 -1
- package/include/Graphs/ThreadCallGraph.h +25 -25
- package/include/Graphs/VFG.h +10 -10
- package/include/Graphs/VFGNode.h +8 -8
- package/include/MSSA/MSSAMuChi.h +6 -6
- package/include/MSSA/MemRegion.h +24 -24
- package/include/MSSA/MemSSA.h +10 -10
- package/include/MTA/LockResultValidator.h +2 -2
- package/include/MTA/MHP.h +4 -4
- package/include/MTA/PCG.h +1 -1
- package/include/MTA/TCT.h +2 -2
- package/include/MemoryModel/PointerAnalysis.h +12 -12
- package/include/MemoryModel/SVFIR.h +21 -21
- package/include/MemoryModel/SVFStatements.h +11 -11
- package/include/SABER/LeakChecker.h +4 -4
- package/include/SABER/ProgSlice.h +2 -2
- package/include/SABER/SaberCheckerAPI.h +4 -4
- package/include/SABER/SaberSVFGBuilder.h +1 -1
- package/include/SABER/SrcSnkDDA.h +1 -1
- package/include/SVF-FE/ICFGBuilder.h +4 -4
- package/include/SVF-FE/SVFIRBuilder.h +5 -5
- package/include/Util/NodeIDAllocator.h +3 -0
- package/lib/DDA/ContextDDA.cpp +3 -3
- package/lib/DDA/DDAClient.cpp +1 -1
- package/lib/DDA/FlowDDA.cpp +1 -1
- package/lib/Graphs/ICFG.cpp +55 -50
- package/lib/Graphs/PTACallGraph.cpp +5 -5
- package/lib/Graphs/SVFG.cpp +7 -7
- package/lib/Graphs/ThreadCallGraph.cpp +6 -6
- package/lib/Graphs/VFG.cpp +6 -6
- package/lib/MSSA/MemRegion.cpp +17 -17
- package/lib/MSSA/MemSSA.cpp +3 -3
- package/lib/MTA/LockAnalysis.cpp +4 -4
- package/lib/MTA/MHP.cpp +5 -5
- package/lib/MTA/MTAResultValidator.cpp +1 -1
- package/lib/MTA/PCG.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysis.cpp +10 -10
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
- package/lib/MemoryModel/SVFIR.cpp +5 -5
- package/lib/SABER/DoubleFreeChecker.cpp +1 -1
- package/lib/SABER/FileChecker.cpp +2 -2
- package/lib/SABER/LeakChecker.cpp +8 -8
- package/lib/SABER/ProgSlice.cpp +2 -2
- package/lib/SVF-FE/CallGraphBuilder.cpp +4 -4
- package/lib/SVF-FE/Graph2Json.cpp +5 -5
- package/lib/SVF-FE/ICFGBuilder.cpp +31 -25
- package/lib/SVF-FE/SVFIRBuilder.cpp +8 -8
- package/lib/Util/NodeIDAllocator.cpp +12 -0
- package/lib/Util/Options.cpp +2 -1
- package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
- package/lib/WPA/Andersen.cpp +3 -3
- package/lib/WPA/FlowSensitive.cpp +2 -2
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
- package/lib/WPA/WPAPass.cpp +4 -4
- package/package.json +1 -1
|
@@ -105,10 +105,10 @@ public:
|
|
|
105
105
|
/// Indirect call edges type, map a callsite to a set of callees
|
|
106
106
|
//@{
|
|
107
107
|
typedef llvm::AliasAnalysis AliasAnalysis;
|
|
108
|
-
typedef Set<const
|
|
108
|
+
typedef Set<const CallICFGNode*> CallSiteSet;
|
|
109
109
|
typedef SVFIR::CallSiteToFunPtrMap CallSiteToFunPtrMap;
|
|
110
110
|
typedef Set<const SVFFunction*> FunctionSet;
|
|
111
|
-
typedef OrderedMap<const
|
|
111
|
+
typedef OrderedMap<const CallICFGNode*, FunctionSet> CallEdgeMap;
|
|
112
112
|
typedef SCCDetection<PTACallGraph*> CallGraphSCC;
|
|
113
113
|
typedef Set<const GlobalValue*> VTableSet;
|
|
114
114
|
typedef Set<const SVFFunction*> VFunSet;
|
|
@@ -263,7 +263,7 @@ public:
|
|
|
263
263
|
}
|
|
264
264
|
|
|
265
265
|
/// Print targets of a function pointer
|
|
266
|
-
void printIndCSTargets(const
|
|
266
|
+
void printIndCSTargets(const CallICFGNode* cs, const FunctionSet& targets);
|
|
267
267
|
|
|
268
268
|
// Debug purpose
|
|
269
269
|
//@{
|
|
@@ -282,7 +282,7 @@ protected:
|
|
|
282
282
|
return pag->getIndirectCallsites();
|
|
283
283
|
}
|
|
284
284
|
/// Return function pointer PAGNode at a callsite cs
|
|
285
|
-
inline NodeID getFunPtr(const
|
|
285
|
+
inline NodeID getFunPtr(const CallICFGNode* cs) const
|
|
286
286
|
{
|
|
287
287
|
return pag->getFunPtr(cs);
|
|
288
288
|
}
|
|
@@ -389,20 +389,20 @@ public:
|
|
|
389
389
|
{
|
|
390
390
|
return getPTACallGraph()->getIndCallMap();
|
|
391
391
|
}
|
|
392
|
-
inline bool hasIndCSCallees(const
|
|
392
|
+
inline bool hasIndCSCallees(const CallICFGNode* cs) const
|
|
393
393
|
{
|
|
394
394
|
return getPTACallGraph()->hasIndCSCallees(cs);
|
|
395
395
|
}
|
|
396
|
-
inline const FunctionSet& getIndCSCallees(const
|
|
396
|
+
inline const FunctionSet& getIndCSCallees(const CallICFGNode* cs) const
|
|
397
397
|
{
|
|
398
398
|
return getPTACallGraph()->getIndCSCallees(cs);
|
|
399
399
|
}
|
|
400
400
|
//@}
|
|
401
401
|
|
|
402
402
|
/// Resolve indirect call edges
|
|
403
|
-
virtual void resolveIndCalls(const
|
|
403
|
+
virtual void resolveIndCalls(const CallICFGNode* cs, const PointsTo& target, CallEdgeMap& newEdges,LLVMCallGraph* callgraph = nullptr);
|
|
404
404
|
/// Match arguments for callsite at caller and callee
|
|
405
|
-
bool matchArgs(const
|
|
405
|
+
bool matchArgs(const CallICFGNode* cs, const SVFFunction* callee);
|
|
406
406
|
|
|
407
407
|
/// CallGraph SCC related methods
|
|
408
408
|
//@{
|
|
@@ -446,10 +446,10 @@ public:
|
|
|
446
446
|
return chgraph;
|
|
447
447
|
}
|
|
448
448
|
|
|
449
|
-
void getVFnsFromCHA(const
|
|
450
|
-
void getVFnsFromPts(const
|
|
451
|
-
void connectVCallToVFns(const
|
|
452
|
-
virtual void resolveCPPIndCalls(const
|
|
449
|
+
void getVFnsFromCHA(const CallICFGNode* cs, VFunSet &vfns);
|
|
450
|
+
void getVFnsFromPts(const CallICFGNode* cs, const PointsTo &target, VFunSet &vfns);
|
|
451
|
+
void connectVCallToVFns(const CallICFGNode* cs, const VFunSet &vfns, CallEdgeMap& newEdges);
|
|
452
|
+
virtual void resolveCPPIndCalls(const CallICFGNode* cs,
|
|
453
453
|
const PointsTo& target,
|
|
454
454
|
CallEdgeMap& newEdges);
|
|
455
455
|
|
|
@@ -49,16 +49,16 @@ friend class PAGBuilderFromFile;
|
|
|
49
49
|
friend class TypeBasedHeapCloning;
|
|
50
50
|
|
|
51
51
|
public:
|
|
52
|
-
typedef Set<const
|
|
53
|
-
typedef OrderedMap<const
|
|
52
|
+
typedef Set<const CallICFGNode*> CallSiteSet;
|
|
53
|
+
typedef OrderedMap<const CallICFGNode*,NodeID> CallSiteToFunPtrMap;
|
|
54
54
|
typedef Map<NodeID,CallSiteSet> FunPtrToCallSitesMap;
|
|
55
55
|
typedef Map<NodeID,NodeBS> MemObjToFieldsMap;
|
|
56
56
|
typedef std::vector<const SVFStmt*> SVFStmtList;
|
|
57
57
|
typedef std::vector<const SVFVar*> SVFVarList;
|
|
58
58
|
typedef Map<const SVFVar*,PhiStmt*> PHINodeMap;
|
|
59
59
|
typedef Map<const SVFFunction*,SVFVarList> FunToArgsListMap;
|
|
60
|
-
typedef Map<const
|
|
61
|
-
typedef Map<const
|
|
60
|
+
typedef Map<const CallICFGNode*,SVFVarList> CSToArgsListMap;
|
|
61
|
+
typedef Map<const RetICFGNode*,const SVFVar*> CSToRetMap;
|
|
62
62
|
typedef Map<const SVFFunction*,const SVFVar*> FunToRetMap;
|
|
63
63
|
typedef Map<const SVFFunction*,SVFStmtSet> FunToPAGEdgeSetMap;
|
|
64
64
|
typedef Map<const ICFGNode*,SVFStmtList> ICFGNode2SVFStmtsMap;
|
|
@@ -229,7 +229,7 @@ public:
|
|
|
229
229
|
return it->second;
|
|
230
230
|
}
|
|
231
231
|
/// Callsite has argument list
|
|
232
|
-
inline bool hasCallSiteArgsMap(const
|
|
232
|
+
inline bool hasCallSiteArgsMap(const CallICFGNode* cs) const
|
|
233
233
|
{
|
|
234
234
|
return (callSiteArgsListMap.find(cs) != callSiteArgsListMap.end());
|
|
235
235
|
}
|
|
@@ -239,7 +239,7 @@ public:
|
|
|
239
239
|
return callSiteArgsListMap;
|
|
240
240
|
}
|
|
241
241
|
/// Get callsite argument list
|
|
242
|
-
inline const SVFVarList& getCallSiteArgsList(const
|
|
242
|
+
inline const SVFVarList& getCallSiteArgsList(const CallICFGNode* cs) const
|
|
243
243
|
{
|
|
244
244
|
CSToArgsListMap::const_iterator it = callSiteArgsListMap.find(cs);
|
|
245
245
|
assert(it != callSiteArgsListMap.end() && "this call site doesn't have arguments");
|
|
@@ -251,13 +251,13 @@ public:
|
|
|
251
251
|
return callSiteRetMap;
|
|
252
252
|
}
|
|
253
253
|
/// Get callsite return
|
|
254
|
-
inline const SVFVar* getCallSiteRet(const
|
|
254
|
+
inline const SVFVar* getCallSiteRet(const RetICFGNode* cs) const
|
|
255
255
|
{
|
|
256
256
|
CSToRetMap::const_iterator it = callSiteRetMap.find(cs);
|
|
257
257
|
assert(it != callSiteRetMap.end() && "this call site doesn't have return");
|
|
258
258
|
return it->second;
|
|
259
259
|
}
|
|
260
|
-
inline bool callsiteHasRet(const
|
|
260
|
+
inline bool callsiteHasRet(const RetICFGNode* cs) const
|
|
261
261
|
{
|
|
262
262
|
return callSiteRetMap.find(cs) != callSiteRetMap.end();
|
|
263
263
|
}
|
|
@@ -313,7 +313,7 @@ public:
|
|
|
313
313
|
{
|
|
314
314
|
return indCallSiteToFunPtrMap;
|
|
315
315
|
}
|
|
316
|
-
inline NodeID getFunPtr(const
|
|
316
|
+
inline NodeID getFunPtr(const CallICFGNode* cs) const
|
|
317
317
|
{
|
|
318
318
|
CallSiteToFunPtrMap::const_iterator it = indCallSiteToFunPtrMap.find(cs);
|
|
319
319
|
assert(it!=indCallSiteToFunPtrMap.end() && "indirect callsite not have a function pointer?");
|
|
@@ -325,7 +325,7 @@ public:
|
|
|
325
325
|
assert(it!=funPtrToCallSitesMap.end() && "function pointer not used at any indirect callsite?");
|
|
326
326
|
return it->second;
|
|
327
327
|
}
|
|
328
|
-
inline bool isIndirectCallSites(const
|
|
328
|
+
inline bool isIndirectCallSites(const CallICFGNode* cs) const
|
|
329
329
|
{
|
|
330
330
|
return (indCallSiteToFunPtrMap.find(cs) != indCallSiteToFunPtrMap.end());
|
|
331
331
|
}
|
|
@@ -493,31 +493,31 @@ private:
|
|
|
493
493
|
/// Add function arguments
|
|
494
494
|
inline void addFunArgs(const SVFFunction* fun, const SVFVar* arg)
|
|
495
495
|
{
|
|
496
|
-
|
|
496
|
+
FunEntryICFGNode* funEntryBlockNode = icfg->getFunEntryBlockNode(fun);
|
|
497
497
|
funEntryBlockNode->addFormalParms(arg);
|
|
498
498
|
funArgsListMap[fun].push_back(arg);
|
|
499
499
|
}
|
|
500
500
|
/// Add function returns
|
|
501
501
|
inline void addFunRet(const SVFFunction* fun, const SVFVar* ret)
|
|
502
502
|
{
|
|
503
|
-
|
|
503
|
+
FunExitICFGNode* funExitBlockNode = icfg->getFunExitBlockNode(fun);
|
|
504
504
|
funExitBlockNode->addFormalRet(ret);
|
|
505
505
|
funRetMap[fun] = ret;
|
|
506
506
|
}
|
|
507
507
|
/// Add callsite arguments
|
|
508
|
-
inline void addCallSiteArgs(
|
|
508
|
+
inline void addCallSiteArgs(CallICFGNode* callBlockNode,const SVFVar* arg)
|
|
509
509
|
{
|
|
510
510
|
callBlockNode->addActualParms(arg);
|
|
511
511
|
callSiteArgsListMap[callBlockNode].push_back(arg);
|
|
512
512
|
}
|
|
513
513
|
/// Add callsite returns
|
|
514
|
-
inline void addCallSiteRets(
|
|
514
|
+
inline void addCallSiteRets(RetICFGNode* retBlockNode,const SVFVar* arg)
|
|
515
515
|
{
|
|
516
516
|
retBlockNode->addActualRet(arg);
|
|
517
517
|
callSiteRetMap[retBlockNode]= arg;
|
|
518
518
|
}
|
|
519
519
|
/// Add indirect callsites
|
|
520
|
-
inline void addIndirectCallsites(const
|
|
520
|
+
inline void addIndirectCallsites(const CallICFGNode* cs,NodeID funPtr)
|
|
521
521
|
{
|
|
522
522
|
bool added = indCallSiteToFunPtrMap.insert(std::make_pair(cs,funPtr)).second;
|
|
523
523
|
funPtrToCallSitesMap[funPtr].insert(cs);
|
|
@@ -618,7 +618,7 @@ private:
|
|
|
618
618
|
globSVFStmtSet.insert(edge);
|
|
619
619
|
}
|
|
620
620
|
/// Add callsites
|
|
621
|
-
inline void addCallSite(const
|
|
621
|
+
inline void addCallSite(const CallICFGNode* call)
|
|
622
622
|
{
|
|
623
623
|
callSiteSet.insert(call);
|
|
624
624
|
}
|
|
@@ -641,11 +641,11 @@ private:
|
|
|
641
641
|
/// Add Load edge
|
|
642
642
|
LoadStmt* addLoadStmt(NodeID src, NodeID dst);
|
|
643
643
|
/// Add Store edge
|
|
644
|
-
StoreStmt* addStoreStmt(NodeID src, NodeID dst, const
|
|
644
|
+
StoreStmt* addStoreStmt(NodeID src, NodeID dst, const IntraICFGNode* val);
|
|
645
645
|
/// Add Call edge
|
|
646
|
-
CallPE* addCallPE(NodeID src, NodeID dst, const
|
|
646
|
+
CallPE* addCallPE(NodeID src, NodeID dst, const CallICFGNode* cs);
|
|
647
647
|
/// Add Return edge
|
|
648
|
-
RetPE* addRetPE(NodeID src, NodeID dst, const
|
|
648
|
+
RetPE* addRetPE(NodeID src, NodeID dst, const CallICFGNode* cs);
|
|
649
649
|
/// Add Gep edge
|
|
650
650
|
GepStmt* addGepStmt(NodeID src, NodeID dst, const LocationSet& ls, bool constGep);
|
|
651
651
|
/// Add Offset(Gep) edge
|
|
@@ -653,9 +653,9 @@ private:
|
|
|
653
653
|
/// Add Variant(Gep) edge
|
|
654
654
|
VariantGepStmt* addVariantGepStmt(NodeID src, NodeID dst, const LocationSet& ls);
|
|
655
655
|
/// Add Thread fork edge for parameter passing
|
|
656
|
-
TDForkPE* addThreadForkPE(NodeID src, NodeID dst, const
|
|
656
|
+
TDForkPE* addThreadForkPE(NodeID src, NodeID dst, const CallICFGNode* cs);
|
|
657
657
|
/// Add Thread join edge for parameter passing
|
|
658
|
-
TDJoinPE* addThreadJoinPE(NodeID src, NodeID dst, const
|
|
658
|
+
TDJoinPE* addThreadJoinPE(NodeID src, NodeID dst, const CallICFGNode* cs);
|
|
659
659
|
//@}
|
|
660
660
|
|
|
661
661
|
/// Set a pointer points-to black hole (e.g. int2ptr)
|
|
@@ -361,7 +361,7 @@ public:
|
|
|
361
361
|
//@}
|
|
362
362
|
|
|
363
363
|
/// constructor
|
|
364
|
-
StoreStmt(SVFVar* s, SVFVar* d, const
|
|
364
|
+
StoreStmt(SVFVar* s, SVFVar* d, const IntraICFGNode* st) :
|
|
365
365
|
AssignStmt(s, d, makeEdgeFlagWithStoreInst(SVFStmt::Store, st))
|
|
366
366
|
{
|
|
367
367
|
}
|
|
@@ -546,7 +546,7 @@ private:
|
|
|
546
546
|
CallPE(const CallPE &); ///< place holder
|
|
547
547
|
void operator=(const CallPE &); ///< place holder
|
|
548
548
|
|
|
549
|
-
const
|
|
549
|
+
const CallICFGNode* inst; ///< llvm instruction for this call
|
|
550
550
|
public:
|
|
551
551
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
552
552
|
//@{
|
|
@@ -567,18 +567,18 @@ public:
|
|
|
567
567
|
//@}
|
|
568
568
|
|
|
569
569
|
/// constructor
|
|
570
|
-
CallPE(SVFVar* s, SVFVar* d, const
|
|
570
|
+
CallPE(SVFVar* s, SVFVar* d, const CallICFGNode* i, GEdgeKind k = SVFStmt::Call) :
|
|
571
571
|
AssignStmt(s,d,makeEdgeFlagWithCallInst(k,i)), inst(i)
|
|
572
572
|
{
|
|
573
573
|
}
|
|
574
574
|
|
|
575
575
|
/// Get method for the call instruction
|
|
576
576
|
//@{
|
|
577
|
-
inline const
|
|
577
|
+
inline const CallICFGNode* getCallInst() const
|
|
578
578
|
{
|
|
579
579
|
return inst;
|
|
580
580
|
}
|
|
581
|
-
inline const
|
|
581
|
+
inline const CallICFGNode* getCallSite() const
|
|
582
582
|
{
|
|
583
583
|
return inst;
|
|
584
584
|
}
|
|
@@ -598,7 +598,7 @@ private:
|
|
|
598
598
|
RetPE(const RetPE &); ///< place holder
|
|
599
599
|
void operator=(const RetPE &); ///< place holder
|
|
600
600
|
|
|
601
|
-
const
|
|
601
|
+
const CallICFGNode* inst; /// the callsite instruction return to
|
|
602
602
|
public:
|
|
603
603
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
604
604
|
//@{
|
|
@@ -619,18 +619,18 @@ public:
|
|
|
619
619
|
//@}
|
|
620
620
|
|
|
621
621
|
/// constructor
|
|
622
|
-
RetPE(SVFVar* s, SVFVar* d, const
|
|
622
|
+
RetPE(SVFVar* s, SVFVar* d, const CallICFGNode* i, GEdgeKind k = SVFStmt::Ret) :
|
|
623
623
|
AssignStmt(s,d,makeEdgeFlagWithCallInst(k,i)), inst(i)
|
|
624
624
|
{
|
|
625
625
|
}
|
|
626
626
|
|
|
627
627
|
/// Get method for call instruction at caller
|
|
628
628
|
//@{
|
|
629
|
-
inline const
|
|
629
|
+
inline const CallICFGNode* getCallInst() const
|
|
630
630
|
{
|
|
631
631
|
return inst;
|
|
632
632
|
}
|
|
633
|
-
inline const
|
|
633
|
+
inline const CallICFGNode* getCallSite() const
|
|
634
634
|
{
|
|
635
635
|
return inst;
|
|
636
636
|
}
|
|
@@ -999,7 +999,7 @@ public:
|
|
|
999
999
|
//@}
|
|
1000
1000
|
|
|
1001
1001
|
/// constructor
|
|
1002
|
-
TDForkPE(SVFVar* s, SVFVar* d, const
|
|
1002
|
+
TDForkPE(SVFVar* s, SVFVar* d, const CallICFGNode* i) :
|
|
1003
1003
|
CallPE(s,d,i,SVFStmt::ThreadFork)
|
|
1004
1004
|
{
|
|
1005
1005
|
}
|
|
@@ -1037,7 +1037,7 @@ public:
|
|
|
1037
1037
|
//@}
|
|
1038
1038
|
|
|
1039
1039
|
/// Constructor
|
|
1040
|
-
TDJoinPE(SVFVar* s, SVFVar* d, const
|
|
1040
|
+
TDJoinPE(SVFVar* s, SVFVar* d, const CallICFGNode* i) :
|
|
1041
1041
|
RetPE(s,d,i,SVFStmt::ThreadJoin)
|
|
1042
1042
|
{
|
|
1043
1043
|
}
|
|
@@ -43,8 +43,8 @@ class LeakChecker : public SrcSnkDDA
|
|
|
43
43
|
{
|
|
44
44
|
|
|
45
45
|
public:
|
|
46
|
-
typedef Map<const SVFGNode*,const
|
|
47
|
-
typedef FIFOWorkList<const
|
|
46
|
+
typedef Map<const SVFGNode*,const CallICFGNode*> SVFGNodeToCSIDMap;
|
|
47
|
+
typedef FIFOWorkList<const CallICFGNode*> CSWorkList;
|
|
48
48
|
typedef ProgSlice::VFWorkList WorkList;
|
|
49
49
|
typedef NodeBS SVFGNodeBS;
|
|
50
50
|
enum LEAK_TYPE
|
|
@@ -104,11 +104,11 @@ protected:
|
|
|
104
104
|
|
|
105
105
|
/// Record a source to its callsite
|
|
106
106
|
//@{
|
|
107
|
-
inline void addSrcToCSID(const SVFGNode* src, const
|
|
107
|
+
inline void addSrcToCSID(const SVFGNode* src, const CallICFGNode* cs)
|
|
108
108
|
{
|
|
109
109
|
srcToCSIDMap[src] = cs;
|
|
110
110
|
}
|
|
111
|
-
inline const
|
|
111
|
+
inline const CallICFGNode* getSrcCSID(const SVFGNode* src)
|
|
112
112
|
{
|
|
113
113
|
SVFGNodeToCSIDMap::iterator it =srcToCSIDMap.find(src);
|
|
114
114
|
assert(it!=srcToCSIDMap.end() && "source node not at a callsite??");
|
|
@@ -162,8 +162,8 @@ public:
|
|
|
162
162
|
|
|
163
163
|
/// Get callsite ID and get returnsiteID from SVFGEdge
|
|
164
164
|
//@{
|
|
165
|
-
const
|
|
166
|
-
const
|
|
165
|
+
const CallICFGNode* getCallSite(const SVFGEdge* edge) const;
|
|
166
|
+
const CallICFGNode* getRetSite(const SVFGEdge* edge) const;
|
|
167
167
|
//@}
|
|
168
168
|
|
|
169
169
|
/// Condition operations
|
|
@@ -105,7 +105,7 @@ public:
|
|
|
105
105
|
{
|
|
106
106
|
return getType(SVFUtil::getCallee(inst)) == CK_ALLOC;
|
|
107
107
|
}
|
|
108
|
-
inline bool isMemAlloc(const
|
|
108
|
+
inline bool isMemAlloc(const CallICFGNode* cs) const
|
|
109
109
|
{
|
|
110
110
|
return isMemAlloc(cs->getCallSite());
|
|
111
111
|
}
|
|
@@ -121,7 +121,7 @@ public:
|
|
|
121
121
|
{
|
|
122
122
|
return getType(SVFUtil::getCallee(inst)) == CK_FREE;
|
|
123
123
|
}
|
|
124
|
-
inline bool isMemDealloc(const
|
|
124
|
+
inline bool isMemDealloc(const CallICFGNode* cs) const
|
|
125
125
|
{
|
|
126
126
|
return isMemDealloc(cs->getCallSite());
|
|
127
127
|
}
|
|
@@ -137,7 +137,7 @@ public:
|
|
|
137
137
|
{
|
|
138
138
|
return getType(SVFUtil::getCallee(inst)) == CK_FOPEN;
|
|
139
139
|
}
|
|
140
|
-
inline bool isFOpen(const
|
|
140
|
+
inline bool isFOpen(const CallICFGNode* cs) const
|
|
141
141
|
{
|
|
142
142
|
return isFOpen(cs->getCallSite());
|
|
143
143
|
}
|
|
@@ -153,7 +153,7 @@ public:
|
|
|
153
153
|
{
|
|
154
154
|
return getType(SVFUtil::getCallee(inst)) == CK_FCLOSE;
|
|
155
155
|
}
|
|
156
|
-
inline bool isFClose(const
|
|
156
|
+
inline bool isFClose(const CallICFGNode* cs) const
|
|
157
157
|
{
|
|
158
158
|
return isFClose(cs->getCallSite());
|
|
159
159
|
}
|
|
@@ -57,7 +57,7 @@ public:
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
/// Add ActualParmVFGNode
|
|
60
|
-
inline void addActualParmVFGNode(const PAGNode* pagNode, const
|
|
60
|
+
inline void addActualParmVFGNode(const PAGNode* pagNode, const CallICFGNode* cs)
|
|
61
61
|
{
|
|
62
62
|
svfg->addActualParmVFGNode(pagNode, cs);
|
|
63
63
|
}
|
|
@@ -53,7 +53,7 @@ public:
|
|
|
53
53
|
typedef CxtDPItem DPIm;
|
|
54
54
|
typedef Set<DPIm> DPImSet; ///< dpitem set
|
|
55
55
|
typedef Map<const SVFGNode*, DPImSet> SVFGNodeToDPItemsMap; ///< map a SVFGNode to its visited dpitems
|
|
56
|
-
typedef Set<const
|
|
56
|
+
typedef Set<const CallICFGNode*> CallSiteSet;
|
|
57
57
|
typedef NodeBS SVFGNodeBS;
|
|
58
58
|
typedef ProgSlice::VFWorkList WorkList;
|
|
59
59
|
|
|
@@ -69,7 +69,7 @@ private:
|
|
|
69
69
|
void connectGlobalToProgEntry(SVFModule* svfModule);
|
|
70
70
|
|
|
71
71
|
/// Add/Get an inter block ICFGNode
|
|
72
|
-
|
|
72
|
+
InterICFGNode* getOrAddInterBlockICFGNode(const Instruction* inst);
|
|
73
73
|
|
|
74
74
|
/// Add/Get a basic block ICFGNode
|
|
75
75
|
inline ICFGNode* getOrAddBlockICFGNode(const Instruction* inst)
|
|
@@ -84,18 +84,18 @@ private:
|
|
|
84
84
|
void addICFGInterEdges(const Instruction* cs, const SVFFunction* callee);
|
|
85
85
|
|
|
86
86
|
/// Add a call node
|
|
87
|
-
inline
|
|
87
|
+
inline CallICFGNode* getOrAddCallICFGNode(const Instruction* cs)
|
|
88
88
|
{
|
|
89
89
|
return icfg->getCallBlockNode(cs);
|
|
90
90
|
}
|
|
91
91
|
/// Add a return node
|
|
92
|
-
inline
|
|
92
|
+
inline RetICFGNode* getOrAddRetICFGNode(const Instruction* cs)
|
|
93
93
|
{
|
|
94
94
|
return icfg->getRetBlockNode(cs);
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
/// Add and get IntraBlock ICFGNode
|
|
98
|
-
|
|
98
|
+
IntraICFGNode* getOrAddIntraBlockICFGNode(const Instruction* inst)
|
|
99
99
|
{
|
|
100
100
|
return icfg->getIntraBlockNode(inst);
|
|
101
101
|
}
|
|
@@ -343,7 +343,7 @@ public:
|
|
|
343
343
|
/// Add Store edge
|
|
344
344
|
inline StoreStmt* addStoreEdge(NodeID src, NodeID dst)
|
|
345
345
|
{
|
|
346
|
-
|
|
346
|
+
IntraICFGNode* node;
|
|
347
347
|
if(const Instruction* inst = SVFUtil::dyn_cast<Instruction>(curVal))
|
|
348
348
|
node = pag->getICFG()->getIntraBlockNode(inst);
|
|
349
349
|
else
|
|
@@ -353,14 +353,14 @@ public:
|
|
|
353
353
|
return edge;
|
|
354
354
|
}
|
|
355
355
|
/// Add Call edge
|
|
356
|
-
inline CallPE* addCallEdge(NodeID src, NodeID dst, const
|
|
356
|
+
inline CallPE* addCallEdge(NodeID src, NodeID dst, const CallICFGNode* cs)
|
|
357
357
|
{
|
|
358
358
|
CallPE *edge = pag->addCallPE(src, dst, cs);
|
|
359
359
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
360
360
|
return edge;
|
|
361
361
|
}
|
|
362
362
|
/// Add Return edge
|
|
363
|
-
inline RetPE* addRetEdge(NodeID src, NodeID dst, const
|
|
363
|
+
inline RetPE* addRetEdge(NodeID src, NodeID dst, const CallICFGNode* cs)
|
|
364
364
|
{
|
|
365
365
|
RetPE *edge = pag->addRetPE(src, dst, cs);
|
|
366
366
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
@@ -388,14 +388,14 @@ public:
|
|
|
388
388
|
return edge;
|
|
389
389
|
}
|
|
390
390
|
/// Add Thread fork edge for parameter passing
|
|
391
|
-
inline TDForkPE* addThreadForkEdge(NodeID src, NodeID dst, const
|
|
391
|
+
inline TDForkPE* addThreadForkEdge(NodeID src, NodeID dst, const CallICFGNode* cs)
|
|
392
392
|
{
|
|
393
393
|
TDForkPE *edge = pag->addThreadForkPE(src, dst, cs);
|
|
394
394
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
395
395
|
return edge;
|
|
396
396
|
}
|
|
397
397
|
/// Add Thread join edge for parameter passing
|
|
398
|
-
inline TDJoinPE* addThreadJoinEdge(NodeID src, NodeID dst, const
|
|
398
|
+
inline TDJoinPE* addThreadJoinEdge(NodeID src, NodeID dst, const CallICFGNode* cs)
|
|
399
399
|
{
|
|
400
400
|
TDJoinPE *edge = pag->addThreadJoinPE(src, dst, cs);
|
|
401
401
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
@@ -27,6 +27,9 @@ public:
|
|
|
27
27
|
/// If [****...*****] is the space of unsigned integers, we allocate as,
|
|
28
28
|
/// [ssssooooooo...vvvvvvv] (o = object, v = value, s = special).
|
|
29
29
|
DENSE,
|
|
30
|
+
/// Like dense, but with order flipped:
|
|
31
|
+
/// [ssssvvvvvvv...ooooooo]
|
|
32
|
+
REVERSE_DENSE,
|
|
30
33
|
/// Allocate objects objects and values sequentially, intermixed.
|
|
31
34
|
SEQ,
|
|
32
35
|
/// Allocate values and objects as they come in with a single counter.
|
package/lib/DDA/ContextDDA.cpp
CHANGED
|
@@ -164,7 +164,7 @@ CxtPtSet ContextDDA::processGepPts(const GepSVFGNode* gep, const CxtPtSet& srcPt
|
|
|
164
164
|
return tmpDstPts;
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
-
bool ContextDDA::testIndCallReachability(CxtLocDPItem& dpm, const SVFFunction* callee, const
|
|
167
|
+
bool ContextDDA::testIndCallReachability(CxtLocDPItem& dpm, const SVFFunction* callee, const CallICFGNode* cs)
|
|
168
168
|
{
|
|
169
169
|
if(getPAG()->isIndirectCallSites(cs))
|
|
170
170
|
{
|
|
@@ -194,7 +194,7 @@ CallSiteID ContextDDA::getCSIDAtCall(CxtLocDPItem&, const SVFGEdge* edge)
|
|
|
194
194
|
else
|
|
195
195
|
svfg_csId = SVFUtil::cast<CallIndSVFGEdge>(edge)->getCallSiteId();
|
|
196
196
|
|
|
197
|
-
const
|
|
197
|
+
const CallICFGNode* cbn = getSVFG()->getCallSite(svfg_csId);
|
|
198
198
|
const SVFFunction* callee = edge->getDstNode()->getFun();
|
|
199
199
|
|
|
200
200
|
if(getPTACallGraph()->hasCallSiteID(cbn,callee))
|
|
@@ -218,7 +218,7 @@ CallSiteID ContextDDA::getCSIDAtRet(CxtLocDPItem&, const SVFGEdge* edge)
|
|
|
218
218
|
else
|
|
219
219
|
svfg_csId = SVFUtil::cast<RetIndSVFGEdge>(edge)->getCallSiteId();
|
|
220
220
|
|
|
221
|
-
const
|
|
221
|
+
const CallICFGNode* cbn = getSVFG()->getCallSite(svfg_csId);
|
|
222
222
|
const SVFFunction* callee = edge->getSrcNode()->getFun();
|
|
223
223
|
|
|
224
224
|
if(getPTACallGraph()->hasCallSiteID(cbn,callee))
|
package/lib/DDA/DDAClient.cpp
CHANGED
|
@@ -95,7 +95,7 @@ void FunptrDDAClient::performStat(PointerAnalysis* pta)
|
|
|
95
95
|
const PointsTo& anderPts = ander->getPts(vtptr);
|
|
96
96
|
|
|
97
97
|
PTACallGraph* callgraph = ander->getPTACallGraph();
|
|
98
|
-
const
|
|
98
|
+
const CallICFGNode* cbn = nIter->second;
|
|
99
99
|
|
|
100
100
|
if(!callgraph->hasIndCSCallees(cbn))
|
|
101
101
|
{
|
package/lib/DDA/FlowDDA.cpp
CHANGED
|
@@ -59,7 +59,7 @@ void FlowDDA::handleOutOfBudgetDpm(const LocDPItem& dpm)
|
|
|
59
59
|
bool FlowDDA::testIndCallReachability(LocDPItem&, const SVFFunction* callee, CallSiteID csId)
|
|
60
60
|
{
|
|
61
61
|
|
|
62
|
-
const
|
|
62
|
+
const CallICFGNode* cbn = getSVFG()->getCallSite(csId);
|
|
63
63
|
|
|
64
64
|
if(getPAG()->isIndirectCallSites(cbn))
|
|
65
65
|
{
|