Bug 27440 - [dwz, dwarf5] Add --dwarf-5 flag to generate .debug_sup, ref_sup and strp_sup
Summary: [dwz, dwarf5] Add --dwarf-5 flag to generate .debug_sup, ref_sup and strp_sup
Alias: None
Product: dwz
Classification: Unclassified
Component: default (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Nobody
URL: https://sourceware.org/pipermail/dwz/...
Depends on:
Blocks: 24726
  Show dependency treegraph
Reported: 2021-02-19 11:43 UTC by Mark Wielaard
Modified: 2021-02-26 23:26 UTC (History)
3 users (show)

See Also:
Last reconfirmed:


Note You need to log in before you can comment on or make changes to this bug.
Description Mark Wielaard 2021-02-19 11:43:28 UTC
Currently the dwz multi-files are really DWARF4 + GNU extensions. Since the format and references were formalized in the DWARF5 spec as DWARF Supplementary Object Files (DWARF5 section 7.3.6) it would be nice to have a way to generate this format with a --dwarf-5 flag:

- Use DW_FORM_ref_sup[48] and DW_FORM_strp_sup instead of
  DW_FORM_GNU_ref_alt and DW_FORM_GNU_strp_alt

- Generate .debug_sup section (standardized variant of .gnu_debugaltlink)
Comment 1 Tom Tromey 2021-02-21 00:09:01 UTC
I found out today that gdb doesn't support these forms.
It also doesn't know about .debug_sup.
Comment 2 Jakub Jelinek 2021-02-21 00:29:11 UTC
I think no consumer does, because nothing was producing that.
Which is why it is produced under non-default switch now, so that consumers can be adapted and perhaps in 6 months or 12 months we can switch the default (in that case probably only if there were DWARF 5 CUs present, at least some).
Comment 3 Tom Tromey 2021-02-21 23:19:42 UTC
I sent a gdb patch to handle this.
Comment 4 Mark Wielaard 2021-02-26 23:26:28 UTC
commit 4e55da9f7700dda5936c7a486651674dbc782a7e
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Sat Feb 20 10:47:53 2021 +0100

    PR27440 - add --dwarf-5 support
    This adds --dwarf-5 support, so that dwz can emit standard DWARF 5
    Supplementary object files with .debug_sup section and debug info referring
    to those with .debug_sup section instead of .gnu.debugaltlink and standard
    DWARF 5 DW_FORM_*sup instead of the DW_FORM_GNU_*alt forms.
            * dwz.1: Document --dwarf-5 and -5 options.
            * dwz.c (enum debug_section_kind): Add DEBUG_SUP.
            (debug_sections): Add .debug_sup section entry.
            (multifile_name, multifile_relative): Adjust comment.
            (dwarf_5): New variable.
            (note_strp_offset2): Adjust function comment.  If dwarf_5, return
            DW_FORM_strp_sup instead of DW_FORM_GNU_strp_alt.
            (macro_eq, read_macro, optimize_write_macro, handle_macro): Use
            standard DWARF 5 DW_MACRO_* names instead of their DW_MACRO_GNU_*
            (write_macro): Likewise.  Handle DW_FORM_strp_sup.
            (build_abbrevs_for_die): If dwarf_5, use DW_FORM_ref_sup4 instead of
            (write_unit_die): Handle DW_FORM_strp_sup.
            (write_die): Handle DW_FORM_ref_sup4 and DW_FORM_strp_sup.
            (read_dwarf): Fail if .debug_sup section is present, unless
            rd_multifile in dwarf_5 mode.
            (dwz): Write .debug_sup section instead of .gnu.debugaltlink if
            (optimize_multifile): Write .debug_sup section instead of
            (dwz_options): Add --dwarf-5 and -5 options.
            (dwz_multi_file_options_help): Mention .debug_sup section in -M
            description.  Add --dwarf-5 description.
            (main): Handle --dwarf-5 and -5 options.