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 219358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanovnamespace __sanitizer { 2278c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_utsname_sz; 2378c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_stat_sz; 242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if !SANITIZER_FREEBSD && !SANITIZER_IOS 2578c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_stat64_sz; 26b8a141f3783d796eabf45fabff82f3e08244e338Alexander Potapenko#endif 279358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov extern unsigned struct_rusage_sz; 28897a4ae31f5c55255c78854b69b4cd4a4e3c7c39Evgeniy Stepanov extern unsigned siginfo_t_sz; 29e4bdda51b3469aa0f6ef6f6c4656419effa48038Evgeniy Stepanov extern unsigned struct_itimerval_sz; 30e4bdda51b3469aa0f6ef6f6c4656419effa48038Evgeniy Stepanov extern unsigned pthread_t_sz; 315e2d3776a314629680921abd1d55d89d95a2da90Alexey Samsonov extern unsigned pthread_cond_t_sz; 32745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned pid_t_sz; 33745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned timeval_sz; 34745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned uid_t_sz; 352d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned gid_t_sz; 3657a1095fca7b95db8a0ec87fce7a6f0e331a5b99Evgeniy Stepanov extern unsigned mbstate_t_sz; 37639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned struct_timezone_sz; 38639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned struct_tms_sz; 39639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned struct_itimerspec_sz; 40639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned struct_sigevent_sz; 41639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned struct_sched_param_sz; 421bb2229028dd78280d24c26b9efbe8476d966e05Evgeniy Stepanov extern unsigned struct_statfs64_sz; 434fb04a8445076debf51d220f75211584b89043c8Evgeniy Stepanov 444fb04a8445076debf51d220f75211584b89043c8Evgeniy Stepanov#if !SANITIZER_ANDROID 455d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines extern unsigned struct_statfs_sz; 465d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines extern unsigned struct_sockaddr_sz; 47072770202bb1002172abe9a4b1eeb7f2d2fb004fEvgeniy Stepanov extern unsigned ucontext_t_sz; 484fb04a8445076debf51d220f75211584b89043c8Evgeniy Stepanov#endif // !SANITIZER_ANDROID 499358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov 5024e13723f8477d8c42ab8b2a7f4f69fc089842f1Evgeniy Stepanov#if SANITIZER_LINUX 51e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov 52e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov#if defined(__x86_64__) 53e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov const unsigned struct_kernel_stat_sz = 144; 54e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov const unsigned struct_kernel_stat64_sz = 0; 55e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov#elif defined(__i386__) 56e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov const unsigned struct_kernel_stat_sz = 64; 57e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov const unsigned struct_kernel_stat64_sz = 96; 58f17dd743288942a36f82e09706f18477b27f603dEvgeniy Stepanov#elif defined(__arm__) 59f17dd743288942a36f82e09706f18477b27f603dEvgeniy Stepanov const unsigned struct_kernel_stat_sz = 64; 60f17dd743288942a36f82e09706f18477b27f603dEvgeniy Stepanov const unsigned struct_kernel_stat64_sz = 104; 612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#elif defined(__aarch64__) 622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned struct_kernel_stat_sz = 128; 632d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned struct_kernel_stat64_sz = 104; 640d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov#elif defined(__powerpc__) && !defined(__powerpc64__) 650d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov const unsigned struct_kernel_stat_sz = 72; 660d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov const unsigned struct_kernel_stat64_sz = 104; 670d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov#elif defined(__powerpc64__) 680d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov const unsigned struct_kernel_stat_sz = 144; 690d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov const unsigned struct_kernel_stat64_sz = 104; 705d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#elif defined(__mips__) 715d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines #if SANITIZER_WORDSIZE == 64 725d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines const unsigned struct_kernel_stat_sz = 216; 735d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines #else 745d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines const unsigned struct_kernel_stat_sz = 144; 755d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines #endif 765d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines const unsigned struct_kernel_stat64_sz = 104; 77e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov#endif 78d7041c6617b10302be6849b55a88dc928fd7f6b8Evgeniy Stepanov struct __sanitizer_perf_event_attr { 79d7041c6617b10302be6849b55a88dc928fd7f6b8Evgeniy Stepanov unsigned type; 80d7041c6617b10302be6849b55a88dc928fd7f6b8Evgeniy Stepanov unsigned size; 81d7041c6617b10302be6849b55a88dc928fd7f6b8Evgeniy Stepanov // More fields that vary with the kernel version. 82d7041c6617b10302be6849b55a88dc928fd7f6b8Evgeniy Stepanov }; 83e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov 8478c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_epoll_event_sz; 85359d7fc7daf099ab8ef9a860564542d2581544aaEvgeniy Stepanov extern unsigned struct_sysinfo_sz; 86639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned __user_cap_header_struct_sz; 87639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov extern unsigned __user_cap_data_struct_sz; 8825ecb75efb30f8a8f80cc89c3a1cb83508e7bacfEvgeniy Stepanov extern unsigned struct_new_utsname_sz; 8925ecb75efb30f8a8f80cc89c3a1cb83508e7bacfEvgeniy Stepanov extern unsigned struct_old_utsname_sz; 9025ecb75efb30f8a8f80cc89c3a1cb83508e7bacfEvgeniy Stepanov extern unsigned struct_oldold_utsname_sz; 9125ecb75efb30f8a8f80cc89c3a1cb83508e7bacfEvgeniy Stepanov 92639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov const unsigned struct_kexec_segment_sz = 4 * sizeof(unsigned long); 932d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX 942d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 952d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX || SANITIZER_FREEBSD 962d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 972d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if defined(__powerpc64__) 982d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned struct___old_kernel_stat_sz = 0; 992d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 1002d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned struct___old_kernel_stat_sz = 32; 1012d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 1022d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 1032d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_rlimit_sz; 1042d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_utimbuf_sz; 1052d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_timespec_sz; 106639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov 107bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov struct __sanitizer_iocb { 108bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u64 aio_data; 109bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u32 aio_key_or_aio_reserved1; // Simply crazy. 110bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u32 aio_reserved1_or_aio_key; // Luckily, we don't need these. 111bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u16 aio_lio_opcode; 112bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov s16 aio_reqprio; 113bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u32 aio_fildes; 114bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u64 aio_buf; 115bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u64 aio_nbytes; 116bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov s64 aio_offset; 117bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov u64 aio_reserved2; 118c50f7962c823506109b6307209411b36e0d46abdEvgeniy Stepanov u64 aio_reserved3; 119bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov }; 120bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov 1212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_io_event { 1222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 data; 1232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 obj; 1242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 res; 1252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 res2; 1262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 1272d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 128e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov const unsigned iocb_cmd_pread = 0; 129e1e68833ddbebf4827690218763c0be5b91104e7Evgeniy Stepanov const unsigned iocb_cmd_pwrite = 1; 1302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned iocb_cmd_preadv = 7; 1312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned iocb_cmd_pwritev = 8; 132bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov 133639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov struct __sanitizer___sysctl_args { 134639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov int *name; 135639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov int nlen; 136639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov void *oldval; 137639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov uptr *oldlenp; 138639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov void *newval; 139639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov uptr newlen; 1409a4a1590169e42076aee67a6fd472ece77b9b484Evgeniy Stepanov unsigned long ___unused[4]; 141639df402c4925acd3ea7bebff729a535e3f79964Evgeniy Stepanov }; 1422d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 1432d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const unsigned old_sigset_t_sz = sizeof(unsigned long); 1442d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX || SANITIZER_FREEBSD 1452d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 1462d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_ANDROID 1472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_mallinfo { 1482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr v[10]; 1492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 1502d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 15178c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov 15224e13723f8477d8c42ab8b2a7f4f69fc089842f1Evgeniy Stepanov#if SANITIZER_LINUX && !SANITIZER_ANDROID 1532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_mallinfo { 1542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int v[10]; 1552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 1562d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 15725ecb75efb30f8a8f80cc89c3a1cb83508e7bacfEvgeniy Stepanov extern unsigned struct_ustat_sz; 158b711ca6e040d0ac4adb79e688e1a59afcc871d20Evgeniy Stepanov extern unsigned struct_rlimit64_sz; 1590489e113d3e9fa9379fa38bc1a50f81414feab48Evgeniy Stepanov extern unsigned struct_statvfs64_sz; 160f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov 161f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov struct __sanitizer_ipc_perm { 162f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int __key; 163f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int uid; 164f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int gid; 165f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int cuid; 166f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int cgid; 1677f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#ifdef __powerpc__ 1680d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov unsigned mode; 1690d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov unsigned __seq; 1707f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling u64 __unused1; 1717f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling u64 __unused2; 1725d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#elif defined(__mips__) 1735d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines unsigned int mode; 1745d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines unsigned short __seq; 1755d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines unsigned short __pad1; 1765d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines unsigned long __unused1; 1775d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines unsigned long __unused2; 1780d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov#else 179f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov unsigned short mode; 180f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov unsigned short __pad1; 181f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov unsigned short __seq; 182f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov unsigned short __pad2; 1837f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#if defined(__x86_64__) && !defined(_LP64) 1847f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling u64 __unused1; 1857f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling u64 __unused2; 1867f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#else 1877f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling unsigned long __unused1; 1887f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling unsigned long __unused2; 1897f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#endif 1900d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov#endif 191f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov }; 192f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov 193f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov struct __sanitizer_shmid_ds { 194f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov __sanitizer_ipc_perm shm_perm; 1950d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov #ifndef __powerpc__ 196f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr shm_segsz; 1977f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling #elif !defined(__powerpc64__) 1987f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling uptr __unused0; 1990d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov #endif 2002d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines #if defined(__x86_64__) && !defined(_LP64) 2012d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 shm_atime; 2022d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 shm_dtime; 2032d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 shm_ctime; 2042d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines #else 205f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr shm_atime; 2065d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines #if !defined(_LP64) && !defined(__mips__) 207f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr __unused1; 208f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov #endif 209f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr shm_dtime; 2105d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines #if !defined(_LP64) && !defined(__mips__) 211f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr __unused2; 212f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov #endif 213f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr shm_ctime; 2145d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines #if !defined(_LP64) && !defined(__mips__) 215f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr __unused3; 216f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov #endif 2172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines #endif 2180d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov #ifdef __powerpc__ 2190d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov uptr shm_segsz; 2200d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov #endif 221f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int shm_cpid; 222f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov int shm_lpid; 2232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines #if defined(__x86_64__) && !defined(_LP64) 2242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 shm_nattch; 2252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 __unused4; 2262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines u64 __unused5; 2272d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines #else 228f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr shm_nattch; 229f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr __unused4; 230f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov uptr __unused5; 2312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines #endif 2322d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 2332d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#elif SANITIZER_FREEBSD 2342d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_ipc_perm { 2352d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int cuid; 2362d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int cgid; 2372d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int uid; 2382d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int gid; 2392d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned short mode; 2402d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned short seq; 2412d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines long key; 242f3603890015c130420def39d67a02c2fdafc6f84Evgeniy Stepanov }; 2432d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 2442d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_shmid_ds { 2452d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines __sanitizer_ipc_perm shm_perm; 2462d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned long shm_segsz; 2472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int shm_lpid; 2482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int shm_cpid; 2492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int shm_nattch; 2502d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned long shm_atime; 2512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned long shm_dtime; 2522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned long shm_ctime; 2532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 2542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 2552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 2562d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 2572d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_msqid_ds_sz; 2582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_mq_attr_sz; 2592d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_timex_sz; 2602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_statvfs_sz; 2612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 262b711ca6e040d0ac4adb79e688e1a59afcc871d20Evgeniy Stepanov 2639666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov struct __sanitizer_iovec { 2642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *iov_base; 2659666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov uptr iov_len; 2669666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov }; 2679666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov 2682d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if !SANITIZER_ANDROID 2692d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_ifaddrs { 2702d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_ifaddrs *ifa_next; 2712d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *ifa_name; 2722d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int ifa_flags; 2732d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *ifa_addr; // (struct sockaddr *) 2742d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *ifa_netmask; // (struct sockaddr *) 2752d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // This is a union on Linux. 2762d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# ifdef ifa_dstaddr 2772d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# undef ifa_dstaddr 2782d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# endif 2792d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *ifa_dstaddr; // (struct sockaddr *) 2802d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *ifa_data; 2812d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 2822d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // !SANITIZER_ANDROID 2832d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 2848be684c5970389c6c86b01592e98ed5a3bc4f78dEvgeniy Stepanov#if SANITIZER_MAC 2858be684c5970389c6c86b01592e98ed5a3bc4f78dEvgeniy Stepanov typedef unsigned long __sanitizer_pthread_key_t; 2868be684c5970389c6c86b01592e98ed5a3bc4f78dEvgeniy Stepanov#else 287737da2f031badfad5bc5b762cc50d789fbcb6ef8Evgeniy Stepanov typedef unsigned __sanitizer_pthread_key_t; 2888be684c5970389c6c86b01592e98ed5a3bc4f78dEvgeniy Stepanov#endif 289737da2f031badfad5bc5b762cc50d789fbcb6ef8Evgeniy Stepanov 2902d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX && !SANITIZER_ANDROID 2912d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 2922d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_XDR { 2932d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int x_op; 2942d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *x_ops; 2952d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr x_public; 2962d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr x_private; 2972d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr x_base; 2982d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned x_handy; 2992d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 3002d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 3012d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const int __sanitizer_XDR_ENCODE = 0; 3022d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const int __sanitizer_XDR_DECODE = 1; 3032d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines const int __sanitizer_XDR_FREE = 2; 3042d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 3052d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 3062d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_passwd { 3072d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *pw_name; 3082d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *pw_passwd; 3092d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int pw_uid; 3102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int pw_gid; 3112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_MAC || SANITIZER_FREEBSD 3122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines long pw_change; 3132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *pw_class; 3142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 3152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if !SANITIZER_ANDROID 3162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *pw_gecos; 3172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 3182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *pw_dir; 3192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *pw_shell; 3202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_MAC || SANITIZER_FREEBSD 3212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines long pw_expire; 3222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 3232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_FREEBSD 3242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int pw_fields; 3252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 3262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 3272d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 3282d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_group { 3292d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *gr_name; 3302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *gr_passwd; 3312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int gr_gid; 3322d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char **gr_mem; 3332d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 3342d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 3352d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if defined(__x86_64__) && !defined(_LP64) 3362d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef long long __sanitizer_time_t; 3372d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 3382d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef long __sanitizer_time_t; 3392d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 3402d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 3412d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_timeb { 3422d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines __sanitizer_time_t time; 3432d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned short millitm; 3442d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines short timezone; 3452d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines short dstflag; 3462d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 3472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 348369a9a6d4297af031227db1c6fedd21ee7033dc1Evgeniy Stepanov struct __sanitizer_ether_addr { 349369a9a6d4297af031227db1c6fedd21ee7033dc1Evgeniy Stepanov u8 octet[6]; 350369a9a6d4297af031227db1c6fedd21ee7033dc1Evgeniy Stepanov }; 351369a9a6d4297af031227db1c6fedd21ee7033dc1Evgeniy Stepanov 352cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov struct __sanitizer_tm { 353cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_sec; 354cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_min; 355cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_hour; 356cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_mday; 357cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_mon; 358cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_year; 359cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_wday; 360cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_yday; 361cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov int tm_isdst; 362cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov long int tm_gmtoff; 363cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov const char *tm_zone; 364cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov }; 365cf39032f101dfb3b97b1dfc7b6d03f5d89dff266Evgeniy Stepanov 3664d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov#if SANITIZER_LINUX 3674d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov struct __sanitizer_mntent { 3684d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov char *mnt_fsname; 3694d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov char *mnt_dir; 3704d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov char *mnt_type; 3714d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov char *mnt_opts; 3724d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov int mnt_freq; 3734d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov int mnt_passno; 3744d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov }; 3754d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov#endif 3764d7297daef90ad59446250617b72d184141436fcEvgeniy Stepanov 3772d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_ANDROID || SANITIZER_MAC || SANITIZER_FREEBSD 378e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov struct __sanitizer_msghdr { 379e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov void *msg_name; 380e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov unsigned msg_namelen; 381e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov struct __sanitizer_iovec *msg_iov; 382e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov unsigned msg_iovlen; 383e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov void *msg_control; 384e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov unsigned msg_controllen; 385e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov int msg_flags; 386e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov }; 387e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov struct __sanitizer_cmsghdr { 388e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov unsigned cmsg_len; 389e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov int cmsg_level; 390e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov int cmsg_type; 391e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov }; 392e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov#else 3939666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov struct __sanitizer_msghdr { 3949666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov void *msg_name; 3959666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov unsigned msg_namelen; 3969666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov struct __sanitizer_iovec *msg_iov; 3979666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov uptr msg_iovlen; 3989666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov void *msg_control; 3999666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov uptr msg_controllen; 4009666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov int msg_flags; 4019666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov }; 4029666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov struct __sanitizer_cmsghdr { 4039666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov uptr cmsg_len; 4049666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov int cmsg_level; 4059666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov int cmsg_type; 4069666d89b628867b2c790d5415f0371fdb4050b0cEvgeniy Stepanov }; 407e215980807069d7bdeb1beff8377b3fe7be33c5fEvgeniy Stepanov#endif 40810fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov 409a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov#if SANITIZER_MAC 410a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov struct __sanitizer_dirent { 411b6bde4d2bc5231cd1b38ff92e51afb3f6e157386Alexey Samsonov unsigned long long d_ino; 412b6bde4d2bc5231cd1b38ff92e51afb3f6e157386Alexey Samsonov unsigned long long d_seekoff; 413a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov unsigned short d_reclen; 414a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov // more fields that we don't care about 415a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov }; 4162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#elif SANITIZER_FREEBSD 4172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_dirent { 4182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int d_fileno; 4192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned short d_reclen; 4202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // more fields that we don't care about 4212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 422e041c6024b3ebf1365c0f99732fc69c607577571Kostya Serebryany#elif SANITIZER_ANDROID || defined(__x86_64__) 423a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov struct __sanitizer_dirent { 424a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov unsigned long long d_ino; 425a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov unsigned long long d_off; 426a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov unsigned short d_reclen; 427a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov // more fields that we don't care about 428a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov }; 429a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov#else 430a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov struct __sanitizer_dirent { 431a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov uptr d_ino; 432a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov uptr d_off; 433a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov unsigned short d_reclen; 434a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov // more fields that we don't care about 435a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov }; 436a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov#endif 437a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov 438a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov#if SANITIZER_LINUX && !SANITIZER_ANDROID 439a0379b5566f7c04536a313e40c450c6aef4b3ec5Evgeniy Stepanov struct __sanitizer_dirent64 { 4405a482cd54a75bf821fb8c61f2fe4e84ae9efb714Chandler Carruth unsigned long long d_ino; 4415a482cd54a75bf821fb8c61f2fe4e84ae9efb714Chandler Carruth unsigned long long 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 4472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// 'clock_t' is 32 bits wide on x64 FreeBSD 4482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_FREEBSD 4492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef int __sanitizer_clock_t; 4502d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#elif defined(__x86_64__) && !defined(_LP64) 4512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef long long __sanitizer_clock_t; 4522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 4532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef long __sanitizer_clock_t; 4542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 4552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 4565d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#if SANITIZER_LINUX 4575d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines typedef int __sanitizer_clockid_t; 4585d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#endif 4595d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines 4602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX || SANITIZER_FREEBSD 4615d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#if defined(_LP64) || defined(__x86_64__) || defined(__powerpc__)\ 4625d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines || defined(__mips__) 463a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef unsigned __sanitizer___kernel_uid_t; 464a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef unsigned __sanitizer___kernel_gid_t; 465a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov#else 46685626e8127d1f795a447c1bacb5a2606c7b954d9Evgeniy Stepanov typedef unsigned short __sanitizer___kernel_uid_t; 467a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef unsigned short __sanitizer___kernel_gid_t; 4687f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#endif 4697f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#if defined(__x86_64__) && !defined(_LP64) 4707f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling typedef long long __sanitizer___kernel_off_t; 4717f790caa37ec1c9807c877297d30e040e83ed215Bill Wendling#else 472e041c6024b3ebf1365c0f99732fc69c607577571Kostya Serebryany typedef long __sanitizer___kernel_off_t; 473a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov#endif 4740d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov 4755d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#if defined(__powerpc__) || defined(__aarch64__) || defined(__mips__) 4760d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov typedef unsigned int __sanitizer___kernel_old_uid_t; 4770d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov typedef unsigned int __sanitizer___kernel_old_gid_t; 4780d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov#else 479a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef unsigned short __sanitizer___kernel_old_uid_t; 480a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef unsigned short __sanitizer___kernel_old_gid_t; 4810d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov#endif 4820d2a93500c4b071977a9ee89dbc24586fe54bca5Evgeniy Stepanov 483a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef long long __sanitizer___kernel_loff_t; 484a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov typedef struct { 485a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov unsigned long fds_bits[1024 / (8 * sizeof(long))]; 486a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov } __sanitizer___kernel_fd_set; 487a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov#endif 488a3cb27e188bd23190ba7a41a8c62fa7cc5ac5544Evgeniy Stepanov 48910fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov // This thing depends on the platform. We are only interested in the upper 49010fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov // limit. Verified with a compiler assert in .cc. 49110fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov const int pthread_attr_t_max_sz = 128; 49210fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov union __sanitizer_pthread_attr_t { 4930ecc4379bbb04f1d03ceb58f6a0751790fb17c75Evgeniy Stepanov char size[pthread_attr_t_max_sz]; // NOLINT 49410fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov void *align; 49510fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov }; 49606658ea68c4912fffafef6e65f36dce7faa4a174Evgeniy Stepanov 497b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov#if SANITIZER_ANDROID 498b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov typedef unsigned long __sanitizer_sigset_t; 499b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov#elif SANITIZER_MAC 500b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov typedef unsigned __sanitizer_sigset_t; 501b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov#elif SANITIZER_LINUX 502b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov struct __sanitizer_sigset_t { 503b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov // The size is determined by looking at sizeof of real sigset_t on linux. 504b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov uptr val[128 / sizeof(uptr)]; 505b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov }; 5062d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#elif SANITIZER_FREEBSD 5072d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_sigset_t { 5082d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // uint32_t * 4 5092d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines unsigned int __bits[4]; 5102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 511b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov#endif 51206658ea68c4912fffafef6e65f36dce7faa4a174Evgeniy Stepanov 5132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // Linux system headers define the 'sa_handler' and 'sa_sigaction' macros. 514b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov struct __sanitizer_sigaction { 5155d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#if defined(__mips__) && !SANITIZER_FREEBSD 5165d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines unsigned int sa_flags; 5175d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#endif 518b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov union { 5192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void (*sigaction)(int sig, void *siginfo, void *uctx); 5202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void (*handler)(int sig); 521b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov }; 5222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_FREEBSD 5232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int sa_flags; 5242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines __sanitizer_sigset_t sa_mask; 5252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 526b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov __sanitizer_sigset_t sa_mask; 5275d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#ifndef __mips__ 528b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov int sa_flags; 5292d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 5305d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#endif 531b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov#if SANITIZER_LINUX 532b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov void (*sa_restorer)(); 533b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov#endif 5345d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#if defined(__mips__) && (SANITIZER_WORDSIZE == 32) 5355d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines int sa_resv[1]; 5365d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#endif 53706658ea68c4912fffafef6e65f36dce7faa4a174Evgeniy Stepanov }; 53806658ea68c4912fffafef6e65f36dce7faa4a174Evgeniy Stepanov 5392d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_FREEBSD 5402d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef __sanitizer_sigset_t __sanitizer_kernel_sigset_t; 5412d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 5425f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov struct __sanitizer_kernel_sigset_t { 5435f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov u8 sig[8]; 5445f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov }; 5452d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 5465f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov 5472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // Linux system headers define the 'sa_handler' and 'sa_sigaction' macros. 5485f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov struct __sanitizer_kernel_sigaction_t { 5495f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov union { 5505f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov void (*handler)(int signo); 5512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void (*sigaction)(int signo, void *info, void *ctx); 5525f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov }; 5535f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov unsigned long sa_flags; 5545f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov void (*sa_restorer)(void); 5555f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov __sanitizer_kernel_sigset_t sa_mask; 5565f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov }; 5575f4984db88b7b67539f62d7653b928aeadf91b16Dmitry Vyukov 55806658ea68c4912fffafef6e65f36dce7faa4a174Evgeniy Stepanov extern uptr sig_ign; 55906658ea68c4912fffafef6e65f36dce7faa4a174Evgeniy Stepanov extern uptr sig_dfl; 560b32d1bfc59592bc57d74a1e940881354b4788eaeEvgeniy Stepanov extern uptr sa_siginfo; 5619530eb721dfacdf2c3f46d408e22d3f7cf8be667Evgeniy Stepanov 562745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov#if SANITIZER_LINUX 563745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern int e_tabsz; 564745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov#endif 565745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov 5669d60087654f89e3452841350d9eca97644edca9dEvgeniy Stepanov extern int af_inet; 5679d60087654f89e3452841350d9eca97644edca9dEvgeniy Stepanov extern int af_inet6; 5689530eb721dfacdf2c3f46d408e22d3f7cf8be667Evgeniy Stepanov uptr __sanitizer_in_addr_sz(int af); 5691aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov 5702d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX || SANITIZER_FREEBSD 5711aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov struct __sanitizer_dl_phdr_info { 5721aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov uptr dlpi_addr; 5731aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov const char *dlpi_name; 5741aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov const void *dlpi_phdr; 5751aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov short dlpi_phnum; 5761aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov }; 5771aad6b5444207887ecea2b9e87526585d1ce0592Evgeniy Stepanov#endif 578447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov 579447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov struct __sanitizer_addrinfo { 580447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov int ai_flags; 581447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov int ai_family; 582447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov int ai_socktype; 583447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov int ai_protocol; 5842d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_ANDROID || SANITIZER_MAC || SANITIZER_FREEBSD 58573c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov unsigned ai_addrlen; 58673c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov char *ai_canonname; 58773c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov void *ai_addr; 58873c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov#else // LINUX 58900c35cfe108797f6677252fd77214c0cbccb5c5bEvgeniy Stepanov unsigned ai_addrlen; 59073c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov void *ai_addr; 59173c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov char *ai_canonname; 59273c9878bec490bbc1dab4ee8df91a8e5b3bfc5cfEvgeniy Stepanov#endif 593447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov struct __sanitizer_addrinfo *ai_next; 594447ef19d1b8cebbeaba49e4be22ac721448dcf3eEvgeniy Stepanov }; 5950a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov 5960a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov struct __sanitizer_hostent { 5970a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov char *h_name; 5980a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov char **h_aliases; 5990a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov int h_addrtype; 6000a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov int h_length; 6010a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov char **h_addr_list; 6020a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov }; 6030a2cc37712a452525f9f03b3bf67b1f0a97c8d3aEvgeniy Stepanov 604e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov struct __sanitizer_pollfd { 605e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov int fd; 606e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov short events; 607e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov short revents; 608e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov }; 609e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov 6102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_ANDROID || SANITIZER_MAC || SANITIZER_FREEBSD 611e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov typedef unsigned __sanitizer_nfds_t; 612e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov#else 613e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov typedef unsigned long __sanitizer_nfds_t; 614e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov#endif 615e18e3f07802c420eb4b2da407e148084b75cecc9Evgeniy Stepanov 6162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if !SANITIZER_ANDROID 6172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# if SANITIZER_LINUX 618906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov struct __sanitizer_glob_t { 619906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov uptr gl_pathc; 620906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov char **gl_pathv; 6213fa122e6a8e12db6583793861f6cf776fe1c98a0Evgeniy Stepanov uptr gl_offs; 6223fa122e6a8e12db6583793861f6cf776fe1c98a0Evgeniy Stepanov int gl_flags; 623eaca82cf249021afa31dbc970278f2f28ea2a1aaTimur Iskhodzhanov 624eaca82cf249021afa31dbc970278f2f28ea2a1aaTimur Iskhodzhanov void (*gl_closedir)(void *dirp); 625eaca82cf249021afa31dbc970278f2f28ea2a1aaTimur Iskhodzhanov void *(*gl_readdir)(void *dirp); 6263fa122e6a8e12db6583793861f6cf776fe1c98a0Evgeniy Stepanov void *(*gl_opendir)(const char *); 6273fa122e6a8e12db6583793861f6cf776fe1c98a0Evgeniy Stepanov int (*gl_lstat)(const char *, void *); 6283fa122e6a8e12db6583793861f6cf776fe1c98a0Evgeniy Stepanov int (*gl_stat)(const char *, void *); 629906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov }; 6302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# elif SANITIZER_FREEBSD 6312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_glob_t { 6322d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr gl_pathc; 6332d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr gl_matchc; 6342d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr gl_offs; 6352d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int gl_flags; 6362d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char **gl_pathv; 6372d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int (*gl_errfunc)(const char*, int); 6382d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void (*gl_closedir)(void *dirp); 6392d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct dirent *(*gl_readdir)(void *dirp); 6402d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *(*gl_opendir)(const char*); 6412d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int (*gl_lstat)(const char*, void* /* struct stat* */); 6422d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int (*gl_stat)(const char*, void* /* struct stat* */); 6432d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 6442d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# endif // SANITIZER_FREEBSD 645906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov 6462d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# if SANITIZER_LINUX || SANITIZER_FREEBSD 647906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov extern int glob_nomatch; 6483fa122e6a8e12db6583793861f6cf776fe1c98a0Evgeniy Stepanov extern int glob_altdirfunc; 6492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# endif 6502d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // !SANITIZER_ANDROID 651906f2c11e854539f316f737b1f661c0f6bc66fabEvgeniy Stepanov 65212eb79dd701d9d40551759330a9257316601373bEvgeniy Stepanov extern unsigned path_max; 65312eb79dd701d9d40551759330a9257316601373bEvgeniy Stepanov 654c5a385500057ba60c71abbb1d1cc0ee3773be792Evgeniy Stepanov struct __sanitizer_wordexp_t { 655c5a385500057ba60c71abbb1d1cc0ee3773be792Evgeniy Stepanov uptr we_wordc; 656c5a385500057ba60c71abbb1d1cc0ee3773be792Evgeniy Stepanov char **we_wordv; 657c5a385500057ba60c71abbb1d1cc0ee3773be792Evgeniy Stepanov uptr we_offs; 6582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_FREEBSD 6592d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *we_strings; 6602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr we_nbytes; 6612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 662c5a385500057ba60c71abbb1d1cc0ee3773be792Evgeniy Stepanov }; 663c5a385500057ba60c71abbb1d1cc0ee3773be792Evgeniy Stepanov 6642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX && !SANITIZER_ANDROID 6652d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer_FILE { 6662d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int _flags; 6672d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_read_ptr; 6682d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_read_end; 6692d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_read_base; 6702d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_write_base; 6712d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_write_ptr; 6722d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_write_end; 6732d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_buf_base; 6742d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_buf_end; 6752d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_save_base; 6762d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_backup_base; 6772d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *_IO_save_end; 6782d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void *_markers; 6792d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines __sanitizer_FILE *_chain; 6802d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int _fileno; 6812d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines }; 6822d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# define SANITIZER_HAS_STRUCT_FILE 1 6832d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 6842d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines typedef void __sanitizer_FILE; 6852d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines# define SANITIZER_HAS_STRUCT_FILE 0 6862d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 6872d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 68822d8767a45f08218b4d725146c5a8484a183be29Evgeniy Stepanov#if SANITIZER_LINUX && !SANITIZER_ANDROID && \ 6892d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines (defined(__i386) || defined(__x86_64)) 690341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern unsigned struct_user_regs_struct_sz; 691341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern unsigned struct_user_fpregs_struct_sz; 692341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern unsigned struct_user_fpxregs_struct_sz; 693341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov 6943ee98e37856935ac1d79d51364df73ce00d8218eEvgeniy Stepanov extern int ptrace_peektext; 6953ee98e37856935ac1d79d51364df73ce00d8218eEvgeniy Stepanov extern int ptrace_peekdata; 6963ee98e37856935ac1d79d51364df73ce00d8218eEvgeniy Stepanov extern int ptrace_peekuser; 697341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_getregs; 698341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_setregs; 699341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_getfpregs; 700341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_setfpregs; 701341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_getfpxregs; 702341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_setfpxregs; 703341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_getsiginfo; 704341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_setsiginfo; 705341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_getregset; 706341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov extern int ptrace_setregset; 7075d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines extern int ptrace_geteventmsg; 708341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov#endif 709341b9e63f63a8eacf1b699d4c79edee55241ebe6Evgeniy Stepanov 7102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 71110362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov extern unsigned struct_shminfo_sz; 71210362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov extern unsigned struct_shm_info_sz; 71310362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov extern int shmctl_ipc_stat; 71410362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov extern int shmctl_ipc_info; 71510362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov extern int shmctl_shm_info; 71610362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov extern int shmctl_shm_stat; 71710362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov#endif 71810362d66fffcd99bd5ced983e4b389dfeba114d0Evgeniy Stepanov 7192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern int map_fixed; 7202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 721745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov // ioctl arguments 7224757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov struct __sanitizer_ifconf { 7234757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov int ifc_len; 7244757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov union { 7254757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov void *ifcu_req; 7264757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov } ifc_ifcu; 72789d1eee9f468823cc7f01b0d5281a5c9f64a4c31Evgeniy Stepanov#if SANITIZER_MAC 72889d1eee9f468823cc7f01b0d5281a5c9f64a4c31Evgeniy Stepanov } __attribute__((packed)); 72989d1eee9f468823cc7f01b0d5281a5c9f64a4c31Evgeniy Stepanov#else 7304757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov }; 73189d1eee9f468823cc7f01b0d5281a5c9f64a4c31Evgeniy Stepanov#endif 7324757c47ba7356aec3a7d49e5e929c19159d75a01Evgeniy Stepanov 7332d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX && !SANITIZER_ANDROID 7342d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesstruct __sanitizer__obstack_chunk { 7352d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *limit; 7362d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer__obstack_chunk *prev; 7372d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines}; 7382d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 7392d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesstruct __sanitizer_obstack { 7402d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines long chunk_size; 7412d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines struct __sanitizer__obstack_chunk *chunk; 7422d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *object_base; 7432d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines char *next_free; 7442d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines uptr more_fields[7]; 7452d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines}; 7462d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 7472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 7482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_NRBITS 8 7492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_TYPEBITS 8 7505d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) 7512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_SIZEBITS 13 7522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_DIRBITS 3 7532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_NONE 1U 7542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_WRITE 4U 7552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_READ 2U 7562d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 7572d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_SIZEBITS 14 7582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_DIRBITS 2 7592d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_NONE 0U 7602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_WRITE 1U 7612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_READ 2U 7622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 7632d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_NRMASK ((1 << IOC_NRBITS) - 1) 7642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_TYPEMASK ((1 << IOC_TYPEBITS) - 1) 7652d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_SIZEMASK ((1 << IOC_SIZEBITS) - 1) 7662d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if defined(IOC_DIRMASK) 7672d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#undef IOC_DIRMASK 7682d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 7692d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_DIRMASK ((1 << IOC_DIRBITS) - 1) 7702d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_NRSHIFT 0 7712d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_TYPESHIFT (IOC_NRSHIFT + IOC_NRBITS) 7722d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_SIZESHIFT (IOC_TYPESHIFT + IOC_TYPEBITS) 7732d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_DIRSHIFT (IOC_SIZESHIFT + IOC_SIZEBITS) 7742d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define EVIOC_EV_MAX 0x1f 7752d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define EVIOC_ABS_MAX 0x3f 7762d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 7772d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK) 7782d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK) 7792d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK) 7802d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK) 7814612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov 782745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_arpreq_sz; 783745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_ifreq_sz; 784745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_termios_sz; 785745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_winsize_sz; 786745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov 787745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov#if SANITIZER_LINUX 788745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_msf_sz; 789745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_multisession_sz; 790745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_read_audio_sz; 791745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_subchnl_sz; 792745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_ti_sz; 793745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_tocentry_sz; 794745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_tochdr_sz; 795745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cdrom_volctrl_sz; 7964612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned struct_ff_effect_sz; 797745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_drive_params_sz; 798745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_drive_struct_sz; 799745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_fdc_state_sz; 800745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_max_errors_sz; 801745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_raw_cmd_sz; 802745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_struct_sz; 803745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_floppy_write_errors_sz; 804745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_format_descr_sz; 805745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_hd_driveid_sz; 806745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_hd_geometry_sz; 8074612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned struct_input_absinfo_sz; 8084612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned struct_input_id_sz; 8092d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_mtpos_sz; 8102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_termio_sz; 8112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_vt_consize_sz; 8122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_vt_sizes_sz; 8132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_vt_stat_sz; 8142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX 8152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 8162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX || SANITIZER_FREEBSD 8172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_copr_buffer_sz; 8182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_copr_debug_buf_sz; 8192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_copr_msg_sz; 820745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_midi_info_sz; 821745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_mtget_sz; 822745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_mtop_sz; 823745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_rtentry_sz; 824745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_sbi_instrument_sz; 825745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_seq_event_rec_sz; 826745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_synth_info_sz; 827745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_vt_mode_sz; 8282d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX || SANITIZER_FREEBSD 829745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov 830745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov#if SANITIZER_LINUX && !SANITIZER_ANDROID 831745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_ax25_parms_struct_sz; 832745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_cyclades_monitor_sz; 8334612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned struct_input_keymap_entry_sz; 834745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_ipx_config_data_sz; 835745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_kbdiacrs_sz; 836745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_kbentry_sz; 837745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_kbkeycode_sz; 838745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_kbsentry_sz; 839745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_mtconfiginfo_sz; 840745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_nr_parms_struct_sz; 841745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_scc_modem_sz; 842745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_scc_stat_sz; 843745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_serial_multiport_struct_sz; 844745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_serial_struct_sz; 845745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_sockaddr_ax25_sz; 846745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_unimapdesc_sz; 847745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_unimapinit_sz; 8482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX && !SANITIZER_ANDROID 8492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 8502d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 8512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_audio_buf_info_sz; 8522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned struct_ppp_stats_sz; 8532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 8544f0fd8e131b6c2f13244a0fd808abe0da7a50983Dmitry Vyukov 855efb0226d4bc5a61e26851271e1aec2dd0e1f6781Bob Wilson#if !SANITIZER_ANDROID && !SANITIZER_MAC 856745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_sioc_sg_req_sz; 857745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov extern unsigned struct_sioc_vif_req_sz; 858745dd0d296e7bef712df4b5c7f86c72534953738Evgeniy Stepanov#endif 8592557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov 8602557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov // ioctl request identifiers 861bb273d554d61c1a851158b0c79c2d3f51a845bbdEvgeniy Stepanov 862bb273d554d61c1a851158b0c79c2d3f51a845bbdEvgeniy Stepanov // A special value to mark ioctls that are not present on the target platform, 863bb273d554d61c1a851158b0c79c2d3f51a845bbdEvgeniy Stepanov // when it can not be determined without including any system headers. 864bb273d554d61c1a851158b0c79c2d3f51a845bbdEvgeniy Stepanov extern unsigned IOCTL_NOT_PRESENT; 865bb273d554d61c1a851158b0c79c2d3f51a845bbdEvgeniy Stepanov 8662557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FIOASYNC; 8672557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FIOCLEX; 8682557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FIOGETOWN; 8692557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FIONBIO; 8702557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FIONCLEX; 8712557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FIOSETOWN; 8722557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCADDMULTI; 8732557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCATMARK; 8742557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCDELMULTI; 8752557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFADDR; 8762557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFBRDADDR; 8772557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFCONF; 8782557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFDSTADDR; 8792557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFFLAGS; 8802557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFMETRIC; 8812557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFMTU; 8822557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFNETMASK; 8832557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGPGRP; 8842557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFADDR; 8852557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFBRDADDR; 8862557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFDSTADDR; 8872557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFFLAGS; 8882557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFMETRIC; 8892557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFMTU; 8902557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFNETMASK; 8912557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSPGRP; 8922557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCCONS; 8932557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCEXCL; 8942557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCGETD; 8952557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCGPGRP; 8962557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCGWINSZ; 8972557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCMBIC; 8982557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCMBIS; 8992557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCMGET; 9002557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCMSET; 9012557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCNOTTY; 9022557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCNXCL; 9032557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCOUTQ; 9042557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCPKT; 9052557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSCTTY; 9062557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSETD; 9072557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSPGRP; 9082557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSTI; 9092557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSWINSZ; 9102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 9112557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGETSGCNT; 9122557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGETVIFCNT; 9132557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov#endif 9142557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov#if SANITIZER_LINUX 9154612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGABS; 9164612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGBIT; 9174612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGEFFECTS; 9184612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGID; 9194612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGKEY; 9204612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGKEYCODE; 9214612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGLED; 9224612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGNAME; 9234612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGPHYS; 9244612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGRAB; 9254612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGREP; 9264612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGSND; 9274612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGSW; 9284612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGUNIQ; 9294612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGVERSION; 9304612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCRMFF; 9314612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCSABS; 9324612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCSFF; 9334612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCSKEYCODE; 9344612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCSREP; 9352557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKFLSBUF; 9362557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKGETSIZE; 9372557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKRAGET; 9382557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKRASET; 9392557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKROGET; 9402557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKROSET; 9412557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_BLKRRPART; 9422557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMAUDIOBUFSIZ; 9432557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMEJECT; 9442557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMEJECT_SW; 9452557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMMULTISESSION; 9462557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMPAUSE; 9472557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMPLAYMSF; 9482557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMPLAYTRKIND; 9492557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADAUDIO; 9502557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADCOOKED; 9512557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADMODE1; 9522557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADMODE2; 9532557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADRAW; 9542557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADTOCENTRY; 9552557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMREADTOCHDR; 9562557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMRESET; 9572557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMRESUME; 9582557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMSEEK; 9592557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMSTART; 9602557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMSTOP; 9612557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMSUBCHNL; 9622557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMVOLCTRL; 9632557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROMVOLREAD; 9642557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CDROM_GET_UPC; 9652557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDCLRPRM; 9662557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDDEFPRM; 9672557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDFLUSH; 9682557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDFMTBEG; 9692557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDFMTEND; 9702557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDFMTTRK; 9712557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDGETDRVPRM; 9722557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDGETDRVSTAT; 9732557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDGETDRVTYP; 9742557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDGETFDCSTAT; 9752557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDGETMAXERRS; 9762557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDGETPRM; 9772557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDMSGOFF; 9782557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDMSGON; 9792557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDPOLLDRVSTAT; 9802557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDRAWCMD; 9812557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDRESET; 9822557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDSETDRVPRM; 9832557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDSETEMSGTRESH; 9842557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDSETMAXERRS; 9852557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDSETPRM; 9862557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDTWADDLE; 9872557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDWERRORCLR; 9882557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_FDWERRORGET; 9892557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_DRIVE_CMD; 9902557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GETGEO; 9912557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_32BIT; 9922557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_DMA; 9932557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_IDENTITY; 9942557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_KEEPSETTINGS; 9952557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_MULTCOUNT; 9962557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_NOWERR; 9972557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_GET_UNMASKINTR; 9982557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_SET_32BIT; 9992557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_SET_DMA; 10002557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_SET_KEEPSETTINGS; 10012557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_SET_MULTCOUNT; 10022557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_SET_NOWERR; 10032557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_HDIO_SET_UNMASKINTR; 10042557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_MTIOCPOS; 10052557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCGASYNCMAP; 10062557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCGDEBUG; 10072557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCGFLAGS; 10082557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCGUNIT; 10092557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCGXASYNCMAP; 10102557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCSASYNCMAP; 10112557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCSDEBUG; 10122557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCSFLAGS; 10132557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCSMAXCID; 10142557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCSMRU; 10152557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PPPIOCSXASYNCMAP; 10162557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCDARP; 10172557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCDRARP; 10182557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGARP; 10192557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFENCAP; 10202557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFHWADDR; 10212557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFMAP; 10222557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFMEM; 10232557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFNAME; 10242557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGIFSLAVE; 10252557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGRARP; 10262557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCGSTAMP; 10272557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSARP; 10282557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFENCAP; 10292557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFHWADDR; 10302557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFLINK; 10312557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFMAP; 10322557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFMEM; 10332557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSIFSLAVE; 10342557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCSRARP; 10352557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_HALT; 10362557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_LOAD; 10372557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_RCODE; 10382557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_RCVMSG; 10392557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_RDATA; 10402557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_RESET; 10412557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_RUN; 10422557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_SENDMSG; 10432557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_WCODE; 10442557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_COPR_WDATA; 10452d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCFLSH; 10462d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCGETA; 10472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCGETS; 10482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSBRK; 10492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSBRKP; 10502d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSETA; 10512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSETAF; 10522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSETAW; 10532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSETS; 10542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSETSF; 10552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCSETSW; 10562d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TCXONC; 10572d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCGLCKTRMIOS; 10582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCGSOFTCAR; 10592d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCINQ; 10602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCLINUX; 10612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCSERCONFIG; 10622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCSERGETLSR; 10632d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCSERGWILD; 10642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCSERSWILD; 10652d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCSLCKTRMIOS; 10662d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_TIOCSSOFTCAR; 10672d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_VT_DISALLOCATE; 10682d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_VT_GETSTATE; 10692d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_VT_RESIZE; 10702d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_VT_RESIZEX; 10712d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_VT_SENDSIG; 10722d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX 10732d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if SANITIZER_LINUX || SANITIZER_FREEBSD 10742d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_MTIOCGET; 10752d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_MTIOCTOP; 10762d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_SIOCADDRT; 10772d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_SIOCDELRT; 10782557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_GETBLKSIZE; 10792557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_GETFMTS; 10802557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_NONBLOCK; 10812557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_POST; 10822557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_RESET; 10832557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_SETFMT; 10842557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_SETFRAGMENT; 10852557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_SPEED; 10862557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_STEREO; 10872557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_SUBDIVIDE; 10882557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_SYNC; 10892557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_FM_4OP_ENABLE; 10902557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_FM_LOAD_INSTR; 10912557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_MIDI_INFO; 10922557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_MIDI_PRETIME; 10932557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_CTRLRATE; 10942557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_GETINCOUNT; 10952557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_GETOUTCOUNT; 10962557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_NRMIDIS; 10972557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_NRSYNTHS; 10982557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_OUTOFBAND; 10992557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_PANIC; 11002557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_PERCMODE; 11012557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_RESET; 11022557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_RESETSAMPLES; 11032557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_SYNC; 11042557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_TESTMIDI; 11052557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SEQ_THRESHOLD; 11062557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SYNTH_INFO; 11072557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_SYNTH_MEMAVL; 11082557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_CONTINUE; 11092557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_METRONOME; 11102557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_SELECT; 11112557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_SOURCE; 11122557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_START; 11132557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_STOP; 11142557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_TEMPO; 11152557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_TMR_TIMEBASE; 11162557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_ALTPCM; 11172557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_BASS; 11182557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_CAPS; 11192557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_CD; 11202557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_DEVMASK; 11212557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_ENHANCE; 11222557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_IGAIN; 11232557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_IMIX; 11242557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_LINE1; 11252557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_LINE2; 11262557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_LINE3; 11272557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_LINE; 11282557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_LOUD; 11292557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_MIC; 11302557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_MUTE; 11312557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_OGAIN; 11322557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_PCM; 11332557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_RECLEV; 11342557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_RECMASK; 11352557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_RECSRC; 11362557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_SPEAKER; 11372557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_STEREODEVS; 11382557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_SYNTH; 11392557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_TREBLE; 11402557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_READ_VOLUME; 11412557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_ALTPCM; 11422557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_BASS; 11432557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_CD; 11442557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_ENHANCE; 11452557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_IGAIN; 11462557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_IMIX; 11472557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE1; 11482557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE2; 11492557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE3; 11502557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE; 11512557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_LOUD; 11522557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_MIC; 11532557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_MUTE; 11542557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_OGAIN; 11552557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_PCM; 11562557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_RECLEV; 11572557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_RECSRC; 11582557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_SPEAKER; 11592557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_SYNTH; 11602557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_TREBLE; 11612557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_MIXER_WRITE_VOLUME; 11622557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_PCM_READ_BITS; 11632557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_PCM_READ_CHANNELS; 11642557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_PCM_READ_FILTER; 11652557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_PCM_READ_RATE; 11662557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_PCM_WRITE_CHANNELS; 11672557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SOUND_PCM_WRITE_FILTER; 11682557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_VT_ACTIVATE; 11692557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_VT_GETMODE; 11702557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_VT_OPENQRY; 11712557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_VT_RELDISP; 11722557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_VT_SETMODE; 11732557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_VT_WAITACTIVE; 11742d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX || SANITIZER_FREEBSD 11752d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 11762557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov#if SANITIZER_LINUX && !SANITIZER_ANDROID 11772557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYGETDEFTHRESH; 11782557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYGETDEFTIMEOUT; 11792557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYGETMON; 11802557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYGETTHRESH; 11812557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYGETTIMEOUT; 11822557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYSETDEFTHRESH; 11832557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYSETDEFTIMEOUT; 11842557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYSETTHRESH; 11852557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_CYSETTIMEOUT; 11862557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_EQL_EMANCIPATE; 11872557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_EQL_ENSLAVE; 11882557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_EQL_GETMASTRCFG; 11892557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_EQL_GETSLAVECFG; 11902557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_EQL_SETMASTRCFG; 11912557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_EQL_SETSLAVECFG; 11924612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGKEYCODE_V2; 11934612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCGPROP; 11944612abac2e172e077246cec0fcbed291f55a1d02Evgeniy Stepanov extern unsigned IOCTL_EVIOCSKEYCODE_V2; 11957028c1ee187302ace4fa3530769458c0b3caf946Evgeniy Stepanov extern unsigned IOCTL_FS_IOC_GETFLAGS; 11967028c1ee187302ace4fa3530769458c0b3caf946Evgeniy Stepanov extern unsigned IOCTL_FS_IOC_GETVERSION; 11977028c1ee187302ace4fa3530769458c0b3caf946Evgeniy Stepanov extern unsigned IOCTL_FS_IOC_SETFLAGS; 11987028c1ee187302ace4fa3530769458c0b3caf946Evgeniy Stepanov extern unsigned IOCTL_FS_IOC_SETVERSION; 11992557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_GIO_CMAP; 12002557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_GIO_FONT; 12012557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_GIO_UNIMAP; 12022557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_GIO_UNISCRNMAP; 12032557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDADDIO; 12042557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDDELIO; 12052557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDGETKEYCODE; 12062557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDGKBDIACR; 12072557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDGKBENT; 12082557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDGKBLED; 12092557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDGKBMETA; 12102557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDGKBSENT; 12112557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDMAPDISP; 12122557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSETKEYCODE; 12132557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSIGACCEPT; 12142557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSKBDIACR; 12152557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSKBENT; 12162557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSKBLED; 12172557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSKBMETA; 12182557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDSKBSENT; 12192557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_KDUNMAPDISP; 12202557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPABORT; 12212557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPABORTOPEN; 12222557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPCAREFUL; 12232557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPCHAR; 12242557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPGETIRQ; 12252557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPGETSTATUS; 12262557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPRESET; 12272557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPSETIRQ; 12282557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPTIME; 12292557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_LPWAIT; 12308766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_MTIOCGETCONFIG; 12318766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_MTIOCSETCONFIG; 12322557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PIO_CMAP; 12332557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PIO_FONT; 12342557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PIO_UNIMAP; 12352557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PIO_UNIMAPCLR; 12362557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_PIO_UNISCRNMAP; 12372557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SCSI_IOCTL_GET_IDLUN; 12382557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SCSI_IOCTL_PROBE_HOST; 12392557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE; 12402557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE; 12412557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCAIPXITFCRT; 12422557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCAIPXPRISLT; 12438766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCAX25ADDUID; 12448766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCAX25DELUID; 12458766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCAX25GETPARMS; 12468766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCAX25GETUID; 12478766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCAX25NOUID; 12488766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCAX25SETPARMS; 12492557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCDEVPLIP; 12502557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SIOCIPXCFGDATA; 12518766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCNRDECOBS; 12528766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCNRGETPARMS; 12538766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCNRRTCTL; 12548766b8162c8e0e2f57baf7aa47736f89aaaac9dcChandler Carruth extern unsigned IOCTL_SIOCNRSETPARMS; 12552557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_GETISPACE; 12562557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_SNDCTL_DSP_GETOSPACE; 12572557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCGSERIAL; 12582557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSERGETMULTI; 12592557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSERSETMULTI; 12602557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov extern unsigned IOCTL_TIOCSSERIAL; 12612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif // SANITIZER_LINUX && !SANITIZER_ANDROID 12622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 12632d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 12642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_GIO_SCRNMAP; 12652d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDDISABIO; 12662d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDENABIO; 12672d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDGETLED; 12682d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDGETMODE; 12692d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDGKBMODE; 12702d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDGKBTYPE; 12712d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDMKTONE; 12722d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDSETLED; 12732d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDSETMODE; 12742d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KDSKBMODE; 12752d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_KIOCSOUND; 12762d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern unsigned IOCTL_PIO_SCRNMAP; 12772557a1b4517971c9cf1aff62425fc48561db9949Evgeniy Stepanov#endif 127870db33e143303752c7fe8800d15b5b31066b1e0dSergey Matveev 12792d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern const int errno_EINVAL; 128011f5309ec1bf13430c8a3a16f177d9e8e1190e38Dmitry Vyukov extern const int errno_EOWNERDEAD; 12812d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 12822d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern const int si_SEGV_MAPERR; 12832d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern const int si_SEGV_ACCERR; 12849358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov} // namespace __sanitizer 128578c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov 1286bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov#define CHECK_TYPE_SIZE(TYPE) \ 1287bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov COMPILER_CHECK(sizeof(__sanitizer_##TYPE) == sizeof(TYPE)) 1288bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov 1289bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov#define CHECK_SIZE_AND_OFFSET(CLASS, MEMBER) \ 1290bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov COMPILER_CHECK(sizeof(((__sanitizer_##CLASS *) NULL)->MEMBER) == \ 1291bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov sizeof(((CLASS *) NULL)->MEMBER)); \ 1292bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov COMPILER_CHECK(offsetof(__sanitizer_##CLASS, MEMBER) == \ 1293bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov offsetof(CLASS, MEMBER)) 1294bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov 1295bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov// For sigaction, which is a function and struct at the same time, 1296bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov// and thus requires explicit "struct" in sizeof() expression. 1297bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov#define CHECK_STRUCT_SIZE_AND_OFFSET(CLASS, MEMBER) \ 1298bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov COMPILER_CHECK(sizeof(((struct __sanitizer_##CLASS *) NULL)->MEMBER) == \ 1299bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov sizeof(((struct CLASS *) NULL)->MEMBER)); \ 1300bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov COMPILER_CHECK(offsetof(struct __sanitizer_##CLASS, MEMBER) == \ 1301bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov offsetof(struct CLASS, MEMBER)) 1302bd65956821ebe3f4e1fb0b57892a5a443ad50c6fEvgeniy Stepanov 130378c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov#endif 1304