This is the mail archive of the gdb-patches@sources.redhat.com 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]

remote.exp: fail properly if wrapper status message isn't found


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


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