svf-tools 1.0.289 → 1.0.293
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/README.md +1 -0
- package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenWaveDiffWithType_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +45 -29
- package/SVF-doxygen/html/html/Andersen_8h_source.html +50 -50
- package/SVF-doxygen/html/html/BasicTypes_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +9 -9
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +52 -32
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +58 -55
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +64 -11
- package/SVF-doxygen/html/html/NodeIDAllocator_8h.html +5 -1
- package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +52 -15
- package/SVF-doxygen/html/html/PAG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +34 -33
- package/SVF-doxygen/html/html/PointsTo_8h_source.html +32 -32
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +4 -12
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +33 -35
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +31 -36
- package/SVF-doxygen/html/html/SVFG_8h_source.html +19 -19
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +15 -7
- package/SVF-doxygen/html/html/SVFUtil_8h.html +3 -0
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +10 -8
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +17 -11
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +51 -43
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +34 -33
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/annotated.html +2 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +213 -212
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +124 -72
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +223 -222
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +36 -34
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +232 -231
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +21 -19
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +220 -219
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +38 -36
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +221 -220
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +11 -9
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +232 -231
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +6 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +220 -219
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +21 -19
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType-members.html +227 -226
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +26 -24
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +2 -3
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -4
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +110 -107
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +12 -4
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +109 -106
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +286 -157
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +121 -118
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +36 -28
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator-members.html +11 -10
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +74 -34
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer-members.html +109 -0
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +1188 -0
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +3 -4
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +77 -66
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +32 -26
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice-members.html +36 -37
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +121 -153
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +49 -49
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +8 -9
- package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +132 -129
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +171 -116
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +37 -37
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +5 -5
- package/SVF-doxygen/html/html/classes.html +62 -62
- package/SVF-doxygen/html/html/functions_b.html +10 -5
- package/SVF-doxygen/html/html/functions_c.html +36 -22
- package/SVF-doxygen/html/html/functions_d.html +12 -0
- package/SVF-doxygen/html/html/functions_e.html +9 -3
- package/SVF-doxygen/html/html/functions_f.html +21 -18
- package/SVF-doxygen/html/html/functions_func_c.html +19 -10
- package/SVF-doxygen/html/html/functions_func_d.html +3 -0
- package/SVF-doxygen/html/html/functions_func_e.html +3 -0
- package/SVF-doxygen/html/html/functions_func_g.html +16 -10
- package/SVF-doxygen/html/html/functions_func_p.html +6 -2
- package/SVF-doxygen/html/html/functions_func_r.html +7 -1
- package/SVF-doxygen/html/html/functions_func_t.html +3 -0
- package/SVF-doxygen/html/html/functions_g.html +15 -9
- package/SVF-doxygen/html/html/functions_l.html +10 -7
- package/SVF-doxygen/html/html/functions_n.html +21 -3
- package/SVF-doxygen/html/html/functions_o.html +16 -8
- package/SVF-doxygen/html/html/functions_p.html +23 -17
- package/SVF-doxygen/html/html/functions_r.html +13 -6
- package/SVF-doxygen/html/html/functions_s.html +9 -9
- package/SVF-doxygen/html/html/functions_t.html +18 -9
- package/SVF-doxygen/html/html/functions_type_d.html +3 -0
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_b.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_c.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_d.html +6 -0
- package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_f.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_l.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_n.html +18 -0
- package/SVF-doxygen/html/html/functions_vars_o.html +6 -0
- package/SVF-doxygen/html/html/functions_vars_r.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_t.html +6 -0
- package/SVF-doxygen/html/html/functions_w.html +8 -6
- package/SVF-doxygen/html/html/globals_f.html +3 -3
- package/SVF-doxygen/html/html/hierarchy.html +413 -412
- package/SVF-doxygen/html/html/menudata.js +2 -0
- package/SVF-doxygen/html/html/namespaceSVF.html +8 -8
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +47 -16
- package/SVF-doxygen/html/html/namespacemembers_func.html +17 -10
- package/SVF-doxygen/html/html/namespacemembers_h.html +76 -0
- package/SVF-doxygen/html/html/search/all_10.js +9 -8
- package/SVF-doxygen/html/html/search/all_12.js +5 -2
- package/SVF-doxygen/html/html/search/all_13.js +7 -7
- package/SVF-doxygen/html/html/search/all_14.js +8 -5
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_2.js +1 -0
- package/SVF-doxygen/html/html/search/all_3.js +4 -0
- package/SVF-doxygen/html/html/search/all_4.js +4 -0
- package/SVF-doxygen/html/html/search/all_5.js +2 -0
- package/SVF-doxygen/html/html/search/all_6.js +4 -3
- package/SVF-doxygen/html/html/search/all_7.js +4 -2
- package/SVF-doxygen/html/html/search/all_8.js +1 -0
- package/SVF-doxygen/html/html/search/all_c.js +4 -3
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +9 -4
- package/SVF-doxygen/html/html/search/all_f.js +4 -2
- package/SVF-doxygen/html/html/search/classes_2.js +1 -0
- package/SVF-doxygen/html/html/search/functions_10.js +1 -1
- package/SVF-doxygen/html/html/search/functions_11.js +1 -0
- package/SVF-doxygen/html/html/search/functions_2.js +2 -0
- package/SVF-doxygen/html/html/search/functions_3.js +1 -0
- package/SVF-doxygen/html/html/search/functions_4.js +1 -0
- package/SVF-doxygen/html/html/search/functions_6.js +4 -2
- package/SVF-doxygen/html/html/search/functions_7.js +1 -0
- package/SVF-doxygen/html/html/search/functions_e.js +3 -2
- package/SVF-doxygen/html/html/search/functions_f.js +2 -0
- package/SVF-doxygen/html/html/search/typedefs_3.js +1 -0
- package/SVF-doxygen/html/html/search/variables_12.js +1 -0
- package/SVF-doxygen/html/html/search/variables_14.js +3 -1
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_2.js +1 -0
- package/SVF-doxygen/html/html/search/variables_3.js +1 -0
- package/SVF-doxygen/html/html/search/variables_4.js +2 -0
- package/SVF-doxygen/html/html/search/variables_5.js +1 -0
- package/SVF-doxygen/html/html/search/variables_6.js +1 -0
- package/SVF-doxygen/html/html/search/variables_c.js +1 -0
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +7 -2
- package/SVF-doxygen/html/html/search/variables_f.js +2 -0
- 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 +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +20 -20
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1PointsTo_01_4.html +1 -1
- package/include/SABER/ProgSlice.h +0 -3
- package/include/Util/NodeIDAllocator.h +94 -0
- package/include/Util/SVFUtil.h +3 -0
- package/include/WPA/Andersen.h +4 -0
- package/include/WPA/FlowSensitive.h +9 -0
- package/include/WPA/VersionedFlowSensitive.h +3 -0
- package/lib/Graphs/SVFG.cpp +0 -20
- package/lib/Graphs/VFG.cpp +18 -0
- package/lib/MemoryModel/PointsTo.cpp +76 -19
- package/lib/SABER/ProgSlice.cpp +0 -37
- package/lib/SABER/SaberAnnotator.cpp +1 -1
- package/lib/Util/NodeIDAllocator.cpp +548 -1
- package/lib/Util/SVFUtil.cpp +19 -0
- package/lib/WPA/Andersen.cpp +34 -0
- package/lib/WPA/FlowSensitive.cpp +70 -0
- package/lib/WPA/VersionedFlowSensitive.cpp +20 -0
- package/package.json +1 -1
|
@@ -115,6 +115,9 @@ protected:
|
|
|
115
115
|
/// Override to do nothing. Instead, we will use propagateVersion when necessary.
|
|
116
116
|
virtual bool propAlongIndirectEdge(const IndirectSVFGEdge*) override { return false; }
|
|
117
117
|
|
|
118
|
+
/// Override since we want to assign different weights based on versioning.
|
|
119
|
+
virtual void cluster(void) override;
|
|
120
|
+
|
|
118
121
|
private:
|
|
119
122
|
/// Prelabel the SVFG: set y(o) for stores and c(o) for delta nodes to a new version.
|
|
120
123
|
void prelabel(void);
|
package/lib/Graphs/SVFG.cpp
CHANGED
|
@@ -161,26 +161,6 @@ const std::string ThreadMHPIndSVFGEdge::toString() const {
|
|
|
161
161
|
return rawstr.str();
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
const Value* StmtSVFGNode::getValue() const {
|
|
165
|
-
return getPAGEdge()->getValue();
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
const Value* CmpVFGNode::getValue() const {
|
|
169
|
-
return getRes()->getValue();
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
const Value* BinaryOPVFGNode::getValue() const {
|
|
173
|
-
return getRes()->getValue();
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
const Value* PHIVFGNode::getValue() const {
|
|
177
|
-
return getRes()->getValue();
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
const Value* ArgumentVFGNode::getValue() const {
|
|
181
|
-
return param->getValue();
|
|
182
|
-
}
|
|
183
|
-
|
|
184
164
|
|
|
185
165
|
FormalOUTSVFGNode::FormalOUTSVFGNode(NodeID id, const MRVer* mrVer, const FunExitBlockNode* funExit): MRSVFGNode(id, FPOUT)
|
|
186
166
|
{
|
package/lib/Graphs/VFG.cpp
CHANGED
|
@@ -891,7 +891,25 @@ const SVFFunction* VFG::isFunEntryVFGNode(const VFGNode* node) const
|
|
|
891
891
|
}
|
|
892
892
|
|
|
893
893
|
|
|
894
|
+
const Value* StmtVFGNode::getValue() const {
|
|
895
|
+
return getPAGEdge()->getValue();
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
const Value* CmpVFGNode::getValue() const {
|
|
899
|
+
return getRes()->getValue();
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
const Value* BinaryOPVFGNode::getValue() const {
|
|
903
|
+
return getRes()->getValue();
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
const Value* PHIVFGNode::getValue() const {
|
|
907
|
+
return getRes()->getValue();
|
|
908
|
+
}
|
|
894
909
|
|
|
910
|
+
const Value* ArgumentVFGNode::getValue() const {
|
|
911
|
+
return param->getValue();
|
|
912
|
+
}
|
|
895
913
|
|
|
896
914
|
/*!
|
|
897
915
|
* GraphTraits specialization
|
|
@@ -96,7 +96,10 @@ bool PointsTo::empty(void) const
|
|
|
96
96
|
if (type == CBV) return cbv.empty();
|
|
97
97
|
else if (type == SBV) return sbv.empty();
|
|
98
98
|
else if (type == BV) return bv.empty();
|
|
99
|
-
|
|
99
|
+
else {
|
|
100
|
+
assert(false && "PointsTo::empty: unknown type");
|
|
101
|
+
abort();
|
|
102
|
+
}
|
|
100
103
|
}
|
|
101
104
|
|
|
102
105
|
/// Returns number of elements.
|
|
@@ -105,7 +108,10 @@ u32_t PointsTo::count(void) const
|
|
|
105
108
|
if (type == CBV) return cbv.count();
|
|
106
109
|
else if (type == SBV) return sbv.count();
|
|
107
110
|
else if (type == BV) return bv.count();
|
|
108
|
-
|
|
111
|
+
else {
|
|
112
|
+
assert(false && "PointsTo::count: unknown type");
|
|
113
|
+
abort();
|
|
114
|
+
}
|
|
109
115
|
}
|
|
110
116
|
|
|
111
117
|
void PointsTo::clear(void)
|
|
@@ -122,7 +128,10 @@ bool PointsTo::test(u32_t n) const
|
|
|
122
128
|
if (type == CBV) return cbv.test(n);
|
|
123
129
|
else if (type == SBV) return sbv.test(n);
|
|
124
130
|
else if (type == BV) return bv.test(n);
|
|
125
|
-
|
|
131
|
+
else {
|
|
132
|
+
assert(false && "PointsTo::test: unknown type");
|
|
133
|
+
abort();
|
|
134
|
+
}
|
|
126
135
|
}
|
|
127
136
|
|
|
128
137
|
bool PointsTo::test_and_set(u32_t n)
|
|
@@ -131,7 +140,10 @@ bool PointsTo::test_and_set(u32_t n)
|
|
|
131
140
|
if (type == CBV) return cbv.test_and_set(n);
|
|
132
141
|
else if (type == SBV) return sbv.test_and_set(n);
|
|
133
142
|
else if (type == BV) return bv.test_and_set(n);
|
|
134
|
-
|
|
143
|
+
else {
|
|
144
|
+
assert(false && "PointsTo::test_and_set: unknown type");
|
|
145
|
+
abort();
|
|
146
|
+
}
|
|
135
147
|
}
|
|
136
148
|
|
|
137
149
|
void PointsTo::set(u32_t n)
|
|
@@ -159,7 +171,10 @@ bool PointsTo::contains(const PointsTo &rhs) const
|
|
|
159
171
|
if (type == CBV) return cbv.contains(rhs.cbv);
|
|
160
172
|
else if (type == SBV) return sbv.contains(rhs.sbv);
|
|
161
173
|
else if (type == BV) return bv.contains(rhs.bv);
|
|
162
|
-
|
|
174
|
+
else {
|
|
175
|
+
assert(false && "PointsTo::contains: unknown type");
|
|
176
|
+
abort();
|
|
177
|
+
}
|
|
163
178
|
}
|
|
164
179
|
|
|
165
180
|
bool PointsTo::intersects(const PointsTo &rhs) const
|
|
@@ -169,7 +184,10 @@ bool PointsTo::intersects(const PointsTo &rhs) const
|
|
|
169
184
|
if (type == CBV) return cbv.intersects(rhs.cbv);
|
|
170
185
|
else if (type == SBV) return sbv.intersects(rhs.sbv);
|
|
171
186
|
else if (type == BV) return bv.intersects(rhs.bv);
|
|
172
|
-
|
|
187
|
+
else {
|
|
188
|
+
assert(false && "PointsTo::intersects: unknown type");
|
|
189
|
+
abort();
|
|
190
|
+
}
|
|
173
191
|
}
|
|
174
192
|
|
|
175
193
|
int PointsTo::find_first(void)
|
|
@@ -185,7 +203,10 @@ bool PointsTo::operator==(const PointsTo &rhs) const
|
|
|
185
203
|
if (type == CBV) return cbv == rhs.cbv;
|
|
186
204
|
else if (type == SBV) return sbv == rhs.sbv;
|
|
187
205
|
else if (type == BV) return bv == rhs.bv;
|
|
188
|
-
|
|
206
|
+
else {
|
|
207
|
+
assert(false && "PointsTo::==: unknown type");
|
|
208
|
+
abort();
|
|
209
|
+
}
|
|
189
210
|
}
|
|
190
211
|
|
|
191
212
|
bool PointsTo::operator!=(const PointsTo &rhs) const
|
|
@@ -203,7 +224,10 @@ bool PointsTo::operator|=(const PointsTo &rhs)
|
|
|
203
224
|
if (type == CBV) return cbv |= rhs.cbv;
|
|
204
225
|
else if (type == SBV) return sbv |= rhs.sbv;
|
|
205
226
|
else if (type == BV) return bv |= rhs.bv;
|
|
206
|
-
|
|
227
|
+
else{
|
|
228
|
+
assert(false && "PointsTo::|=: unknown type");
|
|
229
|
+
abort();
|
|
230
|
+
}
|
|
207
231
|
}
|
|
208
232
|
|
|
209
233
|
bool PointsTo::operator|=(const NodeBS &rhs)
|
|
@@ -226,7 +250,10 @@ bool PointsTo::operator&=(const PointsTo &rhs)
|
|
|
226
250
|
if (type == CBV) return cbv &= rhs.cbv;
|
|
227
251
|
else if (type == SBV) return sbv &= rhs.sbv;
|
|
228
252
|
else if (type == BV) return bv &= rhs.bv;
|
|
229
|
-
|
|
253
|
+
else{
|
|
254
|
+
assert(false && "PointsTo::&=: unknown type");
|
|
255
|
+
abort();
|
|
256
|
+
}
|
|
230
257
|
}
|
|
231
258
|
|
|
232
259
|
bool PointsTo::operator-=(const PointsTo &rhs)
|
|
@@ -236,7 +263,10 @@ bool PointsTo::operator-=(const PointsTo &rhs)
|
|
|
236
263
|
if (type == CBV) return cbv.intersectWithComplement(rhs.cbv);
|
|
237
264
|
else if (type == SBV) return sbv.intersectWithComplement(rhs.sbv);
|
|
238
265
|
else if (type == BV) return bv.intersectWithComplement(rhs.bv);
|
|
239
|
-
|
|
266
|
+
else{
|
|
267
|
+
assert(false && "PointsTo::-=: unknown type");
|
|
268
|
+
abort();
|
|
269
|
+
}
|
|
240
270
|
}
|
|
241
271
|
|
|
242
272
|
bool PointsTo::intersectWithComplement(const PointsTo &rhs)
|
|
@@ -246,7 +276,9 @@ bool PointsTo::intersectWithComplement(const PointsTo &rhs)
|
|
|
246
276
|
if (type == CBV) return cbv.intersectWithComplement(rhs.cbv);
|
|
247
277
|
else if (type == SBV) return sbv.intersectWithComplement(rhs.sbv);
|
|
248
278
|
else if (type == BV) return bv.intersectWithComplement(rhs.bv);
|
|
249
|
-
|
|
279
|
+
else {
|
|
280
|
+
assert(false && "PointsTo::intersectWithComplement(PT): unknown type");
|
|
281
|
+
}
|
|
250
282
|
}
|
|
251
283
|
|
|
252
284
|
void PointsTo::intersectWithComplement(const PointsTo &lhs, const PointsTo &rhs)
|
|
@@ -257,7 +289,10 @@ void PointsTo::intersectWithComplement(const PointsTo &lhs, const PointsTo &rhs)
|
|
|
257
289
|
if (type == CBV) cbv.intersectWithComplement(lhs.cbv, rhs.cbv);
|
|
258
290
|
else if (type == SBV) sbv.intersectWithComplement(lhs.sbv, rhs.sbv);
|
|
259
291
|
else if (type == BV) bv.intersectWithComplement(lhs.bv, rhs.bv);
|
|
260
|
-
else
|
|
292
|
+
else {
|
|
293
|
+
assert(false && "PointsTo::intersectWithComplement(PT, PT): unknown type");
|
|
294
|
+
abort();
|
|
295
|
+
}
|
|
261
296
|
}
|
|
262
297
|
|
|
263
298
|
NodeBS PointsTo::toNodeBS(void) const
|
|
@@ -277,7 +312,10 @@ size_t PointsTo::hash(void) const
|
|
|
277
312
|
}
|
|
278
313
|
else if (type == BV) return bv.hash();
|
|
279
314
|
|
|
280
|
-
|
|
315
|
+
else{
|
|
316
|
+
assert(false && "PointsTo::hash: unknown type");
|
|
317
|
+
abort();
|
|
318
|
+
}
|
|
281
319
|
}
|
|
282
320
|
|
|
283
321
|
PointsTo::MappingPtr PointsTo::getNodeMapping(void) const
|
|
@@ -347,7 +385,11 @@ PointsTo::PointsToIterator::PointsToIterator(const PointsTo *pt, bool end)
|
|
|
347
385
|
{
|
|
348
386
|
new (&bvIt) BitVector::iterator(end ? pt->bv.end() : pt->bv.begin());
|
|
349
387
|
}
|
|
350
|
-
else
|
|
388
|
+
else
|
|
389
|
+
{
|
|
390
|
+
assert(false && "PointsToIterator::PointsToIterator: unknown type");
|
|
391
|
+
abort();
|
|
392
|
+
}
|
|
351
393
|
}
|
|
352
394
|
|
|
353
395
|
PointsTo::PointsToIterator::PointsToIterator(const PointsToIterator &pt)
|
|
@@ -365,7 +407,10 @@ PointsTo::PointsToIterator::PointsToIterator(const PointsToIterator &pt)
|
|
|
365
407
|
{
|
|
366
408
|
new (&bvIt) BitVector::iterator(pt.bvIt);
|
|
367
409
|
}
|
|
368
|
-
else
|
|
410
|
+
else {
|
|
411
|
+
assert(false && "PointsToIterator::PointsToIterator&: unknown type");
|
|
412
|
+
abort();
|
|
413
|
+
}
|
|
369
414
|
}
|
|
370
415
|
|
|
371
416
|
PointsTo::PointsToIterator::PointsToIterator(PointsToIterator &&pt)
|
|
@@ -383,7 +428,10 @@ PointsTo::PointsToIterator::PointsToIterator(PointsToIterator &&pt)
|
|
|
383
428
|
{
|
|
384
429
|
new (&bvIt) BitVector::iterator(std::move(pt.bvIt));
|
|
385
430
|
}
|
|
386
|
-
else
|
|
431
|
+
else {
|
|
432
|
+
assert(false && "PointsToIterator::PointsToIterator&&: unknown type");
|
|
433
|
+
abort();
|
|
434
|
+
}
|
|
387
435
|
}
|
|
388
436
|
|
|
389
437
|
PointsTo::PointsToIterator &PointsTo::PointsToIterator::operator=(const PointsToIterator &rhs)
|
|
@@ -453,7 +501,10 @@ const NodeID PointsTo::PointsToIterator::operator*(void) const
|
|
|
453
501
|
if (pt->type == Type::CBV) return pt->getExternalNode(*cbvIt);
|
|
454
502
|
else if (pt->type == Type::SBV) return pt->getExternalNode(*sbvIt);
|
|
455
503
|
else if (pt->type == Type::BV) return pt->getExternalNode(*bvIt);
|
|
456
|
-
|
|
504
|
+
else {
|
|
505
|
+
assert(false && "PointsToIterator::*: unknown type");
|
|
506
|
+
abort();
|
|
507
|
+
}
|
|
457
508
|
}
|
|
458
509
|
|
|
459
510
|
bool PointsTo::PointsToIterator::operator==(const PointsToIterator &rhs) const
|
|
@@ -465,7 +516,10 @@ bool PointsTo::PointsToIterator::operator==(const PointsToIterator &rhs) const
|
|
|
465
516
|
if (pt->type == Type::CBV) return cbvIt == rhs.cbvIt;
|
|
466
517
|
else if (pt->type == Type::SBV) return sbvIt == rhs.sbvIt;
|
|
467
518
|
else if (pt->type == Type::BV) return bvIt == rhs.bvIt;
|
|
468
|
-
|
|
519
|
+
else {
|
|
520
|
+
assert(false && "PointsToIterator::==: unknown type");
|
|
521
|
+
abort();
|
|
522
|
+
}
|
|
469
523
|
}
|
|
470
524
|
|
|
471
525
|
bool PointsTo::PointsToIterator::operator!=(const PointsToIterator &rhs) const
|
|
@@ -481,7 +535,10 @@ bool PointsTo::PointsToIterator::atEnd(void) const
|
|
|
481
535
|
if (pt->type == Type::CBV) return cbvIt == pt->cbv.end();
|
|
482
536
|
else if (pt->type == Type::SBV) return sbvIt == pt->sbv.end();
|
|
483
537
|
else if (pt->type == Type::BV) return bvIt == pt->bv.end();
|
|
484
|
-
|
|
538
|
+
else {
|
|
539
|
+
assert(false && "PointsToIterator::atEnd: unknown type");
|
|
540
|
+
abort();
|
|
541
|
+
}
|
|
485
542
|
}
|
|
486
543
|
|
|
487
544
|
PointsTo operator|(const PointsTo &lhs, const PointsTo &rhs)
|
package/lib/SABER/ProgSlice.cpp
CHANGED
|
@@ -147,43 +147,6 @@ const CallBlockNode* ProgSlice::getRetSite(const SVFGEdge* edge) const
|
|
|
147
147
|
return getSVFG()->getCallSite(SVFUtil::cast<RetIndSVFGEdge>(edge)->getCallSiteId());
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
/*!
|
|
151
|
-
* Return llvm value for addr/copy/gep/load/phi/actualParam/formalParam/actualRet/formalRet
|
|
152
|
-
* but not for store/mssaphi/actualIn/acutalOut/formalIn/formalOut
|
|
153
|
-
*/
|
|
154
|
-
const Value* ProgSlice::getLLVMValue(const SVFGNode* node) const
|
|
155
|
-
{
|
|
156
|
-
if(const StmtSVFGNode* stmt = SVFUtil::dyn_cast<StmtSVFGNode>(node))
|
|
157
|
-
{
|
|
158
|
-
if(SVFUtil::isa<StoreSVFGNode>(stmt) == false)
|
|
159
|
-
{
|
|
160
|
-
if(stmt->getPAGDstNode()->hasValue())
|
|
161
|
-
return stmt->getPAGDstNode()->getValue();
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
else if(const PHISVFGNode* phi = SVFUtil::dyn_cast<PHISVFGNode>(node))
|
|
165
|
-
{
|
|
166
|
-
return phi->getRes()->getValue();
|
|
167
|
-
}
|
|
168
|
-
else if(const ActualParmSVFGNode* ap = SVFUtil::dyn_cast<ActualParmSVFGNode>(node))
|
|
169
|
-
{
|
|
170
|
-
return ap->getParam()->getValue();
|
|
171
|
-
}
|
|
172
|
-
else if(const FormalParmSVFGNode* fp = SVFUtil::dyn_cast<FormalParmSVFGNode>(node))
|
|
173
|
-
{
|
|
174
|
-
return fp->getParam()->getValue();
|
|
175
|
-
}
|
|
176
|
-
else if(const ActualRetSVFGNode* ar = SVFUtil::dyn_cast<ActualRetSVFGNode>(node))
|
|
177
|
-
{
|
|
178
|
-
return ar->getRev()->getValue();
|
|
179
|
-
}
|
|
180
|
-
else if(const FormalRetSVFGNode* fr = SVFUtil::dyn_cast<FormalRetSVFGNode>(node))
|
|
181
|
-
{
|
|
182
|
-
return fr->getRet()->getValue();
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
return nullptr;
|
|
186
|
-
}
|
|
187
150
|
|
|
188
151
|
/*!
|
|
189
152
|
* Evaluate Atoms of a condition
|
|
@@ -40,7 +40,7 @@ void SaberAnnotator::annotateSource()
|
|
|
40
40
|
std::string str;
|
|
41
41
|
raw_string_ostream rawstr(str);
|
|
42
42
|
rawstr << SB_SLICESOURCE ; //<< _curSlice->getSource()->getId();
|
|
43
|
-
if(const Instruction* sourceinst = SVFUtil::dyn_cast<Instruction>(_curSlice->
|
|
43
|
+
if(const Instruction* sourceinst = SVFUtil::dyn_cast<Instruction>(_curSlice->getSource()->getValue()))
|
|
44
44
|
{
|
|
45
45
|
addMDTag(const_cast<Instruction*>(sourceinst),rawstr.str());
|
|
46
46
|
}
|