Index: libcxx/src/new.cpp =================================================================== --- libcxx/src/new.cpp +++ libcxx/src/new.cpp @@ -55,7 +55,10 @@ #if !defined(__GLIBCXX__) && \ !defined(_LIBCPP_ABI_VCRUNTIME) && \ - !defined(_LIBCPP_DISABLE_NEW_DELETE_DEFINITIONS) + !defined(_LIBCPP_DISABLE_NEW_DELETE_DEFINITIONS) && \ + !__has_feature(address_sanitizer) && \ + !__has_feature(hwaddress_sanitizer) && \ + !__has_feature(thread_sanitizer) // Implement all new and delete operators as weak definitions // in this shared library, so that they can be overridden by programs @@ -298,4 +301,4 @@ } #endif // !_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION -#endif // !__GLIBCXX__ && !_LIBCPP_ABI_VCRUNTIME && !_LIBCPP_DISABLE_NEW_DELETE_DEFINITIONS +#endif // !__GLIBCXX__ && !_LIBCPP_ABI_VCRUNTIME && !_LIBCPP_DISABLE_NEW_DELETE_DEFINITIONS && !address_sanitizer && !hwaddress_sanitizer && !thread_sanitizer Index: libcxxabi/src/stdlib_new_delete.cpp =================================================================== --- libcxxabi/src/stdlib_new_delete.cpp +++ libcxxabi/src/stdlib_new_delete.cpp @@ -17,6 +17,11 @@ #error The _THROW_BAD_ALLOC, _NOEXCEPT, and _LIBCXXABI_WEAK libc++ macros must \ already be defined by libc++. #endif + +#if !__has_feature(address_sanitizer) && \ + !__has_feature(hwaddress_sanitizer) && \ + !__has_feature(thread_sanitizer) + // Implement all new and delete operators as weak definitions // in this shared library, so that they can be overridden by programs // that define non-weak copies of the functions. @@ -259,4 +264,6 @@ ::operator delete[](ptr, alignment); } +#endif // !address_sanitizer && !hwaddress_sanitizer && !thread_sanitizer + #endif // !_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION