[libc++abi] Fix ASAN build with older compiler-rt versions.

Summary:
compiler-rt recently added the `__asan_handle_no_return()` function that libc++abi needs to use, however older versions of compiler-rt don't provide this interface and that breaks the libc++abi build.

This patch attempts to fix the issues by using a macro to detect if `asan_interface.h` is new enough to provide the function.

See D37871

Reviewers: phosek, vitalybuka

Reviewed By: phosek, vitalybuka

Subscribers: dberris, cfe-commits

Differential Revision: https://reviews.llvm.org/D37872

llvm-svn: 313304
This commit is contained in:
Eric Fiselier
2017-09-14 22:19:28 +00:00
parent 6892062f7c
commit 8635f7d2c6

View File

@@ -222,7 +222,8 @@ __cxa_throw(void *thrown_object, std::type_info *tinfo, void (*dest)(void *)) {
exception_header->unwindHeader.exception_cleanup = exception_cleanup_func;
#if __has_feature(address_sanitizer)
#if __has_feature(address_sanitizer) && \
defined(SANITIZER_ASAN_INTERFACE_HAS_HANDLE_NO_RETURN)
// Inform the ASan runtime that now might be a good time to clean stuff up.
__asan_handle_no_return();
#endif