diff options
author | Iain Sandoe <iain@sandoe.co.uk> | 2021-05-13 19:43:09 +0100 |
---|---|---|
committer | Iain Sandoe <iain@sandoe.co.uk> | 2021-05-13 21:18:18 +0100 |
commit | adab7b2bf42b469e51154a09a1b4fa0726a7073c (patch) | |
tree | 661c471556c06a3bf4f9a88ea7beeeb943bd3e0f | |
parent | 8aa8a2af8fdc2e0939c0d803bd45b45d251e1a3f (diff) | |
download | gcc-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.
-rw-r--r-- | libsanitizer/sanitizer_common/sanitizer_mac.cpp | 10 |
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> |