On Sun, Oct 30, 2016 at 08:31:47PM +0100, Jan Kratochvil wrote:
> On Fri, 21 Oct 2016 21:32:42 +0200, Jakub Jelinek wrote:
> > This patch changes the .debug_info headers to follow the current
> > specification (I still hope the useless padding1/padding2 fields will be
> > removed), and also changes the -gsplit-dwarf stuff to move dwo_id into
> > the header and use DW_UT_{skeleton,split_*}.
>
> During GDB consumer patch testing I needed this fix on top of your patch.
Thanks for noticing it. As I had no consumer, all I did was eyeballing
-gdwarf-5 -dA output, and haven't noticed this.
> diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
> index 7c6a9e9..1c0ca35 100644
> --- a/gcc/dwarf2out.c
> +++ b/gcc/dwarf2out.c
> @@ -2977,7 +2977,8 @@ skeleton_chain_node;
>
> /* Fixed size portion of the DWARF compilation unit header. */
> #define DWARF_COMPILE_UNIT_HEADER_SIZE \
> - (DWARF_INITIAL_LENGTH_SIZE + DWARF_OFFSET_SIZE + 3)
> + (DWARF_INITIAL_LENGTH_SIZE + DWARF_OFFSET_SIZE \
> + + (dwarf_version < 5 ? 3 : 4 + 8 + DWARF_OFFSET_SIZE))
I'd use DWARF_TYPE_SIGNATURE_SIZE instead of the 8 to match the define
below it.
> /* Fixed size portion of the DWARF comdat type unit header. */
> #define DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE \
And this define needs adjusting too.
I still hope we can get rid of the useless padding for the most common
DW_UT_* types, I've raised it on dwarf workgroup and got some positive
reactions, but will now file it officially as public review issue.
2016-10-31 Jan Kratochvil <[email protected]>
Jakub Jelinek <[email protected]>
* dwarf2out.c (DWARF_COMPILE_UNIT_HEADER_SIZE): Adjust for -gdwarf-5.
(DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): Likewise.
--- gcc/dwarf2out.c.jj 2016-10-27 15:57:24.000000000 +0200
+++ gcc/dwarf2out.c 2016-10-31 10:12:20.338761079 +0100
@@ -2805,12 +2805,15 @@ skeleton_chain_node;
/* Fixed size portion of the DWARF compilation unit header. */
#define DWARF_COMPILE_UNIT_HEADER_SIZE \
- (DWARF_INITIAL_LENGTH_SIZE + DWARF_OFFSET_SIZE + 3)
+ (DWARF_INITIAL_LENGTH_SIZE + DWARF_OFFSET_SIZE \
+ + (dwarf_version >= 5 \
+ ? 4 + DWARF_TYPE_SIGNATURE_SIZE + DWARF_OFFSET_SIZE : 3))
/* Fixed size portion of the DWARF comdat type unit header. */
#define DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE \
- (DWARF_COMPILE_UNIT_HEADER_SIZE + DWARF_TYPE_SIGNATURE_SIZE \
- + DWARF_OFFSET_SIZE)
+ (DWARF_COMPILE_UNIT_HEADER_SIZE \
+ + (dwarf_version >= 5 \
+ ? 0 : DWARF_TYPE_SIGNATURE_SIZE + DWARF_OFFSET_SIZE))
/* Fixed size portion of public names info. */
#define DWARF_PUBNAMES_HEADER_SIZE (2 * DWARF_OFFSET_SIZE + 2)
Jakub