[gdb/testsuite] Add missing wait in gdb.base/signals-state-child.exp
authorTom de Vries <tdevries@suse.de>
Thu, 18 Nov 2021 14:52:07 +0000 (15:52 +0100)
committerTom de Vries <tdevries@suse.de>
Thu, 18 Nov 2021 14:52:07 +0000 (15:52 +0100)
On OBS I ran into:
...
(gdb) shell diff -s outputs/gdb.base/signals-state-child/standalone.txt \
  outputs/gdb.base/signals-state-child/gdb.txt^M
diff: outputs/gdb.base/signals-state-child/standalone.txt: \
  No such file or directory^M
(gdb) FAIL: gdb.base/signals-state-child.exp: signals states are identical
...

I managed to reproduce this by adding "sleep (5)" at the start of main in
signals-state-child.c.

Fix this by waiting on the result of the spawned command.

Tested on x86_64-linux.

gdb/testsuite/gdb.base/signals-state-child.exp

index ce143b1509a3863c603de87ee525448c4371ef01..733d7cebd5ac52aa6d461468206ebe65791ef6ef 100644 (file)
@@ -69,9 +69,11 @@ set res [remote_spawn target "$binfile-standalone"]
 if { $res < 0 || $res == "" } {
     untested "spawning $binfile-standalone failed"
     return 1
-} else {
-    pass "collect standalone signals state"
 }
+
+set wait_status [remote_wait target 60]
+set have_standalone [expr [lindex $wait_status 0] == 0]
+gdb_assert { $have_standalone } "collect standalone signals state"
 remote_close target
 
 # Now run the program through gdb, and dump its initial signal actions
@@ -85,6 +87,12 @@ if { ! [ runto_main ] } then {
 
 gdb_continue_to_end "collect signals state under gdb"
 
+set test "signals states are identical"
+if { ! $have_standalone } {
+    untested $test
+    return -1
+}
+
 if {!$purely_local} {
     # Copy file from target to host through build.
     remote_download host [remote_upload target gdb.txt] gdb.txt
@@ -94,4 +102,4 @@ if {!$purely_local} {
 # Diff the .txt files.  They should be identical.
 gdb_test "shell diff -s $standalone_txt $gdb_txt" \
     "Files .* are identical.*" \
-    "signals states are identical"
+    $test