summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2014-02-03 13:57:09 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2014-02-03 13:57:09 +0000
commitc7b7e2569c15216864f829cb27fd78ccdf587044 (patch)
treea81a4a20fbf0900ab54eee3fceddba6a88ada32d /llvm
parent784de75ca8d449fef5493ad9c0a926b3b4b37b03 (diff)
downloadbcm5719-llvm-c7b7e2569c15216864f829cb27fd78ccdf587044.tar.gz
bcm5719-llvm-c7b7e2569c15216864f829cb27fd78ccdf587044.zip
Don't use -ffunction-sections if -fno-function-sections is not supported in the compiler.
This will disable -ffunction-sections in older versions of Clang where it breaks build of sanitizer runtime library. llvm-svn: 200695
Diffstat (limited to 'llvm')
-rw-r--r--llvm/cmake/modules/HandleLLVMOptions.cmake12
1 files changed, 11 insertions, 1 deletions
diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake
index 47d3b2f79d4..38bbd2ea7e1 100644
--- a/llvm/cmake/modules/HandleLLVMOptions.cmake
+++ b/llvm/cmake/modules/HandleLLVMOptions.cmake
@@ -350,13 +350,23 @@ if (UNIX AND
append("-fcolor-diagnostics" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
endif()
+# Clang prior to 3.5 ignored -fno-function-sections.
+# It's pretty hard to test directly, so we rely on the version number.
+if( ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5) )
+ set(LLVM_COMPILER_HAS_BROKEN_FNO_FUNCTION_SECTIONS ON)
+endif()
+
# Add flags for add_dead_strip().
# FIXME: With MSVS, consider compiling with /Gy and linking with /OPT:REF?
# But MinSizeRel seems to add that automatically, so maybe disable these
# flags instead if LLVM_NO_DEAD_STRIP is set.
if(NOT CYGWIN AND NOT WIN32)
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- append("-ffunction-sections -fdata-sections" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
+ # Don't add -ffunction-section if it can be disabled with -fno-function-sections.
+ # Doing so will break sanitizers.
+ if (NOT LLVM_COMPILER_HAS_BROKEN_FNO_FUNCTION_SECTIONS)
+ append("-ffunction-sections -fdata-sections" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
+ endif()
endif()
endif()
OpenPOWER on IntegriCloud