From 629ea82a13cc073c9941f1512d5fad97883542a7 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 21 Nov 2012 22:28:15 +0000 Subject: Fix 33149: LLVM caused startup crash on linux systems using Mesa llvmpipe. Now we hide the LLVM symbols with an ld version script to avoid conflicts. --- CMakeLists.txt | 5 ++++- build_files/buildbot/config/user-config-glibc211-i686.py | 2 +- build_files/buildbot/config/user-config-glibc211-x86_64.py | 2 +- build_files/buildbot/config/user-config-glibc27-i686.py | 2 +- build_files/buildbot/config/user-config-glibc27-x86_64.py | 2 +- build_files/scons/config/linux-config.py | 4 ++++ source/creator/blender.map | 11 +++++++++++ 7 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 source/creator/blender.map diff --git a/CMakeLists.txt b/CMakeLists.txt index 3ca01a8a28b..751c2dd548e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -759,6 +759,9 @@ if(UNIX AND NOT APPLE) else() message(FATAL_ERROR "LLVM not found.") endif() + + # Fix for conflict with Mesa llvmpipe + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/source/creator/blender.map") endif() if(WITH_CYCLES_OSL) @@ -821,7 +824,7 @@ if(UNIX AND NOT APPLE) endif() endif() - set(PLATFORM_LINKFLAGS "-pthread") + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -pthread") # lfs on glibc, all compilers should use add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE) diff --git a/build_files/buildbot/config/user-config-glibc211-i686.py b/build_files/buildbot/config/user-config-glibc211-i686.py index 2b1af356773..e5afa2afe13 100644 --- a/build_files/buildbot/config/user-config-glibc211-i686.py +++ b/build_files/buildbot/config/user-config-glibc211-i686.py @@ -162,4 +162,4 @@ WITH_BF_OCEANSIM = True BF_DEBUG = False REL_CCFLAGS = ['-O2', '-msse', '-msse2'] # C & C++ PLATFORM_LINKFLAGS = ['-lrt'] -BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive'] +BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive', '-Wl,--version-script=source/creator/blender.map'] diff --git a/build_files/buildbot/config/user-config-glibc211-x86_64.py b/build_files/buildbot/config/user-config-glibc211-x86_64.py index dbae44af66f..dc901d25a92 100644 --- a/build_files/buildbot/config/user-config-glibc211-x86_64.py +++ b/build_files/buildbot/config/user-config-glibc211-x86_64.py @@ -161,4 +161,4 @@ WITH_BF_OCEANSIM = True BF_DEBUG = False REL_CCFLAGS = ['-O2', '-msse', '-msse2'] # C & C++ PLATFORM_LINKFLAGS = ['-lrt'] -BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive'] +BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive', '-Wl,--version-script=source/creator/blender.map'] diff --git a/build_files/buildbot/config/user-config-glibc27-i686.py b/build_files/buildbot/config/user-config-glibc27-i686.py index c8e144e8a7f..dd3a63d0fd7 100644 --- a/build_files/buildbot/config/user-config-glibc27-i686.py +++ b/build_files/buildbot/config/user-config-glibc27-i686.py @@ -147,4 +147,4 @@ WITH_BF_OCEANSIM = True BF_DEBUG = False REL_CCFLAGS = ['-O2'] # C & C++ PLATFORM_LINKFLAGS = ['-L/home/sources/staticlibs/lib32'] -BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive'] +BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive', '-Wl,--version-script=source/creator/blender.map'] diff --git a/build_files/buildbot/config/user-config-glibc27-x86_64.py b/build_files/buildbot/config/user-config-glibc27-x86_64.py index 9541908d4ed..d9e50d258bc 100644 --- a/build_files/buildbot/config/user-config-glibc27-x86_64.py +++ b/build_files/buildbot/config/user-config-glibc27-x86_64.py @@ -146,4 +146,4 @@ WITH_BF_OCEANSIM = True BF_DEBUG = False REL_CCFLAGS = ['-O2', '-msse', '-msse2'] # C & C++ PLATFORM_LINKFLAGS = ['-L/home/sources/staticlibs/lib64'] -BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive'] +BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive', '-Wl,--version-script=source/creator/blender.map'] diff --git a/build_files/scons/config/linux-config.py b/build_files/scons/config/linux-config.py index 0ffd9ca9cc6..038a9bc421d 100644 --- a/build_files/scons/config/linux-config.py +++ b/build_files/scons/config/linux-config.py @@ -298,3 +298,7 @@ BF_INSTALLDIR='../install/linux' #Link against pthread PLATFORM_LINKFLAGS = ['-pthread'] +#Fix for LLVM conflict with Mesa llvmpipe +if WITH_BF_LLVM: + PLATFORM_LINKFLAGS += ['-Wl,--version-script=source/creator/blender.map'] + diff --git a/source/creator/blender.map b/source/creator/blender.map new file mode 100644 index 00000000000..dc7bc3151e8 --- /dev/null +++ b/source/creator/blender.map @@ -0,0 +1,11 @@ + +/* on Linux we exclude LLVM symbols, they conflict with Mesa llvmpipe */ + +{ +global: + *; +local: + *llvm*; + *LLVM*; +}; + -- cgit v1.2.3