1245614Sandrew//===-- sanitizer_platform_interceptors.h -----------------------*- C++ -*-===// 2245614Sandrew// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6245614Sandrew// 7245614Sandrew//===----------------------------------------------------------------------===// 8245614Sandrew// 9245614Sandrew// This file defines macro telling whether sanitizer tools can/should intercept 10245614Sandrew// given library functions on a given platform. 11245614Sandrew// 12245614Sandrew//===----------------------------------------------------------------------===// 13251034Sed#ifndef SANITIZER_PLATFORM_INTERCEPTORS_H 14251034Sed#define SANITIZER_PLATFORM_INTERCEPTORS_H 15245614Sandrew 16360784Sdim#include "sanitizer_glibc_version.h" 17245614Sandrew#include "sanitizer_internal_defs.h" 18245614Sandrew 19327952Sdim#if SANITIZER_POSIX 20327952Sdim# define SI_POSIX 1 21327952Sdim#else 22327952Sdim# define SI_POSIX 0 23327952Sdim#endif 24327952Sdim 25251034Sed#if !SANITIZER_WINDOWS 26321369Sdim# define SI_WINDOWS 0 27245614Sandrew#else 28321369Sdim# define SI_WINDOWS 1 29245614Sandrew#endif 30245614Sandrew 31341825Sdim#if SI_WINDOWS && SI_POSIX 32327952Sdim# error "Windows is not POSIX!" 33321369Sdim#endif 34321369Sdim 35327952Sdim#if SI_POSIX 36344779Sdim# include "sanitizer_platform_limits_freebsd.h" 37327952Sdim# include "sanitizer_platform_limits_netbsd.h" 38344779Sdim# include "sanitizer_platform_limits_openbsd.h" 39327952Sdim# include "sanitizer_platform_limits_posix.h" 40327952Sdim# include "sanitizer_platform_limits_solaris.h" 41327952Sdim#endif 42327952Sdim 43251034Sed#if SANITIZER_LINUX && !SANITIZER_ANDROID 44245614Sandrew# define SI_LINUX_NOT_ANDROID 1 45245614Sandrew#else 46245614Sandrew# define SI_LINUX_NOT_ANDROID 0 47245614Sandrew#endif 48245614Sandrew 49309124Sdim#if SANITIZER_ANDROID 50309124Sdim# define SI_ANDROID 1 51309124Sdim#else 52309124Sdim# define SI_ANDROID 0 53309124Sdim#endif 54309124Sdim 55276789Sdim#if SANITIZER_FREEBSD 56276789Sdim# define SI_FREEBSD 1 57276789Sdim#else 58276789Sdim# define SI_FREEBSD 0 59276789Sdim#endif 60276789Sdim 61321369Sdim#if SANITIZER_NETBSD 62321369Sdim# define SI_NETBSD 1 63321369Sdim#else 64321369Sdim# define SI_NETBSD 0 65321369Sdim#endif 66321369Sdim 67341825Sdim#if SANITIZER_OPENBSD 68341825Sdim#define SI_OPENBSD 1 69341825Sdim#else 70341825Sdim#define SI_OPENBSD 0 71341825Sdim#endif 72341825Sdim 73251034Sed#if SANITIZER_LINUX 74251034Sed# define SI_LINUX 1 75251034Sed#else 76251034Sed# define SI_LINUX 0 77251034Sed#endif 78251034Sed 79251034Sed#if SANITIZER_MAC 80251034Sed# define SI_MAC 1 81309124Sdim# define SI_NOT_MAC 0 82251034Sed#else 83251034Sed# define SI_MAC 0 84309124Sdim# define SI_NOT_MAC 1 85251034Sed#endif 86251034Sed 87274201Sdim#if SANITIZER_IOS 88274201Sdim# define SI_IOS 1 89274201Sdim#else 90274201Sdim# define SI_IOS 0 91274201Sdim#endif 92274201Sdim 93360784Sdim#if SANITIZER_IOSSIM 94360784Sdim# define SI_IOSSIM 1 95360784Sdim#else 96360784Sdim# define SI_IOSSIM 0 97360784Sdim#endif 98360784Sdim 99360784Sdim#if SANITIZER_WATCHOS 100360784Sdim# define SI_WATCHOS 1 101360784Sdim#else 102360784Sdim# define SI_WATCHOS 0 103360784Sdim#endif 104360784Sdim 105360784Sdim#if SANITIZER_TVOS 106360784Sdim# define SI_TVOS 1 107360784Sdim#else 108360784Sdim# define SI_TVOS 0 109360784Sdim#endif 110360784Sdim 111327952Sdim#if SANITIZER_FUCHSIA 112327952Sdim# define SI_NOT_FUCHSIA 0 113309124Sdim#else 114327952Sdim# define SI_NOT_FUCHSIA 1 115309124Sdim#endif 116309124Sdim 117341825Sdim#if SANITIZER_RTEMS 118341825Sdim# define SI_NOT_RTEMS 0 119341825Sdim#else 120341825Sdim# define SI_NOT_RTEMS 1 121341825Sdim#endif 122341825Sdim 123327952Sdim#if SANITIZER_SOLARIS 124327952Sdim# define SI_SOLARIS 1 125327952Sdim#else 126327952Sdim# define SI_SOLARIS 0 127327952Sdim#endif 128327952Sdim 129327952Sdim#if SANITIZER_SOLARIS32 130327952Sdim# define SI_SOLARIS32 1 131327952Sdim#else 132327952Sdim# define SI_SOLARIS32 0 133327952Sdim#endif 134327952Sdim 135327952Sdim#if SANITIZER_POSIX && !SANITIZER_MAC 136327952Sdim# define SI_POSIX_NOT_MAC 1 137327952Sdim#else 138327952Sdim# define SI_POSIX_NOT_MAC 0 139327952Sdim#endif 140327952Sdim 141321369Sdim#if SANITIZER_LINUX && !SANITIZER_FREEBSD 142321369Sdim# define SI_LINUX_NOT_FREEBSD 1 143321369Sdim# else 144321369Sdim# define SI_LINUX_NOT_FREEBSD 0 145321369Sdim#endif 146321369Sdim 147327952Sdim#define SANITIZER_INTERCEPT_STRLEN SI_NOT_FUCHSIA 148327952Sdim#define SANITIZER_INTERCEPT_STRNLEN (SI_NOT_MAC && SI_NOT_FUCHSIA) 149327952Sdim#define SANITIZER_INTERCEPT_STRCMP SI_NOT_FUCHSIA 150327952Sdim#define SANITIZER_INTERCEPT_STRSTR SI_NOT_FUCHSIA 151327952Sdim#define SANITIZER_INTERCEPT_STRCASESTR SI_POSIX 152327952Sdim#define SANITIZER_INTERCEPT_STRTOK SI_NOT_FUCHSIA 153327952Sdim#define SANITIZER_INTERCEPT_STRCHR SI_NOT_FUCHSIA 154327952Sdim#define SANITIZER_INTERCEPT_STRCHRNUL SI_POSIX_NOT_MAC 155327952Sdim#define SANITIZER_INTERCEPT_STRRCHR SI_NOT_FUCHSIA 156327952Sdim#define SANITIZER_INTERCEPT_STRSPN SI_NOT_FUCHSIA 157327952Sdim#define SANITIZER_INTERCEPT_STRPBRK SI_NOT_FUCHSIA 158327952Sdim#define SANITIZER_INTERCEPT_TEXTDOMAIN SI_LINUX_NOT_ANDROID || SI_SOLARIS 159327952Sdim#define SANITIZER_INTERCEPT_STRCASECMP SI_POSIX 160309124Sdim#define SANITIZER_INTERCEPT_MEMSET 1 161309124Sdim#define SANITIZER_INTERCEPT_MEMMOVE 1 162309124Sdim#define SANITIZER_INTERCEPT_MEMCPY 1 163327952Sdim#define SANITIZER_INTERCEPT_MEMCMP SI_NOT_FUCHSIA 164353358Sdim#define SANITIZER_INTERCEPT_BCMP \ 165353358Sdim SANITIZER_INTERCEPT_MEMCMP && \ 166353358Sdim ((SI_POSIX && _GNU_SOURCE) || SI_NETBSD || SI_OPENBSD || SI_FREEBSD) 167321369Sdim#define SANITIZER_INTERCEPT_STRNDUP SI_POSIX 168321369Sdim#define SANITIZER_INTERCEPT___STRNDUP SI_LINUX_NOT_FREEBSD 169321369Sdim#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ 170321369Sdim __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070 171321369Sdim# define SI_MAC_DEPLOYMENT_BELOW_10_7 1 172321369Sdim#else 173321369Sdim# define SI_MAC_DEPLOYMENT_BELOW_10_7 0 174321369Sdim#endif 175321369Sdim// memmem on Darwin doesn't exist on 10.6 176309124Sdim// FIXME: enable memmem on Windows. 177327952Sdim#define SANITIZER_INTERCEPT_MEMMEM (SI_POSIX && !SI_MAC_DEPLOYMENT_BELOW_10_7) 178327952Sdim#define SANITIZER_INTERCEPT_MEMCHR SI_NOT_FUCHSIA 179341825Sdim#define SANITIZER_INTERCEPT_MEMRCHR \ 180341825Sdim (SI_FREEBSD || SI_LINUX || SI_NETBSD || SI_OPENBSD) 181251034Sed 182327952Sdim#define SANITIZER_INTERCEPT_READ SI_POSIX 183327952Sdim#define SANITIZER_INTERCEPT_PREAD SI_POSIX 184327952Sdim#define SANITIZER_INTERCEPT_WRITE SI_POSIX 185327952Sdim#define SANITIZER_INTERCEPT_PWRITE SI_POSIX 186245614Sandrew 187327952Sdim#define SANITIZER_INTERCEPT_FREAD SI_POSIX 188327952Sdim#define SANITIZER_INTERCEPT_FWRITE SI_POSIX 189341825Sdim#define SANITIZER_INTERCEPT_FGETS SI_POSIX 190341825Sdim#define SANITIZER_INTERCEPT_FPUTS SI_POSIX 191341825Sdim#define SANITIZER_INTERCEPT_PUTS SI_POSIX 192321369Sdim 193327952Sdim#define SANITIZER_INTERCEPT_PREAD64 SI_LINUX_NOT_ANDROID || SI_SOLARIS32 194327952Sdim#define SANITIZER_INTERCEPT_PWRITE64 SI_LINUX_NOT_ANDROID || SI_SOLARIS32 195274201Sdim 196327952Sdim#define SANITIZER_INTERCEPT_READV SI_POSIX 197327952Sdim#define SANITIZER_INTERCEPT_WRITEV SI_POSIX 198274201Sdim 199321369Sdim#define SANITIZER_INTERCEPT_PREADV \ 200341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID) 201274201Sdim#define SANITIZER_INTERCEPT_PWRITEV SI_LINUX_NOT_ANDROID 202274201Sdim#define SANITIZER_INTERCEPT_PREADV64 SI_LINUX_NOT_ANDROID 203274201Sdim#define SANITIZER_INTERCEPT_PWRITEV64 SI_LINUX_NOT_ANDROID 204274201Sdim 205276789Sdim#define SANITIZER_INTERCEPT_PRCTL SI_LINUX 206245614Sandrew 207327952Sdim#define SANITIZER_INTERCEPT_LOCALTIME_AND_FRIENDS SI_POSIX 208327952Sdim#define SANITIZER_INTERCEPT_STRPTIME SI_POSIX 209251034Sed 210327952Sdim#define SANITIZER_INTERCEPT_SCANF SI_POSIX 211276789Sdim#define SANITIZER_INTERCEPT_ISOC99_SCANF SI_LINUX_NOT_ANDROID 212251034Sed 213276789Sdim#ifndef SANITIZER_INTERCEPT_PRINTF 214327952Sdim# define SANITIZER_INTERCEPT_PRINTF SI_POSIX 215321369Sdim# define SANITIZER_INTERCEPT_PRINTF_L (SI_FREEBSD || SI_NETBSD) 216276789Sdim# define SANITIZER_INTERCEPT_ISOC99_PRINTF SI_LINUX_NOT_ANDROID 217276789Sdim#endif 218251034Sed 219327952Sdim#define SANITIZER_INTERCEPT___PRINTF_CHK \ 220327952Sdim (SANITIZER_INTERCEPT_PRINTF && SI_LINUX_NOT_ANDROID) 221276789Sdim 222327952Sdim#define SANITIZER_INTERCEPT_FREXP SI_NOT_FUCHSIA 223327952Sdim#define SANITIZER_INTERCEPT_FREXPF_FREXPL SI_POSIX 224327952Sdim 225327952Sdim#define SANITIZER_INTERCEPT_GETPWNAM_AND_FRIENDS SI_POSIX 226341825Sdim#define SANITIZER_INTERCEPT_GETPWNAM_R_AND_FRIENDS \ 227341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \ 228341825Sdim SI_SOLARIS) 229341825Sdim#define SANITIZER_INTERCEPT_GETPWENT \ 230341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \ 231341825Sdim SI_SOLARIS) 232344779Sdim#define SANITIZER_INTERCEPT_FGETGRENT_R \ 233344779Sdim (SI_FREEBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 234327952Sdim#define SANITIZER_INTERCEPT_FGETPWENT SI_LINUX_NOT_ANDROID || SI_SOLARIS 235321369Sdim#define SANITIZER_INTERCEPT_GETPWENT_R \ 236341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 237344779Sdim#define SANITIZER_INTERCEPT_FGETPWENT_R \ 238344779Sdim (SI_FREEBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 239327952Sdim#define SANITIZER_INTERCEPT_SETPWENT \ 240327952Sdim (SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 241327952Sdim#define SANITIZER_INTERCEPT_CLOCK_GETTIME \ 242341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX || SI_SOLARIS) 243327952Sdim#define SANITIZER_INTERCEPT_GETITIMER SI_POSIX 244327952Sdim#define SANITIZER_INTERCEPT_TIME SI_POSIX 245327952Sdim#define SANITIZER_INTERCEPT_GLOB SI_LINUX_NOT_ANDROID || SI_SOLARIS 246327952Sdim#define SANITIZER_INTERCEPT_GLOB64 SI_LINUX_NOT_ANDROID 247327952Sdim#define SANITIZER_INTERCEPT_WAIT SI_POSIX 248327952Sdim#define SANITIZER_INTERCEPT_INET SI_POSIX 249341825Sdim#define SANITIZER_INTERCEPT_PTHREAD_GETSCHEDPARAM (SI_POSIX && !SI_OPENBSD) 250327952Sdim#define SANITIZER_INTERCEPT_GETADDRINFO SI_POSIX 251327952Sdim#define SANITIZER_INTERCEPT_GETNAMEINFO SI_POSIX 252327952Sdim#define SANITIZER_INTERCEPT_GETSOCKNAME SI_POSIX 253327952Sdim#define SANITIZER_INTERCEPT_GETHOSTBYNAME SI_POSIX 254327952Sdim#define SANITIZER_INTERCEPT_GETHOSTBYNAME2 SI_POSIX && !SI_SOLARIS 255327952Sdim#define SANITIZER_INTERCEPT_GETHOSTBYNAME_R \ 256327952Sdim (SI_FREEBSD || SI_LINUX || SI_SOLARIS) 257321369Sdim#define SANITIZER_INTERCEPT_GETHOSTBYNAME2_R \ 258321369Sdim (SI_FREEBSD || SI_LINUX_NOT_ANDROID) 259327952Sdim#define SANITIZER_INTERCEPT_GETHOSTBYADDR_R \ 260327952Sdim (SI_FREEBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 261327952Sdim#define SANITIZER_INTERCEPT_GETHOSTENT_R \ 262327952Sdim (SI_FREEBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 263327952Sdim#define SANITIZER_INTERCEPT_GETSOCKOPT SI_POSIX 264327952Sdim#define SANITIZER_INTERCEPT_ACCEPT SI_POSIX 265341825Sdim#define SANITIZER_INTERCEPT_ACCEPT4 \ 266341825Sdim (SI_LINUX_NOT_ANDROID || SI_NETBSD || SI_OPENBSD) 267341825Sdim#define SANITIZER_INTERCEPT_PACCEPT SI_NETBSD 268327952Sdim#define SANITIZER_INTERCEPT_MODF SI_POSIX 269327952Sdim#define SANITIZER_INTERCEPT_RECVMSG SI_POSIX 270327952Sdim#define SANITIZER_INTERCEPT_SENDMSG SI_POSIX 271341825Sdim#define SANITIZER_INTERCEPT_RECVMMSG SI_LINUX 272341825Sdim#define SANITIZER_INTERCEPT_SENDMMSG SI_LINUX 273327952Sdim#define SANITIZER_INTERCEPT_GETPEERNAME SI_POSIX 274327952Sdim#define SANITIZER_INTERCEPT_IOCTL SI_POSIX 275327952Sdim#define SANITIZER_INTERCEPT_INET_ATON SI_POSIX 276276789Sdim#define SANITIZER_INTERCEPT_SYSINFO SI_LINUX 277327952Sdim#define SANITIZER_INTERCEPT_READDIR SI_POSIX 278327952Sdim#define SANITIZER_INTERCEPT_READDIR64 SI_LINUX_NOT_ANDROID || SI_SOLARIS32 279309124Sdim#if SI_LINUX_NOT_ANDROID && \ 280288943Sdim (defined(__i386) || defined(__x86_64) || defined(__mips64) || \ 281309124Sdim defined(__powerpc64__) || defined(__aarch64__) || defined(__arm__) || \ 282309124Sdim defined(__s390__)) 283309124Sdim#define SANITIZER_INTERCEPT_PTRACE 1 284309124Sdim#else 285309124Sdim#define SANITIZER_INTERCEPT_PTRACE 0 286309124Sdim#endif 287327952Sdim#define SANITIZER_INTERCEPT_SETLOCALE SI_POSIX 288327952Sdim#define SANITIZER_INTERCEPT_GETCWD SI_POSIX 289276789Sdim#define SANITIZER_INTERCEPT_GET_CURRENT_DIR_NAME SI_LINUX_NOT_ANDROID 290327952Sdim#define SANITIZER_INTERCEPT_STRTOIMAX SI_POSIX 291327952Sdim#define SANITIZER_INTERCEPT_MBSTOWCS SI_POSIX 292327952Sdim#define SANITIZER_INTERCEPT_MBSNRTOWCS \ 293327952Sdim (SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 294327952Sdim#define SANITIZER_INTERCEPT_WCSTOMBS SI_POSIX 295341825Sdim#define SANITIZER_INTERCEPT_STRXFRM SI_POSIX 296341825Sdim#define SANITIZER_INTERCEPT___STRXFRM_L SI_LINUX 297341825Sdim#define SANITIZER_INTERCEPT_WCSXFRM SI_POSIX 298341825Sdim#define SANITIZER_INTERCEPT___WCSXFRM_L SI_LINUX 299341825Sdim#define SANITIZER_INTERCEPT_WCSNRTOMBS \ 300341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \ 301341825Sdim SI_SOLARIS) 302341825Sdim#define SANITIZER_INTERCEPT_WCRTOMB \ 303341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \ 304341825Sdim SI_SOLARIS) 305353358Sdim#define SANITIZER_INTERCEPT_WCTOMB \ 306353358Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \ 307353358Sdim SI_SOLARIS) 308327952Sdim#define SANITIZER_INTERCEPT_TCGETATTR SI_LINUX_NOT_ANDROID || SI_SOLARIS 309327952Sdim#define SANITIZER_INTERCEPT_REALPATH SI_POSIX 310327952Sdim#define SANITIZER_INTERCEPT_CANONICALIZE_FILE_NAME \ 311327952Sdim (SI_LINUX_NOT_ANDROID || SI_SOLARIS) 312341825Sdim#define SANITIZER_INTERCEPT_CONFSTR \ 313341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \ 314341825Sdim SI_SOLARIS) 315276789Sdim#define SANITIZER_INTERCEPT_SCHED_GETAFFINITY SI_LINUX_NOT_ANDROID 316327952Sdim#define SANITIZER_INTERCEPT_SCHED_GETPARAM SI_LINUX_NOT_ANDROID || SI_SOLARIS 317327952Sdim#define SANITIZER_INTERCEPT_STRERROR SI_POSIX 318327952Sdim#define SANITIZER_INTERCEPT_STRERROR_R SI_POSIX 319276789Sdim#define SANITIZER_INTERCEPT_XPG_STRERROR_R SI_LINUX_NOT_ANDROID 320288943Sdim#define SANITIZER_INTERCEPT_SCANDIR \ 321341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 322327952Sdim#define SANITIZER_INTERCEPT_SCANDIR64 SI_LINUX_NOT_ANDROID || SI_SOLARIS32 323327952Sdim#define SANITIZER_INTERCEPT_GETGROUPS SI_POSIX 324327952Sdim#define SANITIZER_INTERCEPT_POLL SI_POSIX 325327952Sdim#define SANITIZER_INTERCEPT_PPOLL SI_LINUX_NOT_ANDROID || SI_SOLARIS 326280031Sdim#define SANITIZER_INTERCEPT_WORDEXP \ 327327952Sdim (SI_FREEBSD || SI_NETBSD || (SI_MAC && !SI_IOS) || SI_LINUX_NOT_ANDROID || \ 328327952Sdim SI_SOLARIS) 329327952Sdim#define SANITIZER_INTERCEPT_SIGWAIT SI_POSIX 330327952Sdim#define SANITIZER_INTERCEPT_SIGWAITINFO SI_LINUX_NOT_ANDROID || SI_SOLARIS 331327952Sdim#define SANITIZER_INTERCEPT_SIGTIMEDWAIT SI_LINUX_NOT_ANDROID || SI_SOLARIS 332276789Sdim#define SANITIZER_INTERCEPT_SIGSETOPS \ 333327952Sdim (SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 334327952Sdim#define SANITIZER_INTERCEPT_SIGPENDING SI_POSIX 335327952Sdim#define SANITIZER_INTERCEPT_SIGPROCMASK SI_POSIX 336353358Sdim#define SANITIZER_INTERCEPT_PTHREAD_SIGMASK SI_POSIX 337321369Sdim#define SANITIZER_INTERCEPT_BACKTRACE \ 338341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 339276789Sdim#define SANITIZER_INTERCEPT_GETMNTENT SI_LINUX 340276789Sdim#define SANITIZER_INTERCEPT_GETMNTENT_R SI_LINUX_NOT_ANDROID 341321369Sdim#define SANITIZER_INTERCEPT_STATFS \ 342327952Sdim (SI_FREEBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 343276789Sdim#define SANITIZER_INTERCEPT_STATFS64 \ 344321369Sdim ((SI_MAC && !SI_IOS) || SI_LINUX_NOT_ANDROID) 345321369Sdim#define SANITIZER_INTERCEPT_STATVFS \ 346341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID) 347276789Sdim#define SANITIZER_INTERCEPT_STATVFS64 SI_LINUX_NOT_ANDROID 348327952Sdim#define SANITIZER_INTERCEPT_INITGROUPS SI_POSIX 349341825Sdim#define SANITIZER_INTERCEPT_ETHER_NTOA_ATON (SI_POSIX && !SI_OPENBSD) 350280031Sdim#define SANITIZER_INTERCEPT_ETHER_HOST \ 351321369Sdim (SI_FREEBSD || SI_MAC || SI_LINUX_NOT_ANDROID) 352321369Sdim#define SANITIZER_INTERCEPT_ETHER_R (SI_FREEBSD || SI_LINUX_NOT_ANDROID) 353360784Sdim#define SANITIZER_INTERCEPT_SHMCTL \ 354360784Sdim (((SI_FREEBSD || SI_LINUX_NOT_ANDROID) && SANITIZER_WORDSIZE == 64) || \ 355360784Sdim SI_NETBSD || SI_OPENBSD || SI_SOLARIS) // NOLINT 356276789Sdim#define SANITIZER_INTERCEPT_RANDOM_R SI_LINUX_NOT_ANDROID 357327952Sdim#define SANITIZER_INTERCEPT_PTHREAD_ATTR_GET SI_POSIX 358276789Sdim#define SANITIZER_INTERCEPT_PTHREAD_ATTR_GETINHERITSCHED \ 359327952Sdim (SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 360276789Sdim#define SANITIZER_INTERCEPT_PTHREAD_ATTR_GETAFFINITY_NP SI_LINUX_NOT_ANDROID 361341825Sdim#define SANITIZER_INTERCEPT_PTHREAD_ATTR_GET_SCHED (SI_POSIX && !SI_OPENBSD) 362327952Sdim#define SANITIZER_INTERCEPT_PTHREAD_MUTEXATTR_GETPSHARED \ 363341825Sdim (SI_POSIX && !SI_NETBSD && !SI_OPENBSD) 364341825Sdim#define SANITIZER_INTERCEPT_PTHREAD_MUTEXATTR_GETTYPE (SI_POSIX && !SI_OPENBSD) 365276789Sdim#define SANITIZER_INTERCEPT_PTHREAD_MUTEXATTR_GETPROTOCOL \ 366327952Sdim (SI_MAC || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 367276789Sdim#define SANITIZER_INTERCEPT_PTHREAD_MUTEXATTR_GETPRIOCEILING \ 368327952Sdim (SI_MAC || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 369327952Sdim#define SANITIZER_INTERCEPT_PTHREAD_MUTEXATTR_GETROBUST \ 370327952Sdim (SI_LINUX_NOT_ANDROID || SI_SOLARIS) 371276789Sdim#define SANITIZER_INTERCEPT_PTHREAD_MUTEXATTR_GETROBUST_NP SI_LINUX_NOT_ANDROID 372327952Sdim#define SANITIZER_INTERCEPT_PTHREAD_RWLOCKATTR_GETPSHARED \ 373341825Sdim (SI_POSIX && !SI_NETBSD && !SI_OPENBSD) 374276789Sdim#define SANITIZER_INTERCEPT_PTHREAD_RWLOCKATTR_GETKIND_NP SI_LINUX_NOT_ANDROID 375327952Sdim#define SANITIZER_INTERCEPT_PTHREAD_CONDATTR_GETPSHARED \ 376341825Sdim (SI_POSIX && !SI_NETBSD && !SI_OPENBSD) 377327952Sdim#define SANITIZER_INTERCEPT_PTHREAD_CONDATTR_GETCLOCK \ 378327952Sdim (SI_LINUX_NOT_ANDROID || SI_SOLARIS) 379327952Sdim#define SANITIZER_INTERCEPT_PTHREAD_BARRIERATTR_GETPSHARED \ 380341825Sdim (SI_LINUX_NOT_ANDROID && !SI_NETBSD && !SI_OPENBSD) 381341825Sdim#define SANITIZER_INTERCEPT_THR_EXIT SI_FREEBSD 382327952Sdim#define SANITIZER_INTERCEPT_TMPNAM SI_POSIX 383327952Sdim#define SANITIZER_INTERCEPT_TMPNAM_R SI_LINUX_NOT_ANDROID || SI_SOLARIS 384353358Sdim#define SANITIZER_INTERCEPT_TTYNAME SI_POSIX 385327952Sdim#define SANITIZER_INTERCEPT_TTYNAME_R SI_POSIX 386327952Sdim#define SANITIZER_INTERCEPT_TEMPNAM SI_POSIX 387327952Sdim#define SANITIZER_INTERCEPT_SINCOS SI_LINUX || SI_SOLARIS 388327952Sdim#define SANITIZER_INTERCEPT_REMQUO SI_POSIX 389344779Sdim#define SANITIZER_INTERCEPT_REMQUOL (SI_POSIX && !SI_NETBSD) 390327952Sdim#define SANITIZER_INTERCEPT_LGAMMA SI_POSIX 391344779Sdim#define SANITIZER_INTERCEPT_LGAMMAL (SI_POSIX && !SI_NETBSD) 392327952Sdim#define SANITIZER_INTERCEPT_LGAMMA_R (SI_FREEBSD || SI_LINUX || SI_SOLARIS) 393327952Sdim#define SANITIZER_INTERCEPT_LGAMMAL_R SI_LINUX_NOT_ANDROID || SI_SOLARIS 394276789Sdim#define SANITIZER_INTERCEPT_DRAND48_R SI_LINUX_NOT_ANDROID 395341825Sdim#define SANITIZER_INTERCEPT_RAND_R \ 396341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \ 397341825Sdim SI_SOLARIS) 398321369Sdim#define SANITIZER_INTERCEPT_ICONV \ 399341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 400327952Sdim#define SANITIZER_INTERCEPT_TIMES SI_POSIX 401251034Sed 402274201Sdim// FIXME: getline seems to be available on OSX 10.7 403321369Sdim#define SANITIZER_INTERCEPT_GETLINE \ 404341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 405274201Sdim 406321369Sdim#define SANITIZER_INTERCEPT__EXIT \ 407341825Sdim (SI_LINUX || SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_SOLARIS) 408274201Sdim 409341825Sdim#define SANITIZER_INTERCEPT_PTHREAD_MUTEX SI_POSIX 410341825Sdim#define SANITIZER_INTERCEPT___PTHREAD_MUTEX SI_LINUX_NOT_ANDROID 411341825Sdim#define SANITIZER_INTERCEPT___LIBC_MUTEX SI_NETBSD 412276789Sdim#define SANITIZER_INTERCEPT_PTHREAD_SETNAME_NP \ 413341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 414327952Sdim#define SANITIZER_INTERCEPT_PTHREAD_GETNAME_NP \ 415344779Sdim (SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 416274201Sdim 417276789Sdim#define SANITIZER_INTERCEPT_TLS_GET_ADDR \ 418341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS) 419276789Sdim 420276789Sdim#define SANITIZER_INTERCEPT_LISTXATTR SI_LINUX 421276789Sdim#define SANITIZER_INTERCEPT_GETXATTR SI_LINUX 422276789Sdim#define SANITIZER_INTERCEPT_GETRESID SI_LINUX 423341825Sdim#define SANITIZER_INTERCEPT_GETIFADDRS \ 424341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_MAC || \ 425341825Sdim SI_SOLARIS) 426341825Sdim#define SANITIZER_INTERCEPT_IF_INDEXTONAME \ 427341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_MAC || \ 428341825Sdim SI_SOLARIS) 429276789Sdim#define SANITIZER_INTERCEPT_CAPGET SI_LINUX_NOT_ANDROID 430309124Sdim#if SI_LINUX && defined(__arm__) 431309124Sdim#define SANITIZER_INTERCEPT_AEABI_MEM 1 432309124Sdim#else 433309124Sdim#define SANITIZER_INTERCEPT_AEABI_MEM 0 434309124Sdim#endif 435353358Sdim#define SANITIZER_INTERCEPT___BZERO SI_MAC || SI_LINUX_NOT_ANDROID 436353358Sdim#define SANITIZER_INTERCEPT_BZERO SI_LINUX_NOT_ANDROID 437341825Sdim#define SANITIZER_INTERCEPT_FTIME \ 438341825Sdim (!SI_FREEBSD && !SI_NETBSD && !SI_OPENBSD && SI_POSIX) 439327952Sdim#define SANITIZER_INTERCEPT_XDR SI_LINUX_NOT_ANDROID || SI_SOLARIS 440321369Sdim#define SANITIZER_INTERCEPT_TSEARCH \ 441341825Sdim (SI_LINUX_NOT_ANDROID || SI_MAC || SI_NETBSD || SI_OPENBSD || SI_SOLARIS) 442276789Sdim#define SANITIZER_INTERCEPT_LIBIO_INTERNALS SI_LINUX_NOT_ANDROID 443327952Sdim#define SANITIZER_INTERCEPT_FOPEN SI_POSIX 444327952Sdim#define SANITIZER_INTERCEPT_FOPEN64 SI_LINUX_NOT_ANDROID || SI_SOLARIS32 445327952Sdim#define SANITIZER_INTERCEPT_OPEN_MEMSTREAM \ 446341825Sdim (SI_LINUX_NOT_ANDROID || SI_NETBSD || SI_OPENBSD || SI_SOLARIS) 447276789Sdim#define SANITIZER_INTERCEPT_OBSTACK SI_LINUX_NOT_ANDROID 448327952Sdim#define SANITIZER_INTERCEPT_FFLUSH SI_POSIX 449327952Sdim#define SANITIZER_INTERCEPT_FCLOSE SI_POSIX 450309124Sdim 451309124Sdim#ifndef SANITIZER_INTERCEPT_DLOPEN_DLCLOSE 452341825Sdim#define SANITIZER_INTERCEPT_DLOPEN_DLCLOSE \ 453341825Sdim (SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_MAC || \ 454341825Sdim SI_SOLARIS) 455309124Sdim#endif 456309124Sdim 457321369Sdim#define SANITIZER_INTERCEPT_GETPASS \ 458341825Sdim (SI_LINUX_NOT_ANDROID || SI_MAC || SI_NETBSD || SI_OPENBSD) 459276789Sdim#define SANITIZER_INTERCEPT_TIMERFD SI_LINUX_NOT_ANDROID 460276789Sdim 461327952Sdim#define SANITIZER_INTERCEPT_MLOCKX SI_POSIX 462288943Sdim#define SANITIZER_INTERCEPT_FOPENCOOKIE SI_LINUX_NOT_ANDROID 463327952Sdim#define SANITIZER_INTERCEPT_SEM \ 464327952Sdim (SI_LINUX || SI_FREEBSD || SI_NETBSD || SI_SOLARIS) 465327952Sdim#define SANITIZER_INTERCEPT_PTHREAD_SETCANCEL SI_POSIX 466341825Sdim#define SANITIZER_INTERCEPT_MINCORE \ 467341825Sdim (SI_LINUX || SI_NETBSD || SI_OPENBSD || SI_SOLARIS) 468296417Sdim#define SANITIZER_INTERCEPT_PROCESS_VM_READV SI_LINUX 469321369Sdim#define SANITIZER_INTERCEPT_CTERMID \ 470341825Sdim (SI_LINUX || SI_MAC || SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_SOLARIS) 471327952Sdim#define SANITIZER_INTERCEPT_CTERMID_R (SI_MAC || SI_FREEBSD || SI_SOLARIS) 472276789Sdim 473341825Sdim#define SANITIZER_INTERCEPTOR_HOOKS \ 474341825Sdim (SI_LINUX || SI_MAC || SI_WINDOWS || SI_NETBSD) 475327952Sdim#define SANITIZER_INTERCEPT_RECV_RECVFROM SI_POSIX 476327952Sdim#define SANITIZER_INTERCEPT_SEND_SENDTO SI_POSIX 477309124Sdim#define SANITIZER_INTERCEPT_EVENTFD_READ_WRITE SI_LINUX 478296417Sdim 479321369Sdim#define SANITIZER_INTERCEPT_STAT \ 480341825Sdim (SI_FREEBSD || SI_MAC || SI_ANDROID || SI_NETBSD || SI_OPENBSD || SI_SOLARIS) 481341825Sdim#define SANITIZER_INTERCEPT_LSTAT (SI_NETBSD || SI_FREEBSD) 482327952Sdim#define SANITIZER_INTERCEPT___XSTAT (!SANITIZER_INTERCEPT_STAT && SI_POSIX) 483309124Sdim#define SANITIZER_INTERCEPT___XSTAT64 SI_LINUX_NOT_ANDROID 484309124Sdim#define SANITIZER_INTERCEPT___LXSTAT SANITIZER_INTERCEPT___XSTAT 485309124Sdim#define SANITIZER_INTERCEPT___LXSTAT64 SI_LINUX_NOT_ANDROID 486313052Sdim 487327952Sdim#define SANITIZER_INTERCEPT_UTMP \ 488327952Sdim (SI_POSIX && !SI_MAC && !SI_FREEBSD && !SI_NETBSD) 489327952Sdim#define SANITIZER_INTERCEPT_UTMPX \ 490327952Sdim (SI_LINUX_NOT_ANDROID || SI_MAC || SI_FREEBSD || SI_NETBSD) 491314564Sdim 492321369Sdim#define SANITIZER_INTERCEPT_GETLOADAVG \ 493341825Sdim (SI_LINUX_NOT_ANDROID || SI_MAC || SI_FREEBSD || SI_NETBSD || SI_OPENBSD) 494313052Sdim 495341825Sdim#define SANITIZER_INTERCEPT_MMAP SI_POSIX 496341825Sdim#define SANITIZER_INTERCEPT_MMAP64 SI_LINUX_NOT_ANDROID 497321369Sdim#define SANITIZER_INTERCEPT_MALLOPT_AND_MALLINFO \ 498341825Sdim (!SI_FREEBSD && !SI_MAC && !SI_NETBSD && !SI_OPENBSD && SI_NOT_FUCHSIA && \ 499341825Sdim SI_NOT_RTEMS) 500341825Sdim#define SANITIZER_INTERCEPT_MEMALIGN \ 501341825Sdim (!SI_FREEBSD && !SI_MAC && !SI_NETBSD && !SI_OPENBSD && SI_NOT_RTEMS) 502327952Sdim#define SANITIZER_INTERCEPT_PVALLOC \ 503341825Sdim (!SI_FREEBSD && !SI_MAC && !SI_NETBSD && !SI_OPENBSD && SI_NOT_FUCHSIA && \ 504341825Sdim SI_NOT_RTEMS) 505327952Sdim#define SANITIZER_INTERCEPT_CFREE \ 506341825Sdim (!SI_FREEBSD && !SI_MAC && !SI_NETBSD && !SI_OPENBSD && SI_NOT_FUCHSIA && \ 507341825Sdim SI_NOT_RTEMS) 508353358Sdim#define SANITIZER_INTERCEPT_REALLOCARRAY SI_POSIX 509341825Sdim#define SANITIZER_INTERCEPT_ALIGNED_ALLOC (!SI_MAC && SI_NOT_RTEMS) 510360784Sdim#define SANITIZER_INTERCEPT_MALLOC_USABLE_SIZE \ 511360784Sdim (!SI_MAC && !SI_OPENBSD && !SI_NETBSD) 512321369Sdim#define SANITIZER_INTERCEPT_MCHECK_MPROBE SI_LINUX_NOT_ANDROID 513327952Sdim#define SANITIZER_INTERCEPT_WCSCAT SI_POSIX 514353358Sdim#define SANITIZER_INTERCEPT_WCSDUP SI_POSIX 515327952Sdim#define SANITIZER_INTERCEPT_SIGNAL_AND_SIGACTION (!SI_WINDOWS && SI_NOT_FUCHSIA) 516327952Sdim#define SANITIZER_INTERCEPT_BSD_SIGNAL SI_ANDROID 517321369Sdim 518341825Sdim#define SANITIZER_INTERCEPT_ACCT (SI_NETBSD || SI_OPENBSD || SI_FREEBSD) 519341825Sdim#define SANITIZER_INTERCEPT_USER_FROM_UID SI_NETBSD 520341825Sdim#define SANITIZER_INTERCEPT_UID_FROM_USER SI_NETBSD 521341825Sdim#define SANITIZER_INTERCEPT_GROUP_FROM_GID SI_NETBSD 522341825Sdim#define SANITIZER_INTERCEPT_GID_FROM_GROUP SI_NETBSD 523341825Sdim#define SANITIZER_INTERCEPT_ACCESS (SI_NETBSD || SI_OPENBSD || SI_FREEBSD) 524341825Sdim#define SANITIZER_INTERCEPT_FACCESSAT (SI_NETBSD || SI_OPENBSD || SI_FREEBSD) 525341825Sdim#define SANITIZER_INTERCEPT_GETGROUPLIST (SI_NETBSD || SI_OPENBSD) 526341825Sdim#define SANITIZER_INTERCEPT_STRLCPY \ 527341825Sdim (SI_NETBSD || SI_FREEBSD || SI_OPENBSD || SI_MAC || SI_ANDROID) 528341825Sdim 529341825Sdim#define SANITIZER_INTERCEPT_NAME_TO_HANDLE_AT SI_LINUX_NOT_ANDROID 530341825Sdim#define SANITIZER_INTERCEPT_OPEN_BY_HANDLE_AT SI_LINUX_NOT_ANDROID 531341825Sdim 532341825Sdim#define SANITIZER_INTERCEPT_READLINK SI_POSIX 533341825Sdim#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ 534341825Sdim __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101000 535341825Sdim# define SI_MAC_DEPLOYMENT_BELOW_10_10 1 536341825Sdim#else 537341825Sdim# define SI_MAC_DEPLOYMENT_BELOW_10_10 0 538341825Sdim#endif 539341825Sdim#define SANITIZER_INTERCEPT_READLINKAT \ 540341825Sdim (SI_POSIX && !SI_MAC_DEPLOYMENT_BELOW_10_10) 541341825Sdim 542341825Sdim#define SANITIZER_INTERCEPT_DEVNAME (SI_NETBSD || SI_OPENBSD || SI_FREEBSD) 543341825Sdim#define SANITIZER_INTERCEPT_DEVNAME_R (SI_NETBSD || SI_FREEBSD) 544341825Sdim#define SANITIZER_INTERCEPT_FGETLN (SI_NETBSD || SI_FREEBSD) 545341825Sdim#define SANITIZER_INTERCEPT_STRMODE (SI_NETBSD || SI_FREEBSD) 546341825Sdim#define SANITIZER_INTERCEPT_TTYENT SI_NETBSD 547341825Sdim#define SANITIZER_INTERCEPT_PROTOENT SI_NETBSD 548341825Sdim#define SANITIZER_INTERCEPT_NETENT SI_NETBSD 549344779Sdim#define SANITIZER_INTERCEPT_SETVBUF (SI_NETBSD || SI_FREEBSD || \ 550344779Sdim SI_LINUX || SI_MAC) 551344779Sdim#define SANITIZER_INTERCEPT_GETMNTINFO (SI_NETBSD || SI_FREEBSD || SI_MAC) 552344779Sdim#define SANITIZER_INTERCEPT_MI_VECTOR_HASH SI_NETBSD 553344779Sdim#define SANITIZER_INTERCEPT_GETVFSSTAT SI_NETBSD 554344779Sdim#define SANITIZER_INTERCEPT_REGEX (SI_NETBSD || SI_FREEBSD || SI_LINUX) 555344779Sdim#define SANITIZER_INTERCEPT_REGEXSUB SI_NETBSD 556344779Sdim#define SANITIZER_INTERCEPT_FTS (SI_NETBSD || SI_FREEBSD) 557344779Sdim#define SANITIZER_INTERCEPT_SYSCTL (SI_NETBSD || SI_FREEBSD || SI_MAC) 558344779Sdim#define SANITIZER_INTERCEPT_ASYSCTL SI_NETBSD 559344779Sdim#define SANITIZER_INTERCEPT_SYSCTLGETMIBINFO SI_NETBSD 560344779Sdim#define SANITIZER_INTERCEPT_NL_LANGINFO (SI_NETBSD || SI_FREEBSD || SI_MAC) 561344779Sdim#define SANITIZER_INTERCEPT_MODCTL SI_NETBSD 562344779Sdim#define SANITIZER_INTERCEPT_CAPSICUM SI_FREEBSD 563344779Sdim#define SANITIZER_INTERCEPT_STRTONUM (SI_NETBSD || SI_FREEBSD) 564344779Sdim#define SANITIZER_INTERCEPT_FPARSELN SI_NETBSD 565344779Sdim#define SANITIZER_INTERCEPT_STATVFS1 SI_NETBSD 566344779Sdim#define SANITIZER_INTERCEPT_STRTOI SI_NETBSD 567344779Sdim#define SANITIZER_INTERCEPT_CAPSICUM SI_FREEBSD 568344779Sdim#define SANITIZER_INTERCEPT_SHA1 SI_NETBSD 569344779Sdim#define SANITIZER_INTERCEPT_MD4 SI_NETBSD 570344779Sdim#define SANITIZER_INTERCEPT_RMD160 SI_NETBSD 571344779Sdim#define SANITIZER_INTERCEPT_MD5 SI_NETBSD 572344779Sdim#define SANITIZER_INTERCEPT_FSEEK (SI_NETBSD || SI_FREEBSD) 573344779Sdim#define SANITIZER_INTERCEPT_MD2 SI_NETBSD 574344779Sdim#define SANITIZER_INTERCEPT_SHA2 SI_NETBSD 575344779Sdim#define SANITIZER_INTERCEPT_CDB SI_NETBSD 576344779Sdim#define SANITIZER_INTERCEPT_VIS (SI_NETBSD || SI_FREEBSD) 577344779Sdim#define SANITIZER_INTERCEPT_POPEN SI_POSIX 578344779Sdim#define SANITIZER_INTERCEPT_POPENVE SI_NETBSD 579344779Sdim#define SANITIZER_INTERCEPT_PCLOSE SI_POSIX 580344779Sdim#define SANITIZER_INTERCEPT_FUNOPEN (SI_NETBSD || SI_FREEBSD) 581344779Sdim#define SANITIZER_INTERCEPT_FUNOPEN2 SI_NETBSD 582344779Sdim#define SANITIZER_INTERCEPT_GETFSENT (SI_FREEBSD || SI_NETBSD || SI_MAC) 583360784Sdim#define SANITIZER_INTERCEPT_ARC4RANDOM (SI_FREEBSD || SI_NETBSD || SI_MAC) 584344779Sdim#define SANITIZER_INTERCEPT_FDEVNAME SI_FREEBSD 585360784Sdim#define SANITIZER_INTERCEPT_GETUSERSHELL (SI_POSIX && !SI_ANDROID) 586344779Sdim#define SANITIZER_INTERCEPT_SL_INIT (SI_FREEBSD || SI_NETBSD) 587360784Sdim#define SANITIZER_INTERCEPT_CRYPT (SI_POSIX && !SI_ANDROID) 588360784Sdim#define SANITIZER_INTERCEPT_CRYPT_R (SI_LINUX && !SI_ANDROID) 589341825Sdim 590360784Sdim#define SANITIZER_INTERCEPT_GETRANDOM \ 591360784Sdim ((SI_LINUX && __GLIBC_PREREQ(2, 25)) || SI_FREEBSD) 592360784Sdim#define SANITIZER_INTERCEPT___CXA_ATEXIT SI_NETBSD 593360784Sdim#define SANITIZER_INTERCEPT_ATEXIT SI_NETBSD 594360784Sdim#define SANITIZER_INTERCEPT_PTHREAD_ATFORK SI_NETBSD 595360784Sdim#define SANITIZER_INTERCEPT_GETENTROPY SI_FREEBSD 596360784Sdim#define SANITIZER_INTERCEPT_QSORT \ 597360784Sdim (SI_POSIX && !SI_IOSSIM && !SI_WATCHOS && !SI_TVOS) 598360784Sdim#define SANITIZER_INTERCEPT_QSORT_R (SI_LINUX && !SI_ANDROID) 599360784Sdim 600251034Sed#endif // #ifndef SANITIZER_PLATFORM_INTERCEPTORS_H 601