From 3a618b03172f715774ce1e74a914ce7af47e5a94 Mon Sep 17 00:00:00 2001 From: Kuba Brecka <kuba.brecka@gmail.com> Date: Fri, 6 Nov 2015 11:07:26 +0000 Subject: [PATCH] [tsan] Enable new/delete C++ interceptors for OS X This patch adds `tsan_new_delete.cc` into the OS X build. Differential Revision: http://reviews.llvm.org/D14424 llvm-svn: 252284 --- compiler-rt/lib/tsan/CMakeLists.txt | 2 +- compiler-rt/lib/tsan/rtl/tsan_new_delete.cc | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/compiler-rt/lib/tsan/CMakeLists.txt b/compiler-rt/lib/tsan/CMakeLists.txt index 6971a0fee166..cbfca5ce281b 100644 --- a/compiler-rt/lib/tsan/CMakeLists.txt +++ b/compiler-rt/lib/tsan/CMakeLists.txt @@ -92,7 +92,7 @@ if(APPLE) SHARED OS ${TSAN_SUPPORTED_OS} ARCHS ${TSAN_SUPPORTED_ARCH} - SOURCES ${TSAN_SOURCES} + SOURCES ${TSAN_SOURCES} ${TSAN_CXX_SOURCES} OBJECT_LIBS RTInterception RTSanitizerCommon RTSanitizerCommonLibc diff --git a/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc b/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc index d3ac472b7dcd..18ba9082c4ac 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc +++ b/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc @@ -12,6 +12,7 @@ // Interceptors for operators new and delete. //===----------------------------------------------------------------------===// #include "sanitizer_common/sanitizer_internal_defs.h" +#include "interception/interception.h" #include "tsan_interceptors.h" using namespace __tsan; // NOLINT @@ -20,6 +21,13 @@ namespace std { struct nothrow_t {}; } // namespace std +DECLARE_REAL(void *, malloc, uptr size) +DECLARE_REAL(void, free, void *ptr) +#if SANITIZER_MAC +#define __libc_malloc REAL(malloc) +#define __libc_free REAL(free) +#endif + #define OPERATOR_NEW_BODY(mangled_name) \ if (cur_thread()->in_symbolizer) \ return __libc_malloc(size); \