blob: ae53276862531821724a9ee2a92e9a52293dd339 [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
25#else // _WIN32
26# define SANITIZER_INTERFACE_ATTRIBUTE __attribute__((visibility("default")))
27# define SANITIZER_WEAK_ATTRIBUTE __attribute__((weak))
28#endif // _WIN32
29
30// __has_feature
31#if !defined(__has_feature)
32# define __has_feature(x) 0
33#endif
34
35// For portability reasons we do not include stddef.h, stdint.h or any other
36// system header, but we do need some basic types that are not defined
37// in a portable way by the language itself.
38namespace __sanitizer {
39
40typedef unsigned long uptr; // NOLINT
41typedef signed long sptr; // NOLINT
42typedef unsigned char u8;
43typedef unsigned short u16; // NOLINT
44typedef unsigned int u32;
45typedef unsigned long long u64; // NOLINT
46typedef signed char s8;
47typedef signed short s16; // NOLINT
48typedef signed int s32;
49typedef signed long long s64; // NOLINT
50
51} // namespace __sanitizer
52
53#endif // SANITIZER_INTERFACE_DEFS_H