diff options
author | Tom de Vries <tdevries@suse.de> | 2020-02-09 13:32:26 +0100 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2020-02-09 13:32:26 +0100 |
commit | 2e9276136b1c2f54e01a921b3911e40297f16938 (patch) | |
tree | 5944a6e64fd317e0d2a8d23d34fe7514b5db7a76 /gdb/dwarf2 | |
parent | 46ce2b6f4c467b6fde846e7fe13cd09c079b6e44 (diff) | |
download | gdb-2e9276136b1c2f54e01a921b3911e40297f16938.zip gdb-2e9276136b1c2f54e01a921b3911e40297f16938.tar.gz gdb-2e9276136b1c2f54e01a921b3911e40297f16938.tar.bz2 |
[gdb] Mention CU offset for <artifical> if verbose
Say we're debugging a test-case with CUs with name "<artificial>", meaning
not originating from a single file compilation, and use the verbose setting:
...
$ gdb -iex "set verbose on" -batch cc1
Reading symbols from cc1...
Reading in symbols for <artificial>... \
and /tmp/trunk/gcc/attribs.c... \
...
and /tmp/trunk/gcc/tree-ssa-reassoc.c... \
done.
...
From the "/tmp/trunk/gcc/attribs.c" message, it's clear which CU is loaded. But
that's not the case for the "<artificial>" message.
The message uses the filename field of struct partial_symtab, which is
documented like this:
...
/* Name of the source file which this partial_symtab defines,
or if the psymtab is anonymous then a descriptive name for
debugging purposes, or "". It must not be NULL. */
...
So, fix this by setting the filename field to a more descriptive name than
"<artificial>", by appending the CU offset.
This way, we print instead:
...
$ gdb -iex "set verbose on" -batch cc1
Reading symbols from cc1...
Reading in symbols for <artificial>@0x41146d9 \
and /tmp/trunk/gcc/attribs.c... \
... \
and /tmp/trunk/gcc/tree-ssa-reassoc.c... \
done.
...
Build and reg-tested on x86_64-linux.
gdb/ChangeLog:
2020-02-09 Tom de Vries <tdevries@suse.de>
* dwarf2read.c (process_psymtab_comp_unit_reader): Append CU offset to
filename if it matches "<artificial>".
Diffstat (limited to 'gdb/dwarf2')
-rw-r--r-- | gdb/dwarf2/read.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index d1622dc..9e66e61 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -7252,9 +7252,17 @@ process_psymtab_comp_unit_reader (const struct die_reader_specs *reader, prepare_one_comp_unit (cu, comp_unit_die, pretend_language); /* Allocate a new partial symbol table structure. */ + gdb::unique_xmalloc_ptr<char> debug_filename; + static const char artificial[] = "<artificial>"; filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu); if (filename == NULL) filename = ""; + else if (strcmp (filename, artificial) == 0) + { + debug_filename.reset (concat (artificial, "@", + sect_offset_str (per_cu->sect_off), NULL)); + filename = debug_filename.get (); + } pst = create_partial_symtab (per_cu, filename); |