From d66ae36a8b9a73f2ba22368e8e2ffa1bbdccf5ec Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Wed, 9 Jan 2002 21:39:27 +0100 Subject: [PATCH] libstdc++/3150: revert 2001-11-30 commit. 2002-01-09 Paolo Carlini libstdc++/3150: revert 2001-11-30 commit. DR266 only means that the destructors should be removed from the descriptions in the standard: writing them explicitly allows the vtable heuristic to work. For additional information see: http://gcc.gnu.org/ml/libstdc++/2002-01/msg00090.html http://gcc.gnu.org/ml/libstdc++/2002-01/msg00110.html http://gcc.gnu.org/ml/libstdc++/2002-01/msg00155.html * libsupc++/exception (bad_exception::~bad_exception()): Reintroduce declaration. * libsupc++/new (bad_alloc::~bad_alloc()): Same. * libsupc++/typeinfo (bad_cast::~bad_cast()): Same. (bad_typeid::~bad_typeid()): Same. * libsupc++/eh_exception.cc (bad_exception::~bad_exception()): Reintroduce definition. * libsupc++/new_handler.cc (bad_alloc::~bad_alloc()): Same. * libsupc++/tinfo.cc (bad_cast::~bad_cast()): Same. (bad_typeid::~bad_typeid()): Same. From-SVN: r48687 --- libstdc++-v3/ChangeLog | 20 ++++++++++++++++++++ libstdc++-v3/libsupc++/eh_exception.cc | 4 +++- libstdc++-v3/libsupc++/exception | 4 +++- libstdc++-v3/libsupc++/new | 4 +++- libstdc++-v3/libsupc++/new_handler.cc | 5 ++++- libstdc++-v3/libsupc++/tinfo.cc | 6 +++++- libstdc++-v3/libsupc++/typeinfo | 5 ++++- 7 files changed, 42 insertions(+), 6 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b06d54e3f3a..da64dcb1c5b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,23 @@ +2002-01-09 Paolo Carlini + + libstdc++/3150: revert 2001-11-30 commit. DR266 only means + that the destructors should be removed from the descriptions + in the standard: writing them explicitly allows the vtable + heuristic to work. For additional information see: + http://gcc.gnu.org/ml/libstdc++/2002-01/msg00090.html + http://gcc.gnu.org/ml/libstdc++/2002-01/msg00110.html + http://gcc.gnu.org/ml/libstdc++/2002-01/msg00155.html + * libsupc++/exception (bad_exception::~bad_exception()): + Reintroduce declaration. + * libsupc++/new (bad_alloc::~bad_alloc()): Same. + * libsupc++/typeinfo (bad_cast::~bad_cast()): Same. + (bad_typeid::~bad_typeid()): Same. + * libsupc++/eh_exception.cc (bad_exception::~bad_exception()): + Reintroduce definition. + * libsupc++/new_handler.cc (bad_alloc::~bad_alloc()): Same. + * libsupc++/tinfo.cc (bad_cast::~bad_cast()): Same. + (bad_typeid::~bad_typeid()): Same. + 2002-01-09 Benjamin Kosnik * include/Makefile.am (c_base_srcdir): Remove duplicate '/'. diff --git a/libstdc++-v3/libsupc++/eh_exception.cc b/libstdc++-v3/libsupc++/eh_exception.cc index 328a89e7f89..a581be70b9f 100644 --- a/libstdc++-v3/libsupc++/eh_exception.cc +++ b/libstdc++-v3/libsupc++/eh_exception.cc @@ -1,5 +1,5 @@ // -*- C++ -*- std::exception implementation. -// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 // Free Software Foundation // // This file is part of GNU CC. @@ -35,6 +35,8 @@ std::exception::~exception() throw() { } +std::bad_exception::~bad_exception() throw() { } + const char* std::exception::what() const throw() { diff --git a/libstdc++-v3/libsupc++/exception b/libstdc++-v3/libsupc++/exception index 55dd872cc62..aea61ffa412 100644 --- a/libstdc++-v3/libsupc++/exception +++ b/libstdc++-v3/libsupc++/exception @@ -1,6 +1,7 @@ // Exception Handling support header for -*- C++ -*- -// Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001 Free Software Foundation +// Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002 +// Free Software Foundation // // This file is part of GNU CC. // @@ -62,6 +63,7 @@ namespace std { public: bad_exception() throw() { } + virtual ~bad_exception() throw(); }; /// If you write a replacement %terminate handler, it must be of this type. diff --git a/libstdc++-v3/libsupc++/new b/libstdc++-v3/libsupc++/new index 0669f6d0716..358aa1d12c1 100644 --- a/libstdc++-v3/libsupc++/new +++ b/libstdc++-v3/libsupc++/new @@ -1,6 +1,7 @@ // The -*- C++ -*- dynamic memory management header. -// Copyright (C) 1994, 1996, 1997, 1998, 2000, 2001 Free Software Foundation +// Copyright (C) 1994, 1996, 1997, 1998, 2000, 2001, 2002 +// Free Software Foundation // This file is part of GNU CC. // @@ -50,6 +51,7 @@ namespace std { public: bad_alloc() throw() { } + virtual ~bad_alloc() throw(); }; struct nothrow_t { }; diff --git a/libstdc++-v3/libsupc++/new_handler.cc b/libstdc++-v3/libsupc++/new_handler.cc index 2d3937ecce9..ed34bc8865d 100644 --- a/libstdc++-v3/libsupc++/new_handler.cc +++ b/libstdc++-v3/libsupc++/new_handler.cc @@ -1,6 +1,7 @@ // Implementation file for the -*- C++ -*- dynamic memory management header. -// Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation +// Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002 +// Free Software Foundation // // This file is part of GNU CC. // @@ -42,3 +43,5 @@ std::set_new_handler (new_handler handler) __new_handler = handler; return prev_handler; } + +std::bad_alloc::~bad_alloc() throw() { } diff --git a/libstdc++-v3/libsupc++/tinfo.cc b/libstdc++-v3/libsupc++/tinfo.cc index 34b0060b4e9..1eecdeb41a1 100644 --- a/libstdc++-v3/libsupc++/tinfo.cc +++ b/libstdc++-v3/libsupc++/tinfo.cc @@ -1,5 +1,6 @@ // Methods for type_info for -*- C++ -*- Run Time Type Identification. -// Copyright (C) 1994, 1996, 1998, 1999, 2000, 2001 Free Software Foundation +// Copyright (C) 1994, 1996, 1998, 1999, 2000, 2001, 2002 +// Free Software Foundation // // This file is part of GNU CC. // @@ -39,6 +40,9 @@ std::type_info:: ~type_info () { } +std::bad_cast::~bad_cast() throw() { } +std::bad_typeid::~bad_typeid() throw() { } + #if !__GXX_MERGED_TYPEINFO_NAMES // We can't rely on common symbols being shared between shared objects. diff --git a/libstdc++-v3/libsupc++/typeinfo b/libstdc++-v3/libsupc++/typeinfo index c45f54431fe..336fcc058d9 100644 --- a/libstdc++-v3/libsupc++/typeinfo +++ b/libstdc++-v3/libsupc++/typeinfo @@ -1,5 +1,6 @@ // RTTI support for -*- C++ -*- -// Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001 Free Software Foundation +// Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002 +// Free Software Foundation // // This file is part of GNU CC. // @@ -129,6 +130,7 @@ namespace std { public: bad_cast() throw() { } + virtual ~bad_cast() throw(); }; /** If you use a NULL pointer in a @c typeid expression, this is thrown. */ @@ -136,6 +138,7 @@ namespace std { public: bad_typeid () throw() { } + virtual ~bad_typeid() throw(); }; } // namespace std