summaryrefslogtreecommitdiff
path: root/gdb/source.c
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2013-01-13 18:52:43 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2013-01-13 18:52:43 +0000
commit6796bef7e838798ab452665f74e474a44f95cb8e (patch)
tree3cf313d9de10fb9f54f5ddc8062c3a9e4431f605 /gdb/source.c
parentbaaa99b01fd9ef7d4501ee065dd939620455ecb0 (diff)
downloadgdb-6796bef7e838798ab452665f74e474a44f95cb8e.tar.gz
gdb/
* source.c (symtab_to_fullname): Apply rewrite_source_path also for non-existing files. gdb/testsuite/ * gdb.mi/mi-fullname-deleted.exp: Set srcfileabssubst and initdir. (set substitute-path): New test. (fullname present): Remove content. (substituted fullname): New test.
Diffstat (limited to 'gdb/source.c')
-rw-r--r--gdb/source.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/gdb/source.c b/gdb/source.c
index 6e12896d5f9..ca6b4f316d6 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -1094,10 +1094,25 @@ symtab_to_fullname (struct symtab *s)
if (fd >= 0)
close (fd);
- else if (s->dirname == NULL)
- s->fullname = xstrdup (s->filename);
else
- s->fullname = concat (s->dirname, SLASH_STRING, s->filename, NULL);
+ {
+ char *fullname;
+ struct cleanup *back_to;
+
+ /* rewrite_source_path would be applied by find_and_open_source, we
+ should report the pathname where GDB tried to find the file. */
+
+ if (s->dirname == NULL)
+ fullname = xstrdup (s->filename);
+ else
+ fullname = concat (s->dirname, SLASH_STRING, s->filename, NULL);
+
+ back_to = make_cleanup (xfree, fullname);
+ s->fullname = rewrite_source_path (fullname);
+ if (s->fullname == NULL)
+ s->fullname = xstrdup (fullname);
+ do_cleanups (back_to);
+ }
}
return s->fullname;