diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-01-13 18:52:43 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-01-13 18:52:43 +0000 |
commit | 6796bef7e838798ab452665f74e474a44f95cb8e (patch) | |
tree | 3cf313d9de10fb9f54f5ddc8062c3a9e4431f605 /gdb/source.c | |
parent | baaa99b01fd9ef7d4501ee065dd939620455ecb0 (diff) | |
download | gdb-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.c | 21 |
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; |