Alexey Samsonov | 74737d5 | 2012-12-13 08:50:16 +0000 | [diff] [blame] | 1 | //===-- sanitizer_platform_interceptors.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 defines macro telling whether sanitizer tools can/should intercept |
| 11 | // given library functions on a given platform. |
| 12 | // |
| 13 | //===----------------------------------------------------------------------===// |
Dmitry Vyukov | edd2821 | 2013-04-24 11:06:05 +0000 | [diff] [blame] | 14 | #ifndef SANITIZER_PLATFORM_INTERCEPTORS_H |
| 15 | #define SANITIZER_PLATFORM_INTERCEPTORS_H |
Alexey Samsonov | 74737d5 | 2012-12-13 08:50:16 +0000 | [diff] [blame] | 16 | |
| 17 | #include "sanitizer_internal_defs.h" |
| 18 | |
Evgeniy Stepanov | 24e1372 | 2013-03-19 14:33:38 +0000 | [diff] [blame] | 19 | #if !SANITIZER_WINDOWS |
Kostya Serebryany | c20b321 | 2013-01-18 06:43:13 +0000 | [diff] [blame] | 20 | # define SI_NOT_WINDOWS 1 |
Evgeniy Stepanov | 9358c58 | 2013-02-19 09:19:16 +0000 | [diff] [blame] | 21 | # include "sanitizer_platform_limits_posix.h" |
Alexey Samsonov | 74737d5 | 2012-12-13 08:50:16 +0000 | [diff] [blame] | 22 | #else |
Kostya Serebryany | c20b321 | 2013-01-18 06:43:13 +0000 | [diff] [blame] | 23 | # define SI_NOT_WINDOWS 0 |
Alexey Samsonov | 74737d5 | 2012-12-13 08:50:16 +0000 | [diff] [blame] | 24 | #endif |
| 25 | |
Evgeniy Stepanov | 24e1372 | 2013-03-19 14:33:38 +0000 | [diff] [blame] | 26 | #if SANITIZER_LINUX && !SANITIZER_ANDROID |
Kostya Serebryany | c20b321 | 2013-01-18 06:43:13 +0000 | [diff] [blame] | 27 | # define SI_LINUX_NOT_ANDROID 1 |
Alexey Samsonov | 74737d5 | 2012-12-13 08:50:16 +0000 | [diff] [blame] | 28 | #else |
Kostya Serebryany | c20b321 | 2013-01-18 06:43:13 +0000 | [diff] [blame] | 29 | # define SI_LINUX_NOT_ANDROID 0 |
Alexey Samsonov | 74737d5 | 2012-12-13 08:50:16 +0000 | [diff] [blame] | 30 | #endif |
| 31 | |
Evgeniy Stepanov | 24e1372 | 2013-03-19 14:33:38 +0000 | [diff] [blame] | 32 | #if SANITIZER_LINUX |
Alexander Potapenko | 9eab858 | 2013-02-20 15:27:58 +0000 | [diff] [blame] | 33 | # define SI_LINUX 1 |
| 34 | #else |
| 35 | # define SI_LINUX 0 |
| 36 | #endif |
| 37 | |
Evgeniy Stepanov | e4bdda5 | 2013-04-01 14:47:21 +0000 | [diff] [blame] | 38 | #if SANITIZER_MAC |
| 39 | # define SI_MAC 1 |
| 40 | #else |
| 41 | # define SI_MAC 0 |
| 42 | #endif |
| 43 | |
Alexey Samsonov | 67505a8 | 2013-07-16 12:51:53 +0000 | [diff] [blame] | 44 | # define SANITIZER_INTERCEPT_STRCMP 1 |
Evgeniy Stepanov | f495479 | 2013-05-21 09:01:23 +0000 | [diff] [blame] | 45 | # define SANITIZER_INTERCEPT_STRCASECMP SI_NOT_WINDOWS |
| 46 | |
Kostya Serebryany | c20b321 | 2013-01-18 06:43:13 +0000 | [diff] [blame] | 47 | # define SANITIZER_INTERCEPT_READ SI_NOT_WINDOWS |
| 48 | # define SANITIZER_INTERCEPT_PREAD SI_NOT_WINDOWS |
| 49 | # define SANITIZER_INTERCEPT_WRITE SI_NOT_WINDOWS |
| 50 | # define SANITIZER_INTERCEPT_PWRITE SI_NOT_WINDOWS |
| 51 | |
Evgeniy Stepanov | b916e6a | 2013-06-24 10:43:23 +0000 | [diff] [blame] | 52 | #define SANITIZER_INTERCEPT_PREAD64 SI_LINUX_NOT_ANDROID |
| 53 | #define SANITIZER_INTERCEPT_PWRITE64 SI_LINUX_NOT_ANDROID |
| 54 | |
| 55 | #define SANITIZER_INTERCEPT_READV SI_NOT_WINDOWS |
| 56 | #define SANITIZER_INTERCEPT_WRITEV SI_NOT_WINDOWS |
| 57 | |
| 58 | #define SANITIZER_INTERCEPT_PREADV SI_LINUX_NOT_ANDROID |
| 59 | #define SANITIZER_INTERCEPT_PWRITEV SI_LINUX_NOT_ANDROID |
| 60 | #define SANITIZER_INTERCEPT_PREADV64 SI_LINUX_NOT_ANDROID |
| 61 | #define SANITIZER_INTERCEPT_PWRITEV64 SI_LINUX_NOT_ANDROID |
| 62 | |
Evgeniy Stepanov | a548059 | 2013-03-20 07:35:52 +0000 | [diff] [blame] | 63 | # define SANITIZER_INTERCEPT_PRCTL SI_LINUX |
Kostya Serebryany | c20b321 | 2013-01-18 06:43:13 +0000 | [diff] [blame] | 64 | |
Evgeniy Stepanov | 9358c58 | 2013-02-19 09:19:16 +0000 | [diff] [blame] | 65 | # define SANITIZER_INTERCEPT_LOCALTIME_AND_FRIENDS SI_NOT_WINDOWS |
| 66 | |
Evgeniy Stepanov | 5fffb9f | 2013-01-21 13:30:08 +0000 | [diff] [blame] | 67 | # define SANITIZER_INTERCEPT_SCANF SI_NOT_WINDOWS |
Alexander Potapenko | 9eab858 | 2013-02-20 15:27:58 +0000 | [diff] [blame] | 68 | # define SANITIZER_INTERCEPT_ISOC99_SCANF SI_LINUX |
Evgeniy Stepanov | 7cbbb29 | 2013-03-14 11:34:39 +0000 | [diff] [blame] | 69 | |
| 70 | # define SANITIZER_INTERCEPT_FREXP 1 |
Alexey Samsonov | ff5d1fc | 2013-03-15 14:02:21 +0000 | [diff] [blame] | 71 | # define SANITIZER_INTERCEPT_FREXPF_FREXPL SI_NOT_WINDOWS |
Evgeniy Stepanov | e4bdda5 | 2013-04-01 14:47:21 +0000 | [diff] [blame] | 72 | |
Evgeniy Stepanov | 103a63e | 2013-04-23 12:01:20 +0000 | [diff] [blame] | 73 | # define SANITIZER_INTERCEPT_GETPWNAM_AND_FRIENDS SI_NOT_WINDOWS |
| 74 | # define SANITIZER_INTERCEPT_GETPWNAM_R_AND_FRIENDS \ |
Alexey Samsonov | 8218584 | 2013-04-03 08:26:03 +0000 | [diff] [blame] | 75 | SI_MAC || SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | e4bdda5 | 2013-04-01 14:47:21 +0000 | [diff] [blame] | 76 | # define SANITIZER_INTERCEPT_CLOCK_GETTIME SI_LINUX |
| 77 | # define SANITIZER_INTERCEPT_GETITIMER SI_NOT_WINDOWS |
Evgeniy Stepanov | fef6605 | 2013-04-08 08:25:22 +0000 | [diff] [blame] | 78 | # define SANITIZER_INTERCEPT_TIME SI_NOT_WINDOWS |
Evgeniy Stepanov | a1c2a55 | 2013-04-09 11:35:13 +0000 | [diff] [blame] | 79 | # define SANITIZER_INTERCEPT_GLOB SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | 897a4ae | 2013-04-09 14:34:59 +0000 | [diff] [blame] | 80 | # define SANITIZER_INTERCEPT_WAIT SI_NOT_WINDOWS |
Evgeniy Stepanov | 9530eb7 | 2013-04-23 14:05:15 +0000 | [diff] [blame] | 81 | # define SANITIZER_INTERCEPT_INET SI_NOT_WINDOWS |
Evgeniy Stepanov | f495479 | 2013-05-21 09:01:23 +0000 | [diff] [blame] | 82 | # define SANITIZER_INTERCEPT_PTHREAD_GETSCHEDPARAM SI_NOT_WINDOWS |
Evgeniy Stepanov | 447ef19 | 2013-05-22 12:50:26 +0000 | [diff] [blame] | 83 | # define SANITIZER_INTERCEPT_GETADDRINFO SI_NOT_WINDOWS |
Evgeniy Stepanov | 9eedf48 | 2013-07-01 13:51:31 +0000 | [diff] [blame] | 84 | # define SANITIZER_INTERCEPT_GETNAMEINFO SI_NOT_WINDOWS |
Evgeniy Stepanov | 9f58c5c | 2013-05-22 13:46:22 +0000 | [diff] [blame] | 85 | # define SANITIZER_INTERCEPT_GETSOCKNAME SI_NOT_WINDOWS |
Evgeniy Stepanov | 0a2cc37 | 2013-05-23 11:10:23 +0000 | [diff] [blame] | 86 | # define SANITIZER_INTERCEPT_GETHOSTBYNAME SI_NOT_WINDOWS |
| 87 | # define SANITIZER_INTERCEPT_GETHOSTBYNAME_R SI_LINUX |
Evgeniy Stepanov | f32be42 | 2013-05-23 11:38:08 +0000 | [diff] [blame] | 88 | # define SANITIZER_INTERCEPT_GETSOCKOPT SI_NOT_WINDOWS |
Evgeniy Stepanov | 9d1525e | 2013-05-29 09:09:58 +0000 | [diff] [blame] | 89 | # define SANITIZER_INTERCEPT_ACCEPT SI_NOT_WINDOWS |
| 90 | # define SANITIZER_INTERCEPT_ACCEPT4 SI_LINUX |
Evgeniy Stepanov | c87088b | 2013-05-29 10:03:11 +0000 | [diff] [blame] | 91 | # define SANITIZER_INTERCEPT_MODF SI_NOT_WINDOWS |
Evgeniy Stepanov | 9666d89 | 2013-05-29 11:30:00 +0000 | [diff] [blame] | 92 | # define SANITIZER_INTERCEPT_RECVMSG SI_NOT_WINDOWS |
Evgeniy Stepanov | bc33e13 | 2013-05-29 11:49:25 +0000 | [diff] [blame] | 93 | # define SANITIZER_INTERCEPT_GETPEERNAME SI_NOT_WINDOWS |
Evgeniy Stepanov | 745dd0d | 2013-06-07 13:00:47 +0000 | [diff] [blame] | 94 | # define SANITIZER_INTERCEPT_IOCTL SI_NOT_WINDOWS |
Evgeniy Stepanov | 9d60087 | 2013-06-24 13:56:14 +0000 | [diff] [blame] | 95 | # define SANITIZER_INTERCEPT_INET_ATON SI_NOT_WINDOWS |
Evgeniy Stepanov | 359d7fc | 2013-06-24 14:25:33 +0000 | [diff] [blame] | 96 | # define SANITIZER_INTERCEPT_SYSINFO SI_LINUX |
Evgeniy Stepanov | b5cf98f | 2013-06-26 15:00:53 +0000 | [diff] [blame] | 97 | # define SANITIZER_INTERCEPT_READDIR SI_NOT_WINDOWS |
| 98 | # define SANITIZER_INTERCEPT_READDIR64 SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | 22d8767 | 2013-07-05 08:57:47 +0000 | [diff] [blame] | 99 | # define SANITIZER_INTERCEPT_PTRACE SI_LINUX_NOT_ANDROID && \ |
Timur Iskhodzhanov | eaca82c | 2013-07-15 16:11:39 +0000 | [diff] [blame] | 100 | (defined(__i386) || defined (__x86_64)) // NOLINT |
Evgeniy Stepanov | 3cae604 | 2013-07-02 09:23:45 +0000 | [diff] [blame] | 101 | # define SANITIZER_INTERCEPT_SETLOCALE SI_NOT_WINDOWS |
Evgeniy Stepanov | 8014489 | 2013-07-02 13:34:44 +0000 | [diff] [blame] | 102 | # define SANITIZER_INTERCEPT_GETCWD SI_NOT_WINDOWS |
| 103 | # define SANITIZER_INTERCEPT_GET_CURRENT_DIR_NAME SI_LINUX |
Evgeniy Stepanov | ff6c9fb | 2013-07-04 13:19:41 +0000 | [diff] [blame] | 104 | # define SANITIZER_INTERCEPT_STRTOIMAX SI_NOT_WINDOWS |
| 105 | # define SANITIZER_INTERCEPT_MBSTOWCS SI_NOT_WINDOWS |
| 106 | # define SANITIZER_INTERCEPT_MBSNRTOWCS SI_MAC || SI_LINUX_NOT_ANDROID |
| 107 | # define SANITIZER_INTERCEPT_WCSTOMBS SI_NOT_WINDOWS |
| 108 | # define SANITIZER_INTERCEPT_WCSNRTOMBS SI_MAC || SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | ea72768 | 2013-07-04 14:03:31 +0000 | [diff] [blame] | 109 | # define SANITIZER_INTERCEPT_TCGETATTR SI_LINUX |
Evgeniy Stepanov | 12eb79d | 2013-07-09 09:53:37 +0000 | [diff] [blame] | 110 | # define SANITIZER_INTERCEPT_REALPATH SI_NOT_WINDOWS |
| 111 | # define SANITIZER_INTERCEPT_CANONICALIZE_FILE_NAME SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | 5ec19bc | 2013-07-30 12:46:59 +0000 | [diff] [blame] | 112 | # define SANITIZER_INTERCEPT_CONFSTR SI_MAC || SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | 84ba74c | 2013-08-07 09:10:16 +0000 | [diff] [blame] | 113 | # define SANITIZER_INTERCEPT_SCHED_GETAFFINITY SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | 1204979 | 2013-08-08 11:44:05 +0000 | [diff] [blame] | 114 | # define SANITIZER_INTERCEPT_STRERROR SI_NOT_WINDOWS |
| 115 | # define SANITIZER_INTERCEPT_STRERROR_R SI_NOT_WINDOWS |
Evgeniy Stepanov | 8283cce | 2013-08-08 14:04:36 +0000 | [diff] [blame] | 116 | # define SANITIZER_INTERCEPT_SCANDIR SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | 224226c | 2013-08-08 13:57:15 +0000 | [diff] [blame] | 117 | # define SANITIZER_INTERCEPT_SCANDIR64 SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | edff34b | 2013-08-12 11:01:40 +0000 | [diff] [blame] | 118 | # define SANITIZER_INTERCEPT_GETGROUPS SI_NOT_WINDOWS |
Evgeniy Stepanov | e18e3f0 | 2013-08-12 13:19:53 +0000 | [diff] [blame] | 119 | # define SANITIZER_INTERCEPT_POLL SI_NOT_WINDOWS |
| 120 | # define SANITIZER_INTERCEPT_PPOLL SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | c5a3855 | 2013-09-24 14:38:22 +0000 | [diff] [blame] | 121 | # define SANITIZER_INTERCEPT_WORDEXP SI_MAC || SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | 9a949a8 | 2013-09-25 14:47:43 +0000 | [diff] [blame] | 122 | # define SANITIZER_INTERCEPT_SIGWAIT SI_NOT_WINDOWS |
| 123 | # define SANITIZER_INTERCEPT_SIGWAITINFO SI_LINUX_NOT_ANDROID |
| 124 | # define SANITIZER_INTERCEPT_SIGTIMEDWAIT SI_LINUX_NOT_ANDROID |
| 125 | # define SANITIZER_INTERCEPT_SIGSETOPS SI_NOT_WINDOWS |
| 126 | # define SANITIZER_INTERCEPT_SIGPENDING SI_NOT_WINDOWS |
| 127 | # define SANITIZER_INTERCEPT_SIGPROCMASK SI_NOT_WINDOWS |
Evgeniy Stepanov | 1394be1 | 2013-09-27 12:40:23 +0000 | [diff] [blame] | 128 | # define SANITIZER_INTERCEPT_BACKTRACE SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | 4d7297d | 2013-10-18 09:41:43 +0000 | [diff] [blame] | 129 | # define SANITIZER_INTERCEPT_GETMNTENT SI_LINUX |
| 130 | # define SANITIZER_INTERCEPT_GETMNTENT_R SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | 5cee73e | 2013-10-18 11:14:16 +0000 | [diff] [blame] | 131 | # define SANITIZER_INTERCEPT_STATFS SI_NOT_WINDOWS |
| 132 | # define SANITIZER_INTERCEPT_STATFS64 SI_MAC || SI_LINUX_NOT_ANDROID |
| 133 | # define SANITIZER_INTERCEPT_STATVFS SI_LINUX_NOT_ANDROID |
| 134 | # define SANITIZER_INTERCEPT_STATVFS64 SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | 285d458 | 2013-10-22 12:24:48 +0000 | [diff] [blame] | 135 | # define SANITIZER_INTERCEPT_INITGROUPS SI_NOT_WINDOWS |
Evgeniy Stepanov | 369a9a6 | 2013-10-23 13:57:47 +0000 | [diff] [blame] | 136 | # define SANITIZER_INTERCEPT_ETHER SI_NOT_WINDOWS |
Evgeniy Stepanov | 220d1f7 | 2013-10-23 15:21:10 +0000 | [diff] [blame] | 137 | # define SANITIZER_INTERCEPT_ETHER_R SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | 10362d6 | 2013-10-24 14:47:34 +0000 | [diff] [blame] | 138 | # define SANITIZER_INTERCEPT_SHMCTL SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | aff25aa | 2013-10-25 08:58:13 +0000 | [diff] [blame] | 139 | # define SANITIZER_INTERCEPT_RANDOM_R SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | e236dbb | 2013-10-25 13:01:31 +0000 | [diff] [blame] | 140 | # define SANITIZER_INTERCEPT_PTHREAD_ATTR_GET SI_NOT_WINDOWS |
| 141 | # define SANITIZER_INTERCEPT_PTHREAD_ATTR_GETINHERITSCHED \ |
| 142 | SI_MAC || SI_LINUX_NOT_ANDROID |
| 143 | # define SANITIZER_INTERCEPT_PTHREAD_ATTR_GETAFFINITY_NP SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | eada1a8 | 2013-10-25 15:51:48 +0000 | [diff] [blame] | 144 | # define SANITIZER_INTERCEPT_TMPNAM SI_NOT_WINDOWS |
Evgeniy Stepanov | b8c9c60 | 2013-10-25 16:22:50 +0000 | [diff] [blame] | 145 | # define SANITIZER_INTERCEPT_TMPNAM_R SI_LINUX_NOT_ANDROID |
Evgeniy Stepanov | eada1a8 | 2013-10-25 15:51:48 +0000 | [diff] [blame] | 146 | # define SANITIZER_INTERCEPT_TEMPNAM SI_NOT_WINDOWS |
Dmitry Vyukov | edd2821 | 2013-04-24 11:06:05 +0000 | [diff] [blame] | 147 | |
Dmitry Vyukov | 14dd980 | 2013-10-03 15:22:29 +0000 | [diff] [blame] | 148 | # define SANITIZER_INTERCEPT__EXIT SI_LINUX |
| 149 | |
Alexey Samsonov | 5e2d377 | 2013-10-16 08:20:31 +0000 | [diff] [blame] | 150 | # define SANITIZER_INTERCEPT_PHTREAD_MUTEX SI_NOT_WINDOWS |
| 151 | # define SANITIZER_INTERCEPT_PTHREAD_COND SI_NOT_WINDOWS |
Dmitry Vyukov | 5cf2c46 | 2013-10-29 10:30:39 +0000 | [diff] [blame^] | 152 | # define SANITIZER_INTERCEPT_PTHREAD_SETNAME_NP SI_LINUX_NOT_ANDROID |
Alexey Samsonov | 5e2d377 | 2013-10-16 08:20:31 +0000 | [diff] [blame] | 153 | |
Dmitry Vyukov | edd2821 | 2013-04-24 11:06:05 +0000 | [diff] [blame] | 154 | #endif // #ifndef SANITIZER_PLATFORM_INTERCEPTORS_H |