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 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)
I found out today that gdb doesn't support these forms.
It also doesn't know about .debug_sup.
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).
I sent a gdb patch to handle this.
Author: Jakub Jelinek <firstname.lastname@example.org>
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.