Index: compiler-rt/trunk/lib/tsan/CMakeLists.txt =================================================================== --- compiler-rt/trunk/lib/tsan/CMakeLists.txt +++ compiler-rt/trunk/lib/tsan/CMakeLists.txt @@ -92,7 +92,7 @@ SHARED OS ${TSAN_SUPPORTED_OS} ARCHS ${TSAN_SUPPORTED_ARCH} - SOURCES ${TSAN_SOURCES} + SOURCES ${TSAN_SOURCES} ${TSAN_CXX_SOURCES} OBJECT_LIBS RTInterception RTSanitizerCommon RTSanitizerCommonLibc Index: compiler-rt/trunk/lib/tsan/rtl/tsan_new_delete.cc =================================================================== --- compiler-rt/trunk/lib/tsan/rtl/tsan_new_delete.cc +++ compiler-rt/trunk/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 @@ 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); \