diff options
author | Tom Tromey <tromey@redhat.com> | 2013-04-15 18:09:02 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2013-04-15 18:09:02 +0000 |
commit | 72f1fe8a88c4dc9219c4263eff2bbcf61173e607 (patch) | |
tree | a0500c8be84baf95cff28fb6f70b240be4de4f44 /gdb/testsuite/gdb.cp/exceptprint.cc | |
parent | fc4746a2bd1dbe2a0fd983af292568a7ee05517f (diff) | |
download | gdb-72f1fe8a88c4dc9219c4263eff2bbcf61173e607.zip gdb-72f1fe8a88c4dc9219c4263eff2bbcf61173e607.tar.gz gdb-72f1fe8a88c4dc9219c4263eff2bbcf61173e607.tar.bz2 |
PR c++/15176:
* NEWS: Update.
* break-catch-throw.c (compute_exception): New function.
(exception_funcs): New global.
(_initialize_break_catch_throw): Create $_exception.
* cp-abi.c (cplus_type_from_type_info): New function.
* cp-abi.h (cplus_type_from_type_info): Declare.
(struct cp_abi_ops) <get_type_from_type_info>: New field.
* gnu-v3-abi.c (gnuv3_get_typename_from_type_info)
(gnuv3_get_type_from_type_info): New functions.
(init_gnuv3_ops): Set get_type_from_type_info ABI field.
gdb/doc
* gdb.texinfo (Set Catchpoints): Document $_exception.
(Convenience Vars): Mention $_exception.
gdb/testsuite
* gdb.base/default.exp: Update for $_exception.
* gdb.cp/exceptprint.cc: New file.
* gdb.cp/exceptprint.exp: New file.
* lib/gdb.exp (skip_libstdcxx_probe_tests): New proc.
Diffstat (limited to 'gdb/testsuite/gdb.cp/exceptprint.cc')
-rw-r--r-- | gdb/testsuite/gdb.cp/exceptprint.cc | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.cp/exceptprint.cc b/gdb/testsuite/gdb.cp/exceptprint.cc new file mode 100644 index 0000000..994b501 --- /dev/null +++ b/gdb/testsuite/gdb.cp/exceptprint.cc @@ -0,0 +1,65 @@ +/* This testcase is part of GDB, the GNU debugger. + + 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 + the Free Software Foundation; either version 3 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, see <http://www.gnu.org/licenses/>. */ + +template<typename T> +void +throwit (T val) +{ + throw val; +} + +template<typename T> +void +rethrowit (T val) +{ + try + { + try + { + throwit (val); + } + catch (...) + { + throw; + } + } + catch (...) + { + // Ignore. + } +} + +struct maude +{ + int mv; + + maude (int x) : mv (x) { } +}; + +int +main (int argc, char **argv) +{ + maude mm (77); + maude &mmm (mm); + + rethrowit ("hi bob"); + rethrowit (23); + rethrowit (mm); + rethrowit (mmm); + + return 0; +} |