aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2020-02-27 10:16:00 +0100
committerTom de Vries <tdevries@suse.de>2020-02-27 10:16:00 +0100
commitc8d4f6dfd9264d6ab5d14c2dde3628cc1e7dd75f (patch)
treeb5697f856ef95cd70d9cd5db33c2c0c9d4891205 /gdb
parent05f52dc2e1359fc4f69fab5c39fdfdf5efe93a15 (diff)
downloadgdb-c8d4f6dfd9264d6ab5d14c2dde3628cc1e7dd75f.zip
gdb-c8d4f6dfd9264d6ab5d14c2dde3628cc1e7dd75f.tar.gz
gdb-c8d4f6dfd9264d6ab5d14c2dde3628cc1e7dd75f.tar.bz2
[gdb/testsuite] Fix spawn in tuiterm.exp
When running gdb.stabs/weird.exp by itself it passes, but if we run a gdb.tui test before it, we get: ... $ make check RUNTESTFLAGS="gdb.stabs/weird.exp gdb.tui/basic.exp" Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.tui/basic.exp ... Running /data/gdb_versions/devel/src/gdb/testsuite/gdb.stabs/weird.exp ... ERROR: Couldn't make test case. -1 {spawn failed} ... In more detail, using -v: ... Executing on build: sed -f aout.sed weird.def weird.s (timeout = 300) builtin_spawn [open ...]^M pid is 19060 19061 -19060 -19061 spawn -open file10 failed, 1 can't read "spawn_out(slave,name)": \ no such variable, can't read "spawn_out(slave,name)": no such variable while executing "set gdb_spawn_name $spawn_out(slave,name)" (procedure "spawn" line 5) invoked from within "spawn -ignore SIGHUP -leaveopen file10" invoked from within "catch "spawn -ignore SIGHUP -leaveopen $id" result2" ERROR: Couldn't make test case. -1 {spawn failed} ... When running the gdb.tui test, spawn gets renamed to a local version from lib/tuiterm.exp. The local version calls expect's spawn, and then makes the local spawn_out(slave,name) variable accessible in the global variable gdb_spawn_name. However, the weird.exp test-case uses remote_exec build, which ends up using local_exec, which given that there's input/output redirection uses open: ... set result [catch {open "| ${commandline} $inp |& tee $outpf" RDONLY} id] ... followed by spawn using the -leaveopen option: ... set result [catch "spawn -ignore SIGHUP -leaveopen $id" result2] ... which apparently has the effect that spawn_out(slave,name) is not set. Fix this in the lib/tuiterm.exp local spawn proc by detecting the case that spawn_out(slave,name) is not set, and handling it accordingly. Tested gdb.stabs/weird.exp and gdb.tui/*.exp on x86_64-linux. gdb/testsuite/ChangeLog: 2020-02-27 Tom de Vries <tdevries@suse.de> * lib/tuiterm.exp (spawn): Handle case that spawn_out(slave,name) is not set.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/lib/tuiterm.exp6
2 files changed, 10 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 52c46f9..2f5ab91 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2020-02-27 Tom de Vries <tdevries@suse.de>
+
+ * lib/tuiterm.exp (spawn): Handle case that spawn_out(slave,name) is
+ not set.
+
2020-02-26 Aaron Merey <amerey@redhat.com>
* gdb.debuginfod: New directory for debuginfod tests.
diff --git a/gdb/testsuite/lib/tuiterm.exp b/gdb/testsuite/lib/tuiterm.exp
index da55803..7505821 100644
--- a/gdb/testsuite/lib/tuiterm.exp
+++ b/gdb/testsuite/lib/tuiterm.exp
@@ -24,7 +24,11 @@ proc spawn {args} {
set result [uplevel builtin_spawn $args]
global gdb_spawn_name
upvar spawn_out spawn_out
- set gdb_spawn_name $spawn_out(slave,name)
+ if { [info exists spawn_out] } {
+ set gdb_spawn_name $spawn_out(slave,name)
+ } else {
+ unset gdb_spawn_name
+ }
return $result
}