bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/27387] [readelf] Support -ggdb3 -gsplit-dwarf output


From: vries at gcc dot gnu.org
Subject: [Bug binutils/27387] [readelf] Support -ggdb3 -gsplit-dwarf output
Date: Mon, 01 Mar 2021 14:23:05 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=27387

--- Comment #15 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #14)
> ...
>         .section       
> .debug_macro.dwo,"G",@progbits,wm4.stdcpredef.h.19.006d14bbbe0dc07ba9\
> b1ce3fdc8e40d3,comdat
> .Ldebug_macro1:
>         .value  0x4     # DWARF macro version number
>         .byte   0       # Flags: 32-bit
>         .byte   0x5     # Define macro strp
>         .uleb128 0x13   # At line number 19
>         .uleb128 0x2a4  # The macro: "_STDC_PREDEF_H 1"
> ...

I'm starting to think this is a gcc bug.  At "DW_MACRO_define_strp,
DW_MACRO_undef_strp" we have:
...
A DW_MACRO_define_strp or DW_MACRO_undef_strp entry has two
operands. The first operand encodes the source line number of the #define or
#undef macro directive. The second operand consists of an offset into a string
table contained in the .debug_str section of the object file. The size of the
operand is given in the header offset_size_flag field.
...

There doesn't seem to be anything that states the line number needs to be a
uleb.  But the second operand shouldn't be a uleb.

Readelf correctly does:
...
            case DW_MACRO_define_strp:
              READ_ULEB (lineno, curr, end);
              SAFE_BYTE_GET_AND_INC (offset, curr, offset_size, end);
...

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]