summaryrefslogtreecommitdiff
path: root/gdb
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
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')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/source.c21
-rw-r--r--gdb/testsuite/ChangeLog7
-rw-r--r--gdb/testsuite/gdb.mi/mi-fullname-deleted.exp12
4 files changed, 41 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index fb9545da04e..5495385010a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2013-01-13 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * source.c (symtab_to_fullname): Apply rewrite_source_path also for
+ non-existing files.
+
2013-01-11 Jan Kratochvil <jan.kratochvil@redhat.com>
* macrocmd.c (macro_inform_no_debuginfo): Use puts_filtered instead of
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;
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index e6e4c500520..3e366d98e6c 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2013-01-13 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * gdb.mi/mi-fullname-deleted.exp: Set srcfileabssubst and initdir.
+ (set substitute-path): New test.
+ (fullname present): Remove content.
+ (substituted fullname): New test.
+
2013-01-13 Joel Brobecker <brobecker@adacore.com>
* gdb.python/py-finish-breakpoint.exp: Add skip_python_tests
diff --git a/gdb/testsuite/gdb.mi/mi-fullname-deleted.exp b/gdb/testsuite/gdb.mi/mi-fullname-deleted.exp
index c2c822f4ea4..1b9fd5ccfbf 100644
--- a/gdb/testsuite/gdb.mi/mi-fullname-deleted.exp
+++ b/gdb/testsuite/gdb.mi/mi-fullname-deleted.exp
@@ -24,6 +24,12 @@ if [mi_gdb_start] {
standard_testfile
set srcfileabs [standard_output_file $srcfile]
+if { [regsub {^(/[^/]+)/} $srcfileabs {\1subst/} srcfileabssubst] != 1
+ || [regsub {^(/[^/]+)/.*$} $srcfileabs {\1} initdir] != 1 } {
+ xfail "Missing root subdirectory"
+ return -1
+}
+
set f [open $srcfileabs "w"]
puts $f "int main (void) { return 0; }"
close $f
@@ -38,4 +44,8 @@ file delete -- $srcfileabs
mi_gdb_reinitialize_dir $srcdir/$subdir
mi_gdb_load ${binfile}
-mi_gdb_test "-file-list-exec-source-file" ".*\",fullname=\"[string_to_regexp $srcfileabs]\".*" "fullname present"
+mi_gdb_test "-interpreter-exec console \"set substitute-path ${initdir} ${initdir}subst\"" {\^done} "set substitute-path"
+
+mi_gdb_test "-file-list-exec-source-file" ".*\",fullname=\".*\".*" "fullname present"
+
+mi_gdb_test "-file-list-exec-source-file" ".*\",fullname=\"[string_to_regexp $srcfileabssubst]\".*" "substituted fullname"