[patch] Add split DWARF (Fission) support to readelf/objdump

Cary Coutant ccoutant@google.com
Fri May 11 01:57:00 GMT 2012


Ping?

-cary

On Fri, May 4, 2012 at 3:56 PM, Cary Coutant <ccoutant@google.com> wrote:
> This patch adds support to readelf and objdump for the split debug
> (Fission) extensions to DWARF:
>
>   http://gcc.gnu.org/wiki/DebugFission
>
> In summary, we've added the ability to dump all the .dwo debug
> sections (most of which have the same format as the corresponding
> regular debug sections), and the new DW_FORM, DW_OP, and DW_AT codes
> that we've added. The --dwarf-check option is a new option to enable
> some of the DWARF consistency checks that don't always work when not
> all sections are present in the same file.
>
> Tested on x86_64, with a compiler that generates split dwarf files.
> (The GCC patches are about ready for submission.)
>
> OK to commit?
>
> -cary
>
>
>
> 2012-05-04  Sterling Augustine  <saugustine@google.com>
>            Cary Coutant  <ccoutant@google.com>
>
> binutils/
>
>        * doc/binutils.texi: Add --dwarf-check option.
>        * dwarf.c (dwarf_check): New global flag.
>        (fetch_indexed_string): New function.
>        (fetch_indexed_value): New function.
>        (get_FORM_name): Add DW_FORM_GNU_str_index and DW_FORM_GNU_addr_index.
>        (decode_location_expression): Add DW_OP_GNU_addr_index.
>        (read_and_display_attr_value): Add DW_FORM_GNU_str_index,
>        DW_FORM_GNU_addr_index, DW_AT_GNU_addr_base, and DW_AT_GNU_ranges_base.
>        (get_AT_name): Add new attributes for Fission.
>        (process_debug_info): Load new debug sections for Fission.
>        (load_debug_info): Check for .debug_info.dwo section.
>        (display_loc_list, display_loc_list_dwo): New functions.
>        (display_debug_loc): Move logic to above two functions.
>        (display_debug_info): Choose abbrev section based on info section.
>        (display_debug_types): Likewise.
>        (display_trace_info): Likewise.
>        (comp_addr_base): New function.
>        (display_debug_addr): New function.
>        (display_debug_str_offsets): New function.
>        (display_debug_ranges): Allow missing range lists.  Suppress
>        diagnostics if dwarf_check not set.
>        (debug_displays): Add column to select abbrev section.
>        * dwarf.h (enum dwarf_section_display_enum): Add new debug sections
>        for Fission.
>        (struct dwarf_section): Add abbrev_sec field.
>        (struct dwarf_section_display): New type.
>        (debug_info): Add addr_base, ranges_base fields.
>        (dwarf_check): New global variable.
>        * objdump.c (usage): Add --dwarf-check option.
>        (enum option_values): Add OPTION_DWARF_CHECK.
>        (long_options): Add --dwarf-check.
>        (main): Likewise.
>        * readelf.c (OPTION_DWARF_CHECK): New macro.
>        (options): Add --dwarf-check.
>        (parse_args): Likewise.
>        (process_section_headers): Use const_strneq instead of
>        streq.



More information about the Binutils mailing list