19358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov//===-- sanitizer_platform_limits_posix.h ---------------------------------===// 278c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// 378c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// The LLVM Compiler Infrastructure 478c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// 578c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// This file is distributed under the University of Illinois Open Source 678c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// License. See LICENSE.TXT for details. 778c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// 878c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov//===----------------------------------------------------------------------===// 978c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// 109358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov// This file is a part of Sanitizer common code. 1178c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// 129358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov// Sizes and layouts of platform-specific POSIX data structures. 1378c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov//===----------------------------------------------------------------------===// 1478c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov 159358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov#ifndef SANITIZER_PLATFORM_LIMITS_POSIX_H 169358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov#define SANITIZER_PLATFORM_LIMITS_POSIX_H 1778c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov 1870db33e143303752c7fe8800d15b5b31066b1e0dSergey Matveev#include "sanitizer_internal_defs.h" 1924e13723f8477d8c42ab8b2a7f4f69fc089842f1Evgeniy Stepanov#include "sanitizer_platform.h" 2024e13723f8477d8c42ab8b2a7f4f69fc089842f1Evgeniy Stepanov 2186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines#if SANITIZER_FREEBSD 2286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// FreeBSD's dlopen() returns a pointer to an Obj_Entry structure that 2386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// incroporates the map structure. 2486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines# define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) \ 2586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines ((link_map*)((handle) == nullptr ? nullptr : ((char*)(handle) + 544))) 2686277eb844c4983c81de62d7c050e92fe7155788Stephen Hines#else 2786277eb844c4983c81de62d7c050e92fe7155788Stephen Hines# define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) ((link_map*)(handle)) 2886277eb844c4983c81de62d7c050e92fe7155788Stephen Hines#endif // !SANITIZER_FREEBSD 2986277eb844c4983c81de62d7c050e92fe7155788Stephen Hines 309358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanovnamespace __sanitizer { 3178c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_utsname_sz; 3278c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_stat_sz; 332d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if !SANITIZER_FREEBSD && !SANITIZER_IOS 3478c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_stat64_sz; 35b8a141f3783d796eabf45fabff82f3e08244e338Alexander Potapenko#endif 369358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov extern unsigned struct_rusage_sz; 37897a4ae31f5c55255c78854b69b4cd4a4e3c7c39Evgeniy Stepanov extern unsigned siginfo_t_sz; 38e4bdda51b3469aa0f6ef6f6c4656419effa48038Evgeniy Stepanov extern unsigned struct_itimerval_sz; 39e4bdda51b3469aa0f6ef6f6c4656419effa48038Evgeniy Stepanov extern unsigned pthread_t_sz; 405e2d3776a314629680921abd1d55d89d95a2da90Alexey Samsonov extern unsigned pthread_cond_t_sz; 41745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned pid_t_sz; 42745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned timeval_sz; 43745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned uid_t_sz; 442d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned gid_t_sz; 4557a1095fca7b95db8a0ec87fce7a6f0e331a5b99Evgeniy Stepanov extern unsigned mbstate_t_sz; 46639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned struct_timezone_sz; 47639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned struct_tms_sz; 48639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned struct_itimerspec_sz; 49639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned struct_sigevent_sz; 50639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned struct_sched_param_sz; 511bb2229028dd78280d24c26b9efbe8476d966e05Evgeniy Stepanov extern unsigned struct_statfs64_sz; 524fb04a8445076debf51d220f75211584b89043c8Evgeniy Stepanov 534fb04a8445076debf51d220f75211584b89043c8Evgeniy Stepanov#if !SANITIZER_ANDROID 546a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines extern unsigned struct_statfs_sz; 556a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines extern unsigned struct_sockaddr_sz; 56072770202bb1002172abe9a4b1eeb7f2d2fb004fEvgeniy Stepanov extern unsigned ucontext_t_sz; 574fb04a8445076debf51d220f75211584b89043c8Evgeniy Stepanov#endif // !SANITIZER_ANDROID 589358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov 5924e13723f8477d8c42ab8b2a7f4f69fc089842f1Evgeniy Stepanov#if SANITIZER_LINUX 60e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov 61e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov#if defined(__x86_64__) 62e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov const unsigned struct_kernel_stat_sz = 144; 63e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov const unsigned struct_kernel_stat64_sz = 0; 64e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov#elif defined(__i386__) 65e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov const unsigned struct_kernel_stat_sz = 64; 66e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov const unsigned struct_kernel_stat64_sz = 96; 67f17dd743288942a36f82e09706f18477b27f603dEvgeniy Stepanov#elif defined(__arm__) 68f17dd743288942a36f82e09706f18477b27f603dEvgeniy Stepanov const unsigned struct_kernel_stat_sz = 64; 69f17dd743288942a36f82e09706f18477b27f603dEvgeniy Stepanov const unsigned struct_kernel_stat64_sz = 104; 702d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#elif defined(__aarch64__) 712d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned struct_kernel_stat_sz = 128; 722d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned struct_kernel_stat64_sz = 104; 730d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov#elif defined(__powerpc__) && !defined(__powerpc64__) 740d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov const unsigned struct_kernel_stat_sz = 72; 750d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov const unsigned struct_kernel_stat64_sz = 104; 760d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov#elif defined(__powerpc64__) 770d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov const unsigned struct_kernel_stat_sz = 144; 780d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov const unsigned struct_kernel_stat64_sz = 104; 796a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#elif defined(__mips__) 806a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines #if SANITIZER_WORDSIZE == 64 816a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines const unsigned struct_kernel_stat_sz = 216; 826a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines #else 836a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines const unsigned struct_kernel_stat_sz = 144; 846a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines #endif 856a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines const unsigned struct_kernel_stat64_sz = 104; 86e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov#endif 87d7041c6617b10302be6849b55a88dc928fd7f6b8Evgeniy Stepanov struct __sanitizer_perf_event_attr { 88d7041c6617b10302be6849b55a88dc928fd7f6b8Evgeniy Stepanov unsigned type; 89d7041c6617b10302be6849b55a88dc928fd7f6b8Evgeniy Stepanov unsigned size; 90d7041c6617b10302be6849b55a88dc928fd7f6b8Evgeniy Stepanov // More fields that vary with the kernel version. 91d7041c6617b10302be6849b55a88dc928fd7f6b8Evgeniy Stepanov }; 92e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov 9378c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_epoll_event_sz; 94359d7fc7daf099ab8ef9a860564542d2581544aaEvgeniy Stepanov extern unsigned struct_sysinfo_sz; 95639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned __user_cap_header_struct_sz; 96639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned __user_cap_data_struct_sz; 9725ecb75efb30f8a8f80cc89c3a1cb83508e7bacfEvgeniy Stepanov extern unsigned struct_new_utsname_sz; 9825ecb75efb30f8a8f80cc89c3a1cb83508e7bacfEvgeniy Stepanov extern unsigned struct_old_utsname_sz; 9925ecb75efb30f8a8f80cc89c3a1cb83508e7bacfEvgeniy Stepanov extern unsigned struct_oldold_utsname_sz; 10025ecb75efb30f8a8f80cc89c3a1cb83508e7bacfEvgeniy Stepanov 101639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov const unsigned struct_kexec_segment_sz = 4 * sizeof(unsigned long); 1022d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX 1032d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 1042d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX || SANITIZER_FREEBSD 1052d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 1062d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if defined(__powerpc64__) 1072d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned struct___old_kernel_stat_sz = 0; 1082d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 1092d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned struct___old_kernel_stat_sz = 32; 1102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 1112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 1122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_rlimit_sz; 1132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_utimbuf_sz; 1142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_timespec_sz; 115639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov 116bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov struct __sanitizer_iocb { 117bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u64 aio_data; 118bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u32 aio_key_or_aio_reserved1; // Simply crazy. 119bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u32 aio_reserved1_or_aio_key; // Luckily, we don't need these. 120bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u16 aio_lio_opcode; 121bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov s16 aio_reqprio; 122bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u32 aio_fildes; 123bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u64 aio_buf; 124bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u64 aio_nbytes; 125bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov s64 aio_offset; 126bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u64 aio_reserved2; 127c50f7962c823506109b6307209411b36e0d46abdEvgeniy Stepanov u64 aio_reserved3; 128bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov }; 129bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov 1302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_io_event { 1312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 data; 1322d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 obj; 1332d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 res; 1342d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 res2; 1352d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 1362d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 137e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov const unsigned iocb_cmd_pread = 0; 138e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov const unsigned iocb_cmd_pwrite = 1; 1392d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned iocb_cmd_preadv = 7; 1402d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned iocb_cmd_pwritev = 8; 141bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov 142639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov struct __sanitizer___sysctl_args { 143639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov int *name; 144639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov int nlen; 145639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov void *oldval; 146639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov uptr *oldlenp; 147639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov void *newval; 148639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov uptr newlen; 1499a4a1590169e42076aee67a6fd472ece77b9b484Evgeniy Stepanov unsigned long ___unused[4]; 150639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov }; 1512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 1522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned old_sigset_t_sz = sizeof(unsigned long); 1532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX || SANITIZER_FREEBSD 1542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 1552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_ANDROID 1562d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_mallinfo { 1572d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr v[10]; 1582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 1592d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 16078c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov 16124e13723f8477d8c42ab8b2a7f4f69fc089842f1Evgeniy Stepanov#if SANITIZER_LINUX && !SANITIZER_ANDROID 1622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_mallinfo { 1632d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int v[10]; 1642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 1652d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 16625ecb75efb30f8a8f80cc89c3a1cb83508e7bacfEvgeniy Stepanov extern unsigned struct_ustat_sz; 167b711ca6e040d0ac4adb79e688e1a59afcc871d20Evgeniy Stepanov extern unsigned struct_rlimit64_sz; 1680489e113d3e9fa9379fa38bc1a50f81414feab48Evgeniy Stepanov extern unsigned struct_statvfs64_sz; 169f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov 170f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov struct __sanitizer_ipc_perm { 171f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int __key; 172f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int uid; 173f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int gid; 174f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int cuid; 175f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int cgid; 1767f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#ifdef __powerpc__ 1770d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov unsigned mode; 1780d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov unsigned __seq; 1797f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling u64 __unused1; 1807f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling u64 __unused2; 18186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines#elif defined(__mips__) || defined(__aarch64__) 1826a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines unsigned int mode; 1836a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines unsigned short __seq; 1846a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines unsigned short __pad1; 1856a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines unsigned long __unused1; 1866a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines unsigned long __unused2; 1870d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov#else 188f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov unsigned short mode; 189f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov unsigned short __pad1; 190f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov unsigned short __seq; 191f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov unsigned short __pad2; 1927f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#if defined(__x86_64__) && !defined(_LP64) 1937f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling u64 __unused1; 1947f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling u64 __unused2; 1957f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#else 1967f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling unsigned long __unused1; 1977f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling unsigned long __unused2; 1987f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#endif 1990d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov#endif 200f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov }; 201f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov 202f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov struct __sanitizer_shmid_ds { 203f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov __sanitizer_ipc_perm shm_perm; 2040d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov #ifndef __powerpc__ 205f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr shm_segsz; 2067f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling #elif !defined(__powerpc64__) 2077f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling uptr __unused0; 2080d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov #endif 2092d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines #if defined(__x86_64__) && !defined(_LP64) 2102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 shm_atime; 2112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 shm_dtime; 2122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 shm_ctime; 2132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines #else 214f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr shm_atime; 2156a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines #if !defined(_LP64) && !defined(__mips__) 216f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr __unused1; 217f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov #endif 218f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr shm_dtime; 2196a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines #if !defined(_LP64) && !defined(__mips__) 220f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr __unused2; 221f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov #endif 222f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr shm_ctime; 2236a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines #if !defined(_LP64) && !defined(__mips__) 224f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr __unused3; 225f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov #endif 2262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines #endif 2270d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov #ifdef __powerpc__ 2280d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov uptr shm_segsz; 2290d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov #endif 230f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int shm_cpid; 231f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int shm_lpid; 2322d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines #if defined(__x86_64__) && !defined(_LP64) 2332d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 shm_nattch; 2342d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 __unused4; 2352d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 __unused5; 2362d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines #else 237f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr shm_nattch; 238f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr __unused4; 239f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr __unused5; 2402d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines #endif 2412d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 2422d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#elif SANITIZER_FREEBSD 2432d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_ipc_perm { 2442d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int cuid; 2452d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int cgid; 2462d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int uid; 2472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int gid; 2482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned short mode; 2492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned short seq; 2502d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines long key; 251f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov }; 2522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 2532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_shmid_ds { 2542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines __sanitizer_ipc_perm shm_perm; 2552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned long shm_segsz; 2562d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int shm_lpid; 2572d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int shm_cpid; 2582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int shm_nattch; 2592d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned long shm_atime; 2602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned long shm_dtime; 2612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned long shm_ctime; 2622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 2632d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 2642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 2652d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 2662d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_msqid_ds_sz; 2672d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_mq_attr_sz; 2682d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_timex_sz; 2692d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_statvfs_sz; 2702d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 271b711ca6e040d0ac4adb79e688e1a59afcc871d20Evgeniy Stepanov 2729666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov struct __sanitizer_iovec { 2732d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *iov_base; 2749666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov uptr iov_len; 2759666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov }; 2769666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov 2772d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if !SANITIZER_ANDROID 2782d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_ifaddrs { 2792d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_ifaddrs *ifa_next; 2802d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *ifa_name; 2812d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int ifa_flags; 2822d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *ifa_addr; // (struct sockaddr *) 2832d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *ifa_netmask; // (struct sockaddr *) 2842d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // This is a union on Linux. 2852d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# ifdef ifa_dstaddr 2862d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# undef ifa_dstaddr 2872d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# endif 2882d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *ifa_dstaddr; // (struct sockaddr *) 2892d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *ifa_data; 2902d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 2912d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // !SANITIZER_ANDROID 2922d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 2938be684c5970389c6c86b01592e98ed5a3bc4f78dEvgeniy Stepanov#if SANITIZER_MAC 2948be684c5970389c6c86b01592e98ed5a3bc4f78dEvgeniy Stepanov typedef unsigned long __sanitizer_pthread_key_t; 2958be684c5970389c6c86b01592e98ed5a3bc4f78dEvgeniy Stepanov#else 296737da2f031badfad5bc5b762cc50d789fbcb6ef8Evgeniy Stepanov typedef unsigned __sanitizer_pthread_key_t; 2978be684c5970389c6c86b01592e98ed5a3bc4f78dEvgeniy Stepanov#endif 298737da2f031badfad5bc5b762cc50d789fbcb6ef8Evgeniy Stepanov 2992d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX && !SANITIZER_ANDROID 3002d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 3012d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_XDR { 3022d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int x_op; 3032d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *x_ops; 3042d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr x_public; 3052d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr x_private; 3062d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr x_base; 3072d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned x_handy; 3082d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 3092d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 3102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const int __sanitizer_XDR_ENCODE = 0; 3112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const int __sanitizer_XDR_DECODE = 1; 3122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const int __sanitizer_XDR_FREE = 2; 3132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 3142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 3152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_passwd { 3162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *pw_name; 3172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *pw_passwd; 3182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int pw_uid; 3192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int pw_gid; 3202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_MAC || SANITIZER_FREEBSD 3212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines long pw_change; 3222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *pw_class; 3232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 3242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if !SANITIZER_ANDROID 3252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *pw_gecos; 3262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 3272d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *pw_dir; 3282d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *pw_shell; 3292d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_MAC || SANITIZER_FREEBSD 3302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines long pw_expire; 3312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 3322d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_FREEBSD 3332d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int pw_fields; 3342d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 3352d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 3362d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 3372d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_group { 3382d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *gr_name; 3392d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *gr_passwd; 3402d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int gr_gid; 3412d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char **gr_mem; 3422d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 3432d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 3442d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if defined(__x86_64__) && !defined(_LP64) 3452d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef long long __sanitizer_time_t; 3462d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 3472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef long __sanitizer_time_t; 3482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 3492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 3502d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_timeb { 3512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines __sanitizer_time_t time; 3522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned short millitm; 3532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines short timezone; 3542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines short dstflag; 3552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 3562d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 357369a9a6d4297af031227db1c6fedd21ee7033dc1Evgeniy Stepanov struct __sanitizer_ether_addr { 358369a9a6d4297af031227db1c6fedd21ee7033dc1Evgeniy Stepanov u8 octet[6]; 359369a9a6d4297af031227db1c6fedd21ee7033dc1Evgeniy Stepanov }; 360369a9a6d4297af031227db1c6fedd21ee7033dc1Evgeniy Stepanov 361cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov struct __sanitizer_tm { 362cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_sec; 363cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_min; 364cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_hour; 365cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_mday; 366cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_mon; 367cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_year; 368cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_wday; 369cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_yday; 370cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_isdst; 371cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov long int tm_gmtoff; 372cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov const char *tm_zone; 373cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov }; 374cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov 3754d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov#if SANITIZER_LINUX 3764d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov struct __sanitizer_mntent { 3774d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov char *mnt_fsname; 3784d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov char *mnt_dir; 3794d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov char *mnt_type; 3804d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov char *mnt_opts; 3814d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov int mnt_freq; 3824d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov int mnt_passno; 3834d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov }; 3844d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov#endif 3854d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov 3862d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_ANDROID || SANITIZER_MAC || SANITIZER_FREEBSD 387e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov struct __sanitizer_msghdr { 388e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov void *msg_name; 389e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov unsigned msg_namelen; 390e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov struct __sanitizer_iovec *msg_iov; 391e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov unsigned msg_iovlen; 392e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov void *msg_control; 393e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov unsigned msg_controllen; 394e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov int msg_flags; 395e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov }; 396e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov struct __sanitizer_cmsghdr { 397e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov unsigned cmsg_len; 398e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov int cmsg_level; 399e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov int cmsg_type; 400e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov }; 401e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov#else 4029666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov struct __sanitizer_msghdr { 4039666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov void *msg_name; 4049666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov unsigned msg_namelen; 4059666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov struct __sanitizer_iovec *msg_iov; 4069666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov uptr msg_iovlen; 4079666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov void *msg_control; 4089666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov uptr msg_controllen; 4099666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov int msg_flags; 4109666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov }; 4119666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov struct __sanitizer_cmsghdr { 4129666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov uptr cmsg_len; 4139666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov int cmsg_level; 4149666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov int cmsg_type; 4159666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov }; 416e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov#endif 41710fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov 418a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov#if SANITIZER_MAC 419a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov struct __sanitizer_dirent { 420b6bde4d2bc5231cd1b38ff92e51afb3f6e157386Alexey Samsonov unsigned long long d_ino; 421b6bde4d2bc5231cd1b38ff92e51afb3f6e157386Alexey Samsonov unsigned long long d_seekoff; 422a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov unsigned short d_reclen; 423a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov // more fields that we don't care about 424a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov }; 4252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#elif SANITIZER_FREEBSD 4262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_dirent { 4272d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int d_fileno; 4282d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned short d_reclen; 4292d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // more fields that we don't care about 4302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 431e041c6024b3ebf1365c0f99732fc69c607577571Kostya Serebryany#elif SANITIZER_ANDROID || defined(__x86_64__) 432a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov struct __sanitizer_dirent { 433a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov unsigned long long d_ino; 434a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov unsigned long long d_off; 435a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov unsigned short d_reclen; 436a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov // more fields that we don't care about 437a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov }; 438a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov#else 439a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov struct __sanitizer_dirent { 440a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov uptr d_ino; 441a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov uptr d_off; 442a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov unsigned short d_reclen; 443a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov // more fields that we don't care about 444a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov }; 445a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov#endif 446a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov 447a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov#if SANITIZER_LINUX && !SANITIZER_ANDROID 448a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov struct __sanitizer_dirent64 { 4495a482cd54a75bf821fb8c61f2fe4e84ae9efb714Chandler Carruth unsigned long long d_ino; 4505a482cd54a75bf821fb8c61f2fe4e84ae9efb714Chandler Carruth unsigned long long d_off; 451a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov unsigned short d_reclen; 452a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov // more fields that we don't care about 453a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov }; 454a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov#endif 455a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov 4562d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// 'clock_t' is 32 bits wide on x64 FreeBSD 4572d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_FREEBSD 4582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef int __sanitizer_clock_t; 4592d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#elif defined(__x86_64__) && !defined(_LP64) 4602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef long long __sanitizer_clock_t; 4612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 4622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef long __sanitizer_clock_t; 4632d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 4642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 4656a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#if SANITIZER_LINUX 4666a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines typedef int __sanitizer_clockid_t; 4676a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#endif 4686a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines 4692d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX || SANITIZER_FREEBSD 4706a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#if defined(_LP64) || defined(__x86_64__) || defined(__powerpc__)\ 4716a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines || defined(__mips__) 472a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef unsigned __sanitizer___kernel_uid_t; 473a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef unsigned __sanitizer___kernel_gid_t; 474a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov#else 47585626e8127d1f795a447c1bacb5a2606c7b954d9Evgeniy Stepanov typedef unsigned short __sanitizer___kernel_uid_t; 476a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef unsigned short __sanitizer___kernel_gid_t; 4777f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#endif 4787f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#if defined(__x86_64__) && !defined(_LP64) 4797f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling typedef long long __sanitizer___kernel_off_t; 4807f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#else 481e041c6024b3ebf1365c0f99732fc69c607577571Kostya Serebryany typedef long __sanitizer___kernel_off_t; 482a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov#endif 4830d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov 4846d1862363c88c183b0ed7740fca876342cf0474bStephen Hines#if defined(__powerpc__) || defined(__mips__) 4850d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov typedef unsigned int __sanitizer___kernel_old_uid_t; 4860d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov typedef unsigned int __sanitizer___kernel_old_gid_t; 4870d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov#else 488a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef unsigned short __sanitizer___kernel_old_uid_t; 489a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef unsigned short __sanitizer___kernel_old_gid_t; 4900d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov#endif 4910d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov 492a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef long long __sanitizer___kernel_loff_t; 493a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef struct { 494a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov unsigned long fds_bits[1024 / (8 * sizeof(long))]; 495a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov } __sanitizer___kernel_fd_set; 496a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov#endif 497a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov 49810fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov // This thing depends on the platform. We are only interested in the upper 49910fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov // limit. Verified with a compiler assert in .cc. 50010fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov const int pthread_attr_t_max_sz = 128; 50110fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov union __sanitizer_pthread_attr_t { 5020ecc4379bbb04f1d03ceb58f6a0751790fb17c75Evgeniy Stepanov char size[pthread_attr_t_max_sz]; // NOLINT 50310fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov void *align; 50410fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov }; 50506658ea68c4912fffafef6e65f36dce7faa4a174Evgeniy Stepanov 506b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov#if SANITIZER_ANDROID 507b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov typedef unsigned long __sanitizer_sigset_t; 508b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov#elif SANITIZER_MAC 509b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov typedef unsigned __sanitizer_sigset_t; 510b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov#elif SANITIZER_LINUX 511b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov struct __sanitizer_sigset_t { 512b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov // The size is determined by looking at sizeof of real sigset_t on linux. 513b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov uptr val[128 / sizeof(uptr)]; 514b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov }; 5152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#elif SANITIZER_FREEBSD 5162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_sigset_t { 5172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // uint32_t * 4 5182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int __bits[4]; 5192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 520b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov#endif 52106658ea68c4912fffafef6e65f36dce7faa4a174Evgeniy Stepanov 5222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // Linux system headers define the 'sa_handler' and 'sa_sigaction' macros. 523b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov struct __sanitizer_sigaction { 5246a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#if defined(__mips__) && !SANITIZER_FREEBSD 5256a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines unsigned int sa_flags; 5266a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#endif 527b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov union { 5282d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void (*sigaction)(int sig, void *siginfo, void *uctx); 5292d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void (*handler)(int sig); 530b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov }; 5312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_FREEBSD 5322d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int sa_flags; 5332d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines __sanitizer_sigset_t sa_mask; 5342d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 535b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov __sanitizer_sigset_t sa_mask; 5366a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#ifndef __mips__ 537b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov int sa_flags; 5382d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 5396a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#endif 540b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov#if SANITIZER_LINUX 541b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov void (*sa_restorer)(); 542b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov#endif 5436a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#if defined(__mips__) && (SANITIZER_WORDSIZE == 32) 5446a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines int sa_resv[1]; 5456a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#endif 54606658ea68c4912fffafef6e65f36dce7faa4a174Evgeniy Stepanov }; 54706658ea68c4912fffafef6e65f36dce7faa4a174Evgeniy Stepanov 5482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_FREEBSD 5492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef __sanitizer_sigset_t __sanitizer_kernel_sigset_t; 55086277eb844c4983c81de62d7c050e92fe7155788Stephen Hines#elif defined(__mips__) 55186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines struct __sanitizer_kernel_sigset_t { 55286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines u8 sig[16]; 55386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines }; 5542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 5555f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov struct __sanitizer_kernel_sigset_t { 5565f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov u8 sig[8]; 5575f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov }; 5582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 5595f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov 5602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // Linux system headers define the 'sa_handler' and 'sa_sigaction' macros. 5615f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov struct __sanitizer_kernel_sigaction_t { 5625f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov union { 5635f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov void (*handler)(int signo); 5642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void (*sigaction)(int signo, void *info, void *ctx); 5655f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov }; 5665f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov unsigned long sa_flags; 5675f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov void (*sa_restorer)(void); 5685f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov __sanitizer_kernel_sigset_t sa_mask; 5695f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov }; 5705f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov 57106658ea68c4912fffafef6e65f36dce7faa4a174Evgeniy Stepanov extern uptr sig_ign; 57206658ea68c4912fffafef6e65f36dce7faa4a174Evgeniy Stepanov extern uptr sig_dfl; 573b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov extern uptr sa_siginfo; 5749530eb721dfacdf2c3f46d408e22d3f7cf8be667Evgeniy Stepanov 575745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov#if SANITIZER_LINUX 576745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern int e_tabsz; 577745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov#endif 578745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov 5799d60087654f89e3452841350d9eca97644edca9dEvgeniy Stepanov extern int af_inet; 5809d60087654f89e3452841350d9eca97644edca9dEvgeniy Stepanov extern int af_inet6; 5819530eb721dfacdf2c3f46d408e22d3f7cf8be667Evgeniy Stepanov uptr __sanitizer_in_addr_sz(int af); 5821aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov 5832d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX || SANITIZER_FREEBSD 5841aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov struct __sanitizer_dl_phdr_info { 5851aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov uptr dlpi_addr; 5861aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov const char *dlpi_name; 5871aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov const void *dlpi_phdr; 5881aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov short dlpi_phnum; 5891aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov }; 5901aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov#endif 591447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov 592447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov struct __sanitizer_addrinfo { 593447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov int ai_flags; 594447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov int ai_family; 595447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov int ai_socktype; 596447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov int ai_protocol; 5972d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_ANDROID || SANITIZER_MAC || SANITIZER_FREEBSD 59873c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov unsigned ai_addrlen; 59973c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov char *ai_canonname; 60073c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov void *ai_addr; 60173c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov#else // LINUX 60200c35cfe108797f6677252fd77214c0cbccb5c5bEvgeniy Stepanov unsigned ai_addrlen; 60373c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov void *ai_addr; 60473c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov char *ai_canonname; 60573c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov#endif 606447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov struct __sanitizer_addrinfo *ai_next; 607447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov }; 6080a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov 6090a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov struct __sanitizer_hostent { 6100a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov char *h_name; 6110a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov char **h_aliases; 6120a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov int h_addrtype; 6130a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov int h_length; 6140a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov char **h_addr_list; 6150a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov }; 6160a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov 617e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov struct __sanitizer_pollfd { 618e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov int fd; 619e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov short events; 620e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov short revents; 621e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov }; 622e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov 6232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_ANDROID || SANITIZER_MAC || SANITIZER_FREEBSD 624e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov typedef unsigned __sanitizer_nfds_t; 625e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov#else 626e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov typedef unsigned long __sanitizer_nfds_t; 627e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov#endif 628e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov 6292d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if !SANITIZER_ANDROID 6302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# if SANITIZER_LINUX 631906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov struct __sanitizer_glob_t { 632906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov uptr gl_pathc; 633906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov char **gl_pathv; 6343fa122e6a8e12db6583793861f6cf776fe1c98a0Evgeniy Stepanov uptr gl_offs; 6353fa122e6a8e12db6583793861f6cf776fe1c98a0Evgeniy Stepanov int gl_flags; 636eaca82cf249021afa31dbc970278f2f28ea2a1aaTimur Iskhodzhanov 637eaca82cf249021afa31dbc970278f2f28ea2a1aaTimur Iskhodzhanov void (*gl_closedir)(void *dirp); 638eaca82cf249021afa31dbc970278f2f28ea2a1aaTimur Iskhodzhanov void *(*gl_readdir)(void *dirp); 6393fa122e6a8e12db6583793861f6cf776fe1c98a0Evgeniy Stepanov void *(*gl_opendir)(const char *); 6403fa122e6a8e12db6583793861f6cf776fe1c98a0Evgeniy Stepanov int (*gl_lstat)(const char *, void *); 6413fa122e6a8e12db6583793861f6cf776fe1c98a0Evgeniy Stepanov int (*gl_stat)(const char *, void *); 642906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov }; 6432d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# elif SANITIZER_FREEBSD 6442d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_glob_t { 6452d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr gl_pathc; 6462d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr gl_matchc; 6472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr gl_offs; 6482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int gl_flags; 6492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char **gl_pathv; 6502d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int (*gl_errfunc)(const char*, int); 6512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void (*gl_closedir)(void *dirp); 6522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct dirent *(*gl_readdir)(void *dirp); 6532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *(*gl_opendir)(const char*); 6542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int (*gl_lstat)(const char*, void* /* struct stat* */); 6552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int (*gl_stat)(const char*, void* /* struct stat* */); 6562d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 6572d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# endif // SANITIZER_FREEBSD 658906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov 6592d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# if SANITIZER_LINUX || SANITIZER_FREEBSD 660906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov extern int glob_nomatch; 6613fa122e6a8e12db6583793861f6cf776fe1c98a0Evgeniy Stepanov extern int glob_altdirfunc; 6622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# endif 6632d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // !SANITIZER_ANDROID 664906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov 66512eb79dd701d9d40551759330a9257316601373bEvgeniy Stepanov extern unsigned path_max; 66612eb79dd701d9d40551759330a9257316601373bEvgeniy Stepanov 667c5a385500057ba60c71abbb1d1cc0ee3773be792Evgeniy Stepanov struct __sanitizer_wordexp_t { 668c5a385500057ba60c71abbb1d1cc0ee3773be792Evgeniy Stepanov uptr we_wordc; 669c5a385500057ba60c71abbb1d1cc0ee3773be792Evgeniy Stepanov char **we_wordv; 670c5a385500057ba60c71abbb1d1cc0ee3773be792Evgeniy Stepanov uptr we_offs; 6712d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_FREEBSD 6722d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *we_strings; 6732d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr we_nbytes; 6742d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 675c5a385500057ba60c71abbb1d1cc0ee3773be792Evgeniy Stepanov }; 676c5a385500057ba60c71abbb1d1cc0ee3773be792Evgeniy Stepanov 6772d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX && !SANITIZER_ANDROID 6782d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_FILE { 6792d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int _flags; 6802d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_read_ptr; 6812d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_read_end; 6822d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_read_base; 6832d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_write_base; 6842d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_write_ptr; 6852d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_write_end; 6862d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_buf_base; 6872d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_buf_end; 6882d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_save_base; 6892d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_backup_base; 6902d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_save_end; 6912d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *_markers; 6922d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines __sanitizer_FILE *_chain; 6932d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int _fileno; 6942d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 6952d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# define SANITIZER_HAS_STRUCT_FILE 1 6962d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 6972d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef void __sanitizer_FILE; 6982d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# define SANITIZER_HAS_STRUCT_FILE 0 6992d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 7002d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 70122d8767a45f08218b4d725146c5a8484a183be29Evgeniy Stepanov#if SANITIZER_LINUX && !SANITIZER_ANDROID && \ 70286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines (defined(__i386) || defined(__x86_64) || defined(__mips64)) 703341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern unsigned struct_user_regs_struct_sz; 704341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern unsigned struct_user_fpregs_struct_sz; 705341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern unsigned struct_user_fpxregs_struct_sz; 706341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov 7073ee98e37856935ac1d79d51364df73ce00d8218eEvgeniy Stepanov extern int ptrace_peektext; 7083ee98e37856935ac1d79d51364df73ce00d8218eEvgeniy Stepanov extern int ptrace_peekdata; 7093ee98e37856935ac1d79d51364df73ce00d8218eEvgeniy Stepanov extern int ptrace_peekuser; 710341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_getregs; 711341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_setregs; 712341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_getfpregs; 713341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_setfpregs; 714341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_getfpxregs; 715341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_setfpxregs; 716341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_getsiginfo; 717341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_setsiginfo; 718341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_getregset; 719341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_setregset; 7206a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines extern int ptrace_geteventmsg; 721341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov#endif 722341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov 7232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 72410362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov extern unsigned struct_shminfo_sz; 72510362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov extern unsigned struct_shm_info_sz; 72610362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov extern int shmctl_ipc_stat; 72710362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov extern int shmctl_ipc_info; 72810362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov extern int shmctl_shm_info; 72910362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov extern int shmctl_shm_stat; 73010362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov#endif 73110362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov 7322d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern int map_fixed; 7332d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 734745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov // ioctl arguments 7354757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov struct __sanitizer_ifconf { 7364757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov int ifc_len; 7374757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov union { 7384757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov void *ifcu_req; 7394757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov } ifc_ifcu; 74089d1eee9f468823cc7f01b0d5281a5c9f64a4c31Evgeniy Stepanov#if SANITIZER_MAC 74189d1eee9f468823cc7f01b0d5281a5c9f64a4c31Evgeniy Stepanov } __attribute__((packed)); 74289d1eee9f468823cc7f01b0d5281a5c9f64a4c31Evgeniy Stepanov#else 7434757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov }; 74489d1eee9f468823cc7f01b0d5281a5c9f64a4c31Evgeniy Stepanov#endif 7454757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov 7462d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX && !SANITIZER_ANDROID 7472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesstruct __sanitizer__obstack_chunk { 7482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *limit; 7492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer__obstack_chunk *prev; 7502d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines}; 7512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 7522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesstruct __sanitizer_obstack { 7532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines long chunk_size; 7542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer__obstack_chunk *chunk; 7552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *object_base; 7562d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *next_free; 7572d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr more_fields[7]; 7582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines}; 7592d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 7602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 7612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_NRBITS 8 7622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_TYPEBITS 8 7636a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) 7642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_SIZEBITS 13 7652d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_DIRBITS 3 7662d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_NONE 1U 7672d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_WRITE 4U 7682d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_READ 2U 7692d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 7702d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_SIZEBITS 14 7712d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_DIRBITS 2 7722d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_NONE 0U 7732d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_WRITE 1U 7742d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_READ 2U 7752d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 7762d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_NRMASK ((1 << IOC_NRBITS) - 1) 7772d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_TYPEMASK ((1 << IOC_TYPEBITS) - 1) 7782d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_SIZEMASK ((1 << IOC_SIZEBITS) - 1) 7792d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if defined(IOC_DIRMASK) 7802d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#undef IOC_DIRMASK 7812d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 7822d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_DIRMASK ((1 << IOC_DIRBITS) - 1) 7832d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_NRSHIFT 0 7842d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_TYPESHIFT (IOC_NRSHIFT + IOC_NRBITS) 7852d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_SIZESHIFT (IOC_TYPESHIFT + IOC_TYPEBITS) 7862d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_DIRSHIFT (IOC_SIZESHIFT + IOC_SIZEBITS) 7872d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define EVIOC_EV_MAX 0x1f 7882d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define EVIOC_ABS_MAX 0x3f 7892d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 7902d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK) 7912d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK) 7922d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK) 7932d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK) 7944612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov 795745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_arpreq_sz; 796745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_ifreq_sz; 797745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_termios_sz; 798745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_winsize_sz; 799745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov 800745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov#if SANITIZER_LINUX 801745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_msf_sz; 802745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_multisession_sz; 803745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_read_audio_sz; 804745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_subchnl_sz; 805745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_ti_sz; 806745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_tocentry_sz; 807745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_tochdr_sz; 808745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_volctrl_sz; 8094612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned struct_ff_effect_sz; 810745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_drive_params_sz; 811745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_drive_struct_sz; 812745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_fdc_state_sz; 813745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_max_errors_sz; 814745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_raw_cmd_sz; 815745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_struct_sz; 816745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_write_errors_sz; 817745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_format_descr_sz; 818745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_hd_driveid_sz; 819745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_hd_geometry_sz; 8204612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned struct_input_absinfo_sz; 8214612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned struct_input_id_sz; 8222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_mtpos_sz; 8232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_termio_sz; 8242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_vt_consize_sz; 8252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_vt_sizes_sz; 8262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_vt_stat_sz; 8272d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX 8282d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 8292d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX || SANITIZER_FREEBSD 8302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_copr_buffer_sz; 8312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_copr_debug_buf_sz; 8322d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_copr_msg_sz; 833745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_midi_info_sz; 834745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_mtget_sz; 835745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_mtop_sz; 836745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_rtentry_sz; 837745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_sbi_instrument_sz; 838745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_seq_event_rec_sz; 839745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_synth_info_sz; 840745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_vt_mode_sz; 8412d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX || SANITIZER_FREEBSD 842745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov 843745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov#if SANITIZER_LINUX && !SANITIZER_ANDROID 844745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_ax25_parms_struct_sz; 845745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cyclades_monitor_sz; 8464612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned struct_input_keymap_entry_sz; 847745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_ipx_config_data_sz; 848745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_kbdiacrs_sz; 849745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_kbentry_sz; 850745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_kbkeycode_sz; 851745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_kbsentry_sz; 852745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_mtconfiginfo_sz; 853745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_nr_parms_struct_sz; 854745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_scc_modem_sz; 855745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_scc_stat_sz; 856745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_serial_multiport_struct_sz; 857745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_serial_struct_sz; 858745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_sockaddr_ax25_sz; 859745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_unimapdesc_sz; 860745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_unimapinit_sz; 8612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX && !SANITIZER_ANDROID 8622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 8632d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 8642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_audio_buf_info_sz; 8652d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_ppp_stats_sz; 8662d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 8674f0fd8e131b6c2f13244a0fd808abe0da7a50983Dmitry Vyukov 868efb0226d4bc5a61e26851271e1aec2dd0e1f6781Bob Wilson#if !SANITIZER_ANDROID && !SANITIZER_MAC 869745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_sioc_sg_req_sz; 870745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_sioc_vif_req_sz; 871745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov#endif 8722557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov 8732557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov // ioctl request identifiers 874bb273d554d61c1a851158b0c79c2d3f51a845bbdEvgeniy Stepanov 875bb273d554d61c1a851158b0c79c2d3f51a845bbdEvgeniy Stepanov // A special value to mark ioctls that are not present on the target platform, 876bb273d554d61c1a851158b0c79c2d3f51a845bbdEvgeniy Stepanov // when it can not be determined without including any system headers. 8776d1862363c88c183b0ed7740fca876342cf0474bStephen Hines extern const unsigned IOCTL_NOT_PRESENT; 878bb273d554d61c1a851158b0c79c2d3f51a845bbdEvgeniy Stepanov 8792557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FIOASYNC; 8802557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FIOCLEX; 8812557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FIOGETOWN; 8822557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FIONBIO; 8832557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FIONCLEX; 8842557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FIOSETOWN; 8852557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCADDMULTI; 8862557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCATMARK; 8872557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCDELMULTI; 8882557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFADDR; 8892557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFBRDADDR; 8902557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFCONF; 8912557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFDSTADDR; 8922557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFFLAGS; 8932557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFMETRIC; 8942557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFMTU; 8952557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFNETMASK; 8962557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGPGRP; 8972557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFADDR; 8982557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFBRDADDR; 8992557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFDSTADDR; 9002557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFFLAGS; 9012557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFMETRIC; 9022557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFMTU; 9032557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFNETMASK; 9042557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSPGRP; 9052557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCCONS; 9062557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCEXCL; 9072557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCGETD; 9082557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCGPGRP; 9092557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCGWINSZ; 9102557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCMBIC; 9112557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCMBIS; 9122557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCMGET; 9132557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCMSET; 9142557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCNOTTY; 9152557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCNXCL; 9162557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCOUTQ; 9172557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCPKT; 9182557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSCTTY; 9192557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSETD; 9202557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSPGRP; 9212557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSTI; 9222557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSWINSZ; 9232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 9242557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGETSGCNT; 9252557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGETVIFCNT; 9262557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov#endif 9272557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov#if SANITIZER_LINUX 9284612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGABS; 9294612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGBIT; 9304612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGEFFECTS; 9314612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGID; 9324612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGKEY; 9334612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGKEYCODE; 9344612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGLED; 9354612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGNAME; 9364612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGPHYS; 9374612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGRAB; 9384612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGREP; 9394612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGSND; 9404612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGSW; 9414612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGUNIQ; 9424612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGVERSION; 9434612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCRMFF; 9444612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCSABS; 9454612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCSFF; 9464612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCSKEYCODE; 9474612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCSREP; 9482557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKFLSBUF; 9492557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKGETSIZE; 9502557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKRAGET; 9512557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKRASET; 9522557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKROGET; 9532557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKROSET; 9542557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKRRPART; 9552557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMAUDIOBUFSIZ; 9562557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMEJECT; 9572557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMEJECT_SW; 9582557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMMULTISESSION; 9592557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMPAUSE; 9602557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMPLAYMSF; 9612557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMPLAYTRKIND; 9622557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADAUDIO; 9632557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADCOOKED; 9642557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADMODE1; 9652557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADMODE2; 9662557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADRAW; 9672557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADTOCENTRY; 9682557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADTOCHDR; 9692557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMRESET; 9702557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMRESUME; 9712557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMSEEK; 9722557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMSTART; 9732557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMSTOP; 9742557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMSUBCHNL; 9752557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMVOLCTRL; 9762557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMVOLREAD; 9772557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROM_GET_UPC; 9782557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDCLRPRM; 9792557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDDEFPRM; 9802557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDFLUSH; 9812557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDFMTBEG; 9822557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDFMTEND; 9832557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDFMTTRK; 9842557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDGETDRVPRM; 9852557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDGETDRVSTAT; 9862557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDGETDRVTYP; 9872557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDGETFDCSTAT; 9882557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDGETMAXERRS; 9892557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDGETPRM; 9902557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDMSGOFF; 9912557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDMSGON; 9922557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDPOLLDRVSTAT; 9932557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDRAWCMD; 9942557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDRESET; 9952557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDSETDRVPRM; 9962557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDSETEMSGTRESH; 9972557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDSETMAXERRS; 9982557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDSETPRM; 9992557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDTWADDLE; 10002557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDWERRORCLR; 10012557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDWERRORGET; 10022557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_DRIVE_CMD; 10032557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GETGEO; 10042557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_32BIT; 10052557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_DMA; 10062557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_IDENTITY; 10072557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_KEEPSETTINGS; 10082557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_MULTCOUNT; 10092557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_NOWERR; 10102557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_UNMASKINTR; 10112557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_SET_32BIT; 10122557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_SET_DMA; 10132557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_SET_KEEPSETTINGS; 10142557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_SET_MULTCOUNT; 10152557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_SET_NOWERR; 10162557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_SET_UNMASKINTR; 10172557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_MTIOCPOS; 10182557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCGASYNCMAP; 10192557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCGDEBUG; 10202557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCGFLAGS; 10212557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCGUNIT; 10222557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCGXASYNCMAP; 10232557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCSASYNCMAP; 10242557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCSDEBUG; 10252557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCSFLAGS; 10262557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCSMAXCID; 10272557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCSMRU; 10282557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCSXASYNCMAP; 10292557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCDARP; 10302557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCDRARP; 10312557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGARP; 10322557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFENCAP; 10332557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFHWADDR; 10342557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFMAP; 10352557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFMEM; 10362557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFNAME; 10372557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFSLAVE; 10382557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGRARP; 10392557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGSTAMP; 10402557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSARP; 10412557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFENCAP; 10422557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFHWADDR; 10432557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFLINK; 10442557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFMAP; 10452557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFMEM; 10462557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFSLAVE; 10472557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSRARP; 10482557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_HALT; 10492557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_LOAD; 10502557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_RCODE; 10512557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_RCVMSG; 10522557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_RDATA; 10532557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_RESET; 10542557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_RUN; 10552557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_SENDMSG; 10562557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_WCODE; 10572557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_WDATA; 10582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCFLSH; 10592d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCGETA; 10602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCGETS; 10612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSBRK; 10622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSBRKP; 10632d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSETA; 10642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSETAF; 10652d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSETAW; 10662d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSETS; 10672d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSETSF; 10682d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSETSW; 10692d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCXONC; 10702d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCGLCKTRMIOS; 10712d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCGSOFTCAR; 10722d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCINQ; 10732d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCLINUX; 10742d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCSERCONFIG; 10752d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCSERGETLSR; 10762d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCSERGWILD; 10772d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCSERSWILD; 10782d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCSLCKTRMIOS; 10792d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCSSOFTCAR; 10802d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_VT_DISALLOCATE; 10812d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_VT_GETSTATE; 10822d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_VT_RESIZE; 10832d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_VT_RESIZEX; 10842d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_VT_SENDSIG; 10852d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX 10862d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX || SANITIZER_FREEBSD 10872d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_MTIOCGET; 10882d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_MTIOCTOP; 10892d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_SIOCADDRT; 10902d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_SIOCDELRT; 10912557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_GETBLKSIZE; 10922557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_GETFMTS; 10932557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_NONBLOCK; 10942557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_POST; 10952557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_RESET; 10962557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_SETFMT; 10972557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_SETFRAGMENT; 10982557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_SPEED; 10992557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_STEREO; 11002557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_SUBDIVIDE; 11012557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_SYNC; 11022557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_FM_4OP_ENABLE; 11032557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_FM_LOAD_INSTR; 11042557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_MIDI_INFO; 11052557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_MIDI_PRETIME; 11062557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_CTRLRATE; 11072557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_GETINCOUNT; 11082557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_GETOUTCOUNT; 11092557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_NRMIDIS; 11102557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_NRSYNTHS; 11112557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_OUTOFBAND; 11122557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_PANIC; 11132557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_PERCMODE; 11142557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_RESET; 11152557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_RESETSAMPLES; 11162557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_SYNC; 11172557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_TESTMIDI; 11182557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_THRESHOLD; 11192557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SYNTH_INFO; 11202557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SYNTH_MEMAVL; 11212557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_CONTINUE; 11222557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_METRONOME; 11232557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_SELECT; 11242557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_SOURCE; 11252557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_START; 11262557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_STOP; 11272557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_TEMPO; 11282557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_TIMEBASE; 11292557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_ALTPCM; 11302557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_BASS; 11312557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_CAPS; 11322557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_CD; 11332557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_DEVMASK; 11342557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_ENHANCE; 11352557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_IGAIN; 11362557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_IMIX; 11372557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_LINE1; 11382557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_LINE2; 11392557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_LINE3; 11402557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_LINE; 11412557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_LOUD; 11422557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_MIC; 11432557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_MUTE; 11442557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_OGAIN; 11452557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_PCM; 11462557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_RECLEV; 11472557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_RECMASK; 11482557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_RECSRC; 11492557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_SPEAKER; 11502557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_STEREODEVS; 11512557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_SYNTH; 11522557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_TREBLE; 11532557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_VOLUME; 11542557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_ALTPCM; 11552557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_BASS; 11562557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_CD; 11572557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_ENHANCE; 11582557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_IGAIN; 11592557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_IMIX; 11602557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE1; 11612557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE2; 11622557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE3; 11632557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE; 11642557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_LOUD; 11652557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_MIC; 11662557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_MUTE; 11672557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_OGAIN; 11682557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_PCM; 11692557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_RECLEV; 11702557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_RECSRC; 11712557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_SPEAKER; 11722557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_SYNTH; 11732557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_TREBLE; 11742557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_VOLUME; 11752557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_PCM_READ_BITS; 11762557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_PCM_READ_CHANNELS; 11772557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_PCM_READ_FILTER; 11782557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_PCM_READ_RATE; 11792557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_PCM_WRITE_CHANNELS; 11802557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_PCM_WRITE_FILTER; 11812557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_VT_ACTIVATE; 11822557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_VT_GETMODE; 11832557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_VT_OPENQRY; 11842557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_VT_RELDISP; 11852557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_VT_SETMODE; 11862557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_VT_WAITACTIVE; 11872d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX || SANITIZER_FREEBSD 11882d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 11892557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov#if SANITIZER_LINUX && !SANITIZER_ANDROID 11902557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYGETDEFTHRESH; 11912557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYGETDEFTIMEOUT; 11922557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYGETMON; 11932557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYGETTHRESH; 11942557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYGETTIMEOUT; 11952557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYSETDEFTHRESH; 11962557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYSETDEFTIMEOUT; 11972557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYSETTHRESH; 11982557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYSETTIMEOUT; 11992557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_EQL_EMANCIPATE; 12002557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_EQL_ENSLAVE; 12012557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_EQL_GETMASTRCFG; 12022557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_EQL_GETSLAVECFG; 12032557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_EQL_SETMASTRCFG; 12042557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_EQL_SETSLAVECFG; 12054612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGKEYCODE_V2; 12064612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGPROP; 12074612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCSKEYCODE_V2; 12087028c1ee187302ace4fa3530769458c0b3caf946Evgeniy Stepanov extern unsigned IOCTL_FS_IOC_GETFLAGS; 12097028c1ee187302ace4fa3530769458c0b3caf946Evgeniy Stepanov extern unsigned IOCTL_FS_IOC_GETVERSION; 12107028c1ee187302ace4fa3530769458c0b3caf946Evgeniy Stepanov extern unsigned IOCTL_FS_IOC_SETFLAGS; 12117028c1ee187302ace4fa3530769458c0b3caf946Evgeniy Stepanov extern unsigned IOCTL_FS_IOC_SETVERSION; 12122557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_GIO_CMAP; 12132557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_GIO_FONT; 12142557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_GIO_UNIMAP; 12152557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_GIO_UNISCRNMAP; 12162557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDADDIO; 12172557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDDELIO; 12182557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDGETKEYCODE; 12192557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDGKBDIACR; 12202557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDGKBENT; 12212557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDGKBLED; 12222557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDGKBMETA; 12232557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDGKBSENT; 12242557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDMAPDISP; 12252557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSETKEYCODE; 12262557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSIGACCEPT; 12272557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSKBDIACR; 12282557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSKBENT; 12292557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSKBLED; 12302557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSKBMETA; 12312557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSKBSENT; 12322557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDUNMAPDISP; 12332557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPABORT; 12342557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPABORTOPEN; 12352557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPCAREFUL; 12362557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPCHAR; 12372557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPGETIRQ; 12382557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPGETSTATUS; 12392557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPRESET; 12402557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPSETIRQ; 12412557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPTIME; 12422557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPWAIT; 12438766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_MTIOCGETCONFIG; 12448766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_MTIOCSETCONFIG; 12452557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PIO_CMAP; 12462557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PIO_FONT; 12472557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PIO_UNIMAP; 12482557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PIO_UNIMAPCLR; 12492557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PIO_UNISCRNMAP; 12502557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SCSI_IOCTL_GET_IDLUN; 12512557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SCSI_IOCTL_PROBE_HOST; 12522557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE; 12532557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE; 12542557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCAIPXITFCRT; 12552557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCAIPXPRISLT; 12568766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCAX25ADDUID; 12578766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCAX25DELUID; 12588766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCAX25GETPARMS; 12598766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCAX25GETUID; 12608766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCAX25NOUID; 12618766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCAX25SETPARMS; 12622557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCDEVPLIP; 12632557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCIPXCFGDATA; 12648766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCNRDECOBS; 12658766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCNRGETPARMS; 12668766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCNRRTCTL; 12678766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCNRSETPARMS; 12682557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_GETISPACE; 12692557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_GETOSPACE; 12702557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCGSERIAL; 12712557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSERGETMULTI; 12722557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSERSETMULTI; 12732557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSSERIAL; 12742d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX && !SANITIZER_ANDROID 12752d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 12762d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 12772d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_GIO_SCRNMAP; 12782d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDDISABIO; 12792d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDENABIO; 12802d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDGETLED; 12812d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDGETMODE; 12822d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDGKBMODE; 12832d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDGKBTYPE; 12842d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDMKTONE; 12852d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDSETLED; 12862d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDSETMODE; 12872d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDSKBMODE; 12882d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KIOCSOUND; 12892d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_PIO_SCRNMAP; 12902557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov#endif 129170db33e143303752c7fe8800d15b5b31066b1e0dSergey Matveev 12922d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern const int errno_EINVAL; 129311f5309ec1bf13430c8a3a16f177d9e8e1190e38Dmitry Vyukov extern const int errno_EOWNERDEAD; 12942d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 12952d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern const int si_SEGV_MAPERR; 12962d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern const int si_SEGV_ACCERR; 12979358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov} // namespace __sanitizer 129878c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov 1299bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov#define CHECK_TYPE_SIZE(TYPE) \ 1300bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov COMPILER_CHECK(sizeof(__sanitizer_##TYPE) == sizeof(TYPE)) 1301bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov 1302bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov#define CHECK_SIZE_AND_OFFSET(CLASS, MEMBER) \ 1303bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov COMPILER_CHECK(sizeof(((__sanitizer_##CLASS *) NULL)->MEMBER) == \ 1304bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov sizeof(((CLASS *) NULL)->MEMBER)); \ 1305bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov COMPILER_CHECK(offsetof(__sanitizer_##CLASS, MEMBER) == \ 1306bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov offsetof(CLASS, MEMBER)) 1307bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov 1308bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov// For sigaction, which is a function and struct at the same time, 1309bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov// and thus requires explicit "struct" in sizeof() expression. 1310bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov#define CHECK_STRUCT_SIZE_AND_OFFSET(CLASS, MEMBER) \ 1311bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov COMPILER_CHECK(sizeof(((struct __sanitizer_##CLASS *) NULL)->MEMBER) == \ 1312bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov sizeof(((struct CLASS *) NULL)->MEMBER)); \ 1313bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov COMPILER_CHECK(offsetof(struct __sanitizer_##CLASS, MEMBER) == \ 1314bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov offsetof(struct CLASS, MEMBER)) 1315bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov 131678c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov#endif 1317