This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
remote.exp: fail properly if wrapper status message isn't found
- To: <bug-dejagnu at gnu dot org>
- Subject: remote.exp: fail properly if wrapper status message isn't found
- From: Hans-Peter Nilsson <hp at bitrange dot com>
- Date: Sat, 10 Nov 2001 11:22:04 -0500 (EST)
- cc: <gdb-patches at sources dot redhat dot com>
Hi.
I had a bug in the fini code in the newlib port of
mmix-knuth-mmixware (film at 11) which exposed this dejagnu
fault: a target using a wrapper gets a PASS if the "*** EXIT
code ..." pattern isn't output. IIRC, at the time I tested
this on other simulator targets, that fault exposed two other
gcc testsuite failures on some other target. I can't remember
which; it might have been d30v or mn10300.
Please consider applying this. Please make sure to CC me on
follow-ups as I'm not subscribed to these lists.
2001-11-10 Hans-Peter Nilsson <hp@bitrange.com>
* lib/remote.exp (check_for_board_status): Return 2 if the board
uses a status wrapper and there was no match for the expected
pattern.
Index: remote.exp
===================================================================
RCS file: /cvsroot/dejagnu/dejagnu/lib/remote.exp,v
retrieving revision 1.4
diff -p -c -r1.4 remote.exp
*** remote.exp 2001/10/02 15:48:51 1.4
--- remote.exp 2001/11/10 15:59:40
*************** proc standard_wait { dest timeout } {
*** 1050,1055 ****
--- 1050,1065 ----
proc check_for_board_status { variable } {
upvar $variable output;
+ # If all programs of this board have a wrapper that always outputs a
+ # status message, then the absence of it means that the program
+ # crashed, regardless of status found elsewhere (e.g. simulator exit
+ # code).
+ if { [target_info needs_status_wrapper] != "" } then {
+ set nomatch_return 2
+ } else {
+ set nomatch_return -1
+ }
+
if [regexp "(^|\[\r\n\])\\*\\*\\* EXIT code" $output] {
regsub "^.*\\*\\*\\* EXIT code " $output "" result;
regsub "\[\r\n\].*$" $result "" result;
*************** proc check_for_board_status { variable
*** 1059,1070 ****
verbose "got board status $result" 3
verbose "output is $output" 3
if { $result == "" } {
! return -1;
} else {
return [expr $result];
}
} else {
! return -1;
}
}
--- 1069,1080 ----
verbose "got board status $result" 3
verbose "output is $output" 3
if { $result == "" } {
! return $nomatch_return
} else {
return [expr $result];
}
} else {
! return $nomatch_return
}
}
brgds, H-P