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