diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b5762b7027..eacb247bf6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2011-07-01 Joel Brobecker + + * ada-lang.c (print_it_exception): Print temporary catchpoints + as "Temporary catchpoint". + (print_mention_exception): Likewise. + 2011-07-01 Tom Tromey * jv-lang.c (java_language_defn): Use java_printchar, diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 766bfc85fa..752af87dc9 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -11085,7 +11085,9 @@ print_it_exception (enum exception_catchpoint_kind ex, struct breakpoint *b) ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition)); } - ui_out_text (uiout, "\nCatchpoint "); + ui_out_text (uiout, + b->disposition == disp_del ? "\nTemporary catchpoint " + : "\nCatchpoint "); ui_out_field_int (uiout, "bkptno", b->number); ui_out_text (uiout, ", "); @@ -11194,24 +11196,32 @@ print_mention_exception (enum exception_catchpoint_kind ex, { struct ada_catchpoint *c = (struct ada_catchpoint *) b; + ui_out_text (uiout, b->disposition == disp_del ? _("Temporary catchpoint ") + : _("Catchpoint ")); + ui_out_field_int (uiout, "bkptno", b->number); + ui_out_text (uiout, ": "); + switch (ex) { case ex_catch_exception: if (c->excep_string != NULL) - printf_filtered (_("Catchpoint %d: `%s' Ada exception"), - b->number, c->excep_string); + { + char *info = xstrprintf (_("`%s' Ada exception"), c->excep_string); + struct cleanup *old_chain = make_cleanup (xfree, info); + + ui_out_text (uiout, info); + do_cleanups (old_chain); + } else - printf_filtered (_("Catchpoint %d: all Ada exceptions"), b->number); - + ui_out_text (uiout, _("all Ada exceptions")); break; case ex_catch_exception_unhandled: - printf_filtered (_("Catchpoint %d: unhandled Ada exceptions"), - b->number); + ui_out_text (uiout, _("unhandled Ada exceptions")); break; case ex_catch_assert: - printf_filtered (_("Catchpoint %d: failed Ada assertions"), b->number); + ui_out_text (uiout, _("failed Ada assertions")); break; default: diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index e0c4a0ab16..6f84e43157 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2011-07-01 Joel Brobecker + + * gdb.ada/catch_ex.exp: Add temporary catchpoint tests. + 2011-07-01 Jan Kratochvil Test GCC PR debug/49546. diff --git a/gdb/testsuite/gdb.ada/catch_ex.exp b/gdb/testsuite/gdb.ada/catch_ex.exp index 7fc2895579..fa458d8682 100644 --- a/gdb/testsuite/gdb.ada/catch_ex.exp +++ b/gdb/testsuite/gdb.ada/catch_ex.exp @@ -145,4 +145,34 @@ gdb_test "continue" \ "Continuing\..*$inferior_exited_re.*" \ "continuing to program completion" +################################# +# 3. Try temporary catchpoints. # +################################# + +# Scenario: +# - Insert a temporary catchpoint on all exceptions. +# - Run to that catchpoint +# - Continue; we should reach the program's exit, not stopping +# at any of the other exceptions that are being raised inside +# the program. + +if ![runto_main] then { + fail "Cannot run to main, testcase aborted" + return 0 +} + +gdb_test "tcatch exception" \ + "Temporary catchpoint $any_nb: all Ada exceptions" + +set temp_catchpoint_msg \ + "Temporary catchpoint $any_nb, CONSTRAINT_ERROR at $any_addr in foo \\\(\\\).*at .*foo.adb:$any_nb" +gdb_test "continue" \ + "Continuing\.$eol$temp_catchpoint_msg$eol.*SPOT1" \ + "continuing to temporary catchpoint" + +gdb_test "continue" \ + "Continuing\..*$inferior_exited_re.*" \ + "continuing to program completion" + +