summaryrefslogtreecommitdiffstats
path: root/libcxx/lib
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2015-07-22 00:33:36 +0000
committerEric Fiselier <eric@efcs.ca>2015-07-22 00:33:36 +0000
commitd1bac4ce57f2d0581bd66a9fe4a4233885c456b8 (patch)
tree3de57f00ca196f2b7f1c260e5428d1f4d77006a3 /libcxx/lib
parentf179e36e0e2c0ca8a28815c95758c3e44ad08fc6 (diff)
downloadbcm5719-llvm-d1bac4ce57f2d0581bd66a9fe4a4233885c456b8.tar.gz
bcm5719-llvm-d1bac4ce57f2d0581bd66a9fe4a4233885c456b8.zip
[libcxx] Add support for sanitizers on OS X.
Summary: This patch adds special configuration logic to find the compiler_rt libraries required by sanitizers on OS X. The supported sanitizers are Address and Undefined. Reviewers: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D11381 llvm-svn: 242858
Diffstat (limited to 'libcxx/lib')
-rw-r--r--libcxx/lib/CMakeLists.txt26
1 files changed, 26 insertions, 0 deletions
diff --git a/libcxx/lib/CMakeLists.txt b/libcxx/lib/CMakeLists.txt
index d3d5f381d81..a32f2931447 100644
--- a/libcxx/lib/CMakeLists.txt
+++ b/libcxx/lib/CMakeLists.txt
@@ -68,6 +68,32 @@ if (LIBCXX_COVERAGE_LIBRARY)
endif()
target_link_libraries(cxx ${libraries})
+if (APPLE AND LLVM_USE_SANITIZER)
+ if ("${LLVM_USE_SANITIZER}" STREQUAL "Address")
+ set(LIBFILE "libclang_rt.asan_osx_dynamic.dylib")
+ elseif("${LLVM_USE_SANITIZER}" STREQUAL "Undefined")
+ set(LIBFILE "libclang_rt.ubsan_osx_dynamic.dylib")
+ else()
+ message(WARNING "LLVM_USE_SANITIZER=${LLVM_USE_SANITIZER} is not supported on OS X")
+ endif()
+ if (LIBFILE)
+ execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=lib OUTPUT_VARIABLE LIBDIR RESULT_VARIABLE Result)
+ if (NOT ${Result} EQUAL "0")
+ message(FATAL "Failed to find library resource directory")
+ endif()
+ string(STRIP "${LIBDIR}" LIBDIR)
+ set(LIBDIR "${LIBDIR}/darwin/")
+ if (NOT IS_DIRECTORY "${LIBDIR}")
+ message(FATAL_ERROR "Cannot find compiler-rt directory on OS X required for LLVM_USE_SANITIZER")
+ endif()
+ set(LIBCXX_SANITIZER_LIBRARY "${LIBDIR}/${LIBFILE}")
+ set(LIBCXX_SANITIZER_LIBRARY "${LIBCXX_SANITIZER_LIBRARY}" PARENT_SCOPE)
+ message(STATUS "Manually linking compiler-rt library: ${LIBCXX_SANITIZER_LIBRARY}")
+ target_link_libraries(cxx "${LIBCXX_SANITIZER_LIBRARY}")
+ target_link_libraries(cxx "-Wl,-rpath,${LIBDIR}")
+ endif()
+endif()
+
# Setup flags.
append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_FPIC_FLAG -fPIC)
OpenPOWER on IntegriCloud