diff --git a/libunwind/src/libunwind.cpp b/libunwind/src/libunwind.cpp --- a/libunwind/src/libunwind.cpp +++ b/libunwind/src/libunwind.cpp @@ -16,7 +16,15 @@ #include -#if __has_feature(address_sanitizer) +#if defined(__has_feature) +#define has_asan_portable __has_feature(address_sanitizer) +#elif defined(__SANITIZE_ADDRESS__) +#define has_asan_portable __SANITIZE_ADDRESS__ +#else +#define has_asan_portable 0 +#endif + +#if has_asan_portable #include #endif @@ -187,7 +195,7 @@ /// Resume execution at cursor position (aka longjump). _LIBUNWIND_HIDDEN int __unw_resume(unw_cursor_t *cursor) { _LIBUNWIND_TRACE_API("__unw_resume(cursor=%p)", static_cast(cursor)); -#if __has_feature(address_sanitizer) +#if has_asan_portable // Inform the ASan runtime that now might be a good time to clean stuff up. __asan_handle_no_return(); #endif