From 591f19e89b4b671f1124cdc21605bba1d3d6b8d0 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 15 Apr 2013 17:27:44 +0000 Subject: PR c++/12824: * NEWS: Update. * breakpoint.c (enum exception_event_kind) : New constant. (classify_exception_breakpoint): New function. (print_it_exception_catchpoint, print_one_exception_catchpoint) (print_mention_exception_catchpoint) (print_recreate_exception_catchpoint, handle_gnu_v3_exceptions) (catch_exception_command_1): Handle "rethrow" catchpoint. (catch_rethrow_command): New function. (_initialize_breakpoint): Add "catch rethrow" command. gdb/doc * gdb.texinfo (Set Catchpoints): Reorganize exception catchpoints. Document "catch rethrow". (Debugging C Plus Plus): Mention "catch rethrow". gdb/testsuite * gdb.cp/exception.exp: Add "catch rethrow" tests. --- gdb/testsuite/ChangeLog | 4 ++++ gdb/testsuite/gdb.cp/exception.exp | 33 ++++++++++++++++----------------- 2 files changed, 20 insertions(+), 17 deletions(-) (limited to 'gdb/testsuite') diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 93360a4..6526980 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-04-15 Tom Tromey + + * gdb.cp/exception.exp: Add "catch rethrow" tests. + 2013-04-13 Yao Qi * gdb.base/completion.exp: Test completion of command diff --git a/gdb/testsuite/gdb.cp/exception.exp b/gdb/testsuite/gdb.cp/exception.exp index 3d3114e..04c1c10 100644 --- a/gdb/testsuite/gdb.cp/exception.exp +++ b/gdb/testsuite/gdb.cp/exception.exp @@ -56,6 +56,11 @@ gdb_test "catch catch" "Catchpoint \[0-9\]+ \\(catch\\)" \ gdb_test "catch throw" "Catchpoint \[0-9\]+ \\(throw\\)" \ "catch throw (before inferior run)" +# Set a rethrow catchpoint + +gdb_test "catch rethrow" "Catchpoint \[0-9\]+ \\(rethrow\\)" \ + "catch rethrow (before inferior run)" + # The catchpoints should be listed in the list of breakpoints. # In case of a statically linked test, we won't have a pending breakpoint. @@ -66,10 +71,11 @@ set addr "\(|$hex\)" set re_head "Num${ws}Type${ws}Disp${ws}Enb${ws}Address${ws}What" set re_2_bp "1${ws}breakpoint${ws}keep${ws}y${ws}$addr${ws}exception catch" set re_3_bp "2${ws}breakpoint${ws}keep${ws}y${ws}$addr${ws}exception throw" +set re_4_bp "3${ws}breakpoint${ws}keep${ws}y${ws}$addr${ws}exception rethrow" set name "info breakpoints (before inferior run)" gdb_test_multiple "info breakpoints" $name { - -re "$re_head${ws}$re_2_bp${ws}$re_3_bp\r\n$gdb_prompt $" { + -re "$re_head${ws}$re_2_bp${ws}$re_3_bp${ws}$re_4_bp\r\n$gdb_prompt $" { pass $name } -re ".*$gdb_prompt $" @@ -78,13 +84,13 @@ gdb_test_multiple "info breakpoints" $name { } } -gdb_test "tbreak main" "Temporary breakpoint 3.*" \ +gdb_test "tbreak main" "Temporary breakpoint 4.*" \ "Set temporary breakpoint at main" set ok 0 gdb_run_cmd gdb_test_multiple "" "Run to main" { - -re "Temporary breakpoint 3,.*$gdb_prompt $" { + -re "Temporary breakpoint 4,.*$gdb_prompt $" { pass "Run to main" set ok 1 } @@ -98,10 +104,11 @@ set addr "$hex" set re_head "Num${ws}Type${ws}Disp${ws}Enb${ws}Address${ws}What" set re_2_bp "1${ws}breakpoint${ws}keep${ws}y${ws}$addr${ws}exception catch" set re_3_bp "2${ws}breakpoint${ws}keep${ws}y${ws}$addr${ws}exception throw" +set re_4_bp "3${ws}breakpoint${ws}keep${ws}y${ws}$addr${ws}exception rethrow" set name "info breakpoints (after inferior run)" gdb_test_multiple "info breakpoints" $name { - -re "$re_head${ws}$re_2_bp${ws}$re_3_bp\r\n$gdb_prompt $" { + -re "$re_head${ws}$re_2_bp${ws}$re_3_bp${ws}$re_4_bp\r\n$gdb_prompt $" { pass $name } -re ".*$gdb_prompt $" @@ -209,16 +216,8 @@ gdb_test_multiple "backtrace" $name { # Continue to breakpoint on catcher. gdb_test "continue" ".*catcher \\(x=13\\).*" "continue to catcher for the second time" -# That is all for now. -# -# The original code had: -# -# continue to re-throw ; backtrace -# continue to catch ; backtrace -# continue to throw out of main -# -# The problem is that "re-throw" does not show a throw; only a catch. -# I do not know if this is because of a bug, or because the generated -# code is optimized for a throw into the same function. -# -# -- chastain 2004-01-09 + +# Continue to the re-throw. + +gdb_test "continue" "Catchpoint \[0-9\]+.*exception rethrown.*" \ + "continue to rethrow" -- cgit v1.1