diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-04-17 18:38:46 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-04-17 18:38:46 +0000 |
commit | 63524580f8372e38a6a62fd875a4252068c31150 (patch) | |
tree | 56284f865a15b9e590b606102dc1a086ba876571 /gdb/symfile.c | |
parent | 90359a167375927982fc3f675718044a491da759 (diff) | |
download | gdb-63524580f8372e38a6a62fd875a4252068c31150.zip gdb-63524580f8372e38a6a62fd875a4252068c31150.tar.gz gdb-63524580f8372e38a6a62fd875a4252068c31150.tar.bz2 |
bfd/
* elf64-ppc.c (ppc64_elf_get_synthetic_symtab): Do not check for
SEC_LOAD.
gdb/
Fix convert_code_addr_to_desc_addr for ppc64 files after eu-strip.
* elfread.c (elf_symfile_read): New variable synth_abfd, pass it to
bfd_get_synthetic_symtab.
* jit.c (jit_register_code): Pass NULL to the new parameter parent.
* machoread.c (macho_add_oso_symfile): Pass main_objfile to the new
parameter parent, remove the call to add_separate_debug_objfile.
* solib.c (solib_read_symbols): Pass NULL to the new parameter parent.
* symfile-mem.c (symbol_file_add_from_memory): Likewise.
* symfile.c (symbol_file_add_with_addrs_or_offsets): New parameter
parent, new comment for it, call add_separate_debug_objfile for it.
(symbol_file_add_separate): Pass objfile as the parameter parent,
remove the call to add_separate_debug_objfile.
(symbol_file_add_from_bfd): New parameter parent, pass it.
(symbol_file_add): Pass NULL to the new parameter parent.
* symfile.h (symbol_file_add_from_bfd): New parameter parent.
gdb/testsuite/
* gdb.base/eu-strip-infcall.c: New file.
* gdb.base/eu-strip-infcall.exp: New file.
Diffstat (limited to 'gdb/symfile.c')
-rw-r--r-- | gdb/symfile.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/gdb/symfile.c b/gdb/symfile.c index 4e1109e..cec6870 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -1067,6 +1067,9 @@ new_symfile_objfile (struct objfile *objfile, int add_flags) syms_from_objfile, above. ADDRS is ignored when SYMFILE_MAINLINE bit is set in ADD_FLAGS. + PARENT is the original objfile if ABFD is a separate debug info file. + Otherwise PARENT is NULL. + Upon success, returns a pointer to the objfile that was added. Upon failure, jumps back to command level (never returns). */ @@ -1076,7 +1079,7 @@ symbol_file_add_with_addrs_or_offsets (bfd *abfd, struct section_addr_info *addrs, struct section_offsets *offsets, int num_offsets, - int flags) + int flags, struct objfile *parent) { struct objfile *objfile; struct cleanup *my_cleanups; @@ -1106,6 +1109,9 @@ symbol_file_add_with_addrs_or_offsets (bfd *abfd, objfile = allocate_objfile (abfd, flags); discard_cleanups (my_cleanups); + if (parent) + add_separate_debug_objfile (objfile, parent); + /* We either created a new mapped symbol table, mapped an existing symbol table file which has not had initial symbol reading performed, or need to read an unmapped symbol table. */ @@ -1196,11 +1202,10 @@ symbol_file_add_separate (bfd *bfd, int symfile_flags, struct objfile *objfile) (bfd, symfile_flags, sap, NULL, 0, objfile->flags & (OBJF_REORDERED | OBJF_SHARED | OBJF_READNOW - | OBJF_USERLOADED)); + | OBJF_USERLOADED), + objfile); do_cleanups (my_cleanup); - - add_separate_debug_objfile (new_objfile, objfile); } /* Process the symbol file ABFD, as either the main file or as a @@ -1211,10 +1216,10 @@ symbol_file_add_separate (bfd *bfd, int symfile_flags, struct objfile *objfile) struct objfile * symbol_file_add_from_bfd (bfd *abfd, int add_flags, struct section_addr_info *addrs, - int flags) + int flags, struct objfile *parent) { return symbol_file_add_with_addrs_or_offsets (abfd, add_flags, addrs, 0, 0, - flags); + flags, parent); } @@ -1226,7 +1231,7 @@ symbol_file_add (char *name, int add_flags, struct section_addr_info *addrs, int flags) { return symbol_file_add_from_bfd (symfile_bfd_open (name), add_flags, addrs, - flags); + flags, NULL); } |