On Mon, 29 Jun 2015 20:08:17 +0200
Murray Cumming <murr...@murrayc.com> wrote:
> On Mon, 2015-06-29 at 18:57 +0100, Chris Vine wrote:
> > I don't disagree with the rest of your post, but this is wrong.
> > Using the gcc-5.1 ABI does not require you to compile C++ code with
> > the -std=c++11 flag,
> 
> Ah, thanks.
> 
> >  and there is no proposal that fedora should do so.
> > From that point of view the _GLIBCXX_USE_CXX11_ABI define is a
> > slight misnomer - the point is that the ABI is compliant with
> > C++11, not that it is only for C++11.
> [snip]
> 
> But the applications do need to be rebuilt in Fedora? So there is an
> ABI break? And that rebuild just has to be done with the newer
> compiler version?

The essentials are that:

1.  _GLIBCXX_USE_CXX11_ABI controls the ABI for all versions of C++.

2.  -std=c++[...] controls the API.

All C++ code, of all C++ flavours, for any setting of -std=c++[...]
uses the same ABI if it uses the same _GLIBCXX_USE_CXX11_ABI setting.

Therefore, fedora 22, which uses gcc-5.1 with the old ABI, did not need
to recompile any of its C++ binaries, for any version of C++.

Fedora 23, which will use gcc-5.1 with the new ABI, will have to
recompile all its C++ binaries (libraries and programs)[1], for all
versions of C++ those libraries and programs may happen to use.  Thus it
will have to recompile current gtkmm-3.16 for C++-98 for the new ABI,
irrespective of what gtkmm does in the future about C++11 (if
anything).  So yes, Fedora 23 represented an ABI break - all
out-of-distribution third party C++ applications would have had to be
recompiled if they were to use any C++ library other than the standard
library.

Chris

[1]  As Kalev has mentioned, strictly speaking this does not apply to
C++ programs which only use the standard library and use no external
C++ libraries such as gtkmm or Qt, because libstdc++ comes in dual
binary format.  In practice as I understand it fedora have recompiled
everything anyway.
_______________________________________________
gtkmm-list mailing list
gtkmm-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to