svf-tools 1.0.321 → 1.0.325
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/AndersenSFR_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +13 -12
- package/SVF-doxygen/html/html/ConsG_8h_source.html +15 -15
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8cpp.html +1 -0
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -18
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +13 -13
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +9 -9
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +24 -24
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +13 -13
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +13 -13
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Options_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/Options_8h_source.html +2 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
- package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFG_8cpp.html +1 -0
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +63 -61
- package/SVF-doxygen/html/html/SVFG_8h_source.html +20 -20
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +42 -42
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +61 -61
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +153 -154
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/SVFStatements_8h.html +11 -11
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +133 -132
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFVariables_8h.html +9 -9
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +78 -78
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SrcSnkDDA_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 +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +17 -17
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +48 -48
- package/SVF-doxygen/html/html/VFG_8h_source.html +35 -35
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/annotated.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +137 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +500 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +155 -0
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +756 -0
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +33 -31
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +24 -22
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +169 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +537 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +169 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +547 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +172 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +556 -0
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +75 -22
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +479 -93
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +46 -46
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +57 -21
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +253 -89
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +167 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +531 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +165 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +502 -0
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +167 -0
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +577 -0
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +61 -61
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +57 -22
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +259 -118
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +170 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +752 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +54 -54
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1InterBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +57 -21
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +253 -89
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +147 -147
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +102 -102
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +24 -23
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +36 -34
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +142 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +649 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +165 -0
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +644 -0
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +21 -20
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +26 -0
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +74 -22
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +447 -98
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode-members.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +24 -22
- package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +56 -56
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +103 -103
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +68 -68
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +45 -45
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +132 -133
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +759 -777
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +180 -180
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +57 -39
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +82 -82
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1StoreCHI-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +57 -21
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +260 -89
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +18 -16
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +18 -16
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +147 -0
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +794 -0
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +42 -42
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +145 -145
- package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +163 -0
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +521 -0
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +139 -0
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +544 -0
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +3 -3
- package/SVF-doxygen/html/html/classes.html +18 -18
- package/SVF-doxygen/html/html/functions_a.html +55 -55
- package/SVF-doxygen/html/html/functions_b.html +2 -2
- package/SVF-doxygen/html/html/functions_c.html +54 -59
- package/SVF-doxygen/html/html/functions_d.html +4 -4
- package/SVF-doxygen/html/html/functions_f.html +5 -5
- package/SVF-doxygen/html/html/functions_func.html +54 -54
- package/SVF-doxygen/html/html/functions_func_b.html +2 -2
- package/SVF-doxygen/html/html/functions_func_c.html +30 -30
- package/SVF-doxygen/html/html/functions_func_d.html +4 -4
- package/SVF-doxygen/html/html/functions_func_f.html +2 -2
- package/SVF-doxygen/html/html/functions_func_g.html +107 -105
- package/SVF-doxygen/html/html/functions_func_h.html +6 -6
- package/SVF-doxygen/html/html/functions_func_l.html +3 -3
- package/SVF-doxygen/html/html/functions_func_n.html +2 -2
- package/SVF-doxygen/html/html/functions_func_o.html +15 -15
- package/SVF-doxygen/html/html/functions_func_p.html +2 -2
- package/SVF-doxygen/html/html/functions_func_s.html +4 -4
- package/SVF-doxygen/html/html/functions_func_t.html +20 -20
- package/SVF-doxygen/html/html/functions_func_u.html +2 -2
- package/SVF-doxygen/html/html/functions_func_v.html +5 -5
- package/SVF-doxygen/html/html/functions_g.html +123 -121
- package/SVF-doxygen/html/html/functions_h.html +6 -6
- package/SVF-doxygen/html/html/functions_i.html +15 -15
- package/SVF-doxygen/html/html/functions_k.html +9 -0
- package/SVF-doxygen/html/html/functions_l.html +12 -12
- package/SVF-doxygen/html/html/functions_m.html +1 -1
- package/SVF-doxygen/html/html/functions_n.html +6 -6
- package/SVF-doxygen/html/html/functions_o.html +32 -35
- package/SVF-doxygen/html/html/functions_p.html +32 -49
- package/SVF-doxygen/html/html/functions_r.html +1 -1
- package/SVF-doxygen/html/html/functions_s.html +33 -14
- package/SVF-doxygen/html/html/functions_t.html +24 -24
- package/SVF-doxygen/html/html/functions_type_c.html +1 -4
- package/SVF-doxygen/html/html/functions_type_f.html +2 -2
- package/SVF-doxygen/html/html/functions_type_g.html +2 -2
- package/SVF-doxygen/html/html/functions_type_i.html +3 -3
- package/SVF-doxygen/html/html/functions_type_k.html +3 -0
- package/SVF-doxygen/html/html/functions_type_l.html +3 -3
- package/SVF-doxygen/html/html/functions_type_p.html +3 -19
- package/SVF-doxygen/html/html/functions_type_s.html +19 -3
- package/SVF-doxygen/html/html/functions_type_v.html +1 -1
- package/SVF-doxygen/html/html/functions_u.html +2 -2
- package/SVF-doxygen/html/html/functions_v.html +8 -8
- package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_g.html +8 -8
- package/SVF-doxygen/html/html/functions_vars_i.html +9 -9
- package/SVF-doxygen/html/html/functions_vars_k.html +6 -0
- package/SVF-doxygen/html/html/functions_vars_l.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_o.html +3 -4
- package/SVF-doxygen/html/html/functions_vars_p.html +4 -7
- package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +5 -9
- package/SVF-doxygen/html/html/hierarchy.html +65 -65
- package/SVF-doxygen/html/html/namespaceSVF.html +24 -24
- package/SVF-doxygen/html/html/search/all_1.js +39 -39
- package/SVF-doxygen/html/html/search/all_10.js +12 -17
- package/SVF-doxygen/html/html/search/all_12.js +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +17 -12
- package/SVF-doxygen/html/html/search/all_14.js +5 -5
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_16.js +5 -5
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_2.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +9 -10
- package/SVF-doxygen/html/html/search/all_4.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +4 -4
- package/SVF-doxygen/html/html/search/all_7.js +54 -53
- package/SVF-doxygen/html/html/search/all_8.js +2 -2
- package/SVF-doxygen/html/html/search/all_9.js +4 -4
- package/SVF-doxygen/html/html/search/all_b.js +3 -0
- package/SVF-doxygen/html/html/search/all_c.js +7 -7
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +5 -5
- package/SVF-doxygen/html/html/search/all_f.js +5 -5
- package/SVF-doxygen/html/html/search/classes_0.js +1 -1
- package/SVF-doxygen/html/html/search/classes_1.js +1 -1
- package/SVF-doxygen/html/html/search/classes_11.js +1 -1
- package/SVF-doxygen/html/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/html/search/classes_2.js +5 -5
- package/SVF-doxygen/html/html/search/classes_3.js +2 -2
- package/SVF-doxygen/html/html/search/classes_5.js +1 -1
- package/SVF-doxygen/html/html/search/classes_6.js +2 -2
- package/SVF-doxygen/html/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/html/search/classes_b.js +1 -1
- package/SVF-doxygen/html/html/search/classes_c.js +1 -1
- package/SVF-doxygen/html/html/search/classes_d.js +1 -1
- package/SVF-doxygen/html/html/search/classes_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +39 -39
- package/SVF-doxygen/html/html/search/functions_1.js +1 -1
- package/SVF-doxygen/html/html/search/functions_10.js +4 -4
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_13.js +2 -2
- package/SVF-doxygen/html/html/search/functions_2.js +7 -7
- package/SVF-doxygen/html/html/search/functions_3.js +2 -2
- package/SVF-doxygen/html/html/search/functions_5.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +49 -48
- package/SVF-doxygen/html/html/search/functions_7.js +2 -2
- package/SVF-doxygen/html/html/search/functions_a.js +3 -3
- package/SVF-doxygen/html/html/search/functions_c.js +1 -1
- package/SVF-doxygen/html/html/search/functions_d.js +2 -2
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +7 -3
- package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -2
- package/SVF-doxygen/html/html/search/typedefs_5.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_6.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_a.js +2 -1
- package/SVF-doxygen/html/html/search/typedefs_b.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_f.js +3 -7
- package/SVF-doxygen/html/html/search/variables_10.js +2 -3
- package/SVF-doxygen/html/html/search/variables_13.js +1 -0
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_6.js +1 -1
- package/SVF-doxygen/html/html/search/variables_7.js +4 -4
- package/SVF-doxygen/html/html/search/variables_9.js +4 -4
- package/SVF-doxygen/html/html/search/variables_b.js +3 -1
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +3 -3
- package/SVF-doxygen/html/html/search/variables_f.js +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +9 -9
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +18 -18
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +20 -20
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/include/DDA/ContextDDA.h +1 -1
- package/include/DDA/FlowDDA.h +1 -1
- package/include/Graphs/ConsG.h +10 -10
- package/include/Graphs/ICFGNode.h +4 -4
- package/include/Graphs/IRGraph.h +7 -7
- package/include/Graphs/VFG.h +13 -13
- package/include/Graphs/VFGNode.h +6 -6
- package/include/MSSA/MSSAMuChi.h +6 -6
- package/include/MSSA/MemRegion.h +11 -11
- package/include/MSSA/MemSSA.h +11 -11
- package/include/MemoryModel/PointerAnalysis.h +9 -9
- package/include/MemoryModel/PointerAnalysisImpl.h +4 -4
- package/include/MemoryModel/SVFIR.h +82 -83
- package/include/MemoryModel/SVFStatements.h +97 -92
- package/include/MemoryModel/SVFVariables.h +71 -71
- package/include/SVF-FE/SVFIRBuilder.h +24 -24
- package/include/Util/IRAnnotator.h +1 -1
- package/include/Util/Options.h +3 -1
- package/include/Util/TypeBasedHeapCloning.h +2 -2
- package/include/WPA/Andersen.h +1 -1
- package/include/WPA/FlowSensitiveTBHC.h +1 -1
- package/lib/DDA/ContextDDA.cpp +6 -6
- package/lib/DDA/DDAClient.cpp +6 -6
- package/lib/DDA/DDAStat.cpp +2 -2
- package/lib/DDA/FlowDDA.cpp +4 -4
- package/lib/Graphs/ConsG.cpp +37 -36
- package/lib/Graphs/ICFG.cpp +4 -4
- package/lib/Graphs/IRGraph.cpp +27 -24
- package/lib/Graphs/OfflineConsG.cpp +8 -8
- package/lib/Graphs/SVFG.cpp +18 -16
- package/lib/Graphs/ThreadCallGraph.cpp +2 -2
- package/lib/Graphs/VFG.cpp +52 -52
- package/lib/MSSA/MemRegion.cpp +23 -23
- package/lib/MSSA/MemSSA.cpp +15 -15
- package/lib/MTA/MTAAnnotator.cpp +5 -5
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +13 -13
- package/lib/MemoryModel/PointerAnalysis.cpp +9 -9
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +14 -14
- package/lib/MemoryModel/SVFIR.cpp +95 -95
- package/lib/MemoryModel/SVFStatements.cpp +24 -24
- package/lib/MemoryModel/SVFVariables.cpp +19 -19
- package/lib/SABER/LeakChecker.cpp +2 -2
- package/lib/SABER/SaberSVFGBuilder.cpp +5 -5
- package/lib/SVF-FE/Graph2Json.cpp +3 -3
- package/lib/SVF-FE/SVFIRBuilder.cpp +22 -22
- package/lib/Util/Options.cpp +6 -0
- package/lib/Util/PTAStat.cpp +8 -8
- package/lib/Util/TypeBasedHeapCloning.cpp +22 -22
- package/lib/WPA/Andersen.cpp +13 -13
- package/lib/WPA/AndersenSFR.cpp +2 -2
- package/lib/WPA/AndersenStat.cpp +6 -6
- package/lib/WPA/FlowSensitive.cpp +8 -8
- package/lib/WPA/FlowSensitiveStat.cpp +4 -4
- package/lib/WPA/FlowSensitiveTBHC.cpp +9 -9
- package/lib/WPA/VersionedFlowSensitive.cpp +2 -2
- package/lib/WPA/VersionedFlowSensitiveStat.cpp +1 -1
- package/package.json +1 -1
package/lib/DDA/DDAClient.cpp
CHANGED
|
@@ -155,8 +155,8 @@ void FunptrDDAClient::performStat(PointerAnalysis* pta)
|
|
|
155
155
|
OrderedNodeSet& AliasDDAClient::collectCandidateQueries(SVFIR* pag)
|
|
156
156
|
{
|
|
157
157
|
setPAG(pag);
|
|
158
|
-
PAGEdge::
|
|
159
|
-
for (PAGEdge::
|
|
158
|
+
PAGEdge::SVFStmtSetTy& loads = pag->getSVFStmtSet(PAGEdge::Load);
|
|
159
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = loads.begin(), eiter =
|
|
160
160
|
loads.end(); iter != eiter; ++iter)
|
|
161
161
|
{
|
|
162
162
|
PAGNode* loadsrc = (*iter)->getSrcNode();
|
|
@@ -164,16 +164,16 @@ OrderedNodeSet& AliasDDAClient::collectCandidateQueries(SVFIR* pag)
|
|
|
164
164
|
addCandidate(loadsrc->getId());
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
-
PAGEdge::
|
|
168
|
-
for (PAGEdge::
|
|
167
|
+
PAGEdge::SVFStmtSetTy& stores = pag->getSVFStmtSet(PAGEdge::Store);
|
|
168
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = stores.begin(), eiter =
|
|
169
169
|
stores.end(); iter != eiter; ++iter)
|
|
170
170
|
{
|
|
171
171
|
PAGNode* storedst = (*iter)->getDstNode();
|
|
172
172
|
storeDstNodes.insert(storedst);
|
|
173
173
|
addCandidate(storedst->getId());
|
|
174
174
|
}
|
|
175
|
-
PAGEdge::
|
|
176
|
-
for (PAGEdge::
|
|
175
|
+
PAGEdge::SVFStmtSetTy& geps = pag->getSVFStmtSet(PAGEdge::NormalGep);
|
|
176
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = geps.begin(), eiter =
|
|
177
177
|
geps.end(); iter != eiter; ++iter)
|
|
178
178
|
{
|
|
179
179
|
PAGNode* gepsrc = (*iter)->getSrcNode();
|
package/lib/DDA/DDAStat.cpp
CHANGED
|
@@ -208,7 +208,7 @@ void DDAStat::performStat()
|
|
|
208
208
|
for (SVFIR::const_iterator nodeIt = SVFIR::getPAG()->begin(), nodeEit = SVFIR::getPAG()->end(); nodeIt != nodeEit; nodeIt++)
|
|
209
209
|
{
|
|
210
210
|
PAGNode* pagNode = nodeIt->second;
|
|
211
|
-
if(SVFUtil::isa<
|
|
211
|
+
if(SVFUtil::isa<ObjVar>(pagNode))
|
|
212
212
|
{
|
|
213
213
|
if(getPTA()->isLocalVarInRecursiveFun(nodeIt->first))
|
|
214
214
|
{
|
|
@@ -242,7 +242,7 @@ void DDAStat::performStat()
|
|
|
242
242
|
PTNumStatMap["PointsToBlkPtr"] = _NumOfBlackholePtr;
|
|
243
243
|
PTNumStatMap["NumOfMustAA"] = _TotalNumOfMustAliases;
|
|
244
244
|
PTNumStatMap["NumOfInfePath"] = _TotalNumOfInfeasiblePath;
|
|
245
|
-
PTNumStatMap["NumOfStore"] = SVFIR::getPAG()->
|
|
245
|
+
PTNumStatMap["NumOfStore"] = SVFIR::getPAG()->getPTASVFStmtSet(PAGEdge::Store).size();
|
|
246
246
|
PTNumStatMap["MemoryUsageVmrss"] = _vmrssUsageAfter - _vmrssUsageBefore;
|
|
247
247
|
PTNumStatMap["MemoryUsageVmsize"] = _vmsizeUsageAfter - _vmsizeUsageBefore;
|
|
248
248
|
|
package/lib/DDA/FlowDDA.cpp
CHANGED
|
@@ -126,14 +126,14 @@ PointsTo FlowDDA::processGepPts(const GepSVFGNode* gep, const PointsTo& srcPts)
|
|
|
126
126
|
tmpDstPts.set(ptd);
|
|
127
127
|
else
|
|
128
128
|
{
|
|
129
|
-
if (SVFUtil::isa<
|
|
129
|
+
if (SVFUtil::isa<VariantGepStmt>(gep->getPAGEdge()))
|
|
130
130
|
{
|
|
131
131
|
setObjFieldInsensitive(ptd);
|
|
132
|
-
tmpDstPts.set(
|
|
132
|
+
tmpDstPts.set(getFIObjVar(ptd));
|
|
133
133
|
}
|
|
134
|
-
else if (const
|
|
134
|
+
else if (const NormalGepStmt* normalGep = SVFUtil::dyn_cast<NormalGepStmt>(gep->getPAGEdge()))
|
|
135
135
|
{
|
|
136
|
-
NodeID fieldSrcPtdNode =
|
|
136
|
+
NodeID fieldSrcPtdNode = getGepObjVar(ptd, normalGep->getLocationSet());
|
|
137
137
|
tmpDstPts.set(fieldSrcPtdNode);
|
|
138
138
|
}
|
|
139
139
|
else
|
package/lib/Graphs/ConsG.cpp
CHANGED
|
@@ -49,89 +49,89 @@ void ConstraintGraph::buildCG()
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
// initialize edges
|
|
52
|
-
PAGEdge::
|
|
53
|
-
for (PAGEdge::
|
|
52
|
+
PAGEdge::SVFStmtSetTy& addrs = getPAGEdgeSet(PAGEdge::Addr);
|
|
53
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = addrs.begin(), eiter =
|
|
54
54
|
addrs.end(); iter != eiter; ++iter)
|
|
55
55
|
{
|
|
56
56
|
PAGEdge* edge = *iter;
|
|
57
57
|
addAddrCGEdge(edge->getSrcID(),edge->getDstID());
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
PAGEdge::
|
|
61
|
-
for (PAGEdge::
|
|
60
|
+
PAGEdge::SVFStmtSetTy& copys = getPAGEdgeSet(PAGEdge::Copy);
|
|
61
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = copys.begin(), eiter =
|
|
62
62
|
copys.end(); iter != eiter; ++iter)
|
|
63
63
|
{
|
|
64
64
|
PAGEdge* edge = *iter;
|
|
65
65
|
addCopyCGEdge(edge->getSrcID(),edge->getDstID());
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
PAGEdge::
|
|
69
|
-
for (PAGEdge::
|
|
68
|
+
PAGEdge::SVFStmtSetTy& phis = getPAGEdgeSet(PAGEdge::Phi);
|
|
69
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = phis.begin(), eiter =
|
|
70
70
|
phis.end(); iter != eiter; ++iter)
|
|
71
71
|
{
|
|
72
|
-
const
|
|
72
|
+
const PhiStmt* edge = SVFUtil::cast<PhiStmt>(*iter);
|
|
73
73
|
for(const auto opVar : edge->getOpndVars())
|
|
74
74
|
addCopyCGEdge(opVar->getId(),edge->getResID());
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
PAGEdge::
|
|
78
|
-
for (PAGEdge::
|
|
77
|
+
PAGEdge::SVFStmtSetTy& calls = getPAGEdgeSet(PAGEdge::Call);
|
|
78
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = calls.begin(), eiter =
|
|
79
79
|
calls.end(); iter != eiter; ++iter)
|
|
80
80
|
{
|
|
81
81
|
PAGEdge* edge = *iter;
|
|
82
82
|
addCopyCGEdge(edge->getSrcID(),edge->getDstID());
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
PAGEdge::
|
|
86
|
-
for (PAGEdge::
|
|
85
|
+
PAGEdge::SVFStmtSetTy& rets = getPAGEdgeSet(PAGEdge::Ret);
|
|
86
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = rets.begin(), eiter =
|
|
87
87
|
rets.end(); iter != eiter; ++iter)
|
|
88
88
|
{
|
|
89
89
|
PAGEdge* edge = *iter;
|
|
90
90
|
addCopyCGEdge(edge->getSrcID(),edge->getDstID());
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
PAGEdge::
|
|
94
|
-
for (PAGEdge::
|
|
93
|
+
PAGEdge::SVFStmtSetTy& tdfks = getPAGEdgeSet(PAGEdge::ThreadFork);
|
|
94
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = tdfks.begin(), eiter =
|
|
95
95
|
tdfks.end(); iter != eiter; ++iter)
|
|
96
96
|
{
|
|
97
97
|
PAGEdge* edge = *iter;
|
|
98
98
|
addCopyCGEdge(edge->getSrcID(),edge->getDstID());
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
PAGEdge::
|
|
102
|
-
for (PAGEdge::
|
|
101
|
+
PAGEdge::SVFStmtSetTy& tdjns = getPAGEdgeSet(PAGEdge::ThreadJoin);
|
|
102
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = tdjns.begin(), eiter =
|
|
103
103
|
tdjns.end(); iter != eiter; ++iter)
|
|
104
104
|
{
|
|
105
105
|
PAGEdge* edge = *iter;
|
|
106
106
|
addCopyCGEdge(edge->getSrcID(),edge->getDstID());
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
PAGEdge::
|
|
110
|
-
for (PAGEdge::
|
|
109
|
+
PAGEdge::SVFStmtSetTy& ngeps = getPAGEdgeSet(PAGEdge::NormalGep);
|
|
110
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =
|
|
111
111
|
ngeps.end(); iter != eiter; ++iter)
|
|
112
112
|
{
|
|
113
|
-
|
|
113
|
+
NormalGepStmt* edge = SVFUtil::cast<NormalGepStmt>(*iter);
|
|
114
114
|
addNormalGepCGEdge(edge->getSrcID(),edge->getDstID(),edge->getLocationSet());
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
PAGEdge::
|
|
118
|
-
for (PAGEdge::
|
|
117
|
+
PAGEdge::SVFStmtSetTy& vgeps = getPAGEdgeSet(PAGEdge::VariantGep);
|
|
118
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = vgeps.begin(), eiter =
|
|
119
119
|
vgeps.end(); iter != eiter; ++iter)
|
|
120
120
|
{
|
|
121
|
-
|
|
121
|
+
VariantGepStmt* edge = SVFUtil::cast<VariantGepStmt>(*iter);
|
|
122
122
|
addVariantGepCGEdge(edge->getSrcID(),edge->getDstID());
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
PAGEdge::
|
|
126
|
-
for (PAGEdge::
|
|
125
|
+
PAGEdge::SVFStmtSetTy& stores = getPAGEdgeSet(PAGEdge::Load);
|
|
126
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = stores.begin(), eiter =
|
|
127
127
|
stores.end(); iter != eiter; ++iter)
|
|
128
128
|
{
|
|
129
129
|
PAGEdge* edge = *iter;
|
|
130
130
|
addLoadCGEdge(edge->getSrcID(),edge->getDstID());
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
PAGEdge::
|
|
134
|
-
for (PAGEdge::
|
|
133
|
+
PAGEdge::SVFStmtSetTy& loads = getPAGEdgeSet(PAGEdge::Store);
|
|
134
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = loads.begin(), eiter =
|
|
135
135
|
loads.end(); iter != eiter; ++iter)
|
|
136
136
|
{
|
|
137
137
|
PAGEdge* edge = *iter;
|
|
@@ -156,7 +156,7 @@ AddrCGEdge::AddrCGEdge(ConstraintNode* s, ConstraintNode* d, EdgeID id)
|
|
|
156
156
|
// Retarget addr edges may lead s to be a dummy node
|
|
157
157
|
PAGNode* node = SVFIR::getPAG()->getGNode(s->getId());
|
|
158
158
|
if (!SVFModule::pagReadFromTXT())
|
|
159
|
-
assert(!SVFUtil::isa<
|
|
159
|
+
assert(!SVFUtil::isa<DummyValVar>(node) && "a dummy node??");
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
/*!
|
|
@@ -624,11 +624,12 @@ struct DOTGraphTraits<ConstraintGraph*> : public DOTGraphTraits<SVFIR*>
|
|
|
624
624
|
}
|
|
625
625
|
|
|
626
626
|
#if LLVM_VERSION_MAJOR >= 12
|
|
627
|
-
static bool isNodeHidden(NodeType *n, ConstraintGraph*)
|
|
627
|
+
static bool isNodeHidden(NodeType *n, ConstraintGraph *){
|
|
628
628
|
#else
|
|
629
629
|
static bool isNodeHidden(NodeType *n) {
|
|
630
630
|
#endif
|
|
631
|
-
|
|
631
|
+
if (Options::ShowHiddenNode) return false;
|
|
632
|
+
else return (n->getInEdges().empty() && n->getOutEdges().empty());
|
|
632
633
|
}
|
|
633
634
|
|
|
634
635
|
/// Return label of a VFG node with two display mode
|
|
@@ -643,7 +644,7 @@ struct DOTGraphTraits<ConstraintGraph*> : public DOTGraphTraits<SVFIR*>
|
|
|
643
644
|
|
|
644
645
|
if (briefDisplay)
|
|
645
646
|
{
|
|
646
|
-
if (SVFUtil::isa<
|
|
647
|
+
if (SVFUtil::isa<ValVar>(node))
|
|
647
648
|
{
|
|
648
649
|
if (nameDisplay)
|
|
649
650
|
rawstr << node->getId() << ":" << node->getValueName();
|
|
@@ -656,7 +657,7 @@ struct DOTGraphTraits<ConstraintGraph*> : public DOTGraphTraits<SVFIR*>
|
|
|
656
657
|
else
|
|
657
658
|
{
|
|
658
659
|
// print the whole value
|
|
659
|
-
if (!SVFUtil::isa<
|
|
660
|
+
if (!SVFUtil::isa<DummyValVar>(node) && !SVFUtil::isa<DummyObjVar>(node))
|
|
660
661
|
rawstr << node->getId() << ":" << value2String(node->getValue());
|
|
661
662
|
else
|
|
662
663
|
rawstr << node->getId() << ":";
|
|
@@ -669,22 +670,22 @@ struct DOTGraphTraits<ConstraintGraph*> : public DOTGraphTraits<SVFIR*>
|
|
|
669
670
|
static std::string getNodeAttributes(NodeType *n, ConstraintGraph*)
|
|
670
671
|
{
|
|
671
672
|
PAGNode* node = SVFIR::getPAG()->getGNode(n->getId());
|
|
672
|
-
if (SVFUtil::isa<
|
|
673
|
+
if (SVFUtil::isa<ValVar>(node))
|
|
673
674
|
{
|
|
674
|
-
if(SVFUtil::isa<
|
|
675
|
+
if(SVFUtil::isa<GepValVar>(node))
|
|
675
676
|
return "shape=hexagon";
|
|
676
|
-
else if (SVFUtil::isa<
|
|
677
|
+
else if (SVFUtil::isa<DummyValVar>(node))
|
|
677
678
|
return "shape=diamond";
|
|
678
679
|
else
|
|
679
680
|
return "shape=box";
|
|
680
681
|
}
|
|
681
|
-
else if (SVFUtil::isa<
|
|
682
|
+
else if (SVFUtil::isa<ObjVar>(node))
|
|
682
683
|
{
|
|
683
684
|
if(SVFUtil::isa<GepObjPN>(node))
|
|
684
685
|
return "shape=doubleoctagon";
|
|
685
|
-
else if(SVFUtil::isa<
|
|
686
|
+
else if(SVFUtil::isa<FIObjVar>(node))
|
|
686
687
|
return "shape=box3d";
|
|
687
|
-
else if (SVFUtil::isa<
|
|
688
|
+
else if (SVFUtil::isa<DummyObjVar>(node))
|
|
688
689
|
return "shape=tab";
|
|
689
690
|
else
|
|
690
691
|
return "shape=component";
|
package/lib/Graphs/ICFG.cpp
CHANGED
|
@@ -472,11 +472,11 @@ struct DOTGraphTraits<ICFG*> : public DOTGraphTraits<SVFIR*>
|
|
|
472
472
|
if (IntraBlockNode* bNode = SVFUtil::dyn_cast<IntraBlockNode>(node))
|
|
473
473
|
{
|
|
474
474
|
rawstr << "IntraBlockNode ID: " << bNode->getId() << " \t";
|
|
475
|
-
SVFIR::
|
|
475
|
+
SVFIR::SVFStmtList& edges = SVFIR::getPAG()->getPTASVFStmtList(bNode);
|
|
476
476
|
if (edges.empty()) {
|
|
477
477
|
rawstr << value2String(bNode->getInst()) << " \t";
|
|
478
478
|
} else {
|
|
479
|
-
for (SVFIR::
|
|
479
|
+
for (SVFIR::SVFStmtList::iterator it = edges.begin(), eit = edges.end(); it != eit; ++it)
|
|
480
480
|
{
|
|
481
481
|
const PAGEdge* edge = *it;
|
|
482
482
|
rawstr << edge->toString();
|
|
@@ -502,8 +502,8 @@ struct DOTGraphTraits<ICFG*> : public DOTGraphTraits<SVFIR*>
|
|
|
502
502
|
}
|
|
503
503
|
else if (GlobalBlockNode* glob = SVFUtil::dyn_cast<GlobalBlockNode>(node) )
|
|
504
504
|
{
|
|
505
|
-
SVFIR::
|
|
506
|
-
for (SVFIR::
|
|
505
|
+
SVFIR::SVFStmtList& edges = SVFIR::getPAG()->getPTASVFStmtList(glob);
|
|
506
|
+
for (SVFIR::SVFStmtList::iterator it = edges.begin(), eit = edges.end(); it != eit; ++it)
|
|
507
507
|
{
|
|
508
508
|
const PAGEdge* edge = *it;
|
|
509
509
|
rawstr << edge->toString();
|
package/lib/Graphs/IRGraph.cpp
CHANGED
|
@@ -28,6 +28,8 @@
|
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
30
|
#include "Graphs/IRGraph.h"
|
|
31
|
+
#include "Util/Options.h"
|
|
32
|
+
|
|
31
33
|
using namespace SVF;
|
|
32
34
|
using namespace SVFUtil;
|
|
33
35
|
|
|
@@ -57,8 +59,8 @@ bool IRGraph::addEdge(SVFVar* src, SVFVar* dst, SVFStmt* edge)
|
|
|
57
59
|
SVFStmt* IRGraph::hasNonlabeledEdge(SVFVar* src, SVFVar* dst, SVFStmt::PEDGEK kind)
|
|
58
60
|
{
|
|
59
61
|
SVFStmt edge(src,dst,kind);
|
|
60
|
-
SVFStmt::
|
|
61
|
-
if (it !=
|
|
62
|
+
SVFStmt::SVFStmtSetTy::iterator it = KindToSVFStmtSetMap[kind].find(&edge);
|
|
63
|
+
if (it != KindToSVFStmtSetMap[kind].end())
|
|
62
64
|
{
|
|
63
65
|
return *it;
|
|
64
66
|
}
|
|
@@ -71,8 +73,8 @@ SVFStmt* IRGraph::hasNonlabeledEdge(SVFVar* src, SVFVar* dst, SVFStmt::PEDGEK ki
|
|
|
71
73
|
SVFStmt* IRGraph::hasLabeledEdge(SVFVar* src, SVFVar* op1, SVFStmt::PEDGEK kind, const SVFVar* op2)
|
|
72
74
|
{
|
|
73
75
|
SVFStmt edge(src,op1,SVFStmt::makeEdgeFlagWithAddionalOpnd(kind,op2));
|
|
74
|
-
SVFStmt::
|
|
75
|
-
if (it !=
|
|
76
|
+
SVFStmt::SVFStmtSetTy::iterator it = KindToSVFStmtSetMap[kind].find(&edge);
|
|
77
|
+
if (it != KindToSVFStmtSetMap[kind].end())
|
|
76
78
|
{
|
|
77
79
|
return *it;
|
|
78
80
|
}
|
|
@@ -85,8 +87,8 @@ SVFStmt* IRGraph::hasLabeledEdge(SVFVar* src, SVFVar* op1, SVFStmt::PEDGEK kind,
|
|
|
85
87
|
SVFStmt* IRGraph::hasLabeledEdge(SVFVar* src, SVFVar* dst, SVFStmt::PEDGEK kind, const ICFGNode* callInst)
|
|
86
88
|
{
|
|
87
89
|
SVFStmt edge(src,dst,SVFStmt::makeEdgeFlagWithCallInst(kind,callInst));
|
|
88
|
-
SVFStmt::
|
|
89
|
-
if (it !=
|
|
90
|
+
SVFStmt::SVFStmtSetTy::iterator it = KindToSVFStmtSetMap[kind].find(&edge);
|
|
91
|
+
if (it != KindToSVFStmtSetMap[kind].end())
|
|
90
92
|
{
|
|
91
93
|
return *it;
|
|
92
94
|
}
|
|
@@ -135,12 +137,13 @@ struct DOTGraphTraits<IRGraph*> : public DefaultDOTGraphTraits
|
|
|
135
137
|
/// isNodeHidden - If the function returns true, the given node is not
|
|
136
138
|
/// displayed in the graph
|
|
137
139
|
#if LLVM_VERSION_MAJOR >= 12
|
|
138
|
-
|
|
140
|
+
static bool isNodeHidden(SVFVar *node, IRGraph *){
|
|
139
141
|
#else
|
|
140
142
|
static bool isNodeHidden(SVFVar *node) {
|
|
141
143
|
#endif
|
|
142
|
-
|
|
143
|
-
|
|
144
|
+
if (Options::ShowHiddenNode) return false;
|
|
145
|
+
else return node->isIsolatedNode();
|
|
146
|
+
}
|
|
144
147
|
|
|
145
148
|
/// Return label of a VFG node with two display mode
|
|
146
149
|
/// Either you can choose to display the name of the value or the whole instruction
|
|
@@ -160,22 +163,22 @@ struct DOTGraphTraits<IRGraph*> : public DefaultDOTGraphTraits
|
|
|
160
163
|
|
|
161
164
|
static std::string getNodeAttributes(SVFVar *node, IRGraph*)
|
|
162
165
|
{
|
|
163
|
-
if (SVFUtil::isa<
|
|
166
|
+
if (SVFUtil::isa<ValVar>(node))
|
|
164
167
|
{
|
|
165
|
-
if(SVFUtil::isa<
|
|
168
|
+
if(SVFUtil::isa<GepValVar>(node))
|
|
166
169
|
return "shape=hexagon";
|
|
167
|
-
else if (SVFUtil::isa<
|
|
170
|
+
else if (SVFUtil::isa<DummyValVar>(node))
|
|
168
171
|
return "shape=diamond";
|
|
169
172
|
else
|
|
170
173
|
return "shape=box";
|
|
171
174
|
}
|
|
172
|
-
else if (SVFUtil::isa<
|
|
175
|
+
else if (SVFUtil::isa<ObjVar>(node))
|
|
173
176
|
{
|
|
174
177
|
if(SVFUtil::isa<GepObjPN>(node))
|
|
175
178
|
return "shape=doubleoctagon";
|
|
176
|
-
else if(SVFUtil::isa<
|
|
179
|
+
else if(SVFUtil::isa<FIObjVar>(node))
|
|
177
180
|
return "shape=box3d";
|
|
178
|
-
else if (SVFUtil::isa<
|
|
181
|
+
else if (SVFUtil::isa<DummyObjVar>(node))
|
|
179
182
|
return "shape=tab";
|
|
180
183
|
else
|
|
181
184
|
return "shape=component";
|
|
@@ -200,39 +203,39 @@ struct DOTGraphTraits<IRGraph*> : public DefaultDOTGraphTraits
|
|
|
200
203
|
{
|
|
201
204
|
const SVFStmt* edge = *(EI.getCurrent());
|
|
202
205
|
assert(edge && "No edge found!!");
|
|
203
|
-
if (SVFUtil::isa<
|
|
206
|
+
if (SVFUtil::isa<AddrStmt>(edge))
|
|
204
207
|
{
|
|
205
208
|
return "color=green";
|
|
206
209
|
}
|
|
207
|
-
else if (SVFUtil::isa<
|
|
210
|
+
else if (SVFUtil::isa<CopyStmt>(edge))
|
|
208
211
|
{
|
|
209
212
|
return "color=black";
|
|
210
213
|
}
|
|
211
|
-
else if (SVFUtil::isa<
|
|
214
|
+
else if (SVFUtil::isa<GepStmt>(edge))
|
|
212
215
|
{
|
|
213
216
|
return "color=purple";
|
|
214
217
|
}
|
|
215
|
-
else if (SVFUtil::isa<
|
|
218
|
+
else if (SVFUtil::isa<StoreStmt>(edge))
|
|
216
219
|
{
|
|
217
220
|
return "color=blue";
|
|
218
221
|
}
|
|
219
|
-
else if (SVFUtil::isa<
|
|
222
|
+
else if (SVFUtil::isa<LoadStmt>(edge))
|
|
220
223
|
{
|
|
221
224
|
return "color=red";
|
|
222
225
|
}
|
|
223
|
-
else if (SVFUtil::isa<
|
|
226
|
+
else if (SVFUtil::isa<PhiStmt>(edge))
|
|
224
227
|
{
|
|
225
228
|
return "color=grey";
|
|
226
229
|
}
|
|
227
|
-
else if (SVFUtil::isa<
|
|
230
|
+
else if (SVFUtil::isa<CmpStmt>(edge))
|
|
228
231
|
{
|
|
229
232
|
return "color=grey";
|
|
230
233
|
}
|
|
231
|
-
else if (SVFUtil::isa<
|
|
234
|
+
else if (SVFUtil::isa<BinaryOPStmt>(edge))
|
|
232
235
|
{
|
|
233
236
|
return "color=grey";
|
|
234
237
|
}
|
|
235
|
-
else if (SVFUtil::isa<
|
|
238
|
+
else if (SVFUtil::isa<UnaryOPStmt>(edge))
|
|
236
239
|
{
|
|
237
240
|
return "color=grey";
|
|
238
241
|
}
|
|
@@ -209,7 +209,7 @@ struct DOTGraphTraits<OfflineConsG*> : public DOTGraphTraits<SVFIR*>
|
|
|
209
209
|
|
|
210
210
|
if (briefDisplay)
|
|
211
211
|
{
|
|
212
|
-
if (SVFUtil::isa<
|
|
212
|
+
if (SVFUtil::isa<ValVar>(node))
|
|
213
213
|
{
|
|
214
214
|
if (nameDisplay)
|
|
215
215
|
rawstr << node->getId() << ":" << node->getValueName();
|
|
@@ -222,7 +222,7 @@ struct DOTGraphTraits<OfflineConsG*> : public DOTGraphTraits<SVFIR*>
|
|
|
222
222
|
else
|
|
223
223
|
{
|
|
224
224
|
// print the whole value
|
|
225
|
-
if (!SVFUtil::isa<
|
|
225
|
+
if (!SVFUtil::isa<DummyValVar>(node) && !SVFUtil::isa<DummyObjVar>(node))
|
|
226
226
|
rawstr << *node->getValue();
|
|
227
227
|
else
|
|
228
228
|
rawstr << "";
|
|
@@ -243,22 +243,22 @@ struct DOTGraphTraits<OfflineConsG*> : public DOTGraphTraits<SVFIR*>
|
|
|
243
243
|
if (SVFIR::getPAG()->getGNode(n->getId()))
|
|
244
244
|
{
|
|
245
245
|
PAGNode *node = SVFIR::getPAG()->getGNode(n->getId());
|
|
246
|
-
if (SVFUtil::isa<
|
|
246
|
+
if (SVFUtil::isa<ValVar>(node))
|
|
247
247
|
{
|
|
248
|
-
if(SVFUtil::isa<
|
|
248
|
+
if(SVFUtil::isa<GepValVar>(node))
|
|
249
249
|
return "shape=hexagon";
|
|
250
|
-
else if (SVFUtil::isa<
|
|
250
|
+
else if (SVFUtil::isa<DummyValVar>(node))
|
|
251
251
|
return "shape=diamond";
|
|
252
252
|
else
|
|
253
253
|
return "shape=box";
|
|
254
254
|
}
|
|
255
|
-
else if (SVFUtil::isa<
|
|
255
|
+
else if (SVFUtil::isa<ObjVar>(node))
|
|
256
256
|
{
|
|
257
257
|
if(SVFUtil::isa<GepObjPN>(node))
|
|
258
258
|
return "shape=doubleoctagon";
|
|
259
|
-
else if(SVFUtil::isa<
|
|
259
|
+
else if(SVFUtil::isa<FIObjVar>(node))
|
|
260
260
|
return "shape=box3d";
|
|
261
|
-
else if (SVFUtil::isa<
|
|
261
|
+
else if (SVFUtil::isa<DummyObjVar>(node))
|
|
262
262
|
return "shape=tab";
|
|
263
263
|
else
|
|
264
264
|
return "shape=component";
|
package/lib/Graphs/SVFG.cpp
CHANGED
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
#include "Graphs/SVFGOPT.h"
|
|
34
34
|
#include "Graphs/SVFGStat.h"
|
|
35
35
|
#include "Graphs/ICFG.h"
|
|
36
|
+
#include "Util/Options.h"
|
|
36
37
|
#include "MemoryModel/PointerAnalysisImpl.h"
|
|
37
38
|
#include <fstream>
|
|
38
39
|
|
|
@@ -223,11 +224,11 @@ void SVFG::addSVFGNodesForAddrTakenVars()
|
|
|
223
224
|
{
|
|
224
225
|
|
|
225
226
|
// set defs for address-taken vars defined at store statements
|
|
226
|
-
PAGEdge::
|
|
227
|
-
for (PAGEdge::
|
|
227
|
+
PAGEdge::SVFStmtSetTy& stores = getPAGEdgeSet(PAGEdge::Store);
|
|
228
|
+
for (PAGEdge::SVFStmtSetTy::iterator iter = stores.begin(), eiter =
|
|
228
229
|
stores.end(); iter != eiter; ++iter)
|
|
229
230
|
{
|
|
230
|
-
|
|
231
|
+
StoreStmt* store = SVFUtil::cast<StoreStmt>(*iter);
|
|
231
232
|
const StmtSVFGNode* sNode = getStmtVFGNode(store);
|
|
232
233
|
for(CHISet::iterator pi = mssa->getCHISet(store).begin(), epi = mssa->getCHISet(store).end(); pi!=epi; ++pi)
|
|
233
234
|
setDef((*pi)->getResVer(),sNode);
|
|
@@ -297,7 +298,7 @@ void SVFG::connectIndirectSVFGEdges()
|
|
|
297
298
|
const SVFGNode* node = it->second;
|
|
298
299
|
if(const LoadSVFGNode* loadNode = SVFUtil::dyn_cast<LoadSVFGNode>(node))
|
|
299
300
|
{
|
|
300
|
-
MUSet& muSet = mssa->getMUSet(SVFUtil::cast<
|
|
301
|
+
MUSet& muSet = mssa->getMUSet(SVFUtil::cast<LoadStmt>(loadNode->getPAGEdge()));
|
|
301
302
|
for(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)
|
|
302
303
|
{
|
|
303
304
|
if(LOADMU* mu = SVFUtil::dyn_cast<LOADMU>(*it))
|
|
@@ -309,7 +310,7 @@ void SVFG::connectIndirectSVFGEdges()
|
|
|
309
310
|
}
|
|
310
311
|
else if(const StoreSVFGNode* storeNode = SVFUtil::dyn_cast<StoreSVFGNode>(node))
|
|
311
312
|
{
|
|
312
|
-
CHISet& chiSet = mssa->getCHISet(SVFUtil::cast<
|
|
313
|
+
CHISet& chiSet = mssa->getCHISet(SVFUtil::cast<StoreStmt>(storeNode->getPAGEdge()));
|
|
313
314
|
for(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)
|
|
314
315
|
{
|
|
315
316
|
if(STORECHI* chi = SVFUtil::dyn_cast<STORECHI>(*it))
|
|
@@ -571,10 +572,10 @@ void SVFG::getInterVFEdgesForIndirectCallSite(const CallBlockNode* callBlockNode
|
|
|
571
572
|
// Find inter direct call edges between actual param and formal param.
|
|
572
573
|
if (pag->hasCallSiteArgsMap(callBlockNode) && pag->hasFunArgsList(callee))
|
|
573
574
|
{
|
|
574
|
-
const SVFIR::
|
|
575
|
-
const SVFIR::
|
|
576
|
-
SVFIR::
|
|
577
|
-
SVFIR::
|
|
575
|
+
const SVFIR::SVFVarList& csArgList = pag->getCallSiteArgsList(callBlockNode);
|
|
576
|
+
const SVFIR::SVFVarList& funArgList = pag->getFunArgsList(callee);
|
|
577
|
+
SVFIR::SVFVarList::const_iterator csArgIt = csArgList.begin(), csArgEit = csArgList.end();
|
|
578
|
+
SVFIR::SVFVarList::const_iterator funArgIt = funArgList.begin(), funArgEit = funArgList.end();
|
|
578
579
|
for (; funArgIt != funArgEit && csArgIt != csArgEit; funArgIt++, csArgIt++)
|
|
579
580
|
{
|
|
580
581
|
const PAGNode *cs_arg = *csArgIt;
|
|
@@ -766,11 +767,12 @@ struct DOTGraphTraits<SVFG*> : public DOTGraphTraits<SVFIR*>
|
|
|
766
767
|
/// isNodeHidden - If the function returns true, the given node is not
|
|
767
768
|
/// displayed in the graph
|
|
768
769
|
#if LLVM_VERSION_MAJOR >= 12
|
|
769
|
-
static bool isNodeHidden(SVFGNode *node, SVFG*)
|
|
770
|
+
static bool isNodeHidden(SVFGNode *node, SVFG *){
|
|
770
771
|
#else
|
|
771
772
|
static bool isNodeHidden(SVFGNode *node) {
|
|
772
773
|
#endif
|
|
773
|
-
|
|
774
|
+
if (Options::ShowHiddenNode) return false;
|
|
775
|
+
else return node->getInEdges().empty() && node->getOutEdges().empty();
|
|
774
776
|
}
|
|
775
777
|
|
|
776
778
|
std::string getNodeLabel(NodeType *node, SVFG *graph)
|
|
@@ -932,11 +934,11 @@ struct DOTGraphTraits<SVFG*> : public DOTGraphTraits<SVFIR*>
|
|
|
932
934
|
if(StmtSVFGNode* stmtNode = SVFUtil::dyn_cast<StmtSVFGNode>(node))
|
|
933
935
|
{
|
|
934
936
|
const PAGEdge* edge = stmtNode->getPAGEdge();
|
|
935
|
-
if (SVFUtil::isa<
|
|
937
|
+
if (SVFUtil::isa<AddrStmt>(edge))
|
|
936
938
|
{
|
|
937
939
|
rawstr << "color=green";
|
|
938
940
|
}
|
|
939
|
-
else if (SVFUtil::isa<
|
|
941
|
+
else if (SVFUtil::isa<CopyStmt>(edge))
|
|
940
942
|
{
|
|
941
943
|
rawstr << "color=black";
|
|
942
944
|
}
|
|
@@ -944,15 +946,15 @@ struct DOTGraphTraits<SVFG*> : public DOTGraphTraits<SVFIR*>
|
|
|
944
946
|
{
|
|
945
947
|
rawstr << "color=black,style=dotted";
|
|
946
948
|
}
|
|
947
|
-
else if (SVFUtil::isa<
|
|
949
|
+
else if (SVFUtil::isa<GepStmt>(edge))
|
|
948
950
|
{
|
|
949
951
|
rawstr << "color=purple";
|
|
950
952
|
}
|
|
951
|
-
else if (SVFUtil::isa<
|
|
953
|
+
else if (SVFUtil::isa<StoreStmt>(edge))
|
|
952
954
|
{
|
|
953
955
|
rawstr << "color=blue";
|
|
954
956
|
}
|
|
955
|
-
else if (SVFUtil::isa<
|
|
957
|
+
else if (SVFUtil::isa<LoadStmt>(edge))
|
|
956
958
|
{
|
|
957
959
|
rawstr << "color=red";
|
|
958
960
|
}
|
|
@@ -77,7 +77,7 @@ void ThreadCallGraph::updateCallGraph(PointerAnalysis* pta)
|
|
|
77
77
|
const NodeBS targets = pta->getPts(pag->getValueNode(forkedval)).toNodeBS();
|
|
78
78
|
for (NodeBS::iterator ii = targets.begin(), ie = targets.end(); ii != ie; ii++)
|
|
79
79
|
{
|
|
80
|
-
if(
|
|
80
|
+
if(ObjVar* objPN = SVFUtil::dyn_cast<ObjVar>(pag->getGNode(*ii)))
|
|
81
81
|
{
|
|
82
82
|
const MemObj* obj = pag->getObject(objPN);
|
|
83
83
|
if(obj->isFunction())
|
|
@@ -101,7 +101,7 @@ void ThreadCallGraph::updateCallGraph(PointerAnalysis* pta)
|
|
|
101
101
|
const NodeBS targets = pta->getPts(pag->getValueNode(forkedval)).toNodeBS();
|
|
102
102
|
for (NodeBS::iterator ii = targets.begin(), ie = targets.end(); ii != ie; ii++)
|
|
103
103
|
{
|
|
104
|
-
if(
|
|
104
|
+
if(ObjVar* objPN = SVFUtil::dyn_cast<ObjVar>(pag->getGNode(*ii)))
|
|
105
105
|
{
|
|
106
106
|
const MemObj* obj = pag->getObject(objPN);
|
|
107
107
|
if(obj->isFunction())
|