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)