2006-02-07 Jakub Jelinek Benjamin Kosnik * configure.ac (_GLIBCXX_LONG_DOUBLE_COMPAT): New check. If true, set also port_specific_symbol_files and create as_symver_specs. (GLIBCXX_LDBL_COMPAT): New GLIBCXX_CONDITIONAL. * configure: Rebuilt. * config.h.in: Rebuilt. * config/os/gnu-linux/ldbl-extra.ver: New file. * config/linker-map.gnu: Make sure no __float128 symbols are exported. * include/bits/c++config (_GLIBCXX_LONG_DOUBLE_COMPAT, _GLIBCXX_LDBL_NAMESPACE, _GLIBCXX_BEGIN_LDBL_NAMESPACE, _GLIBCXX_END_LDBL_NAMESPACE): Define. * include/bits/localefwd.h: Use them to conditionally scope facets. * include/bits/locale_facets.h: Surround std::{money,num}_{get,put} with _GLIBCXX_BEGIN_LDBL_NAMESPACE and _GLIBCXX_END_LDBL_NAMESPACE. [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::money_get): Add __do_get method. [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::money_put): Add __do_put method. [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::num_get): Add __do_get method. [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::num_put): Add __do_put method. * include/bits/locale_facets.tcc: Surround std::{money,num}_{get,put} with _GLIBCXX_BEGIN_LDBL_NAMESPACE and _GLIBCXX_END_LDBL_NAMESPACE. (std::money_get::__do_get, std::money_put::__do_put, std::num_get::__do_get, std::num_put::__do_put): New specializations. * include/Makefile.am: Conditionally define _GLIBCXX_LONG_DOUBLE_COMPAT in c++config. * include/Makefile.in: Regenerate. * src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT] (_GLIBCXX_LOC_ID, _GLIBCXX_SYNC_ID): Define, use them. * src/compatibility-ldbl.cc: New file. * src/complex_io.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Add compatibility symbols. * src/limits.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise. * src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise. * src/locale-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise. * src/locale-misc-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise. * src/istream-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise. * src/ostream-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise. * src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise. * src/wlocale-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise. * src/compatibility.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise. * config/locale/generic/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise. * config/locale/gnu/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise. * src/Makefile.am (libstdc++-symbol.ver): Append instead of insert in the middle if port specific symbol file requests it. (ldbl_compat_sources): New variable. (sources): Use it. (compatibility-ldbl.lo, compatibility-ldbl.o): New rules. * src/Makefile.in: Rebuilt. * testsuite/testsuite_abi.cc: Recognize GLIBCXX_LDBL_3.4, GLIBCXX_LDBL_3.4.7, CXXABI_LDBL_1.3. --- libstdc++-v3/configure.ac.jj 2006-02-02 16:38:33.000000000 +0100 +++ libstdc++-v3/configure.ac 2006-02-10 14:53:36.000000000 +0100 @@ -281,6 +281,25 @@ fi # This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no. GLIBCXX_ENABLE_SYMVERS([yes]) +ac_ldbl_compat=no +case "$target" in + powerpc*-*-*gnu* | \ + sparc*-*-linux* | \ + s390*-*-linux* | \ + alpha*-*-linux*) + AC_TRY_COMPILE(, [ +#if !defined __LONG_DOUBLE_128__ || (defined(__sparc__) && defined(__arch64__)) +#error no need for long double compatibility +#endif + ], [ac_ldbl_compat=yes], [ac_ldbl_compat=no]) + if test "$ac_ldbl_compat" = yes; then + AC_DEFINE([_GLIBCXX_LONG_DOUBLE_COMPAT],1, + [Define if compatibility should be provided for -mlong-double-64.]) + port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver" + fi +esac +GLIBCXX_CONDITIONAL(GLIBCXX_LDBL_COMPAT, test $ac_ldbl_compat = yes) + # This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE. GLIBCXX_CONFIGURE_TESTSUITE --- libstdc++-v3/src/locale.cc.jj 2006-02-02 16:38:25.000000000 +0100 +++ libstdc++-v3/src/locale.cc 2006-02-10 14:57:26.000000000 +0100 @@ -41,6 +41,21 @@ namespace __gnu_internal static __glibcxx_mutex_define_initialized(locale_cache_mutex); } +// XXX GLIBCXX_ABI Deprecated +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT +# define _GLIBCXX_LOC_ID(mangled) extern std::locale::id mangled +_GLIBCXX_LOC_ID (_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE); +_GLIBCXX_LOC_ID (_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE); +_GLIBCXX_LOC_ID (_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE); +_GLIBCXX_LOC_ID (_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE); +# ifdef _GLIBCXX_USE_WCHAR_T +_GLIBCXX_LOC_ID (_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE); +_GLIBCXX_LOC_ID (_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE); +_GLIBCXX_LOC_ID (_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE); +_GLIBCXX_LOC_ID (_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE); +# endif +#endif + namespace std { // Definitions for static const data members of locale. @@ -398,9 +413,29 @@ namespace std locale::id::_M_id() const { if (!_M_index) - _M_index = 1 + __gnu_cxx::__exchange_and_add(&_S_refcount, 1); + { + // XXX GLIBCXX_ABI Deprecated +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT + locale::id *f = 0; +# define _GLIBCXX_SYNC_ID(facet, mangled) \ + if (this == &::mangled) \ + f = &facet::id + _GLIBCXX_SYNC_ID (num_get, _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE); + _GLIBCXX_SYNC_ID (num_put, _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE); + _GLIBCXX_SYNC_ID (money_get, _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE); + _GLIBCXX_SYNC_ID (money_put, _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE); +# ifdef _GLIBCXX_USE_WCHAR_T + _GLIBCXX_SYNC_ID (num_get, _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE); + _GLIBCXX_SYNC_ID (num_put, _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE); + _GLIBCXX_SYNC_ID (money_get, _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE); + _GLIBCXX_SYNC_ID (money_put, _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE); +# endif + if (f) + _M_index = 1 + f->_M_id(); + else +#endif + _M_index = 1 + __gnu_cxx::__exchange_and_add(&_S_refcount, 1); + } return _M_index - 1; } } // namespace std - - --- libstdc++-v3/src/ostream-inst.cc.jj 2006-02-02 16:38:25.000000000 +0100 +++ libstdc++-v3/src/ostream-inst.cc 2006-02-10 14:53:36.000000000 +0100 @@ -1,6 +1,6 @@ // Explicit instantiation file. -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2006 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -74,3 +74,19 @@ namespace std template wostream& operator<<(wostream&, _Setw); #endif } // namespace std + +// XXX GLIBCXX_ABI Deprecated +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT + +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \ + extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak)) +_GLIBCXX_LDBL_COMPAT (_ZNSolsEd, _ZNSolsEe); +_GLIBCXX_LDBL_COMPAT (_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd, + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe); +// These 2 are in GCC 4.2+ only so far +// _GLIBCXX_LDBL_COMPAT (_ZNSo9_M_insertIdEERSoT_, +// _ZNSo9_M_insertIeEERSoT_); +// _GLIBCXX_LDBL_COMPAT (_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_, +// _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_); + +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT --- libstdc++-v3/src/locale-inst.cc.jj 2006-02-02 16:38:25.000000000 +0100 +++ libstdc++-v3/src/locale-inst.cc 2006-02-10 14:53:36.000000000 +0100 @@ -1,6 +1,6 @@ // Locale support -*- C++ -*- -// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2006 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -37,6 +37,7 @@ // Instantiation configuration. #ifndef C # define C char +# define C_is_char #endif namespace std @@ -48,6 +49,7 @@ namespace std template struct __moneypunct_cache; template class moneypunct_byname; template class moneypunct_byname; +_GLIBCXX_BEGIN_LDBL_NAMESPACE template class money_get >; template class money_put >; template @@ -73,11 +75,13 @@ namespace std money_put >:: _M_insert(ostreambuf_iterator, ios_base&, C, const string_type&) const; +_GLIBCXX_END_LDBL_NAMESPACE // numpunct, numpunct_byname, num_get, and num_put template class numpunct; template struct __numpunct_cache; template class numpunct_byname; +_GLIBCXX_BEGIN_LDBL_NAMESPACE template class num_get >; template class num_put >; template @@ -161,7 +165,8 @@ namespace std num_put >:: _M_insert_float(ostreambuf_iterator, ios_base&, C, char, long double) const; - +_GLIBCXX_END_LDBL_NAMESPACE + // time_get and time_put template class __timepunct; template struct __timepunct_cache; @@ -314,3 +319,44 @@ namespace std ios_base::fmtflags, bool); #endif } // namespace std + +// XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined C_is_char + +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \ + extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak)) + +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_, + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_, + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_, + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_, + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_, + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_, + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs, + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs, + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs, + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs, + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs); + +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT --- libstdc++-v3/src/compatibility.cc.jj 2006-02-02 16:38:25.000000000 +0100 +++ libstdc++-v3/src/compatibility.cc 2006-02-10 14:57:29.000000000 +0100 @@ -1,6 +1,6 @@ // Compatibility symbols for previous versions -*- C++ -*- -// Copyright (C) 2005 +// Copyright (C) 2005, 2006 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -49,6 +49,7 @@ #include #include #include +#include namespace std { @@ -362,6 +363,107 @@ namespace std #endif +// gcc-4.1.0 +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT +#define _GLIBCXX_MATHL_WRAPPER(name, argdecl, args, ver) \ +extern "C" double \ +__ ## name ## l_wrapper argdecl \ +{ \ + return name args; \ +} \ +asm (".symver __" #name "l_wrapper, " #name "l@" #ver) + +#define _GLIBCXX_MATHL_WRAPPER1(name, ver) \ + _GLIBCXX_MATHL_WRAPPER (name, (double x), (x), ver) + +#define _GLIBCXX_MATHL_WRAPPER2(name, ver) \ + _GLIBCXX_MATHL_WRAPPER (name, (double x, double y), (x, y), ver) + +#ifdef _GLIBCXX_HAVE_ACOSL +_GLIBCXX_MATHL_WRAPPER1 (acos, GLIBCXX_3.4.3); +#endif +#ifdef _GLIBCXX_HAVE_ASINL +_GLIBCXX_MATHL_WRAPPER1 (asin, GLIBCXX_3.4.3); +#endif +#ifdef _GLIBCXX_HAVE_ATAN2L +_GLIBCXX_MATHL_WRAPPER2 (atan2, GLIBCXX_3.4); +#endif +#ifdef _GLIBCXX_HAVE_ATANL +_GLIBCXX_MATHL_WRAPPER1 (atan, GLIBCXX_3.4.3); +#endif +#ifdef _GLIBCXX_HAVE_CEILL +_GLIBCXX_MATHL_WRAPPER1 (ceil, GLIBCXX_3.4.3); +#endif +#ifdef _GLIBCXX_HAVE_COSHL +_GLIBCXX_MATHL_WRAPPER1 (cosh, GLIBCXX_3.4); +#endif +#ifdef _GLIBCXX_HAVE_COSL +_GLIBCXX_MATHL_WRAPPER1 (cos, GLIBCXX_3.4); +#endif +#ifdef _GLIBCXX_HAVE_EXPL +_GLIBCXX_MATHL_WRAPPER1 (exp, GLIBCXX_3.4); +#endif +#ifdef _GLIBCXX_HAVE_FLOORL +_GLIBCXX_MATHL_WRAPPER1 (floor, GLIBCXX_3.4.3); +#endif +#ifdef _GLIBCXX_HAVE_FMODL +_GLIBCXX_MATHL_WRAPPER2 (fmod, GLIBCXX_3.4.3); +#endif +#ifdef _GLIBCXX_HAVE_FREXPL +_GLIBCXX_MATHL_WRAPPER (frexp, (double x, int *y), (x, y), GLIBCXX_3.4.3); +#endif +#ifdef _GLIBCXX_HAVE_HYPOTL +_GLIBCXX_MATHL_WRAPPER2 (hypot, GLIBCXX_3.4); +#endif +#ifdef _GLIBCXX_HAVE_LDEXPL +_GLIBCXX_MATHL_WRAPPER (ldexp, (double x, int y), (x, y), GLIBCXX_3.4.3); +#endif +#ifdef _GLIBCXX_HAVE_LOG10L +_GLIBCXX_MATHL_WRAPPER1 (log10, GLIBCXX_3.4); +#endif +#ifdef _GLIBCXX_HAVE_LOGL +_GLIBCXX_MATHL_WRAPPER1 (log, GLIBCXX_3.4); +#endif +#ifdef _GLIBCXX_HAVE_MODFL +_GLIBCXX_MATHL_WRAPPER (modf, (double x, double *y), (x, y), GLIBCXX_3.4.3); +#endif +#ifdef _GLIBCXX_HAVE_POWL +_GLIBCXX_MATHL_WRAPPER2 (pow, GLIBCXX_3.4); +#endif +#ifdef _GLIBCXX_HAVE_SINHL +_GLIBCXX_MATHL_WRAPPER1 (sinh, GLIBCXX_3.4); +#endif +#ifdef _GLIBCXX_HAVE_SINL +_GLIBCXX_MATHL_WRAPPER1 (sin, GLIBCXX_3.4); +#endif +#ifdef _GLIBCXX_HAVE_SQRTL +_GLIBCXX_MATHL_WRAPPER1 (sqrt, GLIBCXX_3.4); +#endif +#ifdef _GLIBCXX_HAVE_TANHL +_GLIBCXX_MATHL_WRAPPER1 (tanh, GLIBCXX_3.4); +#endif +#ifdef _GLIBCXX_HAVE_TANL +_GLIBCXX_MATHL_WRAPPER1 (tan, GLIBCXX_3.4); +#endif +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT + +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT +extern void *_ZTVN10__cxxabiv123__fundamental_type_infoE[]; +extern void *_ZTVN10__cxxabiv119__pointer_type_infoE[]; +extern __attribute__((used, weak)) const char _ZTSe[2] = "e"; +extern __attribute__((used, weak)) const char _ZTSPe[3] = "Pe"; +extern __attribute__((used, weak)) const char _ZTSPKe[4] = "PKe"; +extern __attribute__((used, weak)) const void *_ZTIe[2] + = { (void *) &_ZTVN10__cxxabiv123__fundamental_type_infoE[2], + (void *) _ZTSe }; +extern __attribute__((used, weak)) const void *_ZTIPe[4] + = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2], + (void *) _ZTSPe, (void *) 0L, (void *) _ZTIe }; +extern __attribute__((used, weak)) const void *_ZTIPKe[4] + = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2], + (void *) _ZTSPKe, (void *) 1L, (void *) _ZTIe }; +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT + #ifdef __APPLE__ #if (defined(__ppc__) || defined (__ppc64__)) && defined (PIC) /* __eprintf shouldn't have been made visible from libstdc++, or --- libstdc++-v3/src/limits.cc.jj 2006-02-02 16:38:25.000000000 +0100 +++ libstdc++-v3/src/limits.cc 2006-02-10 14:53:36.000000000 +0100 @@ -1,6 +1,6 @@ // Static data members of -*- C++ -*- numeric_limits classes -// Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc. +// Copyright (C) 1999, 2001, 2002, 2006 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 @@ -447,3 +447,34 @@ namespace std const bool numeric_limits::tinyness_before; const float_round_style numeric_limits::round_style; } // namespace std + +// XXX GLIBCXX_ABI Deprecated +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT + +#define _GLIBCXX_NUM_LIM_COMPAT(type, member, len) \ + extern "C" type _ZNSt14numeric_limitsIeE ## len ## member ## E \ + __attribute__ ((alias ("_ZNSt14numeric_limitsIdE" #len #member "E"))) +_GLIBCXX_NUM_LIM_COMPAT (bool, is_specialized, 14); +_GLIBCXX_NUM_LIM_COMPAT (int, digits, 6); +_GLIBCXX_NUM_LIM_COMPAT (int, digits10, 8); +_GLIBCXX_NUM_LIM_COMPAT (bool, is_signed, 9); +_GLIBCXX_NUM_LIM_COMPAT (bool, is_integer, 10); +_GLIBCXX_NUM_LIM_COMPAT (bool, is_exact, 8); +_GLIBCXX_NUM_LIM_COMPAT (int, radix, 5); +_GLIBCXX_NUM_LIM_COMPAT (int, min_exponent, 12); +_GLIBCXX_NUM_LIM_COMPAT (int, min_exponent10, 14); +_GLIBCXX_NUM_LIM_COMPAT (int, max_exponent, 12); +_GLIBCXX_NUM_LIM_COMPAT (int, max_exponent10, 14); +_GLIBCXX_NUM_LIM_COMPAT (bool, has_infinity, 12); +_GLIBCXX_NUM_LIM_COMPAT (bool, has_quiet_NaN, 13); +_GLIBCXX_NUM_LIM_COMPAT (bool, has_signaling_NaN, 17); +_GLIBCXX_NUM_LIM_COMPAT (std::float_denorm_style, has_denorm, 10); +_GLIBCXX_NUM_LIM_COMPAT (bool, has_denorm_loss, 15); +_GLIBCXX_NUM_LIM_COMPAT (bool, is_iec559, 9); +_GLIBCXX_NUM_LIM_COMPAT (bool, is_bounded, 10); +_GLIBCXX_NUM_LIM_COMPAT (bool, is_modulo, 9); +_GLIBCXX_NUM_LIM_COMPAT (bool, traps, 5); +_GLIBCXX_NUM_LIM_COMPAT (bool, tinyness_before, 15); +_GLIBCXX_NUM_LIM_COMPAT (std::float_round_style, round_style, 11); + +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT --- libstdc++-v3/src/compatibility-ldbl.cc.jj 2006-02-10 14:53:36.000000000 +0100 +++ libstdc++-v3/src/compatibility-ldbl.cc 2006-02-10 14:53:36.000000000 +0100 @@ -0,0 +1,73 @@ +// Compatibility symbols for -mlong-double-64 compatibility -*- C++ -*- + +// Copyright (C) 2006 +// 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 2, 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 COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +#include + +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT + +#ifdef __LONG_DOUBLE_128__ +#error "compatibility-ldbl.cc must be compiled with -mlong-double-64" +#endif + +namespace std +{ +#define C char + template class num_get >; + template class num_put >; + template class money_get >; + template class money_put >; + template const num_put& use_facet >(const locale&); + template const num_get& use_facet >(const locale&); + template const money_put& use_facet >(const locale&); + template const money_get& use_facet >(const locale&); + template bool has_facet >(const locale&); + template bool has_facet >(const locale&); + template bool has_facet >(const locale&); + template bool has_facet >(const locale&); +#undef C +#ifdef _GLIBCXX_USE_WCHAR_T +#define C wchar_t + template class num_get >; + template class num_put >; + template class money_get >; + template class money_put >; + template const num_put& use_facet >(const locale&); + template const num_get& use_facet >(const locale&); + template const money_put& use_facet >(const locale&); + template const money_get& use_facet >(const locale&); + template bool has_facet >(const locale&); + template bool has_facet >(const locale&); + template bool has_facet >(const locale&); + template bool has_facet >(const locale&); +#undef C +#endif +} + +#endif --- libstdc++-v3/src/Makefile.am.jj 2006-02-02 16:38:25.000000000 +0100 +++ libstdc++-v3/src/Makefile.am 2006-02-10 14:53:36.000000000 +0100 @@ -35,10 +35,15 @@ libstdc++-symbol.ver: ${glibcxx_srcdir} $(port_specific_symbol_files) cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver if test "x$(port_specific_symbol_files)" != x; then \ - sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \ - sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \ - cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \ - rm tmp.top tmp.bottom; \ + if grep '^# Appended to version file.' \ + $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \ + cat $(port_specific_symbol_files) >> $@; \ + else \ + sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \ + sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \ + cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \ + rm tmp.top tmp.bottom; \ + fi; \ fi if ENABLE_SYMVERS_GNU @@ -113,6 +118,12 @@ c++locale.cc: ${glibcxx_srcdir}/$(CLOCAL basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC) $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true +if GLIBCXX_LDBL_COMPAT +ldbl_compat_sources = compatibility-ldbl.cc +else +ldbl_compat_sources = +endif + # Sources present in the src directory. sources = \ bitmap_allocator.cc \ @@ -160,7 +171,8 @@ sources = \ wlocale-inst.cc \ wstring-inst.cc \ ${host_sources} \ - ${host_sources_extra} + ${host_sources_extra} \ + ${ldbl_compat_sources} VPATH = $(top_srcdir)/src:$(top_srcdir) @@ -191,6 +203,15 @@ concept-inst.lo: concept-inst.cc concept-inst.o: concept-inst.cc $(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $< +if GLIBCXX_LDBL_COMPAT +# Use special rules for compatibility-ldbl.cc compilation, as we need to +# pass -mlong-double-64. +compatibility-ldbl.lo: compatibility-ldbl.cc + $(LTCXXCOMPILE) -mlong-double-64 -c $< +compatibility-ldbl.o: compatibility-ldbl.cc + $(CXXCOMPILE) -mlong-double-64 -c $< +endif + # AM_CXXFLAGS needs to be in each subdirectory so that it can be # modified in a per-library or per-sub-library way. Need to manually # set this option because CONFIG_CXXFLAGS has to be after --- libstdc++-v3/src/Makefile.in.jj 2006-02-02 16:38:25.000000000 +0100 +++ libstdc++-v3/src/Makefile.in 2006-02-10 14:53:36.000000000 +0100 @@ -59,11 +59,27 @@ am__strip_dir = `echo $$p | sed -e 's|^. am__installdirs = "$(DESTDIR)$(toolexeclibdir)" toolexeclibLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(toolexeclib_LTLIBRARIES) +am__libstdc___la_SOURCES_DIST = bitmap_allocator.cc pool_allocator.cc \ + mt_allocator.cc codecvt.cc compatibility.cc complex_io.cc \ + ctype.cc debug.cc debug_list.cc functexcept.cc \ + globals_locale.cc globals_io.cc ios.cc ios_failure.cc \ + ios_init.cc ios_locale.cc limits.cc list.cc locale.cc \ + locale_init.cc locale_facets.cc localename.cc stdexcept.cc \ + strstream.cc tree.cc allocator-inst.cc concept-inst.cc \ + fstream-inst.cc ext-inst.cc ios-inst.cc iostream-inst.cc \ + istream-inst.cc istream.cc locale-inst.cc locale-misc-inst.cc \ + misc-inst.cc ostream-inst.cc sstream-inst.cc streambuf-inst.cc \ + streambuf.cc string-inst.cc valarray-inst.cc wlocale-inst.cc \ + wstring-inst.cc atomicity.cc codecvt_members.cc \ + collate_members.cc ctype_members.cc messages_members.cc \ + monetary_members.cc numeric_members.cc time_members.cc \ + basic_file.cc c++locale.cc compatibility-ldbl.cc am__objects_1 = atomicity.lo codecvt_members.lo collate_members.lo \ ctype_members.lo messages_members.lo monetary_members.lo \ numeric_members.lo time_members.lo am__objects_2 = basic_file.lo c++locale.lo -am__objects_3 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \ +@GLIBCXX_LDBL_COMPAT_TRUE@am__objects_3 = compatibility-ldbl.lo +am__objects_4 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \ codecvt.lo compatibility.lo complex_io.lo ctype.lo debug.lo \ debug_list.lo functexcept.lo globals_locale.lo globals_io.lo \ ios.lo ios_failure.lo ios_init.lo ios_locale.lo limits.lo \ @@ -74,8 +90,9 @@ am__objects_3 = bitmap_allocator.lo pool locale-inst.lo locale-misc-inst.lo misc-inst.lo \ ostream-inst.lo sstream-inst.lo streambuf-inst.lo streambuf.lo \ string-inst.lo valarray-inst.lo wlocale-inst.lo \ - wstring-inst.lo $(am__objects_1) $(am__objects_2) -am_libstdc___la_OBJECTS = $(am__objects_3) + wstring-inst.lo $(am__objects_1) $(am__objects_2) \ + $(am__objects_3) +am_libstdc___la_OBJECTS = $(am__objects_4) libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = @@ -84,7 +101,7 @@ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_IN $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) SOURCES = $(libstdc___la_SOURCES) -DIST_SOURCES = $(libstdc___la_SOURCES) +DIST_SOURCES = $(am__libstdc___la_SOURCES_DIST) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -152,6 +169,8 @@ GLIBCXX_C_HEADERS_C_TRUE = @GLIBCXX_C_HE GLIBCXX_HOSTED_FALSE = @GLIBCXX_HOSTED_FALSE@ GLIBCXX_HOSTED_TRUE = @GLIBCXX_HOSTED_TRUE@ GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@ +GLIBCXX_LDBL_COMPAT_FALSE = @GLIBCXX_LDBL_COMPAT_FALSE@ +GLIBCXX_LDBL_COMPAT_TRUE = @GLIBCXX_LDBL_COMPAT_TRUE@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -302,6 +321,8 @@ host_sources_extra = \ basic_file.cc \ c++locale.cc +@GLIBCXX_LDBL_COMPAT_FALSE@ldbl_compat_sources = +@GLIBCXX_LDBL_COMPAT_TRUE@ldbl_compat_sources = compatibility-ldbl.cc # Sources present in the src directory. sources = \ @@ -350,7 +371,8 @@ sources = \ wlocale-inst.cc \ wstring-inst.cc \ ${host_sources} \ - ${host_sources_extra} + ${host_sources_extra} \ + ${ldbl_compat_sources} libstdc___la_SOURCES = $(sources) libstdc___la_LIBADD = \ @@ -677,10 +699,15 @@ libstdc++-symbol.ver: ${glibcxx_srcdir} $(port_specific_symbol_files) cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver if test "x$(port_specific_symbol_files)" != x; then \ - sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \ - sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \ - cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \ - rm tmp.top tmp.bottom; \ + if grep '^# Appended to version file.' \ + $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \ + cat $(port_specific_symbol_files) >> $@; \ + else \ + sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \ + sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \ + cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \ + rm tmp.top tmp.bottom; \ + fi; \ fi @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@libstdc++-symbol.explist : libstdc++-symbol.ver \ @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@ ${glibcxx_srcdir}/scripts/make_exports.pl \ @@ -733,6 +760,13 @@ concept-inst.lo: concept-inst.cc concept-inst.o: concept-inst.cc $(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $< +# Use special rules for compatibility-ldbl.cc compilation, as we need to +# pass -mlong-double-64. +@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.lo: compatibility-ldbl.cc +@GLIBCXX_LDBL_COMPAT_TRUE@ $(LTCXXCOMPILE) -mlong-double-64 -c $< +@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.o: compatibility-ldbl.cc +@GLIBCXX_LDBL_COMPAT_TRUE@ $(CXXCOMPILE) -mlong-double-64 -c $< + # Added bits to build debug library. @GLIBCXX_BUILD_DEBUG_TRUE@all-local: build_debug @GLIBCXX_BUILD_DEBUG_TRUE@install-data-local: install_debug --- libstdc++-v3/src/locale-misc-inst.cc.jj 2006-02-02 16:38:25.000000000 +0100 +++ libstdc++-v3/src/locale-misc-inst.cc 2006-02-10 14:57:35.000000000 +0100 @@ -1,6 +1,7 @@ // Locale support -*- C++ -*- -// Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2006 +// 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 @@ -47,0 +49,16 @@ + +// XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT + +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \ + extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak)) + +# if _GLIBCXX_C_LOCALE_GNU +_GLIBCXX_LDBL_COMPAT(_ZSt16__convert_from_vIdEiPciPKcT_RKP15__locale_structi, + _ZSt16__convert_from_vIeEiPciPKcT_RKP15__locale_structi); +# else +_GLIBCXX_LDBL_COMPAT(_ZSt16__convert_from_vIdEiPciPKcT_RKPii, + _ZSt16__convert_from_vIeEiPciPKcT_RKPii); +# endif + +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT --- libstdc++-v3/src/istream-inst.cc.jj 2006-02-02 16:38:25.000000000 +0100 +++ libstdc++-v3/src/istream-inst.cc 2006-02-10 14:53:36.000000000 +0100 @@ -1,6 +1,6 @@ // Explicit instantiation file. -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2006 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -68,3 +68,19 @@ namespace std template wistream& operator>>(wistream&, _Setw); #endif } // namespace std + +// XXX GLIBCXX_ABI Deprecated +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT + +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \ + extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak)) +_GLIBCXX_LDBL_COMPAT (_ZNSirsERd, _ZNSirsERe); +_GLIBCXX_LDBL_COMPAT (_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd, + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERe); +// These 2 are in GCC 4.2+ only so far +// _GLIBCXX_LDBL_COMPAT (_ZNSi10_M_extractIdEERSiRT_, +// _ZNSi10_M_extractIeEERSiRT_); +// _GLIBCXX_LDBL_COMPAT (_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_, +// _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_); + +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT --- libstdc++-v3/src/complex_io.cc.jj 2006-02-02 16:38:25.000000000 +0100 +++ libstdc++-v3/src/complex_io.cc 2006-02-10 14:53:36.000000000 +0100 @@ -1,6 +1,6 @@ // The template and inlines for the -*- C++ -*- complex number classes. -// Copyright (C) 2000, 2001 Free Software Foundation, Inc. +// Copyright (C) 2000, 2001, 2006 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 @@ -91,3 +91,20 @@ namespace std const complex&); #endif //_GLIBCXX_USE_WCHAR_T } // namespace std + +// XXX GLIBCXX_ABI Deprecated +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT + +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \ + extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak)) + +_GLIBCXX_LDBL_COMPAT (_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E, + _ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E); +_GLIBCXX_LDBL_COMPAT (_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E, + _ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E); +_GLIBCXX_LDBL_COMPAT (_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E, + _ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E); +_GLIBCXX_LDBL_COMPAT (_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E, + _ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E); + +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT --- libstdc++-v3/src/wlocale-inst.cc.jj 2006-02-02 16:38:25.000000000 +0100 +++ libstdc++-v3/src/wlocale-inst.cc 2006-02-10 14:53:36.000000000 +0100 @@ -1,6 +1,7 @@ // Locale support -*- C++ -*- -// Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2006 +// 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 @@ -36,4 +37,45 @@ #ifdef _GLIBCXX_USE_WCHAR_T #define C wchar_t #include "locale-inst.cc" + +// XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT + +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \ + extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak)) + +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_, + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_, + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_, + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_, + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_, + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_, + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_, + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs, + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs, + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE, + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE); +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE, + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE); + +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT #endif --- libstdc++-v3/config/linker-map.gnu.jj 2006-02-02 16:38:25.000000000 +0100 +++ libstdc++-v3/config/linker-map.gnu 2006-02-10 14:53:36.000000000 +0100 @@ -1,6 +1,6 @@ ## Linker script for GNU ld 2.13.91+ only. ## -## Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +## Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ## ## This file is part of the libstdc++ version 3 distribution. ## @@ -44,7 +44,10 @@ GLIBCXX_3.4 { std::basic_[j-n]*; std::basic_o[a-e]*; # std::basic_ofstream; - std::basic_o[g-z]*; +# std::basic_o[g-z]*; + std::basic_o[g-r]*; + std::basic_ostr[a-d]*; + std::basic_ostr[f-z]*; std::basic_[p-r]*; std::basic_streambuf*; # std::basic_string @@ -88,7 +91,14 @@ GLIBCXX_3.4 { std::locale::_[J-Ra-z]*; std::locale::_S_normalize_category*; std::locale::_[T-Za-z]*; - std::[A-Zm-r]*; +# std::[A-Zm-r]*; + std::[A-Zmp-r]*; + std::n[^u]*; + std::nu[^m]*; + std::num[^e]*; + std::ostrstream*; + std::out_of_range*; + std::overflow_error*; std::set_new_handler*; std::set_terminate*; std::set_unexpected*; @@ -256,7 +266,7 @@ GLIBCXX_3.4 { _ZNSi[0-9][a-h]*; _ZNSi[0-9][j-z]*; _ZNSi6ignoreE[il][il]; - _ZNSirsE*; + _ZNSirsE*[^g]; # std::basic_istream _ZNSt13basic_istreamIwSt11char_traitsIwEEC*; @@ -265,7 +275,7 @@ GLIBCXX_3.4 { _ZNSt13basic_istreamIwSt11char_traitsIwEE[0-9][a-h]*; _ZNSt13basic_istreamIwSt11char_traitsIwEE[0-9][j-z]*; _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[il][ijlm]; - _ZNSt13basic_istreamIwSt11char_traitsIwEErsE*; + _ZNSt13basic_istreamIwSt11char_traitsIwEErsE*[^g]; # std::istream operators and inserters _ZSt7getlineI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_istream*; @@ -277,6 +287,37 @@ GLIBCXX_3.4 { _ZStrsIe[cw]St11char_traitsI[cw]EERSt13basic_istream*; _ZStrsIf[cw]St11char_traitsI[cw]EERSt13basic_istream*; + # std::basic_ostream + _ZNSoC*; + _ZNSoD*; + _ZNKSo6sentrycvbEv; + _ZNSo8_M_write*; + _ZNSo[0-9][a-z]*; + _ZNSolsE*[^g]; + + # std::basic_ostream + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC*; + _ZNSt13basic_ostreamIwSt11char_traitsIwEED*; + _ZNKSt13basic_ostreamIwSt11char_traitsIwEE[0-9][a-z]*; + _ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw; + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv; + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpE*; + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv; + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKw*; + _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentry*; + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_write*; + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsE*[^g]; + + # std::ostream operators and inserters + _ZSt4end[ls]I[cw]St11char_traitsI[cw]EERSt13basic_ostream*; + _ZSt5flushI[cw]St11char_traitsI[cw]EERSt13basic_ostream*; + _ZStlsI[cw]St11char_traitsI[cw]EERSt13basic_ostream*; + _ZStlsI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_ostream*; + _ZStlsISt11char_traitsI[cw]EERSt13basic_ostream*; + _ZStlsId[cw]St11char_traitsI[cw]EERSt13basic_ostream*; + _ZStlsIe[cw]St11char_traitsI[cw]EERSt13basic_ostream*; + _ZStlsIf[cw]St11char_traitsI[cw]EERSt13basic_ostream*; + # std::locale destructors _ZNSt6localeD*; @@ -292,14 +333,23 @@ GLIBCXX_3.4 { _ZNSt8ios_base4InitD*; # bool std::has_facet - _ZSt9has_facet*; + _ZSt9has_facetIS*; # std::num_get _ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*; + # std::num_put + _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*; + # std::money_get _ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*; + # std::money_put + _ZNKSt9money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*; + + # std::numeric_limits + _ZNSt14numeric_limitsI[^g]*; + # std::_Rb_tree _ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base; _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base; @@ -327,7 +377,7 @@ GLIBCXX_3.4 { _ZNSt12__basic_fileIcED*; # std::__convert_to_v - _ZSt14__convert_to_v*; + _ZSt14__convert_to_vI[^g]*; # __gnu_cxx::stdio_sync_filebuf _ZTVN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE; @@ -399,7 +449,8 @@ GLIBCXX_3.4 { _ZTSN9__gnu_cxx13stdio_filebufI[cw]St11char_traitsI[cw]EEE; # function-scope static objects requires a guard variable. - _ZGVNSt*; + _ZGVNSt[^1]*; + _ZGVNSt1[^7]*; # virtual function thunks _ZThn8_NS*; @@ -659,9 +710,9 @@ CXXABI_1.3 { _ZTVN10__cxxabiv121__vmi_class_type_infoE; # typeinfo structure (and some names) - _ZTI[a-z]; - _ZTIP[a-z]; - _ZTIPK[a-z]; + _ZTI[a-fh-z]; + _ZTIP[a-fh-z]; + _ZTIPK[a-fh-z]; _ZTIN10__cxxabiv117__array_type_infoE; _ZTIN10__cxxabiv117__class_type_infoE; _ZTIN10__cxxabiv116__enum_type_infoE; @@ -674,9 +725,9 @@ CXXABI_1.3 { _ZTIN10__cxxabiv121__vmi_class_type_infoE; # typeinfo name - _ZTS[a-z]; - _ZTSP[a-z]; - _ZTSPK[a-z]; + _ZTS[a-fh-z]; + _ZTSP[a-fh-z]; + _ZTSPK[a-fh-z]; _ZTSN10__cxxabiv117__array_type_infoE; _ZTSN10__cxxabiv117__class_type_infoE; _ZTSN10__cxxabiv116__enum_type_infoE; --- libstdc++-v3/config/locale/gnu/c_locale.cc.jj 2006-02-02 16:38:25.000000000 +0100 +++ libstdc++-v3/config/locale/gnu/c_locale.cc 2006-02-10 14:53:36.000000000 +0100 @@ -1,6 +1,6 @@ // Wrapper for underlying C-language localization -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -132,3 +132,10 @@ namespace std { const char* const* const locale::_S_categories = __gnu_cxx::category_names; } // namespace std + +// XXX GLIBCXX_ABI Deprecated +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \ + extern "C" void ldbl (void) __attribute__ ((alias (#dbl))) +_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct); +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT --- libstdc++-v3/config/locale/generic/c_locale.cc.jj 2006-02-02 16:38:26.000000000 +0100 +++ libstdc++-v3/config/locale/generic/c_locale.cc 2006-02-10 14:57:36.000000000 +0100 @@ -1,6 +1,6 @@ // Wrapper for underlying C-language localization -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -168,3 +168,10 @@ namespace std { const char* const* const locale::_S_categories = __gnu_cxx::category_names; } // namespace std + +// XXX GLIBCXX_ABI Deprecated +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \ + extern "C" void ldbl (void) __attribute__ ((alias (#dbl))) +_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi); +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT --- libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver.jj 2006-02-10 14:53:36.000000000 +0100 +++ libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver 2006-02-10 14:57:37.000000000 +0100 @@ -0,0 +1,19 @@ +# Appended to version file. + +GLIBCXX_LDBL_3.4 { + _ZNSt14numeric_limitsIg*; + _ZNSirsERg; + _ZNSolsEg; + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg; + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg; + _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP*; + _ZStlsIg[cw]St11char_traitsI[cw]EERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E; + _ZStrsIg[cw]St11char_traitsI[cw]EERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E; + *__gnu_cxx_ldbl128*; +}; + +CXXABI_LDBL_1.3 { + _ZT[IS]g; + _ZT[IS]Pg; + _ZT[IS]PKg; +}; --- libstdc++-v3/config.h.in.jj 2006-02-02 16:38:36.000000000 +0100 +++ libstdc++-v3/config.h.in 2006-02-10 14:53:36.000000000 +0100 @@ -658,6 +658,9 @@ /* Define to 1 if a full hosted library is built, or 0 if freestanding. */ #undef _GLIBCXX_HOSTED +/* Define if compatibility should be provided for -mlong-double-64. */ +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + /* Define if ptrdiff_t is int. */ #undef _GLIBCXX_PTRDIFF_T_IS_INT --- libstdc++-v3/include/Makefile.am.jj 2006-02-02 16:38:32.000000000 +0100 +++ libstdc++-v3/include/Makefile.am 2006-02-10 15:12:14.000000000 +0100 @@ -825,13 +825,18 @@ ${host_builddir}/c++config.h: ${top_buil ${glibcxx_srcdir}/include/bits/c++config \ stamp-${host_alias} \ ${toplevel_srcdir}/gcc/DATESTAMP - @cat ${glibcxx_srcdir}/include/bits/c++config > $@ ;\ + @ldbl_compat='' ;\ + grep "^[ ]*#[ ]*define[ ][ ]*_GLIBCXX_LONG_DOUBLE_COMPAT[ ][ ]*1[ ]*$$" \ + ${CONFIG_HEADER} > /dev/null 2>&1 \ + && ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\ + sed -e "$$ldbl_compat" ${glibcxx_srcdir}/include/bits/c++config > $@ ;\ sed -e 's/^/#define __GLIBCXX__ /' \ - < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\ + < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\ sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \ -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \ -e 's/VERSION/_GLIBCXX_VERSION/g' \ -e 's/WORDS_/_GLIBCXX_WORDS_/g' \ + -e '/[ ]_GLIBCXX_LONG_DOUBLE_COMPAT[ ]/d' \ < ${CONFIG_HEADER} >> $@ ;\ echo "#endif // _CXXCONFIG_" >>$@ --- libstdc++-v3/include/bits/c++config.jj 2006-02-02 16:38:32.000000000 +0100 +++ libstdc++-v3/include/bits/c++config 2006-02-10 15:17:28.000000000 +0100 @@ -1,6 +1,6 @@ // Predefined symbols and macros -*- C++ -*- -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -65,6 +65,26 @@ namespace std # define _GLIBCXX_STD std #endif +/* Define if compatibility should be provided for -mlong-double-64. */ +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// XXX GLIBCXX_ABI Deprecated +// Namespace associations for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +# define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_LDBL_NAMESPACE } +namespace std +{ + namespace __gnu_cxx_ldbl128 { } + using namespace __gnu_cxx_ldbl128 __attribute__((__strong__)); +} +#else +# define _GLIBCXX_LDBL_NAMESPACE +# define _GLIBCXX_BEGIN_LDBL_NAMESPACE +# define _GLIBCXX_END_LDBL_NAMESPACE +#endif + // Allow use of "export template." This is currently not a feature // that g++ supports. // #define _GLIBCXX_EXPORT_TEMPLATE 1 --- libstdc++-v3/include/bits/localefwd.h.jj 2006-02-02 16:38:32.000000000 +0100 +++ libstdc++-v3/include/bits/localefwd.h 2006-02-10 15:17:54.000000000 +0100 @@ -129,10 +129,12 @@ namespace std class codecvt_byname; // 22.2.2 and 22.2.3 numeric +_GLIBCXX_BEGIN_LDBL_NAMESPACE template > class num_get; template > class num_put; +_GLIBCXX_END_LDBL_NAMESPACE template class numpunct; template class numpunct_byname; @@ -155,10 +157,12 @@ namespace std // 22.2.6 money class money_base; +_GLIBCXX_BEGIN_LDBL_NAMESPACE template > class money_get; template > class money_put; +_GLIBCXX_END_LDBL_NAMESPACE template class moneypunct; template --- libstdc++-v3/include/bits/locale_facets.h.jj 2006-02-02 16:38:32.000000000 +0100 +++ libstdc++-v3/include/bits/locale_facets.h 2006-02-10 14:53:36.000000000 +0100 @@ -1,6 +1,6 @@ // Locale support -*- C++ -*- -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -1910,6 +1910,7 @@ namespace std ~numpunct_byname() { } }; +_GLIBCXX_BEGIN_LDBL_NAMESPACE /** * @brief Facet for parsing number strings. * @@ -2176,13 +2177,27 @@ namespace std do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, double&) const; + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + __do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, + double&) const; +#else virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, long double&) const; +#endif virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, void*&) const; + + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, + long double&) const; +#endif //@} }; @@ -2438,17 +2453,30 @@ namespace std virtual iter_type do_put(iter_type, ios_base&, char_type __fill, double __v) const; + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + __do_put(iter_type, ios_base&, char_type __fill, double __v) const; +#else virtual iter_type do_put(iter_type, ios_base&, char_type __fill, long double __v) const; +#endif virtual iter_type do_put(iter_type, ios_base&, char_type __fill, const void* __v) const; + + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + do_put(iter_type, ios_base&, char_type __fill, long double __v) const; +#endif //@} }; template locale::id num_put<_CharT, _OutIter>::id; +_GLIBCXX_END_LDBL_NAMESPACE /** * @brief Facet for localized string comparison. @@ -3953,6 +3981,7 @@ namespace std template const bool moneypunct_byname<_CharT, _Intl>::intl; +_GLIBCXX_BEGIN_LDBL_NAMESPACE /** * @brief Facet for parsing monetary amounts. * @@ -4064,9 +4093,16 @@ namespace std * value. This function is a hook for derived classes to change the * value returned. @see get() for details. */ + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + __do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, + ios_base::iostate& __err, double& __units) const; +#else virtual iter_type do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, ios_base::iostate& __err, long double& __units) const; +#endif /** * @brief Read and parse a monetary value. @@ -4079,6 +4115,13 @@ namespace std do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, ios_base::iostate& __err, string_type& __digits) const; + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, + ios_base::iostate& __err, long double& __units) const; +#endif + template iter_type _M_extract(iter_type __s, iter_type __end, ios_base& __io, @@ -4191,9 +4234,16 @@ namespace std * @param units Place to store result of parsing. * @return Iterator after writing. */ + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, + double __units) const; +#else virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, long double __units) const; +#endif /** * @brief Format and output a monetary value. @@ -4217,6 +4267,13 @@ namespace std do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, const string_type& __digits) const; + // XXX GLIBCXX_ABI Deprecated +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + virtual iter_type + do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, + long double __units) const; +#endif + template iter_type _M_insert(iter_type __s, ios_base& __io, char_type __fill, @@ -4226,6 +4283,8 @@ namespace std template locale::id money_put<_CharT, _OutIter>::id; +_GLIBCXX_END_LDBL_NAMESPACE + /** * @brief Messages facet base class providing catalog typedef. */ --- libstdc++-v3/include/bits/locale_facets.tcc.jj 2006-02-02 16:38:32.000000000 +0100 +++ libstdc++-v3/include/bits/locale_facets.tcc 2006-02-10 14:53:36.000000000 +0100 @@ -1,6 +1,6 @@ // Locale support -*- C++ -*- -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -272,6 +272,8 @@ namespace std __verify_grouping(const char* __grouping, size_t __grouping_size, const string& __grouping_tmp); +_GLIBCXX_BEGIN_LDBL_NAMESPACE + template _InIter num_get<_CharT, _InIter>:: @@ -446,6 +448,8 @@ namespace std return __beg; } +_GLIBCXX_END_LDBL_NAMESPACE + template struct __to_unsigned_type { typedef _ValueT __type; }; @@ -460,6 +464,8 @@ namespace std { typedef unsigned long long __type; }; #endif +_GLIBCXX_BEGIN_LDBL_NAMESPACE + template template _InIter @@ -772,6 +778,21 @@ namespace std return __beg; } +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + template + _InIter + num_get<_CharT, _InIter>:: + __do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, double& __v) const + { + string __xtrc; + __xtrc.reserve(32); + __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); + std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); + return __beg; + } +#endif + template _InIter num_get<_CharT, _InIter>:: @@ -822,6 +843,8 @@ namespace std __len = static_cast(__w); } +_GLIBCXX_END_LDBL_NAMESPACE + // Forwarding functions to peel signed from unsigned integer types and // either cast or compute the absolute value for the former, depending // on __basefield. @@ -911,6 +934,8 @@ namespace std return __bufend - __buf; } +_GLIBCXX_BEGIN_LDBL_NAMESPACE + template void num_put<_CharT, _OutIter>:: @@ -1233,6 +1258,14 @@ namespace std do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const { return _M_insert_float(__s, __io, __fill, char(), __v); } +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + template + _OutIter + num_put<_CharT, _OutIter>:: + __do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const + { return _M_insert_float(__s, __io, __fill, char(), __v); } +#endif + template _OutIter num_put<_CharT, _OutIter>:: @@ -1474,6 +1507,23 @@ namespace std return __beg; } +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + template + _InIter + money_get<_CharT, _InIter>:: + __do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, + ios_base::iostate& __err, double& __units) const + { + string __str; + if (__intl) + __beg = _M_extract(__beg, __end, __io, __err, __str); + else + __beg = _M_extract(__beg, __end, __io, __err, __str); + std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale()); + return __beg; + } +#endif + template _InIter money_get<_CharT, _InIter>:: @@ -1678,7 +1728,18 @@ namespace std __io.width(0); return __s; } - + +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ + template + _OutIter + money_put<_CharT, _OutIter>:: + __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill, + double __units) const + { + return this->do_put(__s, __intl, __io, __fill, (long double) __units); + } +#endif + template _OutIter money_put<_CharT, _OutIter>:: @@ -1726,6 +1787,7 @@ namespace std { return __intl ? _M_insert(__s, __io, __fill, __digits) : _M_insert(__s, __io, __fill, __digits); } +_GLIBCXX_END_LDBL_NAMESPACE // NB: Not especially useful. Without an ios_base object or some // kind of locale reference, we are left clawing at the air where @@ -2511,12 +2573,12 @@ namespace std extern template class moneypunct; extern template class moneypunct_byname; extern template class moneypunct_byname; - extern template class money_get; - extern template class money_put; + extern template class _GLIBCXX_LDBL_NAMESPACE money_get; + extern template class _GLIBCXX_LDBL_NAMESPACE money_put; extern template class numpunct; extern template class numpunct_byname; - extern template class num_get; - extern template class num_put; + extern template class _GLIBCXX_LDBL_NAMESPACE num_get; + extern template class _GLIBCXX_LDBL_NAMESPACE num_put; extern template class __timepunct; extern template class time_put; extern template class time_put_byname; @@ -2638,12 +2700,12 @@ namespace std extern template class moneypunct; extern template class moneypunct_byname; extern template class moneypunct_byname; - extern template class money_get; - extern template class money_put; + extern template class _GLIBCXX_LDBL_NAMESPACE money_get; + extern template class _GLIBCXX_LDBL_NAMESPACE money_put; extern template class numpunct; extern template class numpunct_byname; - extern template class num_get; - extern template class num_put; + extern template class _GLIBCXX_LDBL_NAMESPACE num_get; + extern template class _GLIBCXX_LDBL_NAMESPACE num_put; extern template class __timepunct; extern template class time_put; extern template class time_put_byname; --- libstdc++-v3/include/Makefile.in.jj 2006-02-02 16:38:32.000000000 +0100 +++ libstdc++-v3/include/Makefile.in 2006-02-10 15:13:22.000000000 +0100 @@ -1203,13 +1203,18 @@ ${host_builddir}/c++config.h: ${top_buil ${glibcxx_srcdir}/include/bits/c++config \ stamp-${host_alias} \ ${toplevel_srcdir}/gcc/DATESTAMP - @cat ${glibcxx_srcdir}/include/bits/c++config > $@ ;\ + @ldbl_compat='' ;\ + grep "^[ ]*#[ ]*define[ ][ ]*_GLIBCXX_LONG_DOUBLE_COMPAT[ ][ ]*1[ ]*$$" \ + ${CONFIG_HEADER} > /dev/null 2>&1 \ + && ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\ + sed -e "$$ldbl_compat" ${glibcxx_srcdir}/include/bits/c++config > $@ ;\ sed -e 's/^/#define __GLIBCXX__ /' \ - < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\ + < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\ sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \ -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \ -e 's/VERSION/_GLIBCXX_VERSION/g' \ -e 's/WORDS_/_GLIBCXX_WORDS_/g' \ + -e '/[ ]_GLIBCXX_LONG_DOUBLE_COMPAT[ ]/d' \ < ${CONFIG_HEADER} >> $@ ;\ echo "#endif // _CXXCONFIG_" >>$@ --- libstdc++-v3/testsuite/testsuite_abi.cc.jj 2006-02-02 16:39:16.000000000 +0100 +++ libstdc++-v3/testsuite/testsuite_abi.cc 2006-02-10 14:57:38.000000000 +0100 @@ -186,9 +186,12 @@ known_versions.push_back("GLIBCXX_3.4.5"); known_versions.push_back("GLIBCXX_3.4.6"); known_versions.push_back("GLIBCXX_3.4.7"); + known_versions.push_back("GLIBCXX_LDBL_3.4"); + known_versions.push_back("GLIBCXX_LDBL_3.4.7"); known_versions.push_back("GLIBCXX_3.4.8"); known_versions.push_back("CXXABI_1.3"); known_versions.push_back("CXXABI_1.3.1"); + known_versions.push_back("CXXABI_LDBL_1.3"); } compat_list::iterator begin = known_versions.begin(); compat_list::iterator end = known_versions.end(); @@ -224,9 +227,7 @@ // New version labels are ok. The rest are not. compat_list::iterator it2 = find(begin, end, test.name); if (it2 != end) - { - test.version_status = symbol::compatible; - } + test.version_status = symbol::compatible; else test.version_status = symbol::incompatible; } @@ -370,7 +371,7 @@ added_names.erase(it); } else - missing_names.push_back(what); + missing_names.push_back(what); } // Check missing names for compatibility. --- libstdc++-v3/configure.jj 2006-02-02 16:38:28.000000000 +0100 +++ libstdc++-v3/configure 2006-02-10 14:53:36.000000000 +0100 @@ -309,7 +309,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS libtool_VERSION multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar glibcxx_builddir glibcxx_srcdir toplevel_srcdir CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LN_S AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBTOOL CXXCPP CPPFLAGS enable_shared enable_static GLIBCXX_HOSTED_TRUE GLIBCXX_HOSTED_FALSE GLIBCXX_BUILD_PCH_TRUE GLIBCXX_BUILD_PCH_FALSE glibcxx_PCHFLAGS CSTDIO_H BASIC_FILE_H BASIC_FILE_CC CPP EGREP check_msgfmt glibcxx_MOFILES glibcxx_POFILES glibcxx_localedir USE_NLS CLOCALE_H CMESSAGES_H CCODECVT_CC CCOLLATE_CC CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_H CTIME_CC CLOCALE_CC CLOCALE_INTERNAL_H ALLOCATOR_H ALLOCATOR_NAME C_INCLUDE_DIR GLIBCXX_C_HEADERS_C_TRUE GLIBCXX_C_HEADERS_C_FALSE GLIBCXX_C_HEADERS_C_STD_TRUE GLIBCXX_C_HEADERS_C_STD_FALSE GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE DEBUG_FLAGS GLIBCXX_BUILD_DEBUG_TRUE GLIBCXX_BUILD_DEBUG_FALSE EXTRA_CXX_FLAGS glibcxx_thread_h WERROR SECTION_FLAGS SECTION_LDFLAGS OPT_LDFLAGS LIBMATHOBJS LIBICONV SYMVER_MAP port_specific_symbol_files ENABLE_SYMVERS_GNU_TRUE ENABLE_SYMVERS_GNU_FALSE ENABLE_SYMVERS_DARWIN_EXPORT_TRUE ENABLE_SYMVERS_DARWIN_EXPORT_FALSE baseline_dir ATOMICITY_SRCDIR ATOMIC_WORD_SRCDIR CPU_DEFINES_SRCDIR ABI_TWEAKS_SRCDIR OS_INC_SRCDIR glibcxx_prefixdir gxx_include_dir glibcxx_toolexecdir glibcxx_toolexeclibdir GLIBCXX_INCLUDES TOPLEVEL_INCLUDES OPTIMIZE_CXXFLAGS WARN_FLAGS LIBSUPCXX_PICFLAGS LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS libtool_VERSION multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar glibcxx_builddir glibcxx_srcdir toplevel_srcdir CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LN_S AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBTOOL CXXCPP CPPFLAGS enable_shared enable_static GLIBCXX_HOSTED_TRUE GLIBCXX_HOSTED_FALSE GLIBCXX_BUILD_PCH_TRUE GLIBCXX_BUILD_PCH_FALSE glibcxx_PCHFLAGS CSTDIO_H BASIC_FILE_H BASIC_FILE_CC CPP EGREP check_msgfmt glibcxx_MOFILES glibcxx_POFILES glibcxx_localedir USE_NLS CLOCALE_H CMESSAGES_H CCODECVT_CC CCOLLATE_CC CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_H CTIME_CC CLOCALE_CC CLOCALE_INTERNAL_H ALLOCATOR_H ALLOCATOR_NAME C_INCLUDE_DIR GLIBCXX_C_HEADERS_C_TRUE GLIBCXX_C_HEADERS_C_FALSE GLIBCXX_C_HEADERS_C_STD_TRUE GLIBCXX_C_HEADERS_C_STD_FALSE GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE DEBUG_FLAGS GLIBCXX_BUILD_DEBUG_TRUE GLIBCXX_BUILD_DEBUG_FALSE EXTRA_CXX_FLAGS glibcxx_thread_h WERROR SECTION_FLAGS SECTION_LDFLAGS OPT_LDFLAGS LIBMATHOBJS LIBICONV SYMVER_MAP port_specific_symbol_files ENABLE_SYMVERS_GNU_TRUE ENABLE_SYMVERS_GNU_FALSE ENABLE_SYMVERS_DARWIN_EXPORT_TRUE ENABLE_SYMVERS_DARWIN_EXPORT_FALSE GLIBCXX_LDBL_COMPAT_TRUE GLIBCXX_LDBL_COMPAT_FALSE baseline_dir ATOMICITY_SRCDIR ATOMIC_WORD_SRCDIR CPU_DEFINES_SRCDIR ABI_TWEAKS_SRCDIR OS_INC_SRCDIR glibcxx_prefixdir gxx_include_dir glibcxx_toolexecdir glibcxx_toolexeclibdir GLIBCXX_INCLUDES TOPLEVEL_INCLUDES OPTIMIZE_CXXFLAGS WARN_FLAGS LIBSUPCXX_PICFLAGS LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -87881,6 +87881,72 @@ echo "${ECHO_T}$glibcxx_ptrdiff_t_is_i" echo "$as_me: versioning on shared library symbols is $enable_symvers" >&6;} +ac_ldbl_compat=no +case "$target" in + powerpc*-*-*gnu* | \ + sparc*-*-linux* | \ + s390*-*-linux* | \ + alpha*-*-linux*) + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + +#if !defined __LONG_DOUBLE_128__ || (defined(__sparc__) && defined(__arch64__)) +#error no need for long double compatibility +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_ldbl_compat=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_ldbl_compat=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + if test "$ac_ldbl_compat" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define _GLIBCXX_LONG_DOUBLE_COMPAT 1 +_ACEOF + + port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver" + fi +esac + + # This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE. if $GLIBCXX_IS_NATIVE ; then @@ -88733,6 +88799,17 @@ fi +if test $ac_ldbl_compat = yes; then + GLIBCXX_LDBL_COMPAT_TRUE= + GLIBCXX_LDBL_COMPAT_FALSE='#' +else + GLIBCXX_LDBL_COMPAT_TRUE='#' + GLIBCXX_LDBL_COMPAT_FALSE= +fi + + + + cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -89088,6 +89165,13 @@ echo "$as_me: error: conditional \"ENABL Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi +if test -z "${GLIBCXX_LDBL_COMPAT_TRUE}" && test -z "${GLIBCXX_LDBL_COMPAT_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"GLIBCXX_LDBL_COMPAT\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"GLIBCXX_LDBL_COMPAT\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files @@ -89758,6 +89842,8 @@ s,@ENABLE_SYMVERS_GNU_TRUE@,$ENABLE_SYMV s,@ENABLE_SYMVERS_GNU_FALSE@,$ENABLE_SYMVERS_GNU_FALSE,;t t s,@ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@,$ENABLE_SYMVERS_DARWIN_EXPORT_TRUE,;t t s,@ENABLE_SYMVERS_DARWIN_EXPORT_FALSE@,$ENABLE_SYMVERS_DARWIN_EXPORT_FALSE,;t t +s,@GLIBCXX_LDBL_COMPAT_TRUE@,$GLIBCXX_LDBL_COMPAT_TRUE,;t t +s,@GLIBCXX_LDBL_COMPAT_FALSE@,$GLIBCXX_LDBL_COMPAT_FALSE,;t t s,@baseline_dir@,$baseline_dir,;t t s,@ATOMICITY_SRCDIR@,$ATOMICITY_SRCDIR,;t t s,@ATOMIC_WORD_SRCDIR@,$ATOMIC_WORD_SRCDIR,;t t