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
This commit is contained in:
Jakub Jelinek 2005-06-23 18:49:00 +02:00 committed by Jakub Jelinek
parent e57f2b4144
commit 462ec41561
6 changed files with 115 additions and 100 deletions

View File

@ -1,3 +1,24 @@
2005-06-23 Jakub Jelinek <jakub@redhat.com>
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 <bkoz@redhat.com>
PR libstdc++/22111

View File

@ -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.

View File

@ -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
}

View File

@ -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.

View File

@ -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<char>::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<wchar_t>::eq(const char_type& __c1, const char_type& __c2)
{ return __c1 == __c2; }
#endif //_GLIBCXX_USE_WCHAR_T
} // namespace std

View File

@ -31,7 +31,18 @@
#include <bits/c++config.h>
#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 <string>
@ -42,27 +53,6 @@
namespace std
{
// std::istream ignore explicit specializations.
#if defined(_GLIBCXX_SYMVER) && defined(PIC)
template<>
basic_istream<char>&
basic_istream<char>::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<wchar_t>&
basic_istream<wchar_t>::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<char>&
@ -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 <bits/compatibility.h>
#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 <bits/compatibility.h>
#undef _GLIBCXX_APPLY_SYMVER
#undef _GLIBCXX_APPLY_SYMVER_SPECIAL
#endif