diff options
author | Nick Clifton <nickc@redhat.com> | 2019-02-22 10:36:24 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2019-02-22 10:36:24 +0000 |
commit | 24841daa74f092f7c5639ee8f1fb303c7694dee7 (patch) | |
tree | e1bc310ca5ad66731c0b21496c4c3a093c7b89b8 /binutils/objdump.c | |
parent | 83f43c8344d752fb8266b4c4e2f42cf4e5a2f86e (diff) | |
download | gdb-24841daa74f092f7c5639ee8f1fb303c7694dee7.zip gdb-24841daa74f092f7c5639ee8f1fb303c7694dee7.tar.gz gdb-24841daa74f092f7c5639ee8f1fb303c7694dee7.tar.bz2 |
Extend readelf and objdump so that they will display and follow multiple links to separate debug information files.
PR 23843
* dwarf.h (struct separate_info): New structure for containing
information on separate debug info files.
* dwarf.c (struct dwo_info): New structure for containing dwo
links.
(first_dwo_info): Chain of dwo_info structures.
(first_separate_file): Chain of separate_info structures.
(separate_debug_file, separate_debug_filename): Delete.
(fetch_alt_indirect_string): Scan all separate debug info files
for the requested string.
(add_dwo_info): New function.
(add_dwo_name): New function.
(add_dwo_dir): New function.
(add_dwo_id: New function.
(free_dwo_info): New function.
(read_and_display_attr_value): Store DWO data using the new
functions.
(load_debug_section_with_follow): If necessary, scan the list of
separate debug info files for the requested section.
(add_separate_debug_file): New function.
(load_separate_debug_info): Call add_separate_debug_file to store
the information on the newly loaded file.
(load_dwo_file): Likewise.
(load_separate_debif_file): Rename to load_separate_debug_files.
Change return type to boolean. If following links then attempt to
load all separate debug info files, not just the first one.
(free_debug_memory): Release memory in dwo_info and separate_info
chains.
* objdump.c (dump_dwarf): Iterate over all loaded debg info files.
* readelf.c (process_object): Likewise.
* doc/debug.options.texi: Update descriptions of links and
follow-links options.
* testsuite/binutils-all/objdump.WK2: Update expected output.
* testsuite/binutils-all/readelf.k2: Likewise.
* NEWS: Announce the new feature.
Diffstat (limited to 'binutils/objdump.c')
-rw-r--r-- | binutils/objdump.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/binutils/objdump.c b/binutils/objdump.c index 7d0c6a4..19365b6 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -2882,7 +2882,7 @@ dump_dwarf_section (bfd *abfd, asection *section, static void dump_dwarf (bfd *abfd) { - bfd * separates; + bfd_boolean have_separates; is_relocatable = (abfd->flags & (EXEC_P | DYNAMIC)) == 0; @@ -2946,12 +2946,19 @@ dump_dwarf (bfd *abfd) break; } - separates = load_separate_debug_file (abfd, bfd_get_filename (abfd)); + have_separates = load_separate_debug_files (abfd, bfd_get_filename (abfd)); bfd_map_over_sections (abfd, dump_dwarf_section, NULL); - if (separates) - bfd_map_over_sections (separates, dump_dwarf_section, NULL); + if (have_separates) + { + separate_info * i; + + for (i = first_separate_info; i != NULL; i = i->next) + bfd_map_over_sections (i->handle, dump_dwarf_section, NULL); + + /* The file handles are closed by the call to free_debug_memory() below. */ + } free_debug_memory (); } |