1 | //===-- sanitizer_platform_limits_posix.cpp -------------------------------===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | // |
9 | // This file is a part of Sanitizer common code. |
10 | // |
11 | // Sizes and layouts of platform-specific POSIX data structures. |
12 | //===----------------------------------------------------------------------===// |
13 | |
14 | #if defined(__linux__) || defined(__APPLE__) |
15 | // Tests in this file assume that off_t-dependent data structures match the |
16 | // libc ABI. For example, struct dirent here is what readdir() function (as |
17 | // exported from libc) returns, and not the user-facing "dirent", which |
18 | // depends on _FILE_OFFSET_BITS setting. |
19 | // To get this "true" dirent definition, we undefine _FILE_OFFSET_BITS below. |
20 | #undef _FILE_OFFSET_BITS |
21 | #undef _TIME_BITS |
22 | #endif |
23 | |
24 | // Must go after undef _FILE_OFFSET_BITS. |
25 | #include "sanitizer_platform.h" |
26 | |
27 | #if SANITIZER_LINUX || SANITIZER_APPLE || SANITIZER_HAIKU |
28 | // Must go after undef _FILE_OFFSET_BITS. |
29 | #include "sanitizer_glibc_version.h" |
30 | |
31 | #include <arpa/inet.h> |
32 | #include <dirent.h> |
33 | #include <grp.h> |
34 | #include <limits.h> |
35 | #include <net/if.h> |
36 | #include <netdb.h> |
37 | #include <poll.h> |
38 | #include <pthread.h> |
39 | #include <pwd.h> |
40 | #include <signal.h> |
41 | #include <stddef.h> |
42 | #include <stdio.h> |
43 | #include <sys/mman.h> |
44 | #include <sys/resource.h> |
45 | #include <sys/socket.h> |
46 | #include <sys/stat.h> |
47 | #include <sys/time.h> |
48 | #include <sys/times.h> |
49 | #include <sys/types.h> |
50 | #include <sys/utsname.h> |
51 | #include <termios.h> |
52 | #include <time.h> |
53 | #include <wchar.h> |
54 | #include <regex.h> |
55 | #if !SANITIZER_APPLE && !SANITIZER_HAIKU |
56 | #include <utmp.h> |
57 | #endif |
58 | |
59 | #if !SANITIZER_IOS |
60 | #include <net/route.h> |
61 | #endif |
62 | |
63 | #if !SANITIZER_ANDROID |
64 | #if !SANITIZER_HAIKU |
65 | #include <sys/mount.h> |
66 | #endif |
67 | #include <sys/timeb.h> |
68 | #include <utmpx.h> |
69 | #endif |
70 | |
71 | #if SANITIZER_LINUX |
72 | #include <malloc.h> |
73 | #include <mntent.h> |
74 | #include <netinet/ether.h> |
75 | #include <sys/sysinfo.h> |
76 | #include <sys/vt.h> |
77 | #include <linux/cdrom.h> |
78 | #include <linux/fd.h> |
79 | #if SANITIZER_ANDROID |
80 | #include <linux/fs.h> |
81 | #endif |
82 | #include <linux/hdreg.h> |
83 | #include <linux/input.h> |
84 | #include <linux/ioctl.h> |
85 | #include <linux/soundcard.h> |
86 | #include <linux/sysctl.h> |
87 | #include <linux/utsname.h> |
88 | #include <linux/posix_types.h> |
89 | #include <net/if_arp.h> |
90 | #endif |
91 | |
92 | #if SANITIZER_IOS |
93 | #undef IOC_DIRMASK |
94 | #endif |
95 | |
96 | #if SANITIZER_LINUX |
97 | # include <utime.h> |
98 | # include <sys/ptrace.h> |
99 | # if defined(__mips64) || defined(__aarch64__) || defined(__arm__) || \ |
100 | defined(__hexagon__) || defined(__loongarch__) || SANITIZER_RISCV64 || \ |
101 | defined(__sparc__) || defined(__powerpc64__) |
102 | # include <asm/ptrace.h> |
103 | # ifdef __arm__ |
104 | typedef struct user_fpregs elf_fpregset_t; |
105 | # define ARM_VFPREGS_SIZE_ASAN (32 * 8 /*fpregs*/ + 4 /*fpscr*/) |
106 | # if !defined(ARM_VFPREGS_SIZE) |
107 | # define ARM_VFPREGS_SIZE ARM_VFPREGS_SIZE_ASAN |
108 | # endif |
109 | # endif |
110 | # endif |
111 | # include <semaphore.h> |
112 | #endif |
113 | |
114 | #if !SANITIZER_ANDROID |
115 | #include <ifaddrs.h> |
116 | #if !SANITIZER_HAIKU |
117 | #include <sys/ucontext.h> |
118 | #include <wordexp.h> |
119 | #endif |
120 | #endif |
121 | |
122 | #if SANITIZER_LINUX |
123 | #if SANITIZER_GLIBC |
124 | #include <fstab.h> |
125 | # include <linux/filter.h> |
126 | # include <net/if_ppp.h> |
127 | # include <netax25/ax25.h> |
128 | # include <netipx/ipx.h> |
129 | # include <netrom/netrom.h> |
130 | # include <obstack.h> |
131 | # if HAVE_RPC_XDR_H |
132 | # include <rpc/xdr.h> |
133 | # endif |
134 | # include <scsi/scsi.h> |
135 | #else |
136 | #include <linux/if_ppp.h> |
137 | #include <linux/kd.h> |
138 | #include <linux/ppp_defs.h> |
139 | #endif // SANITIZER_GLIBC |
140 | |
141 | #if SANITIZER_ANDROID |
142 | #include <linux/mtio.h> |
143 | #else |
144 | #include <glob.h> |
145 | #include <mqueue.h> |
146 | #include <sys/kd.h> |
147 | #include <sys/mtio.h> |
148 | #include <sys/shm.h> |
149 | #include <sys/statvfs.h> |
150 | #include <sys/timex.h> |
151 | #if defined(__mips64) |
152 | # include <sys/procfs.h> |
153 | #endif |
154 | #include <sys/user.h> |
155 | #include <linux/if_eql.h> |
156 | #include <linux/if_plip.h> |
157 | #include <linux/lp.h> |
158 | #include <linux/mroute.h> |
159 | #include <linux/mroute6.h> |
160 | #include <linux/scc.h> |
161 | #include <linux/serial.h> |
162 | #include <sys/msg.h> |
163 | #include <sys/ipc.h> |
164 | #endif // SANITIZER_ANDROID |
165 | |
166 | #include <link.h> |
167 | #include <sys/vfs.h> |
168 | #include <sys/epoll.h> |
169 | #include <linux/capability.h> |
170 | #elif !SANITIZER_HAIKU |
171 | #include <fstab.h> |
172 | #endif // SANITIZER_LINUX |
173 | |
174 | #if SANITIZER_APPLE |
175 | #include <net/ethernet.h> |
176 | #include <sys/filio.h> |
177 | #include <sys/sockio.h> |
178 | #endif |
179 | |
180 | #if SANITIZER_HAIKU |
181 | #include <sys/sockio.h> |
182 | #include <sys/ioctl.h> |
183 | #endif |
184 | |
185 | // Include these after system headers to avoid name clashes and ambiguities. |
186 | # include "sanitizer_common.h" |
187 | # include "sanitizer_internal_defs.h" |
188 | # include "sanitizer_platform_interceptors.h" |
189 | # include "sanitizer_platform_limits_posix.h" |
190 | |
191 | namespace __sanitizer { |
192 | unsigned struct_utsname_sz = sizeof(struct utsname); |
193 | unsigned struct_stat_sz = sizeof(struct stat); |
194 | #if SANITIZER_HAS_STAT64 |
195 | unsigned struct_stat64_sz = sizeof(struct stat64); |
196 | #endif // SANITIZER_HAS_STAT64 |
197 | unsigned struct_rusage_sz = sizeof(struct rusage); |
198 | unsigned struct_tm_sz = sizeof(struct tm); |
199 | unsigned struct_passwd_sz = sizeof(struct passwd); |
200 | unsigned struct_group_sz = sizeof(struct group); |
201 | unsigned siginfo_t_sz = sizeof(siginfo_t); |
202 | unsigned struct_sigaction_sz = sizeof(struct sigaction); |
203 | unsigned struct_stack_t_sz = sizeof(stack_t); |
204 | unsigned struct_itimerval_sz = sizeof(struct itimerval); |
205 | unsigned pthread_t_sz = sizeof(pthread_t); |
206 | unsigned pthread_mutex_t_sz = sizeof(pthread_mutex_t); |
207 | unsigned pthread_cond_t_sz = sizeof(pthread_cond_t); |
208 | unsigned pid_t_sz = sizeof(pid_t); |
209 | unsigned timeval_sz = sizeof(timeval); |
210 | unsigned uid_t_sz = sizeof(uid_t); |
211 | unsigned gid_t_sz = sizeof(gid_t); |
212 | unsigned mbstate_t_sz = sizeof(mbstate_t); |
213 | unsigned sigset_t_sz = sizeof(sigset_t); |
214 | unsigned struct_timezone_sz = sizeof(struct timezone); |
215 | unsigned struct_tms_sz = sizeof(struct tms); |
216 | unsigned struct_sigevent_sz = sizeof(struct sigevent); |
217 | unsigned struct_sched_param_sz = sizeof(struct sched_param); |
218 | unsigned struct_regex_sz = sizeof(regex_t); |
219 | unsigned struct_regmatch_sz = sizeof(regmatch_t); |
220 | |
221 | #if SANITIZER_HAS_STATFS64 |
222 | unsigned struct_statfs64_sz = sizeof(struct statfs64); |
223 | #endif // SANITIZER_HAS_STATFS64 |
224 | |
225 | #if SANITIZER_GLIBC || SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_APPLE |
226 | unsigned struct_fstab_sz = sizeof(struct fstab); |
227 | #endif // SANITIZER_GLIBC || SANITIZER_FREEBSD || SANITIZER_NETBSD || |
228 | // SANITIZER_APPLE |
229 | #if !SANITIZER_ANDROID && !SANITIZER_HAIKU |
230 | unsigned struct_statfs_sz = sizeof(struct statfs); |
231 | unsigned struct_sockaddr_sz = sizeof(struct sockaddr); |
232 | |
233 | unsigned ucontext_t_sz(void *ctx) { |
234 | # if SANITIZER_GLIBC && SANITIZER_X64 |
235 | // Added in Linux kernel 3.4.0, merged to glibc in 2.16 |
236 | # ifndef FP_XSTATE_MAGIC1 |
237 | # define FP_XSTATE_MAGIC1 0x46505853U |
238 | # endif |
239 | // See kernel arch/x86/kernel/fpu/signal.c for details. |
240 | const auto *fpregs = static_cast<ucontext_t *>(ctx)->uc_mcontext.fpregs; |
241 | // The member names differ across header versions, but the actual layout |
242 | // is always the same. So avoid using members, just use arithmetic. |
243 | const uint32_t *after_xmm = |
244 | reinterpret_cast<const uint32_t *>(fpregs + 1) - 24; |
245 | if (after_xmm[12] == FP_XSTATE_MAGIC1) |
246 | return reinterpret_cast<const char *>(fpregs) + after_xmm[13] - |
247 | static_cast<const char *>(ctx); |
248 | # endif |
249 | return sizeof(ucontext_t); |
250 | } |
251 | # endif // !SANITIZER_ANDROID |
252 | |
253 | # if SANITIZER_LINUX |
254 | unsigned struct_epoll_event_sz = sizeof(struct epoll_event); |
255 | unsigned struct_sysinfo_sz = sizeof(struct sysinfo); |
256 | unsigned = |
257 | sizeof(struct __user_cap_header_struct); |
258 | unsigned __user_cap_data_struct_sz(void *hdrp) { |
259 | int u32s = 0; |
260 | if (hdrp) { |
261 | switch (((struct __user_cap_header_struct *)hdrp)->version) { |
262 | case _LINUX_CAPABILITY_VERSION_1: |
263 | u32s = _LINUX_CAPABILITY_U32S_1; |
264 | break; |
265 | case _LINUX_CAPABILITY_VERSION_2: |
266 | u32s = _LINUX_CAPABILITY_U32S_2; |
267 | break; |
268 | case _LINUX_CAPABILITY_VERSION_3: |
269 | u32s = _LINUX_CAPABILITY_U32S_3; |
270 | break; |
271 | } |
272 | } |
273 | return sizeof(struct __user_cap_data_struct) * u32s; |
274 | } |
275 | unsigned struct_new_utsname_sz = sizeof(struct new_utsname); |
276 | unsigned struct_old_utsname_sz = sizeof(struct old_utsname); |
277 | unsigned struct_oldold_utsname_sz = sizeof(struct oldold_utsname); |
278 | #endif // SANITIZER_LINUX |
279 | |
280 | #if SANITIZER_LINUX |
281 | unsigned struct_rlimit_sz = sizeof(struct rlimit); |
282 | unsigned struct_timespec_sz = sizeof(struct timespec); |
283 | unsigned struct_utimbuf_sz = sizeof(struct utimbuf); |
284 | unsigned struct_itimerspec_sz = sizeof(struct itimerspec); |
285 | #endif // SANITIZER_LINUX |
286 | |
287 | #if SANITIZER_GLIBC |
288 | // Use pre-computed size of struct ustat to avoid <sys/ustat.h> which |
289 | // has been removed from glibc 2.28. |
290 | #if defined(__aarch64__) || defined(__s390x__) || defined(__mips64) || \ |
291 | defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) || \ |
292 | defined(__x86_64__) || SANITIZER_RISCV64 |
293 | #define SIZEOF_STRUCT_USTAT 32 |
294 | # elif defined(__arm__) || defined(__i386__) || defined(__mips__) || \ |
295 | defined(__powerpc__) || defined(__s390__) || defined(__sparc__) || \ |
296 | defined(__hexagon__) |
297 | # define SIZEOF_STRUCT_USTAT 20 |
298 | # elif defined(__loongarch__) |
299 | // Not used. The minimum Glibc version available for LoongArch is 2.36 |
300 | // so ustat() wrapper is already gone. |
301 | # define SIZEOF_STRUCT_USTAT 0 |
302 | # else |
303 | # error Unknown size of struct ustat |
304 | # endif |
305 | unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT; |
306 | unsigned struct_rlimit64_sz = sizeof(struct rlimit64); |
307 | unsigned struct_statvfs64_sz = sizeof(struct statvfs64); |
308 | #endif // SANITIZER_GLIBC |
309 | |
310 | #if SANITIZER_LINUX && !SANITIZER_ANDROID |
311 | unsigned struct_timex_sz = sizeof(struct timex); |
312 | unsigned struct_msqid_ds_sz = sizeof(struct msqid_ds); |
313 | unsigned struct_mq_attr_sz = sizeof(struct mq_attr); |
314 | unsigned struct_statvfs_sz = sizeof(struct statvfs); |
315 | #endif // SANITIZER_LINUX && !SANITIZER_ANDROID |
316 | |
317 | const uptr sig_ign = (uptr)SIG_IGN; |
318 | const uptr sig_dfl = (uptr)SIG_DFL; |
319 | const uptr sig_err = (uptr)SIG_ERR; |
320 | const uptr sa_siginfo = (uptr)SA_SIGINFO; |
321 | |
322 | #if SANITIZER_LINUX |
323 | int e_tabsz = (int)E_TABSZ; |
324 | #endif |
325 | |
326 | |
327 | #if SANITIZER_LINUX && !SANITIZER_ANDROID |
328 | unsigned struct_shminfo_sz = sizeof(struct shminfo); |
329 | unsigned struct_shm_info_sz = sizeof(struct shm_info); |
330 | int shmctl_ipc_stat = (int)IPC_STAT; |
331 | int shmctl_ipc_info = (int)IPC_INFO; |
332 | int shmctl_shm_info = (int)SHM_INFO; |
333 | int shmctl_shm_stat = (int)SHM_STAT; |
334 | #endif |
335 | |
336 | #if !SANITIZER_APPLE && !SANITIZER_FREEBSD && !SANITIZER_HAIKU |
337 | unsigned struct_utmp_sz = sizeof(struct utmp); |
338 | #endif |
339 | #if !SANITIZER_ANDROID |
340 | unsigned struct_utmpx_sz = sizeof(struct utmpx); |
341 | #endif |
342 | |
343 | int map_fixed = MAP_FIXED; |
344 | |
345 | int af_inet = (int)AF_INET; |
346 | int af_inet6 = (int)AF_INET6; |
347 | |
348 | uptr __sanitizer_in_addr_sz(int af) { |
349 | if (af == AF_INET) |
350 | return sizeof(struct in_addr); |
351 | else if (af == AF_INET6) |
352 | return sizeof(struct in6_addr); |
353 | else |
354 | return 0; |
355 | } |
356 | |
357 | #if SANITIZER_LINUX |
358 | unsigned struct_ElfW_Phdr_sz = sizeof(ElfW(Phdr)); |
359 | #elif SANITIZER_FREEBSD |
360 | unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); |
361 | #endif |
362 | |
363 | #if SANITIZER_GLIBC |
364 | int glob_nomatch = GLOB_NOMATCH; |
365 | int glob_altdirfunc = GLOB_ALTDIRFUNC; |
366 | #endif |
367 | |
368 | # if !SANITIZER_ANDROID && !SANITIZER_HAIKU |
369 | const int wordexp_wrde_dooffs = WRDE_DOOFFS; |
370 | # endif // !SANITIZER_ANDROID && !SANITIZER_HAIKU |
371 | |
372 | # if SANITIZER_LINUX && !SANITIZER_ANDROID && \ |
373 | (defined(__i386) || defined(__x86_64) || defined(__mips64) || \ |
374 | defined(__powerpc64__) || defined(__aarch64__) || defined(__arm__) || \ |
375 | defined(__s390__) || defined(__loongarch__) || SANITIZER_RISCV64 || \ |
376 | defined(__sparc__)) |
377 | # if defined(__mips64) || defined(__powerpc64__) || defined(__arm__) |
378 | unsigned struct_user_regs_struct_sz = sizeof(struct pt_regs); |
379 | unsigned struct_user_fpregs_struct_sz = sizeof(elf_fpregset_t); |
380 | #elif SANITIZER_RISCV64 |
381 | unsigned struct_user_regs_struct_sz = sizeof(struct user_regs_struct); |
382 | unsigned struct_user_fpregs_struct_sz = sizeof(struct __riscv_q_ext_state); |
383 | #elif defined(__aarch64__) |
384 | unsigned struct_user_regs_struct_sz = sizeof(struct user_pt_regs); |
385 | unsigned struct_user_fpregs_struct_sz = sizeof(struct user_fpsimd_state); |
386 | #elif defined(__loongarch__) |
387 | unsigned struct_user_regs_struct_sz = sizeof(struct user_pt_regs); |
388 | unsigned struct_user_fpregs_struct_sz = sizeof(struct user_fp_state); |
389 | #elif defined(__s390__) |
390 | unsigned struct_user_regs_struct_sz = sizeof(struct _user_regs_struct); |
391 | unsigned struct_user_fpregs_struct_sz = sizeof(struct _user_fpregs_struct); |
392 | # elif defined(__sparc__) |
393 | unsigned struct_user_regs_struct_sz = sizeof(struct sunos_regs); |
394 | unsigned struct_user_fpregs_struct_sz = sizeof(struct sunos_fp); |
395 | # else |
396 | unsigned struct_user_regs_struct_sz = sizeof(struct user_regs_struct); |
397 | unsigned struct_user_fpregs_struct_sz = sizeof(struct user_fpregs_struct); |
398 | # endif // __mips64 || __powerpc64__ || __aarch64__ || __loongarch__ |
399 | # if defined(__x86_64) || defined(__mips64) || defined(__powerpc64__) || \ |
400 | defined(__aarch64__) || defined(__arm__) || defined(__s390__) || \ |
401 | defined(__loongarch__) || SANITIZER_RISCV64 || defined(__sparc__) |
402 | unsigned struct_user_fpxregs_struct_sz = 0; |
403 | #else |
404 | unsigned struct_user_fpxregs_struct_sz = sizeof(struct user_fpxregs_struct); |
405 | #endif // __x86_64 || __mips64 || __powerpc64__ || __aarch64__ || __arm__ |
406 | // || __s390__ || __loongarch__ || SANITIZER_RISCV64 || __sparc__ |
407 | # ifdef __arm__ |
408 | unsigned struct_user_vfpregs_struct_sz = ARM_VFPREGS_SIZE; |
409 | #else |
410 | unsigned struct_user_vfpregs_struct_sz = 0; |
411 | #endif |
412 | |
413 | int ptrace_peektext = PTRACE_PEEKTEXT; |
414 | int ptrace_peekdata = PTRACE_PEEKDATA; |
415 | int ptrace_peekuser = PTRACE_PEEKUSER; |
416 | #if (defined(PTRACE_GETREGS) && defined(PTRACE_SETREGS)) || \ |
417 | (defined(PT_GETREGS) && defined(PT_SETREGS)) |
418 | int ptrace_getregs = PTRACE_GETREGS; |
419 | int ptrace_setregs = PTRACE_SETREGS; |
420 | #else |
421 | int ptrace_getregs = -1; |
422 | int ptrace_setregs = -1; |
423 | #endif |
424 | #if (defined(PTRACE_GETFPREGS) && defined(PTRACE_SETFPREGS)) || \ |
425 | (defined(PT_GETFPREGS) && defined(PT_SETFPREGS)) |
426 | int ptrace_getfpregs = PTRACE_GETFPREGS; |
427 | int ptrace_setfpregs = PTRACE_SETFPREGS; |
428 | #else |
429 | int ptrace_getfpregs = -1; |
430 | int ptrace_setfpregs = -1; |
431 | #endif |
432 | #if (defined(PTRACE_GETFPXREGS) && defined(PTRACE_SETFPXREGS)) || \ |
433 | (defined(PT_GETFPXREGS) && defined(PT_SETFPXREGS)) |
434 | int ptrace_getfpxregs = PTRACE_GETFPXREGS; |
435 | int ptrace_setfpxregs = PTRACE_SETFPXREGS; |
436 | #else |
437 | int ptrace_getfpxregs = -1; |
438 | int ptrace_setfpxregs = -1; |
439 | #endif // PTRACE_GETFPXREGS/PTRACE_SETFPXREGS |
440 | #if defined(PTRACE_GETVFPREGS) && defined(PTRACE_SETVFPREGS) |
441 | int ptrace_getvfpregs = PTRACE_GETVFPREGS; |
442 | int ptrace_setvfpregs = PTRACE_SETVFPREGS; |
443 | #else |
444 | int ptrace_getvfpregs = -1; |
445 | int ptrace_setvfpregs = -1; |
446 | #endif |
447 | int ptrace_geteventmsg = PTRACE_GETEVENTMSG; |
448 | #if (defined(PTRACE_GETSIGINFO) && defined(PTRACE_SETSIGINFO)) || \ |
449 | (defined(PT_GETSIGINFO) && defined(PT_SETSIGINFO)) |
450 | int ptrace_getsiginfo = PTRACE_GETSIGINFO; |
451 | int ptrace_setsiginfo = PTRACE_SETSIGINFO; |
452 | #else |
453 | int ptrace_getsiginfo = -1; |
454 | int ptrace_setsiginfo = -1; |
455 | #endif // PTRACE_GETSIGINFO/PTRACE_SETSIGINFO |
456 | #if defined(PTRACE_GETREGSET) && defined(PTRACE_SETREGSET) |
457 | int ptrace_getregset = PTRACE_GETREGSET; |
458 | int ptrace_setregset = PTRACE_SETREGSET; |
459 | #else |
460 | int ptrace_getregset = -1; |
461 | int ptrace_setregset = -1; |
462 | #endif // PTRACE_GETREGSET/PTRACE_SETREGSET |
463 | #endif |
464 | |
465 | unsigned path_max = PATH_MAX; |
466 | |
467 | // ioctl arguments |
468 | unsigned struct_ifreq_sz = sizeof(struct ifreq); |
469 | unsigned struct_termios_sz = sizeof(struct termios); |
470 | unsigned struct_winsize_sz = sizeof(struct winsize); |
471 | |
472 | #if SANITIZER_LINUX |
473 | unsigned struct_arpreq_sz = sizeof(struct arpreq); |
474 | unsigned struct_cdrom_msf_sz = sizeof(struct cdrom_msf); |
475 | unsigned struct_cdrom_multisession_sz = sizeof(struct cdrom_multisession); |
476 | unsigned struct_cdrom_read_audio_sz = sizeof(struct cdrom_read_audio); |
477 | unsigned struct_cdrom_subchnl_sz = sizeof(struct cdrom_subchnl); |
478 | unsigned struct_cdrom_ti_sz = sizeof(struct cdrom_ti); |
479 | unsigned struct_cdrom_tocentry_sz = sizeof(struct cdrom_tocentry); |
480 | unsigned struct_cdrom_tochdr_sz = sizeof(struct cdrom_tochdr); |
481 | unsigned struct_cdrom_volctrl_sz = sizeof(struct cdrom_volctrl); |
482 | unsigned struct_ff_effect_sz = sizeof(struct ff_effect); |
483 | unsigned struct_floppy_drive_params_sz = sizeof(struct floppy_drive_params); |
484 | unsigned struct_floppy_drive_struct_sz = sizeof(struct floppy_drive_struct); |
485 | unsigned struct_floppy_fdc_state_sz = sizeof(struct floppy_fdc_state); |
486 | unsigned struct_floppy_max_errors_sz = sizeof(struct floppy_max_errors); |
487 | unsigned struct_floppy_raw_cmd_sz = sizeof(struct floppy_raw_cmd); |
488 | unsigned struct_floppy_struct_sz = sizeof(struct floppy_struct); |
489 | unsigned struct_floppy_write_errors_sz = sizeof(struct floppy_write_errors); |
490 | unsigned struct_format_descr_sz = sizeof(struct format_descr); |
491 | unsigned struct_hd_driveid_sz = sizeof(struct hd_driveid); |
492 | unsigned struct_hd_geometry_sz = sizeof(struct hd_geometry); |
493 | unsigned struct_input_absinfo_sz = sizeof(struct input_absinfo); |
494 | unsigned struct_input_id_sz = sizeof(struct input_id); |
495 | unsigned struct_mtpos_sz = sizeof(struct mtpos); |
496 | unsigned struct_rtentry_sz = sizeof(struct rtentry); |
497 | unsigned struct_vt_consize_sz = sizeof(struct vt_consize); |
498 | unsigned struct_vt_sizes_sz = sizeof(struct vt_sizes); |
499 | unsigned struct_vt_stat_sz = sizeof(struct vt_stat); |
500 | #endif // SANITIZER_LINUX |
501 | |
502 | #if SANITIZER_LINUX |
503 | #if SOUND_VERSION >= 0x040000 |
504 | unsigned struct_copr_buffer_sz = 0; |
505 | unsigned struct_copr_debug_buf_sz = 0; |
506 | unsigned struct_copr_msg_sz = 0; |
507 | #else |
508 | unsigned struct_copr_buffer_sz = sizeof(struct copr_buffer); |
509 | unsigned struct_copr_debug_buf_sz = sizeof(struct copr_debug_buf); |
510 | unsigned struct_copr_msg_sz = sizeof(struct copr_msg); |
511 | #endif |
512 | unsigned struct_midi_info_sz = sizeof(struct midi_info); |
513 | unsigned struct_mtget_sz = sizeof(struct mtget); |
514 | unsigned struct_mtop_sz = sizeof(struct mtop); |
515 | unsigned struct_sbi_instrument_sz = sizeof(struct sbi_instrument); |
516 | unsigned struct_seq_event_rec_sz = sizeof(struct seq_event_rec); |
517 | unsigned struct_synth_info_sz = sizeof(struct synth_info); |
518 | unsigned struct_vt_mode_sz = sizeof(struct vt_mode); |
519 | #endif // SANITIZER_LINUX |
520 | |
521 | #if SANITIZER_GLIBC |
522 | unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct); |
523 | #if EV_VERSION > (0x010000) |
524 | unsigned struct_input_keymap_entry_sz = sizeof(struct input_keymap_entry); |
525 | #else |
526 | unsigned struct_input_keymap_entry_sz = 0; |
527 | #endif |
528 | unsigned struct_ipx_config_data_sz = sizeof(struct ipx_config_data); |
529 | unsigned struct_kbdiacrs_sz = sizeof(struct kbdiacrs); |
530 | unsigned struct_kbentry_sz = sizeof(struct kbentry); |
531 | unsigned struct_kbkeycode_sz = sizeof(struct kbkeycode); |
532 | unsigned struct_kbsentry_sz = sizeof(struct kbsentry); |
533 | unsigned struct_mtconfiginfo_sz = sizeof(struct mtconfiginfo); |
534 | unsigned struct_nr_parms_struct_sz = sizeof(struct nr_parms_struct); |
535 | unsigned struct_scc_modem_sz = sizeof(struct scc_modem); |
536 | unsigned struct_scc_stat_sz = sizeof(struct scc_stat); |
537 | unsigned struct_serial_multiport_struct_sz |
538 | = sizeof(struct serial_multiport_struct); |
539 | unsigned struct_serial_struct_sz = sizeof(struct serial_struct); |
540 | unsigned struct_sockaddr_ax25_sz = sizeof(struct sockaddr_ax25); |
541 | unsigned struct_unimapdesc_sz = sizeof(struct unimapdesc); |
542 | unsigned struct_unimapinit_sz = sizeof(struct unimapinit); |
543 | |
544 | unsigned struct_audio_buf_info_sz = sizeof(struct audio_buf_info); |
545 | unsigned struct_ppp_stats_sz = sizeof(struct ppp_stats); |
546 | unsigned struct_sock_fprog_sz = sizeof(struct sock_fprog); |
547 | # endif // SANITIZER_GLIBC |
548 | |
549 | # if !SANITIZER_ANDROID && !SANITIZER_APPLE && !SANITIZER_HAIKU |
550 | unsigned struct_sioc_sg_req_sz = sizeof(struct sioc_sg_req); |
551 | unsigned struct_sioc_vif_req_sz = sizeof(struct sioc_vif_req); |
552 | #endif |
553 | |
554 | unsigned fpos_t_sz = sizeof(fpos_t); |
555 | |
556 | const unsigned long __sanitizer_bufsiz = BUFSIZ; |
557 | |
558 | const unsigned IOCTL_NOT_PRESENT = 0; |
559 | |
560 | unsigned IOCTL_FIONBIO = FIONBIO; |
561 | #if !SANITIZER_HAIKU |
562 | unsigned IOCTL_FIOASYNC = FIOASYNC; |
563 | unsigned IOCTL_FIOCLEX = FIOCLEX; |
564 | unsigned IOCTL_FIOGETOWN = FIOGETOWN; |
565 | unsigned IOCTL_FIONCLEX = FIONCLEX; |
566 | unsigned IOCTL_FIOSETOWN = FIOSETOWN; |
567 | #endif |
568 | unsigned IOCTL_SIOCADDMULTI = SIOCADDMULTI; |
569 | unsigned IOCTL_SIOCATMARK = SIOCATMARK; |
570 | unsigned IOCTL_SIOCDELMULTI = SIOCDELMULTI; |
571 | unsigned IOCTL_SIOCGIFADDR = SIOCGIFADDR; |
572 | unsigned IOCTL_SIOCGIFBRDADDR = SIOCGIFBRDADDR; |
573 | unsigned IOCTL_SIOCGIFCONF = SIOCGIFCONF; |
574 | unsigned IOCTL_SIOCGIFDSTADDR = SIOCGIFDSTADDR; |
575 | unsigned IOCTL_SIOCGIFFLAGS = SIOCGIFFLAGS; |
576 | unsigned IOCTL_SIOCGIFMETRIC = SIOCGIFMETRIC; |
577 | unsigned IOCTL_SIOCGIFMTU = SIOCGIFMTU; |
578 | unsigned IOCTL_SIOCGIFNETMASK = SIOCGIFNETMASK; |
579 | unsigned IOCTL_SIOCGPGRP = SIOCGPGRP; |
580 | unsigned IOCTL_SIOCSIFADDR = SIOCSIFADDR; |
581 | unsigned IOCTL_SIOCSIFBRDADDR = SIOCSIFBRDADDR; |
582 | unsigned IOCTL_SIOCSIFDSTADDR = SIOCSIFDSTADDR; |
583 | unsigned IOCTL_SIOCSIFFLAGS = SIOCSIFFLAGS; |
584 | unsigned IOCTL_SIOCSIFMETRIC = SIOCSIFMETRIC; |
585 | unsigned IOCTL_SIOCSIFMTU = SIOCSIFMTU; |
586 | unsigned IOCTL_SIOCSIFNETMASK = SIOCSIFNETMASK; |
587 | unsigned IOCTL_SIOCSPGRP = SIOCSPGRP; |
588 | |
589 | #if !SANITIZER_HAIKU |
590 | unsigned IOCTL_TIOCCONS = TIOCCONS; |
591 | unsigned IOCTL_TIOCGETD = TIOCGETD; |
592 | unsigned IOCTL_TIOCNOTTY = TIOCNOTTY; |
593 | unsigned IOCTL_TIOCPKT = TIOCPKT; |
594 | unsigned IOCTL_TIOCSETD = TIOCSETD; |
595 | unsigned IOCTL_TIOCSTI = TIOCSTI; |
596 | #endif |
597 | |
598 | unsigned IOCTL_TIOCEXCL = TIOCEXCL; |
599 | unsigned IOCTL_TIOCGPGRP = TIOCGPGRP; |
600 | unsigned IOCTL_TIOCGWINSZ = TIOCGWINSZ; |
601 | unsigned IOCTL_TIOCMBIC = TIOCMBIC; |
602 | unsigned IOCTL_TIOCMBIS = TIOCMBIS; |
603 | unsigned IOCTL_TIOCMGET = TIOCMGET; |
604 | unsigned IOCTL_TIOCMSET = TIOCMSET; |
605 | unsigned IOCTL_TIOCNXCL = TIOCNXCL; |
606 | unsigned IOCTL_TIOCOUTQ = TIOCOUTQ; |
607 | unsigned IOCTL_TIOCSCTTY = TIOCSCTTY; |
608 | unsigned IOCTL_TIOCSPGRP = TIOCSPGRP; |
609 | unsigned IOCTL_TIOCSWINSZ = TIOCSWINSZ; |
610 | #if SANITIZER_LINUX && !SANITIZER_ANDROID |
611 | unsigned IOCTL_SIOCGETSGCNT = SIOCGETSGCNT; |
612 | unsigned IOCTL_SIOCGETVIFCNT = SIOCGETVIFCNT; |
613 | #endif |
614 | |
615 | #if SANITIZER_LINUX |
616 | unsigned IOCTL_EVIOCGABS = EVIOCGABS(0); |
617 | unsigned IOCTL_EVIOCGBIT = EVIOCGBIT(0, 0); |
618 | unsigned IOCTL_EVIOCGEFFECTS = EVIOCGEFFECTS; |
619 | unsigned IOCTL_EVIOCGID = EVIOCGID; |
620 | unsigned IOCTL_EVIOCGKEY = EVIOCGKEY(0); |
621 | unsigned IOCTL_EVIOCGKEYCODE = EVIOCGKEYCODE; |
622 | unsigned IOCTL_EVIOCGLED = EVIOCGLED(0); |
623 | unsigned IOCTL_EVIOCGNAME = EVIOCGNAME(0); |
624 | unsigned IOCTL_EVIOCGPHYS = EVIOCGPHYS(0); |
625 | unsigned IOCTL_EVIOCGRAB = EVIOCGRAB; |
626 | unsigned IOCTL_EVIOCGREP = EVIOCGREP; |
627 | unsigned IOCTL_EVIOCGSND = EVIOCGSND(0); |
628 | unsigned IOCTL_EVIOCGSW = EVIOCGSW(0); |
629 | unsigned IOCTL_EVIOCGUNIQ = EVIOCGUNIQ(0); |
630 | unsigned IOCTL_EVIOCGVERSION = EVIOCGVERSION; |
631 | unsigned IOCTL_EVIOCRMFF = EVIOCRMFF; |
632 | unsigned IOCTL_EVIOCSABS = EVIOCSABS(0); |
633 | unsigned IOCTL_EVIOCSFF = EVIOCSFF; |
634 | unsigned IOCTL_EVIOCSKEYCODE = EVIOCSKEYCODE; |
635 | unsigned IOCTL_EVIOCSREP = EVIOCSREP; |
636 | unsigned IOCTL_BLKFLSBUF = BLKFLSBUF; |
637 | unsigned IOCTL_BLKGETSIZE = BLKGETSIZE; |
638 | unsigned IOCTL_BLKRAGET = BLKRAGET; |
639 | unsigned IOCTL_BLKRASET = BLKRASET; |
640 | unsigned IOCTL_BLKROGET = BLKROGET; |
641 | unsigned IOCTL_BLKROSET = BLKROSET; |
642 | unsigned IOCTL_BLKRRPART = BLKRRPART; |
643 | unsigned IOCTL_BLKFRASET = BLKFRASET; |
644 | unsigned IOCTL_BLKFRAGET = BLKFRAGET; |
645 | unsigned IOCTL_BLKSECTSET = BLKSECTSET; |
646 | unsigned IOCTL_BLKSECTGET = BLKSECTGET; |
647 | unsigned IOCTL_BLKSSZGET = BLKSSZGET; |
648 | unsigned IOCTL_BLKBSZGET = BLKBSZGET; |
649 | unsigned IOCTL_BLKBSZSET = BLKBSZSET; |
650 | unsigned IOCTL_BLKGETSIZE64 = BLKGETSIZE64; |
651 | unsigned IOCTL_CDROMAUDIOBUFSIZ = CDROMAUDIOBUFSIZ; |
652 | unsigned IOCTL_CDROMEJECT = CDROMEJECT; |
653 | unsigned IOCTL_CDROMEJECT_SW = CDROMEJECT_SW; |
654 | unsigned IOCTL_CDROMMULTISESSION = CDROMMULTISESSION; |
655 | unsigned IOCTL_CDROMPAUSE = CDROMPAUSE; |
656 | unsigned IOCTL_CDROMPLAYMSF = CDROMPLAYMSF; |
657 | unsigned IOCTL_CDROMPLAYTRKIND = CDROMPLAYTRKIND; |
658 | unsigned IOCTL_CDROMREADAUDIO = CDROMREADAUDIO; |
659 | unsigned IOCTL_CDROMREADCOOKED = CDROMREADCOOKED; |
660 | unsigned IOCTL_CDROMREADMODE1 = CDROMREADMODE1; |
661 | unsigned IOCTL_CDROMREADMODE2 = CDROMREADMODE2; |
662 | unsigned IOCTL_CDROMREADRAW = CDROMREADRAW; |
663 | unsigned IOCTL_CDROMREADTOCENTRY = CDROMREADTOCENTRY; |
664 | unsigned IOCTL_CDROMREADTOCHDR = CDROMREADTOCHDR; |
665 | unsigned IOCTL_CDROMRESET = CDROMRESET; |
666 | unsigned IOCTL_CDROMRESUME = CDROMRESUME; |
667 | unsigned IOCTL_CDROMSEEK = CDROMSEEK; |
668 | unsigned IOCTL_CDROMSTART = CDROMSTART; |
669 | unsigned IOCTL_CDROMSTOP = CDROMSTOP; |
670 | unsigned IOCTL_CDROMSUBCHNL = CDROMSUBCHNL; |
671 | unsigned IOCTL_CDROMVOLCTRL = CDROMVOLCTRL; |
672 | unsigned IOCTL_CDROMVOLREAD = CDROMVOLREAD; |
673 | unsigned IOCTL_CDROM_GET_UPC = CDROM_GET_UPC; |
674 | unsigned IOCTL_FDCLRPRM = FDCLRPRM; |
675 | unsigned IOCTL_FDDEFPRM = FDDEFPRM; |
676 | unsigned IOCTL_FDFLUSH = FDFLUSH; |
677 | unsigned IOCTL_FDFMTBEG = FDFMTBEG; |
678 | unsigned IOCTL_FDFMTEND = FDFMTEND; |
679 | unsigned IOCTL_FDFMTTRK = FDFMTTRK; |
680 | unsigned IOCTL_FDGETDRVPRM = FDGETDRVPRM; |
681 | unsigned IOCTL_FDGETDRVSTAT = FDGETDRVSTAT; |
682 | unsigned IOCTL_FDGETDRVTYP = FDGETDRVTYP; |
683 | unsigned IOCTL_FDGETFDCSTAT = FDGETFDCSTAT; |
684 | unsigned IOCTL_FDGETMAXERRS = FDGETMAXERRS; |
685 | unsigned IOCTL_FDGETPRM = FDGETPRM; |
686 | unsigned IOCTL_FDMSGOFF = FDMSGOFF; |
687 | unsigned IOCTL_FDMSGON = FDMSGON; |
688 | unsigned IOCTL_FDPOLLDRVSTAT = FDPOLLDRVSTAT; |
689 | unsigned IOCTL_FDRAWCMD = FDRAWCMD; |
690 | unsigned IOCTL_FDRESET = FDRESET; |
691 | unsigned IOCTL_FDSETDRVPRM = FDSETDRVPRM; |
692 | unsigned IOCTL_FDSETEMSGTRESH = FDSETEMSGTRESH; |
693 | unsigned IOCTL_FDSETMAXERRS = FDSETMAXERRS; |
694 | unsigned IOCTL_FDSETPRM = FDSETPRM; |
695 | unsigned IOCTL_FDTWADDLE = FDTWADDLE; |
696 | unsigned IOCTL_FDWERRORCLR = FDWERRORCLR; |
697 | unsigned IOCTL_FDWERRORGET = FDWERRORGET; |
698 | unsigned IOCTL_HDIO_DRIVE_CMD = HDIO_DRIVE_CMD; |
699 | unsigned IOCTL_HDIO_GETGEO = HDIO_GETGEO; |
700 | unsigned IOCTL_HDIO_GET_32BIT = HDIO_GET_32BIT; |
701 | unsigned IOCTL_HDIO_GET_DMA = HDIO_GET_DMA; |
702 | unsigned IOCTL_HDIO_GET_IDENTITY = HDIO_GET_IDENTITY; |
703 | unsigned IOCTL_HDIO_GET_KEEPSETTINGS = HDIO_GET_KEEPSETTINGS; |
704 | unsigned IOCTL_HDIO_GET_MULTCOUNT = HDIO_GET_MULTCOUNT; |
705 | unsigned IOCTL_HDIO_GET_NOWERR = HDIO_GET_NOWERR; |
706 | unsigned IOCTL_HDIO_GET_UNMASKINTR = HDIO_GET_UNMASKINTR; |
707 | unsigned IOCTL_HDIO_SET_32BIT = HDIO_SET_32BIT; |
708 | unsigned IOCTL_HDIO_SET_DMA = HDIO_SET_DMA; |
709 | unsigned IOCTL_HDIO_SET_KEEPSETTINGS = HDIO_SET_KEEPSETTINGS; |
710 | unsigned IOCTL_HDIO_SET_MULTCOUNT = HDIO_SET_MULTCOUNT; |
711 | unsigned IOCTL_HDIO_SET_NOWERR = HDIO_SET_NOWERR; |
712 | unsigned IOCTL_HDIO_SET_UNMASKINTR = HDIO_SET_UNMASKINTR; |
713 | unsigned IOCTL_MTIOCPOS = MTIOCPOS; |
714 | unsigned IOCTL_PPPIOCGASYNCMAP = PPPIOCGASYNCMAP; |
715 | unsigned IOCTL_PPPIOCGDEBUG = PPPIOCGDEBUG; |
716 | unsigned IOCTL_PPPIOCGFLAGS = PPPIOCGFLAGS; |
717 | unsigned IOCTL_PPPIOCGUNIT = PPPIOCGUNIT; |
718 | unsigned IOCTL_PPPIOCGXASYNCMAP = PPPIOCGXASYNCMAP; |
719 | unsigned IOCTL_PPPIOCSASYNCMAP = PPPIOCSASYNCMAP; |
720 | unsigned IOCTL_PPPIOCSDEBUG = PPPIOCSDEBUG; |
721 | unsigned IOCTL_PPPIOCSFLAGS = PPPIOCSFLAGS; |
722 | unsigned IOCTL_PPPIOCSMAXCID = PPPIOCSMAXCID; |
723 | unsigned IOCTL_PPPIOCSMRU = PPPIOCSMRU; |
724 | unsigned IOCTL_PPPIOCSXASYNCMAP = PPPIOCSXASYNCMAP; |
725 | unsigned IOCTL_SIOCADDRT = SIOCADDRT; |
726 | unsigned IOCTL_SIOCDARP = SIOCDARP; |
727 | unsigned IOCTL_SIOCDELRT = SIOCDELRT; |
728 | unsigned IOCTL_SIOCDRARP = SIOCDRARP; |
729 | unsigned IOCTL_SIOCGARP = SIOCGARP; |
730 | unsigned IOCTL_SIOCGIFENCAP = SIOCGIFENCAP; |
731 | unsigned IOCTL_SIOCGIFHWADDR = SIOCGIFHWADDR; |
732 | unsigned IOCTL_SIOCGIFMAP = SIOCGIFMAP; |
733 | unsigned IOCTL_SIOCGIFMEM = SIOCGIFMEM; |
734 | unsigned IOCTL_SIOCGIFNAME = SIOCGIFNAME; |
735 | unsigned IOCTL_SIOCGIFSLAVE = SIOCGIFSLAVE; |
736 | unsigned IOCTL_SIOCGRARP = SIOCGRARP; |
737 | unsigned IOCTL_SIOCGSTAMP = SIOCGSTAMP; |
738 | unsigned IOCTL_SIOCSARP = SIOCSARP; |
739 | unsigned IOCTL_SIOCSIFENCAP = SIOCSIFENCAP; |
740 | unsigned IOCTL_SIOCSIFHWADDR = SIOCSIFHWADDR; |
741 | unsigned IOCTL_SIOCSIFLINK = SIOCSIFLINK; |
742 | unsigned IOCTL_SIOCSIFMAP = SIOCSIFMAP; |
743 | unsigned IOCTL_SIOCSIFMEM = SIOCSIFMEM; |
744 | unsigned IOCTL_SIOCSIFSLAVE = SIOCSIFSLAVE; |
745 | unsigned IOCTL_SIOCSRARP = SIOCSRARP; |
746 | # if SOUND_VERSION >= 0x040000 |
747 | unsigned IOCTL_SNDCTL_COPR_HALT = IOCTL_NOT_PRESENT; |
748 | unsigned IOCTL_SNDCTL_COPR_LOAD = IOCTL_NOT_PRESENT; |
749 | unsigned IOCTL_SNDCTL_COPR_RCODE = IOCTL_NOT_PRESENT; |
750 | unsigned IOCTL_SNDCTL_COPR_RCVMSG = IOCTL_NOT_PRESENT; |
751 | unsigned IOCTL_SNDCTL_COPR_RDATA = IOCTL_NOT_PRESENT; |
752 | unsigned IOCTL_SNDCTL_COPR_RESET = IOCTL_NOT_PRESENT; |
753 | unsigned IOCTL_SNDCTL_COPR_RUN = IOCTL_NOT_PRESENT; |
754 | unsigned IOCTL_SNDCTL_COPR_SENDMSG = IOCTL_NOT_PRESENT; |
755 | unsigned IOCTL_SNDCTL_COPR_WCODE = IOCTL_NOT_PRESENT; |
756 | unsigned IOCTL_SNDCTL_COPR_WDATA = IOCTL_NOT_PRESENT; |
757 | unsigned IOCTL_SOUND_PCM_READ_BITS = IOCTL_NOT_PRESENT; |
758 | unsigned IOCTL_SOUND_PCM_READ_CHANNELS = IOCTL_NOT_PRESENT; |
759 | unsigned IOCTL_SOUND_PCM_READ_FILTER = IOCTL_NOT_PRESENT; |
760 | unsigned IOCTL_SOUND_PCM_READ_RATE = IOCTL_NOT_PRESENT; |
761 | unsigned IOCTL_SOUND_PCM_WRITE_CHANNELS = IOCTL_NOT_PRESENT; |
762 | unsigned IOCTL_SOUND_PCM_WRITE_FILTER = IOCTL_NOT_PRESENT; |
763 | # else // SOUND_VERSION |
764 | unsigned IOCTL_SNDCTL_COPR_HALT = SNDCTL_COPR_HALT; |
765 | unsigned IOCTL_SNDCTL_COPR_LOAD = SNDCTL_COPR_LOAD; |
766 | unsigned IOCTL_SNDCTL_COPR_RCODE = SNDCTL_COPR_RCODE; |
767 | unsigned IOCTL_SNDCTL_COPR_RCVMSG = SNDCTL_COPR_RCVMSG; |
768 | unsigned IOCTL_SNDCTL_COPR_RDATA = SNDCTL_COPR_RDATA; |
769 | unsigned IOCTL_SNDCTL_COPR_RESET = SNDCTL_COPR_RESET; |
770 | unsigned IOCTL_SNDCTL_COPR_RUN = SNDCTL_COPR_RUN; |
771 | unsigned IOCTL_SNDCTL_COPR_SENDMSG = SNDCTL_COPR_SENDMSG; |
772 | unsigned IOCTL_SNDCTL_COPR_WCODE = SNDCTL_COPR_WCODE; |
773 | unsigned IOCTL_SNDCTL_COPR_WDATA = SNDCTL_COPR_WDATA; |
774 | unsigned IOCTL_SOUND_PCM_READ_BITS = SOUND_PCM_READ_BITS; |
775 | unsigned IOCTL_SOUND_PCM_READ_CHANNELS = SOUND_PCM_READ_CHANNELS; |
776 | unsigned IOCTL_SOUND_PCM_READ_FILTER = SOUND_PCM_READ_FILTER; |
777 | unsigned IOCTL_SOUND_PCM_READ_RATE = SOUND_PCM_READ_RATE; |
778 | unsigned IOCTL_SOUND_PCM_WRITE_CHANNELS = SOUND_PCM_WRITE_CHANNELS; |
779 | unsigned IOCTL_SOUND_PCM_WRITE_FILTER = SOUND_PCM_WRITE_FILTER; |
780 | #endif // SOUND_VERSION |
781 | unsigned IOCTL_TCFLSH = TCFLSH; |
782 | unsigned IOCTL_TCGETA = TCGETA; |
783 | unsigned IOCTL_TCGETS = TCGETS; |
784 | unsigned IOCTL_TCSBRK = TCSBRK; |
785 | unsigned IOCTL_TCSBRKP = TCSBRKP; |
786 | unsigned IOCTL_TCSETA = TCSETA; |
787 | unsigned IOCTL_TCSETAF = TCSETAF; |
788 | unsigned IOCTL_TCSETAW = TCSETAW; |
789 | unsigned IOCTL_TCSETS = TCSETS; |
790 | unsigned IOCTL_TCSETSF = TCSETSF; |
791 | unsigned IOCTL_TCSETSW = TCSETSW; |
792 | unsigned IOCTL_TCXONC = TCXONC; |
793 | unsigned IOCTL_TIOCGLCKTRMIOS = TIOCGLCKTRMIOS; |
794 | unsigned IOCTL_TIOCGSOFTCAR = TIOCGSOFTCAR; |
795 | unsigned IOCTL_TIOCINQ = TIOCINQ; |
796 | unsigned IOCTL_TIOCLINUX = TIOCLINUX; |
797 | unsigned IOCTL_TIOCSERCONFIG = TIOCSERCONFIG; |
798 | unsigned IOCTL_TIOCSERGETLSR = TIOCSERGETLSR; |
799 | unsigned IOCTL_TIOCSERGWILD = TIOCSERGWILD; |
800 | unsigned IOCTL_TIOCSERSWILD = TIOCSERSWILD; |
801 | unsigned IOCTL_TIOCSLCKTRMIOS = TIOCSLCKTRMIOS; |
802 | unsigned IOCTL_TIOCSSOFTCAR = TIOCSSOFTCAR; |
803 | unsigned IOCTL_VT_DISALLOCATE = VT_DISALLOCATE; |
804 | unsigned IOCTL_VT_GETSTATE = VT_GETSTATE; |
805 | unsigned IOCTL_VT_RESIZE = VT_RESIZE; |
806 | unsigned IOCTL_VT_RESIZEX = VT_RESIZEX; |
807 | unsigned IOCTL_VT_SENDSIG = VT_SENDSIG; |
808 | unsigned IOCTL_MTIOCGET = MTIOCGET; |
809 | unsigned IOCTL_MTIOCTOP = MTIOCTOP; |
810 | unsigned IOCTL_SNDCTL_DSP_GETBLKSIZE = SNDCTL_DSP_GETBLKSIZE; |
811 | unsigned IOCTL_SNDCTL_DSP_GETFMTS = SNDCTL_DSP_GETFMTS; |
812 | unsigned IOCTL_SNDCTL_DSP_NONBLOCK = SNDCTL_DSP_NONBLOCK; |
813 | unsigned IOCTL_SNDCTL_DSP_POST = SNDCTL_DSP_POST; |
814 | unsigned IOCTL_SNDCTL_DSP_RESET = SNDCTL_DSP_RESET; |
815 | unsigned IOCTL_SNDCTL_DSP_SETFMT = SNDCTL_DSP_SETFMT; |
816 | unsigned IOCTL_SNDCTL_DSP_SETFRAGMENT = SNDCTL_DSP_SETFRAGMENT; |
817 | unsigned IOCTL_SNDCTL_DSP_SPEED = SNDCTL_DSP_SPEED; |
818 | unsigned IOCTL_SNDCTL_DSP_STEREO = SNDCTL_DSP_STEREO; |
819 | unsigned IOCTL_SNDCTL_DSP_SUBDIVIDE = SNDCTL_DSP_SUBDIVIDE; |
820 | unsigned IOCTL_SNDCTL_DSP_SYNC = SNDCTL_DSP_SYNC; |
821 | unsigned IOCTL_SNDCTL_FM_4OP_ENABLE = SNDCTL_FM_4OP_ENABLE; |
822 | unsigned IOCTL_SNDCTL_FM_LOAD_INSTR = SNDCTL_FM_LOAD_INSTR; |
823 | unsigned IOCTL_SNDCTL_MIDI_INFO = SNDCTL_MIDI_INFO; |
824 | unsigned IOCTL_SNDCTL_MIDI_PRETIME = SNDCTL_MIDI_PRETIME; |
825 | unsigned IOCTL_SNDCTL_SEQ_CTRLRATE = SNDCTL_SEQ_CTRLRATE; |
826 | unsigned IOCTL_SNDCTL_SEQ_GETINCOUNT = SNDCTL_SEQ_GETINCOUNT; |
827 | unsigned IOCTL_SNDCTL_SEQ_GETOUTCOUNT = SNDCTL_SEQ_GETOUTCOUNT; |
828 | unsigned IOCTL_SNDCTL_SEQ_NRMIDIS = SNDCTL_SEQ_NRMIDIS; |
829 | unsigned IOCTL_SNDCTL_SEQ_NRSYNTHS = SNDCTL_SEQ_NRSYNTHS; |
830 | unsigned IOCTL_SNDCTL_SEQ_OUTOFBAND = SNDCTL_SEQ_OUTOFBAND; |
831 | unsigned IOCTL_SNDCTL_SEQ_PANIC = SNDCTL_SEQ_PANIC; |
832 | unsigned IOCTL_SNDCTL_SEQ_PERCMODE = SNDCTL_SEQ_PERCMODE; |
833 | unsigned IOCTL_SNDCTL_SEQ_RESET = SNDCTL_SEQ_RESET; |
834 | unsigned IOCTL_SNDCTL_SEQ_RESETSAMPLES = SNDCTL_SEQ_RESETSAMPLES; |
835 | unsigned IOCTL_SNDCTL_SEQ_SYNC = SNDCTL_SEQ_SYNC; |
836 | unsigned IOCTL_SNDCTL_SEQ_TESTMIDI = SNDCTL_SEQ_TESTMIDI; |
837 | unsigned IOCTL_SNDCTL_SEQ_THRESHOLD = SNDCTL_SEQ_THRESHOLD; |
838 | unsigned IOCTL_SNDCTL_SYNTH_INFO = SNDCTL_SYNTH_INFO; |
839 | unsigned IOCTL_SNDCTL_SYNTH_MEMAVL = SNDCTL_SYNTH_MEMAVL; |
840 | unsigned IOCTL_SNDCTL_TMR_CONTINUE = SNDCTL_TMR_CONTINUE; |
841 | unsigned IOCTL_SNDCTL_TMR_METRONOME = SNDCTL_TMR_METRONOME; |
842 | unsigned IOCTL_SNDCTL_TMR_SELECT = SNDCTL_TMR_SELECT; |
843 | unsigned IOCTL_SNDCTL_TMR_SOURCE = SNDCTL_TMR_SOURCE; |
844 | unsigned IOCTL_SNDCTL_TMR_START = SNDCTL_TMR_START; |
845 | unsigned IOCTL_SNDCTL_TMR_STOP = SNDCTL_TMR_STOP; |
846 | unsigned IOCTL_SNDCTL_TMR_TEMPO = SNDCTL_TMR_TEMPO; |
847 | unsigned IOCTL_SNDCTL_TMR_TIMEBASE = SNDCTL_TMR_TIMEBASE; |
848 | unsigned IOCTL_SOUND_MIXER_READ_ALTPCM = SOUND_MIXER_READ_ALTPCM; |
849 | unsigned IOCTL_SOUND_MIXER_READ_BASS = SOUND_MIXER_READ_BASS; |
850 | unsigned IOCTL_SOUND_MIXER_READ_CAPS = SOUND_MIXER_READ_CAPS; |
851 | unsigned IOCTL_SOUND_MIXER_READ_CD = SOUND_MIXER_READ_CD; |
852 | unsigned IOCTL_SOUND_MIXER_READ_DEVMASK = SOUND_MIXER_READ_DEVMASK; |
853 | unsigned IOCTL_SOUND_MIXER_READ_ENHANCE = SOUND_MIXER_READ_ENHANCE; |
854 | unsigned IOCTL_SOUND_MIXER_READ_IGAIN = SOUND_MIXER_READ_IGAIN; |
855 | unsigned IOCTL_SOUND_MIXER_READ_IMIX = SOUND_MIXER_READ_IMIX; |
856 | unsigned IOCTL_SOUND_MIXER_READ_LINE = SOUND_MIXER_READ_LINE; |
857 | unsigned IOCTL_SOUND_MIXER_READ_LINE1 = SOUND_MIXER_READ_LINE1; |
858 | unsigned IOCTL_SOUND_MIXER_READ_LINE2 = SOUND_MIXER_READ_LINE2; |
859 | unsigned IOCTL_SOUND_MIXER_READ_LINE3 = SOUND_MIXER_READ_LINE3; |
860 | unsigned IOCTL_SOUND_MIXER_READ_LOUD = SOUND_MIXER_READ_LOUD; |
861 | unsigned IOCTL_SOUND_MIXER_READ_MIC = SOUND_MIXER_READ_MIC; |
862 | unsigned IOCTL_SOUND_MIXER_READ_MUTE = SOUND_MIXER_READ_MUTE; |
863 | unsigned IOCTL_SOUND_MIXER_READ_OGAIN = SOUND_MIXER_READ_OGAIN; |
864 | unsigned IOCTL_SOUND_MIXER_READ_PCM = SOUND_MIXER_READ_PCM; |
865 | unsigned IOCTL_SOUND_MIXER_READ_RECLEV = SOUND_MIXER_READ_RECLEV; |
866 | unsigned IOCTL_SOUND_MIXER_READ_RECMASK = SOUND_MIXER_READ_RECMASK; |
867 | unsigned IOCTL_SOUND_MIXER_READ_RECSRC = SOUND_MIXER_READ_RECSRC; |
868 | unsigned IOCTL_SOUND_MIXER_READ_SPEAKER = SOUND_MIXER_READ_SPEAKER; |
869 | unsigned IOCTL_SOUND_MIXER_READ_STEREODEVS = SOUND_MIXER_READ_STEREODEVS; |
870 | unsigned IOCTL_SOUND_MIXER_READ_SYNTH = SOUND_MIXER_READ_SYNTH; |
871 | unsigned IOCTL_SOUND_MIXER_READ_TREBLE = SOUND_MIXER_READ_TREBLE; |
872 | unsigned IOCTL_SOUND_MIXER_READ_VOLUME = SOUND_MIXER_READ_VOLUME; |
873 | unsigned IOCTL_SOUND_MIXER_WRITE_ALTPCM = SOUND_MIXER_WRITE_ALTPCM; |
874 | unsigned IOCTL_SOUND_MIXER_WRITE_BASS = SOUND_MIXER_WRITE_BASS; |
875 | unsigned IOCTL_SOUND_MIXER_WRITE_CD = SOUND_MIXER_WRITE_CD; |
876 | unsigned IOCTL_SOUND_MIXER_WRITE_ENHANCE = SOUND_MIXER_WRITE_ENHANCE; |
877 | unsigned IOCTL_SOUND_MIXER_WRITE_IGAIN = SOUND_MIXER_WRITE_IGAIN; |
878 | unsigned IOCTL_SOUND_MIXER_WRITE_IMIX = SOUND_MIXER_WRITE_IMIX; |
879 | unsigned IOCTL_SOUND_MIXER_WRITE_LINE = SOUND_MIXER_WRITE_LINE; |
880 | unsigned IOCTL_SOUND_MIXER_WRITE_LINE1 = SOUND_MIXER_WRITE_LINE1; |
881 | unsigned IOCTL_SOUND_MIXER_WRITE_LINE2 = SOUND_MIXER_WRITE_LINE2; |
882 | unsigned IOCTL_SOUND_MIXER_WRITE_LINE3 = SOUND_MIXER_WRITE_LINE3; |
883 | unsigned IOCTL_SOUND_MIXER_WRITE_LOUD = SOUND_MIXER_WRITE_LOUD; |
884 | unsigned IOCTL_SOUND_MIXER_WRITE_MIC = SOUND_MIXER_WRITE_MIC; |
885 | unsigned IOCTL_SOUND_MIXER_WRITE_MUTE = SOUND_MIXER_WRITE_MUTE; |
886 | unsigned IOCTL_SOUND_MIXER_WRITE_OGAIN = SOUND_MIXER_WRITE_OGAIN; |
887 | unsigned IOCTL_SOUND_MIXER_WRITE_PCM = SOUND_MIXER_WRITE_PCM; |
888 | unsigned IOCTL_SOUND_MIXER_WRITE_RECLEV = SOUND_MIXER_WRITE_RECLEV; |
889 | unsigned IOCTL_SOUND_MIXER_WRITE_RECSRC = SOUND_MIXER_WRITE_RECSRC; |
890 | unsigned IOCTL_SOUND_MIXER_WRITE_SPEAKER = SOUND_MIXER_WRITE_SPEAKER; |
891 | unsigned IOCTL_SOUND_MIXER_WRITE_SYNTH = SOUND_MIXER_WRITE_SYNTH; |
892 | unsigned IOCTL_SOUND_MIXER_WRITE_TREBLE = SOUND_MIXER_WRITE_TREBLE; |
893 | unsigned IOCTL_SOUND_MIXER_WRITE_VOLUME = SOUND_MIXER_WRITE_VOLUME; |
894 | unsigned IOCTL_VT_ACTIVATE = VT_ACTIVATE; |
895 | unsigned IOCTL_VT_GETMODE = VT_GETMODE; |
896 | unsigned IOCTL_VT_OPENQRY = VT_OPENQRY; |
897 | unsigned IOCTL_VT_RELDISP = VT_RELDISP; |
898 | unsigned IOCTL_VT_SETMODE = VT_SETMODE; |
899 | unsigned IOCTL_VT_WAITACTIVE = VT_WAITACTIVE; |
900 | #endif // SANITIZER_LINUX |
901 | |
902 | #if SANITIZER_LINUX && !SANITIZER_ANDROID |
903 | unsigned IOCTL_EQL_EMANCIPATE = EQL_EMANCIPATE; |
904 | unsigned IOCTL_EQL_ENSLAVE = EQL_ENSLAVE; |
905 | unsigned IOCTL_EQL_GETMASTRCFG = EQL_GETMASTRCFG; |
906 | unsigned IOCTL_EQL_GETSLAVECFG = EQL_GETSLAVECFG; |
907 | unsigned IOCTL_EQL_SETMASTRCFG = EQL_SETMASTRCFG; |
908 | unsigned IOCTL_EQL_SETSLAVECFG = EQL_SETSLAVECFG; |
909 | #if EV_VERSION > (0x010000) |
910 | unsigned IOCTL_EVIOCGKEYCODE_V2 = EVIOCGKEYCODE_V2; |
911 | unsigned IOCTL_EVIOCGPROP = EVIOCGPROP(0); |
912 | unsigned IOCTL_EVIOCSKEYCODE_V2 = EVIOCSKEYCODE_V2; |
913 | #else |
914 | unsigned IOCTL_EVIOCGKEYCODE_V2 = IOCTL_NOT_PRESENT; |
915 | unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT; |
916 | unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT; |
917 | #endif |
918 | unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long); |
919 | unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long); |
920 | unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long); |
921 | unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long); |
922 | unsigned IOCTL_GIO_CMAP = GIO_CMAP; |
923 | unsigned IOCTL_GIO_FONT = GIO_FONT; |
924 | unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP; |
925 | unsigned IOCTL_GIO_UNISCRNMAP = GIO_UNISCRNMAP; |
926 | unsigned IOCTL_KDADDIO = KDADDIO; |
927 | unsigned IOCTL_KDDELIO = KDDELIO; |
928 | unsigned IOCTL_KDGETKEYCODE = KDGETKEYCODE; |
929 | unsigned IOCTL_KDGKBDIACR = KDGKBDIACR; |
930 | unsigned IOCTL_KDGKBENT = KDGKBENT; |
931 | unsigned IOCTL_KDGKBLED = KDGKBLED; |
932 | unsigned IOCTL_KDGKBMETA = KDGKBMETA; |
933 | unsigned IOCTL_KDGKBSENT = KDGKBSENT; |
934 | unsigned IOCTL_KDMAPDISP = KDMAPDISP; |
935 | unsigned IOCTL_KDSETKEYCODE = KDSETKEYCODE; |
936 | unsigned IOCTL_KDSIGACCEPT = KDSIGACCEPT; |
937 | unsigned IOCTL_KDSKBDIACR = KDSKBDIACR; |
938 | unsigned IOCTL_KDSKBENT = KDSKBENT; |
939 | unsigned IOCTL_KDSKBLED = KDSKBLED; |
940 | unsigned IOCTL_KDSKBMETA = KDSKBMETA; |
941 | unsigned IOCTL_KDSKBSENT = KDSKBSENT; |
942 | unsigned IOCTL_KDUNMAPDISP = KDUNMAPDISP; |
943 | unsigned IOCTL_LPABORT = LPABORT; |
944 | unsigned IOCTL_LPABORTOPEN = LPABORTOPEN; |
945 | unsigned IOCTL_LPCAREFUL = LPCAREFUL; |
946 | unsigned IOCTL_LPCHAR = LPCHAR; |
947 | unsigned IOCTL_LPGETIRQ = LPGETIRQ; |
948 | unsigned IOCTL_LPGETSTATUS = LPGETSTATUS; |
949 | unsigned IOCTL_LPRESET = LPRESET; |
950 | unsigned IOCTL_LPSETIRQ = LPSETIRQ; |
951 | unsigned IOCTL_LPTIME = LPTIME; |
952 | unsigned IOCTL_LPWAIT = LPWAIT; |
953 | unsigned IOCTL_MTIOCGETCONFIG = MTIOCGETCONFIG; |
954 | unsigned IOCTL_MTIOCSETCONFIG = MTIOCSETCONFIG; |
955 | unsigned IOCTL_PIO_CMAP = PIO_CMAP; |
956 | unsigned IOCTL_PIO_FONT = PIO_FONT; |
957 | unsigned IOCTL_PIO_UNIMAP = PIO_UNIMAP; |
958 | unsigned IOCTL_PIO_UNIMAPCLR = PIO_UNIMAPCLR; |
959 | unsigned IOCTL_PIO_UNISCRNMAP = PIO_UNISCRNMAP; |
960 | #if SANITIZER_GLIBC |
961 | unsigned IOCTL_SCSI_IOCTL_GET_IDLUN = SCSI_IOCTL_GET_IDLUN; |
962 | unsigned IOCTL_SCSI_IOCTL_PROBE_HOST = SCSI_IOCTL_PROBE_HOST; |
963 | unsigned IOCTL_SCSI_IOCTL_TAGGED_DISABLE = SCSI_IOCTL_TAGGED_DISABLE; |
964 | unsigned IOCTL_SCSI_IOCTL_TAGGED_ENABLE = SCSI_IOCTL_TAGGED_ENABLE; |
965 | unsigned IOCTL_SIOCAIPXITFCRT = SIOCAIPXITFCRT; |
966 | unsigned IOCTL_SIOCAIPXPRISLT = SIOCAIPXPRISLT; |
967 | unsigned IOCTL_SIOCAX25ADDUID = SIOCAX25ADDUID; |
968 | unsigned IOCTL_SIOCAX25DELUID = SIOCAX25DELUID; |
969 | unsigned IOCTL_SIOCAX25GETPARMS = SIOCAX25GETPARMS; |
970 | unsigned IOCTL_SIOCAX25GETUID = SIOCAX25GETUID; |
971 | unsigned IOCTL_SIOCAX25NOUID = SIOCAX25NOUID; |
972 | unsigned IOCTL_SIOCAX25SETPARMS = SIOCAX25SETPARMS; |
973 | unsigned IOCTL_SIOCDEVPLIP = SIOCDEVPLIP; |
974 | unsigned IOCTL_SIOCIPXCFGDATA = SIOCIPXCFGDATA; |
975 | unsigned IOCTL_SIOCNRDECOBS = SIOCNRDECOBS; |
976 | unsigned IOCTL_SIOCNRGETPARMS = SIOCNRGETPARMS; |
977 | unsigned IOCTL_SIOCNRRTCTL = SIOCNRRTCTL; |
978 | unsigned IOCTL_SIOCNRSETPARMS = SIOCNRSETPARMS; |
979 | #endif |
980 | unsigned IOCTL_TIOCGSERIAL = TIOCGSERIAL; |
981 | unsigned IOCTL_TIOCSERGETMULTI = TIOCSERGETMULTI; |
982 | unsigned IOCTL_TIOCSERSETMULTI = TIOCSERSETMULTI; |
983 | unsigned IOCTL_TIOCSSERIAL = TIOCSSERIAL; |
984 | #endif // SANITIZER_LINUX && !SANITIZER_ANDROID |
985 | |
986 | #if SANITIZER_LINUX && !SANITIZER_ANDROID |
987 | unsigned IOCTL_GIO_SCRNMAP = GIO_SCRNMAP; |
988 | unsigned IOCTL_KDDISABIO = KDDISABIO; |
989 | unsigned IOCTL_KDENABIO = KDENABIO; |
990 | unsigned IOCTL_KDGETLED = KDGETLED; |
991 | unsigned IOCTL_KDGETMODE = KDGETMODE; |
992 | unsigned IOCTL_KDGKBMODE = KDGKBMODE; |
993 | unsigned IOCTL_KDGKBTYPE = KDGKBTYPE; |
994 | unsigned IOCTL_KDMKTONE = KDMKTONE; |
995 | unsigned IOCTL_KDSETLED = KDSETLED; |
996 | unsigned IOCTL_KDSETMODE = KDSETMODE; |
997 | unsigned IOCTL_KDSKBMODE = KDSKBMODE; |
998 | unsigned IOCTL_KIOCSOUND = KIOCSOUND; |
999 | unsigned IOCTL_PIO_SCRNMAP = PIO_SCRNMAP; |
1000 | unsigned IOCTL_SNDCTL_DSP_GETISPACE = SNDCTL_DSP_GETISPACE; |
1001 | unsigned IOCTL_SNDCTL_DSP_GETOSPACE = SNDCTL_DSP_GETOSPACE; |
1002 | #endif // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID |
1003 | |
1004 | const int si_SEGV_MAPERR = SEGV_MAPERR; |
1005 | const int si_SEGV_ACCERR = SEGV_ACCERR; |
1006 | } // namespace __sanitizer |
1007 | |
1008 | using namespace __sanitizer; |
1009 | |
1010 | COMPILER_CHECK(sizeof(__sanitizer_pthread_attr_t) >= sizeof(pthread_attr_t)); |
1011 | |
1012 | COMPILER_CHECK(sizeof(socklen_t) == sizeof(unsigned)); |
1013 | CHECK_TYPE_SIZE(pthread_key_t); |
1014 | |
1015 | #if SANITIZER_LINUX |
1016 | // FIXME: We define those on Linux and Mac, but only check on Linux. |
1017 | COMPILER_CHECK(IOC_NRBITS == _IOC_NRBITS); |
1018 | COMPILER_CHECK(IOC_TYPEBITS == _IOC_TYPEBITS); |
1019 | COMPILER_CHECK(IOC_SIZEBITS == _IOC_SIZEBITS); |
1020 | COMPILER_CHECK(IOC_DIRBITS == _IOC_DIRBITS); |
1021 | COMPILER_CHECK(IOC_NRMASK == _IOC_NRMASK); |
1022 | COMPILER_CHECK(IOC_TYPEMASK == _IOC_TYPEMASK); |
1023 | COMPILER_CHECK(IOC_SIZEMASK == _IOC_SIZEMASK); |
1024 | COMPILER_CHECK(IOC_DIRMASK == _IOC_DIRMASK); |
1025 | COMPILER_CHECK(IOC_NRSHIFT == _IOC_NRSHIFT); |
1026 | COMPILER_CHECK(IOC_TYPESHIFT == _IOC_TYPESHIFT); |
1027 | COMPILER_CHECK(IOC_SIZESHIFT == _IOC_SIZESHIFT); |
1028 | COMPILER_CHECK(IOC_DIRSHIFT == _IOC_DIRSHIFT); |
1029 | COMPILER_CHECK(IOC_NONE == _IOC_NONE); |
1030 | COMPILER_CHECK(IOC_WRITE == _IOC_WRITE); |
1031 | COMPILER_CHECK(IOC_READ == _IOC_READ); |
1032 | COMPILER_CHECK(EVIOC_ABS_MAX == ABS_MAX); |
1033 | COMPILER_CHECK(EVIOC_EV_MAX == EV_MAX); |
1034 | COMPILER_CHECK(IOC_SIZE(0x12345678) == _IOC_SIZE(0x12345678)); |
1035 | COMPILER_CHECK(IOC_DIR(0x12345678) == _IOC_DIR(0x12345678)); |
1036 | COMPILER_CHECK(IOC_NR(0x12345678) == _IOC_NR(0x12345678)); |
1037 | COMPILER_CHECK(IOC_TYPE(0x12345678) == _IOC_TYPE(0x12345678)); |
1038 | #endif // SANITIZER_LINUX |
1039 | |
1040 | #if SANITIZER_LINUX || SANITIZER_FREEBSD |
1041 | // There are more undocumented fields in dl_phdr_info that we are not interested |
1042 | // in. |
1043 | COMPILER_CHECK(sizeof(__sanitizer_dl_phdr_info) <= sizeof(dl_phdr_info)); |
1044 | CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_addr); |
1045 | CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_name); |
1046 | CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_phdr); |
1047 | CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_phnum); |
1048 | #endif // SANITIZER_LINUX || SANITIZER_FREEBSD |
1049 | |
1050 | #if SANITIZER_GLIBC || SANITIZER_FREEBSD |
1051 | CHECK_TYPE_SIZE(glob_t); |
1052 | CHECK_SIZE_AND_OFFSET(glob_t, gl_pathc); |
1053 | CHECK_SIZE_AND_OFFSET(glob_t, gl_pathv); |
1054 | CHECK_SIZE_AND_OFFSET(glob_t, gl_offs); |
1055 | CHECK_SIZE_AND_OFFSET(glob_t, gl_flags); |
1056 | CHECK_SIZE_AND_OFFSET(glob_t, gl_closedir); |
1057 | CHECK_SIZE_AND_OFFSET(glob_t, gl_readdir); |
1058 | CHECK_SIZE_AND_OFFSET(glob_t, gl_opendir); |
1059 | CHECK_SIZE_AND_OFFSET(glob_t, gl_lstat); |
1060 | CHECK_SIZE_AND_OFFSET(glob_t, gl_stat); |
1061 | #endif // SANITIZER_GLIBC || SANITIZER_FREEBSD |
1062 | |
1063 | CHECK_TYPE_SIZE(addrinfo); |
1064 | CHECK_SIZE_AND_OFFSET(addrinfo, ai_flags); |
1065 | CHECK_SIZE_AND_OFFSET(addrinfo, ai_family); |
1066 | CHECK_SIZE_AND_OFFSET(addrinfo, ai_socktype); |
1067 | CHECK_SIZE_AND_OFFSET(addrinfo, ai_protocol); |
1068 | CHECK_SIZE_AND_OFFSET(addrinfo, ai_protocol); |
1069 | CHECK_SIZE_AND_OFFSET(addrinfo, ai_addrlen); |
1070 | CHECK_SIZE_AND_OFFSET(addrinfo, ai_canonname); |
1071 | CHECK_SIZE_AND_OFFSET(addrinfo, ai_addr); |
1072 | |
1073 | CHECK_TYPE_SIZE(hostent); |
1074 | CHECK_SIZE_AND_OFFSET(hostent, h_name); |
1075 | CHECK_SIZE_AND_OFFSET(hostent, h_aliases); |
1076 | CHECK_SIZE_AND_OFFSET(hostent, h_addrtype); |
1077 | CHECK_SIZE_AND_OFFSET(hostent, h_length); |
1078 | CHECK_SIZE_AND_OFFSET(hostent, h_addr_list); |
1079 | |
1080 | CHECK_TYPE_SIZE(iovec); |
1081 | CHECK_SIZE_AND_OFFSET(iovec, iov_base); |
1082 | CHECK_SIZE_AND_OFFSET(iovec, iov_len); |
1083 | |
1084 | // In POSIX, int msg_iovlen; socklen_t msg_controllen; socklen_t cmsg_len; but |
1085 | // many implementations don't conform to the standard. Since we pick the |
1086 | // non-conforming glibc definition, exclude the checks for musl (incompatible |
1087 | // sizes but compatible offsets). |
1088 | CHECK_TYPE_SIZE(msghdr); |
1089 | CHECK_SIZE_AND_OFFSET(msghdr, msg_name); |
1090 | CHECK_SIZE_AND_OFFSET(msghdr, msg_namelen); |
1091 | CHECK_SIZE_AND_OFFSET(msghdr, msg_iov); |
1092 | #if SANITIZER_GLIBC || SANITIZER_ANDROID |
1093 | CHECK_SIZE_AND_OFFSET(msghdr, msg_iovlen); |
1094 | #endif |
1095 | CHECK_SIZE_AND_OFFSET(msghdr, msg_control); |
1096 | #if SANITIZER_GLIBC || SANITIZER_ANDROID |
1097 | CHECK_SIZE_AND_OFFSET(msghdr, msg_controllen); |
1098 | #endif |
1099 | CHECK_SIZE_AND_OFFSET(msghdr, msg_flags); |
1100 | |
1101 | CHECK_TYPE_SIZE(cmsghdr); |
1102 | #if SANITIZER_GLIBC || SANITIZER_ANDROID |
1103 | CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_len); |
1104 | #endif |
1105 | CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_level); |
1106 | CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_type); |
1107 | |
1108 | # if SANITIZER_LINUX && (SANITIZER_ANDROID || __GLIBC_PREREQ(2, 14)) |
1109 | CHECK_TYPE_SIZE(mmsghdr); |
1110 | CHECK_SIZE_AND_OFFSET(mmsghdr, msg_hdr); |
1111 | CHECK_SIZE_AND_OFFSET(mmsghdr, msg_len); |
1112 | #endif |
1113 | |
1114 | COMPILER_CHECK(sizeof(__sanitizer_dirent) <= sizeof(dirent)); |
1115 | CHECK_SIZE_AND_OFFSET(dirent, d_ino); |
1116 | #if SANITIZER_APPLE |
1117 | CHECK_SIZE_AND_OFFSET(dirent, d_seekoff); |
1118 | #elif SANITIZER_FREEBSD || SANITIZER_HAIKU |
1119 | // There is no 'd_off' field on FreeBSD. |
1120 | #else |
1121 | CHECK_SIZE_AND_OFFSET(dirent, d_off); |
1122 | #endif |
1123 | CHECK_SIZE_AND_OFFSET(dirent, d_reclen); |
1124 | |
1125 | #if SANITIZER_GLIBC |
1126 | COMPILER_CHECK(sizeof(__sanitizer_dirent64) <= sizeof(dirent64)); |
1127 | CHECK_SIZE_AND_OFFSET(dirent64, d_ino); |
1128 | CHECK_SIZE_AND_OFFSET(dirent64, d_off); |
1129 | CHECK_SIZE_AND_OFFSET(dirent64, d_reclen); |
1130 | #endif |
1131 | |
1132 | CHECK_TYPE_SIZE(ifconf); |
1133 | CHECK_SIZE_AND_OFFSET(ifconf, ifc_len); |
1134 | #if !SANITIZER_HAIKU |
1135 | CHECK_SIZE_AND_OFFSET(ifconf, ifc_ifcu); |
1136 | #endif |
1137 | |
1138 | CHECK_TYPE_SIZE(pollfd); |
1139 | CHECK_SIZE_AND_OFFSET(pollfd, fd); |
1140 | CHECK_SIZE_AND_OFFSET(pollfd, events); |
1141 | CHECK_SIZE_AND_OFFSET(pollfd, revents); |
1142 | |
1143 | CHECK_TYPE_SIZE(nfds_t); |
1144 | |
1145 | CHECK_TYPE_SIZE(sigset_t); |
1146 | |
1147 | COMPILER_CHECK(sizeof(__sanitizer_sigaction) == sizeof(struct sigaction)); |
1148 | // Can't write checks for sa_handler and sa_sigaction due to them being |
1149 | // preprocessor macros. |
1150 | CHECK_STRUCT_SIZE_AND_OFFSET(sigaction, sa_mask); |
1151 | #if !defined(__s390x__) || __GLIBC_PREREQ (2, 20) |
1152 | // On s390x glibc 2.19 and earlier sa_flags was unsigned long, and sa_resv |
1153 | // didn't exist. |
1154 | CHECK_STRUCT_SIZE_AND_OFFSET(sigaction, sa_flags); |
1155 | #endif |
1156 | #if SANITIZER_LINUX && (!SANITIZER_ANDROID || !SANITIZER_MIPS32) |
1157 | CHECK_STRUCT_SIZE_AND_OFFSET(sigaction, sa_restorer); |
1158 | #endif |
1159 | |
1160 | #if SANITIZER_HAS_SIGINFO |
1161 | COMPILER_CHECK(alignof(siginfo_t) == alignof(__sanitizer_siginfo)); |
1162 | using __sanitizer_siginfo_t = __sanitizer_siginfo; |
1163 | CHECK_TYPE_SIZE(siginfo_t); |
1164 | CHECK_SIZE_AND_OFFSET(siginfo_t, si_signo); |
1165 | CHECK_SIZE_AND_OFFSET(siginfo_t, si_errno); |
1166 | CHECK_SIZE_AND_OFFSET(siginfo_t, si_code); |
1167 | #endif |
1168 | |
1169 | #if SANITIZER_LINUX |
1170 | CHECK_TYPE_SIZE(__sysctl_args); |
1171 | CHECK_SIZE_AND_OFFSET(__sysctl_args, name); |
1172 | CHECK_SIZE_AND_OFFSET(__sysctl_args, nlen); |
1173 | CHECK_SIZE_AND_OFFSET(__sysctl_args, oldval); |
1174 | CHECK_SIZE_AND_OFFSET(__sysctl_args, oldlenp); |
1175 | CHECK_SIZE_AND_OFFSET(__sysctl_args, newval); |
1176 | CHECK_SIZE_AND_OFFSET(__sysctl_args, newlen); |
1177 | |
1178 | CHECK_TYPE_SIZE(__kernel_uid_t); |
1179 | CHECK_TYPE_SIZE(__kernel_gid_t); |
1180 | |
1181 | #if SANITIZER_USES_UID16_SYSCALLS |
1182 | CHECK_TYPE_SIZE(__kernel_old_uid_t); |
1183 | CHECK_TYPE_SIZE(__kernel_old_gid_t); |
1184 | #endif |
1185 | |
1186 | CHECK_TYPE_SIZE(__kernel_off_t); |
1187 | CHECK_TYPE_SIZE(__kernel_loff_t); |
1188 | CHECK_TYPE_SIZE(__kernel_fd_set); |
1189 | #endif |
1190 | |
1191 | #if !SANITIZER_ANDROID && !SANITIZER_HAIKU |
1192 | CHECK_TYPE_SIZE(wordexp_t); |
1193 | CHECK_SIZE_AND_OFFSET(wordexp_t, we_wordc); |
1194 | CHECK_SIZE_AND_OFFSET(wordexp_t, we_wordv); |
1195 | CHECK_SIZE_AND_OFFSET(wordexp_t, we_offs); |
1196 | #endif |
1197 | |
1198 | CHECK_TYPE_SIZE(tm); |
1199 | CHECK_SIZE_AND_OFFSET(tm, tm_sec); |
1200 | CHECK_SIZE_AND_OFFSET(tm, tm_min); |
1201 | CHECK_SIZE_AND_OFFSET(tm, tm_hour); |
1202 | CHECK_SIZE_AND_OFFSET(tm, tm_mday); |
1203 | CHECK_SIZE_AND_OFFSET(tm, tm_mon); |
1204 | CHECK_SIZE_AND_OFFSET(tm, tm_year); |
1205 | CHECK_SIZE_AND_OFFSET(tm, tm_wday); |
1206 | CHECK_SIZE_AND_OFFSET(tm, tm_yday); |
1207 | CHECK_SIZE_AND_OFFSET(tm, tm_isdst); |
1208 | CHECK_SIZE_AND_OFFSET(tm, tm_gmtoff); |
1209 | CHECK_SIZE_AND_OFFSET(tm, tm_zone); |
1210 | |
1211 | #if SANITIZER_LINUX |
1212 | CHECK_TYPE_SIZE(mntent); |
1213 | CHECK_SIZE_AND_OFFSET(mntent, mnt_fsname); |
1214 | CHECK_SIZE_AND_OFFSET(mntent, mnt_dir); |
1215 | CHECK_SIZE_AND_OFFSET(mntent, mnt_type); |
1216 | CHECK_SIZE_AND_OFFSET(mntent, mnt_opts); |
1217 | CHECK_SIZE_AND_OFFSET(mntent, mnt_freq); |
1218 | CHECK_SIZE_AND_OFFSET(mntent, mnt_passno); |
1219 | #endif |
1220 | |
1221 | #if !SANITIZER_HAIKU |
1222 | CHECK_TYPE_SIZE(ether_addr); |
1223 | #endif |
1224 | |
1225 | #if SANITIZER_GLIBC || SANITIZER_FREEBSD |
1226 | CHECK_TYPE_SIZE(ipc_perm); |
1227 | # if SANITIZER_FREEBSD |
1228 | CHECK_SIZE_AND_OFFSET(ipc_perm, key); |
1229 | CHECK_SIZE_AND_OFFSET(ipc_perm, seq); |
1230 | # else |
1231 | CHECK_SIZE_AND_OFFSET(ipc_perm, __key); |
1232 | CHECK_SIZE_AND_OFFSET(ipc_perm, __seq); |
1233 | # endif |
1234 | CHECK_SIZE_AND_OFFSET(ipc_perm, uid); |
1235 | CHECK_SIZE_AND_OFFSET(ipc_perm, gid); |
1236 | CHECK_SIZE_AND_OFFSET(ipc_perm, cuid); |
1237 | CHECK_SIZE_AND_OFFSET(ipc_perm, cgid); |
1238 | #if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31) |
1239 | /* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit |
1240 | on many architectures. */ |
1241 | CHECK_SIZE_AND_OFFSET(ipc_perm, mode); |
1242 | #endif |
1243 | |
1244 | CHECK_TYPE_SIZE(shmid_ds); |
1245 | CHECK_SIZE_AND_OFFSET(shmid_ds, shm_perm); |
1246 | CHECK_SIZE_AND_OFFSET(shmid_ds, shm_segsz); |
1247 | CHECK_SIZE_AND_OFFSET(shmid_ds, shm_atime); |
1248 | CHECK_SIZE_AND_OFFSET(shmid_ds, shm_dtime); |
1249 | CHECK_SIZE_AND_OFFSET(shmid_ds, shm_ctime); |
1250 | CHECK_SIZE_AND_OFFSET(shmid_ds, shm_cpid); |
1251 | CHECK_SIZE_AND_OFFSET(shmid_ds, shm_lpid); |
1252 | CHECK_SIZE_AND_OFFSET(shmid_ds, shm_nattch); |
1253 | #endif |
1254 | |
1255 | CHECK_TYPE_SIZE(clock_t); |
1256 | |
1257 | #if SANITIZER_LINUX |
1258 | CHECK_TYPE_SIZE(clockid_t); |
1259 | #endif |
1260 | |
1261 | #if !SANITIZER_ANDROID && !SANITIZER_HAIKU |
1262 | CHECK_TYPE_SIZE(ifaddrs); |
1263 | CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_next); |
1264 | CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_name); |
1265 | CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_addr); |
1266 | CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_netmask); |
1267 | #if SANITIZER_LINUX || SANITIZER_FREEBSD |
1268 | // Compare against the union, because we can't reach into the union in a |
1269 | // compliant way. |
1270 | #ifdef ifa_dstaddr |
1271 | #undef ifa_dstaddr |
1272 | #endif |
1273 | # if SANITIZER_FREEBSD |
1274 | CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_dstaddr); |
1275 | # else |
1276 | COMPILER_CHECK(sizeof(((__sanitizer_ifaddrs *)nullptr)->ifa_dstaddr) == |
1277 | sizeof(((ifaddrs *)nullptr)->ifa_ifu)); |
1278 | COMPILER_CHECK(offsetof(__sanitizer_ifaddrs, ifa_dstaddr) == |
1279 | offsetof(ifaddrs, ifa_ifu)); |
1280 | # endif // SANITIZER_FREEBSD |
1281 | #else |
1282 | CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_dstaddr); |
1283 | #endif // SANITIZER_LINUX |
1284 | CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_data); |
1285 | #endif |
1286 | |
1287 | #if SANITIZER_GLIBC || SANITIZER_ANDROID |
1288 | COMPILER_CHECK(sizeof(__sanitizer_struct_mallinfo) == sizeof(struct mallinfo)); |
1289 | #endif |
1290 | |
1291 | #if !SANITIZER_ANDROID |
1292 | CHECK_TYPE_SIZE(timeb); |
1293 | CHECK_SIZE_AND_OFFSET(timeb, time); |
1294 | CHECK_SIZE_AND_OFFSET(timeb, millitm); |
1295 | CHECK_SIZE_AND_OFFSET(timeb, timezone); |
1296 | CHECK_SIZE_AND_OFFSET(timeb, dstflag); |
1297 | #endif |
1298 | |
1299 | CHECK_TYPE_SIZE(passwd); |
1300 | CHECK_SIZE_AND_OFFSET(passwd, pw_name); |
1301 | CHECK_SIZE_AND_OFFSET(passwd, pw_passwd); |
1302 | CHECK_SIZE_AND_OFFSET(passwd, pw_uid); |
1303 | CHECK_SIZE_AND_OFFSET(passwd, pw_gid); |
1304 | CHECK_SIZE_AND_OFFSET(passwd, pw_dir); |
1305 | CHECK_SIZE_AND_OFFSET(passwd, pw_shell); |
1306 | |
1307 | #if !SANITIZER_ANDROID |
1308 | CHECK_SIZE_AND_OFFSET(passwd, pw_gecos); |
1309 | #endif |
1310 | |
1311 | #if SANITIZER_APPLE |
1312 | CHECK_SIZE_AND_OFFSET(passwd, pw_change); |
1313 | CHECK_SIZE_AND_OFFSET(passwd, pw_expire); |
1314 | CHECK_SIZE_AND_OFFSET(passwd, pw_class); |
1315 | #endif |
1316 | |
1317 | |
1318 | CHECK_TYPE_SIZE(group); |
1319 | CHECK_SIZE_AND_OFFSET(group, gr_name); |
1320 | CHECK_SIZE_AND_OFFSET(group, gr_passwd); |
1321 | CHECK_SIZE_AND_OFFSET(group, gr_gid); |
1322 | CHECK_SIZE_AND_OFFSET(group, gr_mem); |
1323 | |
1324 | #if HAVE_RPC_XDR_H && !SANITIZER_APPLE |
1325 | CHECK_TYPE_SIZE(XDR); |
1326 | CHECK_SIZE_AND_OFFSET(XDR, x_op); |
1327 | CHECK_SIZE_AND_OFFSET(XDR, x_ops); |
1328 | CHECK_SIZE_AND_OFFSET(XDR, x_public); |
1329 | CHECK_SIZE_AND_OFFSET(XDR, x_private); |
1330 | CHECK_SIZE_AND_OFFSET(XDR, x_base); |
1331 | CHECK_SIZE_AND_OFFSET(XDR, x_handy); |
1332 | COMPILER_CHECK(__sanitizer_XDR_ENCODE == XDR_ENCODE); |
1333 | COMPILER_CHECK(__sanitizer_XDR_DECODE == XDR_DECODE); |
1334 | COMPILER_CHECK(__sanitizer_XDR_FREE == XDR_FREE); |
1335 | #endif |
1336 | |
1337 | #if SANITIZER_GLIBC |
1338 | COMPILER_CHECK(sizeof(__sanitizer_FILE) <= sizeof(FILE)); |
1339 | CHECK_SIZE_AND_OFFSET(FILE, _flags); |
1340 | CHECK_SIZE_AND_OFFSET(FILE, _IO_read_ptr); |
1341 | CHECK_SIZE_AND_OFFSET(FILE, _IO_read_end); |
1342 | CHECK_SIZE_AND_OFFSET(FILE, _IO_read_base); |
1343 | CHECK_SIZE_AND_OFFSET(FILE, _IO_write_ptr); |
1344 | CHECK_SIZE_AND_OFFSET(FILE, _IO_write_end); |
1345 | CHECK_SIZE_AND_OFFSET(FILE, _IO_write_base); |
1346 | CHECK_SIZE_AND_OFFSET(FILE, _IO_buf_base); |
1347 | CHECK_SIZE_AND_OFFSET(FILE, _IO_buf_end); |
1348 | CHECK_SIZE_AND_OFFSET(FILE, _IO_save_base); |
1349 | CHECK_SIZE_AND_OFFSET(FILE, _IO_backup_base); |
1350 | CHECK_SIZE_AND_OFFSET(FILE, _IO_save_end); |
1351 | CHECK_SIZE_AND_OFFSET(FILE, _markers); |
1352 | CHECK_SIZE_AND_OFFSET(FILE, _chain); |
1353 | CHECK_SIZE_AND_OFFSET(FILE, _fileno); |
1354 | |
1355 | COMPILER_CHECK(sizeof(__sanitizer__obstack_chunk) <= sizeof(_obstack_chunk)); |
1356 | CHECK_SIZE_AND_OFFSET(_obstack_chunk, limit); |
1357 | CHECK_SIZE_AND_OFFSET(_obstack_chunk, prev); |
1358 | CHECK_TYPE_SIZE(obstack); |
1359 | CHECK_SIZE_AND_OFFSET(obstack, chunk_size); |
1360 | CHECK_SIZE_AND_OFFSET(obstack, chunk); |
1361 | CHECK_SIZE_AND_OFFSET(obstack, object_base); |
1362 | CHECK_SIZE_AND_OFFSET(obstack, next_free); |
1363 | |
1364 | CHECK_TYPE_SIZE(cookie_io_functions_t); |
1365 | CHECK_SIZE_AND_OFFSET(cookie_io_functions_t, read); |
1366 | CHECK_SIZE_AND_OFFSET(cookie_io_functions_t, write); |
1367 | CHECK_SIZE_AND_OFFSET(cookie_io_functions_t, seek); |
1368 | CHECK_SIZE_AND_OFFSET(cookie_io_functions_t, close); |
1369 | #endif // SANITIZER_GLIBC |
1370 | |
1371 | #if SANITIZER_LINUX || SANITIZER_FREEBSD |
1372 | CHECK_TYPE_SIZE(sem_t); |
1373 | #endif |
1374 | |
1375 | #if SANITIZER_LINUX && defined(__arm__) |
1376 | COMPILER_CHECK(ARM_VFPREGS_SIZE == ARM_VFPREGS_SIZE_ASAN); |
1377 | #endif |
1378 | |
1379 | #endif // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_APPLE |
1380 | |