2004-01-08 Michael Chastain <mec.gnu@mindspring.com>
authorMichael Chastain <mec@google.com>
Fri, 9 Jan 2004 05:19:13 +0000 (05:19 +0000)
committerMichael Chastain <mec@google.com>
Fri, 9 Jan 2004 05:19:13 +0000 (05:19 +0000)
* gdb.cp/exception.cc: Renamed from gdb.hp/gdb.aCC/exception.cc.
* gdb.cp/exception.exp: Renamed from gdb.hp/gdb.aCC/exception.exp.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.cp/exception.cc [new file with mode: 0644]
gdb/testsuite/gdb.cp/exception.exp [new file with mode: 0644]
gdb/testsuite/gdb.hp/gdb.aCC/exception.cc [deleted file]
gdb/testsuite/gdb.hp/gdb.aCC/exception.exp [deleted file]

index 2ceaf62e15be5661c2f5d323f42a995f9288ca3c..f69c9b8ed091b3cc04da4b10bb387429bb89a139 100644 (file)
@@ -1,3 +1,8 @@
+2004-01-08  Michael Chastain  <mec.gnu@mindspring.com>
+
+       * gdb.cp/exception.cc: Renamed from gdb.hp/gdb.aCC/exception.cc.
+       * gdb.cp/exception.exp: Renamed from gdb.hp/gdb.aCC/exception.exp.
+
 2004-01-08  Michael Chastain  <mec.gnu@mindspring.com>
 
        * gdb.cp/classes.exp: Accept gnu abi 2.
diff --git a/gdb/testsuite/gdb.cp/exception.cc b/gdb/testsuite/gdb.cp/exception.cc
new file mode 100644 (file)
index 0000000..2745932
--- /dev/null
@@ -0,0 +1,48 @@
+// Test file for exception handling support.
+
+#include <iostream.h>
+
+int foo (int i)
+{
+  if (i < 32)
+    throw (int) 13;
+  else
+    return i * 2;
+}
+
+extern "C" int bar (int k, unsigned long eharg, int flag);
+    
+int bar (int k, unsigned long eharg, int flag)
+{
+  cout << "k is " << k << " eharg is " << eharg << " flag is " << flag << endl;
+  return 1;
+}
+
+int main()
+{
+  int j;
+
+  try {
+    j = foo (20);
+  }
+  catch (int x) {
+    cout << "Got an except " << x << endl;
+  }
+  
+  try {
+    try {
+      j = foo (20);
+    }
+    catch (int x) {
+      cout << "Got an except " << x << endl;
+      throw;
+    }
+  }
+  catch (int y) {
+    cout << "Got an except (rethrown) " << y << endl;
+  }
+
+  // Not caught 
+  foo (20);
+  
+}
diff --git a/gdb/testsuite/gdb.cp/exception.exp b/gdb/testsuite/gdb.cp/exception.exp
new file mode 100644 (file)
index 0000000..a0914ae
--- /dev/null
@@ -0,0 +1,439 @@
+# Copyright (C) 1997, 1998 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-gdb@prep.ai.mit.edu
+
+#
+# tests for exception-handling support
+# Written by Satish Pai <pai@apollo.hp.com> 1997-07-23
+
+# This file is part of the gdb testsuite
+
+# Note: These tests are geared to the HP aCC compiler,
+# which has an idiosyncratic way of emitting debug info
+# for exceptions -- it uses a callback mechanism, which
+# is different from the way g++ records exception info
+# for debugging
+
+# The tests are in two parts; the first part deals with
+# statically linked (archive-bound) executables, and the
+# second part repeats those tests with dynamically linked
+# (shared bound) executables.  (In the latter case we use
+# a different mechanism to get the address of the notification
+# hook in the C++ support library.) The tests themselves are
+# the same in both parts.
+# 
+# IMPORTANT:
+# ---------
+# IF YOU CHANGE A TEST IN ONE PART MAKE SURE YOU CHANGE IT
+# --------------------------------------------------------
+# IN THE OTHER PART TOO!
+# ----------------------
+
+
+
+if $tracelevel then {
+        strace $tracelevel
+        }
+
+if { [skip_hp_tests] } then { continue }
+
+#
+# test running programs
+#
+
+# Part I : Archive-bound executables
+# ----------------------------------
+
+set testfile "exception"
+set srcfile ${testfile}.cc
+set binfile ${objdir}/${subdir}/${testfile}
+if [get_compiler_info ${binfile} "c++"] {
+    return -1;
+}
+if { $gcc_compiled } then { continue }
+
+set cmdline "$CXX_FOR_TARGET ${srcdir}/${subdir}/${srcfile} +A -Wl,-a,archive -g -o ${binfile}"
+
+remote_exec build $cmdline
+
+# Start with a fresh gdb
+
+set prms_id 0
+set bug_id 0
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+if ![runto_main] then {
+    perror "couldn't run to breakpoint"
+    continue
+}
+
+# Set a catch catchpoint
+
+send_gdb "catch catch\n"
+gdb_expect {
+   -re "Catchpoint \[0-9\]* \\(catch\\)\r\n$gdb_prompt $" {
+       pass "catch catch (static executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "catch catch  (static executable)" }
+   timeout { fail "(timeout) catch catch  (static executable)" }
+}
+
+# Set a throw catchpoint
+
+send_gdb "catch throw\n"
+gdb_expect {
+   -re "Catchpoint \[0-9\]* \\(throw\\)\r\n$gdb_prompt $" {
+       pass "catch throw (static executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "catch throw (static executable)" }
+   timeout { fail "(timeout) catch throw (static executable)" }
+}
+
+# The catchpoints should be listed in the list of breakpoints.
+
+send_gdb "info break\n"
+gdb_expect {
+   -re ".*\[0-9\]*\[ \]*catch catch\[ \]*keep y\[ \]*exception catch\[ \]*\r\n\[0-9\]*\[ \]*catch throw\[ \]*keep y\[ \]*exception throw\[ \]*\r\n$gdb_prompt $" {
+       pass "info break with catchpoints (static executable)"
+   }    
+   -re ".*$gdb_prompt $" { fail "info break (static executable)" }
+   timeout { fail "(timeout) info break (static executable)" }
+}
+
+# Info catch currently does not work with HP aCC. No easy way to
+# list the active handlers on the stack.
+
+send_gdb "info catch\n"
+gdb_expect {
+   -re "Info catch not supported with this target/compiler combination.\r\n$gdb_prompt $" {
+       pass "info catch (static executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "info catch (static executable)" }
+   timeout { fail "(timeout) info catch (static executable)" }
+}
+
+# Get the first exception thrown
+       
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing.*Catchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" {
+      pass "caught a throw (static executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch a throw (static executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch a throw? (static executable)" }
+}
+
+send_gdb "backtrace\n"
+gdb_expect {
+   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_THROW.*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" {
+      pass "backtrace after throw (static executable)"
+   }
+   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" {
+      pass "backtrace after throw (static executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "backtrace after throw (static executable)" }
+   timeout { fail "(timeout) backtrace after throw (static executable)" }
+}
+
+# Now intercept it when it is caught.
+
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" {
+      pass "caught a catch (static executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch a catch (static executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch a catch? (static executable)" }
+}
+
+send_gdb "backtrace\n"
+gdb_expect {
+   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" {
+      pass "backtrace after catch (static executable)"
+   }
+   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" {
+      pass "backtrace after catch (static executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "backtrace after catch (static executable)" }
+   timeout { fail "(timeout) backtrace after catch (static executable)" }
+}
+      
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" {
+      pass "caught a throw (2) (static executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch a throw (2) (static executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch a throw (2)? (static executable)" }
+}
+
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" {
+      pass "caught a catch (2) (static executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch a catch (2) (static executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch a catch (2)? (static executable)" }
+}
+
+# Now the exception will be rethrown.
+
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:38, catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" {
+      pass "caught a rethrow (static executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch a rethrow (static executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch a rethrow? (static executable)" }
+}
+
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:3\[68\], catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" {
+      # FIXME: guo: why XFAIL?  need comment
+      xfail "caught a catch (3) (static executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch a catch (3) (static executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch a catch (3)? (static executable)" }
+}
+
+send_gdb "backtrace\n"
+gdb_expect {
+   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" {
+      # FIXME: guo: why XFAIL?  need comment
+      xfail "backtrace after catch (3) (static executable)"
+   }
+   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" {
+      # FIXME: guo: why XFAIL?  need comment
+      xfail "backtrace after catch (3) (static executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "backtrace after catch (3) (static executable)" }
+   timeout { fail "(timeout) backtrace after catch (3) (static executable)" }
+}
+
+# Now the exception will be thrown, but not catch-able anywhere.
+
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location unknown\r\n.*$gdb_prompt $" {
+      pass "caught an uncatchable throw (static executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch an uncatchable throw (static executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch an uncatchable throw? (static executable)" }
+}
+
+# Part II : Shared-bound executables
+# ----------------------------------
+
+# Start with a fresh gdb
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+
+set prms_id 0
+set bug_id 0
+
+set testfile "exception"
+set srcfile ${testfile}.cc
+set binfile ${objdir}/${subdir}/${testfile}
+
+if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
+     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will a
+utomatically fail."
+}
+
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+
+if ![runto_main] then {
+    perror "couldn't run to breakpoint"
+    continue
+}
+
+# Set a catch catchpoint
+
+send_gdb "catch catch\n"
+gdb_expect {
+   -re "Catchpoint \[0-9\]* \\(catch\\)\r\n$gdb_prompt $" {
+       pass "catch catch (dynamic executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "catch catch  (dynamic executable)" }
+   timeout { fail "(timeout) catch catch  (dynamic executable)" }
+}
+
+# Set a throw catchpoint
+
+send_gdb "catch throw\n"
+gdb_expect {
+   -re "Catchpoint \[0-9\]* \\(throw\\)\r\n$gdb_prompt $" {
+       pass "catch throw (dynamic executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "catch throw (dynamic executable)" }
+   timeout { fail "(timeout) catch throw (dynamic executable)" }
+}
+
+# The catchpoints should be listed in the list of breakpoints.
+
+send_gdb "info break\n"
+gdb_expect {
+   -re ".*\[0-9\]*\[ \]*catch catch\[ \]*keep y\[ \]*exception catch\[ \]*\r\n\[0-9\]*\[ \]*catch throw\[ \]*keep y\[ \]*exception throw\[ \]*\r\n$gdb_prompt $" {
+       pass "info break with catchpoints (dynamic executable)"
+   }    
+   -re ".*$gdb_prompt $" { fail "info break (dynamic executable)" }
+   timeout { fail "(timeout) info break (dynamic executable)" }
+}
+
+# Info catch currently does not work with HP aCC. No easy way to
+# list the active handlers on the stack.
+
+send_gdb "info catch\n"
+gdb_expect {
+   -re "Info catch not supported with this target/compiler combination.\r\n$gdb_prompt $" {
+       pass "info catch (dynamic executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "info catch (dynamic executable)" }
+   timeout { fail "(timeout) info catch (dynamic executable)" }
+}
+
+# Get the first exception thrown
+       
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing.*Catchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" {
+      pass "caught a throw (dynamic executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch a throw (dynamic executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch a throw? (dynamic executable)" }
+}
+
+send_gdb "backtrace\n"
+gdb_expect {
+   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_THROW.*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" {
+      pass "backtrace after throw (dynamic executable)"
+   }
+   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" {
+      pass "backtrace after throw (dynamic executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "backtrace after throw (dynamic executable)" }
+   timeout { fail "(timeout) backtrace after throw (dynamic executable)" }
+}
+
+# Now intercept it when it is caught.
+
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" {
+      pass "caught a catch (dynamic executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch a catch (dynamic executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch a catch? (dynamic executable)" }
+}
+
+send_gdb "backtrace\n"
+gdb_expect {
+   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" {
+      pass "backtrace after catch (dynamic executable)"
+   }
+   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" {
+      pass "backtrace after catch (dynamic executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "backtrace after catch (dynamic executable)" }
+   timeout { fail "(timeout) backtrace after catch (dynamic executable)" }
+}
+      
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" {
+      pass "caught a throw (2) (dynamic executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch a throw (2) (dynamic executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch a throw (2)? (dynamic executable)" }
+}
+
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" {
+      pass "caught a catch (2) (dynamic executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch a catch (2) (dynamic executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch a catch (2)? (dynamic executable)" }
+}
+
+# Now the exception will be rethrown.
+
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:38, catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" {
+      pass "caught a rethrow (dynamic executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch a rethrow (dynamic executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch a rethrow? (dynamic executable)" }
+}
+
+#DTS CLLbs14858
+#The throw location should be at line 38 instead of 36.
+setup_xfail hppa*-*-* CLLbs14858
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:3\[68\], catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" {
+      # FIXME: guo: according to comment above the RE is wrong!
+      pass "caught a catch (3) (dynamic executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch a catch (3) (dynamic executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch a catch (3)? (dynamic executable)" }
+}
+
+#DTS CLLbs14858
+#The line number for main() should be at exception.cc:38 instead of exception.cc:36
+setup_xfail hppa*-*-* CLLbs14858
+send_gdb "backtrace\n"
+gdb_expect {
+   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" {
+      # FIXME: guo: according to comment above the RE is wrong!
+      pass "backtrace after catch (3) (dynamic executable)"
+   }
+   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" {
+      # FIXME: guo: according to comment above the RE is wrong!
+      pass "backtrace after catch (3) (dynamic executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "backtrace after catch (3) (dynamic executable)" }
+   timeout { fail "(timeout) backtrace after catch (3) (dynamic executable)" }
+}
+
+# Now the exception will be thrown, but not catch-able anywhere.
+
+send_gdb "continue\n"
+gdb_expect {
+   -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location unknown\r\n.*$gdb_prompt $" {
+      pass "caught an uncatchable throw (dynamic executable)"
+   }
+   -re ".*$gdb_prompt $" { fail "didn't catch an uncatchable throw (dynamic executable)" }
+   timeout { fail "(timeout) after continue -- didn't catch an uncatchable throw? (dynamic executable)" }
+}
+
diff --git a/gdb/testsuite/gdb.hp/gdb.aCC/exception.cc b/gdb/testsuite/gdb.hp/gdb.aCC/exception.cc
deleted file mode 100644 (file)
index 2745932..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-// Test file for exception handling support.
-
-#include <iostream.h>
-
-int foo (int i)
-{
-  if (i < 32)
-    throw (int) 13;
-  else
-    return i * 2;
-}
-
-extern "C" int bar (int k, unsigned long eharg, int flag);
-    
-int bar (int k, unsigned long eharg, int flag)
-{
-  cout << "k is " << k << " eharg is " << eharg << " flag is " << flag << endl;
-  return 1;
-}
-
-int main()
-{
-  int j;
-
-  try {
-    j = foo (20);
-  }
-  catch (int x) {
-    cout << "Got an except " << x << endl;
-  }
-  
-  try {
-    try {
-      j = foo (20);
-    }
-    catch (int x) {
-      cout << "Got an except " << x << endl;
-      throw;
-    }
-  }
-  catch (int y) {
-    cout << "Got an except (rethrown) " << y << endl;
-  }
-
-  // Not caught 
-  foo (20);
-  
-}
diff --git a/gdb/testsuite/gdb.hp/gdb.aCC/exception.exp b/gdb/testsuite/gdb.hp/gdb.aCC/exception.exp
deleted file mode 100644 (file)
index a0914ae..0000000
+++ /dev/null
@@ -1,439 +0,0 @@
-# Copyright (C) 1997, 1998 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
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
-#
-# tests for exception-handling support
-# Written by Satish Pai <pai@apollo.hp.com> 1997-07-23
-
-# This file is part of the gdb testsuite
-
-# Note: These tests are geared to the HP aCC compiler,
-# which has an idiosyncratic way of emitting debug info
-# for exceptions -- it uses a callback mechanism, which
-# is different from the way g++ records exception info
-# for debugging
-
-# The tests are in two parts; the first part deals with
-# statically linked (archive-bound) executables, and the
-# second part repeats those tests with dynamically linked
-# (shared bound) executables.  (In the latter case we use
-# a different mechanism to get the address of the notification
-# hook in the C++ support library.) The tests themselves are
-# the same in both parts.
-# 
-# IMPORTANT:
-# ---------
-# IF YOU CHANGE A TEST IN ONE PART MAKE SURE YOU CHANGE IT
-# --------------------------------------------------------
-# IN THE OTHER PART TOO!
-# ----------------------
-
-
-
-if $tracelevel then {
-        strace $tracelevel
-        }
-
-if { [skip_hp_tests] } then { continue }
-
-#
-# test running programs
-#
-
-# Part I : Archive-bound executables
-# ----------------------------------
-
-set testfile "exception"
-set srcfile ${testfile}.cc
-set binfile ${objdir}/${subdir}/${testfile}
-if [get_compiler_info ${binfile} "c++"] {
-    return -1;
-}
-if { $gcc_compiled } then { continue }
-
-set cmdline "$CXX_FOR_TARGET ${srcdir}/${subdir}/${srcfile} +A -Wl,-a,archive -g -o ${binfile}"
-
-remote_exec build $cmdline
-
-# Start with a fresh gdb
-
-set prms_id 0
-set bug_id 0
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
-
-if ![runto_main] then {
-    perror "couldn't run to breakpoint"
-    continue
-}
-
-# Set a catch catchpoint
-
-send_gdb "catch catch\n"
-gdb_expect {
-   -re "Catchpoint \[0-9\]* \\(catch\\)\r\n$gdb_prompt $" {
-       pass "catch catch (static executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "catch catch  (static executable)" }
-   timeout { fail "(timeout) catch catch  (static executable)" }
-}
-
-# Set a throw catchpoint
-
-send_gdb "catch throw\n"
-gdb_expect {
-   -re "Catchpoint \[0-9\]* \\(throw\\)\r\n$gdb_prompt $" {
-       pass "catch throw (static executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "catch throw (static executable)" }
-   timeout { fail "(timeout) catch throw (static executable)" }
-}
-
-# The catchpoints should be listed in the list of breakpoints.
-
-send_gdb "info break\n"
-gdb_expect {
-   -re ".*\[0-9\]*\[ \]*catch catch\[ \]*keep y\[ \]*exception catch\[ \]*\r\n\[0-9\]*\[ \]*catch throw\[ \]*keep y\[ \]*exception throw\[ \]*\r\n$gdb_prompt $" {
-       pass "info break with catchpoints (static executable)"
-   }    
-   -re ".*$gdb_prompt $" { fail "info break (static executable)" }
-   timeout { fail "(timeout) info break (static executable)" }
-}
-
-# Info catch currently does not work with HP aCC. No easy way to
-# list the active handlers on the stack.
-
-send_gdb "info catch\n"
-gdb_expect {
-   -re "Info catch not supported with this target/compiler combination.\r\n$gdb_prompt $" {
-       pass "info catch (static executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "info catch (static executable)" }
-   timeout { fail "(timeout) info catch (static executable)" }
-}
-
-# Get the first exception thrown
-       
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing.*Catchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" {
-      pass "caught a throw (static executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch a throw (static executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch a throw? (static executable)" }
-}
-
-send_gdb "backtrace\n"
-gdb_expect {
-   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_THROW.*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" {
-      pass "backtrace after throw (static executable)"
-   }
-   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" {
-      pass "backtrace after throw (static executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "backtrace after throw (static executable)" }
-   timeout { fail "(timeout) backtrace after throw (static executable)" }
-}
-
-# Now intercept it when it is caught.
-
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" {
-      pass "caught a catch (static executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch a catch (static executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch a catch? (static executable)" }
-}
-
-send_gdb "backtrace\n"
-gdb_expect {
-   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" {
-      pass "backtrace after catch (static executable)"
-   }
-   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" {
-      pass "backtrace after catch (static executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "backtrace after catch (static executable)" }
-   timeout { fail "(timeout) backtrace after catch (static executable)" }
-}
-      
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" {
-      pass "caught a throw (2) (static executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch a throw (2) (static executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch a throw (2)? (static executable)" }
-}
-
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" {
-      pass "caught a catch (2) (static executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch a catch (2) (static executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch a catch (2)? (static executable)" }
-}
-
-# Now the exception will be rethrown.
-
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:38, catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" {
-      pass "caught a rethrow (static executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch a rethrow (static executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch a rethrow? (static executable)" }
-}
-
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:3\[68\], catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" {
-      # FIXME: guo: why XFAIL?  need comment
-      xfail "caught a catch (3) (static executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch a catch (3) (static executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch a catch (3)? (static executable)" }
-}
-
-send_gdb "backtrace\n"
-gdb_expect {
-   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" {
-      # FIXME: guo: why XFAIL?  need comment
-      xfail "backtrace after catch (3) (static executable)"
-   }
-   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" {
-      # FIXME: guo: why XFAIL?  need comment
-      xfail "backtrace after catch (3) (static executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "backtrace after catch (3) (static executable)" }
-   timeout { fail "(timeout) backtrace after catch (3) (static executable)" }
-}
-
-# Now the exception will be thrown, but not catch-able anywhere.
-
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location unknown\r\n.*$gdb_prompt $" {
-      pass "caught an uncatchable throw (static executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch an uncatchable throw (static executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch an uncatchable throw? (static executable)" }
-}
-
-# Part II : Shared-bound executables
-# ----------------------------------
-
-# Start with a fresh gdb
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-
-set prms_id 0
-set bug_id 0
-
-set testfile "exception"
-set srcfile ${testfile}.cc
-set binfile ${objdir}/${subdir}/${testfile}
-
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
-     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will a
-utomatically fail."
-}
-
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
-
-
-if ![runto_main] then {
-    perror "couldn't run to breakpoint"
-    continue
-}
-
-# Set a catch catchpoint
-
-send_gdb "catch catch\n"
-gdb_expect {
-   -re "Catchpoint \[0-9\]* \\(catch\\)\r\n$gdb_prompt $" {
-       pass "catch catch (dynamic executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "catch catch  (dynamic executable)" }
-   timeout { fail "(timeout) catch catch  (dynamic executable)" }
-}
-
-# Set a throw catchpoint
-
-send_gdb "catch throw\n"
-gdb_expect {
-   -re "Catchpoint \[0-9\]* \\(throw\\)\r\n$gdb_prompt $" {
-       pass "catch throw (dynamic executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "catch throw (dynamic executable)" }
-   timeout { fail "(timeout) catch throw (dynamic executable)" }
-}
-
-# The catchpoints should be listed in the list of breakpoints.
-
-send_gdb "info break\n"
-gdb_expect {
-   -re ".*\[0-9\]*\[ \]*catch catch\[ \]*keep y\[ \]*exception catch\[ \]*\r\n\[0-9\]*\[ \]*catch throw\[ \]*keep y\[ \]*exception throw\[ \]*\r\n$gdb_prompt $" {
-       pass "info break with catchpoints (dynamic executable)"
-   }    
-   -re ".*$gdb_prompt $" { fail "info break (dynamic executable)" }
-   timeout { fail "(timeout) info break (dynamic executable)" }
-}
-
-# Info catch currently does not work with HP aCC. No easy way to
-# list the active handlers on the stack.
-
-send_gdb "info catch\n"
-gdb_expect {
-   -re "Info catch not supported with this target/compiler combination.\r\n$gdb_prompt $" {
-       pass "info catch (dynamic executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "info catch (dynamic executable)" }
-   timeout { fail "(timeout) info catch (dynamic executable)" }
-}
-
-# Get the first exception thrown
-       
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing.*Catchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" {
-      pass "caught a throw (dynamic executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch a throw (dynamic executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch a throw? (dynamic executable)" }
-}
-
-send_gdb "backtrace\n"
-gdb_expect {
-   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_THROW.*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" {
-      pass "backtrace after throw (dynamic executable)"
-   }
-   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" {
-      pass "backtrace after throw (dynamic executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "backtrace after throw (dynamic executable)" }
-   timeout { fail "(timeout) backtrace after throw (dynamic executable)" }
-}
-
-# Now intercept it when it is caught.
-
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" {
-      pass "caught a catch (dynamic executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch a catch (dynamic executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch a catch? (dynamic executable)" }
-}
-
-send_gdb "backtrace\n"
-gdb_expect {
-   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" {
-      pass "backtrace after catch (dynamic executable)"
-   }
-   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" {
-      pass "backtrace after catch (dynamic executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "backtrace after catch (dynamic executable)" }
-   timeout { fail "(timeout) backtrace after catch (dynamic executable)" }
-}
-      
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" {
-      pass "caught a throw (2) (dynamic executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch a throw (2) (dynamic executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch a throw (2)? (dynamic executable)" }
-}
-
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" {
-      pass "caught a catch (2) (dynamic executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch a catch (2) (dynamic executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch a catch (2)? (dynamic executable)" }
-}
-
-# Now the exception will be rethrown.
-
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:38, catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" {
-      pass "caught a rethrow (dynamic executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch a rethrow (dynamic executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch a rethrow? (dynamic executable)" }
-}
-
-#DTS CLLbs14858
-#The throw location should be at line 38 instead of 36.
-setup_xfail hppa*-*-* CLLbs14858
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:3\[68\], catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" {
-      # FIXME: guo: according to comment above the RE is wrong!
-      pass "caught a catch (3) (dynamic executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch a catch (3) (dynamic executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch a catch (3)? (dynamic executable)" }
-}
-
-#DTS CLLbs14858
-#The line number for main() should be at exception.cc:38 instead of exception.cc:36
-setup_xfail hppa*-*-* CLLbs14858
-send_gdb "backtrace\n"
-gdb_expect {
-   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" {
-      # FIXME: guo: according to comment above the RE is wrong!
-      pass "backtrace after catch (3) (dynamic executable)"
-   }
-   -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" {
-      # FIXME: guo: according to comment above the RE is wrong!
-      pass "backtrace after catch (3) (dynamic executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "backtrace after catch (3) (dynamic executable)" }
-   timeout { fail "(timeout) backtrace after catch (3) (dynamic executable)" }
-}
-
-# Now the exception will be thrown, but not catch-able anywhere.
-
-send_gdb "continue\n"
-gdb_expect {
-   -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location unknown\r\n.*$gdb_prompt $" {
-      pass "caught an uncatchable throw (dynamic executable)"
-   }
-   -re ".*$gdb_prompt $" { fail "didn't catch an uncatchable throw (dynamic executable)" }
-   timeout { fail "(timeout) after continue -- didn't catch an uncatchable throw? (dynamic executable)" }
-}
-