This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[Committed] libstdc++: Fix version script conflict for new time_get* symbols
- From: "Andreas Krebbel" <krebbel at linux dot vnet dot ibm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: paolo dot carlini at oracle dot com, libstdc++ at gcc dot gnu dot org
- Date: Wed, 27 Jan 2010 10:16:52 +0100
- Subject: [Committed] libstdc++: Fix version script conflict for new time_get* symbols
Hi,
the abi_check testcase currently fails on s390 due to new time_get*
symbols added two the version script.
The following two patterns have a conflict:
GLIBCXX_3.4:
_ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE[0-9]*;
GLIBCXX_3.4.14:
_ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE24_M_extract_wday_or_month*;
The attached patch fixes the problem for me.
Tested on s390x. No regressions.
Paolo verified that the abi_check on x86_64 is still ok with the patch.
Patch approved off-list by Paolo Carlini. Committed to mainline.
Bye,
-Andreas-
Here the output from the abi_check tool:
2 incompatible symbols
0
_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate
std::time_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::_M_extract_wday_or_month(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, int&, wchar_t const**, unsigned long, std::ios_base&, std::_Ios_Iostate&) const
version status: incompatible
GLIBCXX_3.4
type: function
status: added
1
_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate
std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract_wday_or_month(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, int&, char const**, unsigned long, std::ios_base&, std::_Ios_Iostate&) const
version status: incompatible
GLIBCXX_3.4
type: function
status: added
2010-01-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* config/abi/pre/gnu.ver: Avoid time_get pattern conflicts.
Index: libstdc++-v3/config/abi/pre/gnu.ver
===================================================================
--- libstdc++-v3/config/abi/pre/gnu.ver.orig 2010-01-26 12:55:36.000000000 +0100
+++ libstdc++-v3/config/abi/pre/gnu.ver 2010-01-26 17:02:46.000000000 +0100
@@ -461,8 +461,9 @@ GLIBCXX_3.4 {
# std::time_get
_ZNSt8time_get*;
- _ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE[0-9]*;
- _ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE1[0-9]*;
+ _ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE1*;
+ _ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE8*;
+ _ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE21*;
# std::time_get_byname
_ZNSt15time_get_byname*;