diff options
author | Tristan Gingold <gingold@adacore.com> | 2009-12-09 13:44:53 +0000 |
---|---|---|
committer | Tristan Gingold <gingold@adacore.com> | 2009-12-09 13:44:53 +0000 |
commit | 9cce227f8cd3081662b208e0067b23547afa5a83 (patch) | |
tree | 2676c5beecce6799109ec44556afd63f02fc6e68 /gdb/elfread.c | |
parent | be6f64938f985dfb0eaa2107b99f193bb865ce04 (diff) | |
download | gdb-9cce227f8cd3081662b208e0067b23547afa5a83.zip gdb-9cce227f8cd3081662b208e0067b23547afa5a83.tar.gz gdb-9cce227f8cd3081662b208e0067b23547afa5a83.tar.bz2 |
2009-12-02 Tristan Gingold <gingold@adacore.com>
* symfile.h (symbol_file_add_separate): New prototype.
(find_separate_debug_file_by_buildid): Ditto.
(find_separate_debug_file_by_debuglink): Ditto.
* symfile.c (reread_separate_symbols): Remove.
(find_separate_debug_file): Split into ...
(find_separate_debug_file_by_buildid): ... this and ...
(find_separate_debug_file_by_debuglink): ... this.
(symbol_file_add_with_addrs_or_offsets): Do not save orig_addrs.
Remove separate debug file handling.
(symbol_file_add_separate): New function.
(reread_symbols): Do not considere separate debug files, but free
them while handling their parent. Reindent.
* coffread.c (coff_symfile_read): Handle separate object file.
* elfread.c (elf_symfile_read): Ditto.
Diffstat (limited to 'gdb/elfread.c')
-rw-r--r-- | gdb/elfread.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gdb/elfread.c b/gdb/elfread.c index dd844fc..a47e687 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -737,6 +737,26 @@ elf_symfile_read (struct objfile *objfile, int symfile_flags) /* FIXME: kettenis/20030504: This still needs to be integrated with dwarf2read.c in a better way. */ dwarf2_build_frame_info (objfile); + + /* If the file has its own symbol tables it has no separate debug info. + `.dynsym'/`.symtab' go to MSYMBOLS, `.debug_info' goes to SYMTABS/PSYMTABS. + `.gnu_debuglink' may no longer be present with `.note.gnu.build-id'. */ + if (!objfile_has_partial_symbols (objfile)) + { + char *debugfile; + + debugfile = find_separate_debug_file_by_buildid (objfile); + + if (debugfile == NULL) + debugfile = find_separate_debug_file_by_debuglink (objfile); + + if (debugfile) + { + bfd *abfd = symfile_bfd_open (debugfile); + symbol_file_add_separate (abfd, symfile_flags, objfile); + xfree (debugfile); + } + } } /* This cleans up the objfile's deprecated_sym_stab_info pointer, and |