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