Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* ad more ending-run cases
@ 2006-11-27 14:51 Nathan Sidwell
  2006-11-27 15:05 ` Daniel Jacobowitz
  0 siblings, 1 reply; 2+ messages in thread
From: Nathan Sidwell @ 2006-11-27 14:51 UTC (permalink / raw)
  To: gdb-patches

[-- Attachment #1: Type: text/plain, Size: 595 bytes --]

This patch does several things to ending-run.exp

1) flattens the separate expect scripts dealing with whether an extra step over 
a '}' was necessary.  Several regexps were duplicated, and whether the step is 
necessary is an artifact of the compiler's debug data.

2) adds a case for ARM RVDS toolchains

3) adds a case for m68k (and probably other embedded systems), where various 
forms of a 'start' function are used.

ok?

nathan
-- 
Nathan Sidwell    ::   http://www.codesourcery.com   ::         CodeSourcery
nathan@codesourcery.com    ::     http://www.planetfall.pwp.blueyonder.co.uk


[-- Attachment #2: ending-run.patch --]
[-- Type: text/x-patch, Size: 6490 bytes --]

2006-11-27  Nathan Sidwell  <nathan@codesourcery.com>
	    Paul Brook  <paul@codesourcery.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/ending-run.exp: Flatten expect script stepping out of
        main to remove duplication.  Add start function of the form
	'_*start[1-9]*'. Add RVDS start function.

Index: testsuite/gdb.base/ending-run.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/ending-run.exp,v
retrieving revision 1.24
diff -c -3 -p -r1.24 ending-run.exp
*** testsuite/gdb.base/ending-run.exp	10 Aug 2006 05:27:20 -0000	1.24
--- testsuite/gdb.base/ending-run.exp	27 Nov 2006 14:19:39 -0000
*************** set old_timeout $timeout
*** 153,242 ****
  set timeout 50
  set program_exited 0
  send_gdb "next\n"
  gdb_expect {
      -re "33.*$gdb_prompt $" {
  	# sometimes we stop at the closing brace, if so, do another next
! 	send_gdb "next\n"
! 	gdb_expect {
! 	    -re ".*Unable to find return pc for this frame.*$gdb_prompt $" {
! 		fail "step out of main (Old bug came back!)"
! 		gdb_test "n" ".*" ""
! 	    }
! 	    -re ".*in.*start.*$gdb_prompt $" { 
! 		pass "step out of main"
! 	    }
! 	    -re ".*in.*bsp_trap.*$gdb_prompt $" { 
! 		pass "step out of main"
! 	    }
! 	    -re ".*in.*init.*$gdb_prompt $" { 
! 		# This is what happens on sparc64-elf ultra.
! 		pass "step out of main"
! 	    }
! 	    -re ".*in.*dll_crt0_1.*$gdb_prompt $" {
! 		# This is what happens on Cygwin.
! 	        pass "step out of main"
! 	    }
! 	    -re ".*Program exited normally.*$gdb_prompt $" {
! 		# This is what happens on Linux i86 (and I would expect others)
! 		set program_exited 1
! 		pass "step out of main"
! 	    }
! 	    -re ".*in .nope ().*$gdb_prompt $" {
! 		# This is what happens on Solaris currently -sts 1999-08-25
! 		pass "step out of main (on Solaris)"
! 	    }
! 	    -re ".*in _int_reset ().*$gdb_prompt $" {
! 		# This is what happens on Sanyo XStormy16
! 		pass "step out of main"
! 	    }
! 	    -re ".*init ().*$gdb_prompt $" {
! 		# This is what happens on many Mips targets
! 		pass "step out of main"
! 	    }
! 	    -re ".*in ..change.mode ().*$gdb_prompt $" {
! 		# This is what happens on ARM in thumb mode -fn 2000-02-01
! 		pass "step out of main (on ARM thumb)"
! 	    }
! 	    -re ".*in.*\\\$START\\\$.*from.*dld.sl.*$gdb_prompt $" { 
! 		pass "step out of main"
! 	    }
! 	    -re ".*in __wrap__?main ().*$gdb_prompt $" {
! 		pass "step out of main (status wrapper)"
! 	    }
! 	    -re "__setup_argv_for_main (.*).*$gdb_prompt $" {
! 		# On sh, another wrapper function (start_l) exists, so
! 		# another `next' is necessary.
! 		gdb_test "next" ".*in start_l ().*" "step out of main (on sh)"
! 	    }
!             -re ".*$gdb_prompt $" { fail "step out of main (at end 2)" }
! 	    timeout { 
! 		fail "step out of main (hang or timeout on step at end 2)" 
! 	    }
  	}
      }
      -re ".*Unable to find return pc for this frame.*$gdb_prompt $" {
!         fail "Old bug came back!"
!         gdb_test "n" ".*" ""
      }
      -re ".*in.*start.*$gdb_prompt $" { 
!         pass "step out of main"
      }
!     -re ".*in.*\\\$START\\\$.*from.*dld.sl.*$gdb_prompt $"  {
!         pass "step out of main (2)"
      }
      -re ".*Program exited normally.*$gdb_prompt $" {
  	# This is what happens on Linux i86 (and I would expect others)
  	set program_exited 1
  	pass "step out of main"
      }
      -re ".*in.*currently asm.*$gdb_prompt $" { 
!         pass "step out of main (into assembler)"
      }
      -re ".*Program received signal SIGTRAP.*$gdb_prompt $" {
!         pass "Cygmon stopped in ending trap."
      }
!     -re ".*$gdb_prompt $" { fail "step out of main (at end 1)" }
!     timeout { fail "step out of main (hang or timeout on step at end 1)" }
  }
  
  # When we're talking to a program running on a real stand-alone board,
--- 153,235 ----
  set timeout 50
  set program_exited 0
  send_gdb "next\n"
+ set nexted 0
  gdb_expect {
      -re "33.*$gdb_prompt $" {
  	# sometimes we stop at the closing brace, if so, do another next
! 	if { $nexted } {
! 	    fail "step out of main"
! 	} else {
! 	    set nexted 1
! 	    send_gdb "next\n"
! 	    exp_continue
  	}
      }
      -re ".*Unable to find return pc for this frame.*$gdb_prompt $" {
! 	fail "step out of main"
! 	gdb_test "n" ".*" ""
      }
      -re ".*in.*start.*$gdb_prompt $" { 
! 	pass "step out of main"
      }
!     -re ".*in.*bsp_trap.*$gdb_prompt $" { 
! 	pass "step out of main"
!     }
!     -re ".*in.*init.*$gdb_prompt $" { 
! 	# This is what happens on sparc64-elf ultra.
! 	pass "step out of main"
!     }
!     -re ".*in.*dll_crt0_1.*$gdb_prompt $" {
! 	# This is what happens on Cygwin.
! 	pass "step out of main"
      }
      -re ".*Program exited normally.*$gdb_prompt $" {
  	# This is what happens on Linux i86 (and I would expect others)
  	set program_exited 1
  	pass "step out of main"
      }
+     -re ".*in .nope ().*$gdb_prompt $" {
+ 	# This is what happens on Solaris currently -sts 1999-08-25
+ 	pass "step out of main"
+     }
+     -re ".*in _int_reset ().*$gdb_prompt $" {
+ 	# This is what happens on Sanyo XStormy16
+ 	pass "step out of main"
+     }
+     -re ".*init ().*$gdb_prompt $" {
+ 	# This is what happens on many Mips targets
+ 	pass "step out of main"
+     }
+     -re ".*in ..change.mode ().*$gdb_prompt $" {
+ 	# This is what happens on ARM in thumb mode -fn 2000-02-01
+ 	pass "step out of main"
+     }
+     -re ".*__rt_entry ().*$gdb_prompt $" {
+ 	# This is what happens on the ARM RVDS runtime
+ 	pass "step out of main"
+     }
+     -re ".*in.*\\\$START\\\$.*from.*dld.sl.*$gdb_prompt $" { 
+ 	pass "step out of main"
+     }
+     -re ".*in __wrap__?main ().*$gdb_prompt $" {
+ 	pass "step out of main"
+     }
+     -re "__setup_argv_for_main (.*).*$gdb_prompt $" {
+ 	# On sh, another wrapper function (start_l) exists, so
+ 	# another `next' is necessary.
+ 	gdb_test "next" ".*in start_l ().*" "step out of main"
+     }
      -re ".*in.*currently asm.*$gdb_prompt $" { 
!         pass "step out of main"
!     }
!     -re "_*start\[0-9\]* \\(\[^)\]*\\).*$gdb_prompt $" {
!         pass "step out of main"
      }
      -re ".*Program received signal SIGTRAP.*$gdb_prompt $" {
!         pass "step out of main"
      }
!     -re ".*$gdb_prompt $" { fail "step out of main" }
!     timeout { fail "step out of main" }
  }
  
  # When we're talking to a program running on a real stand-alone board,

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: ad more ending-run cases
  2006-11-27 14:51 ad more ending-run cases Nathan Sidwell
@ 2006-11-27 15:05 ` Daniel Jacobowitz
  0 siblings, 0 replies; 2+ messages in thread
From: Daniel Jacobowitz @ 2006-11-27 15:05 UTC (permalink / raw)
  To: Nathan Sidwell; +Cc: gdb-patches

On Mon, Nov 27, 2006 at 02:52:38PM +0000, Nathan Sidwell wrote:
> This patch does several things to ending-run.exp
> 
> 1) flattens the separate expect scripts dealing with whether an extra step 
> over a '}' was necessary.  Several regexps were duplicated, and whether the 
> step is necessary is an artifact of the compiler's debug data.
> 
> 2) adds a case for ARM RVDS toolchains
> 
> 3) adds a case for m68k (and probably other embedded systems), where 
> various forms of a 'start' function are used.
> 
> ok?


OK.

-- 
Daniel Jacobowitz
CodeSourcery


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-11-27 15:05 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-11-27 14:51 ad more ending-run cases Nathan Sidwell
2006-11-27 15:05 ` Daniel Jacobowitz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox