This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: remote.exp: fail properly if wrapper status message isn't found
- From: Fernando Nasser <fnasser at redhat dot com>
- To: Andrew Cagney <ac131313 at cygnus dot com>
- Cc: Hans-Peter Nilsson <hp at bitrange dot com>, gdb-patches at sources dot redhat dot com
- Date: Mon, 21 Jan 2002 11:41:15 -0500
- Subject: Re: remote.exp: fail properly if wrapper status message isn't found
- Organization: Red Hat Canada
- References: <Pine.BSF.4.30.0111101120000.83243-100000@dair.pair.com> <3C4B6A90.8090801@cygnus.com>
Andrew Cagney wrote:
>
> Should this be committed to the src/dejagnu source base (regardless of dejagnu)?
>
> Andrew
>
We'd normally do that _and_ send the patch to the dejagnu external
maintainer.
Fernando
> > 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
> > }
> > }
> >
> >
--
Fernando Nasser
Red Hat Canada Ltd. E-Mail: fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario M4P 2C9