gdb_test_multiple match eof of any spawn_id
authorPedro Alves <palves@redhat.com>
Thu, 23 Apr 2015 14:48:26 +0000 (15:48 +0100)
committerPedro Alves <palves@redhat.com>
Thu, 23 Apr 2015 14:48:26 +0000 (15:48 +0100)
Since silent handling of eof is usually the wrong thing to do, this
patch makes gdb_test_multiple handle it for all $any_spawn_id.

Currently, against gdbserver, interrupt.exp occasionaly fails like
this:

 FAIL: gdb.base/interrupt.exp: send end of file

gdb.log with expect debug output enabled shows:

 expect: does "\r\n\r\nChild exited with status 0\r\nGDBserver exiting\r\n" (spawn_id exp8) match regular expression "end of file"? Gate "end of file"? gate=no
 expect: read eof
 expect: set expect_out(spawn_id) "exp8"
 expect: set expect_out(buffer) "\r\n\r\nChild exited with status 0\r\nGDBserver exiting\r\n"
 FAIL: gdb.base/interrupt.exp: send end of file

Note "expect: read eof" for spawn_id=exp8.  exp8 is
inferior_spawn_id/gdbserver_spawn_id.  That means
expect/gdb_test_multiple saw gdbserver exit before we got the expected
gdb output.  Since there's no explicit pattern for "eof", expect (and
thus gdb_test_multiple) just returns.

After this commit, we get instead:

 ERROR: Process no longer exists
 UNRESOLVED: gdb.base/interrupt.exp: send end of file

Note that before we still got an FAIL because $saw_inferior_exit is 0
when we get to:

gdb_assert { $saw_eof && $saw_inferior_exit } $msg

Fixing the fail (now unresolved) will be the subject of a separate
patch.

gdb/testsuite/ChangeLog:
2015-04-23  Pedro Alves  <palves@redhat.com>

* lib/gdb.exp (gdb_test_multiple): Match eof/full_buffer/timeout
on $any_spawn_id instead of only on $gdb_spawn_id.

gdb/testsuite/ChangeLog
gdb/testsuite/lib/gdb.exp

index 04ec209e4ee9a279c7af12e1e6f44d57f88f8cde..c77bf3c5af33d803b91bcd8b125639aaae0552f0 100644 (file)
@@ -1,3 +1,8 @@
+2015-04-23  Pedro Alves  <palves@redhat.com>
+
+       * lib/gdb.exp (gdb_test_multiple): Match eof/full_buffer/timeout
+       on $any_spawn_id instead of only on $gdb_spawn_id.
+
 2015-04-21  Pierre Muller  <muller@sourceware.org>
 
        PR pascal/17815
index 7d8720b194e121187c5867f9fd7b194dd8d4c875..73e55e3ea1fd9774198ed14717c9f5c775bbfc68 100644 (file)
@@ -692,6 +692,7 @@ proc gdb_test_multiple { command message user_code } {
     global inferior_exited_re
     upvar timeout timeout
     upvar expect_out expect_out
+    global any_spawn_id
 
     if { $message == "" } {
        set message $command
@@ -918,6 +919,9 @@ proc gdb_test_multiple { command message user_code } {
            fail "$message (got breakpoint menu)"
            set result -1
        }
+
+       # Patterns below apply to any spawn id specified.
+       -i $any_spawn_id
        eof {
            perror "Process no longer exists"
            if { $message != "" } {