| 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;
|
| }
|
|
|