← Back to team overview

desktop-packages team mailing list archive

[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