Hi

The latest upstream merge for libsanitizer introduces code that makes
use of some macro values that are not available in SDKs for versions
of Darwin <= 15 (macOS 10.11).

[TBH, I am a bit surprised by this, I was under the impression that upstream
 supported versions back to Darwin11 / macOS 10.7]

Add definitions for these where they are not present.

tested on Darwin9 -> Darwin19 and x86_64-linux
pushed to master
thanks
Iain

P.S. I will also add this change to LOCAL_PATCHES.

libsanitizer/ChangeLog:

        * sanitizer_common/sanitizer_mac.h: Ensure that TARGET_OS_
        macros are defined where the macOS SDK does not contain
        them.
        (TARGET_OS_OSX, TARGET_OS_IOS, TARGET_OS_TV, TARGET_OS_WATCH):
        Define where needed.
---
 libsanitizer/sanitizer_common/sanitizer_mac.h | 20 +++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/libsanitizer/sanitizer_common/sanitizer_mac.h 
b/libsanitizer/sanitizer_common/sanitizer_mac.h
index 023071e4f11..a2c42b3bf4f 100644
--- a/libsanitizer/sanitizer_common/sanitizer_mac.h
+++ b/libsanitizer/sanitizer_common/sanitizer_mac.h
@@ -14,6 +14,26 @@
 
 #include "sanitizer_common.h"
 #include "sanitizer_platform.h"
+
+/* TARGET_OS_OSX is not present in SDKs before Darwin16 (macOS 10.12) use
+   TARGET_OS_MAC (we have no support for iOS in any form for these versions,
+   so there's no ambiguity).  */
+#if !defined(TARGET_OS_OSX) && TARGET_OS_MAC
+# define TARGET_OS_OSX 1
+#endif
+
+/* Other TARGET_OS_xxx are not present on earlier versions, define them to
+   0 (we have no support for them; they are not valid targets anyway).  */
+#ifndef TARGET_OS_IOS
+#define TARGET_OS_IOS 0
+#endif
+#ifndef TARGET_OS_TV
+#define TARGET_OS_TV 0
+#endif
+#ifndef TARGET_OS_WATCH
+#define TARGET_OS_WATCH 0
+#endif
+
 #if SANITIZER_MAC
 #include "sanitizer_posix.h"
 
-- 
2.24.1

Reply via email to