Index: gdb/testsuite/gdb.cp/exception.exp |
diff --git a/gdb/testsuite/gdb.cp/exception.exp b/gdb/testsuite/gdb.cp/exception.exp |
index ae2d8b45a1546d767eaba4c852c7f7a132f8b83e..04c1c1009a41be4c6087623b6b7fb503ad5aa0a9 100644 |
--- a/gdb/testsuite/gdb.cp/exception.exp |
+++ b/gdb/testsuite/gdb.cp/exception.exp |
@@ -1,5 +1,4 @@ |
-# Copyright 1997-1998, 2004-2005, 2007-2012 Free Software Foundation, |
-# Inc. |
+# Copyright 1997-2013 Free Software Foundation, Inc. |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
@@ -57,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. |
@@ -67,10 +71,11 @@ set addr "\(<PENDING>|$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 $" |
@@ -79,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 |
} |
@@ -99,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 $" |
@@ -210,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" |