aboutsummaryrefslogtreecommitdiff
path: root/libsanitizer
diff options
context:
space:
mode:
authorIain Sandoe <iain@sandoe.co.uk>2021-05-13 19:43:09 +0100
committerIain Sandoe <iain@sandoe.co.uk>2021-05-13 21:18:18 +0100
commitadab7b2bf42b469e51154a09a1b4fa0726a7073c (patch)
tree661c471556c06a3bf4f9a88ea7beeeb943bd3e0f /libsanitizer
parent8aa8a2af8fdc2e0939c0d803bd45b45d251e1a3f (diff)
downloadgcc-adab7b2bf42b469e51154a09a1b4fa0726a7073c.zip
gcc-adab7b2bf42b469e51154a09a1b4fa0726a7073c.tar.gz
gcc-adab7b2bf42b469e51154a09a1b4fa0726a7073c.tar.bz2
libsanitizer, Darwin : Handle missing __builtin_os_log_format.
GCC does not, currently, define __builtin_os_log_format, which is needed by os/log.h. Do not include that header unless the builtin is defined (since the header errors out on the same condition). Provide a work-around solution to the missing API provided via the header. libsanitizer/ChangeLog: * sanitizer_common/sanitizer_mac.cpp : Check for the availability of __builtin_os_log_format before trying to include a header depending on it. (OS_LOG_DEFAULT): New. (os_log_error): Define to a fall-back using an older API.
Diffstat (limited to 'libsanitizer')
-rw-r--r--libsanitizer/sanitizer_common/sanitizer_mac.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/libsanitizer/sanitizer_common/sanitizer_mac.cpp b/libsanitizer/sanitizer_common/sanitizer_mac.cpp
index f455856..30a94fc 100644
--- a/libsanitizer/sanitizer_common/sanitizer_mac.cpp
+++ b/libsanitizer/sanitizer_common/sanitizer_mac.cpp
@@ -70,7 +70,15 @@ extern "C" {
#include <mach/mach_time.h>
#include <mach/vm_statistics.h>
#include <malloc/malloc.h>
-#include <os/log.h>
+#if defined(__has_builtin) && __has_builtin(__builtin_os_log_format)
+# include <os/log.h>
+#else
+ /* Without support for __builtin_os_log_format, fall back to the older
+ method. */
+# define OS_LOG_DEFAULT 0
+# define os_log_error(A,B,C) \
+ asl_log(nullptr, nullptr, ASL_LEVEL_ERR, "%s", (C));
+#endif
#include <pthread.h>
#include <sched.h>
#include <signal.h>