Boost logo

Boost Users :

Subject: Re: [Boost-users] C++11 ABI stability
From: Miloslav Marik (miloslav.marik_at_[hidden])
Date: 2017-06-27 08:40:40


Hi,

As far as I can remember, the problem with ABI compatibility was
with boost/asio/detail/atomic_count.hpp. You can force ABI compatibility
using BOOST_ASIO_DISABLE_STD_ATOMIC definition. I have not detect any other
ABI compatibility problem between C++03 and C++11.

Best Regards,
Slavek

2017-06-26 12:34 GMT+02:00 Jonathan Wakely via Boost-users <
boost-users_at_[hidden]>:

> On Wed, Jun 21, 2017 at 08:44:53AM -0500, Steve Lorimer via Boost-users
> wrote:
> > They are probably referring to the changes wrt std::string and std::list
> >
> > Pre-C++11 a lot of standard libraries used copy-on-write strings, which
> was
> > forbidden in C++11.
> >
> > std::list now has to have O(1) size, which is another possibly ABI
> > incompatible change.
> >
> > More details here:
> > https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html
>
> That page explicitly points out that choosing a standard version with
> -std does not affect the ABI:
>
> "Although the changes were made for C++11 conformance, the choice of ABI
> to use is independent of the -std option used to compile your code, i.e.
> for a given GCC build the default value of the _GLIBCXX_USE_CXX11_ABI
> macro is the same for all dialects. This ensures that the -std does not
> change the ABI, so that it is straightforward to link C++03 and C++11
> code together."
>
>
> > On 21 June 2017 at 01:09, Marek Skalický via Boost-users <
> > boost..._at_[hidden]> wrote:
> >
> > > Hi,
> > > mongo-cxx-driver notices this:
> > > "Important note about C++11/C++14: The boost libraries do not offer a
> > > stable ABI across different versions of the C++ standard. As a result,
> > > you must ensure that your application, the C++ driver, and boost are
> > > all built with the same language standard. In particular, if you are
> > > building the C++ driver with C++11 enabled, you must also build your
> > > application with C++11 enabled, and link against a C++11 compiled
> > > boost. " [1]
> > >
> > > Is it true? What changes with new standard? (or is this only related to
> > > ABI change in gcc introduced by c++11?)
> > >
> > > I'm interested mainly in libraries: filesystem, chrono, thread, system
> > > and regex
> > >
> > > Thanks,
> > > Marek
> > >
> > > [1] http://mongodb.github.io/mongo-cxx-driver/legacy-v1/
> installation/#s
> > > cons-options-when-compiling-the-c-driver
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> https://lists.boost.org/mailman/listinfo.cgi/boost-users
>



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net