This is the mail archive of the
mailing list for the GCC project.
Re: GCC version bikeshedding
- From: Marc Glisse <marc dot glisse at inria dot fr>
- To: Richard Biener <richard dot guenther at gmail dot com>
- Cc: Jonathan Wakely <jwakely dot gcc at gmail dot com>, Jakub Jelinek <jakub at redhat dot com>, Eric Botcazou <ebotcazou at libertysurf dot fr>, Ian Lance Taylor <iant at google dot com>, GCC Development <gcc at gcc dot gnu dot org>, Jason Merrill <jason at redhat dot com>
- Date: Wed, 6 Aug 2014 12:35:02 +0200 (CEST)
- Subject: Re: GCC version bikeshedding
- Authentication-results: sourceware.org; auth=none
- References: <20140720165506 dot GT3003 at laptop dot redhat dot com> <201407291845 dot 14107 dot ebotcazou at libertysurf dot fr> <CAKOQZ8whj_m9yjYVdX_p24ocV25VRZwwmTf=VvGjEoxNeHbxSg at mail dot gmail dot com> <201408060925 dot 48414 dot ebotcazou at libertysurf dot fr> <20140806074223 dot GY7393 at tucnak dot redhat dot com> <CAFiYyc1+LTfbPF=nT3O4pA4ST6Z2X5FJ0ywMxL9bk3UsqwnV2w at mail dot gmail dot com> <20140806084803 dot GB7393 at tucnak dot redhat dot com> <CAFiYyc0+YgrRA-CheSFx5not6XadTWOa-mr_LWpX4sZ_gQMgdg at mail dot gmail dot com> <20140806090635 dot GD7393 at tucnak dot redhat dot com> <CAH6eHdSkX-kvXTN8ysKh38dWy1nUeQMnX6nGSm+sOdbSm7z1cw at mail dot gmail dot com> <CAFiYyc3fxDDX9TZeySaF8vMZqwb3ipwQs-vCmiOHK3Vdwe7uUg at mail dot gmail dot com> <CAFiYyc3xbMxh-BLns+cPR+eWCYcsvoh=Ef4WGMPr8w7rUsa=tA at mail dot gmail dot com>
- Reply-to: gcc at gcc dot gnu dot org
On Wed, 6 Aug 2014, Richard Biener wrote:
It's an ABI change for all modes (but not a SONAME change because the
old and new definitions will both be present in the .so).
Ugh. That's going to be a nightmare to support.
Yes. And IMO a waste of effort compared to a clean .so.7 break, but
Is there a configure
switch to change the default ABI used? That is, on a legacy system
can I upgrate to 5.0 and get code that interoperates fine with code
built with 4.8? (including ABI boundaries using the affected classes?
I suspect APIs with std::string passing are _very_ common, not
sure about std::list)
What's the failure mode the user will see when linking against a
4.8 compiled library with a std::string interface using 5.0?
In good cases, a linker error about a missing symbol (different mangling).
In less good cases, a warning at compile-time about using a class marked
with abi_tag in a class not marked with it. In worse cases (passing
through void* for instance), a runtime crash.
And how do libraries with such an API avoid silently changing their
ABI dependent on the compiler used to compile them? That is,
I suppose those need to change their SONAME dependent on
the compiler version used?!
Yes, just like a move to .so.7 would entail.