1//===-- sanitizer/common_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_COMMON_INTERFACE_DEFS_H 16#define SANITIZER_COMMON_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#elif defined(SANITIZER_GO) 26# define SANITIZER_INTERFACE_ATTRIBUTE 27# define SANITIZER_WEAK_ATTRIBUTE 28#else 29# define SANITIZER_INTERFACE_ATTRIBUTE __attribute__((visibility("default"))) 30# define SANITIZER_WEAK_ATTRIBUTE __attribute__((weak)) 31#endif 32 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_COMMON_INTERFACE_DEFS_H 57