From 2d509539dbc127b44a6b1d7b52057f4fe2dc7e87 Mon Sep 17 00:00:00 2001 From: Rainer Orth Date: Wed, 17 Jan 2018 19:31:43 +0000 Subject: [PATCH] Guard against undefined weak symbols before Mac OS X 10.9 (PR sanitizer/82825) PR sanitizer/82825 * sanitizer_common/sanitizer_internal_defs.h: Cherry-pick upstream r??????. From-SVN: r256813 --- libsanitizer/ChangeLog | 6 ++++++ libsanitizer/sanitizer_common/sanitizer_internal_defs.h | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog index 2f57f6acd82..0f2192aed4d 100644 --- a/libsanitizer/ChangeLog +++ b/libsanitizer/ChangeLog @@ -1,3 +1,9 @@ +2018-01-17 Rainer Orth + + PR sanitizer/82825 + * sanitizer_common/sanitizer_internal_defs.h: Cherry-pick upstream + r??????. + 2018-01-13 Rainer Orth PR sanitizer/82824 diff --git a/libsanitizer/sanitizer_common/sanitizer_internal_defs.h b/libsanitizer/sanitizer_common/sanitizer_internal_defs.h index ef405dec048..edd6a21c122 100644 --- a/libsanitizer/sanitizer_common/sanitizer_internal_defs.h +++ b/libsanitizer/sanitizer_common/sanitizer_internal_defs.h @@ -63,7 +63,13 @@ // SANITIZER_SUPPORTS_WEAK_HOOKS means that we support real weak functions that // will evaluate to a null pointer when not defined. #ifndef SANITIZER_SUPPORTS_WEAK_HOOKS -#if (SANITIZER_LINUX || SANITIZER_MAC) && !SANITIZER_GO +#if SANITIZER_LINUX && !SANITIZER_GO +# define SANITIZER_SUPPORTS_WEAK_HOOKS 1 +// Before Xcode 4.5, the Darwin linker doesn't reliably support undefined +// weak symbols. Mac OS X 10.9/Darwin 13 is the first release only supported +// by Xcode >= 4.5. +#elif SANITIZER_MAC && \ + __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090 && !SANITIZER_GO # define SANITIZER_SUPPORTS_WEAK_HOOKS 1 #else # define SANITIZER_SUPPORTS_WEAK_HOOKS 0 -- 2.30.2