[PATCH][gdb] Fix missing symtab includes
Simon Marchi
simark@simark.ca
Sat Mar 28 16:32:47 GMT 2020
On 2020-03-27 4:49 p.m., Tom de Vries wrote:
> Hi,
>
> Consider hello.h:
> ...
> inline static const char*
> foo (void)
> {
> return "foo";
> }
> ...
> and hello.c:
> ...
> #include <stdio.h>
> #include "hello.h"
>
> int
> main (void)
> {
> printf ("hello: %s\n", foo ());
> return 0;
> }
> ...
> compiled with -g, and dwz-compressed:
> ...
> $ gcc -g hello.c
> $ dwz a.out
> ...
>
> When breaking on foo and printing the symbol tables, we have two includes for
> the hello.c compunit_symtab, representing two imported partial units:
> ...
> $ gdb -iex "set language c" -batch a.out -ex "b foo" -ex "maint info symtabs"
> Breakpoint 1 at 0x40050b: file hello.h, line 4.
> ...
> { ((struct compunit_symtab *) 0x38fa890)
> debugformat DWARF 2
> producer GNU C11 7.5.0 -mtune=generic -march=x86-64 -g
> dirname /data/gdb_versions/devel
> blockvector ((struct blockvector *) 0x39af9f0)
> user ((struct compunit_symtab *) (null))
> ( includes
> ((struct compunit_symtab *) 0x39afb10)
> ((struct compunit_symtab *) 0x39b00c0)
> )
> { symtab hello.c ((struct symtab *) 0x38fa940)
> fullname (null)
> linetable ((struct linetable *) 0x39afa80)
> }
> ...
I am not able to reproduce this. In both cases, I don't get the `includes`.
What transformation is dwz expected to do on the binary? Here, it looks like
it just compressed the debug info a little bit, changing the addresses, but the
general structure was untouched.
I'm using the latest git version of dwz (commit b7111689a2ccec2f57343f1051ec8f1df5e89e5c).
Simon
More information about the Gdb-patches
mailing list