ABI 4?

Joshua Root jmr at macports.org
Mon Mar 26 06:01:22 UTC 2018


On 2018-3-26 10:46 , Ryan Schmidt wrote:
> 
> On Mar 25, 2018, at 15:56, Kenneth F. Cunningham wrote:
> 
>> To fully comply with the c++11 standard, two library calls (copy-on-write strings, and std::list) had to be changed in a way that was incompatible with the older ABI 4 version. A number of other library calls use these two calls, so a number of other library calls are affected. 
> 
> So. If we compile C++11 software using -D_GLIBCXX_USE_CXX11_ABI=0, as we do in the cxx11-1.1 portgroup, are we building software that does not fully comply with the C++11 standard? If so, what are the consequences of that?

It means the compiled program will not comply with the C++11 ABI, which
has the usual effect of not being ABI compatible, i.e. it won't be able
to interoperate with programs that do use the official, slightly
different, ABI.

I've heard that C++11 was the first version of the C++ standard to
actually specify an ABI. Before that, you had little chance of
compatibility between C++ code built with different compilers. Apple's
clang++ and g++-4.2 are notable exceptions, since they deliberately made
clang++ use the same stdlib as g++.

- Josh


More information about the macports-dev mailing list