This is the mail archive of the
mailing list for the libstdc++ project.
Re: libstdc++ c++98 & c++11 ABI incompatibility
- From: Paolo Carlini <paolo dot carlini at oracle dot com>
- To: Richard Guenther <richard dot guenther at gmail dot com>
- Cc: Jonathan Wakely <jwakely dot gcc at gmail dot com>, Jeff Law <law at redhat dot com>, michael dot meeks at suse dot com, Matthias Klose <doko at ubuntu dot com>, gcc <gcc at gcc dot gnu dot org>, libstdc++ <libstdc++ at gcc dot gnu dot org>
- Date: Mon, 02 Jul 2012 19:53:06 +0200
- Subject: Re: libstdc++ c++98 & c++11 ABI incompatibility
- References: <4FD9E399.firstname.lastname@example.org> <email@example.com> <4FF1CFBA.firstname.lastname@example.org> <CAH6eHdTKgK0FK+iw9LLjW5Nr2gUb+26KxfLmizFNV0MO4Jd7xw@mail.gmail.com> <CAFiYyc0fG-ea0SzviAn1ihLEiWH5s0enJQLhA0trz=3=AVnj9w@mail.gmail.com>
On 07/02/2012 07:24 PM, Richard Guenther wrote:
On Mon, Jul 2, 2012 at 7:00 PM, Jonathan Wakely <email@example.com> wrote:
I cannot say to have followed all the details of this discussion
(neither to fully agree with quite a few statements I read in it ;) but
since I added the _M_size member in 4_7-branch (to fix 49561 and of
course in order to provide C++11 conforming complexities for the various
operations) I'm simply going to revert the change from branch and
mainline. Consider it done. Then, it would be great if Jon could devise
something more sophisticated, not throwing away the baby, so to speak ;)
On 2 July 2012 17:43, Jeff Law <firstname.lastname@example.org> wrote:
On 07/02/2012 10:26 AM, Michael Meeks wrote:
I'm wondering why the libstdc++ list was taken out of the CC list ;-)
On Thu, 2012-06-14 at 15:14 +0200, Matthias Klose wrote:
While PR53646 claims that c++98 and c++11 should be ABI
compatible (modulo bugs), the addition of the _M_size member
to std::_List_base::_List_impl makes libraries using
std::list in headers incompatible
This is pretty nasty for LibreOffice (and no doubt others). We
often do depend on rather a number of system C++ libraries and at a very
minimum, having no simple way to detect which C++ ABI we have to build
against 'old' vs. 'new' - is profoundly unpleasant.
Is there no chance of having a bug fix that is a revision of the
(unintended?) ABI breakage in this compiler series ?
That's the direction I'd prefer to see (reversion until we're ready to make
the wholesale ABI changes). Not sure what the libstdc++ maintainers are
thinking right now.
I don't know what the others think but rather than just reverting it
From a RM point of view please go ahead and revert unintended ABI
breakage on all affected branches. Add an entry to the respective
changes file to warn users about the incompatibility present on branches.
I also want to mention (I don't think somebody did already in the
thread) that at some point, with Jason too, we discussed the idea of
adding to each binary a marker about the ABI version which then would be
used by the linker to warn or error out. This vague idea goes of course
well beyond our specific needs for the C++98 conforming std::list vs the
C++11 conforming version of it.