1//===-- sanitizer_mac.h -----------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file is shared between various sanitizers' runtime libraries and 11// provides definitions for OSX-specific functions. 12//===----------------------------------------------------------------------===// 13#ifndef SANITIZER_MAC_H 14#define SANITIZER_MAC_H 15 16#include "sanitizer_common.h" 17#include "sanitizer_platform.h" 18#if SANITIZER_MAC 19#include "sanitizer_posix.h" 20 21namespace __sanitizer { 22 23struct MemoryMappingLayoutData { 24 int current_image; 25 u32 current_magic; 26 u32 current_filetype; 27 ModuleArch current_arch; 28 u8 current_uuid[kModuleUUIDSize]; 29 int current_load_cmd_count; 30 const char *current_load_cmd_addr; 31 bool current_instrumented; 32}; 33 34enum MacosVersion { 35 MACOS_VERSION_UNINITIALIZED = 0, 36 MACOS_VERSION_UNKNOWN, 37 MACOS_VERSION_LEOPARD, 38 MACOS_VERSION_SNOW_LEOPARD, 39 MACOS_VERSION_LION, 40 MACOS_VERSION_MOUNTAIN_LION, 41 MACOS_VERSION_MAVERICKS, 42 MACOS_VERSION_YOSEMITE, 43 MACOS_VERSION_EL_CAPITAN, 44 MACOS_VERSION_SIERRA, 45 MACOS_VERSION_HIGH_SIERRA, 46 MACOS_VERSION_HIGH_SIERRA_DOT_RELEASE_4, 47 MACOS_VERSION_MOJAVE, 48 MACOS_VERSION_UNKNOWN_NEWER 49}; 50 51MacosVersion GetMacosVersion(); 52 53char **GetEnviron(); 54 55void RestrictMemoryToMaxAddress(uptr max_address); 56 57} // namespace __sanitizer 58 59extern "C" { 60static char __crashreporter_info_buff__[__sanitizer::kErrorMessageBufferSize] = 61 {}; 62static const char *__crashreporter_info__ __attribute__((__used__)) = 63 &__crashreporter_info_buff__[0]; 64asm(".desc ___crashreporter_info__, 0x10"); 65} // extern "C" 66 67namespace __sanitizer { 68static BlockingMutex crashreporter_info_mutex(LINKER_INITIALIZED); 69 70INLINE void CRAppendCrashLogMessage(const char *msg) { 71 BlockingMutexLock l(&crashreporter_info_mutex); 72 internal_strlcat(__crashreporter_info_buff__, msg, 73 sizeof(__crashreporter_info_buff__)); } 74} // namespace __sanitizer 75 76#endif // SANITIZER_MAC 77#endif // SANITIZER_MAC_H 78