sanitizer_platform_interceptors.h revision ea72768894e32f367607c2142a7dfab603310da0
1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//===-- sanitizer_platform_interceptors.h -----------------------*- C++ -*-===//
2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//
3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//
5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source
6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// License. See LICENSE.TXT for details.
7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//
8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//===----------------------------------------------------------------------===//
9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//
10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// This file defines macro telling whether sanitizer tools can/should intercept
11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// given library functions on a given platform.
12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//
13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//===----------------------------------------------------------------------===//
14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#ifndef SANITIZER_PLATFORM_INTERCEPTORS_H
15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define SANITIZER_PLATFORM_INTERCEPTORS_H
16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "sanitizer_internal_defs.h"
18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if !SANITIZER_WINDOWS
20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SI_NOT_WINDOWS 1
21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# include "sanitizer_platform_limits_posix.h"
22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#else
23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SI_NOT_WINDOWS 0
24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif
25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if SANITIZER_LINUX && !SANITIZER_ANDROID
27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SI_LINUX_NOT_ANDROID 1
28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#else
29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SI_LINUX_NOT_ANDROID 0
30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif
31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if SANITIZER_LINUX
33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SI_LINUX 1
34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#else
35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SI_LINUX 0
36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif
37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if SANITIZER_MAC
39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SI_MAC 1
40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#else
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SI_MAC 0
42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif
43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
44effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_STRCASECMP SI_NOT_WINDOWS
45effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_READ   SI_NOT_WINDOWS
47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_PREAD  SI_NOT_WINDOWS
48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_WRITE  SI_NOT_WINDOWS
49a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_PWRITE SI_NOT_WINDOWS
50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define SANITIZER_INTERCEPT_PREAD64 SI_LINUX_NOT_ANDROID
52a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define SANITIZER_INTERCEPT_PWRITE64 SI_LINUX_NOT_ANDROID
53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define SANITIZER_INTERCEPT_READV SI_NOT_WINDOWS
55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define SANITIZER_INTERCEPT_WRITEV SI_NOT_WINDOWS
56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
57effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define SANITIZER_INTERCEPT_PREADV SI_LINUX_NOT_ANDROID
58effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define SANITIZER_INTERCEPT_PWRITEV SI_LINUX_NOT_ANDROID
59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define SANITIZER_INTERCEPT_PREADV64 SI_LINUX_NOT_ANDROID
60a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define SANITIZER_INTERCEPT_PWRITEV64 SI_LINUX_NOT_ANDROID
61a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
62a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_PRCTL   SI_LINUX
63a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
64a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_LOCALTIME_AND_FRIENDS SI_NOT_WINDOWS
65effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
66effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_SCANF SI_NOT_WINDOWS
67effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_ISOC99_SCANF SI_LINUX
68effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
69effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_FREXP 1
70a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_FREXPF_FREXPL SI_NOT_WINDOWS
71a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
72a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_GETPWNAM_AND_FRIENDS SI_NOT_WINDOWS
73a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_GETPWNAM_R_AND_FRIENDS \
74effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    SI_MAC || SI_LINUX_NOT_ANDROID
75effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_CLOCK_GETTIME SI_LINUX
76effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_GETITIMER SI_NOT_WINDOWS
77effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_TIME SI_NOT_WINDOWS
78effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_GLOB SI_LINUX_NOT_ANDROID
79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_WAIT SI_NOT_WINDOWS
80a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_INET SI_NOT_WINDOWS
81a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_PTHREAD_GETSCHEDPARAM SI_NOT_WINDOWS
82a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_GETADDRINFO SI_NOT_WINDOWS
83effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_GETNAMEINFO SI_NOT_WINDOWS
84effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_GETSOCKNAME SI_NOT_WINDOWS
85effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_GETHOSTBYNAME SI_NOT_WINDOWS
86effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_GETHOSTBYNAME_R SI_LINUX
87effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_GETSOCKOPT SI_NOT_WINDOWS
88effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_ACCEPT SI_NOT_WINDOWS
89a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_ACCEPT4 SI_LINUX
90a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_MODF SI_NOT_WINDOWS
91a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_RECVMSG SI_NOT_WINDOWS
92a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_GETPEERNAME SI_NOT_WINDOWS
93effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_IOCTL SI_NOT_WINDOWS
94effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_INET_ATON SI_NOT_WINDOWS
95effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_SYSINFO SI_LINUX
96effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_READDIR SI_NOT_WINDOWS
97effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_READDIR64 SI_LINUX_NOT_ANDROID
98effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_PTRACE SI_LINUX_NOT_ANDROID
99effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_SETLOCALE SI_NOT_WINDOWS
100effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch# define SANITIZER_INTERCEPT_GETCWD SI_NOT_WINDOWS
101a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_GET_CURRENT_DIR_NAME SI_LINUX
102a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_STRTOIMAX SI_NOT_WINDOWS
103a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_MBSTOWCS SI_NOT_WINDOWS
104a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_MBSNRTOWCS SI_MAC || SI_LINUX_NOT_ANDROID
105a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_WCSTOMBS SI_NOT_WINDOWS
106a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_WCSNRTOMBS SI_MAC || SI_LINUX_NOT_ANDROID
107a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# define SANITIZER_INTERCEPT_TCGETATTR SI_LINUX
108a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
109a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif  // #ifndef SANITIZER_PLATFORM_INTERCEPTORS_H
110a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)