mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-23 13:50:11 +00:00
[CMake] Don't use -fno-semantic-interposition with Clang<=13
Clang 13 has a -fsanitize-coverage -fno-semantic-interposition bug (D117190) which may lead to `relocation R_X86_64_PC32 cannot be used against symbol` linker error in -DLLVM_USE_SANITIZE_COVERAGE=ON build when a shared object is built (e.g. -DLLVM_BUILD_LLVM_DYLIB=on). For simplicity, just disallow Clang 13 entirely. Note: GCC -fPIC performance benefits from -fno-semantic-interposition dramatically. Clang benefits little. Using this option is more for a dogfood purpose to test correctness of this option, because in the wild some important packages like CPython uses this option. Differential Revision: https://reviews.llvm.org/D117183
This commit is contained in:
parent
5d5d4d94f0
commit
1661c8cfcd
@ -315,12 +315,11 @@ if( LLVM_ENABLE_PIC )
|
||||
# Note: GCC<10.3 has a bug on SystemZ.
|
||||
#
|
||||
# Note: Clang allows IPO for -fPIC so this optimization is less effective.
|
||||
# Older Clang may support -fno-semantic-interposition but it used local
|
||||
# aliases to optimize global variables, which is incompatible with copy
|
||||
# relocations due to -fno-pic.
|
||||
# Clang 13 has a bug related to -fsanitize-coverage
|
||||
# -fno-semantic-interposition (https://reviews.llvm.org/D117183).
|
||||
if ((CMAKE_COMPILER_IS_GNUCXX AND
|
||||
NOT (LLVM_NATIVE_ARCH STREQUAL "SystemZ" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.3))
|
||||
OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 13))
|
||||
OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 14))
|
||||
add_flag_if_supported("-fno-semantic-interposition" FNO_SEMANTIC_INTERPOSITION)
|
||||
endif()
|
||||
endif()
|
||||
|
Loading…
Reference in New Issue
Block a user