1*ee754c2dSkamil //===-- sanitizer_platform_limits_posix.h ---------------------------------===// 2*ee754c2dSkamil // 3*ee754c2dSkamil // The LLVM Compiler Infrastructure 4*ee754c2dSkamil // 5*ee754c2dSkamil // This file is distributed under the University of Illinois Open Source 6*ee754c2dSkamil // License. See LICENSE.TXT for details. 7*ee754c2dSkamil // 8*ee754c2dSkamil //===----------------------------------------------------------------------===// 9*ee754c2dSkamil // 10*ee754c2dSkamil // This file is a part of Sanitizer common code. 11*ee754c2dSkamil // 12*ee754c2dSkamil // Sizes and layouts of platform-specific POSIX data structures. 13*ee754c2dSkamil //===----------------------------------------------------------------------===// 14*ee754c2dSkamil 15*ee754c2dSkamil #ifndef SANITIZER_PLATFORM_LIMITS_POSIX_H 16*ee754c2dSkamil #define SANITIZER_PLATFORM_LIMITS_POSIX_H 17*ee754c2dSkamil 18*ee754c2dSkamil #if SANITIZER_LINUX || SANITIZER_MAC 19*ee754c2dSkamil 20*ee754c2dSkamil #include "sanitizer_internal_defs.h" 21*ee754c2dSkamil #include "sanitizer_platform.h" 22*ee754c2dSkamil 23*ee754c2dSkamil # define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) ((link_map*)(handle)) 24*ee754c2dSkamil 25*ee754c2dSkamil #ifndef __GLIBC_PREREQ 26*ee754c2dSkamil #define __GLIBC_PREREQ(x, y) 0 27*ee754c2dSkamil #endif 28*ee754c2dSkamil 29*ee754c2dSkamil namespace __sanitizer { 30*ee754c2dSkamil extern unsigned struct_utsname_sz; 31*ee754c2dSkamil extern unsigned struct_stat_sz; 32*ee754c2dSkamil #if !SANITIZER_IOS 33*ee754c2dSkamil extern unsigned struct_stat64_sz; 34*ee754c2dSkamil #endif 35*ee754c2dSkamil extern unsigned struct_rusage_sz; 36*ee754c2dSkamil extern unsigned siginfo_t_sz; 37*ee754c2dSkamil extern unsigned struct_itimerval_sz; 38*ee754c2dSkamil extern unsigned pthread_t_sz; 39*ee754c2dSkamil extern unsigned pthread_mutex_t_sz; 40*ee754c2dSkamil extern unsigned pthread_cond_t_sz; 41*ee754c2dSkamil extern unsigned pid_t_sz; 42*ee754c2dSkamil extern unsigned timeval_sz; 43*ee754c2dSkamil extern unsigned uid_t_sz; 44*ee754c2dSkamil extern unsigned gid_t_sz; 45*ee754c2dSkamil extern unsigned mbstate_t_sz; 46*ee754c2dSkamil extern unsigned struct_timezone_sz; 47*ee754c2dSkamil extern unsigned struct_tms_sz; 48*ee754c2dSkamil extern unsigned struct_itimerspec_sz; 49*ee754c2dSkamil extern unsigned struct_sigevent_sz; 50*ee754c2dSkamil extern unsigned struct_sched_param_sz; 51*ee754c2dSkamil extern unsigned struct_statfs64_sz; 52*ee754c2dSkamil extern unsigned struct_regex_sz; 53*ee754c2dSkamil extern unsigned struct_regmatch_sz; 54*ee754c2dSkamil 55*ee754c2dSkamil #if !SANITIZER_ANDROID 56*ee754c2dSkamil extern unsigned struct_fstab_sz; 57*ee754c2dSkamil extern unsigned struct_statfs_sz; 58*ee754c2dSkamil extern unsigned struct_sockaddr_sz; 59*ee754c2dSkamil extern unsigned ucontext_t_sz; 60*ee754c2dSkamil #endif // !SANITIZER_ANDROID 61*ee754c2dSkamil 62*ee754c2dSkamil #if SANITIZER_LINUX 63*ee754c2dSkamil 64*ee754c2dSkamil #if defined(__x86_64__) 65*ee754c2dSkamil const unsigned struct_kernel_stat_sz = 144; 66*ee754c2dSkamil const unsigned struct_kernel_stat64_sz = 0; 67*ee754c2dSkamil #elif defined(__i386__) 68*ee754c2dSkamil const unsigned struct_kernel_stat_sz = 64; 69*ee754c2dSkamil const unsigned struct_kernel_stat64_sz = 96; 70*ee754c2dSkamil #elif defined(__arm__) 71*ee754c2dSkamil const unsigned struct_kernel_stat_sz = 64; 72*ee754c2dSkamil const unsigned struct_kernel_stat64_sz = 104; 73*ee754c2dSkamil #elif defined(__aarch64__) 74*ee754c2dSkamil const unsigned struct_kernel_stat_sz = 128; 75*ee754c2dSkamil const unsigned struct_kernel_stat64_sz = 104; 76*ee754c2dSkamil #elif defined(__powerpc__) && !defined(__powerpc64__) 77*ee754c2dSkamil const unsigned struct_kernel_stat_sz = 72; 78*ee754c2dSkamil const unsigned struct_kernel_stat64_sz = 104; 79*ee754c2dSkamil #elif defined(__powerpc64__) 80*ee754c2dSkamil const unsigned struct_kernel_stat_sz = 144; 81*ee754c2dSkamil const unsigned struct_kernel_stat64_sz = 104; 82*ee754c2dSkamil #elif defined(__mips__) 83*ee754c2dSkamil const unsigned struct_kernel_stat_sz = 84*ee754c2dSkamil SANITIZER_ANDROID ? FIRST_32_SECOND_64(104, 128) : 85*ee754c2dSkamil FIRST_32_SECOND_64(160, 216); 86*ee754c2dSkamil const unsigned struct_kernel_stat64_sz = 104; 87*ee754c2dSkamil #elif defined(__s390__) && !defined(__s390x__) 88*ee754c2dSkamil const unsigned struct_kernel_stat_sz = 64; 89*ee754c2dSkamil const unsigned struct_kernel_stat64_sz = 104; 90*ee754c2dSkamil #elif defined(__s390x__) 91*ee754c2dSkamil const unsigned struct_kernel_stat_sz = 144; 92*ee754c2dSkamil const unsigned struct_kernel_stat64_sz = 0; 93*ee754c2dSkamil #elif defined(__sparc__) && defined(__arch64__) 94*ee754c2dSkamil const unsigned struct___old_kernel_stat_sz = 0; 95*ee754c2dSkamil const unsigned struct_kernel_stat_sz = 104; 96*ee754c2dSkamil const unsigned struct_kernel_stat64_sz = 144; 97*ee754c2dSkamil #elif defined(__sparc__) && !defined(__arch64__) 98*ee754c2dSkamil const unsigned struct___old_kernel_stat_sz = 0; 99*ee754c2dSkamil const unsigned struct_kernel_stat_sz = 64; 100*ee754c2dSkamil const unsigned struct_kernel_stat64_sz = 104; 101*ee754c2dSkamil #endif 102*ee754c2dSkamil struct __sanitizer_perf_event_attr { 103*ee754c2dSkamil unsigned type; 104*ee754c2dSkamil unsigned size; 105*ee754c2dSkamil // More fields that vary with the kernel version. 106*ee754c2dSkamil }; 107*ee754c2dSkamil 108*ee754c2dSkamil extern unsigned struct_epoll_event_sz; 109*ee754c2dSkamil extern unsigned struct_sysinfo_sz; 110*ee754c2dSkamil extern unsigned __user_cap_header_struct_sz; 111*ee754c2dSkamil extern unsigned __user_cap_data_struct_sz; 112*ee754c2dSkamil extern unsigned struct_new_utsname_sz; 113*ee754c2dSkamil extern unsigned struct_old_utsname_sz; 114*ee754c2dSkamil extern unsigned struct_oldold_utsname_sz; 115*ee754c2dSkamil 116*ee754c2dSkamil const unsigned struct_kexec_segment_sz = 4 * sizeof(unsigned long); 117*ee754c2dSkamil #endif // SANITIZER_LINUX 118*ee754c2dSkamil 119*ee754c2dSkamil #if SANITIZER_LINUX 120*ee754c2dSkamil 121*ee754c2dSkamil #if defined(__powerpc64__) || defined(__s390__) 122*ee754c2dSkamil const unsigned struct___old_kernel_stat_sz = 0; 123*ee754c2dSkamil #elif !defined(__sparc__) 124*ee754c2dSkamil const unsigned struct___old_kernel_stat_sz = 32; 125*ee754c2dSkamil #endif 126*ee754c2dSkamil 127*ee754c2dSkamil extern unsigned struct_rlimit_sz; 128*ee754c2dSkamil extern unsigned struct_utimbuf_sz; 129*ee754c2dSkamil extern unsigned struct_timespec_sz; 130*ee754c2dSkamil 131*ee754c2dSkamil struct __sanitizer_iocb { 132*ee754c2dSkamil u64 aio_data; 133*ee754c2dSkamil u32 aio_key_or_aio_reserved1; // Simply crazy. 134*ee754c2dSkamil u32 aio_reserved1_or_aio_key; // Luckily, we don't need these. 135*ee754c2dSkamil u16 aio_lio_opcode; 136*ee754c2dSkamil s16 aio_reqprio; 137*ee754c2dSkamil u32 aio_fildes; 138*ee754c2dSkamil u64 aio_buf; 139*ee754c2dSkamil u64 aio_nbytes; 140*ee754c2dSkamil s64 aio_offset; 141*ee754c2dSkamil u64 aio_reserved2; 142*ee754c2dSkamil u64 aio_reserved3; 143*ee754c2dSkamil }; 144*ee754c2dSkamil 145*ee754c2dSkamil struct __sanitizer_io_event { 146*ee754c2dSkamil u64 data; 147*ee754c2dSkamil u64 obj; 148*ee754c2dSkamil u64 res; 149*ee754c2dSkamil u64 res2; 150*ee754c2dSkamil }; 151*ee754c2dSkamil 152*ee754c2dSkamil const unsigned iocb_cmd_pread = 0; 153*ee754c2dSkamil const unsigned iocb_cmd_pwrite = 1; 154*ee754c2dSkamil const unsigned iocb_cmd_preadv = 7; 155*ee754c2dSkamil const unsigned iocb_cmd_pwritev = 8; 156*ee754c2dSkamil 157*ee754c2dSkamil struct __sanitizer___sysctl_args { 158*ee754c2dSkamil int *name; 159*ee754c2dSkamil int nlen; 160*ee754c2dSkamil void *oldval; 161*ee754c2dSkamil uptr *oldlenp; 162*ee754c2dSkamil void *newval; 163*ee754c2dSkamil uptr newlen; 164*ee754c2dSkamil unsigned long ___unused[4]; 165*ee754c2dSkamil }; 166*ee754c2dSkamil 167*ee754c2dSkamil const unsigned old_sigset_t_sz = sizeof(unsigned long); 168*ee754c2dSkamil 169*ee754c2dSkamil struct __sanitizer_sem_t { 170*ee754c2dSkamil #if SANITIZER_ANDROID && defined(_LP64) 171*ee754c2dSkamil int data[4]; 172*ee754c2dSkamil #elif SANITIZER_ANDROID && !defined(_LP64) 173*ee754c2dSkamil int data; 174*ee754c2dSkamil #elif SANITIZER_LINUX 175*ee754c2dSkamil uptr data[4]; 176*ee754c2dSkamil #endif 177*ee754c2dSkamil }; 178*ee754c2dSkamil #endif // SANITIZER_LINUX 179*ee754c2dSkamil 180*ee754c2dSkamil #if SANITIZER_ANDROID 181*ee754c2dSkamil struct __sanitizer_struct_mallinfo { 182*ee754c2dSkamil uptr v[10]; 183*ee754c2dSkamil }; 184*ee754c2dSkamil #endif 185*ee754c2dSkamil 186*ee754c2dSkamil #if SANITIZER_LINUX && !SANITIZER_ANDROID 187*ee754c2dSkamil struct __sanitizer_struct_mallinfo { 188*ee754c2dSkamil int v[10]; 189*ee754c2dSkamil }; 190*ee754c2dSkamil 191*ee754c2dSkamil extern unsigned struct_ustat_sz; 192*ee754c2dSkamil extern unsigned struct_rlimit64_sz; 193*ee754c2dSkamil extern unsigned struct_statvfs64_sz; 194*ee754c2dSkamil 195*ee754c2dSkamil struct __sanitizer_ipc_perm { 196*ee754c2dSkamil int __key; 197*ee754c2dSkamil int uid; 198*ee754c2dSkamil int gid; 199*ee754c2dSkamil int cuid; 200*ee754c2dSkamil int cgid; 201*ee754c2dSkamil #ifdef __powerpc__ 202*ee754c2dSkamil unsigned mode; 203*ee754c2dSkamil unsigned __seq; 204*ee754c2dSkamil u64 __unused1; 205*ee754c2dSkamil u64 __unused2; 206*ee754c2dSkamil #elif defined(__sparc__) 207*ee754c2dSkamil #if defined(__arch64__) 208*ee754c2dSkamil unsigned mode; 209*ee754c2dSkamil unsigned short __pad1; 210*ee754c2dSkamil #else 211*ee754c2dSkamil unsigned short __pad1; 212*ee754c2dSkamil unsigned short mode; 213*ee754c2dSkamil unsigned short __pad2; 214*ee754c2dSkamil #endif 215*ee754c2dSkamil unsigned short __seq; 216*ee754c2dSkamil unsigned long long __unused1; 217*ee754c2dSkamil unsigned long long __unused2; 218*ee754c2dSkamil #elif defined(__mips__) || defined(__aarch64__) || defined(__s390x__) 219*ee754c2dSkamil unsigned int mode; 220*ee754c2dSkamil unsigned short __seq; 221*ee754c2dSkamil unsigned short __pad1; 222*ee754c2dSkamil unsigned long __unused1; 223*ee754c2dSkamil unsigned long __unused2; 224*ee754c2dSkamil #else 225*ee754c2dSkamil unsigned short mode; 226*ee754c2dSkamil unsigned short __pad1; 227*ee754c2dSkamil unsigned short __seq; 228*ee754c2dSkamil unsigned short __pad2; 229*ee754c2dSkamil #if defined(__x86_64__) && !defined(_LP64) 230*ee754c2dSkamil u64 __unused1; 231*ee754c2dSkamil u64 __unused2; 232*ee754c2dSkamil #else 233*ee754c2dSkamil unsigned long __unused1; 234*ee754c2dSkamil unsigned long __unused2; 235*ee754c2dSkamil #endif 236*ee754c2dSkamil #endif 237*ee754c2dSkamil }; 238*ee754c2dSkamil 239*ee754c2dSkamil struct __sanitizer_shmid_ds { 240*ee754c2dSkamil __sanitizer_ipc_perm shm_perm; 241*ee754c2dSkamil #if defined(__sparc__) 242*ee754c2dSkamil #if !defined(__arch64__) 243*ee754c2dSkamil u32 __pad1; 244*ee754c2dSkamil #endif 245*ee754c2dSkamil long shm_atime; 246*ee754c2dSkamil #if !defined(__arch64__) 247*ee754c2dSkamil u32 __pad2; 248*ee754c2dSkamil #endif 249*ee754c2dSkamil long shm_dtime; 250*ee754c2dSkamil #if !defined(__arch64__) 251*ee754c2dSkamil u32 __pad3; 252*ee754c2dSkamil #endif 253*ee754c2dSkamil long shm_ctime; 254*ee754c2dSkamil uptr shm_segsz; 255*ee754c2dSkamil int shm_cpid; 256*ee754c2dSkamil int shm_lpid; 257*ee754c2dSkamil unsigned long shm_nattch; 258*ee754c2dSkamil unsigned long __glibc_reserved1; 259*ee754c2dSkamil unsigned long __glibc_reserved2; 260*ee754c2dSkamil #else 261*ee754c2dSkamil #ifndef __powerpc__ 262*ee754c2dSkamil uptr shm_segsz; 263*ee754c2dSkamil #elif !defined(__powerpc64__) 264*ee754c2dSkamil uptr __unused0; 265*ee754c2dSkamil #endif 266*ee754c2dSkamil #if defined(__x86_64__) && !defined(_LP64) 267*ee754c2dSkamil u64 shm_atime; 268*ee754c2dSkamil u64 shm_dtime; 269*ee754c2dSkamil u64 shm_ctime; 270*ee754c2dSkamil #else 271*ee754c2dSkamil uptr shm_atime; 272*ee754c2dSkamil #if !defined(_LP64) && !defined(__mips__) 273*ee754c2dSkamil uptr __unused1; 274*ee754c2dSkamil #endif 275*ee754c2dSkamil uptr shm_dtime; 276*ee754c2dSkamil #if !defined(_LP64) && !defined(__mips__) 277*ee754c2dSkamil uptr __unused2; 278*ee754c2dSkamil #endif 279*ee754c2dSkamil uptr shm_ctime; 280*ee754c2dSkamil #if !defined(_LP64) && !defined(__mips__) 281*ee754c2dSkamil uptr __unused3; 282*ee754c2dSkamil #endif 283*ee754c2dSkamil #endif 284*ee754c2dSkamil #ifdef __powerpc__ 285*ee754c2dSkamil uptr shm_segsz; 286*ee754c2dSkamil #endif 287*ee754c2dSkamil int shm_cpid; 288*ee754c2dSkamil int shm_lpid; 289*ee754c2dSkamil #if defined(__x86_64__) && !defined(_LP64) 290*ee754c2dSkamil u64 shm_nattch; 291*ee754c2dSkamil u64 __unused4; 292*ee754c2dSkamil u64 __unused5; 293*ee754c2dSkamil #else 294*ee754c2dSkamil uptr shm_nattch; 295*ee754c2dSkamil uptr __unused4; 296*ee754c2dSkamil uptr __unused5; 297*ee754c2dSkamil #endif 298*ee754c2dSkamil #endif 299*ee754c2dSkamil }; 300*ee754c2dSkamil #endif 301*ee754c2dSkamil 302*ee754c2dSkamil #if SANITIZER_LINUX && !SANITIZER_ANDROID 303*ee754c2dSkamil extern unsigned struct_msqid_ds_sz; 304*ee754c2dSkamil extern unsigned struct_mq_attr_sz; 305*ee754c2dSkamil extern unsigned struct_timex_sz; 306*ee754c2dSkamil extern unsigned struct_statvfs_sz; 307*ee754c2dSkamil #endif // SANITIZER_LINUX && !SANITIZER_ANDROID 308*ee754c2dSkamil 309*ee754c2dSkamil struct __sanitizer_iovec { 310*ee754c2dSkamil void *iov_base; 311*ee754c2dSkamil uptr iov_len; 312*ee754c2dSkamil }; 313*ee754c2dSkamil 314*ee754c2dSkamil #if !SANITIZER_ANDROID 315*ee754c2dSkamil struct __sanitizer_ifaddrs { 316*ee754c2dSkamil struct __sanitizer_ifaddrs *ifa_next; 317*ee754c2dSkamil char *ifa_name; 318*ee754c2dSkamil unsigned int ifa_flags; 319*ee754c2dSkamil void *ifa_addr; // (struct sockaddr *) 320*ee754c2dSkamil void *ifa_netmask; // (struct sockaddr *) 321*ee754c2dSkamil // This is a union on Linux. 322*ee754c2dSkamil # ifdef ifa_dstaddr 323*ee754c2dSkamil # undef ifa_dstaddr 324*ee754c2dSkamil # endif 325*ee754c2dSkamil void *ifa_dstaddr; // (struct sockaddr *) 326*ee754c2dSkamil void *ifa_data; 327*ee754c2dSkamil }; 328*ee754c2dSkamil #endif // !SANITIZER_ANDROID 329*ee754c2dSkamil 330*ee754c2dSkamil #if SANITIZER_MAC 331*ee754c2dSkamil typedef unsigned long __sanitizer_pthread_key_t; 332*ee754c2dSkamil #else 333*ee754c2dSkamil typedef unsigned __sanitizer_pthread_key_t; 334*ee754c2dSkamil #endif 335*ee754c2dSkamil 336*ee754c2dSkamil #if SANITIZER_LINUX && !SANITIZER_ANDROID 337*ee754c2dSkamil 338*ee754c2dSkamil struct __sanitizer_XDR { 339*ee754c2dSkamil int x_op; 340*ee754c2dSkamil void *x_ops; 341*ee754c2dSkamil uptr x_public; 342*ee754c2dSkamil uptr x_private; 343*ee754c2dSkamil uptr x_base; 344*ee754c2dSkamil unsigned x_handy; 345*ee754c2dSkamil }; 346*ee754c2dSkamil 347*ee754c2dSkamil const int __sanitizer_XDR_ENCODE = 0; 348*ee754c2dSkamil const int __sanitizer_XDR_DECODE = 1; 349*ee754c2dSkamil const int __sanitizer_XDR_FREE = 2; 350*ee754c2dSkamil #endif 351*ee754c2dSkamil 352*ee754c2dSkamil struct __sanitizer_passwd { 353*ee754c2dSkamil char *pw_name; 354*ee754c2dSkamil char *pw_passwd; 355*ee754c2dSkamil int pw_uid; 356*ee754c2dSkamil int pw_gid; 357*ee754c2dSkamil #if SANITIZER_MAC 358*ee754c2dSkamil long pw_change; 359*ee754c2dSkamil char *pw_class; 360*ee754c2dSkamil #endif 361*ee754c2dSkamil #if !(SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 32)) 362*ee754c2dSkamil char *pw_gecos; 363*ee754c2dSkamil #endif 364*ee754c2dSkamil char *pw_dir; 365*ee754c2dSkamil char *pw_shell; 366*ee754c2dSkamil #if SANITIZER_MAC 367*ee754c2dSkamil long pw_expire; 368*ee754c2dSkamil #endif 369*ee754c2dSkamil }; 370*ee754c2dSkamil 371*ee754c2dSkamil struct __sanitizer_group { 372*ee754c2dSkamil char *gr_name; 373*ee754c2dSkamil char *gr_passwd; 374*ee754c2dSkamil int gr_gid; 375*ee754c2dSkamil char **gr_mem; 376*ee754c2dSkamil }; 377*ee754c2dSkamil 378*ee754c2dSkamil #if defined(__x86_64__) && !defined(_LP64) 379*ee754c2dSkamil typedef long long __sanitizer_time_t; 380*ee754c2dSkamil #else 381*ee754c2dSkamil typedef long __sanitizer_time_t; 382*ee754c2dSkamil #endif 383*ee754c2dSkamil 384*ee754c2dSkamil typedef long __sanitizer_suseconds_t; 385*ee754c2dSkamil 386*ee754c2dSkamil struct __sanitizer_timeval { 387*ee754c2dSkamil __sanitizer_time_t tv_sec; 388*ee754c2dSkamil __sanitizer_suseconds_t tv_usec; 389*ee754c2dSkamil }; 390*ee754c2dSkamil 391*ee754c2dSkamil struct __sanitizer_itimerval { 392*ee754c2dSkamil struct __sanitizer_timeval it_interval; 393*ee754c2dSkamil struct __sanitizer_timeval it_value; 394*ee754c2dSkamil }; 395*ee754c2dSkamil 396*ee754c2dSkamil struct __sanitizer_timeb { 397*ee754c2dSkamil __sanitizer_time_t time; 398*ee754c2dSkamil unsigned short millitm; 399*ee754c2dSkamil short timezone; 400*ee754c2dSkamil short dstflag; 401*ee754c2dSkamil }; 402*ee754c2dSkamil 403*ee754c2dSkamil struct __sanitizer_ether_addr { 404*ee754c2dSkamil u8 octet[6]; 405*ee754c2dSkamil }; 406*ee754c2dSkamil 407*ee754c2dSkamil struct __sanitizer_tm { 408*ee754c2dSkamil int tm_sec; 409*ee754c2dSkamil int tm_min; 410*ee754c2dSkamil int tm_hour; 411*ee754c2dSkamil int tm_mday; 412*ee754c2dSkamil int tm_mon; 413*ee754c2dSkamil int tm_year; 414*ee754c2dSkamil int tm_wday; 415*ee754c2dSkamil int tm_yday; 416*ee754c2dSkamil int tm_isdst; 417*ee754c2dSkamil long int tm_gmtoff; 418*ee754c2dSkamil const char *tm_zone; 419*ee754c2dSkamil }; 420*ee754c2dSkamil 421*ee754c2dSkamil #if SANITIZER_LINUX 422*ee754c2dSkamil struct __sanitizer_mntent { 423*ee754c2dSkamil char *mnt_fsname; 424*ee754c2dSkamil char *mnt_dir; 425*ee754c2dSkamil char *mnt_type; 426*ee754c2dSkamil char *mnt_opts; 427*ee754c2dSkamil int mnt_freq; 428*ee754c2dSkamil int mnt_passno; 429*ee754c2dSkamil }; 430*ee754c2dSkamil 431*ee754c2dSkamil struct __sanitizer_file_handle { 432*ee754c2dSkamil unsigned int handle_bytes; 433*ee754c2dSkamil int handle_type; 434*ee754c2dSkamil unsigned char f_handle[1]; // variable sized 435*ee754c2dSkamil }; 436*ee754c2dSkamil #endif 437*ee754c2dSkamil 438*ee754c2dSkamil #if SANITIZER_MAC 439*ee754c2dSkamil struct __sanitizer_msghdr { 440*ee754c2dSkamil void *msg_name; 441*ee754c2dSkamil unsigned msg_namelen; 442*ee754c2dSkamil struct __sanitizer_iovec *msg_iov; 443*ee754c2dSkamil unsigned msg_iovlen; 444*ee754c2dSkamil void *msg_control; 445*ee754c2dSkamil unsigned msg_controllen; 446*ee754c2dSkamil int msg_flags; 447*ee754c2dSkamil }; 448*ee754c2dSkamil struct __sanitizer_cmsghdr { 449*ee754c2dSkamil unsigned cmsg_len; 450*ee754c2dSkamil int cmsg_level; 451*ee754c2dSkamil int cmsg_type; 452*ee754c2dSkamil }; 453*ee754c2dSkamil #else 454*ee754c2dSkamil struct __sanitizer_msghdr { 455*ee754c2dSkamil void *msg_name; 456*ee754c2dSkamil unsigned msg_namelen; 457*ee754c2dSkamil struct __sanitizer_iovec *msg_iov; 458*ee754c2dSkamil uptr msg_iovlen; 459*ee754c2dSkamil void *msg_control; 460*ee754c2dSkamil uptr msg_controllen; 461*ee754c2dSkamil int msg_flags; 462*ee754c2dSkamil }; 463*ee754c2dSkamil struct __sanitizer_cmsghdr { 464*ee754c2dSkamil uptr cmsg_len; 465*ee754c2dSkamil int cmsg_level; 466*ee754c2dSkamil int cmsg_type; 467*ee754c2dSkamil }; 468*ee754c2dSkamil #endif 469*ee754c2dSkamil 470*ee754c2dSkamil #if SANITIZER_LINUX 471*ee754c2dSkamil struct __sanitizer_mmsghdr { 472*ee754c2dSkamil __sanitizer_msghdr msg_hdr; 473*ee754c2dSkamil unsigned int msg_len; 474*ee754c2dSkamil }; 475*ee754c2dSkamil #endif 476*ee754c2dSkamil 477*ee754c2dSkamil #if SANITIZER_MAC 478*ee754c2dSkamil struct __sanitizer_dirent { 479*ee754c2dSkamil unsigned long long d_ino; 480*ee754c2dSkamil unsigned long long d_seekoff; 481*ee754c2dSkamil unsigned short d_reclen; 482*ee754c2dSkamil // more fields that we don't care about 483*ee754c2dSkamil }; 484*ee754c2dSkamil #elif SANITIZER_ANDROID || defined(__x86_64__) 485*ee754c2dSkamil struct __sanitizer_dirent { 486*ee754c2dSkamil unsigned long long d_ino; 487*ee754c2dSkamil unsigned long long d_off; 488*ee754c2dSkamil unsigned short d_reclen; 489*ee754c2dSkamil // more fields that we don't care about 490*ee754c2dSkamil }; 491*ee754c2dSkamil #else 492*ee754c2dSkamil struct __sanitizer_dirent { 493*ee754c2dSkamil uptr d_ino; 494*ee754c2dSkamil uptr d_off; 495*ee754c2dSkamil unsigned short d_reclen; 496*ee754c2dSkamil // more fields that we don't care about 497*ee754c2dSkamil }; 498*ee754c2dSkamil #endif 499*ee754c2dSkamil 500*ee754c2dSkamil #if SANITIZER_LINUX && !SANITIZER_ANDROID 501*ee754c2dSkamil struct __sanitizer_dirent64 { 502*ee754c2dSkamil unsigned long long d_ino; 503*ee754c2dSkamil unsigned long long d_off; 504*ee754c2dSkamil unsigned short d_reclen; 505*ee754c2dSkamil // more fields that we don't care about 506*ee754c2dSkamil }; 507*ee754c2dSkamil #endif 508*ee754c2dSkamil 509*ee754c2dSkamil #if defined(__x86_64__) && !defined(_LP64) 510*ee754c2dSkamil typedef long long __sanitizer_clock_t; 511*ee754c2dSkamil #else 512*ee754c2dSkamil typedef long __sanitizer_clock_t; 513*ee754c2dSkamil #endif 514*ee754c2dSkamil 515*ee754c2dSkamil #if SANITIZER_LINUX 516*ee754c2dSkamil typedef int __sanitizer_clockid_t; 517*ee754c2dSkamil #endif 518*ee754c2dSkamil 519*ee754c2dSkamil #if SANITIZER_LINUX 520*ee754c2dSkamil #if defined(_LP64) || defined(__x86_64__) || defined(__powerpc__)\ 521*ee754c2dSkamil || defined(__mips__) 522*ee754c2dSkamil typedef unsigned __sanitizer___kernel_uid_t; 523*ee754c2dSkamil typedef unsigned __sanitizer___kernel_gid_t; 524*ee754c2dSkamil #else 525*ee754c2dSkamil typedef unsigned short __sanitizer___kernel_uid_t; 526*ee754c2dSkamil typedef unsigned short __sanitizer___kernel_gid_t; 527*ee754c2dSkamil #endif 528*ee754c2dSkamil #if defined(__x86_64__) && !defined(_LP64) 529*ee754c2dSkamil typedef long long __sanitizer___kernel_off_t; 530*ee754c2dSkamil #else 531*ee754c2dSkamil typedef long __sanitizer___kernel_off_t; 532*ee754c2dSkamil #endif 533*ee754c2dSkamil 534*ee754c2dSkamil #if defined(__powerpc__) || defined(__mips__) 535*ee754c2dSkamil typedef unsigned int __sanitizer___kernel_old_uid_t; 536*ee754c2dSkamil typedef unsigned int __sanitizer___kernel_old_gid_t; 537*ee754c2dSkamil #else 538*ee754c2dSkamil typedef unsigned short __sanitizer___kernel_old_uid_t; 539*ee754c2dSkamil typedef unsigned short __sanitizer___kernel_old_gid_t; 540*ee754c2dSkamil #endif 541*ee754c2dSkamil 542*ee754c2dSkamil typedef long long __sanitizer___kernel_loff_t; 543*ee754c2dSkamil typedef struct { 544*ee754c2dSkamil unsigned long fds_bits[1024 / (8 * sizeof(long))]; 545*ee754c2dSkamil } __sanitizer___kernel_fd_set; 546*ee754c2dSkamil #endif 547*ee754c2dSkamil 548*ee754c2dSkamil // This thing depends on the platform. We are only interested in the upper 549*ee754c2dSkamil // limit. Verified with a compiler assert in .cc. 550*ee754c2dSkamil const int pthread_attr_t_max_sz = 128; 551*ee754c2dSkamil union __sanitizer_pthread_attr_t { 552*ee754c2dSkamil char size[pthread_attr_t_max_sz]; // NOLINT 553*ee754c2dSkamil void *align; 554*ee754c2dSkamil }; 555*ee754c2dSkamil 556*ee754c2dSkamil #if SANITIZER_ANDROID 557*ee754c2dSkamil # if SANITIZER_MIPS 558*ee754c2dSkamil typedef unsigned long __sanitizer_sigset_t[16/sizeof(unsigned long)]; 559*ee754c2dSkamil # else 560*ee754c2dSkamil typedef unsigned long __sanitizer_sigset_t; 561*ee754c2dSkamil # endif 562*ee754c2dSkamil #elif SANITIZER_MAC 563*ee754c2dSkamil typedef unsigned __sanitizer_sigset_t; 564*ee754c2dSkamil #elif SANITIZER_LINUX 565*ee754c2dSkamil struct __sanitizer_sigset_t { 566*ee754c2dSkamil // The size is determined by looking at sizeof of real sigset_t on linux. 567*ee754c2dSkamil uptr val[128 / sizeof(uptr)]; 568*ee754c2dSkamil }; 569*ee754c2dSkamil #endif 570*ee754c2dSkamil 571*ee754c2dSkamil struct __sanitizer_siginfo { 572*ee754c2dSkamil // The size is determined by looking at sizeof of real siginfo_t on linux. 573*ee754c2dSkamil u64 opaque[128 / sizeof(u64)]; 574*ee754c2dSkamil }; 575*ee754c2dSkamil 576*ee754c2dSkamil using __sanitizer_sighandler_ptr = void (*)(int sig); 577*ee754c2dSkamil using __sanitizer_sigactionhandler_ptr = 578*ee754c2dSkamil void (*)(int sig, __sanitizer_siginfo *siginfo, void *uctx); 579*ee754c2dSkamil 580*ee754c2dSkamil // Linux system headers define the 'sa_handler' and 'sa_sigaction' macros. 581*ee754c2dSkamil #if SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 64) 582*ee754c2dSkamil struct __sanitizer_sigaction { 583*ee754c2dSkamil unsigned sa_flags; 584*ee754c2dSkamil union { 585*ee754c2dSkamil __sanitizer_sigactionhandler_ptr sigaction; 586*ee754c2dSkamil __sanitizer_sighandler_ptr handler; 587*ee754c2dSkamil }; 588*ee754c2dSkamil __sanitizer_sigset_t sa_mask; 589*ee754c2dSkamil void (*sa_restorer)(); 590*ee754c2dSkamil }; 591*ee754c2dSkamil #elif SANITIZER_ANDROID && SANITIZER_MIPS32 // check this before WORDSIZE == 32 592*ee754c2dSkamil struct __sanitizer_sigaction { 593*ee754c2dSkamil unsigned sa_flags; 594*ee754c2dSkamil union { 595*ee754c2dSkamil __sanitizer_sigactionhandler_ptr sigaction; 596*ee754c2dSkamil __sanitizer_sighandler_ptr handler; 597*ee754c2dSkamil }; 598*ee754c2dSkamil __sanitizer_sigset_t sa_mask; 599*ee754c2dSkamil }; 600*ee754c2dSkamil #elif SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 32) 601*ee754c2dSkamil struct __sanitizer_sigaction { 602*ee754c2dSkamil union { 603*ee754c2dSkamil __sanitizer_sigactionhandler_ptr sigaction; 604*ee754c2dSkamil __sanitizer_sighandler_ptr handler; 605*ee754c2dSkamil }; 606*ee754c2dSkamil __sanitizer_sigset_t sa_mask; 607*ee754c2dSkamil uptr sa_flags; 608*ee754c2dSkamil void (*sa_restorer)(); 609*ee754c2dSkamil }; 610*ee754c2dSkamil #else // !SANITIZER_ANDROID 611*ee754c2dSkamil struct __sanitizer_sigaction { 612*ee754c2dSkamil #if defined(__mips__) && !SANITIZER_FREEBSD 613*ee754c2dSkamil unsigned int sa_flags; 614*ee754c2dSkamil #endif 615*ee754c2dSkamil union { 616*ee754c2dSkamil __sanitizer_sigactionhandler_ptr sigaction; 617*ee754c2dSkamil __sanitizer_sighandler_ptr handler; 618*ee754c2dSkamil }; 619*ee754c2dSkamil #if SANITIZER_FREEBSD 620*ee754c2dSkamil int sa_flags; 621*ee754c2dSkamil __sanitizer_sigset_t sa_mask; 622*ee754c2dSkamil #else 623*ee754c2dSkamil #if defined(__s390x__) 624*ee754c2dSkamil int sa_resv; 625*ee754c2dSkamil #else 626*ee754c2dSkamil __sanitizer_sigset_t sa_mask; 627*ee754c2dSkamil #endif 628*ee754c2dSkamil #ifndef __mips__ 629*ee754c2dSkamil #if defined(__sparc__) 630*ee754c2dSkamil #if __GLIBC_PREREQ (2, 20) 631*ee754c2dSkamil // On sparc glibc 2.19 and earlier sa_flags was unsigned long. 632*ee754c2dSkamil #if defined(__arch64__) 633*ee754c2dSkamil // To maintain ABI compatibility on sparc64 when switching to an int, 634*ee754c2dSkamil // __glibc_reserved0 was added. 635*ee754c2dSkamil int __glibc_reserved0; 636*ee754c2dSkamil #endif 637*ee754c2dSkamil int sa_flags; 638*ee754c2dSkamil #else 639*ee754c2dSkamil unsigned long sa_flags; 640*ee754c2dSkamil #endif 641*ee754c2dSkamil #else 642*ee754c2dSkamil int sa_flags; 643*ee754c2dSkamil #endif 644*ee754c2dSkamil #endif 645*ee754c2dSkamil #endif 646*ee754c2dSkamil #if SANITIZER_LINUX 647*ee754c2dSkamil void (*sa_restorer)(); 648*ee754c2dSkamil #endif 649*ee754c2dSkamil #if defined(__mips__) && (SANITIZER_WORDSIZE == 32) 650*ee754c2dSkamil int sa_resv[1]; 651*ee754c2dSkamil #endif 652*ee754c2dSkamil #if defined(__s390x__) 653*ee754c2dSkamil __sanitizer_sigset_t sa_mask; 654*ee754c2dSkamil #endif 655*ee754c2dSkamil }; 656*ee754c2dSkamil #endif // !SANITIZER_ANDROID 657*ee754c2dSkamil 658*ee754c2dSkamil #if defined(__mips__) 659*ee754c2dSkamil struct __sanitizer_kernel_sigset_t { 660*ee754c2dSkamil uptr sig[2]; 661*ee754c2dSkamil }; 662*ee754c2dSkamil #else 663*ee754c2dSkamil struct __sanitizer_kernel_sigset_t { 664*ee754c2dSkamil u8 sig[8]; 665*ee754c2dSkamil }; 666*ee754c2dSkamil #endif 667*ee754c2dSkamil 668*ee754c2dSkamil // Linux system headers define the 'sa_handler' and 'sa_sigaction' macros. 669*ee754c2dSkamil #if SANITIZER_MIPS 670*ee754c2dSkamil struct __sanitizer_kernel_sigaction_t { 671*ee754c2dSkamil unsigned int sa_flags; 672*ee754c2dSkamil union { 673*ee754c2dSkamil void (*handler)(int signo); 674*ee754c2dSkamil void (*sigaction)(int signo, __sanitizer_siginfo *info, void *ctx); 675*ee754c2dSkamil }; 676*ee754c2dSkamil __sanitizer_kernel_sigset_t sa_mask; 677*ee754c2dSkamil void (*sa_restorer)(void); 678*ee754c2dSkamil }; 679*ee754c2dSkamil #else 680*ee754c2dSkamil struct __sanitizer_kernel_sigaction_t { 681*ee754c2dSkamil union { 682*ee754c2dSkamil void (*handler)(int signo); 683*ee754c2dSkamil void (*sigaction)(int signo, __sanitizer_siginfo *info, void *ctx); 684*ee754c2dSkamil }; 685*ee754c2dSkamil unsigned long sa_flags; 686*ee754c2dSkamil void (*sa_restorer)(void); 687*ee754c2dSkamil __sanitizer_kernel_sigset_t sa_mask; 688*ee754c2dSkamil }; 689*ee754c2dSkamil #endif 690*ee754c2dSkamil 691*ee754c2dSkamil extern const uptr sig_ign; 692*ee754c2dSkamil extern const uptr sig_dfl; 693*ee754c2dSkamil extern const uptr sig_err; 694*ee754c2dSkamil extern const uptr sa_siginfo; 695*ee754c2dSkamil 696*ee754c2dSkamil #if SANITIZER_LINUX 697*ee754c2dSkamil extern int e_tabsz; 698*ee754c2dSkamil #endif 699*ee754c2dSkamil 700*ee754c2dSkamil extern int af_inet; 701*ee754c2dSkamil extern int af_inet6; 702*ee754c2dSkamil uptr __sanitizer_in_addr_sz(int af); 703*ee754c2dSkamil 704*ee754c2dSkamil #if SANITIZER_LINUX 705*ee754c2dSkamil struct __sanitizer_dl_phdr_info { 706*ee754c2dSkamil uptr dlpi_addr; 707*ee754c2dSkamil const char *dlpi_name; 708*ee754c2dSkamil const void *dlpi_phdr; 709*ee754c2dSkamil short dlpi_phnum; 710*ee754c2dSkamil }; 711*ee754c2dSkamil 712*ee754c2dSkamil extern unsigned struct_ElfW_Phdr_sz; 713*ee754c2dSkamil #endif 714*ee754c2dSkamil 715*ee754c2dSkamil struct __sanitizer_addrinfo { 716*ee754c2dSkamil int ai_flags; 717*ee754c2dSkamil int ai_family; 718*ee754c2dSkamil int ai_socktype; 719*ee754c2dSkamil int ai_protocol; 720*ee754c2dSkamil #if SANITIZER_ANDROID || SANITIZER_MAC 721*ee754c2dSkamil unsigned ai_addrlen; 722*ee754c2dSkamil char *ai_canonname; 723*ee754c2dSkamil void *ai_addr; 724*ee754c2dSkamil #else // LINUX 725*ee754c2dSkamil unsigned ai_addrlen; 726*ee754c2dSkamil void *ai_addr; 727*ee754c2dSkamil char *ai_canonname; 728*ee754c2dSkamil #endif 729*ee754c2dSkamil struct __sanitizer_addrinfo *ai_next; 730*ee754c2dSkamil }; 731*ee754c2dSkamil 732*ee754c2dSkamil struct __sanitizer_hostent { 733*ee754c2dSkamil char *h_name; 734*ee754c2dSkamil char **h_aliases; 735*ee754c2dSkamil int h_addrtype; 736*ee754c2dSkamil int h_length; 737*ee754c2dSkamil char **h_addr_list; 738*ee754c2dSkamil }; 739*ee754c2dSkamil 740*ee754c2dSkamil struct __sanitizer_pollfd { 741*ee754c2dSkamil int fd; 742*ee754c2dSkamil short events; 743*ee754c2dSkamil short revents; 744*ee754c2dSkamil }; 745*ee754c2dSkamil 746*ee754c2dSkamil #if SANITIZER_ANDROID || SANITIZER_MAC 747*ee754c2dSkamil typedef unsigned __sanitizer_nfds_t; 748*ee754c2dSkamil #else 749*ee754c2dSkamil typedef unsigned long __sanitizer_nfds_t; 750*ee754c2dSkamil #endif 751*ee754c2dSkamil 752*ee754c2dSkamil #if !SANITIZER_ANDROID 753*ee754c2dSkamil # if SANITIZER_LINUX 754*ee754c2dSkamil struct __sanitizer_glob_t { 755*ee754c2dSkamil uptr gl_pathc; 756*ee754c2dSkamil char **gl_pathv; 757*ee754c2dSkamil uptr gl_offs; 758*ee754c2dSkamil int gl_flags; 759*ee754c2dSkamil 760*ee754c2dSkamil void (*gl_closedir)(void *dirp); 761*ee754c2dSkamil void *(*gl_readdir)(void *dirp); 762*ee754c2dSkamil void *(*gl_opendir)(const char *); 763*ee754c2dSkamil int (*gl_lstat)(const char *, void *); 764*ee754c2dSkamil int (*gl_stat)(const char *, void *); 765*ee754c2dSkamil }; 766*ee754c2dSkamil # endif // SANITIZER_LINUX 767*ee754c2dSkamil 768*ee754c2dSkamil # if SANITIZER_LINUX 769*ee754c2dSkamil extern int glob_nomatch; 770*ee754c2dSkamil extern int glob_altdirfunc; 771*ee754c2dSkamil # endif 772*ee754c2dSkamil #endif // !SANITIZER_ANDROID 773*ee754c2dSkamil 774*ee754c2dSkamil extern unsigned path_max; 775*ee754c2dSkamil 776*ee754c2dSkamil struct __sanitizer_wordexp_t { 777*ee754c2dSkamil uptr we_wordc; 778*ee754c2dSkamil char **we_wordv; 779*ee754c2dSkamil uptr we_offs; 780*ee754c2dSkamil }; 781*ee754c2dSkamil 782*ee754c2dSkamil #if SANITIZER_LINUX && !SANITIZER_ANDROID 783*ee754c2dSkamil struct __sanitizer_FILE { 784*ee754c2dSkamil int _flags; 785*ee754c2dSkamil char *_IO_read_ptr; 786*ee754c2dSkamil char *_IO_read_end; 787*ee754c2dSkamil char *_IO_read_base; 788*ee754c2dSkamil char *_IO_write_base; 789*ee754c2dSkamil char *_IO_write_ptr; 790*ee754c2dSkamil char *_IO_write_end; 791*ee754c2dSkamil char *_IO_buf_base; 792*ee754c2dSkamil char *_IO_buf_end; 793*ee754c2dSkamil char *_IO_save_base; 794*ee754c2dSkamil char *_IO_backup_base; 795*ee754c2dSkamil char *_IO_save_end; 796*ee754c2dSkamil void *_markers; 797*ee754c2dSkamil __sanitizer_FILE *_chain; 798*ee754c2dSkamil int _fileno; 799*ee754c2dSkamil }; 800*ee754c2dSkamil # define SANITIZER_HAS_STRUCT_FILE 1 801*ee754c2dSkamil #else 802*ee754c2dSkamil typedef void __sanitizer_FILE; 803*ee754c2dSkamil # define SANITIZER_HAS_STRUCT_FILE 0 804*ee754c2dSkamil #endif 805*ee754c2dSkamil 806*ee754c2dSkamil #if SANITIZER_LINUX && !SANITIZER_ANDROID && \ 807*ee754c2dSkamil (defined(__i386) || defined(__x86_64) || defined(__mips64) || \ 808*ee754c2dSkamil defined(__powerpc64__) || defined(__aarch64__) || defined(__arm__) || \ 809*ee754c2dSkamil defined(__s390__)) 810*ee754c2dSkamil extern unsigned struct_user_regs_struct_sz; 811*ee754c2dSkamil extern unsigned struct_user_fpregs_struct_sz; 812*ee754c2dSkamil extern unsigned struct_user_fpxregs_struct_sz; 813*ee754c2dSkamil extern unsigned struct_user_vfpregs_struct_sz; 814*ee754c2dSkamil 815*ee754c2dSkamil extern int ptrace_peektext; 816*ee754c2dSkamil extern int ptrace_peekdata; 817*ee754c2dSkamil extern int ptrace_peekuser; 818*ee754c2dSkamil extern int ptrace_getregs; 819*ee754c2dSkamil extern int ptrace_setregs; 820*ee754c2dSkamil extern int ptrace_getfpregs; 821*ee754c2dSkamil extern int ptrace_setfpregs; 822*ee754c2dSkamil extern int ptrace_getfpxregs; 823*ee754c2dSkamil extern int ptrace_setfpxregs; 824*ee754c2dSkamil extern int ptrace_getvfpregs; 825*ee754c2dSkamil extern int ptrace_setvfpregs; 826*ee754c2dSkamil extern int ptrace_getsiginfo; 827*ee754c2dSkamil extern int ptrace_setsiginfo; 828*ee754c2dSkamil extern int ptrace_getregset; 829*ee754c2dSkamil extern int ptrace_setregset; 830*ee754c2dSkamil extern int ptrace_geteventmsg; 831*ee754c2dSkamil #endif 832*ee754c2dSkamil 833*ee754c2dSkamil #if SANITIZER_LINUX && !SANITIZER_ANDROID 834*ee754c2dSkamil extern unsigned struct_shminfo_sz; 835*ee754c2dSkamil extern unsigned struct_shm_info_sz; 836*ee754c2dSkamil extern int shmctl_ipc_stat; 837*ee754c2dSkamil extern int shmctl_ipc_info; 838*ee754c2dSkamil extern int shmctl_shm_info; 839*ee754c2dSkamil extern int shmctl_shm_stat; 840*ee754c2dSkamil #endif 841*ee754c2dSkamil 842*ee754c2dSkamil #if !SANITIZER_MAC && !SANITIZER_FREEBSD 843*ee754c2dSkamil extern unsigned struct_utmp_sz; 844*ee754c2dSkamil #endif 845*ee754c2dSkamil #if !SANITIZER_ANDROID 846*ee754c2dSkamil extern unsigned struct_utmpx_sz; 847*ee754c2dSkamil #endif 848*ee754c2dSkamil 849*ee754c2dSkamil extern int map_fixed; 850*ee754c2dSkamil 851*ee754c2dSkamil // ioctl arguments 852*ee754c2dSkamil struct __sanitizer_ifconf { 853*ee754c2dSkamil int ifc_len; 854*ee754c2dSkamil union { 855*ee754c2dSkamil void *ifcu_req; 856*ee754c2dSkamil } ifc_ifcu; 857*ee754c2dSkamil #if SANITIZER_MAC 858*ee754c2dSkamil } __attribute__((packed)); 859*ee754c2dSkamil #else 860*ee754c2dSkamil }; 861*ee754c2dSkamil #endif 862*ee754c2dSkamil 863*ee754c2dSkamil #if SANITIZER_LINUX && !SANITIZER_ANDROID 864*ee754c2dSkamil struct __sanitizer__obstack_chunk { 865*ee754c2dSkamil char *limit; 866*ee754c2dSkamil struct __sanitizer__obstack_chunk *prev; 867*ee754c2dSkamil }; 868*ee754c2dSkamil 869*ee754c2dSkamil struct __sanitizer_obstack { 870*ee754c2dSkamil long chunk_size; 871*ee754c2dSkamil struct __sanitizer__obstack_chunk *chunk; 872*ee754c2dSkamil char *object_base; 873*ee754c2dSkamil char *next_free; 874*ee754c2dSkamil uptr more_fields[7]; 875*ee754c2dSkamil }; 876*ee754c2dSkamil 877*ee754c2dSkamil typedef uptr (*__sanitizer_cookie_io_read)(void *cookie, char *buf, uptr size); 878*ee754c2dSkamil typedef uptr (*__sanitizer_cookie_io_write)(void *cookie, const char *buf, 879*ee754c2dSkamil uptr size); 880*ee754c2dSkamil typedef int (*__sanitizer_cookie_io_seek)(void *cookie, u64 *offset, 881*ee754c2dSkamil int whence); 882*ee754c2dSkamil typedef int (*__sanitizer_cookie_io_close)(void *cookie); 883*ee754c2dSkamil 884*ee754c2dSkamil struct __sanitizer_cookie_io_functions_t { 885*ee754c2dSkamil __sanitizer_cookie_io_read read; 886*ee754c2dSkamil __sanitizer_cookie_io_write write; 887*ee754c2dSkamil __sanitizer_cookie_io_seek seek; 888*ee754c2dSkamil __sanitizer_cookie_io_close close; 889*ee754c2dSkamil }; 890*ee754c2dSkamil #endif 891*ee754c2dSkamil 892*ee754c2dSkamil #define IOC_NRBITS 8 893*ee754c2dSkamil #define IOC_TYPEBITS 8 894*ee754c2dSkamil #if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) || \ 895*ee754c2dSkamil defined(__sparc__) 896*ee754c2dSkamil #define IOC_SIZEBITS 13 897*ee754c2dSkamil #define IOC_DIRBITS 3 898*ee754c2dSkamil #define IOC_NONE 1U 899*ee754c2dSkamil #define IOC_WRITE 4U 900*ee754c2dSkamil #define IOC_READ 2U 901*ee754c2dSkamil #else 902*ee754c2dSkamil #define IOC_SIZEBITS 14 903*ee754c2dSkamil #define IOC_DIRBITS 2 904*ee754c2dSkamil #define IOC_NONE 0U 905*ee754c2dSkamil #define IOC_WRITE 1U 906*ee754c2dSkamil #define IOC_READ 2U 907*ee754c2dSkamil #endif 908*ee754c2dSkamil #define IOC_NRMASK ((1 << IOC_NRBITS) - 1) 909*ee754c2dSkamil #define IOC_TYPEMASK ((1 << IOC_TYPEBITS) - 1) 910*ee754c2dSkamil #define IOC_SIZEMASK ((1 << IOC_SIZEBITS) - 1) 911*ee754c2dSkamil #if defined(IOC_DIRMASK) 912*ee754c2dSkamil #undef IOC_DIRMASK 913*ee754c2dSkamil #endif 914*ee754c2dSkamil #define IOC_DIRMASK ((1 << IOC_DIRBITS) - 1) 915*ee754c2dSkamil #define IOC_NRSHIFT 0 916*ee754c2dSkamil #define IOC_TYPESHIFT (IOC_NRSHIFT + IOC_NRBITS) 917*ee754c2dSkamil #define IOC_SIZESHIFT (IOC_TYPESHIFT + IOC_TYPEBITS) 918*ee754c2dSkamil #define IOC_DIRSHIFT (IOC_SIZESHIFT + IOC_SIZEBITS) 919*ee754c2dSkamil #define EVIOC_EV_MAX 0x1f 920*ee754c2dSkamil #define EVIOC_ABS_MAX 0x3f 921*ee754c2dSkamil 922*ee754c2dSkamil #define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK) 923*ee754c2dSkamil #define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK) 924*ee754c2dSkamil #define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK) 925*ee754c2dSkamil 926*ee754c2dSkamil #if defined(__sparc__) 927*ee754c2dSkamil // In sparc the 14 bits SIZE field overlaps with the 928*ee754c2dSkamil // least significant bit of DIR, so either IOC_READ or 929*ee754c2dSkamil // IOC_WRITE shall be 1 in order to get a non-zero SIZE. 930*ee754c2dSkamil #define IOC_SIZE(nr) \ 931*ee754c2dSkamil ((((((nr) >> 29) & 0x7) & (4U | 2U)) == 0) ? 0 : (((nr) >> 16) & 0x3fff)) 932*ee754c2dSkamil #else 933*ee754c2dSkamil #define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK) 934*ee754c2dSkamil #endif 935*ee754c2dSkamil 936*ee754c2dSkamil extern unsigned struct_ifreq_sz; 937*ee754c2dSkamil extern unsigned struct_termios_sz; 938*ee754c2dSkamil extern unsigned struct_winsize_sz; 939*ee754c2dSkamil 940*ee754c2dSkamil #if SANITIZER_LINUX 941*ee754c2dSkamil extern unsigned struct_arpreq_sz; 942*ee754c2dSkamil extern unsigned struct_cdrom_msf_sz; 943*ee754c2dSkamil extern unsigned struct_cdrom_multisession_sz; 944*ee754c2dSkamil extern unsigned struct_cdrom_read_audio_sz; 945*ee754c2dSkamil extern unsigned struct_cdrom_subchnl_sz; 946*ee754c2dSkamil extern unsigned struct_cdrom_ti_sz; 947*ee754c2dSkamil extern unsigned struct_cdrom_tocentry_sz; 948*ee754c2dSkamil extern unsigned struct_cdrom_tochdr_sz; 949*ee754c2dSkamil extern unsigned struct_cdrom_volctrl_sz; 950*ee754c2dSkamil extern unsigned struct_ff_effect_sz; 951*ee754c2dSkamil extern unsigned struct_floppy_drive_params_sz; 952*ee754c2dSkamil extern unsigned struct_floppy_drive_struct_sz; 953*ee754c2dSkamil extern unsigned struct_floppy_fdc_state_sz; 954*ee754c2dSkamil extern unsigned struct_floppy_max_errors_sz; 955*ee754c2dSkamil extern unsigned struct_floppy_raw_cmd_sz; 956*ee754c2dSkamil extern unsigned struct_floppy_struct_sz; 957*ee754c2dSkamil extern unsigned struct_floppy_write_errors_sz; 958*ee754c2dSkamil extern unsigned struct_format_descr_sz; 959*ee754c2dSkamil extern unsigned struct_hd_driveid_sz; 960*ee754c2dSkamil extern unsigned struct_hd_geometry_sz; 961*ee754c2dSkamil extern unsigned struct_input_absinfo_sz; 962*ee754c2dSkamil extern unsigned struct_input_id_sz; 963*ee754c2dSkamil extern unsigned struct_mtpos_sz; 964*ee754c2dSkamil extern unsigned struct_termio_sz; 965*ee754c2dSkamil extern unsigned struct_vt_consize_sz; 966*ee754c2dSkamil extern unsigned struct_vt_sizes_sz; 967*ee754c2dSkamil extern unsigned struct_vt_stat_sz; 968*ee754c2dSkamil #endif // SANITIZER_LINUX 969*ee754c2dSkamil 970*ee754c2dSkamil #if SANITIZER_LINUX 971*ee754c2dSkamil extern unsigned struct_copr_buffer_sz; 972*ee754c2dSkamil extern unsigned struct_copr_debug_buf_sz; 973*ee754c2dSkamil extern unsigned struct_copr_msg_sz; 974*ee754c2dSkamil extern unsigned struct_midi_info_sz; 975*ee754c2dSkamil extern unsigned struct_mtget_sz; 976*ee754c2dSkamil extern unsigned struct_mtop_sz; 977*ee754c2dSkamil extern unsigned struct_rtentry_sz; 978*ee754c2dSkamil extern unsigned struct_sbi_instrument_sz; 979*ee754c2dSkamil extern unsigned struct_seq_event_rec_sz; 980*ee754c2dSkamil extern unsigned struct_synth_info_sz; 981*ee754c2dSkamil extern unsigned struct_vt_mode_sz; 982*ee754c2dSkamil #endif // SANITIZER_LINUX 983*ee754c2dSkamil 984*ee754c2dSkamil #if SANITIZER_LINUX && !SANITIZER_ANDROID 985*ee754c2dSkamil extern unsigned struct_ax25_parms_struct_sz; 986*ee754c2dSkamil extern unsigned struct_cyclades_monitor_sz; 987*ee754c2dSkamil extern unsigned struct_input_keymap_entry_sz; 988*ee754c2dSkamil extern unsigned struct_ipx_config_data_sz; 989*ee754c2dSkamil extern unsigned struct_kbdiacrs_sz; 990*ee754c2dSkamil extern unsigned struct_kbentry_sz; 991*ee754c2dSkamil extern unsigned struct_kbkeycode_sz; 992*ee754c2dSkamil extern unsigned struct_kbsentry_sz; 993*ee754c2dSkamil extern unsigned struct_mtconfiginfo_sz; 994*ee754c2dSkamil extern unsigned struct_nr_parms_struct_sz; 995*ee754c2dSkamil extern unsigned struct_scc_modem_sz; 996*ee754c2dSkamil extern unsigned struct_scc_stat_sz; 997*ee754c2dSkamil extern unsigned struct_serial_multiport_struct_sz; 998*ee754c2dSkamil extern unsigned struct_serial_struct_sz; 999*ee754c2dSkamil extern unsigned struct_sockaddr_ax25_sz; 1000*ee754c2dSkamil extern unsigned struct_unimapdesc_sz; 1001*ee754c2dSkamil extern unsigned struct_unimapinit_sz; 1002*ee754c2dSkamil #endif // SANITIZER_LINUX && !SANITIZER_ANDROID 1003*ee754c2dSkamil 1004*ee754c2dSkamil extern const unsigned long __sanitizer_bufsiz; 1005*ee754c2dSkamil 1006*ee754c2dSkamil #if SANITIZER_LINUX && !SANITIZER_ANDROID 1007*ee754c2dSkamil extern unsigned struct_audio_buf_info_sz; 1008*ee754c2dSkamil extern unsigned struct_ppp_stats_sz; 1009*ee754c2dSkamil #endif // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID 1010*ee754c2dSkamil 1011*ee754c2dSkamil #if !SANITIZER_ANDROID && !SANITIZER_MAC 1012*ee754c2dSkamil extern unsigned struct_sioc_sg_req_sz; 1013*ee754c2dSkamil extern unsigned struct_sioc_vif_req_sz; 1014*ee754c2dSkamil #endif 1015*ee754c2dSkamil 1016*ee754c2dSkamil // ioctl request identifiers 1017*ee754c2dSkamil 1018*ee754c2dSkamil // A special value to mark ioctls that are not present on the target platform, 1019*ee754c2dSkamil // when it can not be determined without including any system headers. 1020*ee754c2dSkamil extern const unsigned IOCTL_NOT_PRESENT; 1021*ee754c2dSkamil 1022*ee754c2dSkamil extern unsigned IOCTL_FIOASYNC; 1023*ee754c2dSkamil extern unsigned IOCTL_FIOCLEX; 1024*ee754c2dSkamil extern unsigned IOCTL_FIOGETOWN; 1025*ee754c2dSkamil extern unsigned IOCTL_FIONBIO; 1026*ee754c2dSkamil extern unsigned IOCTL_FIONCLEX; 1027*ee754c2dSkamil extern unsigned IOCTL_FIOSETOWN; 1028*ee754c2dSkamil extern unsigned IOCTL_SIOCADDMULTI; 1029*ee754c2dSkamil extern unsigned IOCTL_SIOCATMARK; 1030*ee754c2dSkamil extern unsigned IOCTL_SIOCDELMULTI; 1031*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFADDR; 1032*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFBRDADDR; 1033*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFCONF; 1034*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFDSTADDR; 1035*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFFLAGS; 1036*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFMETRIC; 1037*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFMTU; 1038*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFNETMASK; 1039*ee754c2dSkamil extern unsigned IOCTL_SIOCGPGRP; 1040*ee754c2dSkamil extern unsigned IOCTL_SIOCSIFADDR; 1041*ee754c2dSkamil extern unsigned IOCTL_SIOCSIFBRDADDR; 1042*ee754c2dSkamil extern unsigned IOCTL_SIOCSIFDSTADDR; 1043*ee754c2dSkamil extern unsigned IOCTL_SIOCSIFFLAGS; 1044*ee754c2dSkamil extern unsigned IOCTL_SIOCSIFMETRIC; 1045*ee754c2dSkamil extern unsigned IOCTL_SIOCSIFMTU; 1046*ee754c2dSkamil extern unsigned IOCTL_SIOCSIFNETMASK; 1047*ee754c2dSkamil extern unsigned IOCTL_SIOCSPGRP; 1048*ee754c2dSkamil extern unsigned IOCTL_TIOCCONS; 1049*ee754c2dSkamil extern unsigned IOCTL_TIOCEXCL; 1050*ee754c2dSkamil extern unsigned IOCTL_TIOCGETD; 1051*ee754c2dSkamil extern unsigned IOCTL_TIOCGPGRP; 1052*ee754c2dSkamil extern unsigned IOCTL_TIOCGWINSZ; 1053*ee754c2dSkamil extern unsigned IOCTL_TIOCMBIC; 1054*ee754c2dSkamil extern unsigned IOCTL_TIOCMBIS; 1055*ee754c2dSkamil extern unsigned IOCTL_TIOCMGET; 1056*ee754c2dSkamil extern unsigned IOCTL_TIOCMSET; 1057*ee754c2dSkamil extern unsigned IOCTL_TIOCNOTTY; 1058*ee754c2dSkamil extern unsigned IOCTL_TIOCNXCL; 1059*ee754c2dSkamil extern unsigned IOCTL_TIOCOUTQ; 1060*ee754c2dSkamil extern unsigned IOCTL_TIOCPKT; 1061*ee754c2dSkamil extern unsigned IOCTL_TIOCSCTTY; 1062*ee754c2dSkamil extern unsigned IOCTL_TIOCSETD; 1063*ee754c2dSkamil extern unsigned IOCTL_TIOCSPGRP; 1064*ee754c2dSkamil extern unsigned IOCTL_TIOCSTI; 1065*ee754c2dSkamil extern unsigned IOCTL_TIOCSWINSZ; 1066*ee754c2dSkamil #if SANITIZER_LINUX && !SANITIZER_ANDROID 1067*ee754c2dSkamil extern unsigned IOCTL_SIOCGETSGCNT; 1068*ee754c2dSkamil extern unsigned IOCTL_SIOCGETVIFCNT; 1069*ee754c2dSkamil #endif 1070*ee754c2dSkamil #if SANITIZER_LINUX 1071*ee754c2dSkamil extern unsigned IOCTL_EVIOCGABS; 1072*ee754c2dSkamil extern unsigned IOCTL_EVIOCGBIT; 1073*ee754c2dSkamil extern unsigned IOCTL_EVIOCGEFFECTS; 1074*ee754c2dSkamil extern unsigned IOCTL_EVIOCGID; 1075*ee754c2dSkamil extern unsigned IOCTL_EVIOCGKEY; 1076*ee754c2dSkamil extern unsigned IOCTL_EVIOCGKEYCODE; 1077*ee754c2dSkamil extern unsigned IOCTL_EVIOCGLED; 1078*ee754c2dSkamil extern unsigned IOCTL_EVIOCGNAME; 1079*ee754c2dSkamil extern unsigned IOCTL_EVIOCGPHYS; 1080*ee754c2dSkamil extern unsigned IOCTL_EVIOCGRAB; 1081*ee754c2dSkamil extern unsigned IOCTL_EVIOCGREP; 1082*ee754c2dSkamil extern unsigned IOCTL_EVIOCGSND; 1083*ee754c2dSkamil extern unsigned IOCTL_EVIOCGSW; 1084*ee754c2dSkamil extern unsigned IOCTL_EVIOCGUNIQ; 1085*ee754c2dSkamil extern unsigned IOCTL_EVIOCGVERSION; 1086*ee754c2dSkamil extern unsigned IOCTL_EVIOCRMFF; 1087*ee754c2dSkamil extern unsigned IOCTL_EVIOCSABS; 1088*ee754c2dSkamil extern unsigned IOCTL_EVIOCSFF; 1089*ee754c2dSkamil extern unsigned IOCTL_EVIOCSKEYCODE; 1090*ee754c2dSkamil extern unsigned IOCTL_EVIOCSREP; 1091*ee754c2dSkamil extern unsigned IOCTL_BLKFLSBUF; 1092*ee754c2dSkamil extern unsigned IOCTL_BLKGETSIZE; 1093*ee754c2dSkamil extern unsigned IOCTL_BLKRAGET; 1094*ee754c2dSkamil extern unsigned IOCTL_BLKRASET; 1095*ee754c2dSkamil extern unsigned IOCTL_BLKROGET; 1096*ee754c2dSkamil extern unsigned IOCTL_BLKROSET; 1097*ee754c2dSkamil extern unsigned IOCTL_BLKRRPART; 1098*ee754c2dSkamil extern unsigned IOCTL_CDROMAUDIOBUFSIZ; 1099*ee754c2dSkamil extern unsigned IOCTL_CDROMEJECT; 1100*ee754c2dSkamil extern unsigned IOCTL_CDROMEJECT_SW; 1101*ee754c2dSkamil extern unsigned IOCTL_CDROMMULTISESSION; 1102*ee754c2dSkamil extern unsigned IOCTL_CDROMPAUSE; 1103*ee754c2dSkamil extern unsigned IOCTL_CDROMPLAYMSF; 1104*ee754c2dSkamil extern unsigned IOCTL_CDROMPLAYTRKIND; 1105*ee754c2dSkamil extern unsigned IOCTL_CDROMREADAUDIO; 1106*ee754c2dSkamil extern unsigned IOCTL_CDROMREADCOOKED; 1107*ee754c2dSkamil extern unsigned IOCTL_CDROMREADMODE1; 1108*ee754c2dSkamil extern unsigned IOCTL_CDROMREADMODE2; 1109*ee754c2dSkamil extern unsigned IOCTL_CDROMREADRAW; 1110*ee754c2dSkamil extern unsigned IOCTL_CDROMREADTOCENTRY; 1111*ee754c2dSkamil extern unsigned IOCTL_CDROMREADTOCHDR; 1112*ee754c2dSkamil extern unsigned IOCTL_CDROMRESET; 1113*ee754c2dSkamil extern unsigned IOCTL_CDROMRESUME; 1114*ee754c2dSkamil extern unsigned IOCTL_CDROMSEEK; 1115*ee754c2dSkamil extern unsigned IOCTL_CDROMSTART; 1116*ee754c2dSkamil extern unsigned IOCTL_CDROMSTOP; 1117*ee754c2dSkamil extern unsigned IOCTL_CDROMSUBCHNL; 1118*ee754c2dSkamil extern unsigned IOCTL_CDROMVOLCTRL; 1119*ee754c2dSkamil extern unsigned IOCTL_CDROMVOLREAD; 1120*ee754c2dSkamil extern unsigned IOCTL_CDROM_GET_UPC; 1121*ee754c2dSkamil extern unsigned IOCTL_FDCLRPRM; 1122*ee754c2dSkamil extern unsigned IOCTL_FDDEFPRM; 1123*ee754c2dSkamil extern unsigned IOCTL_FDFLUSH; 1124*ee754c2dSkamil extern unsigned IOCTL_FDFMTBEG; 1125*ee754c2dSkamil extern unsigned IOCTL_FDFMTEND; 1126*ee754c2dSkamil extern unsigned IOCTL_FDFMTTRK; 1127*ee754c2dSkamil extern unsigned IOCTL_FDGETDRVPRM; 1128*ee754c2dSkamil extern unsigned IOCTL_FDGETDRVSTAT; 1129*ee754c2dSkamil extern unsigned IOCTL_FDGETDRVTYP; 1130*ee754c2dSkamil extern unsigned IOCTL_FDGETFDCSTAT; 1131*ee754c2dSkamil extern unsigned IOCTL_FDGETMAXERRS; 1132*ee754c2dSkamil extern unsigned IOCTL_FDGETPRM; 1133*ee754c2dSkamil extern unsigned IOCTL_FDMSGOFF; 1134*ee754c2dSkamil extern unsigned IOCTL_FDMSGON; 1135*ee754c2dSkamil extern unsigned IOCTL_FDPOLLDRVSTAT; 1136*ee754c2dSkamil extern unsigned IOCTL_FDRAWCMD; 1137*ee754c2dSkamil extern unsigned IOCTL_FDRESET; 1138*ee754c2dSkamil extern unsigned IOCTL_FDSETDRVPRM; 1139*ee754c2dSkamil extern unsigned IOCTL_FDSETEMSGTRESH; 1140*ee754c2dSkamil extern unsigned IOCTL_FDSETMAXERRS; 1141*ee754c2dSkamil extern unsigned IOCTL_FDSETPRM; 1142*ee754c2dSkamil extern unsigned IOCTL_FDTWADDLE; 1143*ee754c2dSkamil extern unsigned IOCTL_FDWERRORCLR; 1144*ee754c2dSkamil extern unsigned IOCTL_FDWERRORGET; 1145*ee754c2dSkamil extern unsigned IOCTL_HDIO_DRIVE_CMD; 1146*ee754c2dSkamil extern unsigned IOCTL_HDIO_GETGEO; 1147*ee754c2dSkamil extern unsigned IOCTL_HDIO_GET_32BIT; 1148*ee754c2dSkamil extern unsigned IOCTL_HDIO_GET_DMA; 1149*ee754c2dSkamil extern unsigned IOCTL_HDIO_GET_IDENTITY; 1150*ee754c2dSkamil extern unsigned IOCTL_HDIO_GET_KEEPSETTINGS; 1151*ee754c2dSkamil extern unsigned IOCTL_HDIO_GET_MULTCOUNT; 1152*ee754c2dSkamil extern unsigned IOCTL_HDIO_GET_NOWERR; 1153*ee754c2dSkamil extern unsigned IOCTL_HDIO_GET_UNMASKINTR; 1154*ee754c2dSkamil extern unsigned IOCTL_HDIO_SET_32BIT; 1155*ee754c2dSkamil extern unsigned IOCTL_HDIO_SET_DMA; 1156*ee754c2dSkamil extern unsigned IOCTL_HDIO_SET_KEEPSETTINGS; 1157*ee754c2dSkamil extern unsigned IOCTL_HDIO_SET_MULTCOUNT; 1158*ee754c2dSkamil extern unsigned IOCTL_HDIO_SET_NOWERR; 1159*ee754c2dSkamil extern unsigned IOCTL_HDIO_SET_UNMASKINTR; 1160*ee754c2dSkamil extern unsigned IOCTL_MTIOCPOS; 1161*ee754c2dSkamil extern unsigned IOCTL_PPPIOCGASYNCMAP; 1162*ee754c2dSkamil extern unsigned IOCTL_PPPIOCGDEBUG; 1163*ee754c2dSkamil extern unsigned IOCTL_PPPIOCGFLAGS; 1164*ee754c2dSkamil extern unsigned IOCTL_PPPIOCGUNIT; 1165*ee754c2dSkamil extern unsigned IOCTL_PPPIOCGXASYNCMAP; 1166*ee754c2dSkamil extern unsigned IOCTL_PPPIOCSASYNCMAP; 1167*ee754c2dSkamil extern unsigned IOCTL_PPPIOCSDEBUG; 1168*ee754c2dSkamil extern unsigned IOCTL_PPPIOCSFLAGS; 1169*ee754c2dSkamil extern unsigned IOCTL_PPPIOCSMAXCID; 1170*ee754c2dSkamil extern unsigned IOCTL_PPPIOCSMRU; 1171*ee754c2dSkamil extern unsigned IOCTL_PPPIOCSXASYNCMAP; 1172*ee754c2dSkamil extern unsigned IOCTL_SIOCDARP; 1173*ee754c2dSkamil extern unsigned IOCTL_SIOCDRARP; 1174*ee754c2dSkamil extern unsigned IOCTL_SIOCGARP; 1175*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFENCAP; 1176*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFHWADDR; 1177*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFMAP; 1178*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFMEM; 1179*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFNAME; 1180*ee754c2dSkamil extern unsigned IOCTL_SIOCGIFSLAVE; 1181*ee754c2dSkamil extern unsigned IOCTL_SIOCGRARP; 1182*ee754c2dSkamil extern unsigned IOCTL_SIOCGSTAMP; 1183*ee754c2dSkamil extern unsigned IOCTL_SIOCSARP; 1184*ee754c2dSkamil extern unsigned IOCTL_SIOCSIFENCAP; 1185*ee754c2dSkamil extern unsigned IOCTL_SIOCSIFHWADDR; 1186*ee754c2dSkamil extern unsigned IOCTL_SIOCSIFLINK; 1187*ee754c2dSkamil extern unsigned IOCTL_SIOCSIFMAP; 1188*ee754c2dSkamil extern unsigned IOCTL_SIOCSIFMEM; 1189*ee754c2dSkamil extern unsigned IOCTL_SIOCSIFSLAVE; 1190*ee754c2dSkamil extern unsigned IOCTL_SIOCSRARP; 1191*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_COPR_HALT; 1192*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_COPR_LOAD; 1193*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_COPR_RCODE; 1194*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_COPR_RCVMSG; 1195*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_COPR_RDATA; 1196*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_COPR_RESET; 1197*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_COPR_RUN; 1198*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_COPR_SENDMSG; 1199*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_COPR_WCODE; 1200*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_COPR_WDATA; 1201*ee754c2dSkamil extern unsigned IOCTL_TCFLSH; 1202*ee754c2dSkamil extern unsigned IOCTL_TCGETA; 1203*ee754c2dSkamil extern unsigned IOCTL_TCGETS; 1204*ee754c2dSkamil extern unsigned IOCTL_TCSBRK; 1205*ee754c2dSkamil extern unsigned IOCTL_TCSBRKP; 1206*ee754c2dSkamil extern unsigned IOCTL_TCSETA; 1207*ee754c2dSkamil extern unsigned IOCTL_TCSETAF; 1208*ee754c2dSkamil extern unsigned IOCTL_TCSETAW; 1209*ee754c2dSkamil extern unsigned IOCTL_TCSETS; 1210*ee754c2dSkamil extern unsigned IOCTL_TCSETSF; 1211*ee754c2dSkamil extern unsigned IOCTL_TCSETSW; 1212*ee754c2dSkamil extern unsigned IOCTL_TCXONC; 1213*ee754c2dSkamil extern unsigned IOCTL_TIOCGLCKTRMIOS; 1214*ee754c2dSkamil extern unsigned IOCTL_TIOCGSOFTCAR; 1215*ee754c2dSkamil extern unsigned IOCTL_TIOCINQ; 1216*ee754c2dSkamil extern unsigned IOCTL_TIOCLINUX; 1217*ee754c2dSkamil extern unsigned IOCTL_TIOCSERCONFIG; 1218*ee754c2dSkamil extern unsigned IOCTL_TIOCSERGETLSR; 1219*ee754c2dSkamil extern unsigned IOCTL_TIOCSERGWILD; 1220*ee754c2dSkamil extern unsigned IOCTL_TIOCSERSWILD; 1221*ee754c2dSkamil extern unsigned IOCTL_TIOCSLCKTRMIOS; 1222*ee754c2dSkamil extern unsigned IOCTL_TIOCSSOFTCAR; 1223*ee754c2dSkamil extern unsigned IOCTL_VT_DISALLOCATE; 1224*ee754c2dSkamil extern unsigned IOCTL_VT_GETSTATE; 1225*ee754c2dSkamil extern unsigned IOCTL_VT_RESIZE; 1226*ee754c2dSkamil extern unsigned IOCTL_VT_RESIZEX; 1227*ee754c2dSkamil extern unsigned IOCTL_VT_SENDSIG; 1228*ee754c2dSkamil extern unsigned IOCTL_MTIOCGET; 1229*ee754c2dSkamil extern unsigned IOCTL_MTIOCTOP; 1230*ee754c2dSkamil extern unsigned IOCTL_SIOCADDRT; 1231*ee754c2dSkamil extern unsigned IOCTL_SIOCDELRT; 1232*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_DSP_GETBLKSIZE; 1233*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_DSP_GETFMTS; 1234*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_DSP_NONBLOCK; 1235*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_DSP_POST; 1236*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_DSP_RESET; 1237*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_DSP_SETFMT; 1238*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_DSP_SETFRAGMENT; 1239*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_DSP_SPEED; 1240*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_DSP_STEREO; 1241*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_DSP_SUBDIVIDE; 1242*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_DSP_SYNC; 1243*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_FM_4OP_ENABLE; 1244*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_FM_LOAD_INSTR; 1245*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_MIDI_INFO; 1246*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_MIDI_PRETIME; 1247*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SEQ_CTRLRATE; 1248*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SEQ_GETINCOUNT; 1249*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SEQ_GETOUTCOUNT; 1250*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SEQ_NRMIDIS; 1251*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SEQ_NRSYNTHS; 1252*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SEQ_OUTOFBAND; 1253*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SEQ_PANIC; 1254*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SEQ_PERCMODE; 1255*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SEQ_RESET; 1256*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SEQ_RESETSAMPLES; 1257*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SEQ_SYNC; 1258*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SEQ_TESTMIDI; 1259*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SEQ_THRESHOLD; 1260*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SYNTH_INFO; 1261*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_SYNTH_MEMAVL; 1262*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_TMR_CONTINUE; 1263*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_TMR_METRONOME; 1264*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_TMR_SELECT; 1265*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_TMR_SOURCE; 1266*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_TMR_START; 1267*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_TMR_STOP; 1268*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_TMR_TEMPO; 1269*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_TMR_TIMEBASE; 1270*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_ALTPCM; 1271*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_BASS; 1272*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_CAPS; 1273*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_CD; 1274*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_DEVMASK; 1275*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_ENHANCE; 1276*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_IGAIN; 1277*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_IMIX; 1278*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_LINE1; 1279*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_LINE2; 1280*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_LINE3; 1281*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_LINE; 1282*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_LOUD; 1283*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_MIC; 1284*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_MUTE; 1285*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_OGAIN; 1286*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_PCM; 1287*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_RECLEV; 1288*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_RECMASK; 1289*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_RECSRC; 1290*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_SPEAKER; 1291*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_STEREODEVS; 1292*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_SYNTH; 1293*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_TREBLE; 1294*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_READ_VOLUME; 1295*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_ALTPCM; 1296*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_BASS; 1297*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_CD; 1298*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_ENHANCE; 1299*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_IGAIN; 1300*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_IMIX; 1301*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE1; 1302*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE2; 1303*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE3; 1304*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE; 1305*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_LOUD; 1306*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_MIC; 1307*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_MUTE; 1308*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_OGAIN; 1309*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_PCM; 1310*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_RECLEV; 1311*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_RECSRC; 1312*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_SPEAKER; 1313*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_SYNTH; 1314*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_TREBLE; 1315*ee754c2dSkamil extern unsigned IOCTL_SOUND_MIXER_WRITE_VOLUME; 1316*ee754c2dSkamil extern unsigned IOCTL_SOUND_PCM_READ_BITS; 1317*ee754c2dSkamil extern unsigned IOCTL_SOUND_PCM_READ_CHANNELS; 1318*ee754c2dSkamil extern unsigned IOCTL_SOUND_PCM_READ_FILTER; 1319*ee754c2dSkamil extern unsigned IOCTL_SOUND_PCM_READ_RATE; 1320*ee754c2dSkamil extern unsigned IOCTL_SOUND_PCM_WRITE_CHANNELS; 1321*ee754c2dSkamil extern unsigned IOCTL_SOUND_PCM_WRITE_FILTER; 1322*ee754c2dSkamil extern unsigned IOCTL_VT_ACTIVATE; 1323*ee754c2dSkamil extern unsigned IOCTL_VT_GETMODE; 1324*ee754c2dSkamil extern unsigned IOCTL_VT_OPENQRY; 1325*ee754c2dSkamil extern unsigned IOCTL_VT_RELDISP; 1326*ee754c2dSkamil extern unsigned IOCTL_VT_SETMODE; 1327*ee754c2dSkamil extern unsigned IOCTL_VT_WAITACTIVE; 1328*ee754c2dSkamil #endif // SANITIZER_LINUX 1329*ee754c2dSkamil 1330*ee754c2dSkamil #if SANITIZER_LINUX && !SANITIZER_ANDROID 1331*ee754c2dSkamil extern unsigned IOCTL_CYGETDEFTHRESH; 1332*ee754c2dSkamil extern unsigned IOCTL_CYGETDEFTIMEOUT; 1333*ee754c2dSkamil extern unsigned IOCTL_CYGETMON; 1334*ee754c2dSkamil extern unsigned IOCTL_CYGETTHRESH; 1335*ee754c2dSkamil extern unsigned IOCTL_CYGETTIMEOUT; 1336*ee754c2dSkamil extern unsigned IOCTL_CYSETDEFTHRESH; 1337*ee754c2dSkamil extern unsigned IOCTL_CYSETDEFTIMEOUT; 1338*ee754c2dSkamil extern unsigned IOCTL_CYSETTHRESH; 1339*ee754c2dSkamil extern unsigned IOCTL_CYSETTIMEOUT; 1340*ee754c2dSkamil extern unsigned IOCTL_EQL_EMANCIPATE; 1341*ee754c2dSkamil extern unsigned IOCTL_EQL_ENSLAVE; 1342*ee754c2dSkamil extern unsigned IOCTL_EQL_GETMASTRCFG; 1343*ee754c2dSkamil extern unsigned IOCTL_EQL_GETSLAVECFG; 1344*ee754c2dSkamil extern unsigned IOCTL_EQL_SETMASTRCFG; 1345*ee754c2dSkamil extern unsigned IOCTL_EQL_SETSLAVECFG; 1346*ee754c2dSkamil extern unsigned IOCTL_EVIOCGKEYCODE_V2; 1347*ee754c2dSkamil extern unsigned IOCTL_EVIOCGPROP; 1348*ee754c2dSkamil extern unsigned IOCTL_EVIOCSKEYCODE_V2; 1349*ee754c2dSkamil extern unsigned IOCTL_FS_IOC_GETFLAGS; 1350*ee754c2dSkamil extern unsigned IOCTL_FS_IOC_GETVERSION; 1351*ee754c2dSkamil extern unsigned IOCTL_FS_IOC_SETFLAGS; 1352*ee754c2dSkamil extern unsigned IOCTL_FS_IOC_SETVERSION; 1353*ee754c2dSkamil extern unsigned IOCTL_GIO_CMAP; 1354*ee754c2dSkamil extern unsigned IOCTL_GIO_FONT; 1355*ee754c2dSkamil extern unsigned IOCTL_GIO_UNIMAP; 1356*ee754c2dSkamil extern unsigned IOCTL_GIO_UNISCRNMAP; 1357*ee754c2dSkamil extern unsigned IOCTL_KDADDIO; 1358*ee754c2dSkamil extern unsigned IOCTL_KDDELIO; 1359*ee754c2dSkamil extern unsigned IOCTL_KDGETKEYCODE; 1360*ee754c2dSkamil extern unsigned IOCTL_KDGKBDIACR; 1361*ee754c2dSkamil extern unsigned IOCTL_KDGKBENT; 1362*ee754c2dSkamil extern unsigned IOCTL_KDGKBLED; 1363*ee754c2dSkamil extern unsigned IOCTL_KDGKBMETA; 1364*ee754c2dSkamil extern unsigned IOCTL_KDGKBSENT; 1365*ee754c2dSkamil extern unsigned IOCTL_KDMAPDISP; 1366*ee754c2dSkamil extern unsigned IOCTL_KDSETKEYCODE; 1367*ee754c2dSkamil extern unsigned IOCTL_KDSIGACCEPT; 1368*ee754c2dSkamil extern unsigned IOCTL_KDSKBDIACR; 1369*ee754c2dSkamil extern unsigned IOCTL_KDSKBENT; 1370*ee754c2dSkamil extern unsigned IOCTL_KDSKBLED; 1371*ee754c2dSkamil extern unsigned IOCTL_KDSKBMETA; 1372*ee754c2dSkamil extern unsigned IOCTL_KDSKBSENT; 1373*ee754c2dSkamil extern unsigned IOCTL_KDUNMAPDISP; 1374*ee754c2dSkamil extern unsigned IOCTL_LPABORT; 1375*ee754c2dSkamil extern unsigned IOCTL_LPABORTOPEN; 1376*ee754c2dSkamil extern unsigned IOCTL_LPCAREFUL; 1377*ee754c2dSkamil extern unsigned IOCTL_LPCHAR; 1378*ee754c2dSkamil extern unsigned IOCTL_LPGETIRQ; 1379*ee754c2dSkamil extern unsigned IOCTL_LPGETSTATUS; 1380*ee754c2dSkamil extern unsigned IOCTL_LPRESET; 1381*ee754c2dSkamil extern unsigned IOCTL_LPSETIRQ; 1382*ee754c2dSkamil extern unsigned IOCTL_LPTIME; 1383*ee754c2dSkamil extern unsigned IOCTL_LPWAIT; 1384*ee754c2dSkamil extern unsigned IOCTL_MTIOCGETCONFIG; 1385*ee754c2dSkamil extern unsigned IOCTL_MTIOCSETCONFIG; 1386*ee754c2dSkamil extern unsigned IOCTL_PIO_CMAP; 1387*ee754c2dSkamil extern unsigned IOCTL_PIO_FONT; 1388*ee754c2dSkamil extern unsigned IOCTL_PIO_UNIMAP; 1389*ee754c2dSkamil extern unsigned IOCTL_PIO_UNIMAPCLR; 1390*ee754c2dSkamil extern unsigned IOCTL_PIO_UNISCRNMAP; 1391*ee754c2dSkamil extern unsigned IOCTL_SCSI_IOCTL_GET_IDLUN; 1392*ee754c2dSkamil extern unsigned IOCTL_SCSI_IOCTL_PROBE_HOST; 1393*ee754c2dSkamil extern unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE; 1394*ee754c2dSkamil extern unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE; 1395*ee754c2dSkamil extern unsigned IOCTL_SIOCAIPXITFCRT; 1396*ee754c2dSkamil extern unsigned IOCTL_SIOCAIPXPRISLT; 1397*ee754c2dSkamil extern unsigned IOCTL_SIOCAX25ADDUID; 1398*ee754c2dSkamil extern unsigned IOCTL_SIOCAX25DELUID; 1399*ee754c2dSkamil extern unsigned IOCTL_SIOCAX25GETPARMS; 1400*ee754c2dSkamil extern unsigned IOCTL_SIOCAX25GETUID; 1401*ee754c2dSkamil extern unsigned IOCTL_SIOCAX25NOUID; 1402*ee754c2dSkamil extern unsigned IOCTL_SIOCAX25SETPARMS; 1403*ee754c2dSkamil extern unsigned IOCTL_SIOCDEVPLIP; 1404*ee754c2dSkamil extern unsigned IOCTL_SIOCIPXCFGDATA; 1405*ee754c2dSkamil extern unsigned IOCTL_SIOCNRDECOBS; 1406*ee754c2dSkamil extern unsigned IOCTL_SIOCNRGETPARMS; 1407*ee754c2dSkamil extern unsigned IOCTL_SIOCNRRTCTL; 1408*ee754c2dSkamil extern unsigned IOCTL_SIOCNRSETPARMS; 1409*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_DSP_GETISPACE; 1410*ee754c2dSkamil extern unsigned IOCTL_SNDCTL_DSP_GETOSPACE; 1411*ee754c2dSkamil extern unsigned IOCTL_TIOCGSERIAL; 1412*ee754c2dSkamil extern unsigned IOCTL_TIOCSERGETMULTI; 1413*ee754c2dSkamil extern unsigned IOCTL_TIOCSERSETMULTI; 1414*ee754c2dSkamil extern unsigned IOCTL_TIOCSSERIAL; 1415*ee754c2dSkamil extern unsigned IOCTL_GIO_SCRNMAP; 1416*ee754c2dSkamil extern unsigned IOCTL_KDDISABIO; 1417*ee754c2dSkamil extern unsigned IOCTL_KDENABIO; 1418*ee754c2dSkamil extern unsigned IOCTL_KDGETLED; 1419*ee754c2dSkamil extern unsigned IOCTL_KDGETMODE; 1420*ee754c2dSkamil extern unsigned IOCTL_KDGKBMODE; 1421*ee754c2dSkamil extern unsigned IOCTL_KDGKBTYPE; 1422*ee754c2dSkamil extern unsigned IOCTL_KDMKTONE; 1423*ee754c2dSkamil extern unsigned IOCTL_KDSETLED; 1424*ee754c2dSkamil extern unsigned IOCTL_KDSETMODE; 1425*ee754c2dSkamil extern unsigned IOCTL_KDSKBMODE; 1426*ee754c2dSkamil extern unsigned IOCTL_KIOCSOUND; 1427*ee754c2dSkamil extern unsigned IOCTL_PIO_SCRNMAP; 1428*ee754c2dSkamil #endif 1429*ee754c2dSkamil 1430*ee754c2dSkamil extern const int si_SEGV_MAPERR; 1431*ee754c2dSkamil extern const int si_SEGV_ACCERR; 1432*ee754c2dSkamil } // namespace __sanitizer 1433*ee754c2dSkamil 1434*ee754c2dSkamil #define CHECK_TYPE_SIZE(TYPE) \ 1435*ee754c2dSkamil COMPILER_CHECK(sizeof(__sanitizer_##TYPE) == sizeof(TYPE)) 1436*ee754c2dSkamil 1437*ee754c2dSkamil #define CHECK_SIZE_AND_OFFSET(CLASS, MEMBER) \ 1438*ee754c2dSkamil COMPILER_CHECK(sizeof(((__sanitizer_##CLASS *) NULL)->MEMBER) == \ 1439*ee754c2dSkamil sizeof(((CLASS *) NULL)->MEMBER)); \ 1440*ee754c2dSkamil COMPILER_CHECK(offsetof(__sanitizer_##CLASS, MEMBER) == \ 1441*ee754c2dSkamil offsetof(CLASS, MEMBER)) 1442*ee754c2dSkamil 1443*ee754c2dSkamil // For sigaction, which is a function and struct at the same time, 1444*ee754c2dSkamil // and thus requires explicit "struct" in sizeof() expression. 1445*ee754c2dSkamil #define CHECK_STRUCT_SIZE_AND_OFFSET(CLASS, MEMBER) \ 1446*ee754c2dSkamil COMPILER_CHECK(sizeof(((struct __sanitizer_##CLASS *) NULL)->MEMBER) == \ 1447*ee754c2dSkamil sizeof(((struct CLASS *) NULL)->MEMBER)); \ 1448*ee754c2dSkamil COMPILER_CHECK(offsetof(struct __sanitizer_##CLASS, MEMBER) == \ 1449*ee754c2dSkamil offsetof(struct CLASS, MEMBER)) 1450*ee754c2dSkamil 1451*ee754c2dSkamil #define SIGACTION_SYMNAME sigaction 1452*ee754c2dSkamil 1453*ee754c2dSkamil #endif // SANITIZER_LINUX || SANITIZER_MAC 1454*ee754c2dSkamil 1455*ee754c2dSkamil #endif 1456