summaryrefslogtreecommitdiff
path: root/gdb/objfiles.c
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2013-09-24 14:00:05 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2013-09-24 14:00:05 +0000
commit21c745fd835a2b42a60ac0612f070a64655a3cd5 (patch)
tree6d1671b644b556d3a0d5f4bc7d47b2b6f20d66eb /gdb/objfiles.c
parent51c92d04868bda27020a3dca7c0e6fb69a81203c (diff)
downloadgdb-21c745fd835a2b42a60ac0612f070a64655a3cd5.tar.gz
Keep objfile original filename
gdb/ 2013-09-24 Jan Kratochvil <jan.kratochvil@redhat.com> Pass down original filename for objfile. * coffread.c (coff_symfile_read): Update symbol_file_add_separate call. * elfread.c (elf_symfile_read): Likewise. * jit.c (jit_object_close_impl): Update allocate_objfile call, no longer set ORIGINAL_NAME. (jit_bfd_try_read_symtab): Update symbol_file_add_from_bfd call. * jv-lang.c (get_dynamics_objfile): Update allocate_objfile call. * machoread.c (macho_add_oso_symfile): Add parameter name. Update symbol_file_add_from_bfd call. (macho_symfile_read_all_oso): Update two macho_add_oso_symfile calls. (macho_check_dsym): Add parameter filenamep. Change function comment. Set *filenamep. (macho_symfile_read): New variable dsym_filename. Update macho_check_dsym call. Use it for symbol_file_add_separate. * objfiles.c (allocate_objfile): Add parameter name. New comment for it. Use it for objfile->original_name. (objfile_name): Return OBFD's filename, if available. * objfiles.h (allocate_objfile): Add new parameter name. * solib.c (solib_read_symbols): Update symbol_file_add_from_bfd call. * symfile-mem.c (symbol_file_add_from_memory): Update symbol_file_add_from_bfd call. * symfile.c (read_symbols): Update symbol_file_add_separate call, new comment for it. (symbol_file_add_with_addrs): New parameter name, add function comment for it. Remove variable name. Update allocate_objfile call. (symbol_file_add_separate): New parameter name, add function comment for it. Update symbol_file_add_with_addrs call. (symbol_file_add_from_bfd): New parameter name. Update symbol_file_add_with_addrs call. (symbol_file_add): Update symbol_file_add_from_bfd call. (reread_symbols): New variable original_name. Save objfile->original_name by it. * symfile.h (symbol_file_add_from_bfd, symbol_file_add_separate): Add second parameter.
Diffstat (limited to 'gdb/objfiles.c')
-rw-r--r--gdb/objfiles.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index aae992fd30d..6585c3ff0ed 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -248,6 +248,11 @@ build_objfile_section_table (struct objfile *objfile)
into the list of all known objfiles, and return a pointer to the
new objfile struct.
+ NAME should contain original non-canonicalized filename or other
+ identifier as entered by user. If there is no better source use
+ bfd_get_filename (ABFD). NAME may be NULL only if ABFD is NULL.
+ NAME content is copied into returned objfile.
+
The FLAGS word contains various bits (OBJF_*) that can be taken as
requests for specific operations. Other bits like OBJF_SHARED are
simply copied through to the new objfile flags member. */
@@ -262,7 +267,7 @@ build_objfile_section_table (struct objfile *objfile)
things in a consistent state even if abfd is NULL. */
struct objfile *
-allocate_objfile (bfd *abfd, int flags)
+allocate_objfile (bfd *abfd, const char *name, int flags)
{
struct objfile *objfile;
@@ -279,20 +284,23 @@ allocate_objfile (bfd *abfd, int flags)
that any data that is reference is saved in the per-objfile data
region. */
+ if (name == NULL)
+ {
+ gdb_assert (abfd == NULL);
+ name = "<<anonymous objfile>>";
+ }
+ objfile->original_name = obstack_copy0 (&objfile->objfile_obstack, name,
+ strlen (name));
+
objfile->obfd = abfd;
gdb_bfd_ref (abfd);
if (abfd != NULL)
{
- objfile->original_name = bfd_get_filename (abfd);
objfile->mtime = bfd_get_mtime (abfd);
/* Build section table. */
build_objfile_section_table (objfile);
}
- else
- {
- objfile->original_name = "<<anonymous objfile>>";
- }
objfile->per_bfd = get_objfile_bfd_data (objfile, abfd);
objfile->pspace = current_program_space;
@@ -1486,6 +1494,9 @@ default_iterate_over_objfiles_in_search_order
const char *
objfile_name (const struct objfile *objfile)
{
+ if (objfile->obfd != NULL)
+ return bfd_get_filename (objfile->obfd);
+
return objfile->original_name;
}