]> git.ipfire.org Git - thirdparty/gcc.git/blame - libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.cpp
Fix formatting in rs6000.c.
[thirdparty/gcc.git] / libsanitizer / sanitizer_common / sanitizer_platform_limits_freebsd.cpp
CommitLineData
b667dd70 1//===-- sanitizer_platform_limits_freebsd.cpp -----------------------------===//
eac97531 2//
b667dd70
ML
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
eac97531
ML
6//
7//===----------------------------------------------------------------------===//
8//
9// This file is a part of Sanitizer common code.
10//
b667dd70 11// Sizes and layouts of platform-specific FreeBSD data structures.
eac97531
ML
12//===----------------------------------------------------------------------===//
13
14#include "sanitizer_platform.h"
15
b667dd70
ML
16#if SANITIZER_FREEBSD
17
3c6331c2
ML
18#include <sys/capsicum.h>
19#include <sys/consio.h>
20#include <sys/filio.h>
21#include <sys/ipc.h>
22#include <sys/kbio.h>
23#include <sys/link_elf.h>
24#include <sys/mman.h>
25#include <sys/mount.h>
26#include <sys/mqueue.h>
27#include <sys/msg.h>
28#include <sys/mtio.h>
29#include <sys/ptrace.h>
30#include <sys/resource.h>
31#include <sys/signal.h>
32#include <sys/socket.h>
33#include <sys/sockio.h>
34#include <sys/soundcard.h>
35#include <sys/stat.h>
36#include <sys/statvfs.h>
37#include <sys/time.h>
38#include <sys/timeb.h>
39#include <sys/times.h>
40#include <sys/timespec.h>
41#include <sys/types.h>
42#include <sys/ucontext.h>
43#include <sys/utsname.h>
44//
eac97531 45#include <arpa/inet.h>
3c6331c2
ML
46#include <net/ethernet.h>
47#include <net/if.h>
48#include <net/ppp_defs.h>
49#include <net/route.h>
50#include <netdb.h>
51#include <netinet/in.h>
52#include <netinet/ip_mroute.h>
53//
eac97531 54#include <dirent.h>
3c6331c2 55#include <dlfcn.h>
b667dd70 56#include <fstab.h>
3c6331c2
ML
57#include <fts.h>
58#include <glob.h>
eac97531 59#include <grp.h>
3c6331c2 60#include <ifaddrs.h>
eac97531 61#include <limits.h>
eac97531
ML
62#include <poll.h>
63#include <pthread.h>
64#include <pwd.h>
b667dd70 65#include <regex.h>
3c6331c2 66#include <semaphore.h>
eac97531
ML
67#include <signal.h>
68#include <stddef.h>
b667dd70
ML
69#include <stdio.h>
70#include <stringlist.h>
71#include <term.h>
3c6331c2
ML
72#include <termios.h>
73#include <time.h>
74#include <utime.h>
eac97531 75#include <utmpx.h>
b667dd70 76#include <vis.h>
3c6331c2
ML
77#include <wchar.h>
78#include <wordexp.h>
b667dd70
ML
79
80#define _KERNEL // to declare 'shminfo' structure
3c6331c2 81#include <sys/shm.h>
b667dd70
ML
82#undef _KERNEL
83
84#undef INLINE // to avoid clashes with sanitizers' definitions
85
86#undef IOC_DIRMASK
87
eac97531
ML
88// Include these after system headers to avoid name clashes and ambiguities.
89#include "sanitizer_internal_defs.h"
3c6331c2 90#include "sanitizer_libc.h"
b667dd70 91#include "sanitizer_platform_limits_freebsd.h"
eac97531
ML
92
93namespace __sanitizer {
3c6331c2
ML
94void *__sanitizer_get_link_map_by_dlopen_handle(void *handle) {
95 void *p = nullptr;
96 return internal_dlinfo(handle, RTLD_DI_LINKMAP, &p) == 0 ? p : nullptr;
97}
98
99unsigned struct_cap_rights_sz = sizeof(cap_rights_t);
100unsigned struct_utsname_sz = sizeof(struct utsname);
101unsigned struct_stat_sz = sizeof(struct stat);
102unsigned struct_rusage_sz = sizeof(struct rusage);
103unsigned struct_tm_sz = sizeof(struct tm);
104unsigned struct_passwd_sz = sizeof(struct passwd);
105unsigned struct_group_sz = sizeof(struct group);
106unsigned siginfo_t_sz = sizeof(siginfo_t);
107unsigned struct_sigaction_sz = sizeof(struct sigaction);
108unsigned struct_stack_t_sz = sizeof(stack_t);
109unsigned struct_itimerval_sz = sizeof(struct itimerval);
110unsigned pthread_t_sz = sizeof(pthread_t);
111unsigned pthread_mutex_t_sz = sizeof(pthread_mutex_t);
112unsigned pthread_cond_t_sz = sizeof(pthread_cond_t);
113unsigned pid_t_sz = sizeof(pid_t);
114unsigned timeval_sz = sizeof(timeval);
115unsigned uid_t_sz = sizeof(uid_t);
116unsigned gid_t_sz = sizeof(gid_t);
117unsigned fpos_t_sz = sizeof(fpos_t);
118unsigned mbstate_t_sz = sizeof(mbstate_t);
119unsigned sigset_t_sz = sizeof(sigset_t);
120unsigned struct_timezone_sz = sizeof(struct timezone);
121unsigned struct_tms_sz = sizeof(struct tms);
122unsigned struct_sigevent_sz = sizeof(struct sigevent);
123unsigned struct_sched_param_sz = sizeof(struct sched_param);
124unsigned struct_statfs_sz = sizeof(struct statfs);
125unsigned struct_sockaddr_sz = sizeof(struct sockaddr);
126unsigned ucontext_t_sz = sizeof(ucontext_t);
127unsigned struct_rlimit_sz = sizeof(struct rlimit);
128unsigned struct_timespec_sz = sizeof(struct timespec);
129unsigned struct_utimbuf_sz = sizeof(struct utimbuf);
130unsigned struct_itimerspec_sz = sizeof(struct itimerspec);
131unsigned struct_timeb_sz = sizeof(struct timeb);
132unsigned struct_msqid_ds_sz = sizeof(struct msqid_ds);
133unsigned struct_mq_attr_sz = sizeof(struct mq_attr);
134unsigned struct_statvfs_sz = sizeof(struct statvfs);
135unsigned struct_shminfo_sz = sizeof(struct shminfo);
136unsigned struct_shm_info_sz = sizeof(struct shm_info);
137unsigned struct_regmatch_sz = sizeof(regmatch_t);
138unsigned struct_regex_sz = sizeof(regex_t);
139unsigned struct_fstab_sz = sizeof(struct fstab);
140unsigned struct_FTS_sz = sizeof(FTS);
141unsigned struct_FTSENT_sz = sizeof(FTSENT);
142unsigned struct_StringList_sz = sizeof(StringList);
eac97531 143
3c6331c2
ML
144const uptr sig_ign = (uptr)SIG_IGN;
145const uptr sig_dfl = (uptr)SIG_DFL;
146const uptr sig_err = (uptr)SIG_ERR;
147const uptr sa_siginfo = (uptr)SA_SIGINFO;
eac97531 148
3c6331c2
ML
149int shmctl_ipc_stat = (int)IPC_STAT;
150int shmctl_ipc_info = (int)IPC_INFO;
151int shmctl_shm_info = (int)SHM_INFO;
152int shmctl_shm_stat = (int)SHM_STAT;
153unsigned struct_utmpx_sz = sizeof(struct utmpx);
eac97531 154
3c6331c2 155int map_fixed = MAP_FIXED;
eac97531 156
3c6331c2
ML
157int af_inet = (int)AF_INET;
158int af_inet6 = (int)AF_INET6;
eac97531 159
3c6331c2
ML
160uptr __sanitizer_in_addr_sz(int af) {
161 if (af == AF_INET)
162 return sizeof(struct in_addr);
163 else if (af == AF_INET6)
164 return sizeof(struct in6_addr);
165 else
166 return 0;
167}
eac97531 168
3c6331c2
ML
169unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
170int glob_nomatch = GLOB_NOMATCH;
171int glob_altdirfunc = GLOB_ALTDIRFUNC;
eac97531 172
3c6331c2 173unsigned path_max = PATH_MAX;
eac97531 174
3c6331c2
ML
175// ioctl arguments
176unsigned struct_ifreq_sz = sizeof(struct ifreq);
177unsigned struct_termios_sz = sizeof(struct termios);
178unsigned struct_winsize_sz = sizeof(struct winsize);
b667dd70 179#if SOUND_VERSION >= 0x040000
3c6331c2
ML
180unsigned struct_copr_buffer_sz = 0;
181unsigned struct_copr_debug_buf_sz = 0;
182unsigned struct_copr_msg_sz = 0;
b667dd70 183#else
3c6331c2
ML
184unsigned struct_copr_buffer_sz = sizeof(struct copr_buffer);
185unsigned struct_copr_debug_buf_sz = sizeof(struct copr_debug_buf);
186unsigned struct_copr_msg_sz = sizeof(struct copr_msg);
b667dd70 187#endif
3c6331c2
ML
188unsigned struct_midi_info_sz = sizeof(struct midi_info);
189unsigned struct_mtget_sz = sizeof(struct mtget);
190unsigned struct_mtop_sz = sizeof(struct mtop);
191unsigned struct_sbi_instrument_sz = sizeof(struct sbi_instrument);
192unsigned struct_seq_event_rec_sz = sizeof(struct seq_event_rec);
193unsigned struct_synth_info_sz = sizeof(struct synth_info);
194unsigned struct_audio_buf_info_sz = sizeof(struct audio_buf_info);
195unsigned struct_ppp_stats_sz = sizeof(struct ppp_stats);
196unsigned struct_sioc_sg_req_sz = sizeof(struct sioc_sg_req);
197unsigned struct_sioc_vif_req_sz = sizeof(struct sioc_vif_req);
198const unsigned long __sanitizer_bufsiz = BUFSIZ;
eac97531 199
3c6331c2 200const unsigned IOCTL_NOT_PRESENT = 0;
eac97531 201
3c6331c2
ML
202unsigned IOCTL_FIOASYNC = FIOASYNC;
203unsigned IOCTL_FIOCLEX = FIOCLEX;
204unsigned IOCTL_FIOGETOWN = FIOGETOWN;
205unsigned IOCTL_FIONBIO = FIONBIO;
206unsigned IOCTL_FIONCLEX = FIONCLEX;
207unsigned IOCTL_FIOSETOWN = FIOSETOWN;
208unsigned IOCTL_SIOCADDMULTI = SIOCADDMULTI;
209unsigned IOCTL_SIOCATMARK = SIOCATMARK;
210unsigned IOCTL_SIOCDELMULTI = SIOCDELMULTI;
211unsigned IOCTL_SIOCGIFADDR = SIOCGIFADDR;
212unsigned IOCTL_SIOCGIFBRDADDR = SIOCGIFBRDADDR;
213unsigned IOCTL_SIOCGIFCONF = SIOCGIFCONF;
214unsigned IOCTL_SIOCGIFDSTADDR = SIOCGIFDSTADDR;
215unsigned IOCTL_SIOCGIFFLAGS = SIOCGIFFLAGS;
216unsigned IOCTL_SIOCGIFMETRIC = SIOCGIFMETRIC;
217unsigned IOCTL_SIOCGIFMTU = SIOCGIFMTU;
218unsigned IOCTL_SIOCGIFNETMASK = SIOCGIFNETMASK;
219unsigned IOCTL_SIOCGPGRP = SIOCGPGRP;
220unsigned IOCTL_SIOCSIFADDR = SIOCSIFADDR;
221unsigned IOCTL_SIOCSIFBRDADDR = SIOCSIFBRDADDR;
222unsigned IOCTL_SIOCSIFDSTADDR = SIOCSIFDSTADDR;
223unsigned IOCTL_SIOCSIFFLAGS = SIOCSIFFLAGS;
224unsigned IOCTL_SIOCSIFMETRIC = SIOCSIFMETRIC;
225unsigned IOCTL_SIOCSIFMTU = SIOCSIFMTU;
226unsigned IOCTL_SIOCSIFNETMASK = SIOCSIFNETMASK;
227unsigned IOCTL_SIOCSPGRP = SIOCSPGRP;
228unsigned IOCTL_TIOCCONS = TIOCCONS;
229unsigned IOCTL_TIOCEXCL = TIOCEXCL;
230unsigned IOCTL_TIOCGETD = TIOCGETD;
231unsigned IOCTL_TIOCGPGRP = TIOCGPGRP;
232unsigned IOCTL_TIOCGWINSZ = TIOCGWINSZ;
233unsigned IOCTL_TIOCMBIC = TIOCMBIC;
234unsigned IOCTL_TIOCMBIS = TIOCMBIS;
235unsigned IOCTL_TIOCMGET = TIOCMGET;
236unsigned IOCTL_TIOCMSET = TIOCMSET;
237unsigned IOCTL_TIOCNOTTY = TIOCNOTTY;
238unsigned IOCTL_TIOCNXCL = TIOCNXCL;
239unsigned IOCTL_TIOCOUTQ = TIOCOUTQ;
240unsigned IOCTL_TIOCPKT = TIOCPKT;
241unsigned IOCTL_TIOCSCTTY = TIOCSCTTY;
242unsigned IOCTL_TIOCSETD = TIOCSETD;
243unsigned IOCTL_TIOCSPGRP = TIOCSPGRP;
244unsigned IOCTL_TIOCSTI = TIOCSTI;
245unsigned IOCTL_TIOCSWINSZ = TIOCSWINSZ;
246unsigned IOCTL_SIOCGETSGCNT = SIOCGETSGCNT;
247unsigned IOCTL_SIOCGETVIFCNT = SIOCGETVIFCNT;
248unsigned IOCTL_MTIOCGET = MTIOCGET;
249unsigned IOCTL_MTIOCTOP = MTIOCTOP;
250unsigned IOCTL_SNDCTL_DSP_GETBLKSIZE = SNDCTL_DSP_GETBLKSIZE;
251unsigned IOCTL_SNDCTL_DSP_GETFMTS = SNDCTL_DSP_GETFMTS;
252unsigned IOCTL_SNDCTL_DSP_NONBLOCK = SNDCTL_DSP_NONBLOCK;
253unsigned IOCTL_SNDCTL_DSP_POST = SNDCTL_DSP_POST;
254unsigned IOCTL_SNDCTL_DSP_RESET = SNDCTL_DSP_RESET;
255unsigned IOCTL_SNDCTL_DSP_SETFMT = SNDCTL_DSP_SETFMT;
256unsigned IOCTL_SNDCTL_DSP_SETFRAGMENT = SNDCTL_DSP_SETFRAGMENT;
257unsigned IOCTL_SNDCTL_DSP_SPEED = SNDCTL_DSP_SPEED;
258unsigned IOCTL_SNDCTL_DSP_STEREO = SNDCTL_DSP_STEREO;
259unsigned IOCTL_SNDCTL_DSP_SUBDIVIDE = SNDCTL_DSP_SUBDIVIDE;
260unsigned IOCTL_SNDCTL_DSP_SYNC = SNDCTL_DSP_SYNC;
261unsigned IOCTL_SNDCTL_FM_4OP_ENABLE = SNDCTL_FM_4OP_ENABLE;
262unsigned IOCTL_SNDCTL_FM_LOAD_INSTR = SNDCTL_FM_LOAD_INSTR;
263unsigned IOCTL_SNDCTL_MIDI_INFO = SNDCTL_MIDI_INFO;
264unsigned IOCTL_SNDCTL_MIDI_PRETIME = SNDCTL_MIDI_PRETIME;
265unsigned IOCTL_SNDCTL_SEQ_CTRLRATE = SNDCTL_SEQ_CTRLRATE;
266unsigned IOCTL_SNDCTL_SEQ_GETINCOUNT = SNDCTL_SEQ_GETINCOUNT;
267unsigned IOCTL_SNDCTL_SEQ_GETOUTCOUNT = SNDCTL_SEQ_GETOUTCOUNT;
268unsigned IOCTL_SNDCTL_SEQ_NRMIDIS = SNDCTL_SEQ_NRMIDIS;
269unsigned IOCTL_SNDCTL_SEQ_NRSYNTHS = SNDCTL_SEQ_NRSYNTHS;
270unsigned IOCTL_SNDCTL_SEQ_OUTOFBAND = SNDCTL_SEQ_OUTOFBAND;
271unsigned IOCTL_SNDCTL_SEQ_PANIC = SNDCTL_SEQ_PANIC;
272unsigned IOCTL_SNDCTL_SEQ_PERCMODE = SNDCTL_SEQ_PERCMODE;
273unsigned IOCTL_SNDCTL_SEQ_RESET = SNDCTL_SEQ_RESET;
274unsigned IOCTL_SNDCTL_SEQ_RESETSAMPLES = SNDCTL_SEQ_RESETSAMPLES;
275unsigned IOCTL_SNDCTL_SEQ_SYNC = SNDCTL_SEQ_SYNC;
276unsigned IOCTL_SNDCTL_SEQ_TESTMIDI = SNDCTL_SEQ_TESTMIDI;
277unsigned IOCTL_SNDCTL_SEQ_THRESHOLD = SNDCTL_SEQ_THRESHOLD;
278unsigned IOCTL_SNDCTL_SYNTH_INFO = SNDCTL_SYNTH_INFO;
279unsigned IOCTL_SNDCTL_SYNTH_MEMAVL = SNDCTL_SYNTH_MEMAVL;
280unsigned IOCTL_SNDCTL_TMR_CONTINUE = SNDCTL_TMR_CONTINUE;
281unsigned IOCTL_SNDCTL_TMR_METRONOME = SNDCTL_TMR_METRONOME;
282unsigned IOCTL_SNDCTL_TMR_SELECT = SNDCTL_TMR_SELECT;
283unsigned IOCTL_SNDCTL_TMR_SOURCE = SNDCTL_TMR_SOURCE;
284unsigned IOCTL_SNDCTL_TMR_START = SNDCTL_TMR_START;
285unsigned IOCTL_SNDCTL_TMR_STOP = SNDCTL_TMR_STOP;
286unsigned IOCTL_SNDCTL_TMR_TEMPO = SNDCTL_TMR_TEMPO;
287unsigned IOCTL_SNDCTL_TMR_TIMEBASE = SNDCTL_TMR_TIMEBASE;
288unsigned IOCTL_SOUND_MIXER_READ_ALTPCM = SOUND_MIXER_READ_ALTPCM;
289unsigned IOCTL_SOUND_MIXER_READ_BASS = SOUND_MIXER_READ_BASS;
290unsigned IOCTL_SOUND_MIXER_READ_CAPS = SOUND_MIXER_READ_CAPS;
291unsigned IOCTL_SOUND_MIXER_READ_CD = SOUND_MIXER_READ_CD;
292unsigned IOCTL_SOUND_MIXER_READ_DEVMASK = SOUND_MIXER_READ_DEVMASK;
293unsigned IOCTL_SOUND_MIXER_READ_ENHANCE = SOUND_MIXER_READ_ENHANCE;
294unsigned IOCTL_SOUND_MIXER_READ_IGAIN = SOUND_MIXER_READ_IGAIN;
295unsigned IOCTL_SOUND_MIXER_READ_IMIX = SOUND_MIXER_READ_IMIX;
296unsigned IOCTL_SOUND_MIXER_READ_LINE = SOUND_MIXER_READ_LINE;
297unsigned IOCTL_SOUND_MIXER_READ_LINE1 = SOUND_MIXER_READ_LINE1;
298unsigned IOCTL_SOUND_MIXER_READ_LINE2 = SOUND_MIXER_READ_LINE2;
299unsigned IOCTL_SOUND_MIXER_READ_LINE3 = SOUND_MIXER_READ_LINE3;
300unsigned IOCTL_SOUND_MIXER_READ_LOUD = SOUND_MIXER_READ_LOUD;
301unsigned IOCTL_SOUND_MIXER_READ_MIC = SOUND_MIXER_READ_MIC;
302unsigned IOCTL_SOUND_MIXER_READ_MUTE = SOUND_MIXER_READ_MUTE;
303unsigned IOCTL_SOUND_MIXER_READ_OGAIN = SOUND_MIXER_READ_OGAIN;
304unsigned IOCTL_SOUND_MIXER_READ_PCM = SOUND_MIXER_READ_PCM;
305unsigned IOCTL_SOUND_MIXER_READ_RECLEV = SOUND_MIXER_READ_RECLEV;
306unsigned IOCTL_SOUND_MIXER_READ_RECMASK = SOUND_MIXER_READ_RECMASK;
307unsigned IOCTL_SOUND_MIXER_READ_RECSRC = SOUND_MIXER_READ_RECSRC;
308unsigned IOCTL_SOUND_MIXER_READ_SPEAKER = SOUND_MIXER_READ_SPEAKER;
309unsigned IOCTL_SOUND_MIXER_READ_STEREODEVS = SOUND_MIXER_READ_STEREODEVS;
310unsigned IOCTL_SOUND_MIXER_READ_SYNTH = SOUND_MIXER_READ_SYNTH;
311unsigned IOCTL_SOUND_MIXER_READ_TREBLE = SOUND_MIXER_READ_TREBLE;
312unsigned IOCTL_SOUND_MIXER_READ_VOLUME = SOUND_MIXER_READ_VOLUME;
313unsigned IOCTL_SOUND_MIXER_WRITE_ALTPCM = SOUND_MIXER_WRITE_ALTPCM;
314unsigned IOCTL_SOUND_MIXER_WRITE_BASS = SOUND_MIXER_WRITE_BASS;
315unsigned IOCTL_SOUND_MIXER_WRITE_CD = SOUND_MIXER_WRITE_CD;
316unsigned IOCTL_SOUND_MIXER_WRITE_ENHANCE = SOUND_MIXER_WRITE_ENHANCE;
317unsigned IOCTL_SOUND_MIXER_WRITE_IGAIN = SOUND_MIXER_WRITE_IGAIN;
318unsigned IOCTL_SOUND_MIXER_WRITE_IMIX = SOUND_MIXER_WRITE_IMIX;
319unsigned IOCTL_SOUND_MIXER_WRITE_LINE = SOUND_MIXER_WRITE_LINE;
320unsigned IOCTL_SOUND_MIXER_WRITE_LINE1 = SOUND_MIXER_WRITE_LINE1;
321unsigned IOCTL_SOUND_MIXER_WRITE_LINE2 = SOUND_MIXER_WRITE_LINE2;
322unsigned IOCTL_SOUND_MIXER_WRITE_LINE3 = SOUND_MIXER_WRITE_LINE3;
323unsigned IOCTL_SOUND_MIXER_WRITE_LOUD = SOUND_MIXER_WRITE_LOUD;
324unsigned IOCTL_SOUND_MIXER_WRITE_MIC = SOUND_MIXER_WRITE_MIC;
325unsigned IOCTL_SOUND_MIXER_WRITE_MUTE = SOUND_MIXER_WRITE_MUTE;
326unsigned IOCTL_SOUND_MIXER_WRITE_OGAIN = SOUND_MIXER_WRITE_OGAIN;
327unsigned IOCTL_SOUND_MIXER_WRITE_PCM = SOUND_MIXER_WRITE_PCM;
328unsigned IOCTL_SOUND_MIXER_WRITE_RECLEV = SOUND_MIXER_WRITE_RECLEV;
329unsigned IOCTL_SOUND_MIXER_WRITE_RECSRC = SOUND_MIXER_WRITE_RECSRC;
330unsigned IOCTL_SOUND_MIXER_WRITE_SPEAKER = SOUND_MIXER_WRITE_SPEAKER;
331unsigned IOCTL_SOUND_MIXER_WRITE_SYNTH = SOUND_MIXER_WRITE_SYNTH;
332unsigned IOCTL_SOUND_MIXER_WRITE_TREBLE = SOUND_MIXER_WRITE_TREBLE;
333unsigned IOCTL_SOUND_MIXER_WRITE_VOLUME = SOUND_MIXER_WRITE_VOLUME;
334unsigned IOCTL_VT_ACTIVATE = VT_ACTIVATE;
335unsigned IOCTL_VT_GETMODE = VT_GETMODE;
336unsigned IOCTL_VT_OPENQRY = VT_OPENQRY;
337unsigned IOCTL_VT_RELDISP = VT_RELDISP;
338unsigned IOCTL_VT_SETMODE = VT_SETMODE;
339unsigned IOCTL_VT_WAITACTIVE = VT_WAITACTIVE;
340unsigned IOCTL_GIO_SCRNMAP = GIO_SCRNMAP;
341unsigned IOCTL_KDDISABIO = KDDISABIO;
342unsigned IOCTL_KDENABIO = KDENABIO;
343unsigned IOCTL_KDGETLED = KDGETLED;
344unsigned IOCTL_KDGETMODE = KDGETMODE;
345unsigned IOCTL_KDGKBMODE = KDGKBMODE;
346unsigned IOCTL_KDGKBTYPE = KDGKBTYPE;
347unsigned IOCTL_KDMKTONE = KDMKTONE;
348unsigned IOCTL_KDSETLED = KDSETLED;
349unsigned IOCTL_KDSETMODE = KDSETMODE;
350unsigned IOCTL_KDSKBMODE = KDSKBMODE;
351unsigned IOCTL_KIOCSOUND = KIOCSOUND;
352unsigned IOCTL_PIO_SCRNMAP = PIO_SCRNMAP;
353unsigned IOCTL_SNDCTL_DSP_GETISPACE = SNDCTL_DSP_GETISPACE;
eac97531 354
3c6331c2
ML
355const int si_SEGV_MAPERR = SEGV_MAPERR;
356const int si_SEGV_ACCERR = SEGV_ACCERR;
357const int unvis_valid = UNVIS_VALID;
358const int unvis_validpush = UNVIS_VALIDPUSH;
359} // namespace __sanitizer
eac97531
ML
360
361using namespace __sanitizer;
362
363COMPILER_CHECK(sizeof(__sanitizer_pthread_attr_t) >= sizeof(pthread_attr_t));
364
365COMPILER_CHECK(sizeof(socklen_t) == sizeof(unsigned));
366CHECK_TYPE_SIZE(pthread_key_t);
367
368// There are more undocumented fields in dl_phdr_info that we are not interested
369// in.
370COMPILER_CHECK(sizeof(__sanitizer_dl_phdr_info) <= sizeof(dl_phdr_info));
371CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_addr);
372CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_name);
373CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_phdr);
374CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_phnum);
375
376CHECK_TYPE_SIZE(glob_t);
377CHECK_SIZE_AND_OFFSET(glob_t, gl_pathc);
378CHECK_SIZE_AND_OFFSET(glob_t, gl_pathv);
379CHECK_SIZE_AND_OFFSET(glob_t, gl_offs);
b667dd70
ML
380CHECK_SIZE_AND_OFFSET(glob_t, gl_flags);
381CHECK_SIZE_AND_OFFSET(glob_t, gl_closedir);
382CHECK_SIZE_AND_OFFSET(glob_t, gl_readdir);
383CHECK_SIZE_AND_OFFSET(glob_t, gl_opendir);
384CHECK_SIZE_AND_OFFSET(glob_t, gl_lstat);
385CHECK_SIZE_AND_OFFSET(glob_t, gl_stat);
eac97531
ML
386
387CHECK_TYPE_SIZE(addrinfo);
388CHECK_SIZE_AND_OFFSET(addrinfo, ai_flags);
389CHECK_SIZE_AND_OFFSET(addrinfo, ai_family);
390CHECK_SIZE_AND_OFFSET(addrinfo, ai_socktype);
391CHECK_SIZE_AND_OFFSET(addrinfo, ai_protocol);
392CHECK_SIZE_AND_OFFSET(addrinfo, ai_protocol);
393CHECK_SIZE_AND_OFFSET(addrinfo, ai_addrlen);
394CHECK_SIZE_AND_OFFSET(addrinfo, ai_canonname);
395CHECK_SIZE_AND_OFFSET(addrinfo, ai_addr);
396
397CHECK_TYPE_SIZE(hostent);
398CHECK_SIZE_AND_OFFSET(hostent, h_name);
399CHECK_SIZE_AND_OFFSET(hostent, h_aliases);
400CHECK_SIZE_AND_OFFSET(hostent, h_addrtype);
401CHECK_SIZE_AND_OFFSET(hostent, h_length);
402CHECK_SIZE_AND_OFFSET(hostent, h_addr_list);
403
404CHECK_TYPE_SIZE(iovec);
405CHECK_SIZE_AND_OFFSET(iovec, iov_base);
406CHECK_SIZE_AND_OFFSET(iovec, iov_len);
407
408CHECK_TYPE_SIZE(msghdr);
409CHECK_SIZE_AND_OFFSET(msghdr, msg_name);
410CHECK_SIZE_AND_OFFSET(msghdr, msg_namelen);
411CHECK_SIZE_AND_OFFSET(msghdr, msg_iov);
412CHECK_SIZE_AND_OFFSET(msghdr, msg_iovlen);
413CHECK_SIZE_AND_OFFSET(msghdr, msg_control);
414CHECK_SIZE_AND_OFFSET(msghdr, msg_controllen);
415CHECK_SIZE_AND_OFFSET(msghdr, msg_flags);
416
417CHECK_TYPE_SIZE(cmsghdr);
418CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_len);
419CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_level);
420CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_type);
421
422COMPILER_CHECK(sizeof(__sanitizer_dirent) <= sizeof(dirent));
423CHECK_SIZE_AND_OFFSET(dirent, d_ino);
eac97531
ML
424CHECK_SIZE_AND_OFFSET(dirent, d_reclen);
425
eac97531
ML
426CHECK_TYPE_SIZE(ifconf);
427CHECK_SIZE_AND_OFFSET(ifconf, ifc_len);
428CHECK_SIZE_AND_OFFSET(ifconf, ifc_ifcu);
429
430CHECK_TYPE_SIZE(pollfd);
431CHECK_SIZE_AND_OFFSET(pollfd, fd);
432CHECK_SIZE_AND_OFFSET(pollfd, events);
433CHECK_SIZE_AND_OFFSET(pollfd, revents);
434
435CHECK_TYPE_SIZE(nfds_t);
436
437CHECK_TYPE_SIZE(sigset_t);
438
439COMPILER_CHECK(sizeof(__sanitizer_sigaction) == sizeof(struct sigaction));
440// Can't write checks for sa_handler and sa_sigaction due to them being
441// preprocessor macros.
442CHECK_STRUCT_SIZE_AND_OFFSET(sigaction, sa_mask);
eac97531
ML
443
444CHECK_TYPE_SIZE(wordexp_t);
445CHECK_SIZE_AND_OFFSET(wordexp_t, we_wordc);
446CHECK_SIZE_AND_OFFSET(wordexp_t, we_wordv);
447CHECK_SIZE_AND_OFFSET(wordexp_t, we_offs);
448
449CHECK_TYPE_SIZE(tm);
450CHECK_SIZE_AND_OFFSET(tm, tm_sec);
451CHECK_SIZE_AND_OFFSET(tm, tm_min);
452CHECK_SIZE_AND_OFFSET(tm, tm_hour);
453CHECK_SIZE_AND_OFFSET(tm, tm_mday);
454CHECK_SIZE_AND_OFFSET(tm, tm_mon);
455CHECK_SIZE_AND_OFFSET(tm, tm_year);
456CHECK_SIZE_AND_OFFSET(tm, tm_wday);
457CHECK_SIZE_AND_OFFSET(tm, tm_yday);
458CHECK_SIZE_AND_OFFSET(tm, tm_isdst);
b667dd70
ML
459CHECK_SIZE_AND_OFFSET(tm, tm_gmtoff);
460CHECK_SIZE_AND_OFFSET(tm, tm_zone);
eac97531
ML
461
462CHECK_TYPE_SIZE(ether_addr);
463
464CHECK_TYPE_SIZE(ipc_perm);
465CHECK_SIZE_AND_OFFSET(ipc_perm, key);
466CHECK_SIZE_AND_OFFSET(ipc_perm, seq);
467CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
468CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
469CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
470CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
eac97531
ML
471
472CHECK_TYPE_SIZE(shmid_ds);
473CHECK_SIZE_AND_OFFSET(shmid_ds, shm_perm);
474CHECK_SIZE_AND_OFFSET(shmid_ds, shm_segsz);
475CHECK_SIZE_AND_OFFSET(shmid_ds, shm_atime);
476CHECK_SIZE_AND_OFFSET(shmid_ds, shm_dtime);
477CHECK_SIZE_AND_OFFSET(shmid_ds, shm_ctime);
478CHECK_SIZE_AND_OFFSET(shmid_ds, shm_cpid);
479CHECK_SIZE_AND_OFFSET(shmid_ds, shm_lpid);
480CHECK_SIZE_AND_OFFSET(shmid_ds, shm_nattch);
481
482CHECK_TYPE_SIZE(clock_t);
483
484CHECK_TYPE_SIZE(ifaddrs);
485CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_next);
486CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_name);
487CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_addr);
488CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_netmask);
eac97531 489#undef ifa_dstaddr
b667dd70 490CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_dstaddr);
eac97531
ML
491CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_data);
492
493CHECK_TYPE_SIZE(timeb);
494CHECK_SIZE_AND_OFFSET(timeb, time);
495CHECK_SIZE_AND_OFFSET(timeb, millitm);
496CHECK_SIZE_AND_OFFSET(timeb, timezone);
497CHECK_SIZE_AND_OFFSET(timeb, dstflag);
498
499CHECK_TYPE_SIZE(passwd);
500CHECK_SIZE_AND_OFFSET(passwd, pw_name);
501CHECK_SIZE_AND_OFFSET(passwd, pw_passwd);
502CHECK_SIZE_AND_OFFSET(passwd, pw_uid);
503CHECK_SIZE_AND_OFFSET(passwd, pw_gid);
504CHECK_SIZE_AND_OFFSET(passwd, pw_dir);
505CHECK_SIZE_AND_OFFSET(passwd, pw_shell);
506
507CHECK_SIZE_AND_OFFSET(passwd, pw_gecos);
508
509CHECK_TYPE_SIZE(group);
510CHECK_SIZE_AND_OFFSET(group, gr_name);
511CHECK_SIZE_AND_OFFSET(group, gr_passwd);
512CHECK_SIZE_AND_OFFSET(group, gr_gid);
513CHECK_SIZE_AND_OFFSET(group, gr_mem);
514
b667dd70 515#if HAVE_RPC_XDR_H
eac97531
ML
516CHECK_TYPE_SIZE(XDR);
517CHECK_SIZE_AND_OFFSET(XDR, x_op);
518CHECK_SIZE_AND_OFFSET(XDR, x_ops);
519CHECK_SIZE_AND_OFFSET(XDR, x_public);
520CHECK_SIZE_AND_OFFSET(XDR, x_private);
521CHECK_SIZE_AND_OFFSET(XDR, x_base);
522CHECK_SIZE_AND_OFFSET(XDR, x_handy);
523COMPILER_CHECK(__sanitizer_XDR_ENCODE == XDR_ENCODE);
524COMPILER_CHECK(__sanitizer_XDR_DECODE == XDR_DECODE);
525COMPILER_CHECK(__sanitizer_XDR_FREE == XDR_FREE);
b667dd70 526#endif
eac97531
ML
527
528CHECK_TYPE_SIZE(sem_t);
529
b667dd70
ML
530COMPILER_CHECK(sizeof(__sanitizer_cap_rights_t) >= sizeof(cap_rights_t));
531#endif // SANITIZER_FREEBSD