svf-tools 1.0.340 → 1.0.344
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/BasicTypes_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +7 -7
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +15 -15
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGNode_8h.html +7 -7
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +69 -69
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +64 -61
- package/SVF-doxygen/html/html/ICFG_8h_source.html +46 -46
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MHP_8h_source.html +6 -6
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +9 -9
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +27 -27
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +18 -18
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +12 -12
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Options_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PCG_8h_source.html +4 -4
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +17 -17
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +17 -17
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +17 -17
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +9 -9
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +32 -32
- package/SVF-doxygen/html/html/SVFG_8h_source.html +27 -27
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +13 -13
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +32 -32
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +14 -14
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +7 -7
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +16 -15
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +30 -28
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +44 -42
- package/SVF-doxygen/html/html/TCT_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +20 -20
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +11 -11
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/VFG_8h_source.html +19 -19
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/annotated.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +47 -47
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +6 -5
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +15 -12
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +5 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallCHI-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +158 -0
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +852 -0
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CallMU-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +6 -5
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +60 -60
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +52 -52
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +4 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode-members.html +150 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +618 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +4 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode-members.html +149 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +624 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +3 -1
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode-members.html +144 -0
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +413 -0
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +224 -217
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +74 -71
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode-members.html +144 -0
- package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +399 -0
- package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +7 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode-members.html +146 -0
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +494 -0
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +61 -61
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1MHP-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +198 -198
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +70 -47
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +77 -77
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +17 -15
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +141 -106
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PCG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph-members.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +118 -118
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +109 -109
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +5 -3
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode-members.html +153 -0
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +696 -0
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +160 -160
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +76 -76
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +133 -133
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +62 -62
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +17 -16
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1TCT-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph-members.html +40 -40
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +220 -220
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +42 -42
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +96 -96
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +37 -37
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
- package/SVF-doxygen/html/html/classes.html +16 -16
- package/SVF-doxygen/html/html/functions_a.html +59 -59
- package/SVF-doxygen/html/html/functions_c.html +74 -71
- package/SVF-doxygen/html/html/functions_eval_c.html +5 -2
- package/SVF-doxygen/html/html/functions_f.html +14 -14
- package/SVF-doxygen/html/html/functions_func.html +56 -56
- package/SVF-doxygen/html/html/functions_func_c.html +28 -28
- package/SVF-doxygen/html/html/functions_func_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func_g.html +88 -88
- package/SVF-doxygen/html/html/functions_func_h.html +17 -17
- package/SVF-doxygen/html/html/functions_func_i.html +31 -29
- package/SVF-doxygen/html/html/functions_func_m.html +1 -1
- package/SVF-doxygen/html/html/functions_func_p.html +1 -1
- package/SVF-doxygen/html/html/functions_func_r.html +6 -6
- package/SVF-doxygen/html/html/functions_func_s.html +1 -1
- package/SVF-doxygen/html/html/functions_func_t.html +7 -7
- package/SVF-doxygen/html/html/functions_func_u.html +3 -3
- package/SVF-doxygen/html/html/functions_g.html +88 -88
- package/SVF-doxygen/html/html/functions_h.html +16 -16
- package/SVF-doxygen/html/html/functions_i.html +37 -35
- package/SVF-doxygen/html/html/functions_m.html +2 -2
- package/SVF-doxygen/html/html/functions_n.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +10 -10
- package/SVF-doxygen/html/html/functions_p.html +21 -30
- package/SVF-doxygen/html/html/functions_r.html +6 -6
- package/SVF-doxygen/html/html/functions_s.html +15 -14
- package/SVF-doxygen/html/html/functions_t.html +13 -15
- package/SVF-doxygen/html/html/functions_type.html +1 -1
- package/SVF-doxygen/html/html/functions_type_c.html +24 -24
- package/SVF-doxygen/html/html/functions_type_f.html +3 -3
- package/SVF-doxygen/html/html/functions_type_i.html +2 -2
- package/SVF-doxygen/html/html/functions_type_p.html +1 -1
- package/SVF-doxygen/html/html/functions_type_s.html +1 -1
- package/SVF-doxygen/html/html/functions_type_v.html +2 -2
- package/SVF-doxygen/html/html/functions_u.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +5 -5
- package/SVF-doxygen/html/html/functions_vars_a.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_c.html +11 -11
- package/SVF-doxygen/html/html/functions_vars_f.html +5 -5
- package/SVF-doxygen/html/html/functions_vars_g.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_i.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_p.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_r.html +1 -1
- 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 +7 -7
- package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +11 -11
- package/SVF-doxygen/html/html/search/all_1.js +58 -58
- package/SVF-doxygen/html/html/search/all_10.js +13 -14
- package/SVF-doxygen/html/html/search/all_12.js +5 -5
- package/SVF-doxygen/html/html/search/all_13.js +9 -8
- package/SVF-doxygen/html/html/search/all_14.js +6 -6
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +3 -3
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +37 -35
- package/SVF-doxygen/html/html/search/all_6.js +12 -12
- package/SVF-doxygen/html/html/search/all_7.js +62 -61
- package/SVF-doxygen/html/html/search/all_8.js +17 -17
- package/SVF-doxygen/html/html/search/all_9.js +19 -19
- package/SVF-doxygen/html/html/search/all_c.js +1 -1
- package/SVF-doxygen/html/html/search/all_d.js +2 -2
- package/SVF-doxygen/html/html/search/all_e.js +1 -1
- package/SVF-doxygen/html/html/search/all_f.js +2 -2
- package/SVF-doxygen/html/html/search/classes_2.js +1 -1
- package/SVF-doxygen/html/html/search/classes_5.js +2 -2
- package/SVF-doxygen/html/html/search/classes_6.js +1 -1
- package/SVF-doxygen/html/html/search/classes_8.js +2 -2
- package/SVF-doxygen/html/html/search/classes_e.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_2.js +2 -1
- package/SVF-doxygen/html/html/search/functions_0.js +55 -55
- package/SVF-doxygen/html/html/search/functions_10.js +2 -2
- package/SVF-doxygen/html/html/search/functions_11.js +4 -4
- package/SVF-doxygen/html/html/search/functions_12.js +1 -1
- package/SVF-doxygen/html/html/search/functions_2.js +10 -10
- package/SVF-doxygen/html/html/search/functions_5.js +4 -4
- package/SVF-doxygen/html/html/search/functions_6.js +61 -61
- package/SVF-doxygen/html/html/search/functions_7.js +17 -17
- package/SVF-doxygen/html/html/search/functions_8.js +16 -16
- package/SVF-doxygen/html/html/search/functions_b.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +2 -2
- package/SVF-doxygen/html/html/search/functions_f.js +4 -4
- package/SVF-doxygen/html/html/search/typedefs_0.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_14.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +21 -21
- package/SVF-doxygen/html/html/search/typedefs_5.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_8.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_f.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1.js +2 -2
- package/SVF-doxygen/html/html/search/variables_10.js +0 -1
- package/SVF-doxygen/html/html/search/variables_12.js +1 -1
- package/SVF-doxygen/html/html/search/variables_13.js +1 -0
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_3.js +4 -4
- package/SVF-doxygen/html/html/search/variables_6.js +5 -5
- package/SVF-doxygen/html/html/search/variables_7.js +1 -1
- package/SVF-doxygen/html/html/search/variables_9.js +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +23 -23
- 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 +3 -3
- package/include/DDA/DDAClient.h +2 -2
- package/include/DDA/DDAVFSolver.h +2 -2
- package/include/DDA/FlowDDA.h +2 -2
- package/include/Graphs/ICFG.h +32 -32
- package/include/Graphs/ICFGNode.h +33 -33
- package/include/Graphs/ICFGStat.h +11 -11
- package/include/Graphs/PTACallGraph.h +19 -19
- package/include/Graphs/SVFG.h +16 -16
- package/include/Graphs/SVFGNode.h +14 -14
- package/include/Graphs/SVFGOPT.h +1 -1
- package/include/Graphs/ThreadCallGraph.h +25 -25
- package/include/Graphs/VFG.h +10 -10
- package/include/Graphs/VFGNode.h +8 -8
- package/include/MSSA/MSSAMuChi.h +6 -6
- package/include/MSSA/MemRegion.h +24 -24
- package/include/MSSA/MemSSA.h +10 -10
- package/include/MTA/LockResultValidator.h +2 -2
- package/include/MTA/MHP.h +4 -4
- package/include/MTA/PCG.h +1 -1
- package/include/MTA/TCT.h +2 -2
- package/include/MemoryModel/PointerAnalysis.h +12 -12
- package/include/MemoryModel/SVFIR.h +22 -22
- package/include/MemoryModel/SVFStatements.h +11 -11
- package/include/MemoryModel/SymbolTableInfo.h +15 -9
- package/include/SABER/LeakChecker.h +4 -4
- package/include/SABER/ProgSlice.h +2 -2
- package/include/SABER/SaberCheckerAPI.h +4 -4
- package/include/SABER/SaberSVFGBuilder.h +1 -1
- package/include/SABER/SrcSnkDDA.h +1 -1
- package/include/SVF-FE/ICFGBuilder.h +4 -4
- package/include/SVF-FE/SVFIRBuilder.h +5 -5
- package/include/Util/Options.h +1 -1
- package/lib/DDA/ContextDDA.cpp +3 -3
- package/lib/DDA/DDAClient.cpp +1 -1
- package/lib/DDA/FlowDDA.cpp +1 -1
- package/lib/Graphs/ICFG.cpp +88 -71
- package/lib/Graphs/PTACallGraph.cpp +5 -5
- package/lib/Graphs/SVFG.cpp +7 -7
- package/lib/Graphs/ThreadCallGraph.cpp +6 -6
- package/lib/Graphs/VFG.cpp +6 -6
- package/lib/MSSA/MemRegion.cpp +17 -17
- package/lib/MSSA/MemSSA.cpp +3 -3
- package/lib/MTA/LockAnalysis.cpp +4 -4
- package/lib/MTA/MHP.cpp +5 -5
- package/lib/MTA/MTAResultValidator.cpp +1 -1
- package/lib/MTA/PCG.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysis.cpp +10 -10
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
- package/lib/MemoryModel/SVFIR.cpp +5 -5
- package/lib/MemoryModel/SVFStatements.cpp +53 -49
- package/lib/MemoryModel/SVFVariables.cpp +10 -10
- package/lib/MemoryModel/SymbolTableInfo.cpp +12 -7
- package/lib/SABER/DoubleFreeChecker.cpp +1 -1
- package/lib/SABER/FileChecker.cpp +2 -2
- package/lib/SABER/LeakChecker.cpp +8 -8
- package/lib/SABER/ProgSlice.cpp +2 -2
- package/lib/SVF-FE/CallGraphBuilder.cpp +4 -4
- package/lib/SVF-FE/Graph2Json.cpp +5 -5
- package/lib/SVF-FE/ICFGBuilder.cpp +31 -25
- package/lib/SVF-FE/SVFIRBuilder.cpp +8 -8
- package/lib/SVF-FE/SymbolTableBuilder.cpp +2 -2
- package/lib/Util/Options.cpp +3 -3
- package/lib/Util/PTAStat.cpp +3 -3
- package/lib/Util/SVFUtil.cpp +2 -0
- package/lib/Util/TypeBasedHeapCloning.cpp +1 -1
- package/lib/WPA/Andersen.cpp +3 -3
- package/lib/WPA/FlowSensitive.cpp +2 -2
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
- package/lib/WPA/WPAPass.cpp +4 -4
- package/package.json +1 -1
|
@@ -61,76 +61,76 @@ bool SVFStmt::isPTAEdge() const
|
|
|
61
61
|
const std::string SVFStmt::toString() const {
|
|
62
62
|
std::string str;
|
|
63
63
|
raw_string_ostream rawstr(str);
|
|
64
|
-
rawstr << "SVFStmt: [" << getDstID() << "<--" << getSrcID() << "]\t";
|
|
64
|
+
rawstr << "SVFStmt: [Var" << getDstID() << " <-- Var" << getSrcID() << "]\t";
|
|
65
65
|
return rawstr.str();
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
const std::string AddrStmt::toString() const{
|
|
69
69
|
std::string str;
|
|
70
70
|
raw_string_ostream rawstr(str);
|
|
71
|
-
rawstr << "AddrStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
72
|
-
if (Options::
|
|
71
|
+
rawstr << "AddrStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
72
|
+
if (Options::ShowSVFIRValue) {
|
|
73
73
|
rawstr << "\n";
|
|
74
|
+
rawstr << value2String(getValue());
|
|
74
75
|
}
|
|
75
|
-
rawstr << value2String(getValue());
|
|
76
76
|
return rawstr.str();
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
const std::string CopyStmt::toString() const{
|
|
80
80
|
std::string str;
|
|
81
81
|
raw_string_ostream rawstr(str);
|
|
82
|
-
rawstr << "CopyStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
83
|
-
if (Options::
|
|
82
|
+
rawstr << "CopyStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
83
|
+
if (Options::ShowSVFIRValue) {
|
|
84
84
|
rawstr << "\n";
|
|
85
|
+
rawstr << value2String(getValue());
|
|
85
86
|
}
|
|
86
|
-
rawstr << value2String(getValue());
|
|
87
87
|
return rawstr.str();
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
const std::string PhiStmt::toString() const{
|
|
91
91
|
std::string str;
|
|
92
92
|
raw_string_ostream rawstr(str);
|
|
93
|
-
rawstr << "PhiStmt: [" << getResID() << "<--(";
|
|
93
|
+
rawstr << "PhiStmt: [Var" << getResID() << " <-- (Var";
|
|
94
94
|
for(const SVFVar* op : getOpndVars())
|
|
95
95
|
rawstr << op->getId() << ",";
|
|
96
96
|
rawstr << ")]\t";
|
|
97
|
-
if (Options::
|
|
97
|
+
if (Options::ShowSVFIRValue) {
|
|
98
98
|
rawstr << "\n";
|
|
99
|
+
rawstr << value2String(getValue());
|
|
99
100
|
}
|
|
100
|
-
rawstr << value2String(getValue());
|
|
101
101
|
return rawstr.str();
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
const std::string CmpStmt::toString() const{
|
|
105
105
|
std::string str;
|
|
106
106
|
raw_string_ostream rawstr(str);
|
|
107
|
-
rawstr << "CmpStmt: [" << getResID() << "<--(" << getOpVarID(0) << "
|
|
108
|
-
if (Options::
|
|
107
|
+
rawstr << "CmpStmt: [Var" << getResID() << " <-- (Var" << getOpVarID(0) << " predicate" << getPredicate() << " Var" << getOpVarID(1) << ")]\t";
|
|
108
|
+
if (Options::ShowSVFIRValue) {
|
|
109
109
|
rawstr << "\n";
|
|
110
|
+
rawstr << value2String(getValue());
|
|
110
111
|
}
|
|
111
|
-
rawstr << value2String(getValue());
|
|
112
112
|
return rawstr.str();
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
const std::string BinaryOPStmt::toString() const{
|
|
116
116
|
std::string str;
|
|
117
117
|
raw_string_ostream rawstr(str);
|
|
118
|
-
rawstr << "BinaryOPStmt: [" << getResID() << "<--(" << getOpVarID(0) << "
|
|
119
|
-
if (Options::
|
|
118
|
+
rawstr << "BinaryOPStmt: [Var" << getResID() << " <-- (Var" << getOpVarID(0) << " opcode" << getOpcode() << " Var" << getOpVarID(1) << ")]\t";
|
|
119
|
+
if (Options::ShowSVFIRValue) {
|
|
120
120
|
rawstr << "\n";
|
|
121
|
+
rawstr << value2String(getValue());
|
|
121
122
|
}
|
|
122
|
-
rawstr << value2String(getValue());
|
|
123
123
|
return rawstr.str();
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
const std::string UnaryOPStmt::toString() const{
|
|
127
127
|
std::string str;
|
|
128
128
|
raw_string_ostream rawstr(str);
|
|
129
|
-
rawstr << "UnaryOPStmt: [" << getResID() << "<--" << getOpVarID() << "]\t";
|
|
130
|
-
if (Options::
|
|
129
|
+
rawstr << "UnaryOPStmt: [Var" << getResID() << " <-- " << " opcode" << getOpcode() << " Var" << getOpVarID() << "]\t";
|
|
130
|
+
if (Options::ShowSVFIRValue) {
|
|
131
131
|
rawstr << "\n";
|
|
132
|
+
rawstr << value2String(getValue());
|
|
132
133
|
}
|
|
133
|
-
rawstr << value2String(getValue());
|
|
134
134
|
return rawstr.str();
|
|
135
135
|
}
|
|
136
136
|
|
|
@@ -138,13 +138,17 @@ const std::string BranchStmt::toString() const {
|
|
|
138
138
|
std::string str;
|
|
139
139
|
raw_string_ostream rawstr(str);
|
|
140
140
|
if(isConditional())
|
|
141
|
-
rawstr << "BranchStmt: [" << getCondition()->
|
|
141
|
+
rawstr << "BranchStmt: [Condition Var" << getCondition()->getId() << "]\t";
|
|
142
142
|
else
|
|
143
143
|
rawstr << "BranchStmt: [" << " Unconditional branch" << "]\t";
|
|
144
|
-
|
|
144
|
+
|
|
145
|
+
for(u32_t i = 0; i < getNumSuccessors(); i++)
|
|
146
|
+
rawstr << "Successor " << i << " ICFGNode" << getSuccessor(i)->getId() << "\n";
|
|
147
|
+
|
|
148
|
+
if (Options::ShowSVFIRValue) {
|
|
145
149
|
rawstr << "\n";
|
|
150
|
+
rawstr << value2String(getValue());
|
|
146
151
|
}
|
|
147
|
-
rawstr << value2String(getValue());
|
|
148
152
|
return rawstr.str();
|
|
149
153
|
}
|
|
150
154
|
|
|
@@ -152,99 +156,99 @@ const std::string BranchStmt::toString() const {
|
|
|
152
156
|
const std::string LoadStmt::toString() const{
|
|
153
157
|
std::string str;
|
|
154
158
|
raw_string_ostream rawstr(str);
|
|
155
|
-
rawstr << "LoadStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
156
|
-
if (Options::
|
|
159
|
+
rawstr << "LoadStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
160
|
+
if (Options::ShowSVFIRValue) {
|
|
157
161
|
rawstr << "\n";
|
|
162
|
+
rawstr << value2String(getValue());
|
|
158
163
|
}
|
|
159
|
-
rawstr << value2String(getValue());
|
|
160
164
|
return rawstr.str();
|
|
161
165
|
}
|
|
162
166
|
|
|
163
167
|
const std::string StoreStmt::toString() const{
|
|
164
168
|
std::string str;
|
|
165
169
|
raw_string_ostream rawstr(str);
|
|
166
|
-
rawstr << "StoreStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
167
|
-
if (Options::
|
|
170
|
+
rawstr << "StoreStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
171
|
+
if (Options::ShowSVFIRValue) {
|
|
168
172
|
rawstr << "\n";
|
|
173
|
+
rawstr << value2String(getValue());
|
|
169
174
|
}
|
|
170
|
-
rawstr << value2String(getValue());
|
|
171
175
|
return rawstr.str();
|
|
172
176
|
}
|
|
173
177
|
|
|
174
178
|
const std::string GepStmt::toString() const{
|
|
175
179
|
std::string str;
|
|
176
180
|
raw_string_ostream rawstr(str);
|
|
177
|
-
rawstr << "GepStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
178
|
-
if (Options::
|
|
181
|
+
rawstr << "GepStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
182
|
+
if (Options::ShowSVFIRValue) {
|
|
179
183
|
rawstr << "\n";
|
|
184
|
+
rawstr << value2String(getValue());
|
|
180
185
|
}
|
|
181
|
-
rawstr << value2String(getValue());
|
|
182
186
|
return rawstr.str();
|
|
183
187
|
}
|
|
184
188
|
|
|
185
189
|
const std::string NormalGepStmt::toString() const{
|
|
186
190
|
std::string str;
|
|
187
191
|
raw_string_ostream rawstr(str);
|
|
188
|
-
rawstr << "NormalGepStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
189
|
-
if (Options::
|
|
192
|
+
rawstr << "NormalGepStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
193
|
+
if (Options::ShowSVFIRValue) {
|
|
190
194
|
rawstr << "\n";
|
|
195
|
+
rawstr << value2String(getValue());
|
|
191
196
|
}
|
|
192
|
-
rawstr << value2String(getValue());
|
|
193
197
|
return rawstr.str();
|
|
194
198
|
}
|
|
195
199
|
|
|
196
200
|
const std::string VariantGepStmt::toString() const{
|
|
197
201
|
std::string str;
|
|
198
202
|
raw_string_ostream rawstr(str);
|
|
199
|
-
rawstr << "VariantGepStmt: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
200
|
-
if (Options::
|
|
203
|
+
rawstr << "VariantGepStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
204
|
+
if (Options::ShowSVFIRValue) {
|
|
201
205
|
rawstr << "\n";
|
|
206
|
+
rawstr << value2String(getValue());
|
|
202
207
|
}
|
|
203
|
-
rawstr << value2String(getValue());
|
|
204
208
|
return rawstr.str();
|
|
205
209
|
}
|
|
206
210
|
|
|
207
211
|
const std::string CallPE::toString() const{
|
|
208
212
|
std::string str;
|
|
209
213
|
raw_string_ostream rawstr(str);
|
|
210
|
-
rawstr << "CallPE: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
211
|
-
if (Options::
|
|
214
|
+
rawstr << "CallPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
215
|
+
if (Options::ShowSVFIRValue) {
|
|
212
216
|
rawstr << "\n";
|
|
217
|
+
rawstr << value2String(getValue());
|
|
213
218
|
}
|
|
214
|
-
rawstr << value2String(getValue());
|
|
215
219
|
return rawstr.str();
|
|
216
220
|
}
|
|
217
221
|
|
|
218
222
|
const std::string RetPE::toString() const{
|
|
219
223
|
std::string str;
|
|
220
224
|
raw_string_ostream rawstr(str);
|
|
221
|
-
rawstr << "RetPE: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
222
|
-
if (Options::
|
|
225
|
+
rawstr << "RetPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
226
|
+
if (Options::ShowSVFIRValue) {
|
|
223
227
|
rawstr << "\n";
|
|
228
|
+
rawstr << value2String(getValue());
|
|
224
229
|
}
|
|
225
|
-
rawstr << value2String(getValue());
|
|
226
230
|
return rawstr.str();
|
|
227
231
|
}
|
|
228
232
|
|
|
229
233
|
const std::string TDForkPE::toString() const{
|
|
230
234
|
std::string str;
|
|
231
235
|
raw_string_ostream rawstr(str);
|
|
232
|
-
rawstr << "TDForkPE: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
233
|
-
if (Options::
|
|
236
|
+
rawstr << "TDForkPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
237
|
+
if (Options::ShowSVFIRValue) {
|
|
234
238
|
rawstr << "\n";
|
|
239
|
+
rawstr << value2String(getValue());
|
|
235
240
|
}
|
|
236
|
-
rawstr << value2String(getValue());
|
|
237
241
|
return rawstr.str();
|
|
238
242
|
}
|
|
239
243
|
|
|
240
244
|
const std::string TDJoinPE::toString() const{
|
|
241
245
|
std::string str;
|
|
242
246
|
raw_string_ostream rawstr(str);
|
|
243
|
-
rawstr << "TDJoinPE: [" << getLHSVarID() << "<--" << getRHSVarID() << "]\t";
|
|
244
|
-
if (Options::
|
|
247
|
+
rawstr << "TDJoinPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
248
|
+
if (Options::ShowSVFIRValue) {
|
|
245
249
|
rawstr << "\n";
|
|
250
|
+
rawstr << value2String(getValue());
|
|
246
251
|
}
|
|
247
|
-
rawstr << value2String(getValue());
|
|
248
252
|
return rawstr.str();
|
|
249
253
|
}
|
|
250
254
|
|
|
@@ -112,10 +112,10 @@ const std::string ValVar::toString() const {
|
|
|
112
112
|
std::string str;
|
|
113
113
|
raw_string_ostream rawstr(str);
|
|
114
114
|
rawstr << "ValVar ID: " << getId();
|
|
115
|
-
if (Options::
|
|
115
|
+
if (Options::ShowSVFIRValue) {
|
|
116
116
|
rawstr << "\n";
|
|
117
|
+
rawstr << value2String(value);
|
|
117
118
|
}
|
|
118
|
-
rawstr << value2String(value);
|
|
119
119
|
return rawstr.str();
|
|
120
120
|
}
|
|
121
121
|
|
|
@@ -123,10 +123,10 @@ const std::string ObjVar::toString() const {
|
|
|
123
123
|
std::string str;
|
|
124
124
|
raw_string_ostream rawstr(str);
|
|
125
125
|
rawstr << "ObjVar ID: " << getId();
|
|
126
|
-
if (Options::
|
|
126
|
+
if (Options::ShowSVFIRValue) {
|
|
127
127
|
rawstr << "\n";
|
|
128
|
+
rawstr << value2String(value);
|
|
128
129
|
}
|
|
129
|
-
rawstr << value2String(value);
|
|
130
130
|
return rawstr.str();
|
|
131
131
|
}
|
|
132
132
|
|
|
@@ -134,10 +134,10 @@ const std::string GepValVar::toString() const {
|
|
|
134
134
|
std::string str;
|
|
135
135
|
raw_string_ostream rawstr(str);
|
|
136
136
|
rawstr << "GepValVar ID: " << getId() << " with offset_" + llvm::utostr(getFieldOffset());
|
|
137
|
-
if (Options::
|
|
137
|
+
if (Options::ShowSVFIRValue) {
|
|
138
138
|
rawstr << "\n";
|
|
139
|
+
rawstr << value2String(value);
|
|
139
140
|
}
|
|
140
|
-
rawstr << value2String(value);
|
|
141
141
|
return rawstr.str();
|
|
142
142
|
}
|
|
143
143
|
|
|
@@ -145,10 +145,10 @@ const std::string GepObjVar::toString() const {
|
|
|
145
145
|
std::string str;
|
|
146
146
|
raw_string_ostream rawstr(str);
|
|
147
147
|
rawstr << "GepObjVar ID: " << getId() << " with offset_" + llvm::itostr(ls.accumulateConstantFieldIdx());
|
|
148
|
-
if (Options::
|
|
148
|
+
if (Options::ShowSVFIRValue) {
|
|
149
149
|
rawstr << "\n";
|
|
150
|
+
rawstr << value2String(value);
|
|
150
151
|
}
|
|
151
|
-
rawstr << value2String(value);
|
|
152
152
|
return rawstr.str();
|
|
153
153
|
}
|
|
154
154
|
|
|
@@ -156,10 +156,10 @@ const std::string FIObjVar::toString() const {
|
|
|
156
156
|
std::string str;
|
|
157
157
|
raw_string_ostream rawstr(str);
|
|
158
158
|
rawstr << "FIObjVar ID: " << getId() << " (base object)";
|
|
159
|
-
if (Options::
|
|
159
|
+
if (Options::ShowSVFIRValue) {
|
|
160
160
|
rawstr << "\n";
|
|
161
|
+
rawstr << value2String(value);
|
|
161
162
|
}
|
|
162
|
-
rawstr << value2String(value);
|
|
163
163
|
return rawstr.str();
|
|
164
164
|
}
|
|
165
165
|
|
|
@@ -268,7 +268,7 @@ bool SymbolTableInfo::isConstantObjSym(const Value *val)
|
|
|
268
268
|
{
|
|
269
269
|
if (const GlobalVariable* v = SVFUtil::dyn_cast<GlobalVariable>(val))
|
|
270
270
|
{
|
|
271
|
-
if (cppUtil::isValVtbl(
|
|
271
|
+
if (cppUtil::isValVtbl(v))
|
|
272
272
|
return false;
|
|
273
273
|
else if (!v->hasInitializer()){
|
|
274
274
|
if(v->isExternalLinkage(v->getLinkage()))
|
|
@@ -702,19 +702,24 @@ bool MemObj::isVarArray() const
|
|
|
702
702
|
return typeInfo->isVarArray();
|
|
703
703
|
}
|
|
704
704
|
|
|
705
|
-
bool MemObj::
|
|
705
|
+
bool MemObj::isConstantStruct() const
|
|
706
706
|
{
|
|
707
|
-
return typeInfo->
|
|
707
|
+
return typeInfo->isConstantStruct();
|
|
708
708
|
}
|
|
709
709
|
|
|
710
|
-
bool MemObj::
|
|
710
|
+
bool MemObj::isConstantArray() const
|
|
711
711
|
{
|
|
712
|
-
return typeInfo->
|
|
712
|
+
return typeInfo->isConstantArray();
|
|
713
713
|
}
|
|
714
714
|
|
|
715
|
-
bool MemObj::
|
|
715
|
+
bool MemObj::isConstDataOrConstGlobal() const
|
|
716
716
|
{
|
|
717
|
-
return typeInfo->
|
|
717
|
+
return typeInfo->isConstDataOrConstGlobal();
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
bool MemObj::isConstantData() const
|
|
721
|
+
{
|
|
722
|
+
return typeInfo->isConstantData();
|
|
718
723
|
}
|
|
719
724
|
|
|
720
725
|
bool MemObj::hasPtrObj() const
|
|
@@ -38,7 +38,7 @@ void DoubleFreeChecker::reportBug(ProgSlice* slice)
|
|
|
38
38
|
if(slice->isSatisfiableForPairs() == false)
|
|
39
39
|
{
|
|
40
40
|
const SVFGNode* src = slice->getSource();
|
|
41
|
-
const
|
|
41
|
+
const CallICFGNode* cs = getSrcCSID(src);
|
|
42
42
|
SVFUtil::errs() << bugMsg2("\t Double Free :") << " memory allocation at : ("
|
|
43
43
|
<< getSourceLoc(cs->getCallSite()) << ")\n";
|
|
44
44
|
SVFUtil::errs() << "\t\t double free path: \n" << slice->evalFinalCond() << "\n";
|
|
@@ -35,14 +35,14 @@ using namespace SVFUtil;
|
|
|
35
35
|
|
|
36
36
|
void FileChecker::reportNeverClose(const SVFGNode* src)
|
|
37
37
|
{
|
|
38
|
-
const
|
|
38
|
+
const CallICFGNode* cs = getSrcCSID(src);
|
|
39
39
|
SVFUtil::errs() << bugMsg1("\t FileNeverClose :") << " file open location at : ("
|
|
40
40
|
<< getSourceLoc(cs->getCallSite()) << ")\n";
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
void FileChecker::reportPartialClose(const SVFGNode* src)
|
|
44
44
|
{
|
|
45
|
-
const
|
|
45
|
+
const CallICFGNode* cs = getSrcCSID(src);
|
|
46
46
|
SVFUtil::errs() << bugMsg2("\t PartialFileClose :") << " file open location at : ("
|
|
47
47
|
<< getSourceLoc(cs->getCallSite()) << ")\n";
|
|
48
48
|
}
|
|
@@ -46,7 +46,7 @@ void LeakChecker::initSrcs()
|
|
|
46
46
|
for(SVFIR::CSToRetMap::iterator it = pag->getCallSiteRets().begin(),
|
|
47
47
|
eit = pag->getCallSiteRets().end(); it!=eit; ++it)
|
|
48
48
|
{
|
|
49
|
-
const
|
|
49
|
+
const RetICFGNode* cs = it->first;
|
|
50
50
|
/// if this callsite return reside in a dead function then we do not care about its leaks
|
|
51
51
|
/// for example instruction `int* p = malloc(size)` is in a dead function, then program won't allocate this memory
|
|
52
52
|
/// for example a customized malloc `int p = malloc()` returns an integer value, then program treat it as a system malloc
|
|
@@ -65,8 +65,8 @@ void LeakChecker::initSrcs()
|
|
|
65
65
|
worklist.push(it->first->getCallBlockNode());
|
|
66
66
|
while (!worklist.empty())
|
|
67
67
|
{
|
|
68
|
-
const
|
|
69
|
-
const
|
|
68
|
+
const CallICFGNode* cs = worklist.pop();
|
|
69
|
+
const RetICFGNode* retBlockNode = icfg->getRetBlockNode(cs->getCallSite());
|
|
70
70
|
const PAGNode* pagNode = pag->getCallSiteRet(retBlockNode);
|
|
71
71
|
const SVFGNode* node = getSVFG()->getDefSVFGNode(pagNode);
|
|
72
72
|
if (visited.test(node->getId()) == 0)
|
|
@@ -138,14 +138,14 @@ void LeakChecker::initSnks()
|
|
|
138
138
|
|
|
139
139
|
void LeakChecker::reportNeverFree(const SVFGNode* src)
|
|
140
140
|
{
|
|
141
|
-
const
|
|
141
|
+
const CallICFGNode* cs = getSrcCSID(src);
|
|
142
142
|
SVFUtil::errs() << bugMsg1("\t NeverFree :") << " memory allocation at : ("
|
|
143
143
|
<< getSourceLoc(cs->getCallSite()) << ")\n";
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
void LeakChecker::reportPartialLeak(const SVFGNode* src)
|
|
147
147
|
{
|
|
148
|
-
const
|
|
148
|
+
const CallICFGNode* cs = getSrcCSID(src);
|
|
149
149
|
SVFUtil::errs() << bugMsg2("\t PartialLeak :") << " memory allocation at : ("
|
|
150
150
|
<< getSourceLoc(cs->getCallSite()) << ")\n";
|
|
151
151
|
}
|
|
@@ -175,7 +175,7 @@ void LeakChecker::reportBug(ProgSlice* slice)
|
|
|
175
175
|
void LeakChecker::testsValidation(const ProgSlice* slice)
|
|
176
176
|
{
|
|
177
177
|
const SVFGNode* source = slice->getSource();
|
|
178
|
-
const
|
|
178
|
+
const CallICFGNode* cs = getSrcCSID(source);
|
|
179
179
|
const SVFFunction* fun = getCallee(cs->getCallSite());
|
|
180
180
|
if(fun==nullptr)
|
|
181
181
|
return;
|
|
@@ -188,7 +188,7 @@ void LeakChecker::testsValidation(const ProgSlice* slice)
|
|
|
188
188
|
void LeakChecker::validateSuccessTests(const SVFGNode* source, const SVFFunction* fun)
|
|
189
189
|
{
|
|
190
190
|
|
|
191
|
-
const
|
|
191
|
+
const CallICFGNode* cs = getSrcCSID(source);
|
|
192
192
|
|
|
193
193
|
bool success = false;
|
|
194
194
|
|
|
@@ -241,7 +241,7 @@ void LeakChecker::validateSuccessTests(const SVFGNode* source, const SVFFunction
|
|
|
241
241
|
void LeakChecker::validateExpectedFailureTests(const SVFGNode* source, const SVFFunction* fun)
|
|
242
242
|
{
|
|
243
243
|
|
|
244
|
-
const
|
|
244
|
+
const CallICFGNode* cs = getSrcCSID(source);
|
|
245
245
|
|
|
246
246
|
bool expectedFailure = false;
|
|
247
247
|
|
package/lib/SABER/ProgSlice.cpp
CHANGED
|
@@ -130,7 +130,7 @@ bool ProgSlice::isSatisfiableForPairs()
|
|
|
130
130
|
return true;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
const
|
|
133
|
+
const CallICFGNode* ProgSlice::getCallSite(const SVFGEdge* edge) const
|
|
134
134
|
{
|
|
135
135
|
assert(edge->isCallVFGEdge() && "not a call svfg edge?");
|
|
136
136
|
if(const CallDirSVFGEdge* callEdge = SVFUtil::dyn_cast<CallDirSVFGEdge>(edge))
|
|
@@ -138,7 +138,7 @@ const CallBlockNode* ProgSlice::getCallSite(const SVFGEdge* edge) const
|
|
|
138
138
|
else
|
|
139
139
|
return getSVFG()->getCallSite(SVFUtil::cast<CallIndSVFGEdge>(edge)->getCallSiteId());
|
|
140
140
|
}
|
|
141
|
-
const
|
|
141
|
+
const CallICFGNode* ProgSlice::getRetSite(const SVFGEdge* edge) const
|
|
142
142
|
{
|
|
143
143
|
assert(edge->isRetVFGEdge() && "not a return svfg edge?");
|
|
144
144
|
if(const RetDirSVFGEdge* callEdge = SVFUtil::dyn_cast<RetDirSVFGEdge>(edge))
|
|
@@ -55,7 +55,7 @@ PTACallGraph* CallGraphBuilder::buildCallGraph(SVFModule* svfModule)
|
|
|
55
55
|
{
|
|
56
56
|
if(const SVFFunction* callee = getCallee(inst))
|
|
57
57
|
{
|
|
58
|
-
const
|
|
58
|
+
const CallICFGNode* callBlockNode = icfg->getCallBlockNode(inst);
|
|
59
59
|
const SVFFunction* caller = LLVMModuleSet::getLLVMModuleSet()->getSVFFunction(fun);
|
|
60
60
|
callgraph->addDirectCallGraphEdge(callBlockNode,caller,callee);
|
|
61
61
|
}
|
|
@@ -83,7 +83,7 @@ PTACallGraph* ThreadCallGraphBuilder::buildThreadCallGraph(SVFModule* svfModule)
|
|
|
83
83
|
const Instruction *inst = &*II;
|
|
84
84
|
if (tdAPI->isTDFork(inst))
|
|
85
85
|
{
|
|
86
|
-
const
|
|
86
|
+
const CallICFGNode* cs = icfg->getCallBlockNode(inst);
|
|
87
87
|
cg->addForksite(cs);
|
|
88
88
|
const Function* forkee = SVFUtil::dyn_cast<Function>(tdAPI->getForkedFun(inst));
|
|
89
89
|
if (forkee)
|
|
@@ -98,7 +98,7 @@ PTACallGraph* ThreadCallGraphBuilder::buildThreadCallGraph(SVFModule* svfModule)
|
|
|
98
98
|
}
|
|
99
99
|
else if (tdAPI->isHareParFor(inst))
|
|
100
100
|
{
|
|
101
|
-
const
|
|
101
|
+
const CallICFGNode* cs = icfg->getCallBlockNode(inst);
|
|
102
102
|
cg->addParForSite(cs);
|
|
103
103
|
const Function* taskFunc = SVFUtil::dyn_cast<Function>(tdAPI->getTaskFuncAtHareParForSite(inst));
|
|
104
104
|
if (taskFunc)
|
|
@@ -122,7 +122,7 @@ PTACallGraph* ThreadCallGraphBuilder::buildThreadCallGraph(SVFModule* svfModule)
|
|
|
122
122
|
const Instruction *inst = &*II;
|
|
123
123
|
if (tdAPI->isTDJoin(inst))
|
|
124
124
|
{
|
|
125
|
-
const
|
|
125
|
+
const CallICFGNode* cs = icfg->getCallBlockNode(inst);
|
|
126
126
|
cg->addJoinsite(cs);
|
|
127
127
|
}
|
|
128
128
|
}
|
|
@@ -31,7 +31,7 @@ void ICFGPrinter::printICFGToJson(const std::string& filename)
|
|
|
31
31
|
llvm::json::Object ICFGNode_Obj;
|
|
32
32
|
ICFGNode_Obj["ICFG_ID"] = id;
|
|
33
33
|
ICFGNode_Obj["Node Type"] = getICFGKind(node->getNodeKind());
|
|
34
|
-
if(
|
|
34
|
+
if(IntraICFGNode* bNode = SVFUtil::dyn_cast<IntraICFGNode>(node))
|
|
35
35
|
{
|
|
36
36
|
ICFGNode_Obj["Source Location"] = getSourceLoc(bNode->getInst());
|
|
37
37
|
SVFIR::SVFStmtList& edges = SVFIR::getPAG()->getPTASVFStmtList(bNode);
|
|
@@ -61,7 +61,7 @@ void ICFGPrinter::printICFGToJson(const std::string& filename)
|
|
|
61
61
|
llvm::json::Value PagEdge_value = llvm::json::Array{PAGEdge_array};
|
|
62
62
|
ICFGNode_Obj["SVFIR Edges"] = PagEdge_value;
|
|
63
63
|
}
|
|
64
|
-
else if(
|
|
64
|
+
else if(FunEntryICFGNode* entry = SVFUtil::dyn_cast<FunEntryICFGNode>(node))
|
|
65
65
|
{
|
|
66
66
|
if (isExtCall(entry->getFun()))
|
|
67
67
|
ICFGNode_Obj["isExtCall"] = true;
|
|
@@ -72,7 +72,7 @@ void ICFGPrinter::printICFGToJson(const std::string& filename)
|
|
|
72
72
|
}
|
|
73
73
|
ICFGNode_Obj["Function Name"] = entry->getFun()->getName();
|
|
74
74
|
}
|
|
75
|
-
else if (
|
|
75
|
+
else if (FunExitICFGNode* exit = SVFUtil::dyn_cast<FunExitICFGNode>(node))
|
|
76
76
|
{
|
|
77
77
|
if (isExtCall(exit->getFun()))
|
|
78
78
|
ICFGNode_Obj["isExtCall"] = true;
|
|
@@ -83,11 +83,11 @@ void ICFGPrinter::printICFGToJson(const std::string& filename)
|
|
|
83
83
|
}
|
|
84
84
|
ICFGNode_Obj["Function Name"] = exit->getFun()->getName();
|
|
85
85
|
}
|
|
86
|
-
else if (
|
|
86
|
+
else if (CallICFGNode* call = SVFUtil::dyn_cast<CallICFGNode>(node))
|
|
87
87
|
{
|
|
88
88
|
ICFGNode_Obj["Source Location"] = getSourceLoc(call->getCallSite());
|
|
89
89
|
}
|
|
90
|
-
else if (
|
|
90
|
+
else if (RetICFGNode* ret = SVFUtil::dyn_cast<RetICFGNode>(node))
|
|
91
91
|
{
|
|
92
92
|
ICFGNode_Obj["Source Location"] = getSourceLoc(ret->getCallSite());
|
|
93
93
|
}
|