diff options
45 files changed, 182 insertions, 110 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 634a4ea..9b2637a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2011-03-07 Tom Tromey <tromey@redhat.com> + * infrun.c (print_exited_reason): Include inferior id and pid in + message. + +2011-03-07 Tom Tromey <tromey@redhat.com> + * target.h (struct target_ops) <to_has_execution>: Add ptid_t parameter. (target_has_execution_1): Update. diff --git a/gdb/infrun.c b/gdb/infrun.c index 0584f16..7cee7c8 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -5487,22 +5487,33 @@ print_signal_exited_reason (enum target_signal siggnal) static void print_exited_reason (int exitstatus) { + struct inferior *inf = current_inferior (); + const char *pidstr = target_pid_to_str (pid_to_ptid (inf->pid)); + annotate_exited (exitstatus); if (exitstatus) { if (ui_out_is_mi_like_p (uiout)) ui_out_field_string (uiout, "reason", async_reason_lookup (EXEC_ASYNC_EXITED)); - ui_out_text (uiout, "\nProgram exited with code "); + ui_out_text (uiout, "[Inferior "); + ui_out_text (uiout, plongest (inf->num)); + ui_out_text (uiout, " ("); + ui_out_text (uiout, pidstr); + ui_out_text (uiout, ") exited with code "); ui_out_field_fmt (uiout, "exit-code", "0%o", (unsigned int) exitstatus); - ui_out_text (uiout, ".\n"); + ui_out_text (uiout, "]\n"); } else { if (ui_out_is_mi_like_p (uiout)) ui_out_field_string (uiout, "reason", async_reason_lookup (EXEC_ASYNC_EXITED_NORMALLY)); - ui_out_text (uiout, "\nProgram exited normally.\n"); + ui_out_text (uiout, "[Inferior "); + ui_out_text (uiout, plongest (inf->num)); + ui_out_text (uiout, " ("); + ui_out_text (uiout, pidstr); + ui_out_text (uiout, ") exited normally]\n"); } /* Support the --return-child-result option. */ return_child_result_value = exitstatus; diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index fb954bd..e2d32a3 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,64 @@ +2011-03-07 Tom Tromey <tromey@redhat.com> + + * lib/opencl.exp (skip_opencl_tests): Update for exit message + change. + * lib/mi-support.exp (mi_gdb_test): Update for exit message + change. + * lib/gdb.exp (gdb_test_multiple): Update comment. Update for + exit message change. + (skip_altivec_tests): Update for exit message change. + (skip_vsx_tests): Likewise. + (gdb_continue_to_end): Likewise. Add 'command' argument. + * lib/cell.exp (skip_cell_tests): Update for exit message change. + * gdb.threads/tls.exp: Update for exit message change. + * gdb.threads/thread-unwindonsignal.exp: Use + gdb_continue_to_end. + * gdb.threads/step.exp (step_it): Update for exit message change. + (continue_all): Likewise. + * gdb.threads/print-threads.exp (test_all_threads): Update for + exit message change. + * gdb.threads/interrupted-hand-call.exp: Use + gdb_continue_to_end. + * gdb.threads/execl.exp: Use gdb_continue_to_end. + * gdb.python/py-prettyprint.exp (run_lang_tests): Use + gdb_continue_to_end. + * gdb.hp/gdb.objdbg/objdbg02.exp: Use gdb_continue_to_end. + * gdb.hp/gdb.objdbg/objdbg01.exp: Use gdb_continue_to_end. + * gdb.hp/gdb.defects/solib-d.exp: Update for exit message change. + * gdb.cp/method.exp: Update for exit message change. + * gdb.cp/mb-templates.exp: Update for exit message change. + * gdb.cp/mb-inline.exp: Use gdb_continue_to_end. + * gdb.cp/annota3.exp: Update for exit message change. + * gdb.cp/annota2.exp: Update for exit message change. + * gdb.cell/fork.exp: Use gdb_continue_to_end. + * gdb.base/term.exp: Update for exit message change. + * gdb.base/step-test.exp (test_i): Update for exit message change. + * gdb.base/sigstep.exp (advance): Update for exit message change. + (advancei): Likewise. + * gdb.base/siginfo.exp: Update for exit message change. + * gdb.base/shlib-call.exp: Use gdb_continue_to_end. + * gdb.base/reread.exp: Use gdb_continue_to_end. + * gdb.base/langs.exp: Use gdb_continue_to_end. + * gdb.base/interrupt.exp: Update for exit message change. + * gdb.base/gdb1555.exp: Update for exit message change. + * gdb.base/exe-lock.exp: Use gdb_continue_to_end. + * gdb.base/ending-run.exp: Update for exit message change. + * gdb.base/chng-syms.exp: Update for exit message change. + * gdb.base/checkpoint.exp: Update for exit message change. + * gdb.base/catch-syscall.exp (check_for_program_end): Use + gdb_continue_to_end. + (test_catch_syscall_with_wrong_args): Likewise. + * gdb.base/call-signal-resume.exp: Use gdb_continue_to_end. + * gdb.base/break-interp.exp (test_ld): Update for exit message + change. + * gdb.base/bang.exp: Update for exit message change. + * gdb.base/attach.exp (do_attach_tests): Use gdb_continue_to_end. + (do_call_attach_tests): Likewise. + * gdb.base/a2-run.exp: Update for exit message change. + * gdb.arch/ppc-dfp.exp: Update for exit message change. + * gdb.ada/tasks.exp: Use gdb_continue_to_end. + * gdb.ada/catch_ex.exp: Use gdb_continue_to_end. + 2011-03-05 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.base/help.exp (help thread find): Fix one forgotten quote. diff --git a/gdb/testsuite/gdb.ada/catch_ex.exp b/gdb/testsuite/gdb.ada/catch_ex.exp index b0a4000..6a98089 100644 --- a/gdb/testsuite/gdb.ada/catch_ex.exp +++ b/gdb/testsuite/gdb.ada/catch_ex.exp @@ -141,8 +141,6 @@ gdb_test "continue" \ "Continuing\.$eol$catchpoint_msg$eol.*SPOT4" \ "continuing to unhandled exception" -gdb_test "continue" \ - "Continuing\..*Program exited.*" \ - "continuing to program completion" +gdb_continue_to_end diff --git a/gdb/testsuite/gdb.ada/tasks.exp b/gdb/testsuite/gdb.ada/tasks.exp index bced9f8..aa8bf46 100644 --- a/gdb/testsuite/gdb.ada/tasks.exp +++ b/gdb/testsuite/gdb.ada/tasks.exp @@ -70,7 +70,5 @@ gdb_test "info tasks" \ # Now, resume the execution and make sure that GDB does not stop when # task 4 hits the breakpoint. Continuing thus results in our program # running to completion. -gdb_test "continue" \ - ".*Program exited normally\..*" \ - "continue until end of program" +gdb_continue_to_end diff --git a/gdb/testsuite/gdb.arch/ppc-dfp.exp b/gdb/testsuite/gdb.arch/ppc-dfp.exp index 10fbd3c..bf20b89 100644 --- a/gdb/testsuite/gdb.arch/ppc-dfp.exp +++ b/gdb/testsuite/gdb.arch/ppc-dfp.exp @@ -59,7 +59,7 @@ gdb_run_cmd # When the prompt comes back we'll be at the Set DFP rounding mode breakpoint. # Unless the program bails out after checking AT_HWCAP. gdb_expect { - -re "Program exited with code 01.\[\r\n\]+$gdb_prompt $" { + -re "$inferior_exited_re with code 01.\[\r\n\]+$gdb_prompt $" { unsupported "This machine doesn't support Decimal Floating Point." return -1 } diff --git a/gdb/testsuite/gdb.base/a2-run.exp b/gdb/testsuite/gdb.base/a2-run.exp index d26a202..cb1e6fd 100644 --- a/gdb/testsuite/gdb.base/a2-run.exp +++ b/gdb/testsuite/gdb.base/a2-run.exp @@ -42,7 +42,7 @@ if [istarget "*-*-vxworks*"] then { set timeout 120 verbose "Timeout is now $timeout seconds" 2 gdb_expect { - "Program exited normally" { + "$inferior_exited_re normally" { unresolved "run \"$testfile\" with no args" } -re "usage: factorial <number>" { @@ -57,19 +57,19 @@ if [istarget "*-*-vxworks*"] then { gdb_expect -re "$gdb_prompt $" {} } else { gdb_expect { - -re ".*usage: factorial <number>.*Program exited with code 01\.\r\n$gdb_prompt $" { + -re ".*usage: factorial <number>.*$inferior_exited_re with code 01.\r\n$gdb_prompt $" { pass "run \"$testfile\" with no args" pass "no spurious messages at program exit" } - -re ".*usage: factorial <number>.*Program exited with code 01.*$gdb_prompt $" { + -re ".*usage: factorial <number>.*$inferior_exited_re with code 01.*$gdb_prompt $" { pass "run \"$testfile\" with no args" fail "no spurious messages at program exit" } - -re ".*usage: factorial <number>.* EXIT code 1.*Program exited normally\.\r\n$gdb_prompt $" { + -re ".*usage: factorial <number>.* EXIT code 1.*$inferior_exited_re normally.\r\n$gdb_prompt $" { pass "run \"$testfile\" with no args (exit wrapper)" pass "no spurious messages at program exit" } - -re ".*usage: factorial <number>.* EXIT code 1.*Program exited normally.*$gdb_prompt $" { + -re ".*usage: factorial <number>.* EXIT code 1.*$inferior_exited_re normally.*$gdb_prompt $" { pass "run \"$testfile\" with no args (exit wrapper)" fail "no spurious messages at program exit" } @@ -97,7 +97,7 @@ if [istarget "*-*-vxworks*"] then { set timeout 120 verbose "Timeout is now $timeout seconds" 2 gdb_expect { - "Program exited normally" { + "$inferior_exited_re normally" { unresolved "run \"$testfile\" with arg" } "120" { @@ -129,7 +129,7 @@ if [istarget "*-*-vxworks*"] then { set timeout 120 verbose "Timeout is now $timeout seconds" 2 gdb_expect { - "Program exited normally" { + "$inferior_exited_re normally" { unresolved "run \"$testfile\" again with same args" } "120" { pass "run \"$testfile\" again with same args" } @@ -161,7 +161,7 @@ if [istarget "*-*-vxworks*"] then { set timeout 120 verbose "Timeout is now $timeout seconds" 2 gdb_expect { - "Program exited normally" { + "$inferior_exited_re normally" { unresolved "run after setting args to nil" } "usage: factorial <number>" { @@ -202,7 +202,7 @@ if [istarget "*-*-vxworks*"] then { set timeout 120 verbose "Timeout is now $timeout seconds" 2 gdb_expect { - "Program exited normally" { + "$inferior_exited_re normally" { unresolved "run \"$testfile\" again after setting args" } "720" { diff --git a/gdb/testsuite/gdb.base/attach.exp b/gdb/testsuite/gdb.base/attach.exp index 78df003..654ad7a 100644 --- a/gdb/testsuite/gdb.base/attach.exp +++ b/gdb/testsuite/gdb.base/attach.exp @@ -258,7 +258,7 @@ proc do_attach_tests {} { # Allow the test process to exit, to cleanup after ourselves. - gdb_test "continue" "Program exited normally." "after attach2, exit" + gdb_continue_to_end "after attach2, exit" # Make sure we don't leave a process around to confuse # the next test run (and prevent the compile by keeping @@ -365,7 +365,7 @@ proc do_call_attach_tests {} { # Get rid of the process gdb_test "p should_exit = 1" - gdb_test "c" "Program exited normally." + gdb_continue_to_end # Be paranoid diff --git a/gdb/testsuite/gdb.base/bang.exp b/gdb/testsuite/gdb.base/bang.exp index efe2295..9326311 100644 --- a/gdb/testsuite/gdb.base/bang.exp +++ b/gdb/testsuite/gdb.base/bang.exp @@ -39,7 +39,7 @@ gdb_load ${binfile} gdb_run_cmd gdb_expect { - -re ".*Program exited normally.*$gdb_prompt $" { + -re ".*$inferior_exited_re normally.*$gdb_prompt $" { pass "run program" } timeout { diff --git a/gdb/testsuite/gdb.base/break-interp.exp b/gdb/testsuite/gdb.base/break-interp.exp index 3df4dcb..fe79cae 100644 --- a/gdb/testsuite/gdb.base/break-interp.exp +++ b/gdb/testsuite/gdb.base/break-interp.exp @@ -365,7 +365,7 @@ proc test_attach {file displacement {relink_args ""}} { } proc test_ld {file ifmain trynosym displacement} { - global srcdir subdir gdb_prompt expect_out + global srcdir subdir gdb_prompt expect_out inferior_exited_re # First test normal `file'-command loaded $FILE with symbols. @@ -494,7 +494,7 @@ proc test_ld {file ifmain trynosym displacement} { } exp_continue } - -re "Program exited (normally|with code \[0-9\]+)\\.\r\n$gdb_prompt $" { + -re "$inferior_exited_re (normally|with code \[0-9\]+).\r\n$gdb_prompt $" { # Do not check the binary filename as it may be truncated. pass $test } diff --git a/gdb/testsuite/gdb.base/call-signal-resume.exp b/gdb/testsuite/gdb.base/call-signal-resume.exp index b85691c..c8ca941 100644 --- a/gdb/testsuite/gdb.base/call-signal-resume.exp +++ b/gdb/testsuite/gdb.base/call-signal-resume.exp @@ -146,7 +146,6 @@ gdb_test "continue" "Breakpoint \[0-9\]*, handle_signal.*" \ # Continue one last time, the program should exit normally. -gdb_test "continue" "Program exited normally." \ - "continue to program exit" +gdb_continue_to_end return 0 diff --git a/gdb/testsuite/gdb.base/catch-syscall.exp b/gdb/testsuite/gdb.base/catch-syscall.exp index d25df17..96884c4 100644 --- a/gdb/testsuite/gdb.base/catch-syscall.exp +++ b/gdb/testsuite/gdb.base/catch-syscall.exp @@ -166,8 +166,7 @@ proc check_for_program_end {} { # Deleting the catchpoints delete_breakpoints - set thistest "successful program end" - gdb_test "continue" "Program exited normally.*" $thistest + gdb_continue_to_end } @@ -231,7 +230,7 @@ proc test_catch_syscall_with_wrong_args {} { # If it doesn't, everything is right (since we don't have # a syscall named "mlock" in it). Otherwise, this is a failure. set thistest "catch syscall with unused syscall ($syscall_name)" - gdb_test "continue" "Program exited normally.*" $thistest + gdb_continue_to_end $thistest } proc test_catch_syscall_restarting_inferior {} { diff --git a/gdb/testsuite/gdb.base/checkpoint.exp b/gdb/testsuite/gdb.base/checkpoint.exp index f34b0d1..c3b2008 100644 --- a/gdb/testsuite/gdb.base/checkpoint.exp +++ b/gdb/testsuite/gdb.base/checkpoint.exp @@ -277,23 +277,23 @@ gdb_test "print ftell (out) > 100000" " = 1.*" "outfile still open 10" delete_breakpoints gdb_test "continue" \ - "Deleting copy.*Program exited normally.*Switching to.*" \ + "Deleting copy.*$inferior_exited_re normally.*Switching to.*" \ "Exit, dropped into next fork one" gdb_test "continue" \ - "Deleting copy.*Program exited normally.*Switching to.*" \ + "Deleting copy.*$inferior_exited_re normally.*Switching to.*" \ "Exit, dropped into next fork two" gdb_test "continue" \ - "Deleting copy.*Program exited normally.*Switching to.*" \ + "Deleting copy.*$inferior_exited_re normally.*Switching to.*" \ "Exit, dropped into next fork three" gdb_test "continue" \ - "Deleting copy.*Program exited normally.*Switching to.*" \ + "Deleting copy.*$inferior_exited_re normally.*Switching to.*" \ "Exit, dropped into next fork four" gdb_test "continue" \ - "Deleting copy.*Program exited normally.*Switching to.*" \ + "Deleting copy.*$inferior_exited_re normally.*Switching to.*" \ "Exit, dropped into next fork five" # diff --git a/gdb/testsuite/gdb.base/chng-syms.exp b/gdb/testsuite/gdb.base/chng-syms.exp index d2567e7..9478d0c 100644 --- a/gdb/testsuite/gdb.base/chng-syms.exp +++ b/gdb/testsuite/gdb.base/chng-syms.exp @@ -100,7 +100,7 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb gdb_run_cmd gdb_expect { - -re ".*Program exited normally.*$gdb_prompt $" { + -re ".*$inferior_exited_re normally.*$gdb_prompt $" { pass "running with invalidated bpt condition after executable changes" } -re ".*Breakpoint .*,( 0x.* in)? (\[^ \]*)exit .*$gdb_prompt $" { diff --git a/gdb/testsuite/gdb.base/ending-run.exp b/gdb/testsuite/gdb.base/ending-run.exp index 43c46f8..9d1134d 100644 --- a/gdb/testsuite/gdb.base/ending-run.exp +++ b/gdb/testsuite/gdb.base/ending-run.exp @@ -146,7 +146,7 @@ gdb_test_multiple "next" "step out of main" { # This is what happens on mingw32ce. pass "step out of main" } - -re ".*Program exited normally.*$gdb_prompt $" { + -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" @@ -209,21 +209,21 @@ if {! [target_info exists use_gdb_stub] global program_exited; if {[eval expr $program_exited == 0]} { gdb_test_multiple "n" "step to end of run" { - -re "Program exited normally.*$gdb_prompt $" { + -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 } diff --git a/gdb/testsuite/gdb.base/exe-lock.exp b/gdb/testsuite/gdb.base/exe-lock.exp index e4bbbbe..0ac0672 100644 --- a/gdb/testsuite/gdb.base/exe-lock.exp +++ b/gdb/testsuite/gdb.base/exe-lock.exp @@ -50,9 +50,7 @@ if ![runto_main] then { continue } -gdb_test "continue" \ - ".*Program exited normally\\." \ - "continue until program exits" +gdb_continue_to_end # Try deleting the executable file, now that the program has exited, # and make sure that the deletion worked by verifying that the exe diff --git a/gdb/testsuite/gdb.base/gdb1555.exp b/gdb/testsuite/gdb.base/gdb1555.exp index 8c3e8ba..ed6b073 100644 --- a/gdb/testsuite/gdb.base/gdb1555.exp +++ b/gdb/testsuite/gdb.base/gdb1555.exp @@ -77,7 +77,7 @@ gdb_test_multiple "n" $name \ -re "\[0-9\]+.*return a;.*$gdb_prompt $" { pass $name } - -re "Single stepping until exit from function .*, \r\nwhich has no line number information.\r\n\r\nProgram exited normally.*$gdb_prompt $" { + -re "Single stepping until exit from function .*, \r\nwhich has no line number information.\r\n\r\n$inferior_exited_re normally.*$gdb_prompt $" { kfail "gdb/1555" $name } } diff --git a/gdb/testsuite/gdb.base/interrupt.exp b/gdb/testsuite/gdb.base/interrupt.exp index cce7fca..4562199 100644 --- a/gdb/testsuite/gdb.base/interrupt.exp +++ b/gdb/testsuite/gdb.base/interrupt.exp @@ -201,7 +201,7 @@ if ![file exists $binfile] then { send_gdb "\004" gdb_expect { - -re "end of file.*Program exited normally.*$gdb_prompt $" { + -re "end of file.*$inferior_exited_re normally.*$gdb_prompt $" { pass "send end of file" } -re "$gdb_prompt $" { fail "send end of file" } diff --git a/gdb/testsuite/gdb.base/langs.exp b/gdb/testsuite/gdb.base/langs.exp index a42f2d8..e4f3450 100644 --- a/gdb/testsuite/gdb.base/langs.exp +++ b/gdb/testsuite/gdb.base/langs.exp @@ -142,13 +142,7 @@ if [runto csub] then { if [target_info exists gdb,noresults] { return } - if [target_info exists use_gdb_stub] { - gdb_breakpoint "exit" - gdb_test "cont" "Breakpoint .*exit.*" "continue to exit in langs.exp" - } else { - gdb_test "cont" "Program exited normally\\..*" \ - "continue to exit in langs.exp" - } + gdb_continue_to_end "langs.exp" } gdb_exit diff --git a/gdb/testsuite/gdb.base/reread.exp b/gdb/testsuite/gdb.base/reread.exp index e562285..78d1126 100644 --- a/gdb/testsuite/gdb.base/reread.exp +++ b/gdb/testsuite/gdb.base/reread.exp @@ -149,8 +149,7 @@ if [is_remote target] { # This time, let the program run to completion. If GDB checks the # executable file's timestamp now, it won't notice any change. - gdb_test "continue" ".*Program exited.*" \ - "second pass: continue to completion" + gdb_continue_to_end "second pass" # Now move the newer executable into place, and re-run. GDB # should still notice that the executable file has changed, diff --git a/gdb/testsuite/gdb.base/shlib-call.exp b/gdb/testsuite/gdb.base/shlib-call.exp index f8601c7..ba484f0 100644 --- a/gdb/testsuite/gdb.base/shlib-call.exp +++ b/gdb/testsuite/gdb.base/shlib-call.exp @@ -182,12 +182,12 @@ if ![is_remote target] { gdb_test "run" "Starting program:.*Breakpoint .,.*" \ "run to bp in shared library" - gdb_test "cont" ".*Program exited normally..*" + gdb_continue_to_end gdb_test "run" "Starting program:.*Breakpoint .,.*" \ "re-run to bp in shared library (PR's 16495, 18213)" - gdb_test "cont" ".*Program exited normally..*" + gdb_continue_to_end } return 0 diff --git a/gdb/testsuite/gdb.base/siginfo.exp b/gdb/testsuite/gdb.base/siginfo.exp index db9fd5c..602c63b 100644 --- a/gdb/testsuite/gdb.base/siginfo.exp +++ b/gdb/testsuite/gdb.base/siginfo.exp @@ -83,7 +83,7 @@ gdb_test_multiple "step" "${test}" { send_gdb "step\n" exp_continue } - -re "Program exited normally.*${gdb_prompt} $" { + -re "$inferior_exited_re normally.*${gdb_prompt} $" { kfail gdb/1613 "$test (program exited)" } -re "(while ..done|return 0).*${gdb_prompt} $" { diff --git a/gdb/testsuite/gdb.base/sigstep.exp b/gdb/testsuite/gdb.base/sigstep.exp index 98e0e3d..d43cf0a 100644 --- a/gdb/testsuite/gdb.base/sigstep.exp +++ b/gdb/testsuite/gdb.base/sigstep.exp @@ -68,7 +68,7 @@ gdb_test_sequence "bt" "backtrace for nexti" { } proc advance { i } { - global gdb_prompt + global gdb_prompt inferior_exited_re set prefix "$i from handler" # Get us back into the handler @@ -88,7 +88,7 @@ proc advance { i } { send_gdb "$i\n" exp_continue -continue_timer } - -re "Program exited normally.*${gdb_prompt} $" { + -re "$inferior_exited_re normally.*${gdb_prompt} $" { setup_kfail gdb/1639 powerpc-*-*bsd* fail "$test (program exited)" } @@ -105,7 +105,7 @@ proc advance { i } { } proc advancei { i } { - global gdb_prompt + global gdb_prompt inferior_exited_re set prefix "$i from handleri" set program_exited 0 @@ -144,7 +144,7 @@ proc advancei { i } { -re "main .*${gdb_prompt} $" { fail "$test (in main)" } - -re "Program exited normally.*${gdb_prompt} $" { + -re "$inferior_exited_re normally.*${gdb_prompt} $" { fail "$test (program exited)" set program_exited 1 } @@ -170,7 +170,7 @@ proc advancei { i } { send_gdb "y\n" exp_continue -continue_timer } - -re "Program exited normally.*${gdb_prompt} $" { + -re "$inferior_exited_re normally.*${gdb_prompt} $" { kfail gdb/1639 "$test (program exited)" set program_exited 1 } diff --git a/gdb/testsuite/gdb.base/step-test.exp b/gdb/testsuite/gdb.base/step-test.exp index 1c48812..24116d6 100644 --- a/gdb/testsuite/gdb.base/step-test.exp +++ b/gdb/testsuite/gdb.base/step-test.exp @@ -150,7 +150,7 @@ gdb_test_multiple "finish" "$test" { -re ".*${decimal}.*callee.*NEXTI.*$gdb_prompt $" { pass "$test" } - -re ".*(Program received|Program exited).*$gdb_prompt $" { + -re ".*(Program received|$inferior_exited_re).*$gdb_prompt $" { # Oops... We ran to the end of the program... Better reset if {![runto_main]} then { fail "$test (Can't run to main)" diff --git a/gdb/testsuite/gdb.base/term.exp b/gdb/testsuite/gdb.base/term.exp index 049a88b..d4d1d83 100644 --- a/gdb/testsuite/gdb.base/term.exp +++ b/gdb/testsuite/gdb.base/term.exp @@ -47,7 +47,7 @@ gdb_test_no_output "set width 0" gdb_test "info terminal" "No saved terminal information.*" "test info terminal" gdb_run_cmd 5 gdb_expect { - -re ".*120.*Program exited normally.*$gdb_prompt $" { + -re ".*120.*$inferior_exited_re normally.*$gdb_prompt $" { gdb_test "info terminal" "No saved terminal information.*" "test info terminal #2" } default { diff --git a/gdb/testsuite/gdb.cell/fork.exp b/gdb/testsuite/gdb.cell/fork.exp index 3fdfc25..ad5c75a 100644 --- a/gdb/testsuite/gdb.cell/fork.exp +++ b/gdb/testsuite/gdb.cell/fork.exp @@ -77,8 +77,7 @@ gdb_test_no_output "delete \$bpnum" "delete watchpoint" gdb_test "continue" "Continuing\\..*Breakpoint \[0-9\]+, func \\(\\) at .*$spu_file.c:.*" \ "run until breakpoint hit" -gdb_test "continue" "Continuing\\..*Program exited normally.*" \ - "run until end" +gdb_continue_to_end gdb_exit diff --git a/gdb/testsuite/gdb.cp/annota2.exp b/gdb/testsuite/gdb.cp/annota2.exp index a48e2ea..4092a43 100644 --- a/gdb/testsuite/gdb.cp/annota2.exp +++ b/gdb/testsuite/gdb.cp/annota2.exp @@ -116,7 +116,7 @@ gdb_test_multiple "print a" "print class" { # `a.x is 1' is asynchronous regarding to `frames-invalid'. # gdb_test_multiple "continue" "continue until exit" { - -re "\r\n\032\032post-prompt\r\nContinuing.\r\n\r\n\032\032starting\(\r\n\r\n\032\032frames-invalid\)*\r\na.x is 1\r\n\(\r\n\032\032frames-invalid\r\n\)*\r\n\032\032exited 0\r\n\r\nProgram exited normally.\r\n\r\n\032\032stopped\r\n$gdb_prompt$" { + -re "\r\n\032\032post-prompt\r\nContinuing.\r\n\r\n\032\032starting\(\r\n\r\n\032\032frames-invalid\)*\r\na.x is 1\r\n\(\r\n\032\032frames-invalid\r\n\)*\r\n\032\032exited 0\r\n.$inferior_exited_re normally.\r\n\r\n\032\032stopped\r\n$gdb_prompt$" { pass "continue until exit" } } diff --git a/gdb/testsuite/gdb.cp/annota3.exp b/gdb/testsuite/gdb.cp/annota3.exp index 17021fb..a2b5d22 100644 --- a/gdb/testsuite/gdb.cp/annota3.exp +++ b/gdb/testsuite/gdb.cp/annota3.exp @@ -122,8 +122,7 @@ gdb_expect_list "continue to exit" "$gdb_prompt$" { "\r\n\032\032starting\r\n" "a.x is 1\r\n" "\r\n\032\032exited 0\r\n" - "\r\n" - "Program exited normally.\r\n" + ".$inferior_exited_re normally.\r\n" "\r\n\032\032stopped\r\n" } diff --git a/gdb/testsuite/gdb.cp/mb-inline.exp b/gdb/testsuite/gdb.cp/mb-inline.exp index 46d7cc2..c8f90d0 100644 --- a/gdb/testsuite/gdb.cp/mb-inline.exp +++ b/gdb/testsuite/gdb.cp/mb-inline.exp @@ -101,9 +101,7 @@ gdb_expect { } } -gdb_test "continue" \ - ".*Program exited normally.*" \ - "continue with disabled breakpoint 1.2" +gdb_continue_to_end "disabled breakpoint 1.2" # Make sure we can set a breakpoint on a source statement that spans # multiple lines. diff --git a/gdb/testsuite/gdb.cp/mb-templates.exp b/gdb/testsuite/gdb.cp/mb-templates.exp index 2f8f091..80c080b 100644 --- a/gdb/testsuite/gdb.cp/mb-templates.exp +++ b/gdb/testsuite/gdb.cp/mb-templates.exp @@ -129,7 +129,7 @@ gdb_test_no_output "disable 1" "disable breakpoint: disable" gdb_run_cmd gdb_expect { - -re "Program exited normally.*$gdb_prompt $" { + -re "$inferior_exited_re normally.*$gdb_prompt $" { pass "disable breakpoint: run to breakpoint" } -re "$gdb_prompt $" { diff --git a/gdb/testsuite/gdb.cp/method.exp b/gdb/testsuite/gdb.cp/method.exp index 848a06d..fff718d 100644 --- a/gdb/testsuite/gdb.cp/method.exp +++ b/gdb/testsuite/gdb.cp/method.exp @@ -175,10 +175,10 @@ gdb_test_multiple "ptype A" "ptype A" { } gdb_test_multiple "cont" "finish program" { - -re "Continuing.\r\n\r\nProgram exited normally.*$gdb_prompt $" { + -re "Continuing.\r\n$inferior_exited_re normally.*$gdb_prompt $" { pass "finish program" } - -re "Continuing.* EXIT code 0.*Program exited normally.*$gdb_prompt $" { + -re "Continuing.* EXIT code 0.*$inferior_exited_re normally.*$gdb_prompt $" { pass "finish program (exit wrapper)" } } diff --git a/gdb/testsuite/gdb.hp/gdb.defects/solib-d.exp b/gdb/testsuite/gdb.hp/gdb.defects/solib-d.exp index 497f7de..6be6d44 100644 --- a/gdb/testsuite/gdb.hp/gdb.defects/solib-d.exp +++ b/gdb/testsuite/gdb.hp/gdb.defects/solib-d.exp @@ -132,7 +132,7 @@ gdb_expect { -re ".*solib-d1.*$gdb_prompt $" { pass "Catch implicit load at startup" } - -re "Program exited.*$gdb_prompt $" { + -re "Inferior \[0-9\]+ exited.*$gdb_prompt $" { fail "CLLbs14756 || CLLbs16090 came back ???" } timeout { fail "(timeout) implicit library load" } @@ -228,7 +228,7 @@ gdb_expect { -re "Stopped due to shared library event.*$gdb_prompt $" { pass "stop for shlib event" } - -re "Program exited.*$gdb_prompt $" { + -re "Inferior \[0-9\]+ exited.*$gdb_prompt $" { fail "Bug CLLbs16090 came back ?" } timeout { fail "(timeout) stop for shlib event " } diff --git a/gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01.exp b/gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01.exp index f743825..b4e33d1 100644 --- a/gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01.exp +++ b/gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01.exp @@ -130,10 +130,10 @@ for {set filenum 0} {$filenum < 2} {incr filenum 1} { gdb_test "s 1" ".*25.*" if [istarget "hppa64-*-*"] { gdb_test "s 1" "0x\[0-9a-f\]+ in .*" - gdb_test "c" ".*Program exited normally.*" + gdb_continue_to_end } else { gdb_test "s 1" "0x\[0-9a-f\]+ in _start .*" - gdb_test "s 1" ".*Program exited normally.*" + gdb_continue_to_end "" "s 1" } } diff --git a/gdb/testsuite/gdb.hp/gdb.objdbg/objdbg02.exp b/gdb/testsuite/gdb.hp/gdb.objdbg/objdbg02.exp index c336498..027c77e 100644 --- a/gdb/testsuite/gdb.hp/gdb.objdbg/objdbg02.exp +++ b/gdb/testsuite/gdb.hp/gdb.objdbg/objdbg02.exp @@ -78,9 +78,9 @@ gdb_test "s 1" "main .*/x1.cc:15.*" gdb_test "s 1" ".*16.*" if [istarget "hppa64-*-*"] { gdb_test "s 1" "0x\[0-9a-f\]+ in .*START.*" - gdb_test "c" ".*Program exited normally.*" + gdb_continue_to_end } else { gdb_test "s 1" "0x\[0-9a-f\]+ in _start .*" - gdb_test "s 1" ".*Program exited normally.*" + gdb_continue_to_end "" "s 1" } diff --git a/gdb/testsuite/gdb.python/py-prettyprint.exp b/gdb/testsuite/gdb.python/py-prettyprint.exp index 81de5a2..c5033c9 100644 --- a/gdb/testsuite/gdb.python/py-prettyprint.exp +++ b/gdb/testsuite/gdb.python/py-prettyprint.exp @@ -105,7 +105,7 @@ proc run_lang_tests {lang} { gdb_test "print nstype" " = {.0. = 7, .1. = 42}" \ "print nstype on one line" - gdb_test "continue" "Program exited normally\." + gdb_continue_to_end remote_file host delete ${remote_python_file} } diff --git a/gdb/testsuite/gdb.threads/execl.exp b/gdb/testsuite/gdb.threads/execl.exp index 863c7cf..111068d 100644 --- a/gdb/testsuite/gdb.threads/execl.exp +++ b/gdb/testsuite/gdb.threads/execl.exp @@ -71,5 +71,4 @@ gdb_test_multiple "info threads" "$test" { } } -gdb_test "continue" ".*Program exited normally\\." \ - "continue to end" +gdb_continue_to_end diff --git a/gdb/testsuite/gdb.threads/interrupted-hand-call.exp b/gdb/testsuite/gdb.threads/interrupted-hand-call.exp index cb0bc3d..865bc2f 100644 --- a/gdb/testsuite/gdb.threads/interrupted-hand-call.exp +++ b/gdb/testsuite/gdb.threads/interrupted-hand-call.exp @@ -86,7 +86,6 @@ gdb_test_multiple "maint print dummy-frames" "dummy frame popped" { # Continue one last time, the program should exit normally. -gdb_test "continue" "Program exited normally." \ - "continue to program exit" +gdb_continue_to_end return 0 diff --git a/gdb/testsuite/gdb.threads/print-threads.exp b/gdb/testsuite/gdb.threads/print-threads.exp index d221fbd..6cf42ef 100644 --- a/gdb/testsuite/gdb.threads/print-threads.exp +++ b/gdb/testsuite/gdb.threads/print-threads.exp @@ -59,7 +59,7 @@ if ![istarget "*-*-ultrix*"] then { } proc test_all_threads { name kill } { - global gdb_prompt + global gdb_prompt inferior_exited_re set i 0 set j 0 @@ -80,7 +80,7 @@ proc test_all_threads { name kill } { send_gdb "continue\n" exp_continue } - -re "Program exited normally\\.\[\r\n\]+$gdb_prompt" { + -re "$inferior_exited_re normally.\[\r\n\]+$gdb_prompt" { pass "program exited normally" if {$i == 5} { pass "all threads ran once ($name)" diff --git a/gdb/testsuite/gdb.threads/step.exp b/gdb/testsuite/gdb.threads/step.exp index c051196..36c0403 100644 --- a/gdb/testsuite/gdb.threads/step.exp +++ b/gdb/testsuite/gdb.threads/step.exp @@ -57,12 +57,13 @@ proc set_bp { where } { proc step_it { cmd } { global gdb_prompt global program_exited + global inferior_exited_re send_gdb "$cmd\n" gdb_expect { -re "0x\[0-9A-Fa-f\]* *in.*\r\n$gdb_prompt $" { pass "step_it"; return 0 } -re "0x\[0-9A-Fa-f\]* *\[0-9\]*.*\r\n$gdb_prompt $" { pass "step_it"; return 1 } - -re "Program exited .*\n$gdb_prompt $" { + -re "$inferior_exited_re .*\n$gdb_prompt $" { set program_exited 1 return -1 } @@ -81,6 +82,7 @@ proc step_source {} { proc continue_all {} { global gdb_prompt + global inferior_exited_re send_gdb "continue\n" gdb_expect { @@ -88,7 +90,7 @@ proc continue_all {} { pass "continue_all" return 0 } - -re "Program exited .*\n$gdb_prompt $" { + -re "$inferior_exited_re .*\n$gdb_prompt $" { set program_exited 1 return 1; } diff --git a/gdb/testsuite/gdb.threads/thread-unwindonsignal.exp b/gdb/testsuite/gdb.threads/thread-unwindonsignal.exp index 6faabf5..c6ae1a5 100644 --- a/gdb/testsuite/gdb.threads/thread-unwindonsignal.exp +++ b/gdb/testsuite/gdb.threads/thread-unwindonsignal.exp @@ -110,7 +110,6 @@ gdb_test_multiple "maint print dummy-frames" "dummy frame popped" { # Continue one last time, the program should exit normally. -gdb_test "continue" "Program exited normally." \ - "continue to program exit" +gdb_continue_to_end return 0 diff --git a/gdb/testsuite/gdb.threads/tls.exp b/gdb/testsuite/gdb.threads/tls.exp index 0e63120..d7dce0db 100644 --- a/gdb/testsuite/gdb.threads/tls.exp +++ b/gdb/testsuite/gdb.threads/tls.exp @@ -177,7 +177,7 @@ gdb_expect { unsupported "continue to first thread: system does not support TLS" return -1 } - -re ".*Program exited normally.*$gdb_prompt $" { + -re ".*$inferior_exited_re normally.*$gdb_prompt $" { fail "continue to first thread: program runaway" } -re ".*Pass 0 done.*Pass 1 done.*$gdb_prompt $" { diff --git a/gdb/testsuite/lib/cell.exp b/gdb/testsuite/lib/cell.exp index 4cc7ee0..75ac210 100644 --- a/gdb/testsuite/lib/cell.exp +++ b/gdb/testsuite/lib/cell.exp @@ -72,7 +72,7 @@ proc gdb_cell_embedspu {source dest options} { # Return 0 if so, 1 if it does not. proc skip_cell_tests {} { global skip_cell_tests_saved - global srcdir subdir gdb_prompt + global srcdir subdir gdb_prompt inferior_exited_re # Use the cached value, if it exists. set me "skip_cell_tests" @@ -136,11 +136,11 @@ proc skip_cell_tests {} { gdb_load "$exe" gdb_run_cmd gdb_expect { - -re ".*Program exited normally.*${gdb_prompt} $" { + -re ".*$inferior_exited_re normally.*${gdb_prompt} $" { verbose -log "\n$me: Cell/B.E. hardware detected" set skip_cell_tests_saved 0 } - -re ".*Program exited with code.*${gdb_prompt} $" { + -re ".*$inferior_exited_re with code.*${gdb_prompt} $" { verbose -log "\n$me: Cell/B.E. hardware not detected" set skip_cell_tests_saved 1 } diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 44d449a..3af8568 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -99,6 +99,8 @@ if ![info exists env(EXEEXT)] { set octal "\[0-7\]+" +set inferior_exited_re "Inferior \[0-9\]+ \\(.*\\) exited" + ### Only procedures should come after this point. # @@ -572,13 +574,14 @@ proc gdb_internal_error_resync {} { # } # } # -# The standard patterns, such as "Program exited..." and "A problem +# The standard patterns, such as "Inferior exited..." and "A problem # ...", all being implicitly appended to that list. # proc gdb_test_multiple { command message user_code } { global verbose global gdb_prompt global GDB + global inferior_exited_re upvar timeout timeout upvar expect_out expect_out @@ -755,7 +758,7 @@ proc gdb_test_multiple { command message user_code } { fail "$message" set result 1 } - -re "Program exited with code \[0-9\]+.*$gdb_prompt $" { + -re "$inferior_exited_re with code \[0-9\]+.*$gdb_prompt $" { if ![string match "" $message] then { set errmsg "$message (the program exited)" } else { @@ -764,7 +767,7 @@ proc gdb_test_multiple { command message user_code } { fail "$errmsg" set result -1 } - -re "Program exited normally.*$gdb_prompt $" { + -re "$inferior_exited_re normally.*$gdb_prompt $" { if ![string match "" $message] then { set errmsg "$message (the program exited)" } else { @@ -1573,7 +1576,7 @@ proc is_lp64_target {} { proc skip_altivec_tests {} { global skip_vmx_tests_saved - global srcdir subdir gdb_prompt + global srcdir subdir gdb_prompt inferior_exited_re # Use the cached value, if it exists. set me "skip_altivec_tests" @@ -1640,7 +1643,7 @@ proc skip_altivec_tests {} { verbose -log "\n$me altivec hardware not detected" set skip_vmx_tests_saved 1 } - -re ".*Program exited normally.*${gdb_prompt} $" { + -re ".*$inferior_exited_re normally.*${gdb_prompt} $" { verbose -log "\n$me: altivec hardware detected" set skip_vmx_tests_saved 0 } @@ -1661,7 +1664,7 @@ proc skip_altivec_tests {} { proc skip_vsx_tests {} { global skip_vsx_tests_saved - global srcdir subdir gdb_prompt + global srcdir subdir gdb_prompt inferior_exited_re # Use the cached value, if it exists. set me "skip_vsx_tests" @@ -1727,7 +1730,7 @@ proc skip_vsx_tests {} { verbose -log "\n$me VSX hardware not detected" set skip_vsx_tests_saved 1 } - -re ".*Program exited normally.*${gdb_prompt} $" { + -re ".*$inferior_exited_re normally.*${gdb_prompt} $" { verbose -log "\n$me: VSX hardware detected" set skip_vsx_tests_saved 0 } @@ -3055,22 +3058,32 @@ proc gdb_get_line_number { text { file "" } } { # stub is used, we set a breakpoint at exit because we cannot rely on # exit() behavior of a remote target. # -# mssg is the error message that gets printed. +# MSSG is the error message that gets printed. If not given, a +# default is used. +# COMMAND is the command to invoke. If not given, "continue" is +# used. + +proc gdb_continue_to_end {{mssg ""} {command continue}} { + global inferior_exited_re -proc gdb_continue_to_end {mssg} { + if {$mssg == ""} { + set text "continue until exit" + } else { + set text "continue until exit at $mssg" + } if [target_info exists use_gdb_stub] { if {![gdb_breakpoint "exit"]} { return 0 } gdb_test "continue" "Continuing..*Breakpoint .*exit.*" \ - "continue until exit at $mssg" + $text } else { # Continue until we exit. Should not stop again. # Don't bother to check the output of the program, that may be # extremely tough for some remote systems. gdb_test "continue"\ - "Continuing.\[\r\n0-9\]+(... EXIT code 0\[\r\n\]+|Program exited normally\\.).*"\ - "continue until exit at $mssg" + "Continuing.\[\r\n0-9\]+(... EXIT code 0\[\r\n\]+|$inferior_exited_re normally).*"\ + $text } } diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp index 6b25f69..e75a4f5 100644 --- a/gdb/testsuite/lib/mi-support.exp +++ b/gdb/testsuite/lib/mi-support.exp @@ -575,6 +575,7 @@ proc mi_gdb_test { args } { global verbose global mi_gdb_prompt global GDB expect_out + global inferior_exited_re upvar timeout timeout set command [lindex $args 0] @@ -698,7 +699,7 @@ proc mi_gdb_test { args } { fail "$message" set result 1 } - -re "Program exited with code \[0-9\]+.*$mi_gdb_prompt\[ \]*$" { + -re "$inferior_exited_re with code \[0-9\]+.*$mi_gdb_prompt\[ \]*$" { if ![string match "" $message] then { set errmsg "$message (the program exited)" } else { diff --git a/gdb/testsuite/lib/opencl.exp b/gdb/testsuite/lib/opencl.exp index c1b5291..dfd6a57 100644 --- a/gdb/testsuite/lib/opencl.exp +++ b/gdb/testsuite/lib/opencl.exp @@ -31,6 +31,7 @@ proc gdb_compile_opencl_hostapp {clsource executable options} { # it does not. proc skip_opencl_tests {} { global skip_opencl_tests_saved srcdir objdir subdir gdb_prompt + global inferior_exited_re # Use the cached value, if it exists. Cache value per "board" to handle # runs with multiple options (e.g. unix/{-m32,-64}) correctly. @@ -59,11 +60,11 @@ proc skip_opencl_tests {} { clean_restart "$executable" gdb_run_cmd gdb_expect 30 { - -re ".*Program exited normally.*${gdb_prompt} $" { + -re ".*$inferior_exited_re normally.*${gdb_prompt} $" { verbose -log "\n$me: OpenCL support detected" set skip_opencl_tests_saved($board) 0 } - -re ".*Program exited with code.*${gdb_prompt} $" { + -re ".*$inferior_exited_re code.*${gdb_prompt} $" { verbose -log "\n$me: OpenCL support not detected" set skip_opencl_tests_saved($board) 1 } |