diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-09-24 14:00:06 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-09-24 14:00:06 +0000 |
commit | 24ba069af8a2078bc634bbf2599381fc0ea471ad (patch) | |
tree | b9b51a9595e0e4ea0723ed9f5541664e04bf05a3 /gdb/objfiles.c | |
parent | 4262abfb982e7afb257203a2dbdb921b57f5e39b (diff) | |
download | gdb-24ba069af8a2078bc634bbf2599381fc0ea471ad.zip gdb-24ba069af8a2078bc634bbf2599381fc0ea471ad.tar.gz gdb-24ba069af8a2078bc634bbf2599381fc0ea471ad.tar.bz2 |
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.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/gdb/objfiles.c b/gdb/objfiles.c index aae992f..6585c3f 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; } |