aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.hp/exception.cc
diff options
context:
space:
mode:
authorDavid Taylor <taylor@redhat.com>1999-01-11 05:36:48 +0000
committerDavid Taylor <taylor@redhat.com>1999-01-11 05:36:48 +0000
commitd55ea55c195aab3e86dbc401c123ed42167e6a6c (patch)
tree657f4716c48d7bf804c5c1407cdc7374658e2c8c /gdb/testsuite/gdb.hp/exception.cc
parent65fedafeb856e013a6b5d8b15595678a76ef0bcb (diff)
downloadgdb-d55ea55c195aab3e86dbc401c123ed42167e6a6c.zip
gdb-d55ea55c195aab3e86dbc401c123ed42167e6a6c.tar.gz
gdb-d55ea55c195aab3e86dbc401c123ed42167e6a6c.tar.bz2
new files -- part of HP merge.
Diffstat (limited to 'gdb/testsuite/gdb.hp/exception.cc')
-rw-r--r--gdb/testsuite/gdb.hp/exception.cc48
1 files changed, 48 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.hp/exception.cc b/gdb/testsuite/gdb.hp/exception.cc
new file mode 100644
index 0000000..2745932
--- /dev/null
+++ b/gdb/testsuite/gdb.hp/exception.cc
@@ -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);
+
+}