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
23enum MacosVersion {
24  MACOS_VERSION_UNINITIALIZED = 0,
25  MACOS_VERSION_UNKNOWN,
26  MACOS_VERSION_LEOPARD,
27  MACOS_VERSION_SNOW_LEOPARD,
28  MACOS_VERSION_LION,
29  MACOS_VERSION_MOUNTAIN_LION,
30  MACOS_VERSION_MAVERICKS,
31  MACOS_VERSION_YOSEMITE,
32  MACOS_VERSION_UNKNOWN_NEWER
33};
34
35MacosVersion GetMacosVersion();
36
37char **GetEnviron();
38
39}  // namespace __sanitizer
40
41extern "C" {
42static char __crashreporter_info_buff__[kErrorMessageBufferSize] = {};
43static const char *__crashreporter_info__ __attribute__((__used__)) =
44  &__crashreporter_info_buff__[0];
45asm(".desc ___crashreporter_info__, 0x10");
46} // extern "C"
47static BlockingMutex crashreporter_info_mutex(LINKER_INITIALIZED);
48
49INLINE void CRAppendCrashLogMessage(const char *msg) {
50  BlockingMutexLock l(&crashreporter_info_mutex);
51  internal_strlcat(__crashreporter_info_buff__, msg,
52                   sizeof(__crashreporter_info_buff__)); }
53
54#endif  // SANITIZER_MAC
55#endif  // SANITIZER_MAC_H
56