summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostya Kortchinsky <kostyak@google.com>2017-01-30 22:31:49 +0000
committerKostya Kortchinsky <kostyak@google.com>2017-01-30 22:31:49 +0000
commit2282ede5a80da2cbcd9f2619f86151a7549340a0 (patch)
tree084f431064a626b79dea7b13254c342ac91588c2
parent6217fa44b87f2213f7e8513d29b0ff8f8a1d6615 (diff)
downloadbcm5719-llvm-2282ede5a80da2cbcd9f2619f86151a7549340a0.tar.gz
bcm5719-llvm-2282ede5a80da2cbcd9f2619f86151a7549340a0.zip
[sanitizer] Re-enable -fno-function-sections for powerpc64le
Summary: For a reason that hasn't been investigated for lack of powerpc knowledge and hardware, -fno-function-sections is required for the Sanitizers to work properly on powerpc64le. Without, the function-sections-are-bad test fails on that architecture (and that architecture only). This patch re-enables the flag in the powerpc64le cflags. I have to admit I am not entirely sure if my way is the proper way to do this, so if anyone has a better way, I'll be happy to oblige. Reviewers: kcc, eugenis Reviewed By: eugenis Subscribers: nemanjai, mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D29285 llvm-svn: 293558
-rw-r--r--compiler-rt/CMakeLists.txt8
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt
index 3db41db4d6e..cbde83113ed 100644
--- a/compiler-rt/CMakeLists.txt
+++ b/compiler-rt/CMakeLists.txt
@@ -144,6 +144,14 @@ append_list_if(COMPILER_RT_HAS_FVISIBILITY_HIDDEN_FLAG -fvisibility=hidden SANIT
append_list_if(COMPILER_RT_HAS_FVISIBILITY_INLINES_HIDDEN_FLAG -fvisibility-inlines-hidden SANITIZER_COMMON_CFLAGS)
append_list_if(COMPILER_RT_HAS_FNO_LTO_FLAG -fno-lto SANITIZER_COMMON_CFLAGS)
+# The following is a workaround for powerpc64le. This is the only architecture
+# that requires -fno-function-sections to work properly. If lacking, the ASan
+# Linux test function-sections-are-bad.cc fails with the following error:
+# 'undefined symbol: __sanitizer_unaligned_load32'.
+if(DEFINED TARGET_powerpc64le_CFLAGS)
+ append_list_if(COMPILER_RT_HAS_FNO_FUNCTION_SECTIONS_FLAG -fno-function-sections TARGET_powerpc64le_CFLAGS)
+endif()
+
if(MSVC)
# Replace the /M[DT][d] flags with /MT, and strip any definitions of _DEBUG,
# which cause definition mismatches at link time.
OpenPOWER on IntegriCloud