(In reply to comment #35) > I really think that implementing the full gcc abi-tag support is not > feasible for Clang. > So I would recommend to focus on compatibility with the single (new) ABI > alone.
Wait, are you suggesting we move *all* users of *all* operating systems for *all* users of Clang and LLVM to change to the new GCC ABI because it's easier for Linux distributions that happen to have prematurely chosen to move? This doesn't make sense... Even if we segregate this for Linux only, which wouldn't be pretty, we're still forcing *all* other Linux distributions that may want to have a Clang package to move to the new GCC ABI just because other distros have. Still doesn't make sense... FWIW, Clang and GCC are running very well on my Arch Linux with GCC 5.3.0 and GLIBCXX_3.4.21. -- You received this bug notification because you are a member of Desktop Packages, which is subscribed to llvm-toolchain-3.6 in Ubuntu. https://bugs.launchpad.net/bugs/1488254 Title: clang++ no longer ABI-compatible with g++ Status in LLVM: Confirmed Status in llvm-toolchain-3.6 package in Ubuntu: Confirmed Bug description: $ cat foo.cc #include <string> std::string hello = "Hello, world!\n"; $ cat bar.cc #include <string> #include <iostream> extern std::string hello; int main() { std::cout << hello; return 0; } $ g++ -c foo.cc && g++ foo.o bar.cc && ./a.out Hello, world! $ clang++ -c foo.cc && clang++ foo.o bar.cc && ./a.out Hello, world! $ g++ -c foo.cc && clang++ foo.o bar.cc && ./a.out /tmp/bar-34fb23.o: In function `main': bar.cc:(.text+0x14): undefined reference to `hello' clang: error: linker command failed with exit code 1 (use -v to see invocation) $ clang++ -c foo.cc && g++ foo.o bar.cc && ./a.out /tmp/ccqU38Mh.o: In function `main': bar.cc:(.text+0x5): undefined reference to `hello[abi:cxx11]' collect2: error: ld returned 1 exit status In practice, this means that many programs using C++ libraries other than libstdc++ fail to compile with clang++. For example, mosh fails with undefined references to google::protobuf::internal::empty_string_, google::protobuf::MessageLite::InitializationErrorString() const, and google::protobuf::MessageLite::SerializeAsString() const. To manage notifications about this bug go to: https://bugs.launchpad.net/llvm/+bug/1488254/+subscriptions -- Mailing list: https://launchpad.net/~desktop-packages Post to : [email protected] Unsubscribe : https://launchpad.net/~desktop-packages More help : https://help.launchpad.net/ListHelp

