From fda072de9714c557fdd7a2ba608980a25d2afe61 Mon Sep 17 00:00:00 2001 From: Francis Ricci Date: Tue, 16 Aug 2016 02:15:51 +0000 Subject: [PATCH] [compiler-rt] Allow c++ abi to be explictly disabled in cmake configuration Summary: This will allow for the sanitizers to be used when c++ abi is unavailable. Reviewers: samsonov, beanz, pcc, rnk Subscribers: llvm-commits, kubabrecka, compnerd, dberris Differential Revision: https://reviews.llvm.org/D23376 llvm-svn: 278772 --- compiler-rt/CMakeLists.txt | 24 +++++++++++++----------- compiler-rt/lib/ubsan/ubsan_type_hash_itanium.cc | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/compiler-rt/CMakeLists.txt b/compiler-rt/CMakeLists.txt index f72fb01..a121519 100644 --- a/compiler-rt/CMakeLists.txt +++ b/compiler-rt/CMakeLists.txt @@ -85,6 +85,19 @@ option(COMPILER_RT_EXTERNALIZE_DEBUGINFO # COMPILER_RT_DEBUG_PYBOOL is used by lit.common.configured.in. pythonize_bool(COMPILER_RT_DEBUG) +if(APPLE AND SANITIZER_MIN_OSX_VERSION VERSION_LESS "10.9") + # Mac OS X prior to 10.9 had problems with exporting symbols from + # libc++/libc++abi. + set(use_cxxabi_default OFF) +elseif(MSVC) + set(use_cxxabi_default OFF) +else() + set(use_cxxabi_default ON) +endif() + +option(SANITIZER_CAN_USE_CXXABI "Sanitizers can use cxxabi" ${use_cxxabi_default}) +pythonize_bool(SANITIZER_CAN_USE_CXXABI) + #================================ # Setup Compiler Flags #================================ @@ -204,17 +217,6 @@ append_list_if(COMPILER_RT_HAS_WD4800_FLAG /wd4800 SANITIZER_COMMON_CFLAGS) # Warnings to turn off for all libraries, not just sanitizers. append_string_if(COMPILER_RT_HAS_WUNUSED_PARAMETER_FLAG -Wno-unused-parameter CMAKE_C_FLAGS CMAKE_CXX_FLAGS) -if(APPLE AND SANITIZER_MIN_OSX_VERSION VERSION_LESS "10.9") - # Mac OS X prior to 10.9 had problems with exporting symbols from - # libc++/libc++abi. - set(SANITIZER_CAN_USE_CXXABI FALSE) -elseif(MSVC) - set(SANITIZER_CAN_USE_CXXABI FALSE) -else() - set(SANITIZER_CAN_USE_CXXABI TRUE) -endif() -pythonize_bool(SANITIZER_CAN_USE_CXXABI) - add_subdirectory(include) set(COMPILER_RT_LIBCXX_PATH ${LLVM_MAIN_SRC_DIR}/projects/libcxx) diff --git a/compiler-rt/lib/ubsan/ubsan_type_hash_itanium.cc b/compiler-rt/lib/ubsan/ubsan_type_hash_itanium.cc index 26272e3..f5b3cca 100644 --- a/compiler-rt/lib/ubsan/ubsan_type_hash_itanium.cc +++ b/compiler-rt/lib/ubsan/ubsan_type_hash_itanium.cc @@ -13,7 +13,7 @@ #include "sanitizer_common/sanitizer_platform.h" #include "ubsan_platform.h" -#if CAN_SANITIZE_UB && !SANITIZER_WINDOWS +#if CAN_SANITIZE_UB && UBSAN_CAN_USE_CXXABI #include "ubsan_type_hash.h" #include "sanitizer_common/sanitizer_common.h" -- 2.7.4