bettter display for temporary Ada exception catchpoints
authorJoel Brobecker <brobecker@gnat.com>
Fri, 1 Jul 2011 18:35:36 +0000 (18:35 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Fri, 1 Jul 2011 18:35:36 +0000 (18:35 +0000)
Temporary catchpoints on Ada exceptions are now displayed as "Temporary
catchpoint" as opposed to just "Catchpoint".  This is cosmetic only, but
in line with what's done for other catchpoints as well as breakpoints.

gdb/ChangeLog:

        * ada-lang.c (print_it_exception): Print temporary catchpoints
        as "Temporary catchpoint".
        (print_mention_exception): Likewise.

gdb/testsuite/ChangeLog:

        * gdb.ada/catch_ex.exp: Add temporary catchpoint tests.

gdb/ChangeLog
gdb/ada-lang.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.ada/catch_ex.exp

index b5762b70275f2aabb3b9e0c50a930eb7e2b04de9..eacb247bf614f82ef5f6947e7a4ec218a4c055fb 100644 (file)
@@ -1,3 +1,9 @@
+2011-07-01  Joel Brobecker  <brobecker@adacore.com>
+
+       * ada-lang.c (print_it_exception): Print temporary catchpoints
+       as "Temporary catchpoint".
+       (print_mention_exception): Likewise.
+
 2011-07-01  Tom Tromey  <tromey@redhat.com>
 
        * jv-lang.c (java_language_defn): Use java_printchar,
index 766bfc85fab33baf1dada1205439450548b3c1a0..752af87dc98cfd418e7d199e0cb0c51aaf9b957c 100644 (file)
@@ -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:
index e0c4a0ab166097beccedb92a4dcfbadbd023bc1d..6f84e43157ffb3f051c195618d599c6460752b43 100644 (file)
@@ -1,3 +1,7 @@
+2011-07-01  Joel Brobecker  <brobecker@adacore.com>
+
+       * gdb.ada/catch_ex.exp: Add temporary catchpoint tests.
+
 2011-07-01  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        Test GCC PR debug/49546.
index 7fc2895579cbe6028239157f79f73580e38f0485..fa458d86822439b8481958a994c08fcab5a40c02 100644 (file)
@@ -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"
+
+