blob: 16555c0856bdb2b8c05c88c68902b73ad9c3322a [file] [log] [blame]
Alexey Samsonov74737d52012-12-13 08:50:16 +00001//===-- 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 Vyukovedd28212013-04-24 11:06:05 +000014#ifndef SANITIZER_PLATFORM_INTERCEPTORS_H
15#define SANITIZER_PLATFORM_INTERCEPTORS_H
Alexey Samsonov74737d52012-12-13 08:50:16 +000016
17#include "sanitizer_internal_defs.h"
18
Evgeniy Stepanov24e13722013-03-19 14:33:38 +000019#if !SANITIZER_WINDOWS
Kostya Serebryanyc20b3212013-01-18 06:43:13 +000020# define SI_NOT_WINDOWS 1
Evgeniy Stepanov9358c582013-02-19 09:19:16 +000021# include "sanitizer_platform_limits_posix.h"
Alexey Samsonov74737d52012-12-13 08:50:16 +000022#else
Kostya Serebryanyc20b3212013-01-18 06:43:13 +000023# define SI_NOT_WINDOWS 0
Alexey Samsonov74737d52012-12-13 08:50:16 +000024#endif
25
Evgeniy Stepanov24e13722013-03-19 14:33:38 +000026#if SANITIZER_LINUX && !SANITIZER_ANDROID
Kostya Serebryanyc20b3212013-01-18 06:43:13 +000027# define SI_LINUX_NOT_ANDROID 1
Alexey Samsonov74737d52012-12-13 08:50:16 +000028#else
Kostya Serebryanyc20b3212013-01-18 06:43:13 +000029# define SI_LINUX_NOT_ANDROID 0
Alexey Samsonov74737d52012-12-13 08:50:16 +000030#endif
31
Evgeniy Stepanov24e13722013-03-19 14:33:38 +000032#if SANITIZER_LINUX
Alexander Potapenko9eab8582013-02-20 15:27:58 +000033# define SI_LINUX 1
34#else
35# define SI_LINUX 0
36#endif
37
Evgeniy Stepanove4bdda52013-04-01 14:47:21 +000038#if SANITIZER_MAC
39# define SI_MAC 1
40#else
41# define SI_MAC 0
42#endif
43
Evgeniy Stepanovf4954792013-05-21 09:01:23 +000044# define SANITIZER_INTERCEPT_STRCASECMP SI_NOT_WINDOWS
45
Kostya Serebryanyc20b3212013-01-18 06:43:13 +000046# define SANITIZER_INTERCEPT_READ SI_NOT_WINDOWS
47# define SANITIZER_INTERCEPT_PREAD SI_NOT_WINDOWS
48# define SANITIZER_INTERCEPT_WRITE SI_NOT_WINDOWS
49# define SANITIZER_INTERCEPT_PWRITE SI_NOT_WINDOWS
50
Evgeniy Stepanovb916e6a2013-06-24 10:43:23 +000051#define SANITIZER_INTERCEPT_PREAD64 SI_LINUX_NOT_ANDROID
52#define SANITIZER_INTERCEPT_PWRITE64 SI_LINUX_NOT_ANDROID
53
54#define SANITIZER_INTERCEPT_READV SI_NOT_WINDOWS
55#define SANITIZER_INTERCEPT_WRITEV SI_NOT_WINDOWS
56
57#define SANITIZER_INTERCEPT_PREADV SI_LINUX_NOT_ANDROID
58#define SANITIZER_INTERCEPT_PWRITEV SI_LINUX_NOT_ANDROID
59#define SANITIZER_INTERCEPT_PREADV64 SI_LINUX_NOT_ANDROID
60#define SANITIZER_INTERCEPT_PWRITEV64 SI_LINUX_NOT_ANDROID
61
Evgeniy Stepanova5480592013-03-20 07:35:52 +000062# define SANITIZER_INTERCEPT_PRCTL SI_LINUX
Kostya Serebryanyc20b3212013-01-18 06:43:13 +000063
Evgeniy Stepanov9358c582013-02-19 09:19:16 +000064# define SANITIZER_INTERCEPT_LOCALTIME_AND_FRIENDS SI_NOT_WINDOWS
65
Evgeniy Stepanov5fffb9f2013-01-21 13:30:08 +000066# define SANITIZER_INTERCEPT_SCANF SI_NOT_WINDOWS
Alexander Potapenko9eab8582013-02-20 15:27:58 +000067# define SANITIZER_INTERCEPT_ISOC99_SCANF SI_LINUX
Evgeniy Stepanov7cbbb292013-03-14 11:34:39 +000068
69# define SANITIZER_INTERCEPT_FREXP 1
Alexey Samsonovff5d1fc2013-03-15 14:02:21 +000070# define SANITIZER_INTERCEPT_FREXPF_FREXPL SI_NOT_WINDOWS
Evgeniy Stepanove4bdda52013-04-01 14:47:21 +000071
Evgeniy Stepanov103a63e2013-04-23 12:01:20 +000072# define SANITIZER_INTERCEPT_GETPWNAM_AND_FRIENDS SI_NOT_WINDOWS
73# define SANITIZER_INTERCEPT_GETPWNAM_R_AND_FRIENDS \
Alexey Samsonov82185842013-04-03 08:26:03 +000074 SI_MAC || SI_LINUX_NOT_ANDROID
Evgeniy Stepanove4bdda52013-04-01 14:47:21 +000075# define SANITIZER_INTERCEPT_CLOCK_GETTIME SI_LINUX
76# define SANITIZER_INTERCEPT_GETITIMER SI_NOT_WINDOWS
Evgeniy Stepanovfef66052013-04-08 08:25:22 +000077# define SANITIZER_INTERCEPT_TIME SI_NOT_WINDOWS
Evgeniy Stepanova1c2a552013-04-09 11:35:13 +000078# define SANITIZER_INTERCEPT_GLOB SI_LINUX_NOT_ANDROID
Evgeniy Stepanov897a4ae2013-04-09 14:34:59 +000079# define SANITIZER_INTERCEPT_WAIT SI_NOT_WINDOWS
Evgeniy Stepanov9530eb72013-04-23 14:05:15 +000080# define SANITIZER_INTERCEPT_INET SI_NOT_WINDOWS
Evgeniy Stepanovf4954792013-05-21 09:01:23 +000081# define SANITIZER_INTERCEPT_PTHREAD_GETSCHEDPARAM SI_NOT_WINDOWS
Evgeniy Stepanov447ef192013-05-22 12:50:26 +000082# define SANITIZER_INTERCEPT_GETADDRINFO SI_NOT_WINDOWS
Evgeniy Stepanov9f58c5c2013-05-22 13:46:22 +000083# define SANITIZER_INTERCEPT_GETSOCKNAME SI_NOT_WINDOWS
Evgeniy Stepanov0a2cc372013-05-23 11:10:23 +000084# define SANITIZER_INTERCEPT_GETHOSTBYNAME SI_NOT_WINDOWS
85# define SANITIZER_INTERCEPT_GETHOSTBYNAME_R SI_LINUX
Evgeniy Stepanovf32be422013-05-23 11:38:08 +000086# define SANITIZER_INTERCEPT_GETSOCKOPT SI_NOT_WINDOWS
Evgeniy Stepanov9d1525e2013-05-29 09:09:58 +000087# define SANITIZER_INTERCEPT_ACCEPT SI_NOT_WINDOWS
88# define SANITIZER_INTERCEPT_ACCEPT4 SI_LINUX
Evgeniy Stepanovc87088b2013-05-29 10:03:11 +000089# define SANITIZER_INTERCEPT_MODF SI_NOT_WINDOWS
Evgeniy Stepanov9666d892013-05-29 11:30:00 +000090# define SANITIZER_INTERCEPT_RECVMSG SI_NOT_WINDOWS
Evgeniy Stepanovbc33e132013-05-29 11:49:25 +000091# define SANITIZER_INTERCEPT_GETPEERNAME SI_NOT_WINDOWS
Evgeniy Stepanov745dd0d2013-06-07 13:00:47 +000092# define SANITIZER_INTERCEPT_IOCTL SI_NOT_WINDOWS
Evgeniy Stepanov9d600872013-06-24 13:56:14 +000093# define SANITIZER_INTERCEPT_INET_ATON SI_NOT_WINDOWS
Evgeniy Stepanov359d7fc2013-06-24 14:25:33 +000094# define SANITIZER_INTERCEPT_SYSINFO SI_LINUX
Evgeniy Stepanovb5cf98f2013-06-26 15:00:53 +000095# define SANITIZER_INTERCEPT_READDIR SI_NOT_WINDOWS
96# define SANITIZER_INTERCEPT_READDIR64 SI_LINUX_NOT_ANDROID
Evgeniy Stepanov3678cf92013-06-28 12:16:03 +000097# define SANITIZER_INTERCEPT_PTRACE SI_LINUX_NOT_ANDROID
Dmitry Vyukovedd28212013-04-24 11:06:05 +000098
99#endif // #ifndef SANITIZER_PLATFORM_INTERCEPTORS_H