This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch] libstdc++/66030 fix codecvt exports for mingw32
- From: Jonathan Wakely <jwakely at redhat dot com>
- To: libstdc++ at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Mon, 15 Jun 2015 13:31:19 +0100
- Subject: Re: [patch] libstdc++/66030 fix codecvt exports for mingw32
- Authentication-results: sourceware.org; auth=none
- References: <20150608151218 dot GY12728 at redhat dot com>
On 08/06/15 16:12 +0100, Jonathan Wakely wrote:
The linker script assumes that std::mbstate_t has the name __mbstate_t
for linkage purposes, but that's not necessarily true. For mingw32
it's just a typedef for int, so the patterns don't match.
This adds a new mingw32-specific pattern for codecvt_byname's
constructors and destructors, and relaxes the patterns for
codecvt<charNN_t, char, mbstate_t> so they match __mbstate_t or int.
Tested x86_64-linux and powerpc64le-linux, committed to trunk.
I plan to commit this to trunk and gcc-5-branch soon.
I've fully tested this on x86_64-linux and powerpc64le-linux, and also
manually verified there is no changed to the exported symbols on
Fedora 22 for i686, s390, s390x, ppc64, ppc64le, armv7hl and aarch64,
so am committing to the gcc-5-branch (approved by Jakub on IRC).
commit dffce5e2b48ff19c4ec4de5d7ca934c15225b940
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Mon Jun 1 17:31:46 2015 +0100
PR libstdc++/66030
* config/abi/pre/gnu.ver: Export codecvt_byname and codecvt symbols
for mingw32.
diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 2da04e4..d42cd37 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -542,6 +542,9 @@ GLIBCXX_3.4 {
# std::codecvt_byname
_ZNSt14codecvt_bynameI[cw]c11__mbstate_tEC[12]EPKc[jmy];
_ZNSt14codecvt_bynameI[cw]c11__mbstate_tED*;
+#if defined (_WIN32) && !defined (__CYGWIN__)
+ _ZNSt14codecvt_bynameI[cw]ciE[CD]*;
+#endif
# std::collate
_ZNSt7collateI[cw]*;
@@ -1821,9 +1824,9 @@ GLIBCXX_3.4.21 {
_ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc;
# codecvt<char16_t, char, mbstate_t>, codecvt<char32_t, char, mbstate_t>
- _ZNKSt7codecvtID[is]c11__mbstate_t*;
- _ZNSt7codecvtID[is]c11__mbstate_t*;
- _ZT[ISV]St7codecvtID[is]c11__mbstate_tE;
+ _ZNKSt7codecvtID[is]c*;
+ _ZNSt7codecvtID[is]c*;
+ _ZT[ISV]St7codecvtID[is]c*E;
extern "C++"
{