aboutsummaryrefslogtreecommitdiff
path: root/gdb/symfile.c
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2011-04-17 18:38:46 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2011-04-17 18:38:46 +0000
commit63524580f8372e38a6a62fd875a4252068c31150 (patch)
tree56284f865a15b9e590b606102dc1a086ba876571 /gdb/symfile.c
parent90359a167375927982fc3f675718044a491da759 (diff)
downloadgdb-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.c19
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);
}