[PATCH] readelf: print split CUs when given --debug-dump=info+

Mark Wielaard mark@klomp.org
Thu May 24 15:38:00 GMT 2018


On Sun, 2018-05-20 at 21:28 +0200, Mark Wielaard wrote:
> To show the difference between "regular" CUs and split CUs print
> offsets and references between { and } instead of [ and ].
> 
> When --debug-dump=info+ is given (implied by -w) instead of
> --debug-dump=info any skeleton unit will be immediately followed
> by the corresponding split compile unit (from the .dwo file).
> 
> DWARF section [27] '.debug_info' at offset 0x1075:
>  [Offset]
>  Compilation unit at offset 0:
>  Version: 4, Abbreviation section offset: 0, Address size: 8, Offset
> size: 4
>  Unit type: skeleton (4), Unit id: 0xc152129eb4b99599
>  [     b]  compile_unit         abbrev: 1
>            ranges               (sec_offset) range list [     0]
>            low_pc               (addr) +000000000000000000
>            stmt_list            (sec_offset) 0
>            GNU_dwo_name         (strp) "foo.dwo"
>            comp_dir             (strp) "/tmp"
>            GNU_pubnames         (flag_present) yes
>            GNU_addr_base        (sec_offset) 0
>            GNU_dwo_id           (data8) 0xc152129eb4b99599
>            GNU_ranges_base      (sec_offset) 0
>  Split compilation unit at offset 0:
>  Version: 4, Abbreviation section offset: 0, Address size: 8, Offset
> size: 4
>  Unit type: skeleton (4), Unit id: 0xc152129eb4b99599
>  {     b}  compile_unit         abbrev: 1
>            producer             (GNU_str_index) "GNU C11 7.3.0
> -gsplit-dwarf -g"
>            language             (data1) C99 (12)
>            name                 (GNU_str_index) "foo.c"
>            comp_dir             (GNU_str_index) "/tmp"
>            GNU_dwo_id           (data8) 0xc152129eb4b99599
>  {    18}    subprogram           abbrev: 2
>              external             (flag_present) yes
>              name                 (GNU_str_index) "main"
>              decl_file            (data1) foo.c (1)
>              decl_line            (data1) 1
>              type                 (ref4) {    2b}
>              high_pc              (data8) 3
>              frame_base           (exprloc)
>               [ 0] call_frame_cfa
>              GNU_all_call_sites   (flag_present) yes
>  {    2b}    base_type            abbrev: 3
>              byte_size            (data1) 4
>              encoding             (data1) signed (5)
>              name                 (string) "int"

Pushed to master.


More information about the Elfutils-devel mailing list