This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] gdb_test_multiple match eof of any spawn_id


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=749ef8f891fb921cf7ad57062deae6fa8c13b501

commit 749ef8f891fb921cf7ad57062deae6fa8c13b501
Author: Pedro Alves <palves@redhat.com>
Date:   Thu Apr 23 15:48:26 2015 +0100

    gdb_test_multiple match eof of any spawn_id
    
    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.

Diff:
---
 gdb/testsuite/ChangeLog   | 5 +++++
 gdb/testsuite/lib/gdb.exp | 4 ++++
 2 files changed, 9 insertions(+)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 04ec209..c77bf3c 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -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
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 7d8720b..73e55e3 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -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 != "" } {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]