Bug#797917: clang should use the new CXX11_ABI

Stefan Bühler source at stbuehler.de
Sun Sep 27 13:29:51 UTC 2015


Control: forwarded -1 https://llvm.org/bugs/show_bug.cgi?id=23529
Control: found -1 clang-3.4/1:3.4.2-15
Control: found -1 clang-3.6/1:3.6.2-1
Control: found -1 clang-3.7/1:3.7-2
Control: found -1 clang-3.8/1:3.8~svn247576-1

Hi,

I've been trying to fix this, see the upstream bug report and
http://reviews.llvm.org/D12834

Some clarifications:

The dual ABI in libstdc++ is *enabled*, so linking libstdc++ should
work fine with clang++ -D_GLIBCXX_USE_CXX11_ABI=0

The problem is with other c++ libraries which provide interfaces based
on the new libstdc++ ABI (for example by using std::string). I don't
think there is any library apart from libstdc++ out there providing
dual ABI (and I don't think it is trivial to add, as you need separate
translation units afaik); instead they are now all build against the
new ABI.

The main source of incompatibilities is:
- functions returning an "abi_tag"ged type, like ``std::string
  getName()``
- global variables with "abi_tag"ged type (global as in "needs a
  symbols visible in all translation units". static variables in inline
  functions might not trigger a linker error, but are broken anyway)

regards,
Stefan

PS: g++-4.9 doesn't work either.



More information about the Pkg-llvm-team mailing list