This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [patch] Add split DWARF (Fission) support to readelf/objdump
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.