aboutsummaryrefslogtreecommitdiff
path: root/gdb/utils.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/utils.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/utils.c')
-rw-r--r--gdb/utils.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/gdb/utils.c b/gdb/utils.c
index 10c73d3..975c432 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -3274,6 +3274,32 @@ gdb_realpath_keepfile (const char *filename)
return result;
}
+/* Return PATH in absolute form, performing tilde-expansion if necessary.
+ PATH cannot be NULL or the empty string.
+ This does not resolve symlinks however, use gdb_realpath for that.
+ Space for the result is allocated with malloc.
+ If the path is already absolute, it is strdup'd.
+ If there is a problem computing the absolute path, the path is returned
+ unchanged (still strdup'd). */
+
+char *
+gdb_abspath (const char *path)
+{
+ gdb_assert (path != NULL && path[0] != '\0');
+
+ if (path[0] == '~')
+ return tilde_expand (path);
+
+ if (IS_ABSOLUTE_PATH (path))
+ return xstrdup (path);
+
+ /* Beware the // my son, the Emacs barfs, the botch that catch... */
+ return concat (current_directory,
+ IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])
+ ? "" : SLASH_STRING,
+ path, (char *) NULL);
+}
+
ULONGEST
align_up (ULONGEST v, int n)
{