This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: [4.3.0] remove system_error support
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Benjamin Kosnik <bkoz at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot org
- Date: Fri, 29 Feb 2008 05:08:26 -0500
- Subject: Re: [4.3.0] remove system_error support
- References: <20080228145915.72def41a@wabash.artheist.org>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Thu, Feb 28, 2008 at 02:59:15PM -0800, Benjamin Kosnik wrote:
> After carefully reviewing the 4.3.0rc exports for libstdc++, I'm happy
> with one exception.
>
> Support for C++0x <system_error>, incomplete in 4.3.0, still has
> potential for non-trivial changes going forward. Because this support
> in libstdc++ includes exports in libstdc++.so, it is my preference to
> pull support for the 4_3-branch, and keep what we have on the trunk,
> allowing us the ability to allow this functionality to settle before it
> is supported in an official GCC release.
>
> The following patch against the 4_3-branch does exactly this.
The committed patch also removed std::hash functions, but has not adjusted
config/abi/pre/gnu.ver.
Here is a patch that does that, ok to commit to 4.3?
Unfortunately, while looking at this, I've found another ABI issue:
_ZNKSt3tr14hashI[eg]EclE[eg];
On ppc*-linux/sparc*-linux/alpha*-linux/s390*-linux we still allow
configuring gcc without --with-long-double-128, in fact with older glibc's
that's even the default, and we still support -mlong-double-64 complication
even on systems which default to 128-bit long double.
As std::tr1::hash<long double>::operator()(long double) const
is newly exported from libstdc++, it really should be exported as:
_ZNKSt3tr14hashIgEclEg@@GLIBCXX_LDBL_3.4.10
and
_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10
Will work on a patch.
BTW, _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_ should
have been exported at @@GLIBCXX_LDBL_3.4.9 rather than at
@@GLIBCXX_LDBL_3.4.7, unfortunately 4.2 released with that, so it is too
late to cure. But it is not as big deal as this _ZNKSt3tr14hashIgEclEg.
Because of these late libstdc++ changes, I think we'll need 4.3.0-rc2 today
and postpone 4.3.0 release for several days.
2008-02-29 Jakub Jelinek <jakub@redhat.com>
* config/abi/pre/gnu.ver: Remove std::hash exports.
--- libstdc++-v3/config/abi/pre/gnu.ver.jj 2008-02-29 09:11:54.000000000 +0100
+++ libstdc++-v3/config/abi/pre/gnu.ver 2008-02-29 09:58:19.000000000 +0100
@@ -759,13 +759,6 @@ GLIBCXX_3.4.10 {
_ZNKSt3tr14hashISsEclESs;
_ZNKSt3tr14hashI[eg]EclE[eg];
- _ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_;
- _ZNKSt4hashIRKSsEclES1_;
- _ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_;
- _ZNKSt4hashISsEclESs;
- _ZNKSt4hashISt10error_codeEclES0_;
- _ZNKSt4hashI[eg]EclE[eg];
-
_ZSt17__verify_grouping*;
_ZNSt8__detail12__prime_listE;
Jakub