aboutsummaryrefslogtreecommitdiff
path: root/gdb/objfiles.c
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2013-12-02 22:24:32 +0100
committerJan Kratochvil <jan.kratochvil@redhat.com>2013-12-02 22:24:32 +0100
commit04affae3ef7aa124b6ac0ce4f3a54063b7b4784f (patch)
treee7b3b2a4e5c71cce09d6ea41c6bba22e7c0322ba /gdb/objfiles.c
parentaee4bf85057de1905f5bfaad2a4be0295905d7fb (diff)
downloadgdb-04affae3ef7aa124b6ac0ce4f3a54063b7b4784f.zip
gdb-04affae3ef7aa124b6ac0ce4f3a54063b7b4784f.tar.gz
gdb-04affae3ef7aa124b6ac0ce4f3a54063b7b4784f.tar.bz2
Record objfile->original_name as an absolute path
gdb/ 2013-12-02 Doug Evans <dje@google.com> Jan Kratochvil <jan.kratochvil@redhat.com> * objfiles.c (allocate_objfile): Save original_name as an absolute path. * objfiles.h (struct objfile): Expand comment on original_name. * source.c (openp): Call gdb_abspath. * utils.c (gdb_abspath): New function. * utils.h (gdb_abspath): Declare. gdb/testsuite/ 2013-12-02 Doug Evans <dje@google.com> * gdb.dwarf/dwp-symlink.c: Fake out gdb to not load debug info at start. * gdb.dwarf/dwp-symlink.exp: Test trying to load dwp when the binary has been specified with a relative path and we have chdir'd before accessing the debug info.
Diffstat (limited to 'gdb/objfiles.c')
-rw-r--r--gdb/objfiles.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index ba930fa..1b957cc 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -272,6 +272,7 @@ struct objfile *
allocate_objfile (bfd *abfd, const char *name, int flags)
{
struct objfile *objfile;
+ char *expanded_name;
objfile = (struct objfile *) xzalloc (sizeof (struct objfile));
objfile->psymbol_cache = psymbol_bcache_init ();
@@ -286,10 +287,20 @@ allocate_objfile (bfd *abfd, const char *name, int flags)
{
gdb_assert (abfd == NULL);
gdb_assert ((flags & OBJF_NOT_FILENAME) != 0);
- name = "<<anonymous objfile>>";
+ expanded_name = xstrdup ("<<anonymous objfile>>");
}
- objfile->original_name = obstack_copy0 (&objfile->objfile_obstack, name,
- strlen (name));
+ else if ((flags & OBJF_NOT_FILENAME) != 0)
+ expanded_name = xstrdup (name);
+ else
+ expanded_name = gdb_abspath (name);
+ objfile->original_name = obstack_copy0 (&objfile->objfile_obstack,
+ expanded_name,
+ strlen (expanded_name));
+ xfree (expanded_name);
+
+ /* Update the per-objfile information that comes from the bfd, ensuring
+ that any data that is reference is saved in the per-objfile data
+ region. */
/* Update the per-objfile information that comes from the bfd, ensuring
that any data that is reference is saved in the per-objfile data