diff options
author | Tom de Vries <tdevries@suse.de> | 2020-02-27 10:16:00 +0100 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2020-02-27 10:16:00 +0100 |
commit | c8d4f6dfd9264d6ab5d14c2dde3628cc1e7dd75f (patch) | |
tree | b5697f856ef95cd70d9cd5db33c2c0c9d4891205 | |
parent | 05f52dc2e1359fc4f69fab5c39fdfdf5efe93a15 (diff) | |
download | gdb-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.
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/lib/tuiterm.exp | 6 |
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 } |