From 462ec41561b714df3641e9b0f54e9f0b8bac4ef1 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 23 Jun 2005 18:49:00 +0200 Subject: re PR libstdc++/22109 (/home/dave/opt/gnu/bin/ld: BFD 2.16.91 20050612 internal error) 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. From-SVN: r101273 --- libstdc++-v3/src/compatibility.cc | 58 +++++++++++---------------------------- 1 file changed, 16 insertions(+), 42 deletions(-) (limited to 'libstdc++-v3/src') diff --git a/libstdc++-v3/src/compatibility.cc b/libstdc++-v3/src/compatibility.cc index 380649d..1deb56c 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) \ - extern "C" void \ - _X##name() \ - __attribute__ ((alias(#name))); \ - asm (".symver " "_X" #name "," #name "@GLIBCXX_3.4"); - -#define _GLIBCXX_3_4_5_SYMVER(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) \ +#define _GLIBCXX_3_4_SYMVER(XXname, name) \ extern "C" void \ _X##name() \ - __attribute__ ((alias("_W" #name))); \ + __attribute__ ((alias(#XXname))); \ asm (".symver " "_X" #name "," #name "@GLIBCXX_3.4"); -#define _GLIBCXX_3_4_5_SYMVER_SPECIAL(name) \ +#define _GLIBCXX_3_4_5_SYMVER(XXname, 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 -- cgit v1.1