svf-tools 1.0.768 → 1.0.769
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/AccessPath_8cpp_source.html +163 -130
- package/SVF-doxygen/html/html/AccessPath_8h_source.html +47 -45
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +2 -0
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +146 -126
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFFileSystem_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/SVFFileSystem_8h_source.html +11 -11
- package/SVF-doxygen/html/html/SVFIR2ConsExeState_8cpp_source.html +55 -55
- package/SVF-doxygen/html/html/SVFIR2ConsExeState_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +830 -748
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8h_source.html +138 -127
- package/SVF-doxygen/html/html/SVFIR2Relation_8cpp_source.html +33 -33
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +11 -11
- package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +11 -11
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +806 -799
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +7 -7
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/VFG_8h_source.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1AccessPath-members.html +27 -26
- package/SVF-doxygen/html/html/classSVF_1_1AccessPath.html +179 -124
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +68 -68
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +97 -97
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +96 -95
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +54 -19
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +48 -48
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +46 -46
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ConsExeState.html +49 -49
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState-members.html +45 -42
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +961 -779
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +44 -44
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +15 -15
- package/SVF-doxygen/html/html/functions_a.html +14 -11
- package/SVF-doxygen/html/html/functions_c.html +24 -21
- package/SVF-doxygen/html/html/functions_f.html +3 -3
- package/SVF-doxygen/html/html/functions_func.html +9 -6
- package/SVF-doxygen/html/html/functions_func_c.html +19 -16
- package/SVF-doxygen/html/html/functions_func_g.html +24 -15
- package/SVF-doxygen/html/html/functions_func_p.html +1 -1
- package/SVF-doxygen/html/html/functions_func_s.html +2 -2
- package/SVF-doxygen/html/html/functions_g.html +24 -15
- package/SVF-doxygen/html/html/functions_i.html +3 -3
- package/SVF-doxygen/html/html/functions_l.html +5 -5
- package/SVF-doxygen/html/html/functions_o.html +7 -7
- package/SVF-doxygen/html/html/functions_p.html +12 -12
- package/SVF-doxygen/html/html/functions_r.html +4 -2
- package/SVF-doxygen/html/html/functions_s.html +18 -18
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_w.html +9 -9
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +78 -31
- package/SVF-doxygen/html/html/namespacemembers_func_s.html +3 -0
- package/SVF-doxygen/html/html/namespacemembers_s.html +3 -0
- package/SVF-doxygen/html/html/search/all_1.js +459 -458
- package/SVF-doxygen/html/html/search/all_10.js +323 -323
- package/SVF-doxygen/html/html/search/all_11.js +212 -212
- package/SVF-doxygen/html/html/search/all_12.js +537 -536
- package/SVF-doxygen/html/html/search/all_13.js +188 -188
- package/SVF-doxygen/html/html/search/all_14.js +66 -66
- package/SVF-doxygen/html/html/search/all_15.js +170 -170
- package/SVF-doxygen/html/html/search/all_16.js +60 -60
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/html/search/all_19.js +10 -10
- package/SVF-doxygen/html/html/search/all_1a.js +169 -169
- package/SVF-doxygen/html/html/search/all_2.js +159 -159
- package/SVF-doxygen/html/html/search/all_3.js +627 -626
- package/SVF-doxygen/html/html/search/all_4.js +226 -226
- package/SVF-doxygen/html/html/search/all_5.js +117 -117
- package/SVF-doxygen/html/html/search/all_6.js +224 -224
- package/SVF-doxygen/html/html/search/all_7.js +1002 -999
- package/SVF-doxygen/html/html/search/all_8.js +191 -191
- package/SVF-doxygen/html/html/search/all_9.js +605 -605
- package/SVF-doxygen/html/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/html/search/all_c.js +114 -114
- package/SVF-doxygen/html/html/search/all_d.js +196 -196
- package/SVF-doxygen/html/html/search/all_e.js +205 -205
- package/SVF-doxygen/html/html/search/all_f.js +116 -116
- package/SVF-doxygen/html/html/search/classes_0.js +26 -26
- package/SVF-doxygen/html/html/search/classes_1.js +9 -9
- package/SVF-doxygen/html/html/search/classes_10.js +73 -73
- package/SVF-doxygen/html/html/search/classes_11.js +15 -15
- package/SVF-doxygen/html/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/html/search/classes_14.js +14 -14
- package/SVF-doxygen/html/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/html/search/classes_2.js +76 -76
- package/SVF-doxygen/html/html/search/classes_3.js +35 -35
- package/SVF-doxygen/html/html/search/classes_4.js +8 -8
- package/SVF-doxygen/html/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/html/search/classes_6.js +98 -98
- package/SVF-doxygen/html/html/search/classes_7.js +33 -33
- package/SVF-doxygen/html/html/search/classes_8.js +56 -56
- package/SVF-doxygen/html/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/html/search/classes_d.js +18 -18
- package/SVF-doxygen/html/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/html/search/defines_1.js +2 -2
- package/SVF-doxygen/html/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/html/search/defines_3.js +20 -20
- package/SVF-doxygen/html/html/search/defines_4.js +3 -3
- package/SVF-doxygen/html/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/html/search/defines_c.js +3 -3
- package/SVF-doxygen/html/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/html/search/defines_e.js +6 -6
- package/SVF-doxygen/html/html/search/defines_f.js +3 -3
- package/SVF-doxygen/html/html/search/enums_0.js +3 -3
- package/SVF-doxygen/html/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/html/search/enums_4.js +3 -3
- package/SVF-doxygen/html/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
- package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
- package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -36
- package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/html/search/enumvalues_5.js +47 -47
- package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
- package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -15
- package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
- package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
- package/SVF-doxygen/html/html/search/files_0.js +13 -13
- package/SVF-doxygen/html/html/search/files_1.js +7 -7
- package/SVF-doxygen/html/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/html/search/files_2.js +49 -49
- package/SVF-doxygen/html/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/html/search/files_4.js +5 -5
- package/SVF-doxygen/html/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/html/search/files_6.js +9 -9
- package/SVF-doxygen/html/html/search/files_7.js +14 -14
- package/SVF-doxygen/html/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/html/search/files_b.js +2 -2
- package/SVF-doxygen/html/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/html/search/functions_0.js +6 -6
- package/SVF-doxygen/html/html/search/functions_1.js +349 -348
- package/SVF-doxygen/html/html/search/functions_10.js +139 -139
- package/SVF-doxygen/html/html/search/functions_11.js +126 -126
- package/SVF-doxygen/html/html/search/functions_12.js +274 -273
- package/SVF-doxygen/html/html/search/functions_13.js +56 -56
- package/SVF-doxygen/html/html/search/functions_14.js +38 -38
- package/SVF-doxygen/html/html/search/functions_15.js +71 -71
- package/SVF-doxygen/html/html/search/functions_16.js +29 -29
- package/SVF-doxygen/html/html/search/functions_17.js +2 -2
- package/SVF-doxygen/html/html/search/functions_18.js +169 -169
- package/SVF-doxygen/html/html/search/functions_2.js +82 -82
- package/SVF-doxygen/html/html/search/functions_3.js +252 -251
- package/SVF-doxygen/html/html/search/functions_4.js +71 -71
- package/SVF-doxygen/html/html/search/functions_5.js +51 -51
- package/SVF-doxygen/html/html/search/functions_6.js +58 -58
- package/SVF-doxygen/html/html/search/functions_7.js +822 -819
- package/SVF-doxygen/html/html/search/functions_8.js +143 -143
- package/SVF-doxygen/html/html/search/functions_9.js +425 -425
- package/SVF-doxygen/html/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/html/search/functions_c.js +24 -24
- package/SVF-doxygen/html/html/search/functions_d.js +77 -77
- package/SVF-doxygen/html/html/search/functions_e.js +34 -34
- package/SVF-doxygen/html/html/search/functions_f.js +56 -56
- package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/html/search/related_0.js +2 -2
- package/SVF-doxygen/html/html/search/related_1.js +1 -1
- package/SVF-doxygen/html/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/html/search/related_7.js +4 -4
- package/SVF-doxygen/html/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/html/search/related_c.js +1 -1
- package/SVF-doxygen/html/html/search/related_d.js +11 -11
- package/SVF-doxygen/html/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
- package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
- package/SVF-doxygen/html/html/search/typedefs_10.js +60 -60
- package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
- package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
- package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
- package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
- package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
- package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
- package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
- package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
- package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
- package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/html/search/variables_0.js +147 -147
- package/SVF-doxygen/html/html/search/variables_1.js +75 -75
- package/SVF-doxygen/html/html/search/variables_10.js +97 -97
- package/SVF-doxygen/html/html/search/variables_11.js +46 -46
- package/SVF-doxygen/html/html/search/variables_12.js +92 -92
- package/SVF-doxygen/html/html/search/variables_13.js +75 -75
- package/SVF-doxygen/html/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/html/search/variables_15.js +48 -48
- package/SVF-doxygen/html/html/search/variables_16.js +9 -9
- package/SVF-doxygen/html/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/html/search/variables_18.js +2 -2
- package/SVF-doxygen/html/html/search/variables_2.js +34 -34
- package/SVF-doxygen/html/html/search/variables_3.js +141 -141
- package/SVF-doxygen/html/html/search/variables_4.js +55 -55
- package/SVF-doxygen/html/html/search/variables_5.js +38 -38
- package/SVF-doxygen/html/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/html/search/variables_7.js +33 -33
- package/SVF-doxygen/html/html/search/variables_8.js +7 -7
- package/SVF-doxygen/html/html/search/variables_9.js +77 -77
- package/SVF-doxygen/html/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/html/search/variables_d.js +56 -56
- package/SVF-doxygen/html/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/html/search/variables_f.js +30 -30
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +8 -8
- package/package.json +1 -1
- package/svf/include/AbstractExecution/SVFIR2ItvExeState.h +14 -0
- package/svf/include/MemoryModel/AccessPath.h +6 -0
- package/svf/include/SVFIR/SVFStatements.h +10 -0
- package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +154 -75
- package/svf/lib/MemoryModel/AccessPath.cpp +39 -0
- package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +17 -0
|
@@ -173,108 +173,187 @@ SVFIR2ItvExeState::VAddrs SVFIR2ItvExeState::getGepObjAddress(u32_t pointer, s32
|
|
|
173
173
|
return ret;
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
std::pair<s32_t, s32_t> SVFIR2ItvExeState::
|
|
176
|
+
std::pair<s32_t, s32_t> SVFIR2ItvExeState::getBytefromGepTypePair(const AccessPath::VarAndGepTypePair& gep_pair, const GepStmt *gep, s32_t elemBytesize)
|
|
177
177
|
{
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
s32_t
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
178
|
+
const SVFValue *value = gep_pair.first->getValue();
|
|
179
|
+
const SVFType *type = gep_pair.second;
|
|
180
|
+
const SVFConstantInt *op = SVFUtil::dyn_cast<SVFConstantInt>(value);
|
|
181
|
+
s32_t offsetLb = 0;
|
|
182
|
+
s32_t offsetUb = 0;
|
|
183
|
+
/// set largest byte offset is 0xFFFFFF in case of int32 overflow
|
|
184
|
+
s32_t maxFieldLimit = 0xFFFFFF;
|
|
185
|
+
/// offset is constant but stored in variable
|
|
186
|
+
if (op)
|
|
187
|
+
{
|
|
188
|
+
offsetLb = offsetUb = op->getSExtValue() >
|
|
189
|
+
maxFieldLimit? maxFieldLimit: op->getSExtValue();
|
|
190
|
+
}
|
|
191
|
+
else
|
|
188
192
|
{
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
if (op)
|
|
193
|
+
u32_t idx = _svfir->getValueNode(value);
|
|
194
|
+
IntervalValue &idxVal = _es[idx];
|
|
195
|
+
if (idxVal.isBottom() || idxVal.isTop())
|
|
196
|
+
return std::make_pair(0, maxFieldLimit);
|
|
197
|
+
// if idxVal is a concrete value
|
|
198
|
+
if (idxVal.is_numeral())
|
|
196
199
|
{
|
|
197
|
-
offsetLb = offsetUb =
|
|
200
|
+
offsetLb = offsetUb = idxVal.lb().getNumeral()>
|
|
201
|
+
maxFieldLimit? maxFieldLimit: idxVal.lb().getNumeral();
|
|
198
202
|
}
|
|
199
|
-
/// offset is variable, the concrete value isn't sure util runtime, and maybe not a concrete value.
|
|
200
|
-
/// e.g.
|
|
201
203
|
else
|
|
202
204
|
{
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
IntervalValue &idxVal = _es[idx];
|
|
206
|
-
if (idxVal.isBottom() || idxVal.isTop()) return std::make_pair(0, (s32_t)Options::MaxFieldLimit());
|
|
207
|
-
// if idxVal is a concrete value
|
|
208
|
-
if (idxVal.is_numeral())
|
|
209
|
-
{
|
|
210
|
-
offsetLb = offsetUb = idxVal.lb().getNumeral();
|
|
211
|
-
}
|
|
212
|
-
else
|
|
213
|
-
{
|
|
214
|
-
// if inxVal is an interval. we should make sure that idxVal.lb>0 && idxVal.ub<MaxFieldLimit
|
|
215
|
-
offsetLb = idxVal.lb().getNumeral() < 0 ? 0 : idxVal.lb().getNumeral();
|
|
216
|
-
offsetLb = idxVal.lb().getNumeral() > maxFieldLimit ? maxFieldLimit : offsetLb;
|
|
217
|
-
offsetUb = idxVal.ub().getNumeral() < 0 ? 0 : idxVal.ub().getNumeral();
|
|
218
|
-
offsetUb = idxVal.ub().getNumeral() > maxFieldLimit ? maxFieldLimit : offsetUb;
|
|
219
|
-
}
|
|
205
|
+
offsetLb = idxVal.lb().getNumeral()> maxFieldLimit? maxFieldLimit:idxVal.lb().getNumeral() * elemBytesize ;
|
|
206
|
+
offsetUb = idxVal.ub().getNumeral() > maxFieldLimit? maxFieldLimit:idxVal.ub().getNumeral() * elemBytesize;
|
|
220
207
|
}
|
|
221
|
-
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (type)
|
|
211
|
+
{
|
|
212
|
+
if (const SVFPointerType *pty = SVFUtil::dyn_cast<SVFPointerType>(type))
|
|
222
213
|
{
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
214
|
+
offsetLb = offsetLb * gep->getAccessPath().getElementNum(pty->getPtrElementType())* elemBytesize;
|
|
215
|
+
offsetUb = offsetUb * gep->getAccessPath().getElementNum(pty->getPtrElementType())* elemBytesize;
|
|
216
|
+
}
|
|
217
|
+
else
|
|
218
|
+
{
|
|
219
|
+
offsetLb = offsetLb * elemBytesize;
|
|
220
|
+
offsetUb = offsetUb * elemBytesize;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return {offsetLb, offsetUb};
|
|
224
|
+
}
|
|
231
225
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
226
|
+
|
|
227
|
+
std::pair<s32_t, s32_t> SVFIR2ItvExeState::getIndexfromGepTypePair(const AccessPath::VarAndGepTypePair& gep_pair, const GepStmt *gep)
|
|
228
|
+
{
|
|
229
|
+
const SVFValue *value = gep_pair.first->getValue();
|
|
230
|
+
const SVFType *type = gep_pair.second;
|
|
231
|
+
const SVFConstantInt *op = SVFUtil::dyn_cast<SVFConstantInt>(value);
|
|
232
|
+
s32_t offsetLb = 0;
|
|
233
|
+
s32_t offsetUb = 0;
|
|
234
|
+
s32_t maxFieldLimit = (s32_t)Options::MaxFieldLimit();
|
|
235
|
+
/// offset is constant but stored in variable
|
|
236
|
+
if (op)
|
|
237
|
+
{
|
|
238
|
+
offsetLb = offsetUb = op->getSExtValue() >
|
|
239
|
+
maxFieldLimit? maxFieldLimit: op->getSExtValue();
|
|
240
|
+
}
|
|
241
|
+
else
|
|
242
|
+
{
|
|
243
|
+
u32_t idx = _svfir->getValueNode(value);
|
|
244
|
+
//if (!inVarToIValTable(idx)) return std::make_pair(-1, -1);
|
|
245
|
+
IntervalValue &idxVal = _es[idx];
|
|
246
|
+
if (idxVal.isBottom() || idxVal.isTop())
|
|
247
|
+
return std::make_pair(0, (s32_t)Options::MaxFieldLimit());
|
|
248
|
+
// if idxVal is a concrete value
|
|
249
|
+
if (idxVal.is_numeral())
|
|
250
|
+
{
|
|
251
|
+
offsetLb = offsetUb = idxVal.lb().getNumeral()>
|
|
252
|
+
maxFieldLimit? maxFieldLimit: idxVal.lb().getNumeral();
|
|
253
|
+
}
|
|
254
|
+
else
|
|
255
|
+
{
|
|
256
|
+
offsetLb = idxVal.lb().getNumeral() < 0
|
|
257
|
+
? 0
|
|
258
|
+
: idxVal.lb().getNumeral();
|
|
259
|
+
offsetLb = idxVal.lb().getNumeral() > maxFieldLimit
|
|
260
|
+
? maxFieldLimit
|
|
261
|
+
: offsetLb;
|
|
262
|
+
offsetUb = idxVal.ub().getNumeral() < 0
|
|
263
|
+
? 0
|
|
264
|
+
: idxVal.ub().getNumeral();
|
|
265
|
+
offsetUb = idxVal.ub().getNumeral() > maxFieldLimit
|
|
266
|
+
? maxFieldLimit
|
|
267
|
+
: offsetUb;
|
|
241
268
|
}
|
|
269
|
+
}
|
|
242
270
|
|
|
271
|
+
if (type)
|
|
272
|
+
{
|
|
243
273
|
if (const SVFPointerType *pty = SVFUtil::dyn_cast<SVFPointerType>(type))
|
|
244
274
|
{
|
|
245
275
|
offsetLb = offsetLb * gep->getAccessPath().getElementNum(pty->getPtrElementType());
|
|
246
276
|
offsetUb = offsetUb * gep->getAccessPath().getElementNum(pty->getPtrElementType());
|
|
247
|
-
|
|
248
277
|
}
|
|
249
278
|
else
|
|
250
279
|
{
|
|
251
|
-
const std::vector<u32_t
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
280
|
+
const std::vector<u32_t>& so = SymbolTableInfo::SymbolInfo()
|
|
281
|
+
->getTypeInfo(type)
|
|
282
|
+
->getFlattenedElemIdxVec();
|
|
283
|
+
if (so.empty() || (u32_t)offsetUb >= so.size() ||
|
|
284
|
+
(u32_t)offsetLb >= so.size())
|
|
285
|
+
{
|
|
286
|
+
offsetLb = 0;
|
|
287
|
+
offsetUb = maxFieldLimit;
|
|
288
|
+
}
|
|
289
|
+
else
|
|
290
|
+
{
|
|
291
|
+
offsetLb =
|
|
292
|
+
SymbolTableInfo::SymbolInfo()->getFlattenedElemIdx(
|
|
293
|
+
type, offsetLb);
|
|
294
|
+
offsetUb =
|
|
295
|
+
SymbolTableInfo::SymbolInfo()->getFlattenedElemIdx(
|
|
296
|
+
type, offsetUb);
|
|
297
|
+
}
|
|
256
298
|
}
|
|
299
|
+
}
|
|
300
|
+
return {offsetLb, offsetUb};
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
std::pair<s32_t, s32_t> SVFIR2ItvExeState::getGepByteOffset(const GepStmt *gep, s32_t elemBytesize)
|
|
305
|
+
{
|
|
306
|
+
/// for instant constant index, e.g. gep arr, 1
|
|
307
|
+
if (gep->getOffsetVarAndGepTypePairVec().empty())
|
|
308
|
+
return std::make_pair(gep->getConstantFieldIdx(), gep->getConstantFieldIdx());
|
|
309
|
+
s32_t totalOffsetLb = 0;
|
|
310
|
+
s32_t totalOffsetUb = 0;
|
|
311
|
+
/// default value of MaxFieldLimit is 512
|
|
312
|
+
u32_t maxFieldLimit = 0xFFFFFF;
|
|
313
|
+
for (int i = gep->getOffsetVarAndGepTypePairVec().size() - 1; i >= 0; i--)
|
|
314
|
+
{
|
|
315
|
+
std::pair<s32_t, s32_t> offsetIdx = getBytefromGepTypePair(
|
|
316
|
+
gep->getOffsetVarAndGepTypePairVec()[i], gep, elemBytesize);
|
|
317
|
+
s32_t offsetLb = offsetIdx.first;
|
|
318
|
+
s32_t offsetUb = offsetIdx.second;
|
|
257
319
|
if ((long long) (totalOffsetLb + offsetLb) > maxFieldLimit)
|
|
258
|
-
{
|
|
259
320
|
totalOffsetLb = maxFieldLimit;
|
|
260
|
-
}
|
|
261
321
|
else
|
|
262
|
-
{
|
|
263
322
|
totalOffsetLb += offsetLb;
|
|
264
|
-
}
|
|
265
323
|
if ((long long) (totalOffsetUb + offsetUb) > maxFieldLimit)
|
|
266
|
-
{
|
|
267
324
|
totalOffsetUb = maxFieldLimit;
|
|
268
|
-
}
|
|
269
325
|
else
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
326
|
+
totalOffsetUb += offsetUb ;
|
|
327
|
+
}
|
|
328
|
+
return {totalOffsetLb, totalOffsetUb};
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
std::pair<s32_t, s32_t> SVFIR2ItvExeState::getGepOffset(const GepStmt *gep)
|
|
333
|
+
{
|
|
334
|
+
/// for instant constant index, e.g. gep arr, 1
|
|
335
|
+
if (gep->getOffsetVarAndGepTypePairVec().empty())
|
|
336
|
+
return std::make_pair(gep->getConstantFieldIdx(), gep->getConstantFieldIdx());
|
|
337
|
+
s32_t totalOffsetLb = 0;
|
|
338
|
+
s32_t totalOffsetUb = 0;
|
|
339
|
+
/// default value of MaxFieldLimit is 512
|
|
340
|
+
u32_t maxFieldLimit = Options::MaxFieldLimit() - 1;
|
|
341
|
+
for (int i = gep->getOffsetVarAndGepTypePairVec().size() - 1; i >= 0; i--)
|
|
342
|
+
{
|
|
343
|
+
std::pair<s32_t, s32_t> offsetIdx = getIndexfromGepTypePair(
|
|
344
|
+
gep->getOffsetVarAndGepTypePairVec()[i], gep);
|
|
345
|
+
s32_t offsetLb = offsetIdx.first;
|
|
346
|
+
s32_t offsetUb = offsetIdx.second;
|
|
347
|
+
if ((long long) (totalOffsetLb + offsetLb) > maxFieldLimit)
|
|
348
|
+
totalOffsetLb = maxFieldLimit;
|
|
349
|
+
else
|
|
350
|
+
totalOffsetLb += offsetLb;
|
|
351
|
+
if ((long long) (totalOffsetUb + offsetUb) > maxFieldLimit)
|
|
352
|
+
totalOffsetUb = maxFieldLimit;
|
|
353
|
+
else
|
|
354
|
+
totalOffsetUb += offsetUb ;
|
|
273
355
|
}
|
|
274
|
-
|
|
275
|
-
offSetPair.first = totalOffsetLb;
|
|
276
|
-
offSetPair.second = totalOffsetUb;
|
|
277
|
-
return offSetPair;
|
|
356
|
+
return {totalOffsetLb, totalOffsetUb};
|
|
278
357
|
}
|
|
279
358
|
|
|
280
359
|
/*!
|
|
@@ -87,6 +87,45 @@ u32_t AccessPath::getElementNum(const SVFType* type) const
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
/// Return accumulated constant offset
|
|
91
|
+
///
|
|
92
|
+
/// "value" is the offset variable (must be a constant)
|
|
93
|
+
/// "type" is the location where we want to compute offset
|
|
94
|
+
/// Given a vector and elem byte size: [(value1,type1), (value2,type2), (value3,type3)], bytesize
|
|
95
|
+
/// totalConstByteOffset = ByteOffset(value1,type1) * ByteOffset(value2,type2) + ByteOffset(value3,type3)
|
|
96
|
+
/// For a pointer type (e.g., t1 is PointerType), we will retrieve the pointee type and times the offset, i.e., getElementNum(t1) X off1
|
|
97
|
+
APOffset AccessPath::computeConstantByteOffset(u32_t elemBytesize) const
|
|
98
|
+
{
|
|
99
|
+
assert(isConstantOffset() && "not a constant offset");
|
|
100
|
+
|
|
101
|
+
if(offsetVarAndGepTypePairs.empty())
|
|
102
|
+
return getConstantFieldIdx() * elemBytesize;
|
|
103
|
+
|
|
104
|
+
APOffset totalConstOffset = 0;
|
|
105
|
+
for(int i = offsetVarAndGepTypePairs.size() - 1; i >= 0; i--)
|
|
106
|
+
{
|
|
107
|
+
const SVFValue* value = offsetVarAndGepTypePairs[i].first->getValue();
|
|
108
|
+
const SVFType* type = offsetVarAndGepTypePairs[i].second;
|
|
109
|
+
const SVFConstantInt* op = SVFUtil::dyn_cast<SVFConstantInt>(value);
|
|
110
|
+
assert(op && "not a constant offset?");
|
|
111
|
+
if(type==nullptr)
|
|
112
|
+
{
|
|
113
|
+
totalConstOffset += op->getSExtValue() * elemBytesize;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if(const SVFPointerType* pty = SVFUtil::dyn_cast<SVFPointerType>(type))
|
|
118
|
+
totalConstOffset += op->getSExtValue() * getElementNum(pty->getPtrElementType()) * elemBytesize;
|
|
119
|
+
else
|
|
120
|
+
{
|
|
121
|
+
APOffset offset = op->getSExtValue();
|
|
122
|
+
// if getByteOffset is false, it will retrieve flatten idx
|
|
123
|
+
totalConstOffset += offset * elemBytesize;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return totalConstOffset;
|
|
127
|
+
}
|
|
128
|
+
|
|
90
129
|
/// Return accumulated constant offset
|
|
91
130
|
///
|
|
92
131
|
/// "value" is the offset variable (must be a constant)
|
|
@@ -377,6 +377,23 @@ std::vector<const Function *> getCalledFunctions(const Function *F);
|
|
|
377
377
|
std::vector<std::string> getFunAnnotations(const Function* fun);
|
|
378
378
|
void removeFunAnnotations(std::vector<Function*>& removedFuncList);
|
|
379
379
|
|
|
380
|
+
inline u32_t SVFType2ByteSize(const SVFType* type)
|
|
381
|
+
{
|
|
382
|
+
const llvm::Type* llvm_rhs = LLVMModuleSet::getLLVMModuleSet()->getLLVMType(type);
|
|
383
|
+
u32_t llvm_rhs_size = LLVMUtil::getTypeSizeInBytes(llvm_rhs->getPointerElementType());
|
|
384
|
+
u32_t llvm_elem_size = -1;
|
|
385
|
+
if (llvm_rhs->getPointerElementType()->isArrayTy() && llvm_rhs_size > 0)
|
|
386
|
+
{
|
|
387
|
+
size_t array_len = llvm_rhs->getPointerElementType()->getArrayNumElements();
|
|
388
|
+
llvm_elem_size = llvm_rhs_size / array_len;
|
|
389
|
+
}
|
|
390
|
+
else
|
|
391
|
+
{
|
|
392
|
+
llvm_elem_size =llvm_rhs_size;
|
|
393
|
+
}
|
|
394
|
+
return llvm_elem_size;
|
|
395
|
+
}
|
|
396
|
+
|
|
380
397
|
inline void removeUnusedFuncsAndAnnotations(std::vector<Function*> removedFuncList)
|
|
381
398
|
{
|
|
382
399
|
/// Remove unused function annotations in extapi.bc
|