This is the mail archive of the
mailing list for the GCC project.
Re: GCC version bikeshedding
- From: Jonathan Wakely <jwakely dot gcc at gmail dot com>
- To: Richard Biener <richard dot guenther at gmail dot com>
- Cc: 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 11:25:32 +0100
- 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>
On 6 August 2014 11:20, Richard Biener wrote:
> On Wed, Aug 6, 2014 at 12:08 PM, Jonathan Wakely <firstname.lastname@example.org> wrote:
>> On 6 August 2014 10:06, Jakub Jelinek wrote:
>>> On Wed, Aug 06, 2014 at 11:04:14AM +0200, Richard Biener wrote:
>>>> > - libstdc++ ABI changes (it is a significant user visible change,
>>>> > if you rebuild everything, no extra effort is needed, but otherwise
>>>> > if you want some C++ code built with older compilers work together
>>>> > with code built with newer compilers, it might require source code
>>>> > changes (the abi_tag attribute additions where needed and warning
>>>> > suggest to put those at), at least that is my current understanding
>>>> > of the plans
>>>> But that's only with -std=c++11? Which had no compatibility
>>>> guarantees before?
>>> No, AFAIK it is also -std=c++98. At least my understanding was that
>>> std::list and std::string are going to change ABI (and get new abi_tag)
>>> in all C++ modes. Jonathan/Jason/Paolo, is that right?
>> Correct. We want C++03 code to continue to be able to interoperate
>> with C++11 code.
>> 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. Is there a configure
> switch to change the default ABI used?
You'll need to define a macro to get the old versions of the affected
classes, we can add a configure switch to make that the default.
> 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?
There will be a linker error as the types and the interface functions
will have different mangled names.