Re: [DWARF5] Is debug_line.dwo parsing and handling correct in GDB

David Blaikie via Gdb <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <CAENS6EssAeOx+dCr3+R+WR2crCXst+8C42eqXH2Ftw0MZ_RZgQ@mail.gmail.com>
On Thu, Jun 17, 2021 at 12:57 AM Tomar, Sourabh Singh <
[email protected]> wrote:

> Hello Everyone,
>
>
>
> Recently while investigating
> https://sourceware.org/bugzilla/show_bug.cgi?id=27966 I stumbled upon the
>
> `.debug_line.dwo (AKA Specialized line table)` parsing part of the GDB.
>
> Glancing over it, it seems like the parsing of the Specialized line
> table(.debug_line.dwo) is limited by the presence of type units.
>
> However apart from type units there are other consumers of
> `.debug_line.dwo` such as `.debug_macro.dwo` for more context on this
>
> front please refer to following DWARFIssue:
> http://dwarfstd.org/ShowIssue.php?issue=200602.1
>
>
>
> Coming back to present situation, the question I have is the
> `.debug_line.dwo` section consumptions is Okay in GDB? If so, Can somebody
>
> provide a possible testing scenario. As of now trunk GCC((GCC) 12.0.0
> 20210514) does not produce type units.
>

For what it's worth: GCC does produce type units, at least so far as I know
- but what you might be hitting is that in DWARFv5 type units are in the
.debug_info[.dwo] section, not the .debug_types[.dwo] section - so the
absence of .debug_types section doesn't mean that type units aren't being
produced. (I don't have a tot gcc build - mine's a little older and doesn't
have some of the recent DWARFv5 work, I guess)

I can't speak for GDB's handling of .debug_line.dwo, though.


> Compilation tried:
>
> $ tot-gcc -fdebug-types-section -g macro.c
>
> $ tot-gcc -fdebug-types-section -gstrict-dwarf macro.c
>
>
>
> If GDB consumption of `.debug_line.dwo` is Okay, then how is it managing
> the primary line table `.debug_line`(containing the address to line
> mapping) part ?
>
> Does it parses the primary line table in a subsequent pass ? or the
> primary line table is parsed first then a second pass needed to accommodate
> information
>
> available in Specialized line table ?
>
>
>
> Please note: CLANG emits Specialized line table iff macro + split mode are
> enabled i.e
>
> ```
>
> $ clang -gdwarf-5 -gsplit-dwarf  -fdebug_macro macro.c
>
> $ llvm-readelf -S macro.dwo | egrep "debug"
>
> *  [ 2] .debug_macro.dwo  PROGBITS        0000000000000000 000040 0004f2
> 00   E  0   0  1*
>
>   [ 3] .debug_str_offsets.dwo PROGBITS   0000000000000000 000532 000580
> 00   E  0   0  1
>
>   [ 4] .debug_str.dwo    PROGBITS        0000000000000000 000ab2 002275 01
> MSE  0   0  1
>
>   [ 5] .debug_info.dwo   PROGBITS        0000000000000000 002d27 00003e
> 00   E  0   0  1
>
>   [ 6] .debug_abbrev.dwo PROGBITS        0000000000000000 002d65 00003f
> 00   E  0   0  1
>
> *  [ 7] .debug_line.dwo   PROGBITS        0000000000000000 002da4 000056
> 00   E  0   0  1*
>
> ```
>
>
>
> Any pointer, much appreciated!
>
>
>
> Thanks,
>
> Sourabh.
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.