Patchwork Add DWZ DWARF multifile extensions to dwarf2.{def,h}

login
register
mail settings
Submitter Jakub Jelinek
Date June 8, 2012, 6:37 p.m.
Message ID <20120608183729.GD24904@tucnak.redhat.com>
Download mbox | patch
Permalink /patch/163841/
State New
Headers show

Comments

Jakub Jelinek - June 8, 2012, 6:37 p.m.
Hi!

This patch adds dwz -m DWARF extensions.
See http://www.dwarfstd.org/ShowIssue.php?issue=120604.1&type=open
for more details and
http://sourceware.org/git/?p=dwz.git;a=shortlog;h=refs/heads/multifile
for the tool that creates it.  Compared to the DWARF5 proposal, this
is so far implemented as a GNU extension, using different form values.
In the GNU implementation, there is a .gnu_debugaltlink section, which
contains a zero terminated filename (should be either absolute filename,
or filename relative to the directory in which the file with
.gnu_debugaltlink section resides) followed by build-id (SHA1 checksum
of the debugging sections).
Tom Tromey wrote gdb support for these extensions at
http://sources.redhat.com/git/?p=archer.git;a=shortlog;h=refs/heads/archer-tromey-dwz-multifile

Ok for trunk?

2012-06-08  Jakub Jelinek  <jakub@redhat.com>

	* dwarf2.def (DW_FORM_GNU_ref_alt, DW_FORM_GNU_strp_alt): New
	forms.
	* dwarf2.h (enum dwarf_macro_record_type): Add
	DW_MACRO_GNU_define_indirect_alt, DW_MACRO_GNU_undef_indirect_alt
	and DW_MACRO_GNU_transparent_include_alt.


	Jakub
Jason Merrill - June 8, 2012, 6:47 p.m.
OK.

Jason
Cary Coutant - June 8, 2012, 6:48 p.m.
> +/* Extensions for DWZ multifile.
> +   See http://www.dwarfstd.org/ShowIssue.php?issue=120604.1&type=open .  */

I'd suggest repeating this comment below:

> --- include/dwarf2.h.jj 2012-05-09 20:15:32.000000000 +0200
> +++ include/dwarf2.h    2012-05-14 12:16:37.414204203 +0200
> @@ -333,6 +333,9 @@ enum dwarf_macro_record_type
>     DW_MACRO_GNU_define_indirect = 5,
>     DW_MACRO_GNU_undef_indirect = 6,
>     DW_MACRO_GNU_transparent_include = 7,
> +    DW_MACRO_GNU_define_indirect_alt = 8,
> +    DW_MACRO_GNU_undef_indirect_alt = 9,
> +    DW_MACRO_GNU_transparent_include_alt = 10,
>     DW_MACRO_GNU_lo_user = 0xe0,
>     DW_MACRO_GNU_hi_user = 0xff
>   };

-cary

Patch

--- include/dwarf2.def.jj	2012-05-02 20:33:43.000000000 +0200
+++ include/dwarf2.def	2012-05-10 08:23:55.912919813 +0200
@@ -205,6 +205,10 @@  DW_FORM (DW_FORM_ref_sig8, 0x20)
 /* Extensions for Fission.  See http://gcc.gnu.org/wiki/DebugFission.  */
 DW_FORM (DW_FORM_GNU_addr_index, 0x1f01)
 DW_FORM (DW_FORM_GNU_str_index, 0x1f02)
+/* Extensions for DWZ multifile.
+   See http://www.dwarfstd.org/ShowIssue.php?issue=120604.1&type=open .  */
+DW_FORM (DW_FORM_GNU_ref_alt, 0x1f20)
+DW_FORM (DW_FORM_GNU_strp_alt, 0x1f21)
 DW_END_FORM
 
 DW_FIRST_AT (DW_AT_sibling, 0x01)
--- include/dwarf2.h.jj	2012-05-09 20:15:32.000000000 +0200
+++ include/dwarf2.h	2012-05-14 12:16:37.414204203 +0200
@@ -333,6 +333,9 @@  enum dwarf_macro_record_type
     DW_MACRO_GNU_define_indirect = 5,
     DW_MACRO_GNU_undef_indirect = 6,
     DW_MACRO_GNU_transparent_include = 7,
+    DW_MACRO_GNU_define_indirect_alt = 8,
+    DW_MACRO_GNU_undef_indirect_alt = 9,
+    DW_MACRO_GNU_transparent_include_alt = 10,
     DW_MACRO_GNU_lo_user = 0xe0,
     DW_MACRO_GNU_hi_user = 0xff
   };