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]
Other format: [Raw text]

Re: [RFA] testsuite/gdb.base/ending-run.exp



Corinna Vinschen wrote:
Hi,

I suggest the attached patch to ending-run.exp which fixes the following
problems:

- The "step out of main (status wrapper)" check tests only for
__wrap_main but not for __wrap__main which is used in dejagnu's
testglue.c when UNDERSOCRES is defined.

- The "step to end of run (status wrapper)" test expects not only
the "EXIT code 0" but also a "Program exited normaly" string.
That's not ok for targets which never actually exit but are just
trapped in a special _exit() handler.

- Based on this, the expectation that the following "next" will print
the string "The program is not being run" is plain wrong. By adding
a special case for these targets and setting the expected behaviour
to XFAIL, these targets get a fair chance ;-)

Corinna

* gdb.base/ending-run.exp: Fix expected string for _wrap_main to
allow correct handling of #ifdef UNDERSCORES from dejagnu/testglue.c.
Fix handling of "step to end of run" for embedded targets which
never actually exit.

Index: gdb.base/ending-run.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/ending-run.exp,v
retrieving revision 1.16
diff -u -p -r1.16 ending-run.exp
--- gdb.base/ending-run.exp 19 Jul 2002 00:02:34 -0000 1.16
+++ gdb.base/ending-run.exp 18 Sep 2002 11:21:22 -0000
@@ -195,7 +195,7 @@ gdb_expect {
-re ".*in.*\\\$START\\\$.*from.*dld.sl.*$gdb_prompt $" { pass "step out of main"
}
- -re ".*in __wrap_main ().*$gdb_prompt $" {
+ -re ".*in __wrap__?main ().*$gdb_prompt $" {
pass "step out of main (status wrapper)"
}
-re ".*$gdb_prompt $" { fail "step out of main (at end 2)" }
This part is OK.  You can check it in immediately.



@@ -245,8 +245,12 @@ if {! [target_info exists use_gdb_stub]
 		# exit" message.
 		pass "step to end of run"
 	    }
-	    -re "Single.*EXIT code 0.*Program exited normally.*$gdb_prompt $" {
+	    -re "Single.*EXIT code 0\r\n.*Program exited normally.*$gdb_prompt $" {
 		pass "step to end of run (status wrapper)"
You forgot to mention this change (which seems correct). It also can be checked in providing you mention it in the ChangeLog.



+	    }
+	    -re "Single.*EXIT code 0\r\n.*$gdb_prompt $" {
+		pass "step to end of run (status wrapper)"
+		setup_xfail "*-*-*"
 	    }
 	    -re ".*Single.*Program exited.*$gdb_prompt $" {
 		pass "step to end of run"


The code for xstormy was actually not correct. Please look at the attached (untested) patch, add your case to it setting the variables accordingly and give it a spin. If it works for you I will check it in and then you can add the case above to it.


Regards,
Fernnado


--
Fernando Nasser
Red Hat Canada Ltd. E-Mail: fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario M4P 2C9
Index: testsuite/gdb.base/ending-run.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/ending-run.exp,v
retrieving revision 1.16
diff -c -p -r1.16 ending-run.exp
*** testsuite/gdb.base/ending-run.exp	19 Jul 2002 00:02:34 -0000	1.16
--- testsuite/gdb.base/ending-run.exp	18 Sep 2002 15:40:25 -0000
*************** gdb_expect {
*** 233,238 ****
--- 233,241 ----
  # every BSP's exit function behaves differently, so there's no single
  # way to tell whether we've exited gracefully or not.  So don't run
  # these tests when use_gdb_stub is set, or when we're running under Cygmon.
+ set program_exited_normally 0
+ set program_not_exited 0
+ set program_in_exit 0
  if {! [target_info exists use_gdb_stub]
      && (! [target_info exists use_cygmon] || ! [target_info use_cygmon])} {
      global program_exited;
*************** if {! [target_info exists use_gdb_stub]
*** 244,276 ****
  		# then we won't get the "Single-stepping until function
  		# exit" message.
  		pass "step to end of run"
  	    }
  	    -re "Single.*EXIT code 0.*Program exited normally.*$gdb_prompt $" {
  		pass "step to end of run (status wrapper)"
  	    }
  	    -re ".*Single.*Program exited.*$gdb_prompt $" {
  		pass "step to end of run"
  	    }
  	    -re ".*Single.*in exit.*from.*dld.sl.*$gdb_prompt $" {
  		pass "step to end of run" 
! 		gdb_test "c" ".*" "continue after exit"
  	    }
  	    -re ".*Single.*_int_reset.*$gdb_prompt $" {
  	        pass "step to end of run"
! 		setup_xfail "xstormy16-*-*"
  	    }
  	    -re ".*$gdb_prompt $" {
  		fail "step to end of run"
  	    }
  	    timeout { 
  		fail "(timeout) step to end of run" 
  	    }
  	}   
      }
  
      set timeout $old_timeout
  
!     gdb_test "n" ".*The program is not being run.*" "don't step after run"
  
      set exec_output [remote_exec host "ls core"]
  
--- 247,300 ----
  		# then we won't get the "Single-stepping until function
  		# exit" message.
  		pass "step to end of run"
+ 		set program_exited_normally 1
  	    }
  	    -re "Single.*EXIT code 0.*Program exited normally.*$gdb_prompt $" {
  		pass "step to end of run (status wrapper)"
+ 		set program_exited_normally 1
  	    }
  	    -re ".*Single.*Program exited.*$gdb_prompt $" {
  		pass "step to end of run"
+ 		set program_exited_normally 1
  	    }
  	    -re ".*Single.*in exit.*from.*dld.sl.*$gdb_prompt $" {
  		pass "step to end of run" 
! 		set program_in_exit 1
  	    }
  	    -re ".*Single.*_int_reset.*$gdb_prompt $" {
  	        pass "step to end of run"
! 		if {![istarget "xstormy16-*-*"]} {
! 		    set program_exited_normally 1
! 		}
  	    }
  	    -re ".*$gdb_prompt $" {
  		fail "step to end of run"
+ 		set program_not_exited 1
  	    }
  	    timeout { 
  		fail "(timeout) step to end of run" 
+ 		set program_not_exited 1
  	    }
  	}   
      }
  
+     if {$program_in_exit} {
+ 	if {[gdb_test "c" ".*" "continue after exit"] == 0} {
+ 	    set program_exited_normally 1
+ 	}
+     } else {
+ 	unsupported "continue after exit"
+     }
+ 
      set timeout $old_timeout
  
!     if {$program_exited_normally} {
!         gdb_test "n" ".*The program is not being run.*" "don't step after run"
!     } elseif {$program_not_exited} {
! 	unresolved "don't step after run"
!     } else {
! 	unsupported "don't step after run"
!     }
  
      set exec_output [remote_exec host "ls core"]
  

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