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.
This commit is contained in:
Jan Kratochvil 2013-12-02 22:24:32 +01:00
parent aee4bf8505
commit 04affae3ef
9 changed files with 94 additions and 26 deletions

View file

@ -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)
{