From 28054d694f6794d2866d22073117897e372803f2 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Mon, 2 Mar 2015 20:05:25 +0000 Subject: [PATCH] gdb_test_multiple: return -1 on internal error 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 * lib/gdb.exp (gdb_test_multiple) : Set result to -1. --- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/lib/gdb.exp | 1 + 2 files changed, 6 insertions(+) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 880e67437d1..76ed5e2fd0b 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-03-02 Pedro Alves + + * lib/gdb.exp (gdb_test_multiple) : Set result to + -1. + 2015-03-02 Andreas Arnez * gdb.arch/s390-vregs.exp: New test. diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 08db806c79f..f274b64d1fc 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 != "" } { -- 2.30.2