diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b72825ef852..89bd3181771 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,24 @@ +2005-06-23 Jakub Jelinek + + PR libstdc++/22109 + * src/compatibility.cc (_GLIBCXX_SYMVER_COMPATIBILITY): Remove. + (istreambuf_iterator, basic_fstream, basic_ifstream, basic_ofstream, + _M_copy, _M_move, _M_assign, _M_disjunct, _M_check_length, + _M_set_length_and_sharable, ignore, eq): Define to XX suffixed + variants. + (ignore (streamsize)): Remove _W prefixed aliases. + (_GLIBCXX_3_4_SYMVER_SPECIAL, _GLIBCXX_3_4_5_SYMVER_SPECIAL, + _GLIBCXX_APPLY_SYMVER_SPECIAL): Remove. + (_GLIBCXX_3_4_SYMVER, _GLIBCXX_3_4_5_SYMVER): Add XXname argument. + Use #XXname instead of #name as the alias argument. + * config/abi/compatibility.h: Replace uses of + _GLIBCXX_APPLY_SYMVER_SPECIAL with _GLIBCXX_APPLY_SYMVER. Always + pass 2 arguments to the _GLIBCXX_APPLY_SYMVER macro. + * include/bits/char_traits.h (char_traits::eq): Revert 2005-06-15 + change. + * acinclude.m4: Decrease glibcxx_min_gnu_ld_version back to 21400. + * configure: Rebuilt. + 2005-06-19 Benjamin Kosnik PR libstdc++/22111 diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 7f6cad6cc50..ee1b9f3e89a 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -1710,8 +1710,7 @@ fi # For GNU ld, we need at least this version. The format is described in # GLIBCXX_CHECK_LINKER_FEATURES above. -# Need 21590 because of compatibility.cc's asm .symver strings for GLIBCXX_3.4. -glibcxx_min_gnu_ld_version=21590 +glibcxx_min_gnu_ld_version=21400 # Check to see if unspecified "yes" value can win, given results above. # Change "yes" into either "no" or a style name. diff --git a/libstdc++-v3/config/abi/compatibility.h b/libstdc++-v3/config/abi/compatibility.h index b3714181bd3..9faa61d7914 100644 --- a/libstdc++-v3/config/abi/compatibility.h +++ b/libstdc++-v3/config/abi/compatibility.h @@ -39,10 +39,12 @@ _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv */ namespace __gnu_internal { -_GLIBCXX_APPLY_SYMVER(_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv) +_GLIBCXX_APPLY_SYMVER(_ZNSt21istreambuf_iteratorXXIcSt11char_traitsIcEEppEv, + _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv) #ifdef _GLIBCXX_USE_WCHAR_T -_GLIBCXX_APPLY_SYMVER(_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv) +_GLIBCXX_APPLY_SYMVER(_ZNSt21istreambuf_iteratorXXIwSt11char_traitsIwEEppEv, + _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv) #endif } // namespace std @@ -77,103 +79,136 @@ _ZNSt11char_traitsIwE2eqERKwS2_ */ namespace __gnu_internal { -_GLIBCXX_APPLY_SYMVER_SPECIAL(_ZNSt11char_traitsIcE2eqERKcS2_) +_GLIBCXX_APPLY_SYMVER(_ZNSt11char_traitsIcE4eqXXERKcS2_, + _ZNSt11char_traitsIcE2eqERKcS2_) #ifdef _GLIBCXX_SIZE_T_IS_UINT -_GLIBCXX_APPLY_SYMVER(_ZNSs7_M_copyEPcPKcj) +_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_copyXXEPcPKcj, + _ZNSs7_M_copyEPcPKcj) #else -_GLIBCXX_APPLY_SYMVER(_ZNSs7_M_copyEPcPKcm) +_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_copyXXEPcPKcm, + _ZNSs7_M_copyEPcPKcm) #endif #ifdef _GLIBCXX_SIZE_T_IS_UINT -_GLIBCXX_APPLY_SYMVER(_ZNSs7_M_moveEPcPKcj) +_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_moveXXEPcPKcj, + _ZNSs7_M_moveEPcPKcj) #else -_GLIBCXX_APPLY_SYMVER(_ZNSs7_M_moveEPcPKcm) +_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_moveXXEPcPKcm, + _ZNSs7_M_moveEPcPKcm) #endif #ifdef _GLIBCXX_SIZE_T_IS_UINT -_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_assignEPcjc) +_GLIBCXX_APPLY_SYMVER(_ZNSs11_M_assignXXEPcjc, + _ZNSs9_M_assignEPcjc) #else -_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_assignEPcmc) +_GLIBCXX_APPLY_SYMVER(_ZNSs11_M_assignXXEPcmc, + _ZNSs9_M_assignEPcmc) #endif -_GLIBCXX_APPLY_SYMVER(_ZNKSs11_M_disjunctEPKc) +_GLIBCXX_APPLY_SYMVER(_ZNKSs13_M_disjunctXXEPKc, + _ZNKSs11_M_disjunctEPKc) #ifdef _GLIBCXX_SIZE_T_IS_UINT -_GLIBCXX_APPLY_SYMVER(_ZNKSs15_M_check_lengthEjjPKc) +_GLIBCXX_APPLY_SYMVER(_ZNKSs17_M_check_lengthXXEjjPKc, + _ZNKSs15_M_check_lengthEjjPKc) #else -_GLIBCXX_APPLY_SYMVER(_ZNKSs15_M_check_lengthEmmPKc) +_GLIBCXX_APPLY_SYMVER(_ZNKSs17_M_check_lengthXXEmmPKc, + _ZNKSs15_M_check_lengthEmmPKc) #endif #ifdef _GLIBCXX_SIZE_T_IS_UINT - _GLIBCXX_APPLY_SYMVER(_ZNSs4_Rep26_M_set_length_and_sharableEj) + _GLIBCXX_APPLY_SYMVER(_ZNSs4_Rep28_M_set_length_and_sharableXXEj, + _ZNSs4_Rep26_M_set_length_and_sharableEj) #else - _GLIBCXX_APPLY_SYMVER(_ZNSs4_Rep26_M_set_length_and_sharableEm) + _GLIBCXX_APPLY_SYMVER(_ZNSs4_Rep28_M_set_length_and_sharableXXEm, + _ZNSs4_Rep26_M_set_length_and_sharableEm) #endif -_GLIBCXX_APPLY_SYMVER(_ZNSi6ignoreEv) +_GLIBCXX_APPLY_SYMVER(_ZNSi8ignoreXXEv, _ZNSi6ignoreEv) #ifdef _GLIBCXX_PTRDIFF_T_IS_INT -_GLIBCXX_APPLY_SYMVER_SPECIAL(_ZNSi6ignoreEi) +_GLIBCXX_APPLY_SYMVER(_ZNSi8ignoreXXEi, _ZNSi6ignoreEi) #else -_GLIBCXX_APPLY_SYMVER_SPECIAL(_ZNSi6ignoreEl) +_GLIBCXX_APPLY_SYMVER(_ZNSi8ignoreXXEl, _ZNSi6ignoreEl) #endif -_GLIBCXX_APPLY_SYMVER(_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv) +_GLIBCXX_APPLY_SYMVER(_ZNKSt15basic_fstreamXXIcSt11char_traitsIcEE7is_openEv, + _ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv) -_GLIBCXX_APPLY_SYMVER(_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv) +_GLIBCXX_APPLY_SYMVER(_ZNKSt16basic_ifstreamXXIcSt11char_traitsIcEE7is_openEv, + _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv) -_GLIBCXX_APPLY_SYMVER(_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv) +_GLIBCXX_APPLY_SYMVER(_ZNKSt16basic_ofstreamXXIcSt11char_traitsIcEE7is_openEv, + _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv) // Support for wchar_t. #ifdef _GLIBCXX_USE_WCHAR_T -_GLIBCXX_APPLY_SYMVER_SPECIAL(_ZNSt11char_traitsIwE2eqERKwS2_) +_GLIBCXX_APPLY_SYMVER(_ZNSt11char_traitsIwE4eqXXERKwS2_, + _ZNSt11char_traitsIwE2eqERKwS2_) #ifdef _GLIBCXX_SIZE_T_IS_UINT -_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj) +_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_copyXXEPwPKwj, + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj) #else - _GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm) + _GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_copyXXEPwPKwm, + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm) #endif #ifdef _GLIBCXX_SIZE_T_IS_UINT -_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj) +_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_moveXXEPwPKwj, + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj) #else -_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm) +_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_moveXXEPwPKwm, + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm) #endif #ifdef _GLIBCXX_SIZE_T_IS_UINT -_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw) +_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE11_M_assignXXEPwjw, + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw) #else -_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw) +_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE11_M_assignXXEPwmw, + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw) #endif -_GLIBCXX_APPLY_SYMVER(_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw) +_GLIBCXX_APPLY_SYMVER(_ZNKSbIwSt11char_traitsIwESaIwEE13_M_disjunctXXEPKw, + _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw) #ifdef _GLIBCXX_SIZE_T_IS_UINT -_GLIBCXX_APPLY_SYMVER(_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc) +_GLIBCXX_APPLY_SYMVER(_ZNKSbIwSt11char_traitsIwESaIwEE17_M_check_lengthXXEjjPKc, + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc) #else -_GLIBCXX_APPLY_SYMVER(_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc) +_GLIBCXX_APPLY_SYMVER(_ZNKSbIwSt11char_traitsIwESaIwEE17_M_check_lengthXXEmmPKc, + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc) #endif #ifdef _GLIBCXX_SIZE_T_IS_UINT -_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj) +_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE4_Rep28_M_set_length_and_sharableXXEj, + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj) #else -_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm) +_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE4_Rep28_M_set_length_and_sharableXXEm, + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm) #endif -_GLIBCXX_APPLY_SYMVER(_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv) +_GLIBCXX_APPLY_SYMVER(_ZNSt13basic_istreamIwSt11char_traitsIwEE8ignoreXXEv, + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv) #ifdef _GLIBCXX_PTRDIFF_T_IS_INT -_GLIBCXX_APPLY_SYMVER_SPECIAL(_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi) +_GLIBCXX_APPLY_SYMVER(_ZNSt13basic_istreamIwSt11char_traitsIwEE8ignoreXXEi, + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi) #else -_GLIBCXX_APPLY_SYMVER_SPECIAL(_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl) +_GLIBCXX_APPLY_SYMVER(_ZNSt13basic_istreamIwSt11char_traitsIwEE8ignoreXXEl, + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl) #endif -_GLIBCXX_APPLY_SYMVER(_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv) +_GLIBCXX_APPLY_SYMVER(_ZNKSt15basic_fstreamXXIwSt11char_traitsIwEE7is_openEv, + _ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv) -_GLIBCXX_APPLY_SYMVER(_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv) +_GLIBCXX_APPLY_SYMVER(_ZNKSt16basic_ifstreamXXIwSt11char_traitsIwEE7is_openEv, + _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv) -_GLIBCXX_APPLY_SYMVER(_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv) +_GLIBCXX_APPLY_SYMVER(_ZNKSt16basic_ofstreamXXIwSt11char_traitsIwEE7is_openEv, + _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv) #endif } diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index ca2defe7992..fd377997956 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -87292,8 +87292,7 @@ fi # For GNU ld, we need at least this version. The format is described in # GLIBCXX_CHECK_LINKER_FEATURES above. -# Need 21590 because of compatibility.cc's asm .symver strings for GLIBCXX_3.4. -glibcxx_min_gnu_ld_version=21590 +glibcxx_min_gnu_ld_version=21400 # Check to see if unspecified "yes" value can win, given results above. # Change "yes" into either "no" or a style name. diff --git a/libstdc++-v3/include/bits/char_traits.h b/libstdc++-v3/include/bits/char_traits.h index aaefdd463a4..57a92ac1083 100644 --- a/libstdc++-v3/include/bits/char_traits.h +++ b/libstdc++-v3/include/bits/char_traits.h @@ -242,10 +242,7 @@ namespace std static bool eq(const char_type& __c1, const char_type& __c2) -#ifdef _GLIBCXX_SYMVER_COMPATIBILITY - asm ("_W_ZNSt11char_traitsIcE2eqERKcS2_"); -#endif - ; + { return __c1 == __c2; } static bool lt(const char_type& __c1, const char_type& __c2) @@ -297,9 +294,6 @@ namespace std { return (__c == eof()) ? 0 : __c; } }; - inline bool - char_traits::eq(const char_type& __c1, const char_type& __c2) - { return __c1 == __c2; } #ifdef _GLIBCXX_USE_WCHAR_T /// @brief 21.1.3.2 char_traits specializations @@ -317,11 +311,8 @@ namespace std { __c1 = __c2; } static bool - eq(const char_type& __c1, const char_type& __c2) -#ifdef _GLIBCXX_SYMVER_COMPATIBILITY - asm ("_W_ZNSt11char_traitsIwE2eqERKwS2_") -#endif - ; + eq(const char_type& __c1, const char_type& __c2) + { return __c1 == __c2; } static bool lt(const char_type& __c1, const char_type& __c2) @@ -368,10 +359,6 @@ namespace std not_eof(const int_type& __c) { return eq_int_type(__c, eof()) ? 0 : __c; } }; - - inline bool - char_traits::eq(const char_type& __c1, const char_type& __c2) - { return __c1 == __c2; } #endif //_GLIBCXX_USE_WCHAR_T } // namespace std diff --git a/libstdc++-v3/src/compatibility.cc b/libstdc++-v3/src/compatibility.cc index 380649d8f18..1deb56c3f30 100644 --- a/libstdc++-v3/src/compatibility.cc +++ b/libstdc++-v3/src/compatibility.cc @@ -31,7 +31,18 @@ #include #if defined(_GLIBCXX_SYMVER) && defined(PIC) -# define _GLIBCXX_SYMVER_COMPATIBILITY 1 +#define istreambuf_iterator istreambuf_iteratorXX +#define basic_fstream basic_fstreamXX +#define basic_ifstream basic_ifstreamXX +#define basic_ofstream basic_ofstreamXX +#define _M_copy(a, b, c) _M_copyXX(a, b, c) +#define _M_move(a, b, c) _M_moveXX(a, b, c) +#define _M_assign(a, b, c) _M_assignXX(a, b, c) +#define _M_disjunct(a) _M_disjunctXX(a) +#define _M_check_length(a, b, c) _M_check_lengthXX(a, b, c) +#define _M_set_length_and_sharable(a) _M_set_length_and_sharableXX(a) +#define ignore ignoreXX +#define eq eqXX #endif #include @@ -42,27 +53,6 @@ namespace std { // std::istream ignore explicit specializations. -#if defined(_GLIBCXX_SYMVER) && defined(PIC) - template<> - basic_istream& - basic_istream::ignore(streamsize __n) -#ifdef _GLIBCXX_PTRDIFF_T_IS_INT - asm ("_W_ZNSi6ignoreEi"); -#else - asm ("_W_ZNSi6ignoreEl"); -#endif - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> - basic_istream& - basic_istream::ignore(streamsize __n) -#ifdef _GLIBCXX_PTRDIFF_T_IS_INT - asm ("_W_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi"); -#else - asm ("_W_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl"); -#endif -#endif -#endif // _GLIBCXX_SYMVER && PIC template<> basic_istream& @@ -347,43 +337,27 @@ namespace std // In the future, GLIBCXX_ABI > 6 should remove all uses of // _GLIBCXX_*_SYMVER macros in this file. -#define _GLIBCXX_3_4_SYMVER(name) \ +#define _GLIBCXX_3_4_SYMVER(XXname, name) \ extern "C" void \ _X##name() \ - __attribute__ ((alias(#name))); \ + __attribute__ ((alias(#XXname))); \ asm (".symver " "_X" #name "," #name "@GLIBCXX_3.4"); -#define _GLIBCXX_3_4_5_SYMVER(name) \ +#define _GLIBCXX_3_4_5_SYMVER(XXname, name) \ extern "C" void \ _Y##name() \ - __attribute__ ((alias(#name))); \ - asm (".symver " "_Y" #name "," #name "@@GLIBCXX_3.4.5"); - -#define _GLIBCXX_3_4_SYMVER_SPECIAL(name) \ - extern "C" void \ - _X##name() \ - __attribute__ ((alias("_W" #name))); \ - asm (".symver " "_X" #name "," #name "@GLIBCXX_3.4"); - -#define _GLIBCXX_3_4_5_SYMVER_SPECIAL(name) \ - extern "C" void \ - _Y##name() \ - __attribute__ ((alias("_W" #name))); \ + __attribute__ ((alias(#XXname))); \ asm (".symver " "_Y" #name "," #name "@@GLIBCXX_3.4.5"); #define _GLIBCXX_ASM_SYMVER(cur, old, version) \ asm (".symver " #cur "," #old "@@" #version); #define _GLIBCXX_APPLY_SYMVER _GLIBCXX_3_4_SYMVER -#define _GLIBCXX_APPLY_SYMVER_SPECIAL _GLIBCXX_3_4_SYMVER_SPECIAL #include #undef _GLIBCXX_APPLY_SYMVER -#undef _GLIBCXX_APPLY_SYMVER_SPECIAL #define _GLIBCXX_APPLY_SYMVER _GLIBCXX_3_4_5_SYMVER -#define _GLIBCXX_APPLY_SYMVER_SPECIAL _GLIBCXX_3_4_5_SYMVER_SPECIAL #include #undef _GLIBCXX_APPLY_SYMVER -#undef _GLIBCXX_APPLY_SYMVER_SPECIAL #endif