svf-tools 1.0.317 → 1.0.321
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/AndersenStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/Andersen_8cpp.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +138 -0
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +178 -0
- package/SVF-doxygen/html/html/CHGBuilder_8h.html +95 -0
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +109 -0
- package/SVF-doxygen/html/html/CHG_8cpp.html +10 -64
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +31 -108
- package/SVF-doxygen/html/html/CHG_8h.html +9 -3
- package/SVF-doxygen/html/html/CHG_8h_source.html +82 -76
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +37 -33
- package/SVF-doxygen/html/html/ConsG_8h_source.html +32 -32
- 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/DCHG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8h.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8h_source.html +8 -8
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +12 -12
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ExternalPAG_8cpp.html +1 -1
- package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
- 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 +4 -4
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +6 -6
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -21
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +37 -40
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +5 -5
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp.html +1 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +30 -33
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +31 -31
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +48 -48
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +36 -36
- package/SVF-doxygen/html/html/SVFG_8h_source.html +25 -25
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp.html +0 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -6
- package/SVF-doxygen/html/html/SVFIRBuilder_8h.html +1 -7
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +90 -85
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +70 -62
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +168 -182
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +39 -23
- package/SVF-doxygen/html/html/SVFStatements_8h.html +6 -0
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +146 -94
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/VFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFGNode_8h.html +2 -0
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +143 -126
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +136 -129
- package/SVF-doxygen/html/html/VFG_8h_source.html +144 -133
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/annotated.html +265 -261
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +75 -74
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +75 -74
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +73 -72
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +31 -30
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +75 -74
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +35 -34
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AddrPE-members.html +42 -39
- package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +27 -22
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +77 -76
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode-members.html +69 -68
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +30 -29
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE-members.html +49 -28
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +295 -34
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode-members.html +76 -75
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +12 -11
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +70 -22
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +633 -89
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode-members.html +164 -0
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +694 -0
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CHEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHEdge.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder-members.html +100 -0
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +777 -0
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +31 -46
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +103 -651
- package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +54 -54
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +48 -45
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +33 -28
- package/SVF-doxygen/html/html/classSVF_1_1CmpPE-members.html +49 -28
- package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +295 -34
- package/SVF-doxygen/html/html/classSVF_1_1CmpPE.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode-members.html +79 -78
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +13 -12
- package/SVF-doxygen/html/html/classSVF_1_1CommonCHGraph.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +90 -86
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CopyPE-members.html +45 -42
- package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +27 -22
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +80 -79
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +11 -10
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode-members.html +72 -71
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +76 -75
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +76 -75
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode-members.html +76 -75
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +38 -37
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode-members.html +79 -78
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +38 -37
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +8 -7
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepPE-members.html +45 -42
- package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +22 -17
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +80 -79
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +36 -37
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +149 -163
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +88 -87
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +86 -85
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +46 -45
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +85 -84
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode-members.html +84 -83
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +33 -32
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LoadPE-members.html +45 -42
- package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +27 -22
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +80 -79
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +11 -10
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode-members.html +70 -69
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode-members.html +81 -80
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
- 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.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +143 -0
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +669 -0
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE-members.html +47 -44
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +34 -29
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode-members.html +66 -65
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +37 -36
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +17 -16
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode-members.html +77 -76
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +44 -43
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1PhiPE-members.html +153 -0
- package/SVF-doxygen/html/html/classSVF_1_1PhiPE.html +717 -0
- package/SVF-doxygen/html/html/classSVF_1_1PhiPE.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +77 -79
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +48 -45
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +33 -28
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +90 -86
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +81 -71
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +105 -101
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +149 -138
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +106 -119
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +621 -1090
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +14 -12
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +401 -288
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +41 -35
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +174 -37
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +76 -75
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +14 -13
- package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1StorePE-members.html +45 -42
- package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +27 -22
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +80 -79
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +11 -10
- package/SVF-doxygen/html/html/classSVF_1_1TCTEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +49 -46
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +22 -17
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +49 -46
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +22 -17
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE-members.html +56 -43
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +329 -30
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode-members.html +34 -32
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +63 -30
- package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +52 -48
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +515 -441
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode-members.html +65 -64
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +22 -18
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE-members.html +47 -44
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +28 -23
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +8 -8
- package/SVF-doxygen/html/html/classes.html +95 -94
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/dir_1870ebf480d659cc38d2dd7ac3aa8993.html +2 -2
- package/SVF-doxygen/html/html/dir_5840dc76920ee0f379cd88b55fa041fd.html +1 -1
- package/SVF-doxygen/html/html/dir_770a542efe75a1b68c109cb4e4290224.html +1 -3
- package/SVF-doxygen/html/html/dir_fa02919a30fec2d2c2d591b4d920d648.html +2 -2
- package/SVF-doxygen/html/html/files.html +18 -19
- package/SVF-doxygen/html/html/functions_0x7e.html +0 -3
- package/SVF-doxygen/html/html/functions_a.html +35 -36
- package/SVF-doxygen/html/html/functions_b.html +24 -17
- package/SVF-doxygen/html/html/functions_c.html +44 -43
- package/SVF-doxygen/html/html/functions_d.html +0 -3
- package/SVF-doxygen/html/html/functions_e.html +7 -9
- package/SVF-doxygen/html/html/functions_eval_b.html +4 -0
- package/SVF-doxygen/html/html/functions_eval_p.html +3 -0
- package/SVF-doxygen/html/html/functions_f.html +6 -15
- package/SVF-doxygen/html/html/functions_func.html +40 -38
- package/SVF-doxygen/html/html/functions_func_0x7e.html +0 -3
- package/SVF-doxygen/html/html/functions_func_b.html +14 -8
- package/SVF-doxygen/html/html/functions_func_c.html +32 -28
- package/SVF-doxygen/html/html/functions_func_d.html +0 -3
- package/SVF-doxygen/html/html/functions_func_e.html +0 -3
- package/SVF-doxygen/html/html/functions_func_g.html +92 -60
- package/SVF-doxygen/html/html/functions_func_h.html +3 -9
- package/SVF-doxygen/html/html/functions_func_i.html +12 -16
- package/SVF-doxygen/html/html/functions_func_m.html +6 -0
- package/SVF-doxygen/html/html/functions_func_o.html +11 -4
- package/SVF-doxygen/html/html/functions_func_p.html +6 -6
- package/SVF-doxygen/html/html/functions_func_r.html +3 -4
- package/SVF-doxygen/html/html/functions_func_s.html +6 -9
- package/SVF-doxygen/html/html/functions_func_t.html +14 -11
- package/SVF-doxygen/html/html/functions_g.html +91 -59
- package/SVF-doxygen/html/html/functions_h.html +2 -11
- package/SVF-doxygen/html/html/functions_i.html +12 -16
- package/SVF-doxygen/html/html/functions_l.html +6 -6
- package/SVF-doxygen/html/html/functions_m.html +9 -0
- package/SVF-doxygen/html/html/functions_n.html +6 -6
- package/SVF-doxygen/html/html/functions_o.html +31 -16
- package/SVF-doxygen/html/html/functions_p.html +23 -18
- package/SVF-doxygen/html/html/functions_r.html +4 -8
- package/SVF-doxygen/html/html/functions_rela.html +3 -0
- package/SVF-doxygen/html/html/functions_s.html +14 -16
- package/SVF-doxygen/html/html/functions_t.html +18 -15
- package/SVF-doxygen/html/html/functions_type_b.html +0 -6
- package/SVF-doxygen/html/html/functions_type_c.html +2 -7
- package/SVF-doxygen/html/html/functions_type_o.html +3 -0
- package/SVF-doxygen/html/html/functions_type_p.html +4 -1
- package/SVF-doxygen/html/html/functions_type_u.html +0 -6
- package/SVF-doxygen/html/html/functions_type_v.html +3 -0
- package/SVF-doxygen/html/html/functions_type_w.html +1 -0
- package/SVF-doxygen/html/html/functions_u.html +4 -13
- package/SVF-doxygen/html/html/functions_v.html +8 -5
- package/SVF-doxygen/html/html/functions_vars_a.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_b.html +6 -3
- package/SVF-doxygen/html/html/functions_vars_c.html +5 -4
- package/SVF-doxygen/html/html/functions_vars_e.html +1 -2
- package/SVF-doxygen/html/html/functions_vars_f.html +0 -9
- package/SVF-doxygen/html/html/functions_vars_h.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_m.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_o.html +8 -3
- package/SVF-doxygen/html/html/functions_vars_p.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_r.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_s.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_u.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_v.html +3 -3
- package/SVF-doxygen/html/html/functions_w.html +9 -4
- package/SVF-doxygen/html/html/globals_d.html +0 -4
- package/SVF-doxygen/html/html/globals_e.html +6 -9
- package/SVF-doxygen/html/html/globals_func_d.html +0 -3
- package/SVF-doxygen/html/html/globals_func_e.html +6 -9
- package/SVF-doxygen/html/html/globals_func_g.html +2 -5
- package/SVF-doxygen/html/html/globals_g.html +0 -3
- package/SVF-doxygen/html/html/globals_o.html +0 -9
- package/SVF-doxygen/html/html/globals_p.html +1 -1
- package/SVF-doxygen/html/html/globals_r.html +3 -3
- package/SVF-doxygen/html/html/globals_s.html +3 -3
- package/SVF-doxygen/html/html/globals_vars.html +2 -5
- package/SVF-doxygen/html/html/globals_z.html +1 -1
- package/SVF-doxygen/html/html/hierarchy.html +105 -101
- package/SVF-doxygen/html/html/menudata.js +0 -1
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +27 -37
- package/SVF-doxygen/html/html/namespacemembers_p.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type_p.html +0 -3
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +20 -21
- package/SVF-doxygen/html/html/search/all_10.js +11 -10
- package/SVF-doxygen/html/html/search/all_12.js +6 -7
- package/SVF-doxygen/html/html/search/all_13.js +13 -13
- package/SVF-doxygen/html/html/search/all_14.js +3 -3
- package/SVF-doxygen/html/html/search/all_15.js +2 -4
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_1a.js +1 -1
- package/SVF-doxygen/html/html/search/all_1b.js +0 -1
- package/SVF-doxygen/html/html/search/all_2.js +13 -10
- package/SVF-doxygen/html/html/search/all_3.js +15 -15
- package/SVF-doxygen/html/html/search/all_4.js +2 -4
- package/SVF-doxygen/html/html/search/all_5.js +3 -6
- package/SVF-doxygen/html/html/search/all_6.js +1 -4
- package/SVF-doxygen/html/html/search/all_7.js +34 -34
- package/SVF-doxygen/html/html/search/all_8.js +2 -5
- package/SVF-doxygen/html/html/search/all_9.js +4 -5
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_d.js +6 -3
- package/SVF-doxygen/html/html/search/all_e.js +6 -6
- package/SVF-doxygen/html/html/search/all_f.js +7 -8
- package/SVF-doxygen/html/html/search/classes_1.js +2 -0
- package/SVF-doxygen/html/html/search/classes_2.js +1 -0
- package/SVF-doxygen/html/html/search/classes_4.js +1 -2
- package/SVF-doxygen/html/html/search/classes_a.js +1 -0
- package/SVF-doxygen/html/html/search/classes_d.js +1 -0
- package/SVF-doxygen/html/html/search/enumvalues_1.js +1 -0
- package/SVF-doxygen/html/html/search/enumvalues_d.js +1 -0
- package/SVF-doxygen/html/html/search/files_2.js +2 -1
- package/SVF-doxygen/html/html/search/files_4.js +1 -3
- package/SVF-doxygen/html/html/search/functions_0.js +20 -20
- package/SVF-doxygen/html/html/search/functions_1.js +10 -8
- package/SVF-doxygen/html/html/search/functions_10.js +2 -3
- 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 +1 -1
- package/SVF-doxygen/html/html/search/functions_16.js +0 -1
- package/SVF-doxygen/html/html/search/functions_2.js +8 -8
- package/SVF-doxygen/html/html/search/functions_3.js +2 -4
- package/SVF-doxygen/html/html/search/functions_4.js +0 -2
- package/SVF-doxygen/html/html/search/functions_6.js +34 -34
- package/SVF-doxygen/html/html/search/functions_7.js +2 -4
- package/SVF-doxygen/html/html/search/functions_8.js +3 -4
- package/SVF-doxygen/html/html/search/functions_b.js +2 -0
- package/SVF-doxygen/html/html/search/functions_d.js +4 -6
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/functions_f.js +2 -2
- package/SVF-doxygen/html/html/search/related_0.js +1 -2
- package/SVF-doxygen/html/html/search/related_1.js +2 -1
- package/SVF-doxygen/html/html/search/related_2.js +1 -1
- package/SVF-doxygen/html/html/search/related_3.js +1 -2
- package/SVF-doxygen/html/html/search/related_4.js +2 -1
- package/SVF-doxygen/html/html/search/related_5.js +1 -4
- package/SVF-doxygen/html/html/search/related_6.js +4 -1
- package/SVF-doxygen/html/html/search/related_7.js +1 -5
- package/SVF-doxygen/html/html/search/related_8.js +5 -2
- package/SVF-doxygen/html/html/search/related_9.js +2 -1
- package/SVF-doxygen/html/html/search/related_a.html +26 -0
- package/SVF-doxygen/html/html/search/related_a.js +4 -0
- package/SVF-doxygen/html/html/search/searchdata.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_1.js +0 -2
- package/SVF-doxygen/html/html/search/typedefs_13.js +0 -2
- package/SVF-doxygen/html/html/search/typedefs_14.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_15.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -3
- package/SVF-doxygen/html/html/search/typedefs_d.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_e.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_f.js +2 -2
- package/SVF-doxygen/html/html/search/variables_1.js +0 -1
- package/SVF-doxygen/html/html/search/variables_10.js +2 -1
- package/SVF-doxygen/html/html/search/variables_12.js +0 -1
- package/SVF-doxygen/html/html/search/variables_13.js +2 -1
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_15.js +1 -2
- package/SVF-doxygen/html/html/search/variables_16.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1a.js +1 -1
- package/SVF-doxygen/html/html/search/variables_2.js +2 -1
- package/SVF-doxygen/html/html/search/variables_3.js +2 -2
- package/SVF-doxygen/html/html/search/variables_4.js +0 -1
- package/SVF-doxygen/html/html/search/variables_5.js +1 -1
- package/SVF-doxygen/html/html/search/variables_6.js +1 -4
- package/SVF-doxygen/html/html/search/variables_8.js +0 -1
- package/SVF-doxygen/html/html/search/variables_b.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +2 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/search/variables_f.js +2 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +14 -14
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +16 -16
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +1 -1
- 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_01SVFG_01_5_01_4.html +11 -11
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +29 -29
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHNode_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +5 -6
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/include/{SVF-FE → Graphs}/CHG.h +37 -20
- package/include/Graphs/GenericGraph.h +1 -1
- package/include/Graphs/IRGraph.h +6 -15
- package/include/Graphs/SVFGOPT.h +3 -2
- package/include/Graphs/VFG.h +42 -41
- package/include/Graphs/VFGNode.h +60 -7
- package/include/MemoryModel/SVFIR.h +93 -159
- package/include/MemoryModel/SVFStatements.h +253 -21
- package/include/SVF-FE/CHGBuilder.h +69 -0
- package/include/SVF-FE/DCHG.h +1 -1
- package/include/SVF-FE/SVFIRBuilder.h +21 -8
- package/lib/Graphs/CHG.cpp +280 -0
- package/lib/Graphs/ConsG.cpp +9 -0
- package/lib/Graphs/IRGraph.cpp +23 -8
- package/lib/Graphs/VFG.cpp +45 -19
- package/lib/MSSA/SVFGBuilder.cpp +3 -2
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +9 -3
- package/lib/MemoryModel/PointerAnalysis.cpp +3 -5
- package/lib/MemoryModel/SVFIR.cpp +68 -12
- package/lib/MemoryModel/SVFStatements.cpp +65 -4
- package/lib/SVF-FE/{CHG.cpp → CHGBuilder.cpp} +82 -324
- package/lib/SVF-FE/SVFIRBuilder.cpp +58 -57
- package/lib/WPA/Andersen.cpp +1 -1
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/package.json +1 -1
- package/tools/Example/svf-ex.cpp +1 -1
- package/include/Graphs/ExternalPAG.h +0 -147
- package/include/SVF-FE/CommonCHG.h +0 -49
- package/lib/Graphs/ExternalPAG.cpp +0 -623
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
//===----- CHG.cpp Base class of pointer analyses ---------------------------//
|
|
2
|
+
//
|
|
3
|
+
// SVF: Static Value-Flow Analysis
|
|
4
|
+
//
|
|
5
|
+
// Copyright (C) <2013-2017> <Yulei Sui>
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
// This program is free software: you can redistribute it and/or modify
|
|
9
|
+
// it under the terms of the GNU General Public License as published by
|
|
10
|
+
// the Free Software Foundation, either version 3 of the License, or
|
|
11
|
+
// (at your option) any later version.
|
|
12
|
+
|
|
13
|
+
// This program is distributed in the hope that it will be useful,
|
|
14
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
// GNU General Public License for more details.
|
|
17
|
+
|
|
18
|
+
// You should have received a copy of the GNU General Public License
|
|
19
|
+
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
+
//
|
|
21
|
+
//===----------------------------------------------------------------------===//
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
* CHG.cpp (previously CHA.cpp)
|
|
25
|
+
*
|
|
26
|
+
* Created on: Apr 13, 2016
|
|
27
|
+
* Author: Xiaokang Fan
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
#include "Graphs/CHG.h"
|
|
31
|
+
#include "Util/SVFUtil.h"
|
|
32
|
+
#include "SVF-FE/CPPUtil.h"
|
|
33
|
+
|
|
34
|
+
using namespace SVF;
|
|
35
|
+
using namespace SVFUtil;
|
|
36
|
+
using namespace std;
|
|
37
|
+
|
|
38
|
+
static bool hasEdge(const CHNode *src, const CHNode *dst,
|
|
39
|
+
CHEdge::CHEDGETYPE et)
|
|
40
|
+
{
|
|
41
|
+
for (CHEdge::CHEdgeSetTy::const_iterator it = src->getOutEdges().begin(),
|
|
42
|
+
eit = src->getOutEdges().end(); it != eit; ++it)
|
|
43
|
+
{
|
|
44
|
+
CHNode *node = (*it)->getDstNode();
|
|
45
|
+
CHEdge::CHEDGETYPE edgeType = (*it)->getEdgeType();
|
|
46
|
+
if (node == dst && edgeType == et)
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static bool checkArgTypes(CallSite cs, const Function *fn) {
|
|
53
|
+
|
|
54
|
+
// here we skip the first argument (i.e., this pointer)
|
|
55
|
+
u32_t arg_size = (fn->arg_size() > cs.arg_size()) ? cs.arg_size(): fn->arg_size();
|
|
56
|
+
if(arg_size > 1){
|
|
57
|
+
for (unsigned i = 1; i < arg_size; i++) {
|
|
58
|
+
auto cs_arg = cs.getArgOperand(i);
|
|
59
|
+
auto fn_arg = fn->getArg(i);
|
|
60
|
+
if (cs_arg->getType() != fn_arg->getType()) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
void CHGraph::addEdge(const string className, const string baseClassName,
|
|
70
|
+
CHEdge::CHEDGETYPE edgeType)
|
|
71
|
+
{
|
|
72
|
+
CHNode *srcNode = getNode(className);
|
|
73
|
+
CHNode *dstNode = getNode(baseClassName);
|
|
74
|
+
assert(srcNode && dstNode && "node not found?");
|
|
75
|
+
|
|
76
|
+
if (!hasEdge(srcNode, dstNode, edgeType))
|
|
77
|
+
{
|
|
78
|
+
CHEdge *edge = new CHEdge(srcNode, dstNode, edgeType);
|
|
79
|
+
srcNode->addOutgoingEdge(edge);
|
|
80
|
+
dstNode->addIncomingEdge(edge);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
CHNode *CHGraph::getNode(const string name) const
|
|
85
|
+
{
|
|
86
|
+
auto chNode = classNameToNodeMap.find(name);
|
|
87
|
+
if (chNode != classNameToNodeMap.end()) return chNode->second;
|
|
88
|
+
else return nullptr;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
/*
|
|
93
|
+
* Get virtual functions for callsite "cs" based on vtbls (calculated
|
|
94
|
+
* based on pointsto set)
|
|
95
|
+
*/
|
|
96
|
+
void CHGraph::getVFnsFromVtbls(CallSite cs, const VTableSet &vtbls, VFunSet &virtualFunctions)
|
|
97
|
+
{
|
|
98
|
+
|
|
99
|
+
/// get target virtual functions
|
|
100
|
+
size_t idx = cppUtil::getVCallIdx(cs);
|
|
101
|
+
/// get the function name of the virtual callsite
|
|
102
|
+
string funName = cppUtil::getFunNameOfVCallSite(cs);
|
|
103
|
+
for (const GlobalValue *vt : vtbls)
|
|
104
|
+
{
|
|
105
|
+
const CHNode *child = getNode(cppUtil::getClassNameFromVtblObj(vt));
|
|
106
|
+
if (child == nullptr)
|
|
107
|
+
continue;
|
|
108
|
+
CHNode::FuncVector vfns;
|
|
109
|
+
child->getVirtualFunctions(idx, vfns);
|
|
110
|
+
for (CHNode::FuncVector::const_iterator fit = vfns.begin(),
|
|
111
|
+
feit = vfns.end(); fit != feit; ++fit)
|
|
112
|
+
{
|
|
113
|
+
const SVFFunction* callee = *fit;
|
|
114
|
+
if (cs.arg_size() == callee->arg_size() ||
|
|
115
|
+
(cs.getFunctionType()->isVarArg() && callee->isVarArg()))
|
|
116
|
+
{
|
|
117
|
+
|
|
118
|
+
// if argument types do not match
|
|
119
|
+
// skip this one
|
|
120
|
+
if (!checkArgTypes(cs, callee->getLLVMFun()))
|
|
121
|
+
continue;
|
|
122
|
+
|
|
123
|
+
cppUtil::DemangledName dname = cppUtil::demangle(callee->getName().str());
|
|
124
|
+
string calleeName = dname.funcName;
|
|
125
|
+
|
|
126
|
+
/*
|
|
127
|
+
* The compiler will add some special suffix (e.g.,
|
|
128
|
+
* "[abi:cxx11]") to the end of some virtual function:
|
|
129
|
+
* In dealII
|
|
130
|
+
* function: FE_Q<3>::get_name
|
|
131
|
+
* will be mangled as: _ZNK4FE_QILi3EE8get_nameB5cxx11Ev
|
|
132
|
+
* after demangling: FE_Q<3>::get_name[abi:cxx11]
|
|
133
|
+
* The special suffix ("[abi:cxx11]") needs to be removed
|
|
134
|
+
*/
|
|
135
|
+
const std::string suffix("[abi:cxx11]");
|
|
136
|
+
size_t suffix_pos = calleeName.rfind(suffix);
|
|
137
|
+
if (suffix_pos != string::npos)
|
|
138
|
+
calleeName.erase(suffix_pos, suffix.size());
|
|
139
|
+
|
|
140
|
+
/*
|
|
141
|
+
* if we can't get the function name of a virtual callsite, all virtual
|
|
142
|
+
* functions calculated by idx will be valid
|
|
143
|
+
*/
|
|
144
|
+
if (funName.size() == 0)
|
|
145
|
+
{
|
|
146
|
+
virtualFunctions.insert(callee);
|
|
147
|
+
}
|
|
148
|
+
else if (funName[0] == '~')
|
|
149
|
+
{
|
|
150
|
+
/*
|
|
151
|
+
* if the virtual callsite is calling a destructor, then all
|
|
152
|
+
* destructors in the ch will be valid
|
|
153
|
+
* class A { virtual ~A(){} };
|
|
154
|
+
* class B: public A { virtual ~B(){} };
|
|
155
|
+
* int main() {
|
|
156
|
+
* A *a = new B;
|
|
157
|
+
* delete a; /// the function name of this virtual callsite is ~A()
|
|
158
|
+
* }
|
|
159
|
+
*/
|
|
160
|
+
if (calleeName[0] == '~')
|
|
161
|
+
{
|
|
162
|
+
virtualFunctions.insert(callee);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
else
|
|
166
|
+
{
|
|
167
|
+
/*
|
|
168
|
+
* for other virtual function calls, the function name of the callsite
|
|
169
|
+
* and the function name of the target callee should match exactly
|
|
170
|
+
*/
|
|
171
|
+
if (funName.compare(calleeName) == 0)
|
|
172
|
+
{
|
|
173
|
+
virtualFunctions.insert(callee);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
void CHNode::getVirtualFunctions(u32_t idx, FuncVector &virtualFunctions) const
|
|
183
|
+
{
|
|
184
|
+
for (vector<FuncVector>::const_iterator it = virtualFunctionVectors.begin(),
|
|
185
|
+
eit = virtualFunctionVectors.end(); it != eit; ++it)
|
|
186
|
+
{
|
|
187
|
+
if ((*it).size() > idx)
|
|
188
|
+
virtualFunctions.push_back((*it)[idx]);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
void CHGraph::printCH()
|
|
193
|
+
{
|
|
194
|
+
for (CHGraph::const_iterator it = this->begin(), eit = this->end();
|
|
195
|
+
it != eit; ++it)
|
|
196
|
+
{
|
|
197
|
+
const CHNode *node = it->second;
|
|
198
|
+
outs() << "class: " << node->getName() << "\n";
|
|
199
|
+
for (CHEdge::CHEdgeSetTy::const_iterator it = node->OutEdgeBegin();
|
|
200
|
+
it != node->OutEdgeEnd(); ++it)
|
|
201
|
+
{
|
|
202
|
+
if ((*it)->getEdgeType() == CHEdge::INHERITANCE)
|
|
203
|
+
outs() << (*it)->getDstNode()->getName() << " --inheritance--> "
|
|
204
|
+
<< (*it)->getSrcNode()->getName() << "\n";
|
|
205
|
+
else
|
|
206
|
+
outs() << (*it)->getSrcNode()->getName() << " --instance--> "
|
|
207
|
+
<< (*it)->getDstNode()->getName() << "\n";
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
outs() << '\n';
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/*!
|
|
214
|
+
* Dump call graph into dot file
|
|
215
|
+
*/
|
|
216
|
+
void CHGraph::dump(const std::string& filename)
|
|
217
|
+
{
|
|
218
|
+
GraphPrinter::WriteGraphToFile(outs(), filename, this);
|
|
219
|
+
printCH();
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
void CHGraph::view()
|
|
223
|
+
{
|
|
224
|
+
llvm::ViewGraph(this, "Class Hierarchy Graph");
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
namespace llvm
|
|
228
|
+
{
|
|
229
|
+
|
|
230
|
+
/*!
|
|
231
|
+
* Write value flow graph into dot file for debugging
|
|
232
|
+
*/
|
|
233
|
+
template<>
|
|
234
|
+
struct DOTGraphTraits<CHGraph*> : public DefaultDOTGraphTraits
|
|
235
|
+
{
|
|
236
|
+
|
|
237
|
+
typedef CHNode NodeType;
|
|
238
|
+
DOTGraphTraits(bool isSimple = false) :
|
|
239
|
+
DefaultDOTGraphTraits(isSimple)
|
|
240
|
+
{
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/// Return name of the graph
|
|
244
|
+
static std::string getGraphName(CHGraph*)
|
|
245
|
+
{
|
|
246
|
+
return "Class Hierarchy Graph";
|
|
247
|
+
}
|
|
248
|
+
/// Return function name;
|
|
249
|
+
static std::string getNodeLabel(CHNode *node, CHGraph*)
|
|
250
|
+
{
|
|
251
|
+
return node->getName();
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
static std::string getNodeAttributes(CHNode *node, CHGraph*)
|
|
255
|
+
{
|
|
256
|
+
if (node->isPureAbstract())
|
|
257
|
+
{
|
|
258
|
+
return "shape=tab";
|
|
259
|
+
}
|
|
260
|
+
else
|
|
261
|
+
return "shape=box";
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
template<class EdgeIter>
|
|
265
|
+
static std::string getEdgeAttributes(CHNode*, EdgeIter EI, CHGraph*)
|
|
266
|
+
{
|
|
267
|
+
|
|
268
|
+
CHEdge* edge = *(EI.getCurrent());
|
|
269
|
+
assert(edge && "No edge found!!");
|
|
270
|
+
if (edge->getEdgeType() == CHEdge::INHERITANCE)
|
|
271
|
+
{
|
|
272
|
+
return "style=solid";
|
|
273
|
+
}
|
|
274
|
+
else
|
|
275
|
+
{
|
|
276
|
+
return "style=dashed";
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
} // End namespace llvm
|
package/lib/Graphs/ConsG.cpp
CHANGED
|
@@ -65,6 +65,15 @@ void ConstraintGraph::buildCG()
|
|
|
65
65
|
addCopyCGEdge(edge->getSrcID(),edge->getDstID());
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
PAGEdge::PAGEdgeSetTy& phis = getPAGEdgeSet(PAGEdge::Phi);
|
|
69
|
+
for (PAGEdge::PAGEdgeSetTy::iterator iter = phis.begin(), eiter =
|
|
70
|
+
phis.end(); iter != eiter; ++iter)
|
|
71
|
+
{
|
|
72
|
+
const PhiPE* edge = SVFUtil::cast<PhiPE>(*iter);
|
|
73
|
+
for(const auto opVar : edge->getOpndVars())
|
|
74
|
+
addCopyCGEdge(opVar->getId(),edge->getResID());
|
|
75
|
+
}
|
|
76
|
+
|
|
68
77
|
PAGEdge::PAGEdgeSetTy& calls = getPAGEdgeSet(PAGEdge::Call);
|
|
69
78
|
for (PAGEdge::PAGEdgeSetTy::iterator iter = calls.begin(), eiter =
|
|
70
79
|
calls.end(); iter != eiter; ++iter)
|
package/lib/Graphs/IRGraph.cpp
CHANGED
|
@@ -48,13 +48,6 @@ bool IRGraph::addEdge(SVFVar* src, SVFVar* dst, SVFStmt* edge)
|
|
|
48
48
|
<< " kind :" << dst->getNodeKind() << "\n");
|
|
49
49
|
src->addOutEdge(edge);
|
|
50
50
|
dst->addInEdge(edge);
|
|
51
|
-
bool added = PAGEdgeKindToSetMap[edge->getEdgeKind()].insert(edge).second;
|
|
52
|
-
assert(added && "duplicated edge, not added!!!");
|
|
53
|
-
if (edge->isPTAEdge())
|
|
54
|
-
{
|
|
55
|
-
totalPTAPAGEdge++;
|
|
56
|
-
PTAPAGEdgeKindToSetMap[edge->getEdgeKind()].insert(edge);
|
|
57
|
-
}
|
|
58
51
|
return true;
|
|
59
52
|
}
|
|
60
53
|
|
|
@@ -73,7 +66,21 @@ SVFStmt* IRGraph::hasNonlabeledEdge(SVFVar* src, SVFVar* dst, SVFStmt::PEDGEK ki
|
|
|
73
66
|
}
|
|
74
67
|
|
|
75
68
|
/*!
|
|
76
|
-
* Return
|
|
69
|
+
* Return an MultiOpndStmt if found
|
|
70
|
+
*/
|
|
71
|
+
SVFStmt* IRGraph::hasLabeledEdge(SVFVar* src, SVFVar* op1, SVFStmt::PEDGEK kind, const SVFVar* op2)
|
|
72
|
+
{
|
|
73
|
+
SVFStmt edge(src,op1,SVFStmt::makeEdgeFlagWithAddionalOpnd(kind,op2));
|
|
74
|
+
SVFStmt::PAGEdgeSetTy::iterator it = PAGEdgeKindToSetMap[kind].find(&edge);
|
|
75
|
+
if (it != PAGEdgeKindToSetMap[kind].end())
|
|
76
|
+
{
|
|
77
|
+
return *it;
|
|
78
|
+
}
|
|
79
|
+
return nullptr;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/*!
|
|
83
|
+
* Return an inter-procedural edge if found
|
|
77
84
|
*/
|
|
78
85
|
SVFStmt* IRGraph::hasLabeledEdge(SVFVar* src, SVFVar* dst, SVFStmt::PEDGEK kind, const ICFGNode* callInst)
|
|
79
86
|
{
|
|
@@ -213,6 +220,10 @@ struct DOTGraphTraits<IRGraph*> : public DefaultDOTGraphTraits
|
|
|
213
220
|
{
|
|
214
221
|
return "color=red";
|
|
215
222
|
}
|
|
223
|
+
else if (SVFUtil::isa<PhiPE>(edge))
|
|
224
|
+
{
|
|
225
|
+
return "color=grey";
|
|
226
|
+
}
|
|
216
227
|
else if (SVFUtil::isa<CmpPE>(edge))
|
|
217
228
|
{
|
|
218
229
|
return "color=grey";
|
|
@@ -225,6 +236,10 @@ struct DOTGraphTraits<IRGraph*> : public DefaultDOTGraphTraits
|
|
|
225
236
|
{
|
|
226
237
|
return "color=grey";
|
|
227
238
|
}
|
|
239
|
+
else if (SVFUtil::isa<BranchStmt>(edge))
|
|
240
|
+
{
|
|
241
|
+
return "color=grey";
|
|
242
|
+
}
|
|
228
243
|
else if (SVFUtil::isa<TDForkPE>(edge))
|
|
229
244
|
{
|
|
230
245
|
return "color=Turquoise";
|
package/lib/Graphs/VFG.cpp
CHANGED
|
@@ -122,6 +122,15 @@ const std::string UnaryOPVFGNode::toString() const {
|
|
|
122
122
|
return rawstr.str();
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
+
const std::string BranchVFGNode::toString() const {
|
|
126
|
+
std::string str;
|
|
127
|
+
raw_string_ostream rawstr(str);
|
|
128
|
+
rawstr << "BranchVFGNode ID: " << getId() << " ";
|
|
129
|
+
rawstr << "PAGEdge: [" << brstmt->toString() << "\t";
|
|
130
|
+
return rawstr.str();
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
|
|
125
134
|
const std::string GepVFGNode::toString() const {
|
|
126
135
|
std::string str;
|
|
127
136
|
raw_string_ostream rawstr(str);
|
|
@@ -340,8 +349,8 @@ void VFG::addVFGNodes()
|
|
|
340
349
|
copys.end(); iter != eiter; ++iter)
|
|
341
350
|
{
|
|
342
351
|
const CopyPE* edge = SVFUtil::cast<CopyPE>(*iter);
|
|
343
|
-
|
|
344
|
-
|
|
352
|
+
assert(!isPhiCopyEdge(edge) && "Copy edges can not be a PhiNode (or from PhiNode)");
|
|
353
|
+
addCopyVFGNode(edge);
|
|
345
354
|
}
|
|
346
355
|
|
|
347
356
|
// initialize gep nodes
|
|
@@ -479,32 +488,49 @@ void VFG::addVFGNodes()
|
|
|
479
488
|
}
|
|
480
489
|
|
|
481
490
|
// initialize llvm phi nodes (phi of top level pointers)
|
|
482
|
-
|
|
483
|
-
for (
|
|
491
|
+
PAGEdge::PAGEdgeSetTy& phis = getPAGEdgeSet(PAGEdge::Phi);
|
|
492
|
+
for (PAGEdge::PAGEdgeSetTy::iterator iter = phis.begin(), eiter =
|
|
493
|
+
phis.end(); iter != eiter; ++iter)
|
|
484
494
|
{
|
|
485
|
-
|
|
486
|
-
|
|
495
|
+
const PhiPE* edge = SVFUtil::cast<PhiPE>(*iter);
|
|
496
|
+
if(isInterestedPAGNode(edge->getRes()))
|
|
497
|
+
addIntraPHIVFGNode(edge);
|
|
487
498
|
}
|
|
488
499
|
// initialize llvm binary nodes (binary operators)
|
|
489
|
-
|
|
490
|
-
for (
|
|
500
|
+
PAGEdge::PAGEdgeSetTy& binaryops = getPAGEdgeSet(PAGEdge::BinaryOp);
|
|
501
|
+
for (PAGEdge::PAGEdgeSetTy::iterator iter = binaryops.begin(), eiter =
|
|
502
|
+
binaryops.end(); iter != eiter; ++iter)
|
|
503
|
+
{
|
|
504
|
+
const BinaryOPPE* edge = SVFUtil::cast<BinaryOPPE>(*iter);
|
|
505
|
+
if(isInterestedPAGNode(edge->getRes()))
|
|
506
|
+
addBinaryOPVFGNode(edge);
|
|
507
|
+
}
|
|
508
|
+
// initialize llvm unary nodes (unary operators)
|
|
509
|
+
PAGEdge::PAGEdgeSetTy& unaryops = getPAGEdgeSet(PAGEdge::UnaryOp);
|
|
510
|
+
for (PAGEdge::PAGEdgeSetTy::iterator iter = unaryops.begin(), eiter =
|
|
511
|
+
unaryops.end(); iter != eiter; ++iter)
|
|
491
512
|
{
|
|
492
|
-
|
|
493
|
-
|
|
513
|
+
const UnaryOPPE* edge = SVFUtil::cast<UnaryOPPE>(*iter);
|
|
514
|
+
if(isInterestedPAGNode(edge->getRes()))
|
|
515
|
+
addUnaryOPVFGNode(edge);
|
|
494
516
|
}
|
|
495
517
|
// initialize llvm unary nodes (unary operators)
|
|
496
|
-
|
|
497
|
-
for (
|
|
518
|
+
PAGEdge::PAGEdgeSetTy& brs = getPAGEdgeSet(PAGEdge::Branch);
|
|
519
|
+
for (PAGEdge::PAGEdgeSetTy::iterator iter = brs.begin(), eiter =
|
|
520
|
+
brs.end(); iter != eiter; ++iter)
|
|
498
521
|
{
|
|
499
|
-
|
|
500
|
-
|
|
522
|
+
const BranchStmt* edge = SVFUtil::cast<BranchStmt>(*iter);
|
|
523
|
+
if(isInterestedPAGNode(edge->getBranchInst()))
|
|
524
|
+
addBranchVFGNode(edge);
|
|
501
525
|
}
|
|
502
526
|
// initialize llvm cmp nodes (comparision)
|
|
503
|
-
|
|
504
|
-
for (
|
|
527
|
+
PAGEdge::PAGEdgeSetTy& cmps = getPAGEdgeSet(PAGEdge::Cmp);
|
|
528
|
+
for (PAGEdge::PAGEdgeSetTy::iterator iter = cmps.begin(), eiter =
|
|
529
|
+
cmps.end(); iter != eiter; ++iter)
|
|
505
530
|
{
|
|
506
|
-
|
|
507
|
-
|
|
531
|
+
const CmpPE* edge = SVFUtil::cast<CmpPE>(*iter);
|
|
532
|
+
if(isInterestedPAGNode(edge->getRes()))
|
|
533
|
+
addCmpVFGNode(edge);
|
|
508
534
|
}
|
|
509
535
|
}
|
|
510
536
|
|
|
@@ -867,7 +893,7 @@ const PAGNode* VFG::getLHSTopLevPtr(const VFGNode* node) const
|
|
|
867
893
|
else if(const FormalRetVFGNode* fr = SVFUtil::dyn_cast<FormalRetVFGNode>(node))
|
|
868
894
|
return fr->getRet();
|
|
869
895
|
else if(const NullPtrVFGNode* nullVFG = SVFUtil::dyn_cast<NullPtrVFGNode>(node))
|
|
870
|
-
return nullVFG->
|
|
896
|
+
return nullVFG->getPAGNode();
|
|
871
897
|
else
|
|
872
898
|
assert(false && "unexpected node kind!");
|
|
873
899
|
return nullptr;
|
package/lib/MSSA/SVFGBuilder.cpp
CHANGED
|
@@ -69,8 +69,6 @@ void SVFGBuilder::buildSVFG()
|
|
|
69
69
|
{
|
|
70
70
|
MemSSA* mssa = svfg->getMSSA();
|
|
71
71
|
svfg->buildSVFG();
|
|
72
|
-
if(mssa->getPTA()->printStat())
|
|
73
|
-
svfg->performStat();
|
|
74
72
|
}
|
|
75
73
|
|
|
76
74
|
/// Create DDA SVFG
|
|
@@ -105,6 +103,9 @@ SVFG* SVFGBuilder::build(BVDataPTAImpl* pta, VFG::VFGK kind)
|
|
|
105
103
|
if(Options::SVFGWithIndirectCall || SVFGWithIndCall)
|
|
106
104
|
svfg->updateCallGraph(pta);
|
|
107
105
|
|
|
106
|
+
if(mssa->getPTA()->printStat())
|
|
107
|
+
svfg->performStat();
|
|
108
|
+
|
|
108
109
|
if(Options::DumpVFG)
|
|
109
110
|
svfg->dump("svfg_final");
|
|
110
111
|
|
|
@@ -177,11 +177,17 @@ void PAGBuilderFromFile::addEdge(NodeID srcID, NodeID dstID,
|
|
|
177
177
|
else if (edge == "ret")
|
|
178
178
|
pag->addEdge(srcNode, dstNode, new RetPE(srcNode, dstNode, nullptr));
|
|
179
179
|
else if (edge == "cmp")
|
|
180
|
-
pag->addCmpPE(srcID, dstID);
|
|
180
|
+
pag->addCmpPE(srcID, dstID, dstID, dstID);
|
|
181
181
|
else if (edge == "binary-op")
|
|
182
|
-
pag->addBinaryOPPE(srcID, dstID);
|
|
182
|
+
pag->addBinaryOPPE(srcID, dstID, dstID, dstID);
|
|
183
183
|
else if (edge == "unary-op")
|
|
184
|
-
pag->addUnaryOPPE(srcID, dstID);
|
|
184
|
+
pag->addUnaryOPPE(srcID, dstID, dstID);
|
|
185
|
+
else if (edge == "phi")
|
|
186
|
+
pag->addPhiNode(srcID, dstID);
|
|
187
|
+
else if (edge == "branch"){
|
|
188
|
+
assert(false && "fix successors here!");
|
|
189
|
+
//pag->addBranchStmt(srcID, dstID, nullptr);
|
|
190
|
+
}
|
|
185
191
|
else
|
|
186
192
|
assert(false && "format not support, can not create such edge");
|
|
187
193
|
}
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
#include "Util/Options.h"
|
|
31
31
|
#include "SVF-FE/CallGraphBuilder.h"
|
|
32
|
-
#include "SVF-FE/
|
|
32
|
+
#include "SVF-FE/CHGBuilder.h"
|
|
33
33
|
#include "SVF-FE/DCHG.h"
|
|
34
34
|
#include "SVF-FE/CPPUtil.h"
|
|
35
35
|
#include "Util/SVFModule.h"
|
|
@@ -41,7 +41,6 @@
|
|
|
41
41
|
#include "MemoryModel/PTAStat.h"
|
|
42
42
|
#include "Graphs/ThreadCallGraph.h"
|
|
43
43
|
#include "Graphs/ICFG.h"
|
|
44
|
-
#include "Graphs/ExternalPAG.h"
|
|
45
44
|
#include "WPA/FlowSensitiveTBHC.h"
|
|
46
45
|
|
|
47
46
|
#include <iomanip>
|
|
@@ -120,7 +119,8 @@ void PointerAnalysis::initialize()
|
|
|
120
119
|
chgraph = dchg;
|
|
121
120
|
} else {
|
|
122
121
|
CHGraph *chg = new CHGraph(pag->getModule());
|
|
123
|
-
|
|
122
|
+
CHGBuilder builder(chg);
|
|
123
|
+
builder.buildCHG();
|
|
124
124
|
chgraph = chg;
|
|
125
125
|
}
|
|
126
126
|
}
|
|
@@ -232,8 +232,6 @@ void PointerAnalysis::finalize()
|
|
|
232
232
|
pag->getICFG()->dump("icfg_final");
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
if (!DumpPAGFunctions.empty()) ExternalPAG::dumpFunctions(DumpPAGFunctions);
|
|
236
|
-
|
|
237
235
|
/// Dump results
|
|
238
236
|
if (Options::PTSPrint)
|
|
239
237
|
{
|