diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-12-02 22:24:32 +0100 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-12-02 22:24:32 +0100 |
commit | 04affae3ef7aa124b6ac0ce4f3a54063b7b4784f (patch) | |
tree | e7b3b2a4e5c71cce09d6ea41c6bba22e7c0322ba /gdb/objfiles.c | |
parent | aee4bf85057de1905f5bfaad2a4be0295905d7fb (diff) | |
download | gdb-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.c | 17 |
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 |