Index: gdb/testsuite/gdb.cp/exceptprint.cc |
diff --git a/gdb/testsuite/gdb.threads/thread-execl.c b/gdb/testsuite/gdb.cp/exceptprint.cc |
similarity index 63% |
copy from gdb/testsuite/gdb.threads/thread-execl.c |
copy to gdb/testsuite/gdb.cp/exceptprint.cc |
index 594e615eff41d8bfd02be020f0c90890e59a8c6f..994b5010d69d77e2ff24c73fe0f39cc900aa7056 100644 |
--- a/gdb/testsuite/gdb.threads/thread-execl.c |
+++ b/gdb/testsuite/gdb.cp/exceptprint.cc |
@@ -1,6 +1,6 @@ |
/* This testcase is part of GDB, the GNU debugger. |
- Copyright 2009-2012 Free Software Foundation, Inc. |
+ Copyright 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 |
@@ -15,34 +15,51 @@ |
You should have received a copy of the GNU General Public License |
along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
-#include <pthread.h> |
-#include <unistd.h> |
-#include <stdlib.h> |
- |
-static const char *image; |
+template<typename T> |
+void |
+throwit (T val) |
+{ |
+ throw val; |
+} |
-void * |
-thread_execler (void *arg) |
+template<typename T> |
+void |
+rethrowit (T val) |
{ |
- /* Exec ourselves again. */ |
- if (execl (image, image, NULL) == -1) |
+ try |
{ |
- perror ("execl"); |
- abort (); |
+ try |
+ { |
+ throwit (val); |
+ } |
+ catch (...) |
+ { |
+ throw; |
+ } |
+ } |
+ catch (...) |
+ { |
+ // Ignore. |
} |
- |
- return NULL; |
} |
+struct maude |
+{ |
+ int mv; |
+ |
+ maude (int x) : mv (x) { } |
+}; |
+ |
int |
main (int argc, char **argv) |
{ |
- pthread_t thread; |
- |
- image = argv[0]; |
+ maude mm (77); |
+ maude &mmm (mm); |
- pthread_create (&thread, NULL, thread_execler, NULL); |
- pthread_join (thread, NULL); |
+ rethrowit ("hi bob"); |
+ rethrowit (23); |
+ rethrowit (mm); |
+ rethrowit (mmm); |
return 0; |
} |