blob: 2395ea5056571f0722b5ca96fad6c5e7935f41a2 [file] [log] [blame]
Alexey Samsonov0a4c9062012-06-05 13:50:57 +00001//===-- sanitizer_interface_defs.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 AddressSanitizer and ThreadSanitizer.
11// It contains basic macro and types.
12// NOTE: This file may be included into user code.
13//===----------------------------------------------------------------------===//
14
15#ifndef SANITIZER_INTERFACE_DEFS_H
16#define SANITIZER_INTERFACE_DEFS_H
17
18// ----------- ATTENTION -------------
19// This header should NOT include any other headers to avoid portability issues.
20
21#if defined(_WIN32)
22// FIXME find out what we need on Windows. __declspec(dllexport) ?
23# define SANITIZER_INTERFACE_ATTRIBUTE
24# define SANITIZER_WEAK_ATTRIBUTE
Dmitry Vyukovb78caa62012-07-05 16:18:28 +000025#elif defined(SANITIZER_GO)
26# define SANITIZER_INTERFACE_ATTRIBUTE
27# define SANITIZER_WEAK_ATTRIBUTE
28#else
Alexey Samsonov0a4c9062012-06-05 13:50:57 +000029# define SANITIZER_INTERFACE_ATTRIBUTE __attribute__((visibility("default")))
30# define SANITIZER_WEAK_ATTRIBUTE __attribute__((weak))
Dmitry Vyukovb78caa62012-07-05 16:18:28 +000031#endif
Alexey Samsonov0a4c9062012-06-05 13:50:57 +000032
33// __has_feature
34#if !defined(__has_feature)
35# define __has_feature(x) 0
36#endif
37
38// For portability reasons we do not include stddef.h, stdint.h or any other
39// system header, but we do need some basic types that are not defined
40// in a portable way by the language itself.
41namespace __sanitizer {
42
43typedef unsigned long uptr; // NOLINT
44typedef signed long sptr; // NOLINT
45typedef unsigned char u8;
46typedef unsigned short u16; // NOLINT
47typedef unsigned int u32;
48typedef unsigned long long u64; // NOLINT
49typedef signed char s8;
50typedef signed short s16; // NOLINT
51typedef signed int s32;
52typedef signed long long s64; // NOLINT
53
54} // namespace __sanitizer
55
56#endif // SANITIZER_INTERFACE_DEFS_H