aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjakub <>2005-06-23 15:49:00 +0000
committerjakub <>2005-06-23 15:49:00 +0000
commite47ffa5411b1ccc1c9ad2abb222689ad1027be20 (patch)
treebad9e1e79fd3dfb06bf421c890b14ed70cadc0c6
parentac1461f1e2d083bd6e31c0dd683d868ae04e36dc (diff)
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.
-rw-r--r--libstdc++-v3/ChangeLog21
-rw-r--r--libstdc++-v3/acinclude.m43
-rw-r--r--libstdc++-v3/config/abi/compatibility.h111
-rwxr-xr-xlibstdc++-v3/configure3
-rw-r--r--libstdc++-v3/include/bits/char_traits.h19
-rw-r--r--libstdc++-v3/src/compatibility.cc58
6 files changed, 115 insertions, 100 deletions
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 <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
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<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
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 <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) \
- 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 <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