# This testcase is part of GDB, the GNU debugger.
-# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008
-# Free Software Foundation, Inc.
+# Copyright 1997-2014 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# ending-run.exp -- Expect script to test ending a test run in gdb
-if $tracelevel then {
- strace $tracelevel
+if { [prepare_for_testing ending-run.exp ending-run] } {
+ return -1
}
-
-set testfile ending-run
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
-
-remote_exec build "rm -f ${binfile}"
remote_exec build "rm -f core"
-
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
- untested ending-run.exp
- return -1
-}
-
-
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
-
# CHFts23469: Test that you can "clear" a bp set at
# a line _before_ the routine (which will default to the
# first line in the routine, which turns out to correspond
gdb_test "" ".*Breakpoint.*1.*callee.*14.*" "run"
gdb_test "cle" ".*Deleted breakpoints 1 2.*" "clear worked"
-send_gdb "i b\n"
-gdb_expect {
+gdb_test_multiple "i b" "cleared bp at line before routine" {
-re ".* breakpoint .* breakpoint .*$gdb_prompt $" {
fail "cleared bp at line before routine"
}
-re ".*3.*main.*31.*$gdb_prompt $" {
pass "cleared bp at line before routine"
}
- -re ".*$gdb_prompt $" {
- fail "cleared bp at line before routine (info b)"
- }
}
# Test some other "clear" combinations
gdb_test "b ending-run.c:1" ".*Breakpoint.*4.*"
gdb_test "b ending-run.c:14" ".*Note.*also.*Breakpoint.*5.*" "b ending-run.c:14, two"
gdb_test "cle ending-run.c:14" \
- ".*Deleted breakpoints 4 5.*" "Cleared 2 by line"
+ ".*Deleted breakpoint 5.*" "Cleared 2 by line"
-send_gdb "inf line ending-run.c:14\n"
-gdb_expect {
+gdb_test_multiple "info line ending-run.c:14" "" {
-re ".*address (0x\[0-9a-fA-F]*).*$gdb_prompt $" {
set line_nine $expect_out(1,string)
gdb_test "b ending-run.c:14" ".*Breakpoint 6.*ending-run.c, line 14.*"
gdb_test "b *$line_nine" ".*Note.*also.*Breakpoint 7.*" "Breakpoint 7 at *ending-run.c:14"
- gdb_test "cle" ".*Deleted breakpoints 6 7.*" "Clear 2 by default"
+ gdb_test "cle" ".*Deleted breakpoints 4 6 7.*" "Clear 2 by default"
}
-re ".*$gdb_prompt $" {
fail "need to fix test for new compile outcome"
}
}
-send_gdb "i b\n"
-gdb_expect {
+gdb_test_multiple "i b" "all set to continue" {
-re ".* breakpoint .* breakpoint .*$gdb_prompt $" {
fail "all set to continue (didn't clear bps)"
}
gdb_test "next" ".*Goodbye!.*32.*" \
"Step to return"
} else {
- gdb_test "next" "" ""
+ gdb_test "next" ".*" ""
}
set old_timeout $timeout
set timeout 50
set program_exited 0
-send_gdb "next\n"
set nexted 0
-gdb_expect {
- -re "33.*$gdb_prompt $" {
+
+gdb_test_multiple "next" "step out of main" {
+ -re "33\[ \t\]+\}.*$gdb_prompt $" {
# sometimes we stop at the closing brace, if so, do another next
if { $nexted } {
fail "step out of main"
# This is what happens on Cygwin.
pass "step out of main"
}
- -re ".*Program exited normally.*$gdb_prompt $" {
+ -re ".*WinMain.*$gdb_prompt $" {
+ # This is what happens on mingw32ce.
+ pass "step out of main"
+ }
+ -re ".*$inferior_exited_re normally.*$gdb_prompt $" {
# This is what happens on Linux i86 (and I would expect others)
set program_exited 1
pass "step out of main"
# This is what happens on ARM in thumb mode -fn 2000-02-01
pass "step out of main"
}
- -re ".*__rt_entry ().*$gdb_prompt $" {
+ -re ".*__rt_entry.* ().*$gdb_prompt $" {
# This is what happens on the ARM RVDS runtime
pass "step out of main"
}
# another `next' is necessary.
gdb_test "next" ".*in start_l ().*" "step out of main"
}
+ -re "E32Main (.*).*$gdb_prompt $" {
+ # On SymbianOS there's a different function which calls main.
+ pass "step out of main"
+ }
-re ".*in.*currently asm.*$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" }
+ -re ".*in.*__uClibc_main.*$gdb_prompt $" {
+ # This is what happens on system using uClibc.
+ pass "step out of main"
+ }
}
# When we're talking to a program running on a real stand-alone board,
set program_exited_normally 0
set program_not_exited 0
set program_in_exit 0
-if {! [target_info exists use_gdb_stub]
+if {!$use_gdb_stub
&& (! [target_info exists use_cygmon] || ! [target_info use_cygmon])} {
- global program_exited;
+ global program_exited
if {[eval expr $program_exited == 0]} {
- send_gdb "n\n"
- gdb_expect {
- -re "Program exited normally.*$gdb_prompt $" {
+ gdb_test_multiple "n" "step to end of run" {
+ -re "$inferior_exited_re normally.*$gdb_prompt $" {
# If we actually have debug info for the start function,
# 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\r\n.*Program exited normally.*$gdb_prompt $" {
+ -re "Single.*EXIT code 0\r\n.*$inferior_exited_re normally.*$gdb_prompt $" {
pass "step to end of run (status wrapper)"
set program_exited_normally 1
}
-re "Single.*EXIT code 0\r\n.*$gdb_prompt $" {
pass "step to end of run (status wrapper)"
}
- -re ".*Single.*Program exited.*$gdb_prompt $" {
+ -re ".*Single.*$inferior_exited_re.*$gdb_prompt $" {
pass "step to end of run"
set program_exited_normally 1
}
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
- }
}
}
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} {
}
}
+set timeout $old_timeout
+
#remote_exec build "rm -f ${binfile}"
return 0