Bug 92629 - lp_bld_debug.cpp:141: undefined reference to `llvm::sys::getProcessTriple()'
Summary: lp_bld_debug.cpp:141: undefined reference to `llvm::sys::getProcessTriple()'
Status: RESOLVED NOTOURBUG
Alias: None
Product: Mesa
Classification: Unclassified
Component: Mesa core (show other bugs)
Version: git
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: mesa-dev
QA Contact: mesa-dev
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-10-23 03:29 UTC by Vinson Lee
Modified: 2015-10-26 09:29 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Vinson Lee 2015-10-23 03:29:40 UTC
mesa: 7b636581253fe858ac883e3d3eec21173ac069d4 (master 11.1.0-devel)

Build error with clang 3.6.2 on Ubuntu 15.10 and clang 3.7.0 on Fedora 24.

  Linking build/linux-x86_64-debug/gallium/drivers/llvmpipe/lp_test_arit ...
build/linux-x86_64-debug/gallium/auxiliary/libgallium.a(lp_bld_debug.os): In function `disassemble(void const*)':
src/gallium/auxiliary/gallivm/lp_bld_debug.cpp:141: undefined reference to `llvm::sys::getProcessTriple()'
Comment 1 Jose Fonseca 2015-10-26 09:29:56 UTC
Thanks Vinson.

I can repro this on Ubuntu 15.10 doing

  CC=clang CXX=clang++ scons lp_test_arit

If I do
 
  nm -u build/linux-x86_64-debug/gallium/auxiliary/gallivm/lp_bld_debug.os

with G++ I get

  U _ZN4llvm3sys16getProcessTripleB5cxx11Ev

where as with Clang I get

  _ZN4llvm3sys16getProcessTripleEv

If I run both through c++filt I get with g++

  U llvm::sys::getProcessTriple[abi:cxx11]()

whereas with clang I get

  U llvm::sys::getProcessTriple()

In other words, clang is not emitting cxx11 abi symbols, when g++ is.

This seems to be a known problem:

  http://allanmcrae.com/2015/06/the-case-of-gcc-5-1-and-the-two-c-abis/
  https://www.reddit.com/r/cpp/comments/3b2glr/why_clang_cant_use_the_new_gcc_5_cxx11_abi/

And there's even a LLVM/clang bug filed:

  https://llvm.org/bugs/show_bug.cgi?id=23529


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.