diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b5762b70275..eacb247bf61 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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,
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 766bfc85fab..752af87dc98 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 e0c4a0ab166..6f84e43157f 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -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.
diff --git a/gdb/testsuite/gdb.ada/catch_ex.exp b/gdb/testsuite/gdb.ada/catch_ex.exp
index 7fc2895579c..fa458d86822 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"
+
+