Skip to content

Commit c198c14

Browse files
authored
[sanitizer_common] Use os_log for DriverKit as os_log_error is undefined (#148848)
DriverKit doesn't define `os_log_error`, so fails to build. Fallback to `os_log` if on DriverKit. rdar://140295247
1 parent 8c7e1ab commit c198c14

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -769,11 +769,17 @@ void internal_join_thread(void *th) { pthread_join((pthread_t)th, 0); }
769769
static Mutex syslog_lock;
770770
# endif
771771

772+
# if SANITIZER_DRIVERKIT
773+
# define SANITIZER_OS_LOG os_log
774+
# else
775+
# define SANITIZER_OS_LOG os_log_error
776+
# endif
777+
772778
void WriteOneLineToSyslog(const char *s) {
773779
#if !SANITIZER_GO
774780
syslog_lock.CheckLocked();
775781
if (GetMacosAlignedVersion() >= MacosVersion(10, 12)) {
776-
os_log_error(OS_LOG_DEFAULT, "%{public}s", s);
782+
SANITIZER_OS_LOG(OS_LOG_DEFAULT, "%{public}s", s);
777783
} else {
778784
#pragma clang diagnostic push
779785
// as_log is deprecated.
@@ -837,22 +843,22 @@ void LogMessageOnPrintf(const char *str) {
837843

838844
void LogFullErrorReport(const char *buffer) {
839845
# if !SANITIZER_GO
840-
// Log with os_log_error. This will make it into the crash log.
846+
// When logging with os_log_error this will make it into the crash log.
841847
if (internal_strncmp(SanitizerToolName, "AddressSanitizer",
842848
sizeof("AddressSanitizer") - 1) == 0)
843-
os_log_error(OS_LOG_DEFAULT, "Address Sanitizer reported a failure.");
849+
SANITIZER_OS_LOG(OS_LOG_DEFAULT, "Address Sanitizer reported a failure.");
844850
else if (internal_strncmp(SanitizerToolName, "UndefinedBehaviorSanitizer",
845851
sizeof("UndefinedBehaviorSanitizer") - 1) == 0)
846-
os_log_error(OS_LOG_DEFAULT,
847-
"Undefined Behavior Sanitizer reported a failure.");
852+
SANITIZER_OS_LOG(OS_LOG_DEFAULT,
853+
"Undefined Behavior Sanitizer reported a failure.");
848854
else if (internal_strncmp(SanitizerToolName, "ThreadSanitizer",
849855
sizeof("ThreadSanitizer") - 1) == 0)
850-
os_log_error(OS_LOG_DEFAULT, "Thread Sanitizer reported a failure.");
856+
SANITIZER_OS_LOG(OS_LOG_DEFAULT, "Thread Sanitizer reported a failure.");
851857
else
852-
os_log_error(OS_LOG_DEFAULT, "Sanitizer tool reported a failure.");
858+
SANITIZER_OS_LOG(OS_LOG_DEFAULT, "Sanitizer tool reported a failure.");
853859

854860
if (common_flags()->log_to_syslog)
855-
os_log_error(OS_LOG_DEFAULT, "Consult syslog for more information.");
861+
SANITIZER_OS_LOG(OS_LOG_DEFAULT, "Consult syslog for more information.");
856862

857863
// Log to syslog.
858864
// The logging on OS X may call pthread_create so we need the threading

0 commit comments

Comments
 (0)