diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7ea3348e9f9..99e78f503aa 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,38 @@ +2010-02-16 Benjamin Kosnik + + * src/ios_locale.cc: Fixes for -pedantic. + * src/system_error.cc: Same. + * src/locale.cc: Same. + * src/list.cc: Same. + * src/locale_facets.cc: Same. + * src/locale_init.cc: Same. + * src/ios.cc: Same. + * config/locale/darwin/ctype_members.cc: Same. + * config/locale/gnu/collate_members.cc: Same. + * config/locale/gnu/ctype_members.cc: Same. + * config/locale/gnu/c_locale.cc: Same. + * config/locale/gnu/monetary_members.cc: Same. + * config/locale/gnu/time_members.cc: Same. + * config/locale/ieee_1003.1-2001/c_locale.cc: Same. + * config/locale/generic/collate_members.cc: Same. + * config/locale/generic/ctype_members.cc: Same. + * config/locale/generic/c_locale.cc: Same. + * config/locale/generic/monetary_members.cc: Same. + * config/locale/generic/time_members.cc: Same. + * config/io/basic_file_stdio.cc: Same. + + * libsupc++/pbase_type_info.cc: Fixes for -fno-rtti. + * libsupc++/pointer_type_info.cc: Same. + * libsupc++/eh_personality.cc: Same. + + * include/std/system_error: Throw spacing. + * include/bits/locale_classes.h: Same. + * include/bits/locale_facets.h: Same. + * include/bits/ios_base.h: Same. + + * testsuite/17_intro/headers/c++200x/all_no_rtti.cc: New. + * testsuite/17_intro/headers/c++1998/all_no_rtti.cc: New. + 2010-02-16 Paolo Carlini * include/bits/random.h (linear_congruential_engine(_Sseq&), diff --git a/libstdc++-v3/config/io/basic_file_stdio.cc b/libstdc++-v3/config/io/basic_file_stdio.cc index b07a48360f0..472f12396d3 100644 --- a/libstdc++-v3/config/io/basic_file_stdio.cc +++ b/libstdc++-v3/config/io/basic_file_stdio.cc @@ -1,6 +1,6 @@ // Wrapper of C-language FILE struct -*- C++ -*- -// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2009 +// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -182,7 +182,7 @@ namespace _GLIBCXX_BEGIN_NAMESPACE(std) // Definitions for __basic_file. - __basic_file::__basic_file(__c_lock* /*__lock*/) + __basic_file::__basic_file(__c_lock* /*__lock*/) throw() : _M_cfile(NULL), _M_cfile_created(false) { } __basic_file::~__basic_file() diff --git a/libstdc++-v3/config/locale/darwin/ctype_members.cc b/libstdc++-v3/config/locale/darwin/ctype_members.cc index 2f5268c5158..e1dd0f2a4f9 100644 --- a/libstdc++-v3/config/locale/darwin/ctype_members.cc +++ b/libstdc++-v3/config/locale/darwin/ctype_members.cc @@ -1,6 +1,6 @@ // std::ctype implementation details, GNU version -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -55,7 +55,7 @@ namespace std #ifdef _GLIBCXX_USE_WCHAR_T ctype::__wmask_type - ctype::_M_convert_to_wmask(const mask __m) const + ctype::_M_convert_to_wmask(const mask __m) const throw() { // Darwin uses the same codes for 'char' as 'wchar_t', so this routine // never gets called. @@ -150,7 +150,7 @@ namespace std } void - ctype::_M_initialize_ctype() + ctype::_M_initialize_ctype() throw() { wint_t __i; for (__i = 0; __i < 128; ++__i) diff --git a/libstdc++-v3/config/locale/generic/c_locale.cc b/libstdc++-v3/config/locale/generic/c_locale.cc index a79a970f231..4ae951e7711 100644 --- a/libstdc++-v3/config/locale/generic/c_locale.cc +++ b/libstdc++-v3/config/locale/generic/c_locale.cc @@ -1,6 +1,6 @@ // Wrapper for underlying C-language localization -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -46,8 +46,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<> void - __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, - const __c_locale&) + __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, + const __c_locale&) throw() { // Assumes __s formatted for "C" locale. char* __old = setlocale(LC_ALL, NULL); @@ -111,8 +111,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<> void - __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, - const __c_locale&) + __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, + const __c_locale&) throw() { // Assumes __s formatted for "C" locale. char* __old = setlocale(LC_ALL, NULL); @@ -139,7 +139,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) #if __DBL_HAS_INFINITY__ __v == numeric_limits::infinity() || __v == -numeric_limits::infinity()) -#else +#else (__v > 1.0 || __v < -1.0) && errno == ERANGE) #endif { @@ -156,8 +156,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<> void - __convert_to_v(const char* __s, long double& __v, - ios_base::iostate& __err, const __c_locale&) + __convert_to_v(const char* __s, long double& __v, + ios_base::iostate& __err, const __c_locale&) throw() { // Assumes __s formatted for "C" locale. char* __old = setlocale(LC_ALL, NULL); @@ -189,10 +189,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) } else if ( #if __LDBL_HAS_INFINITY__ - __v == numeric_limits::infinity() - || __v == -numeric_limits::infinity()) + __v == numeric_limits::infinity() + || __v == -numeric_limits::infinity()) #else - (__v > 1.0l || __v < -1.0l) && errno == ERANGE) + (__v > 1.0l || __v < -1.0l) && errno == ERANGE) #endif { if (__v > 0.0l) @@ -207,7 +207,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) } void - locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, + locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, __c_locale) { // Currently, the generic model only supports the "C" locale. @@ -223,7 +223,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) { __cloc = NULL; } __c_locale - locale::facet::_S_clone_c_locale(__c_locale&) + locale::facet::_S_clone_c_locale(__c_locale&) throw() { return __c_locale(); } __c_locale @@ -236,10 +236,10 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = { - "LC_CTYPE", + "LC_CTYPE", "LC_NUMERIC", - "LC_TIME", - "LC_COLLATE", + "LC_TIME", + "LC_COLLATE", "LC_MONETARY", "LC_MESSAGES" }; diff --git a/libstdc++-v3/config/locale/generic/collate_members.cc b/libstdc++-v3/config/locale/generic/collate_members.cc index be3ee644a1e..e7753e06f8a 100644 --- a/libstdc++-v3/config/locale/generic/collate_members.cc +++ b/libstdc++-v3/config/locale/generic/collate_members.cc @@ -1,6 +1,6 @@ // std::collate implementation details, generic version -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -38,7 +38,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) // be put there instead of here. template<> int - collate::_M_compare(const char* __one, const char* __two) const + collate::_M_compare(const char* __one, + const char* __two) const throw() { int __cmp = strcoll(__one, __two); return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); @@ -47,14 +48,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<> size_t collate::_M_transform(char* __to, const char* __from, - size_t __n) const + size_t __n) const throw() { return strxfrm(__to, __from, __n); } #ifdef _GLIBCXX_USE_WCHAR_T template<> int collate::_M_compare(const wchar_t* __one, - const wchar_t* __two) const + const wchar_t* __two) const throw() { int __cmp = wcscoll(__one, __two); return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); @@ -63,7 +64,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<> size_t collate::_M_transform(wchar_t* __to, const wchar_t* __from, - size_t __n) const + size_t __n) const throw() { return wcsxfrm(__to, __from, __n); } #endif diff --git a/libstdc++-v3/config/locale/generic/ctype_members.cc b/libstdc++-v3/config/locale/generic/ctype_members.cc index 39671f631eb..ae08c3b0169 100644 --- a/libstdc++-v3/config/locale/generic/ctype_members.cc +++ b/libstdc++-v3/config/locale/generic/ctype_members.cc @@ -1,6 +1,6 @@ // std::ctype implementation details, generic version -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -53,7 +53,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) #ifdef _GLIBCXX_USE_WCHAR_T ctype::__wmask_type - ctype::_M_convert_to_wmask(const mask __m) const + ctype::_M_convert_to_wmask(const mask __m) const throw() { __wmask_type __ret; switch (__m) @@ -239,7 +239,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) } void - ctype::_M_initialize_ctype() + ctype::_M_initialize_ctype() throw() { wint_t __i; for (__i = 0; __i < 128; ++__i) diff --git a/libstdc++-v3/config/locale/generic/monetary_members.cc b/libstdc++-v3/config/locale/generic/monetary_members.cc index 9c03f684e67..26b435860be 100644 --- a/libstdc++-v3/config/locale/generic/monetary_members.cc +++ b/libstdc++-v3/config/locale/generic/monetary_members.cc @@ -1,6 +1,7 @@ // std::moneypunct implementation details, generic version -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009, 2010 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -35,10 +36,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) // Construct and return valid pattern consisting of some combination of: // space none symbol sign value money_base::pattern - money_base::_S_construct_pattern(char, char, char) + money_base::_S_construct_pattern(char, char, char) throw() { return _S_default_pattern; } - template<> + template<> void moneypunct::_M_initialize_moneypunct(__c_locale, const char*) { @@ -64,7 +65,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; } - template<> + template<> void moneypunct::_M_initialize_moneypunct(__c_locale, const char*) { @@ -90,18 +91,18 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; } - template<> + template<> moneypunct::~moneypunct() { delete _M_data; } - template<> + template<> moneypunct::~moneypunct() { delete _M_data; } #ifdef _GLIBCXX_USE_WCHAR_T - template<> + template<> void - moneypunct::_M_initialize_moneypunct(__c_locale, + moneypunct::_M_initialize_moneypunct(__c_locale, const char*) { // "C" locale @@ -115,9 +116,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _M_data->_M_curr_symbol = L""; _M_data->_M_curr_symbol_size = 0; _M_data->_M_positive_sign = L""; - _M_data->_M_positive_sign_size = 0; + _M_data->_M_positive_sign_size = 0; _M_data->_M_negative_sign = L""; - _M_data->_M_negative_sign_size = 0; + _M_data->_M_negative_sign_size = 0; _M_data->_M_frac_digits = 0; _M_data->_M_pos_format = money_base::_S_default_pattern; _M_data->_M_neg_format = money_base::_S_default_pattern; @@ -127,9 +128,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) static_cast(money_base::_S_atoms[__i]); } - template<> + template<> void - moneypunct::_M_initialize_moneypunct(__c_locale, + moneypunct::_M_initialize_moneypunct(__c_locale, const char*) { // "C" locale @@ -155,11 +156,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std) static_cast(money_base::_S_atoms[__i]); } - template<> + template<> moneypunct::~moneypunct() { delete _M_data; } - template<> + template<> moneypunct::~moneypunct() { delete _M_data; } #endif diff --git a/libstdc++-v3/config/locale/generic/time_members.cc b/libstdc++-v3/config/locale/generic/time_members.cc index 86c924959b0..225bc3c247c 100644 --- a/libstdc++-v3/config/locale/generic/time_members.cc +++ b/libstdc++-v3/config/locale/generic/time_members.cc @@ -1,6 +1,6 @@ // std::time_get, std::time_put implementation, generic version -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -39,8 +39,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<> void __timepunct:: - _M_put(char* __s, size_t __maxlen, const char* __format, - const tm* __tm) const + _M_put(char* __s, size_t __maxlen, const char* __format, + const tm* __tm) const throw() { char* __old = setlocale(LC_ALL, NULL); const size_t __llen = strlen(__old) + 1; @@ -55,10 +55,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __s[0] = '\0'; } - template<> + template<> void __timepunct::_M_initialize_timepunct(__c_locale) - { + { // "C" locale. if (!_M_data) _M_data = new __timepunct_cache; @@ -72,7 +72,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _M_data->_M_am = "AM"; _M_data->_M_pm = "PM"; _M_data->_M_am_pm_format = ""; - + // Day names, starting with "C"'s Sunday. _M_data->_M_day1 = "Sunday"; _M_data->_M_day2 = "Monday"; @@ -124,8 +124,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<> void __timepunct:: - _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, - const tm* __tm) const + _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, + const tm* __tm) const throw() { char* __old = setlocale(LC_ALL, NULL); const size_t __llen = strlen(__old) + 1; @@ -137,10 +137,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) delete [] __sav; // Make sure __s is null terminated. if (__len == 0) - __s[0] = L'\0'; + __s[0] = L'\0'; } - template<> + template<> void __timepunct::_M_initialize_timepunct(__c_locale) { diff --git a/libstdc++-v3/config/locale/gnu/c_locale.cc b/libstdc++-v3/config/locale/gnu/c_locale.cc index 80ef9c740d2..9706e414dd5 100644 --- a/libstdc++-v3/config/locale/gnu/c_locale.cc +++ b/libstdc++-v3/config/locale/gnu/c_locale.cc @@ -1,6 +1,6 @@ // Wrapper for underlying C-language localization -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -40,7 +40,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<> void __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, - const __c_locale& __cloc) + const __c_locale& __cloc) throw() { char* __sanity; __v = __strtof_l(__s, &__sanity, __cloc); @@ -67,7 +67,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<> void __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, - const __c_locale& __cloc) + const __c_locale& __cloc) throw() { char* __sanity; __v = __strtod_l(__s, &__sanity, __cloc); @@ -94,7 +94,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<> void __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, - const __c_locale& __cloc) + const __c_locale& __cloc) throw() { char* __sanity; #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) @@ -145,7 +145,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) } __c_locale - locale::facet::_S_clone_c_locale(__c_locale& __cloc) + locale::facet::_S_clone_c_locale(__c_locale& __cloc) throw() { return __duplocale(__cloc); } __c_locale diff --git a/libstdc++-v3/config/locale/gnu/collate_members.cc b/libstdc++-v3/config/locale/gnu/collate_members.cc index e8df3c24b0e..bcd415355f4 100644 --- a/libstdc++-v3/config/locale/gnu/collate_members.cc +++ b/libstdc++-v3/config/locale/gnu/collate_members.cc @@ -1,6 +1,6 @@ // std::collate implementation details, GNU version -*- C++ -*- -// Copyright (C) 2001, 2002, 2005, 2009 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2005, 2009, 2010 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -37,7 +37,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) // be put there instead of here. template<> int - collate::_M_compare(const char* __one, const char* __two) const + collate::_M_compare(const char* __one, + const char* __two) const throw() { int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); @@ -46,14 +47,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<> size_t collate::_M_transform(char* __to, const char* __from, - size_t __n) const + size_t __n) const throw() { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } #ifdef _GLIBCXX_USE_WCHAR_T template<> int collate::_M_compare(const wchar_t* __one, - const wchar_t* __two) const + const wchar_t* __two) const throw() { int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); @@ -62,7 +63,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<> size_t collate::_M_transform(wchar_t* __to, const wchar_t* __from, - size_t __n) const + size_t __n) const throw() { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } #endif diff --git a/libstdc++-v3/config/locale/gnu/ctype_members.cc b/libstdc++-v3/config/locale/gnu/ctype_members.cc index 546f878259b..6965694297d 100644 --- a/libstdc++-v3/config/locale/gnu/ctype_members.cc +++ b/libstdc++-v3/config/locale/gnu/ctype_members.cc @@ -1,6 +1,6 @@ // std::ctype implementation details, GNU version -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -55,7 +55,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) #ifdef _GLIBCXX_USE_WCHAR_T ctype::__wmask_type - ctype::_M_convert_to_wmask(const mask __m) const + ctype::_M_convert_to_wmask(const mask __m) const throw() { __wmask_type __ret; switch (__m) @@ -267,7 +267,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) } void - ctype::_M_initialize_ctype() + ctype::_M_initialize_ctype() throw() { #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) __c_locale __old = __uselocale(_M_c_locale_ctype); diff --git a/libstdc++-v3/config/locale/gnu/monetary_members.cc b/libstdc++-v3/config/locale/gnu/monetary_members.cc index 02e48240ba9..159eb97cad5 100644 --- a/libstdc++-v3/config/locale/gnu/monetary_members.cc +++ b/libstdc++-v3/config/locale/gnu/monetary_members.cc @@ -1,6 +1,6 @@ // std::moneypunct implementation details, GNU version -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -37,7 +37,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) // Construct and return valid pattern consisting of some combination of: // space none symbol sign value money_base::pattern - money_base::_S_construct_pattern(char __precedes, char __space, char __posn) + money_base::_S_construct_pattern(char __precedes, char __space, + char __posn) throw() { pattern __ret; diff --git a/libstdc++-v3/config/locale/gnu/time_members.cc b/libstdc++-v3/config/locale/gnu/time_members.cc index f80932ca390..43cab22964c 100644 --- a/libstdc++-v3/config/locale/gnu/time_members.cc +++ b/libstdc++-v3/config/locale/gnu/time_members.cc @@ -1,6 +1,6 @@ // std::time_get, std::time_put implementation, GNU version -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -39,7 +39,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) void __timepunct:: _M_put(char* __s, size_t __maxlen, const char* __format, - const tm* __tm) const + const tm* __tm) const throw() { #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, @@ -195,7 +195,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) void __timepunct:: _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, - const tm* __tm) const + const tm* __tm) const throw() { #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, diff --git a/libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.cc b/libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.cc index 5ce4ba9ee9f..262681b8983 100644 --- a/libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.cc +++ b/libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.cc @@ -1,6 +1,6 @@ // Wrapper for underlying C-language localization -*- C++ -*- -// Copyright (C) 2001, 2002, 2009 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2009, 2010 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -41,7 +41,7 @@ namespace std { } __c_locale - locale::facet::_S_clone_c_locale(__c_locale&) + locale::facet::_S_clone_c_locale(__c_locale&) throw() { return __c_locale(); } template<> diff --git a/libstdc++-v3/include/bits/ios_base.h b/libstdc++-v3/include/bits/ios_base.h index 601e5209cf1..0ac3d692647 100644 --- a/libstdc++-v3/include/bits/ios_base.h +++ b/libstdc++-v3/include/bits/ios_base.h @@ -521,7 +521,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) locale _M_ios_locale; void - _M_init() throw (); + _M_init() throw(); public: @@ -680,7 +680,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) * with imbue_event. */ locale - imbue(const locale& __loc) throw (); + imbue(const locale& __loc) throw(); /** * @brief Locale access diff --git a/libstdc++-v3/include/bits/locale_classes.h b/libstdc++-v3/include/bits/locale_classes.h index 9f7346e7e75..347e7612486 100644 --- a/libstdc++-v3/include/bits/locale_classes.h +++ b/libstdc++-v3/include/bits/locale_classes.h @@ -222,7 +222,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) * copies, or have the same name. False otherwise. */ bool - operator==(const locale& __other) const throw (); + operator==(const locale& __other) const throw(); /** * @brief Locale inequality. @@ -231,7 +231,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) * @return ! (*this == other) */ bool - operator!=(const locale& __other) const throw () + operator!=(const locale& __other) const throw() { return !(this->operator==(__other)); } /** @@ -313,7 +313,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _S_initialize(); static void - _S_initialize_once() throw (); + _S_initialize_once() throw(); static category _S_normalize_category(category); @@ -378,7 +378,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __c_locale __old = 0); static __c_locale - _S_clone_c_locale(__c_locale& __cloc) throw (); + _S_clone_c_locale(__c_locale& __cloc) throw(); static void _S_destroy_c_locale(__c_locale& __cloc); @@ -392,7 +392,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _S_get_c_locale(); _GLIBCXX_CONST static const char* - _S_get_c_name() throw (); + _S_get_c_name() throw(); private: void @@ -441,7 +441,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template friend bool - has_facet(const locale&) throw (); + has_facet(const locale&) throw(); // NB: There is no accessor for _M_index because it may be used // before the constructor is run; the effect of calling a member @@ -463,7 +463,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) id() { } size_t - _M_id() const throw (); + _M_id() const throw(); }; @@ -703,10 +703,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) // Used to abstract out _CharT bits in virtual member functions, below. int - _M_compare(const _CharT*, const _CharT*) const throw (); + _M_compare(const _CharT*, const _CharT*) const throw(); size_t - _M_transform(_CharT*, const _CharT*, size_t) const throw (); + _M_transform(_CharT*, const _CharT*, size_t) const throw(); protected: /// Destructor. @@ -765,20 +765,20 @@ _GLIBCXX_BEGIN_NAMESPACE(std) // Specializations. template<> int - collate::_M_compare(const char*, const char*) const throw (); + collate::_M_compare(const char*, const char*) const throw(); template<> size_t - collate::_M_transform(char*, const char*, size_t) const throw (); + collate::_M_transform(char*, const char*, size_t) const throw(); #ifdef _GLIBCXX_USE_WCHAR_T template<> int - collate::_M_compare(const wchar_t*, const wchar_t*) const throw (); + collate::_M_compare(const wchar_t*, const wchar_t*) const throw(); template<> size_t - collate::_M_transform(wchar_t*, const wchar_t*, size_t) const throw (); + collate::_M_transform(wchar_t*, const wchar_t*, size_t) const throw(); #endif /// class collate_byname [22.2.4.2]. diff --git a/libstdc++-v3/include/bits/locale_facets.h b/libstdc++-v3/include/bits/locale_facets.h index c931502e9a2..b3f9001a52d 100644 --- a/libstdc++-v3/include/bits/locale_facets.h +++ b/libstdc++-v3/include/bits/locale_facets.h @@ -70,17 +70,17 @@ _GLIBCXX_BEGIN_NAMESPACE(std) template<> void __convert_to_v(const char*, float&, ios_base::iostate&, - const __c_locale&) throw (); + const __c_locale&) throw(); template<> void __convert_to_v(const char*, double&, ios_base::iostate&, - const __c_locale&) throw (); + const __c_locale&) throw(); template<> void __convert_to_v(const char*, long double&, ios_base::iostate&, - const __c_locale&) throw (); + const __c_locale&) throw(); // NB: __pad is a struct, rather than a function, so it can be // partially-specialized. @@ -1219,7 +1219,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) protected: __wmask_type - _M_convert_to_wmask(const mask __m) const throw (); + _M_convert_to_wmask(const mask __m) const throw(); /// Destructor virtual @@ -1457,7 +1457,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) // For use at construction time only. void - _M_initialize_ctype() throw (); + _M_initialize_ctype() throw(); }; #endif //_GLIBCXX_USE_WCHAR_T @@ -1557,7 +1557,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) // num_put // Construct and return valid scanf format for floating point types. static void - _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw (); + _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw(); }; template diff --git a/libstdc++-v3/include/std/system_error b/libstdc++-v3/include/std/system_error index 0e8c69744e5..c485cc47c7b 100644 --- a/libstdc++-v3/include/std/system_error +++ b/libstdc++-v3/include/std/system_error @@ -103,8 +103,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) inline error_category::error_category() = default; // DR 890. - _GLIBCXX_CONST const error_category& system_category() throw (); - _GLIBCXX_CONST const error_category& generic_category() throw (); + _GLIBCXX_CONST const error_category& system_category() throw(); + _GLIBCXX_CONST const error_category& generic_category() throw(); error_code make_error_code(errc); diff --git a/libstdc++-v3/libsupc++/eh_personality.cc b/libstdc++-v3/libsupc++/eh_personality.cc index befb26c9d3a..2b194f2e486 100644 --- a/libstdc++-v3/libsupc++/eh_personality.cc +++ b/libstdc++-v3/libsupc++/eh_personality.cc @@ -1,5 +1,5 @@ // -*- C++ -*- The GNU C++ exception personality routine. -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of GCC. @@ -549,6 +549,7 @@ PERSONALITY_FUNCTION (int version, else if (!foreign_exception) thrown_ptr = __get_object_from_ue (ue_header); #else +#ifdef __GXX_RTTI // During forced unwinding, match a magic exception type. if (actions & _UA_FORCE_UNWIND) { @@ -561,6 +562,7 @@ PERSONALITY_FUNCTION (int version, throw_type = &typeid(abi::__foreign_exception); } else +#endif { thrown_ptr = __get_object_from_ue (ue_header); throw_type = __get_exception_header_from_obj @@ -771,7 +773,7 @@ __cxa_call_unexpected (void *exc_obj_in) // If the exception spec allows std::bad_exception, throw that. // We don't have a thrown object to compare against, but since // bad_exception doesn't have virtual bases, that's OK; just pass 0. -#ifdef __EXCEPTIONS +#if defined(__EXCEPTIONS) && defined(__GXX_RTTI) const std::type_info &bad_exc = typeid (std::bad_exception); if (check_exception_spec (&info, &bad_exc, 0, xh_switch_value)) throw std::bad_exception(); diff --git a/libstdc++-v3/libsupc++/pbase_type_info.cc b/libstdc++-v3/libsupc++/pbase_type_info.cc index e075b9e6a88..f79d9e96867 100644 --- a/libstdc++-v3/libsupc++/pbase_type_info.cc +++ b/libstdc++-v3/libsupc++/pbase_type_info.cc @@ -1,4 +1,5 @@ -// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 2009 +// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, +// 2009, 2010 // Free Software Foundation // // This file is part of GCC. @@ -37,8 +38,11 @@ __do_catch (const type_info *thr_type, { if (*this == *thr_type) return true; // same type + +#ifdef __GXX_RTTI if (typeid (*this) != typeid (*thr_type)) return false; // not both same kind of pointers +#endif if (!(outer & 1)) // We're not the same and our outer pointers are not all const qualified diff --git a/libstdc++-v3/libsupc++/pointer_type_info.cc b/libstdc++-v3/libsupc++/pointer_type_info.cc index ae15af07c1e..be96308bf4b 100644 --- a/libstdc++-v3/libsupc++/pointer_type_info.cc +++ b/libstdc++-v3/libsupc++/pointer_type_info.cc @@ -1,4 +1,5 @@ -// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, 2009 +// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2007, +// 2009, 2010 // Free Software Foundation // // This file is part of GCC. @@ -41,11 +42,13 @@ __pointer_catch (const __pbase_type_info *thrown_type, void **thr_obj, unsigned outer) const { +#ifdef __GXX_RTTI if (outer < 2 && *__pointee == typeid (void)) { // conversion to void return !thrown_type->__pointee->__is_function_p (); } +#endif return __pbase_type_info::__pointer_catch (thrown_type, thr_obj, outer); } diff --git a/libstdc++-v3/src/ios.cc b/libstdc++-v3/src/ios.cc index 9d2ff8eeb59..66052872ac7 100644 --- a/libstdc++-v3/src/ios.cc +++ b/libstdc++-v3/src/ios.cc @@ -1,7 +1,7 @@ // Iostreams base classes -*- C++ -*- // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, -// 2006, 2007, 2008, 2009 +// 2006, 2007, 2008, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -73,7 +73,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) bool ios_base::Init::_S_synced_with_stdio = true; - ios_base::ios_base() + ios_base::ios_base() throw() : _M_precision(), _M_width(), _M_flags(), _M_exception(), _M_streambuf_state(), _M_callbacks(0), _M_word_zero(), _M_word_size(_S_local_word_size), _M_word(_M_local_word), _M_ios_locale() @@ -175,7 +175,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) } void - ios_base::_M_dispose_callbacks(void) + ios_base::_M_dispose_callbacks(void) throw() { _Callback_list* __p = _M_callbacks; while (__p && __p->_M_remove_reference() == 0) diff --git a/libstdc++-v3/src/ios_locale.cc b/libstdc++-v3/src/ios_locale.cc index bbdc80ebb3a..8b1873e7d49 100644 --- a/libstdc++-v3/src/ios_locale.cc +++ b/libstdc++-v3/src/ios_locale.cc @@ -1,6 +1,7 @@ // Iostreams base classes -*- C++ -*- -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2009 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, +// 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -33,19 +34,19 @@ _GLIBCXX_BEGIN_NAMESPACE(std) // Called only by basic_ios<>::init. - void - ios_base::_M_init() + void + ios_base::_M_init() throw() { // NB: May be called more than once _M_precision = 6; _M_width = 0; _M_flags = skipws | dec; _M_ios_locale = locale(); - } - + } + // 27.4.2.3 ios_base locale functions locale - ios_base::imbue(const locale& __loc) + ios_base::imbue(const locale& __loc) throw() { locale __old = _M_ios_locale; _M_ios_locale = __loc; diff --git a/libstdc++-v3/src/list.cc b/libstdc++-v3/src/list.cc index f35feec3d48..a7a705ca680 100644 --- a/libstdc++-v3/src/list.cc +++ b/libstdc++-v3/src/list.cc @@ -53,7 +53,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) void - _List_node_base::swap(_List_node_base& __x, _List_node_base& __y) + _List_node_base::swap(_List_node_base& __x, _List_node_base& __y) throw() { if ( __x._M_next != &__x ) { @@ -86,7 +86,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) void _List_node_base::_M_transfer(_List_node_base * const __first, - _List_node_base * const __last) + _List_node_base * const __last) throw() { if (this != __last) { @@ -104,7 +104,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) } void - _List_node_base::_M_reverse() + _List_node_base::_M_reverse() throw() { _List_node_base* __tmp = this; do @@ -118,7 +118,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) } void - _List_node_base::_M_hook(_List_node_base* const __position) + _List_node_base::_M_hook(_List_node_base* const __position) throw() { this->_M_next = __position; this->_M_prev = __position->_M_prev; @@ -127,7 +127,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) } void - _List_node_base::_M_unhook() + _List_node_base::_M_unhook() throw() { _List_node_base* const __next_node = this->_M_next; _List_node_base* const __prev_node = this->_M_prev; diff --git a/libstdc++-v3/src/locale.cc b/libstdc++-v3/src/locale.cc index bf31e7c70d8..937e99c8b14 100644 --- a/libstdc++-v3/src/locale.cc +++ b/libstdc++-v3/src/locale.cc @@ -1,5 +1,5 @@ // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, -// 2006, 2007, 2008, 2009 +// 2006, 2007, 2008, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -217,7 +217,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) } const char* - locale::facet::_S_get_c_name() + locale::facet::_S_get_c_name() throw() { return _S_c_name; } locale::facet:: @@ -408,7 +408,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _Atomic_word locale::id::_S_refcount; // init'd to 0 by linker size_t - locale::id::_M_id() const + locale::id::_M_id() const throw() { if (!_M_index) { diff --git a/libstdc++-v3/src/locale_facets.cc b/libstdc++-v3/src/locale_facets.cc index 081565470ed..77686c6c3ea 100644 --- a/libstdc++-v3/src/locale_facets.cc +++ b/libstdc++-v3/src/locale_facets.cc @@ -1,5 +1,5 @@ // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, -// 2006, 2007, 2008, 2009 +// 2006, 2007, 2008, 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -58,7 +58,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) // According to the resolution of DR 231, about 22.2.2.2.2, p11, // "str.precision() is specified in the conversion specification". void - __num_base::_S_format_float(const ios_base& __io, char* __fptr, char __mod) + __num_base::_S_format_float(const ios_base& __io, char* __fptr, + char __mod) throw() { ios_base::fmtflags __flags = __io.flags(); *__fptr++ = '%'; @@ -88,7 +89,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) bool __verify_grouping(const char* __grouping, size_t __grouping_size, - const string& __grouping_tmp) + const string& __grouping_tmp) throw() { const size_t __n = __grouping_tmp.size() - 1; const size_t __min = std::min(__n, size_t(__grouping_size - 1)); diff --git a/libstdc++-v3/src/locale_init.cc b/libstdc++-v3/src/locale_init.cc index 893b6063d5c..45f67f67e31 100644 --- a/libstdc++-v3/src/locale_init.cc +++ b/libstdc++-v3/src/locale_init.cc @@ -1,5 +1,5 @@ // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -// 2009 +// 2009, 2010 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -260,7 +260,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) } void - locale::_S_initialize_once() + locale::_S_initialize_once() throw() { // 2 references. // One reference for _S_classic, one for _S_global diff --git a/libstdc++-v3/src/system_error.cc b/libstdc++-v3/src/system_error.cc index c8c19eddda9..21448018204 100644 --- a/libstdc++-v3/src/system_error.cc +++ b/libstdc++-v3/src/system_error.cc @@ -1,6 +1,6 @@ // implementation file -// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. +// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -69,10 +69,10 @@ namespace _GLIBCXX_BEGIN_NAMESPACE(std) const error_category& - system_category() { return system_category_instance; } + system_category() throw() { return system_category_instance; } const error_category& - generic_category() { return generic_category_instance; } + generic_category() throw() { return generic_category_instance; } system_error::~system_error() throw() { } diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc b/libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc new file mode 100644 index 00000000000..99585999ed5 --- /dev/null +++ b/libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc @@ -0,0 +1,21 @@ +// { dg-do compile } +// { dg-options "-fno-rtti" } + +// Copyright (C) 2010 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) +// any later version. + +// This library 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 library; see the file COPYING3. If not see +// . + +#include diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++200x/all_no_rtti.cc b/libstdc++-v3/testsuite/17_intro/headers/c++200x/all_no_rtti.cc new file mode 100644 index 00000000000..2ce83ed0eb4 --- /dev/null +++ b/libstdc++-v3/testsuite/17_intro/headers/c++200x/all_no_rtti.cc @@ -0,0 +1,21 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x -fno-rtti" } + +// Copyright (C) 2010 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) +// any later version. + +// This library 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 library; see the file COPYING3. If not see +// . + +#include