desktop-packages team mailing list archive
-
desktop-packages team
-
Mailing list archive
-
Message #157680
[Bug 1488254]
(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
References