[LLVMdev] mesa-10.4.4: BROKEN TLS support in GLX with llvm-toolchain v3.6.0rc2

Jose Fonseca jfonseca at vmware.com
Tue Feb 10 02:56:36 PST 2015


On 09/02/15 23:25, Sedat Dilek wrote:
> On Mon, Feb 9, 2015 at 9:51 PM, Jose Fonseca <jfonseca at vmware.com> wrote:
>> On 09/02/15 17:44, Emil Velikov wrote:
>>>
>>> Hi Sedat,
>>>
>>> On 07/02/15 22:42, Sedat Dilek wrote:
>>>>
>>>> [ Please CC me I am not subscribed to mesa-dev and llvmdev MLs ]
>>>>
>>>> Hi,
>>>>
>>>> I already reported this when playing 1st time with my llvm-toolchain
>>>> v3.6.0rc2 and mesa v10.3.7 [1].
>>>> The issue still remains in mesa v10.4.4.
>>>>
>>>> So, this is a field test to see if LLVM/Clang v3.6.0rc2 fits my needs.
>>>>
>>>> I see the following build-error...
>>>> ...
>>>>
>>>> make[4]: Entering directory `/home/wearefam/src/mesa/mesa-git/src/mapi'
>>>>     CC     shared_glapi_libglapi_la-entry.lo
>>>> clang version 3.6.0 (tags/RELEASE_360/rc2)
>>>> Target: x86_64-unknown-linux-gnu
>>>> Thread model: posix
>>>> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6
>>>> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6.4
>>>> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9
>>>> Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.2
>>>> Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9
>>>> Candidate multilib: .;@m64
>>>> Candidate multilib: 32;@m32
>>>> Selected multilib: .;@m64
>>>>    "/opt/llvm-toolchain-3.6.0rc2/bin/clang" -cc1 -triple
>>>> x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free
>>>> -main-file-name entry.c -mrelocation-model static -mthread-model posix
>>>> -mdisable-fp-elim -relaxed-aliasing -fmath-errno -masm-verbose
>>>> -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu
>>>> x86-64 -target-linker-version 2.22 -v -g -dwarf-column-info
>>>> -coverage-file /home/wearefam/src/mesa/mesa-git/src/mapi/entry.c
>>>> -resource-dir /opt/llvm-toolchain-3.6.0rc2/bin/../lib/clang/3.6.0
>>>> -dependency-file .deps/shared_glapi_libglapi_la-entry.Tpo
>>>> -sys-header-deps -MP -MT shared_glapi_libglapi_la-entry.lo -D
>>>> "PACKAGE_NAME=\"Mesa\"" -D "PACKAGE_TARNAME=\"mesa\"" -D
>>>> "PACKAGE_VERSION=\"10.4.4\"" -D "PACKAGE_STRING=\"Mesa 10.4.4\"" -D
>>>>
>>>> "PACKAGE_BUGREPORT=\"https://urldefense.proofpoint.com/v2/url?u=https-3A__bugs.freedesktop.org_enter-5Fbug.cgi-3Fproduct-3DMesa&d=AwID-g&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=zfmBZnnVGHeYde45pMKNnVyzeaZbdIqVLprmZCM2zzE&m=LdbG9btkWrIw7ABhWDTiHtGwFnB7cDCY6cHlnzXawlQ&s=sH_YjhwwusfBRXm5X-z7LRFkCz68ItpSfCmRnHJAYkw&e=
>>>> \""
>>>>
>>>> -D "PACKAGE_URL=\"\"" -D "PACKAGE=\"mesa\"" -D "VERSION=\"10.4.4\"" -D
>>>> STDC_HEADERS=1 -D HAVE_SYS_TYPES_H=1 -D HAVE_SYS_STAT_H=1 -D
>>>> HAVE_STDLIB_H=1 -D HAVE_STRING_H=1 -D HAVE_MEMORY_H=1 -D
>>>> HAVE_STRINGS_H=1 -D HAVE_INTTYPES_H=1 -D HAVE_STDINT_H=1 -D
>>>> HAVE_UNISTD_H=1 -D HAVE_DLFCN_H=1 -D "LT_OBJDIR=\".libs/\"" -D
>>>> YYTEXT_POINTER=1 -D HAVE___BUILTIN_BSWAP32=1 -D
>>>> HAVE___BUILTIN_BSWAP64=1 -D HAVE___BUILTIN_CLZ=1 -D
>>>> HAVE___BUILTIN_CLZLL=1 -D HAVE___BUILTIN_CTZ=1 -D
>>>> HAVE___BUILTIN_EXPECT=1 -D HAVE___BUILTIN_FFS=1 -D
>>>> HAVE___BUILTIN_FFSLL=1 -D HAVE___BUILTIN_POPCOUNT=1 -D
>>>> HAVE___BUILTIN_POPCOUNTLL=1 -D HAVE___BUILTIN_UNREACHABLE=1 -D
>>>> HAVE_DLADDR=1 -D HAVE_PTHREAD=1 -D HAVE_LIBEXPAT=1 -D
>>>> USE_EXTERNAL_DXTN_LIB=1 -D _GNU_SOURCE -D USE_SSE41 -D DEBUG -D
>>>> USE_X86_64_ASM -D HAVE_XLOCALE_H -D HAVE_STRTOF -D HAVE_DLOPEN -D
>>>> HAVE_POSIX_MEMALIGN -D HAVE_LIBDRM -D GLX_USE_DRM -D HAVE_LIBUDEV -D
>>>> GLX_INDIRECT_RENDERING -D GLX_DIRECT_RENDERING -D GLX_USE_TLS -D
>>>> HAVE_ALIAS -D HAVE_MINCORE -D HAVE_LLVM=0x0306 -D LLVM_VERSION_PATCH=0
>>>> -D MAPI_MODE_GLAPI -D
>>>> "MAPI_ABI_HEADER=\"shared-glapi/glapi_mapi_tmp.h\"" -I . -I
>>>> ../../include -I ../../src/mapi -I ../../src/mapi -I /opt/xorg/include
>>>> -internal-isystem /usr/local/include -internal-isystem
>>>> /opt/llvm-toolchain-3.6.0rc2/bin/../lib/clang/3.6.0/include
>>>> -internal-externc-isystem /usr/include/x86_64-linux-gnu
>>>> -internal-externc-isystem /include -internal-externc-isystem
>>>> /usr/include -O0 -Wall -Werror=implicit-function-declaration
>>>> -Werror=missing-prototypes -std=c99 -fdebug-compilation-dir
>>>> /home/wearefam/src/mesa/mesa-git/src/mapi -ferror-limit 19
>>>> -fmessage-length 0 -pthread -mstackrealign -fobjc-runtime=gcc
>>>> -fdiagnostics-show-option -o entry.o -x c ../../src/mapi/entry.c
>>>> clang -cc1 version 3.6.0 based upon LLVM 3.6.0 default target
>>>> x86_64-unknown-linux-gnu
>>>> ignoring nonexistent directory "/include"
>>>> ignoring duplicate directory "."
>>>> ignoring duplicate directory "."
>>>> #include "..." search starts here:
>>>> #include <...> search starts here:
>>>>    .
>>>>    ../../include
>>>>    /opt/xorg/include
>>>>    /usr/local/include
>>>>    /opt/llvm-toolchain-3.6.0rc2/bin/../lib/clang/3.6.0/include
>>>>    /usr/include/x86_64-linux-gnu
>>>>    /usr/include
>>>> End of search list.
>>>> In file included from ../../src/mapi/entry.c:49:
>>>> ./entry_x86-64_tls.h:66:1: warning: tentative array definition assumed
>>>> to have one element
>>>> x86_64_entry_start[];
>>>> ^
>>>> fatal error: error in backend: symbol 'x86_64_entry_start' is already
>>>> defined
>>>> clang: error: clang frontend command failed with exit code 70 (use -v
>>>> to see invocation)
>>>> clang version 3.6.0 (tags/RELEASE_360/rc2)
>>>> Target: x86_64-unknown-linux-gnu
>>>> Thread model: posix
>>>> clang: note: diagnostic msg: PLEASE submit a bug report to
>>>>
>>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_bugs_&d=AwID-g&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=zfmBZnnVGHeYde45pMKNnVyzeaZbdIqVLprmZCM2zzE&m=LdbG9btkWrIw7ABhWDTiHtGwFnB7cDCY6cHlnzXawlQ&s=KIoF21N7HeIysvh3fgiAiZkFeeEw8ZEr0gu0BsHmOrU&e=
>>>> and include the crash backtrace, preprocessed
>>>> source, and associated run script.
>>>> clang: note: diagnostic msg:
>>>> ********************
>>>>
>>>> PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
>>>> Preprocessed source(s) and associated run script(s) are located at:
>>>> clang: note: diagnostic msg: /tmp/entry-f26a8a.c
>>>> clang: note: diagnostic msg: /tmp/entry-f26a8a.sh
>>>> clang: note: diagnostic msg:
>>>>
>>>> ********************
>>>> make[4]: *** [shared_glapi_libglapi_la-entry.lo] Error 1
>>>> make[4]: Leaving directory `/home/wearefam/src/mesa/mesa-git/src/mapi'
>>>> make[3]: *** [all-recursive] Error 1
>>>> make[3]: Leaving directory `/home/wearefam/src/mesa/mesa-git/src/mapi'
>>>> make[2]: *** [all] Error 2
>>>> make[2]: Leaving directory `/home/wearefam/src/mesa/mesa-git/src/mapi'
>>>> make[1]: *** [all-recursive] Error 1
>>>> make[1]: Leaving directory `/home/wearefam/src/mesa/mesa-git/src'
>>>> make: *** [all-recursive] Error 1
>>>> Command exited with non-zero status 2
>>>> ...
>>>>
>>>> I have attached my build-script, the detailed full build-log (used
>>>> 'clang -v' and 'make -j1') and the two diagnostic tmp-files.
>>>>
>>>> I am not sure if this is fixable in mesa by refactoring the code -
>>>> that's why I CCed especially Jose.
>>
>>
>> This is an issue with building Mesa with Clang, but I actually don't have
>> much experience with that. (I mostly use LLVM as a JIT library.)
>>
>>>>
>>>> If it's a llvm/clang bug, so the folks there should look.
>>>>
>>>> If you need more informations, please let me know.
>>>>
>>> Perhaps getting some (rough) idea of the commit this started failing is
>>> a nice start. Currently mapi is built in 3-4 different "modes", and it
>>> builds fine with gcc/msvc.
>>>
>>> It may be that it's a bug on our end, but it's a bit painful going
>>> through all the auto generated sources, the 10+ define guards and other
>>> magic that's inside src/mapi. Getting some idea on llvm/clang behaviour
>>> change should help out :-)
>>>
>>> Please open a bug-report with llvm and/or mesa, so that we have all the
>>> info in one place and things don't get lost.
>>>
>>> Thanks
>>> Emil
>>>
>>
>> Yeah, the mapi/glapi code is a bit sensitive -- there are several possible
>> configurations (assembly, no assembly, shared glapi, etc.) -- they all
>> produce slightly different machine code.
>>
>
> When you say assembly... where can I pass elegantly "-no-integrated-as"?
> Globally in CFLAGS | CXXFLAGS | LDFLAGS?
> In src/mapi/Makefile.am only? E.g. in shared_glapi_libglapi_la_LDFLAGS?
>
> - Sedat -
>

./configure --disable-asm  should do it.  But as I said, I rarely use 
autoconf

Jose




More information about the llvm-dev mailing list