[pushed] gdb_test_multiple: return -1 on internal error

Message ID 1425327093-406-1-git-send-email-palves@redhat.com
State Committed
Headers

Commit Message

Pedro Alves March 2, 2015, 8:11 p.m. UTC
  gdb_test_multiple is supposed to return -1 on internal error:

  # Returns:
  #    1 if the test failed, according to a built-in failure pattern
  #    0 if only user-supplied patterns matched
  #   -1 if there was an internal error.

But alas, that's broken, it returns success...  It looks like the code
is assuming an earlier 'set result -1' is still in effect, but
'result' is set to 0 at the end, just before we call gdb_expect:

    set result 0
    set code [catch {gdb_expect $code} string]

gdb/testsuite/
2015-03-02  Pedro Alves  <palves@redhat.com>

	* lib/gdb.exp (gdb_test_multiple) <internal error>: Set result to
	-1.
---
 gdb/testsuite/ChangeLog   | 5 +++++
 gdb/testsuite/lib/gdb.exp | 1 +
 2 files changed, 6 insertions(+)
  

Patch

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 880e674..76ed5e2 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@ 
+2015-03-02  Pedro Alves  <palves@redhat.com>
+
+	* lib/gdb.exp (gdb_test_multiple) <internal error>: Set result to
+	-1.
+
 2015-03-02  Andreas Arnez  <arnez@linux.vnet.ibm.com>
 
 	* gdb.arch/s390-vregs.exp: New test.
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 08db806..f274b64 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -808,6 +808,7 @@  proc gdb_test_multiple { command message user_code } {
 	-re ".*A problem internal to GDB has been detected" {
 	    fail "$message (GDB internal error)"
 	    gdb_internal_error_resync
+	    set result -1
 	}
 	-re "\\*\\*\\* DOSEXIT code.*" {
 	    if { $message != "" } {