From bbe4dd5dec0dad407c0d5cc6503ee9c059c2b7c9 Mon Sep 17 00:00:00 2001 From: Alexander Kabaev Date: Nov 07 2003 02:44:01 +0000 Subject: Gcc 3.3.3 20031106 C++ support bits. --- diff --git a/contrib/libstdc++/ChangeLog b/contrib/libstdc++/ChangeLog index 028af16..a9a9a64 100644 --- a/contrib/libstdc++/ChangeLog +++ b/contrib/libstdc++/ChangeLog @@ -1,3 +1,88 @@ +2003-10-25 Paolo Carlini + + * include/bits/locale_facets.tcc (money_get::do_get(..., + long double&): Properly size the temporary buffer. + +2003-10-20 Benjamin Kosnik + + PR libstdc++/10081 + * include/bits/basic_ios.h (basic_ios::basic_ios): Initialize + _M_fctype, _M_fnumput, _M_fnumget. + +2003-10-16 Release Manager + + * GCC 3.3.2 Released. + +2003-10-07 Paolo Carlini + + PR libstdc++/11740 + * config/locale/gnu/ctype_members.cc (ctype::do_is): + Fix to actually return (M & m) != 0 as per 22.2.1.1.2. + * config/locale/generic/ctype_members.cc: Same. + +2003-10-02 Harald Boehme + + PR libstdc++/12451 + * libsupc++/cxxabi.h: Move forward declaration of __class_type_info. + +2003-10-01 Rainer Orth + + * configure.target: Handle Solaris 2.5 micro releases explicitly. + Remove wildcards from Solaris 2.6, 7-9: there were no + micro releases. + Treat Solaris 10 and up like 7-9. + +2003-09-30 Paolo Carlini + + PR libstdc++/12296 + * include/bits/istream.tcc (peek): Set eofbit if sgetc + returns eof. + +2003-09-30 Nathan Myers + Paolo Carlini + + PR libstdc++/11400 + * include/bits/stl_algo.h (search_n): + Use iterator_traits<>::difference_type for __n. + +2003-09-25 Benjamin Kosnik + + PR libstdc++/11065 + * config/locale/gnu/ctype_members.cc (ctype::do_is): Fix. + * config/locale/generic/ctype_members.cc: Same. + + * config/os/generic/ctype_inline.h: Update. + +2003-09-10 Daniel Jacobowitz + Andreas Jaeger + + PR libstdc++/12189 + * acinclude.m4 (GLIBCPP_CONFIGURE_TESTSUITE): Don't build + abi_check if cross compiling. + * aclocal.m4: Regenerated. + * configure: Regenerated. + +2003-09-09 Alan Modra + + * configure: Regenerate. + +2003-08-25 Zack Weinberg + + * config/os/hpux/os_defines.h: Unconditionally define + _GLIBCPP_GTHREAD_USE_WEAK to 0. + +2003-08-11 Andreas Jaeger + + * include/Makefile.am (stamp-c_base): Add dependency on stamp-bits + to make SMP-safe. + * include/Makefile.in: Regenerated. + +2003-08-07 Bernardo Innocenti + + PR libstdc++/11784 + * libstdc++-v3/config/cpu/m68k/atomicity.h (__exchange_and_add): + Replace variants with new BSET-based version. + 2003-08-04 Release Manager * GCC 3.3.1 Released. @@ -8,8 +93,8 @@ 2003-07-24 Nathan Myers - * testsuite/23_containers/map_operators.cc: Conform to - container requirement as value must be Assignable. + * testsuite/23_containers/map_operators.cc: Conform to + container requirement as value must be Assignable. 2003-07-18 Andreas Jaeger @@ -33,7 +118,7 @@ 2003-07-15 Loren J. Rittle - * testsuite/thread/pthread4.cc: Further tweak to avoid fini race. + * testsuite/thread/pthread4.cc: Further tweak to avoid fini race. 2003-07-15 Petur Runolfsson @@ -46,7 +131,7 @@ Change last parameter from int_type to size_t. 2003-07-08 Benjamin Kosnik - Jerry Quinn + Jerry Quinn * include/bits/ios_base.h (ios_base::_M_getloc): Return reference to the imbued locale. @@ -83,12 +168,12 @@ 2003-07-04 Jerry Quinn * include/bits/locale_facets.tcc (__int_to_char): Move common - case to the top. + case to the top. 2003-07-04 Jerry Quinn * testsuite/27_io/ostream_inserter_arith.cc (test05, test06): - Add missing bool test. + Add missing bool test. 2003-07-04 H.J. Lu @@ -193,7 +278,7 @@ 2003-06-16 Andreas Jaeger - * testsuite/abi_check.cc: Create summary report. + * testsuite/abi_check.cc: Create summary report. 2003-06-16 Andreas Jaeger @@ -203,7 +288,7 @@ * configure: Regenerate. 2003-06-16 Benjamin Kosnik - Andreas Jaeger + Andreas Jaeger * configure.target: Set x86_64 abi_baseline pair correctly. @@ -372,7 +457,7 @@ * configure: Regenerated. 2003-05-01 Paolo Carlini - Nathan Myers + Nathan Myers Backport from mainline fix of 2003-03-28. PR libstdc++/9533 @@ -439,7 +524,7 @@ (basic_filebuf::close): Add exception specification of throw(). 2003-04-25 Ranjit Mathew - Phil Edwards + Phil Edwards * testsuite_flags.in: Guard against the possibility of having "xgcc" as a part of a folder name in the @@ -457,8 +542,8 @@ 2003-04-23 Benjamin Kosnik - * config/locale/generic/c_locale.h (__convert_from_v): Use - attribute unused. + * config/locale/generic/c_locale.h (__convert_from_v): Use + attribute unused. 2003-04-23 Phil Edwards @@ -474,16 +559,16 @@ Benjamin Kosnik * include/bits/basic_ios.h (ios_base::Init::_S_ios_create): - Declare friend. + Declare friend. (basic_ios::init, basic_ios::_M_cache_locale): Add locale - cache argument. + cache argument. * include/bits/basic_ios.tcc (basic_ios::init): Pass cache to - _M_cache_locale. + _M_cache_locale. (basic_ios::_M_cache_locale): Use placement new if cache is - provided. Track the distinction in iword(0). + provided. Track the distinction in iword(0). * include/bits/locale_facets.tcc - (__locale_cache::_S_callback): Only delete cache if iword(0) - is 0, i.e. not static. + (__locale_cache::_S_callback): Only delete cache if iword(0) + is 0, i.e. not static. * src/globals.cc: Allocate space for __locale_cache objects. * src/ios.cc (__gnu_cxx): Declare extern __locale_cache objects for standard wide and narrow stream objects. @@ -515,9 +600,9 @@ * include/bits/istream.tcc: Same. 2003-04-17 Andreas Tobler - Benjamin Kosnik + Benjamin Kosnik - * config/os/generic/ctype_inline.h: Fix. + * config/os/generic/ctype_inline.h: Fix. 2003-04-17 Andreas Tobler @@ -525,7 +610,7 @@ solaris includes, not generic. 2003-04-15 Benjamin Kosnik - Paolo Carlini + Paolo Carlini PR libstdc++/9423 * docs/html/27_io/howto.html @@ -534,12 +619,12 @@ 2003-04-15 Andreas Tobler - * testsuite/thread/pthread1.cc: Enable for darwin test. - * testsuite/thread/pthread2.cc: Same. - * testsuite/thread/pthread3.cc: Same. - * testsuite/thread/pthread4.cc: Same. - * testsuite/thread/pthread5.cc: Same. - * testsuite/thread/pthread6.cc: Same. + * testsuite/thread/pthread1.cc: Enable for darwin test. + * testsuite/thread/pthread2.cc: Same. + * testsuite/thread/pthread3.cc: Same. + * testsuite/thread/pthread4.cc: Same. + * testsuite/thread/pthread5.cc: Same. + * testsuite/thread/pthread6.cc: Same. 2003-04-15 Loren J. Rittle @@ -615,8 +700,8 @@ PR libstdc++/5730 * include/bits/c++config (_GLIBCPP_FAST_MATH): Define. - * include/std/std_complex.h (norm): Use faster, - less accurate computation for builtin float types under --fast-math. + * include/std/std_complex.h (norm): Use faster, + less accurate computation for builtin float types under --fast-math. 2003-03-21 Paolo Carlini @@ -640,10 +725,10 @@ 2003-03-17 Petur Runolfsson - PR libstdc++/9964 - * include/bits/fstream.tcc (basic_filebuf::close): - Always close file, even when write fails. - * testsuite/27_io/filebuf_members.cc (test_07): New test. + PR libstdc++/9964 + * include/bits/fstream.tcc (basic_filebuf::close): + Always close file, even when write fails. + * testsuite/27_io/filebuf_members.cc (test_07): New test. 2003-03-17 Danny Smith @@ -746,7 +831,7 @@ 2003-03-05 Carlo Wood - * include/bits/ios_base.h(ios_base::Init::_S_initialized()): Added + * include/bits/ios_base.h(ios_base::Init::_S_initialized()): Added _S_initialized() in order to allow debugging libraries to detect when the std streams are initialized from an overloaded operator new. @@ -761,7 +846,7 @@ (_M_cache_locale): New. (_M_cache_facets): Deprecate. * include/bits/basic_ios.tcc (basic_ios::copyfmt): Set up locale - caching. + caching. (basic_ios::imbue,basic_ios::init): Use _M_cache_locale. (basic_ios::_M_cache_locale): New. (basic_ios::_M_cache_facets): Deprecate. @@ -773,9 +858,9 @@ (num_put::_M_convert_int): Use locale cache literal string, grouping flag, thousands separator. (num_out::_M_convert_float): Use locale cache grouping flag, decimal - point, thousands separator. + point, thousands separator. (__locale_cache<_CharT>::_M_init,__locale_cache<_CharT>::_S_callback): - New. + New. * src/locale-inst.cc (__locale_cache<_CharT>::_S_callback, __locale_cache, __locale_cache): New. @@ -793,7 +878,7 @@ * testsuite/abi_check.cc: Update. 2003-03-03 Jerry Quinn - Benjamin Kosnik + Benjamin Kosnik * include/bits/locale_facets.h (__num_base): Add _S_atoms_out. Add indexes into this array. @@ -824,7 +909,7 @@ set_memory_limits. 2003-02-28 Brad Spencer - Nathan Myers + Nathan Myers * src/Makefile.am (stamp-debug): Clean. * src/Makefile.in: Regenerate. @@ -848,12 +933,12 @@ 2003-02-27 Benjamin Kosnik - * configure.in (GLIBCPP_ENABLE_DEBUG): Default to none. + * configure.in (GLIBCPP_ENABLE_DEBUG): Default to none. Call GLIBCPP_ENABLE_DEBUG_FLAGS. - * acinclude.m4 (GLIBCPP_ENABLE_DEBUG): GLIBCPP_BUILD_DEBUG, new - conditional if --enable-debug is yes. Rework. + * acinclude.m4 (GLIBCPP_ENABLE_DEBUG): GLIBCPP_BUILD_DEBUG, new + conditional if --enable-debug is yes. Rework. (GLIBCPP_ENABLE_DEBUG_FLAGS): New. - * aclocal.m4: Regenerate. + * aclocal.m4: Regenerate. * libio/Makefile.am: Remove DEBUG_FLAGS. * libio/Makefile.in: Regenerate. * libsupc++/Makefile.am: Remove DEBUG_FLAGS. @@ -916,7 +1001,7 @@ 2003-02-27 Jerry Quinn - * config/locale/generic/messages_members.h (messages::messages): + * config/locale/generic/messages_members.h (messages::messages): Remove name from unused parameter. 2003-02-27 Benjamin Kosnik @@ -1023,7 +1108,7 @@ for pos_type. 2003-02-11 Paolo Carlini - Petur Runolfsson + Petur Runolfsson PR libstdc++/9318 * include/bits/streambuf.tcc (__copy_streambufs): @@ -1102,7 +1187,7 @@ 2003-02-05 Benjamin Kosnik - * testsuite/26_numerics/valarray_name_lookup.cc: Fix. + * testsuite/26_numerics/valarray_name_lookup.cc: Fix. 2003-02-05 Benjamin Kosnik @@ -1356,8 +1441,8 @@ 2003-01-06 Paolo Carlini * src/codecvt.cc - (codecvt::do_in, do_out): - Tweak parameters to avoid unused parameter warnings. + (codecvt::do_in, do_out): + Tweak parameters to avoid unused parameter warnings. 2003-01-06 Paolo Carlini @@ -1476,7 +1561,7 @@ 2002-12-02 Paolo Carlini * include/bits/basic_string.h (compare(const basic_string&)): - Fully qualify min() with std::. + Fully qualify min() with std::. 2002-12-02 Benjamin Kosnik @@ -1516,7 +1601,7 @@ * docs/html/faq/index.html: Add tip about a namespace for extensions. 2002-11-28 Paolo Carlini - Nathan Myers + Nathan Myers * src/localename.cc (locale::_Impl::_Impl(const char*, size_t)): @@ -1536,7 +1621,7 @@ __cxa_guard_release, __cxa_guard_abort in CXXABI_1.2.1. 2002-11-25 Paolo Carlini - Nathan Myers + Nathan Myers * src/localename.cc (locale::_Impl::_Impl(const char*, size_t)): @@ -1576,7 +1661,7 @@ Trivial cosmetic tweaks. 2002-11-22 Laszlo Ersek - Paolo Carlini + Paolo Carlini PR libstdc++/8645 * include/bits/stl_tree.h (_Rb_tree_rebalance_for_erase): @@ -1629,7 +1714,7 @@ include/std/std_streambuf.h: Doxygenate all I/O entities. 2002-11-20 Benjamin Kosnik - Jonathan Lennox + Jonathan Lennox * include/bits/streambuf.tcc (__copy_streambufs): Revert previous fix for the interactive half of @@ -1669,7 +1754,7 @@ and std::codecvt::codecvt(size_t) into one export pattern. 2002-11-15 Benjamin Kosnik - Gabriel Dos Reis + Gabriel Dos Reis PR libstdc++/8230 * include/bits/stl_alloc.h: Use builtin_expect for the most @@ -1686,7 +1771,7 @@ * src/ios.cc [_GLIBCPP_HAVE_UNISTD_H]: Include unistd.h. 2002-11-15 Paolo Carlini - Loren J. Rittle + Loren J. Rittle PR libstdc++/8399 * acinclude.m4 @@ -1740,8 +1825,8 @@ 2002-11-11 Benjamin Kosnik - PR libstdc++/6746 - * include/bits/fstream.tcc (filebuf::open): Set input pointers. + PR libstdc++/6746 + * include/bits/fstream.tcc (filebuf::open): Set input pointers. * config/io/basic_file_stdio.cc (__basic_file::_M_open_mode): Set __p_mode as well. (__basic_file::open): Set to non-block for input. @@ -1762,7 +1847,7 @@ docs/html/ext/sgiexts.html: Add missing tag. 2002-11-07 Phil Edwards - Richard Earnshaw + Richard Earnshaw * config/cpu/generic/atomicity.h: Provide atomic __exchange_and_add and __atomic_add. @@ -2029,7 +2114,7 @@ * testsuite/22_locale/static_members.cc (test02): Avoid null strings. 2002-10-12 Jonathan Wakely - Gabriel Dos Reis + Gabriel Dos Reis * docs/html/21_strings/howto.html#5: Correct nasting of XHTML elements. Correct allocator-related text. @@ -2291,9 +2376,9 @@ __glibcpp_s8_digits10 et al; check vs the installed versions of digits10 for particular sizes. - * include/std/std_limits.h (__glibcpp_float_is_modulo, - __glibcpp_double_is_modulo, __glibcpp_long_double_is_modulo): Kill. - (numeric_limits::is_modulo, T floating): Use false. + * include/std/std_limits.h (__glibcpp_float_is_modulo, + __glibcpp_double_is_modulo, __glibcpp_long_double_is_modulo): Kill. + (numeric_limits::is_modulo, T floating): Use false. 2002-09-22 Kaveh R. Ghazi diff --git a/contrib/libstdc++/acinclude.m4 b/contrib/libstdc++/acinclude.m4 index 608cd24..b47b9fc 100644 --- a/contrib/libstdc++/acinclude.m4 +++ b/contrib/libstdc++/acinclude.m4 @@ -2132,7 +2132,9 @@ AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [ AC_SUBST(baseline_dir) # Determine if checking the ABI is desirable. - if test x$enable_symvers = xno; then + # Only build this as native, since automake does not understand + # CXX_FOR_BUILD. + if test x"$GLIBCPP_IS_CROSS_COMPILING" = xtrue || test x$enable_symvers = xno; then enable_abi_check=no else case "$host" in diff --git a/contrib/libstdc++/aclocal.m4 b/contrib/libstdc++/aclocal.m4 index ecc43b4..3b6757e 100644 --- a/contrib/libstdc++/aclocal.m4 +++ b/contrib/libstdc++/aclocal.m4 @@ -2144,7 +2144,9 @@ AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [ AC_SUBST(baseline_dir) # Determine if checking the ABI is desirable. - if test x$enable_symvers = xno; then + # Only build this as native, since automake does not understand + # CXX_FOR_BUILD. + if test x"$GLIBCPP_IS_CROSS_COMPILING" = xtrue || test x$enable_symvers = xno; then enable_abi_check=no else case "$host" in diff --git a/contrib/libstdc++/config/cpu/m68k/atomicity.h b/contrib/libstdc++/config/cpu/m68k/atomicity.h index db32735..c80e2e3 100644 --- a/contrib/libstdc++/config/cpu/m68k/atomicity.h +++ b/contrib/libstdc++/config/cpu/m68k/atomicity.h @@ -1,6 +1,6 @@ // Low-level functions for atomic operations: m68k version -*- C++ -*- -// Copyright (C) 2001, 2002 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003 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 @@ -32,8 +32,9 @@ typedef int _Atomic_word; -#if defined(__mc68020__) || defined(__mc68030__) \ - || defined(__mc68040__) || defined(__mc68060__) +#if ( defined(__mc68020__) || defined(__mc68030__) \ + || defined(__mc68040__) || defined(__mc68060__) ) \ + && !defined(__mcpu32__) // These variants support compare-and-swap. static inline _Atomic_word @@ -74,8 +75,7 @@ __exchange_and_add (volatile _Atomic_word *__mem, int __val) return __result; } -#elif !defined(__mcf5200__) && !defined(__mcf5300__) -// 68000, 68010, cpu32 and 5400 support test-and-set. +#else template struct __Atomicity_lock @@ -94,9 +94,26 @@ __exchange_and_add (volatile _Atomic_word *__mem, int __val) { _Atomic_word __result; +// bset with no immediate addressing +#if defined(__mcf5200__) || defined(__mcf5300__) || defined(__mcf5400__) + __asm__ __volatile__("1: bset.b #7,%0@\n\tjbne 1b" + : /* no outputs */ + : "a"(&__Atomicity_lock<0>::_S_atomicity_lock) + : "cc", "memory"); + +// bset with immediate addressing +#elif defined(__mc68000__) + __asm__ __volatile__("1: bset.b #7,%0\n\tjbne 1b" + : "+m"(__Atomicity_lock<0>::_S_atomicity_lock) + : /* none */ + : "cc"); + +#else // 680x0, cpu32, 5400 support test-and-set. __asm__ __volatile__("1: tas %0\n\tjbne 1b" - : "=m"(__Atomicity_lock<0>::_S_atomicity_lock) - : "m"(__Atomicity_lock<0>::_S_atomicity_lock)); + : "+m"(__Atomicity_lock<0>::_S_atomicity_lock) + : /* none */ + : "cc"); +#endif __result = *__mem; *__mem = __result + __val; @@ -106,45 +123,7 @@ __exchange_and_add (volatile _Atomic_word *__mem, int __val) return __result; } -#elif defined(__vxWorks__) || defined(__embedded__) -// The best we can hope for is to disable interrupts, which we -// can only do from supervisor mode. - -static inline _Atomic_word -__attribute__ ((__unused__)) -__exchange_and_add (volatile _Atomic_word *__mem, int __val) -{ - _Atomic_word __result; - short __level, __tmpsr; - __asm__ __volatile__ ("move%.w %%sr,%0\n\tor%.l %0,%1\n\tmove%.w %1,%%sr" - : "=d"(__level), "=d"(__tmpsr) : "1"(0x700)); - - __result = *__mem; - *__mem = __result + __val; - - __asm__ __volatile__ ("move%.w %0,%%sr" : : "d"(__level)); - - return __result; -} - -#else -// These variants do not support any atomic operations at all. - -#warning "__exchange_and_add is not atomic for this target" - -static inline _Atomic_word -__attribute__ ((__unused__)) -__exchange_and_add (volatile _Atomic_word *__mem, int __val) -{ - _Atomic_word __result; - - __result = *__mem; - *__mem = __result + __val; - - return __result; -} - -#endif /* CAS / IRQ / TAS */ +#endif /* TAS / BSET */ static inline void __attribute__ ((__unused__)) @@ -155,4 +134,4 @@ __atomic_add (volatile _Atomic_word* __mem, int __val) (void) __exchange_and_add (__mem, __val); } -#endif /* atomicity.h */ +#endif /* _BITS_ATOMICITY_H */ diff --git a/contrib/libstdc++/config/locale/generic/ctype_members.cc b/contrib/libstdc++/config/locale/generic/ctype_members.cc index f147983..71e810a 100644 --- a/contrib/libstdc++/config/locale/generic/ctype_members.cc +++ b/contrib/libstdc++/config/locale/generic/ctype_members.cc @@ -1,6 +1,6 @@ // std::ctype implementation details, generic version -*- C++ -*- -// Copyright (C) 2001, 2002 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003 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 @@ -126,15 +126,35 @@ namespace std bool ctype:: do_is(mask __m, char_type __c) const - { return static_cast(iswctype(__c, _M_convert_to_wmask(__m))); } + { + bool __ret = false; + const size_t __bitmasksize = 10; + for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) + { + const mask __bit = static_cast(1 << __bitcur); + if (__m & __bit) + __ret |= iswctype(__c, _M_convert_to_wmask(__bit)); + } + return __ret; + } const wchar_t* ctype:: - do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __m) const + do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const { - while (__lo < __hi && !this->do_is(*__m, *__lo)) - ++__lo; - return __lo; + for (;__lo < __hi; ++__vec, ++__lo) + { + const size_t __bitmasksize = 10; + mask __m = 0; + for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) + { + const mask __bit = static_cast(1 << __bitcur); + if (iswctype(*__lo, _M_convert_to_wmask(__bit))) + __m |= __bit; + } + *__vec = __m; + } + return __hi; } const wchar_t* diff --git a/contrib/libstdc++/config/locale/gnu/ctype_members.cc b/contrib/libstdc++/config/locale/gnu/ctype_members.cc index e0be949..ee4cc0a 100644 --- a/contrib/libstdc++/config/locale/gnu/ctype_members.cc +++ b/contrib/libstdc++/config/locale/gnu/ctype_members.cc @@ -1,6 +1,6 @@ // std::ctype implementation details, GNU version -*- C++ -*- -// Copyright (C) 2001, 2002 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003 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 @@ -129,19 +129,42 @@ namespace std bool ctype:: - do_is(mask __m, char_type __c) const + do_is(mask __m, wchar_t __c) const { - return static_cast(__iswctype_l(__c, _M_convert_to_wmask(__m), - _M_c_locale_ctype)); + // Highest bitmask in ctype_base == 10, but extra in "C" + // library for blank. + bool __ret = false; + const size_t __bitmasksize = 11; + for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) + { + const mask __bit = static_cast(_ISbit(__bitcur)); + if (__m & __bit) + __ret |= __iswctype_l(__c, _M_convert_to_wmask(__bit), + _M_c_locale_ctype); + } + return __ret; } const wchar_t* ctype:: - do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __m) const + do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const { - while (__lo < __hi && !this->do_is(*__m, *__lo)) - ++__lo; - return __lo; + for (;__lo < __hi; ++__vec, ++__lo) + { + // Highest bitmask in ctype_base == 10, but extra in "C" + // library for blank. + const size_t __bitmasksize = 11; + mask __m = 0; + for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) + { + const mask __bit = static_cast(_ISbit(__bitcur)); + if (__iswctype_l(*__lo, _M_convert_to_wmask(__bit), + _M_c_locale_ctype)) + __m |= __bit; + } + *__vec = __m; + } + return __hi; } const wchar_t* diff --git a/contrib/libstdc++/config/os/generic/ctype_inline.h b/contrib/libstdc++/config/os/generic/ctype_inline.h index be43c47..0da0c7c 100644 --- a/contrib/libstdc++/config/os/generic/ctype_inline.h +++ b/contrib/libstdc++/config/os/generic/ctype_inline.h @@ -50,13 +50,15 @@ else { bool __ret = true; - const int __bitmasksize = 11; - int __bitcur = 0; // Lowest bitmask in ctype_base == 0 - for (;__ret && __bitcur < __bitmasksize; ++__bitcur) + bool __any_match = false; + const size_t __bitmasksize = 10; + size_t __bitcur = 0; // Lowest bitmask in ctype_base == 0 + for (;__ret && __bitcur <= __bitmasksize; ++__bitcur) { mask __bit = static_cast(1 << __bitcur); if (__m & __bit) { + __any_match = true; bool __testis; switch (__bit) { @@ -100,7 +102,7 @@ __ret &= __testis; } } - return __ret; + return __ret & __any_match; } } @@ -114,13 +116,13 @@ else { // Highest bitmask in ctype_base == 10. - const int __bitmasksize = 11; + const size_t __bitmasksize = 10; for (;__low < __high; ++__vec, ++__low) { mask __m = 0; // Lowest bitmask in ctype_base == 0 - int __i = 0; - for (;__i < __bitmasksize; ++__i) + size_t __i = 0; + for (;__i <= __bitmasksize; ++__i) { mask __bit = static_cast(1 << __i); if (this->is(__bit, *__low)) diff --git a/contrib/libstdc++/config/os/hpux/os_defines.h b/contrib/libstdc++/config/os/hpux/os_defines.h index 27951c1..6414b41 100644 --- a/contrib/libstdc++/config/os/hpux/os_defines.h +++ b/contrib/libstdc++/config/os/hpux/os_defines.h @@ -97,8 +97,10 @@ typedef long int __padding_type; #define _GLIBCPP_INST_ATOMICITY_LOCK 1 #endif -/* Don't use pragma weak in gthread headers. */ -#ifdef __hppa__ +/* Don't use pragma weak in gthread headers. HP-UX rejects programs + with unsatisfied external references even if all of those references + are weak; gthread relies on such unsatisfied references being resolved + to null pointers when weak symbol support is on. */ #define _GLIBCPP_GTHREAD_USE_WEAK 0 -#endif + #endif diff --git a/contrib/libstdc++/configure b/contrib/libstdc++/configure index a533377..fd8b11e 100755 --- a/contrib/libstdc++/configure +++ b/contrib/libstdc++/configure @@ -1468,7 +1468,7 @@ else if { (eval echo configure:1469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in - *.c | *.o | *.obj) ;; + *.$ac_ext | *.c | *.o | *.obj) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done @@ -2451,7 +2451,7 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; - ppc64-*linux*) + ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -23798,7 +23798,9 @@ done # Determine if checking the ABI is desirable. - if test x$enable_symvers = xno; then + # Only build this as native, since automake does not understand + # CXX_FOR_BUILD. + if test x"$GLIBCPP_IS_CROSS_COMPILING" = xtrue || test x$enable_symvers = xno; then enable_abi_check=no else case "$host" in @@ -23902,7 +23904,7 @@ glibcpp_prefixdir=${prefix} # Process the option --with-gxx-include-dir= echo $ac_n "checking for --with-gxx-include-dir""... $ac_c" 1>&6 -echo "configure:23906: checking for --with-gxx-include-dir" >&5 +echo "configure:23908: checking for --with-gxx-include-dir" >&5 # Check whether --with-gxx-include-dir or --without-gxx-include-dir was given. if test "${with_gxx_include_dir+set}" = set; then withval="$with_gxx_include_dir" @@ -23926,7 +23928,7 @@ echo "$ac_t""$gxx_include_dir" 1>&6 # Process the option "--enable-version-specific-runtime-libs" echo $ac_n "checking for --enable-version-specific-runtime-libs""... $ac_c" 1>&6 -echo "configure:23930: checking for --enable-version-specific-runtime-libs" >&5 +echo "configure:23932: checking for --enable-version-specific-runtime-libs" >&5 # Check whether --enable-version-specific-runtime-libs or --disable-version-specific-runtime-libs was given. if test "${enable_version_specific_runtime_libs+set}" = set; then enableval="$enable_version_specific_runtime_libs" @@ -23973,7 +23975,7 @@ if test x"$glibcpp_toolexecdir" = x"no"; then fi echo $ac_n "checking for install location""... $ac_c" 1>&6 -echo "configure:23977: checking for install location" >&5 +echo "configure:23979: checking for install location" >&5 echo "$ac_t""$gxx_include_dir" 1>&6 diff --git a/contrib/libstdc++/configure.target b/contrib/libstdc++/configure.target index a8aa6a6..c1d1cb1 100644 --- a/contrib/libstdc++/configure.target +++ b/contrib/libstdc++/configure.target @@ -154,13 +154,13 @@ case "${target_os}" in netbsd*) os_include_dir="os/bsd/netbsd" ;; - solaris2.5*) + solaris2.5 | solaris2.5.[0-9]) os_include_dir="os/solaris/solaris2.5" ;; - solaris2.6*) + solaris2.6) os_include_dir="os/solaris/solaris2.6" ;; - solaris2.[789]*) + solaris2.[789] | solaris2.1[0-9]) os_include_dir="os/solaris/solaris2.7" ;; windiss*) diff --git a/contrib/libstdc++/include/Makefile.am b/contrib/libstdc++/include/Makefile.am index 906468d..cf15102 100644 --- a/contrib/libstdc++/include/Makefile.am +++ b/contrib/libstdc++/include/Makefile.am @@ -372,7 +372,7 @@ stamp-bits: ${bits_headers} (cd ${bits_builddir} && @LN_S@ $? . || true) ;\ echo `date` > stamp-bits -stamp-c_base: ${c_base_headers} ${c_base_headers_extra} +stamp-c_base: stamp-bits ${c_base_headers} ${c_base_headers_extra} @if [ ! -d "${c_base_builddir}" ]; then \ mkdir -p ${c_base_builddir} ;\ fi ;\ diff --git a/contrib/libstdc++/include/Makefile.in b/contrib/libstdc++/include/Makefile.in index cc7e3a5..b6cc451 100644 --- a/contrib/libstdc++/include/Makefile.in +++ b/contrib/libstdc++/include/Makefile.in @@ -609,7 +609,7 @@ stamp-bits: ${bits_headers} (cd ${bits_builddir} && @LN_S@ $? . || true) ;\ echo `date` > stamp-bits -stamp-c_base: ${c_base_headers} ${c_base_headers_extra} +stamp-c_base: stamp-bits ${c_base_headers} ${c_base_headers_extra} @if [ ! -d "${c_base_builddir}" ]; then \ mkdir -p ${c_base_builddir} ;\ fi ;\ diff --git a/contrib/libstdc++/include/bits/basic_ios.h b/contrib/libstdc++/include/bits/basic_ios.h index fe5e36a..70d8e84 100644 --- a/contrib/libstdc++/include/bits/basic_ios.h +++ b/contrib/libstdc++/include/bits/basic_ios.h @@ -242,7 +242,8 @@ namespace std * The parameter is passed by derived streams. */ explicit - basic_ios(basic_streambuf<_CharT, _Traits>* __sb) : ios_base() + basic_ios(basic_streambuf<_CharT, _Traits>* __sb) + : ios_base(), _M_fctype(0), _M_fnumput(0), _M_fnumget(0) { this->init(__sb); } /** diff --git a/contrib/libstdc++/include/bits/c++config b/contrib/libstdc++/include/bits/c++config index 1b4c2d2..9fdb8cc 100644 --- a/contrib/libstdc++/include/bits/c++config +++ b/contrib/libstdc++/include/bits/c++config @@ -35,7 +35,7 @@ #include // The current version of the C++ library in compressed ISO date format. -#define __GLIBCPP__ 20030804 +#define __GLIBCPP__ 20031106 // This is necessary until GCC supports separate template compilation. #define _GLIBCPP_NO_TEMPLATE_EXPORT 1 diff --git a/contrib/libstdc++/include/bits/istream.tcc b/contrib/libstdc++/include/bits/istream.tcc index 7ba6735..ae0c507 100644 --- a/contrib/libstdc++/include/bits/istream.tcc +++ b/contrib/libstdc++/include/bits/istream.tcc @@ -757,8 +757,12 @@ namespace std sentry __cerb(*this, true); if (__cerb) { - try - { __c = this->rdbuf()->sgetc(); } + try + { + __c = this->rdbuf()->sgetc(); + if (traits_type::eq_int_type(__c, traits_type::eof())) + this->setstate(ios_base::eofbit); + } catch(...) { // 27.6.1.3 paragraph 1 diff --git a/contrib/libstdc++/include/bits/locale_facets.tcc b/contrib/libstdc++/include/bits/locale_facets.tcc index 9ad4dfe..2563a95 100644 --- a/contrib/libstdc++/include/bits/locale_facets.tcc +++ b/contrib/libstdc++/include/bits/locale_facets.tcc @@ -1099,12 +1099,12 @@ namespace std string_type __str; __beg = this->do_get(__beg, __end, __intl, __io, __err, __str); - const int __n = numeric_limits::digits10; - char* __cs = static_cast(__builtin_alloca(__n)); + const int __cs_size = __str.size() + 1; + char* __cs = static_cast(__builtin_alloca(__cs_size)); const locale __loc = __io.getloc(); const ctype<_CharT>& __ctype = use_facet >(__loc); const _CharT* __wcs = __str.c_str(); - __ctype.narrow(__wcs, __wcs + __str.size() + 1, char(), __cs); + __ctype.narrow(__wcs, __wcs + __cs_size, char(), __cs); __convert_to_v(__cs, __units, __err, _S_c_locale); return __beg; } diff --git a/contrib/libstdc++/include/bits/stl_algo.h b/contrib/libstdc++/include/bits/stl_algo.h index 009c409..3d22697 100644 --- a/contrib/libstdc++/include/bits/stl_algo.h +++ b/contrib/libstdc++/include/bits/stl_algo.h @@ -609,7 +609,8 @@ namespace std else { __first = find(__first, __last, __val); while (__first != __last) { - _Integer __n = __count - 1; + typename iterator_traits<_ForwardIter>::difference_type __n = __count; + --__n; _ForwardIter __i = __first; ++__i; while (__i != __last && __n != 0 && *__i == __val) { @@ -661,7 +662,8 @@ namespace std ++__first; } while (__first != __last) { - _Integer __n = __count - 1; + typename iterator_traits<_ForwardIter>::difference_type __n = __count; + --__n; _ForwardIter __i = __first; ++__i; while (__i != __last && __n != 0 && __binary_pred(*__i, __val)) { diff --git a/contrib/libstdc++/libsupc++/cxxabi.h b/contrib/libstdc++/libsupc++/cxxabi.h index adb1a00..301fa7f 100644 --- a/contrib/libstdc++/libsupc++/cxxabi.h +++ b/contrib/libstdc++/libsupc++/cxxabi.h @@ -175,6 +175,8 @@ protected: unsigned __outer) const; }; +class __class_type_info; + /* type information for a pointer to member variable */ class __pointer_to_member_type_info : public __pbase_type_info @@ -201,8 +203,6 @@ protected: unsigned __outer) const; }; -class __class_type_info; - /* helper class for __vmi_class_type */ class __base_class_type_info {