]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h
Import mandoc 1.14.4
[FreeBSD/FreeBSD.git] / contrib / compiler-rt / lib / sanitizer_common / sanitizer_platform_limits_netbsd.h
1 //===-- sanitizer_platform_limits_netbsd.h --------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file is a part of Sanitizer common code.
11 //
12 // Sizes and layouts of platform-specific NetBSD data structures.
13 //===----------------------------------------------------------------------===//
14
15 #ifndef SANITIZER_PLATFORM_LIMITS_NETBSD_H
16 #define SANITIZER_PLATFORM_LIMITS_NETBSD_H
17
18 #if SANITIZER_NETBSD
19
20 #include "sanitizer_internal_defs.h"
21 #include "sanitizer_platform.h"
22
23 #define _GET_LINK_MAP_BY_DLOPEN_HANDLE(handle, shift) \
24   ((link_map *)((handle) == nullptr ? nullptr : ((char *)(handle) + (shift))))
25
26 #if defined(__x86_64__)
27 #define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) \
28   _GET_LINK_MAP_BY_DLOPEN_HANDLE(handle, 312)
29 #elif defined(__i386__)
30 #define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) \
31   _GET_LINK_MAP_BY_DLOPEN_HANDLE(handle, 164)
32 #endif
33
34 namespace __sanitizer {
35 extern unsigned struct_utsname_sz;
36 extern unsigned struct_stat_sz;
37 extern unsigned struct_rusage_sz;
38 extern unsigned siginfo_t_sz;
39 extern unsigned struct_itimerval_sz;
40 extern unsigned pthread_t_sz;
41 extern unsigned pthread_mutex_t_sz;
42 extern unsigned pthread_cond_t_sz;
43 extern unsigned pid_t_sz;
44 extern unsigned timeval_sz;
45 extern unsigned uid_t_sz;
46 extern unsigned gid_t_sz;
47 extern unsigned mbstate_t_sz;
48 extern unsigned struct_timezone_sz;
49 extern unsigned struct_tms_sz;
50 extern unsigned struct_itimerspec_sz;
51 extern unsigned struct_sigevent_sz;
52 extern unsigned struct_sched_param_sz;
53 extern unsigned struct_statfs_sz;
54 extern unsigned struct_sockaddr_sz;
55 extern unsigned ucontext_t_sz;
56
57 extern unsigned struct_rlimit_sz;
58 extern unsigned struct_utimbuf_sz;
59 extern unsigned struct_timespec_sz;
60
61 struct __sanitizer_iocb {
62   u64 aio_offset;
63   uptr aio_buf;
64   long aio_nbytes;
65   u32 aio_fildes;
66   u32 aio_lio_opcode;
67   long aio_reqprio;
68 #if SANITIZER_WORDSIZE == 64
69   u8 aio_sigevent[32];
70 #else
71   u8 aio_sigevent[20];
72 #endif
73   u32 _state;
74   u32 _errno;
75   long _retval;
76 };
77
78 struct __sanitizer___sysctl_args {
79   int *name;
80   int nlen;
81   void *oldval;
82   uptr *oldlenp;
83   void *newval;
84   uptr newlen;
85 };
86
87 struct __sanitizer_sem_t {
88   uptr data[5];
89 };
90
91 struct __sanitizer_ipc_perm {
92   u32 uid;
93   u32 gid;
94   u32 cuid;
95   u32 cgid;
96   u32 mode;
97   unsigned short _seq;
98   long _key;
99 };
100
101 struct __sanitizer_shmid_ds {
102   __sanitizer_ipc_perm shm_perm;
103   unsigned long shm_segsz;
104   u32 shm_lpid;
105   u32 shm_cpid;
106   unsigned int shm_nattch;
107   u64 shm_atime;
108   u64 shm_dtime;
109   u64 shm_ctime;
110   void *_shm_internal;
111 };
112
113 extern unsigned struct_msqid_ds_sz;
114 extern unsigned struct_mq_attr_sz;
115 extern unsigned struct_timex_sz;
116 extern unsigned struct_statvfs_sz;
117
118 struct __sanitizer_iovec {
119   void *iov_base;
120   uptr iov_len;
121 };
122
123 struct __sanitizer_ifaddrs {
124   struct __sanitizer_ifaddrs *ifa_next;
125   char *ifa_name;
126   unsigned int ifa_flags;
127   void *ifa_addr;     // (struct sockaddr *)
128   void *ifa_netmask;  // (struct sockaddr *)
129   void *ifa_dstaddr;  // (struct sockaddr *)
130   void *ifa_data;
131   unsigned int ifa_addrflags;
132 };
133
134 typedef unsigned __sanitizer_pthread_key_t;
135
136 typedef long long __sanitizer_time_t;
137
138 struct __sanitizer_passwd {
139   char *pw_name;
140   char *pw_passwd;
141   int pw_uid;
142   int pw_gid;
143   __sanitizer_time_t pw_change;
144   char *pw_class;
145   char *pw_gecos;
146   char *pw_dir;
147   char *pw_shell;
148   __sanitizer_time_t pw_expire;
149 };
150
151 struct __sanitizer_group {
152   char *gr_name;
153   char *gr_passwd;
154   int gr_gid;
155   char **gr_mem;
156 };
157
158 struct __sanitizer_timeb {
159   __sanitizer_time_t time;
160   unsigned short millitm;
161   short timezone;
162   short dstflag;
163 };
164
165 struct __sanitizer_ether_addr {
166   u8 octet[6];
167 };
168
169 struct __sanitizer_tm {
170   int tm_sec;
171   int tm_min;
172   int tm_hour;
173   int tm_mday;
174   int tm_mon;
175   int tm_year;
176   int tm_wday;
177   int tm_yday;
178   int tm_isdst;
179   long int tm_gmtoff;
180   const char *tm_zone;
181 };
182
183 struct __sanitizer_msghdr {
184   void *msg_name;
185   unsigned msg_namelen;
186   struct __sanitizer_iovec *msg_iov;
187   unsigned msg_iovlen;
188   void *msg_control;
189   unsigned msg_controllen;
190   int msg_flags;
191 };
192 struct __sanitizer_cmsghdr {
193   unsigned cmsg_len;
194   int cmsg_level;
195   int cmsg_type;
196 };
197
198 struct __sanitizer_dirent {
199   u64 d_fileno;
200   u16 d_reclen;
201   // more fields that we don't care about
202 };
203
204 typedef int __sanitizer_clock_t;
205 typedef int __sanitizer_clockid_t;
206
207 typedef u32 __sanitizer___kernel_uid_t;
208 typedef u32 __sanitizer___kernel_gid_t;
209 typedef u64 __sanitizer___kernel_off_t;
210 typedef struct {
211   u32 fds_bits[8];
212 } __sanitizer___kernel_fd_set;
213
214 typedef struct {
215   unsigned int pta_magic;
216   int pta_flags;
217   void *pta_private;
218 } __sanitizer_pthread_attr_t;
219
220 struct __sanitizer_sigset_t {
221   // uint32_t * 4
222   unsigned int __bits[4];
223 };
224
225 struct __sanitizer_siginfo {
226   // The size is determined by looking at sizeof of real siginfo_t on linux.
227   u64 opaque[128 / sizeof(u64)];
228 };
229
230 using __sanitizer_sighandler_ptr = void (*)(int sig);
231 using __sanitizer_sigactionhandler_ptr = void (*)(int sig,
232                                                   __sanitizer_siginfo *siginfo,
233                                                   void *uctx);
234
235 struct __sanitizer_sigaction {
236   union {
237     __sanitizer_sighandler_ptr handler;
238     __sanitizer_sigactionhandler_ptr sigaction;
239   };
240   __sanitizer_sigset_t sa_mask;
241   int sa_flags;
242 };
243
244 typedef __sanitizer_sigset_t __sanitizer_kernel_sigset_t;
245
246 struct __sanitizer_kernel_sigaction_t {
247   union {
248     void (*handler)(int signo);
249     void (*sigaction)(int signo, void *info, void *ctx);
250   };
251   unsigned long sa_flags;
252   void (*sa_restorer)(void);
253   __sanitizer_kernel_sigset_t sa_mask;
254 };
255
256 extern const uptr sig_ign;
257 extern const uptr sig_dfl;
258 extern const uptr sig_err;
259 extern const uptr sa_siginfo;
260
261 extern int af_inet;
262 extern int af_inet6;
263 uptr __sanitizer_in_addr_sz(int af);
264
265 struct __sanitizer_dl_phdr_info {
266   uptr dlpi_addr;
267   const char *dlpi_name;
268   const void *dlpi_phdr;
269   short dlpi_phnum;
270 };
271
272 extern unsigned struct_ElfW_Phdr_sz;
273
274 struct __sanitizer_addrinfo {
275   int ai_flags;
276   int ai_family;
277   int ai_socktype;
278   int ai_protocol;
279   unsigned ai_addrlen;
280   char *ai_canonname;
281   void *ai_addr;
282   struct __sanitizer_addrinfo *ai_next;
283 };
284
285 struct __sanitizer_hostent {
286   char *h_name;
287   char **h_aliases;
288   int h_addrtype;
289   int h_length;
290   char **h_addr_list;
291 };
292
293 struct __sanitizer_pollfd {
294   int fd;
295   short events;
296   short revents;
297 };
298
299 typedef unsigned __sanitizer_nfds_t;
300
301 struct __sanitizer_glob_t {
302   uptr gl_pathc;
303   uptr gl_matchc;
304   uptr gl_offs;
305   int gl_flags;
306   char **gl_pathv;
307   int (*gl_errfunc)(const char *, int);
308   void (*gl_closedir)(void *dirp);
309   struct dirent *(*gl_readdir)(void *dirp);
310   void *(*gl_opendir)(const char *);
311   int (*gl_lstat)(const char *, void * /* struct stat* */);
312   int (*gl_stat)(const char *, void * /* struct stat* */);
313 };
314
315 extern int glob_nomatch;
316 extern int glob_altdirfunc;
317
318 extern unsigned path_max;
319
320 struct __sanitizer_wordexp_t {
321   uptr we_wordc;
322   char **we_wordv;
323   uptr we_offs;
324   char *we_strings;
325   uptr we_nbytes;
326 };
327
328 typedef char __sanitizer_FILE;
329 #define SANITIZER_HAS_STRUCT_FILE 0
330
331 extern int shmctl_ipc_stat;
332
333 // This simplifies generic code
334 #define struct_shminfo_sz -1
335 #define struct_shm_info_sz -1
336 #define shmctl_shm_stat -1
337 #define shmctl_ipc_info -1
338 #define shmctl_shm_info -1
339
340 extern unsigned struct_utmp_sz;
341 extern unsigned struct_utmpx_sz;
342
343 extern int map_fixed;
344
345 // ioctl arguments
346 struct __sanitizer_ifconf {
347   int ifc_len;
348   union {
349     void *ifcu_req;
350   } ifc_ifcu;
351 };
352
353 #define IOC_NRBITS 8
354 #define IOC_TYPEBITS 8
355 #define IOC_SIZEBITS 14
356 #define IOC_DIRBITS 2
357 #define IOC_NONE 0U
358 #define IOC_WRITE 1U
359 #define IOC_READ 2U
360 #define IOC_NRMASK ((1 << IOC_NRBITS) - 1)
361 #define IOC_TYPEMASK ((1 << IOC_TYPEBITS) - 1)
362 #define IOC_SIZEMASK ((1 << IOC_SIZEBITS) - 1)
363 #undef IOC_DIRMASK
364 #define IOC_DIRMASK ((1 << IOC_DIRBITS) - 1)
365 #define IOC_NRSHIFT 0
366 #define IOC_TYPESHIFT (IOC_NRSHIFT + IOC_NRBITS)
367 #define IOC_SIZESHIFT (IOC_TYPESHIFT + IOC_TYPEBITS)
368 #define IOC_DIRSHIFT (IOC_SIZESHIFT + IOC_SIZEBITS)
369 #define EVIOC_EV_MAX 0x1f
370 #define EVIOC_ABS_MAX 0x3f
371
372 #define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK)
373 #define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK)
374 #define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK)
375 #define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK)
376
377 extern unsigned struct_ifreq_sz;
378 extern unsigned struct_termios_sz;
379 extern unsigned struct_winsize_sz;
380
381 extern unsigned struct_arpreq_sz;
382
383 extern unsigned struct_mtget_sz;
384 extern unsigned struct_mtop_sz;
385 extern unsigned struct_rtentry_sz;
386 extern unsigned struct_sbi_instrument_sz;
387 extern unsigned struct_seq_event_rec_sz;
388 extern unsigned struct_synth_info_sz;
389 extern unsigned struct_vt_mode_sz;
390 extern unsigned struct_audio_buf_info_sz;
391 extern unsigned struct_ppp_stats_sz;
392 extern unsigned struct_sioc_sg_req_sz;
393 extern unsigned struct_sioc_vif_req_sz;
394
395 // ioctl request identifiers
396
397 // A special value to mark ioctls that are not present on the target platform,
398 // when it can not be determined without including any system headers.
399 extern const unsigned IOCTL_NOT_PRESENT;
400
401 extern unsigned IOCTL_FIOASYNC;
402 extern unsigned IOCTL_FIOCLEX;
403 extern unsigned IOCTL_FIOGETOWN;
404 extern unsigned IOCTL_FIONBIO;
405 extern unsigned IOCTL_FIONCLEX;
406 extern unsigned IOCTL_FIOSETOWN;
407 extern unsigned IOCTL_SIOCADDMULTI;
408 extern unsigned IOCTL_SIOCATMARK;
409 extern unsigned IOCTL_SIOCDELMULTI;
410 extern unsigned IOCTL_SIOCGIFADDR;
411 extern unsigned IOCTL_SIOCGIFBRDADDR;
412 extern unsigned IOCTL_SIOCGIFCONF;
413 extern unsigned IOCTL_SIOCGIFDSTADDR;
414 extern unsigned IOCTL_SIOCGIFFLAGS;
415 extern unsigned IOCTL_SIOCGIFMETRIC;
416 extern unsigned IOCTL_SIOCGIFMTU;
417 extern unsigned IOCTL_SIOCGIFNETMASK;
418 extern unsigned IOCTL_SIOCGPGRP;
419 extern unsigned IOCTL_SIOCSIFADDR;
420 extern unsigned IOCTL_SIOCSIFBRDADDR;
421 extern unsigned IOCTL_SIOCSIFDSTADDR;
422 extern unsigned IOCTL_SIOCSIFFLAGS;
423 extern unsigned IOCTL_SIOCSIFMETRIC;
424 extern unsigned IOCTL_SIOCSIFMTU;
425 extern unsigned IOCTL_SIOCSIFNETMASK;
426 extern unsigned IOCTL_SIOCSPGRP;
427 extern unsigned IOCTL_TIOCCONS;
428 extern unsigned IOCTL_TIOCEXCL;
429 extern unsigned IOCTL_TIOCGETD;
430 extern unsigned IOCTL_TIOCGPGRP;
431 extern unsigned IOCTL_TIOCGWINSZ;
432 extern unsigned IOCTL_TIOCMBIC;
433 extern unsigned IOCTL_TIOCMBIS;
434 extern unsigned IOCTL_TIOCMGET;
435 extern unsigned IOCTL_TIOCMSET;
436 extern unsigned IOCTL_TIOCNOTTY;
437 extern unsigned IOCTL_TIOCNXCL;
438 extern unsigned IOCTL_TIOCOUTQ;
439 extern unsigned IOCTL_TIOCPKT;
440 extern unsigned IOCTL_TIOCSCTTY;
441 extern unsigned IOCTL_TIOCSETD;
442 extern unsigned IOCTL_TIOCSPGRP;
443 extern unsigned IOCTL_TIOCSTI;
444 extern unsigned IOCTL_TIOCSWINSZ;
445 extern unsigned IOCTL_SIOCGETSGCNT;
446 extern unsigned IOCTL_SIOCGETVIFCNT;
447 extern unsigned IOCTL_MTIOCGET;
448 extern unsigned IOCTL_MTIOCTOP;
449 extern unsigned IOCTL_SIOCADDRT;
450 extern unsigned IOCTL_SIOCDELRT;
451 extern unsigned IOCTL_SNDCTL_DSP_GETBLKSIZE;
452 extern unsigned IOCTL_SNDCTL_DSP_GETFMTS;
453 extern unsigned IOCTL_SNDCTL_DSP_NONBLOCK;
454 extern unsigned IOCTL_SNDCTL_DSP_POST;
455 extern unsigned IOCTL_SNDCTL_DSP_RESET;
456 extern unsigned IOCTL_SNDCTL_DSP_SETFMT;
457 extern unsigned IOCTL_SNDCTL_DSP_SETFRAGMENT;
458 extern unsigned IOCTL_SNDCTL_DSP_SPEED;
459 extern unsigned IOCTL_SNDCTL_DSP_STEREO;
460 extern unsigned IOCTL_SNDCTL_DSP_SUBDIVIDE;
461 extern unsigned IOCTL_SNDCTL_DSP_SYNC;
462 extern unsigned IOCTL_SNDCTL_FM_4OP_ENABLE;
463 extern unsigned IOCTL_SNDCTL_FM_LOAD_INSTR;
464 extern unsigned IOCTL_SNDCTL_MIDI_INFO;
465 extern unsigned IOCTL_SNDCTL_MIDI_PRETIME;
466 extern unsigned IOCTL_SNDCTL_SEQ_CTRLRATE;
467 extern unsigned IOCTL_SNDCTL_SEQ_GETINCOUNT;
468 extern unsigned IOCTL_SNDCTL_SEQ_GETOUTCOUNT;
469 extern unsigned IOCTL_SNDCTL_SEQ_NRMIDIS;
470 extern unsigned IOCTL_SNDCTL_SEQ_NRSYNTHS;
471 extern unsigned IOCTL_SNDCTL_SEQ_OUTOFBAND;
472 extern unsigned IOCTL_SNDCTL_SEQ_PANIC;
473 extern unsigned IOCTL_SNDCTL_SEQ_PERCMODE;
474 extern unsigned IOCTL_SNDCTL_SEQ_RESET;
475 extern unsigned IOCTL_SNDCTL_SEQ_RESETSAMPLES;
476 extern unsigned IOCTL_SNDCTL_SEQ_SYNC;
477 extern unsigned IOCTL_SNDCTL_SEQ_TESTMIDI;
478 extern unsigned IOCTL_SNDCTL_SEQ_THRESHOLD;
479 extern unsigned IOCTL_SNDCTL_SYNTH_INFO;
480 extern unsigned IOCTL_SNDCTL_SYNTH_MEMAVL;
481 extern unsigned IOCTL_SNDCTL_TMR_CONTINUE;
482 extern unsigned IOCTL_SNDCTL_TMR_METRONOME;
483 extern unsigned IOCTL_SNDCTL_TMR_SELECT;
484 extern unsigned IOCTL_SNDCTL_TMR_SOURCE;
485 extern unsigned IOCTL_SNDCTL_TMR_START;
486 extern unsigned IOCTL_SNDCTL_TMR_STOP;
487 extern unsigned IOCTL_SNDCTL_TMR_TEMPO;
488 extern unsigned IOCTL_SNDCTL_TMR_TIMEBASE;
489 extern unsigned IOCTL_SOUND_MIXER_READ_ALTPCM;
490 extern unsigned IOCTL_SOUND_MIXER_READ_BASS;
491 extern unsigned IOCTL_SOUND_MIXER_READ_CAPS;
492 extern unsigned IOCTL_SOUND_MIXER_READ_CD;
493 extern unsigned IOCTL_SOUND_MIXER_READ_DEVMASK;
494 extern unsigned IOCTL_SOUND_MIXER_READ_ENHANCE;
495 extern unsigned IOCTL_SOUND_MIXER_READ_IGAIN;
496 extern unsigned IOCTL_SOUND_MIXER_READ_IMIX;
497 extern unsigned IOCTL_SOUND_MIXER_READ_LINE1;
498 extern unsigned IOCTL_SOUND_MIXER_READ_LINE2;
499 extern unsigned IOCTL_SOUND_MIXER_READ_LINE3;
500 extern unsigned IOCTL_SOUND_MIXER_READ_LINE;
501 extern unsigned IOCTL_SOUND_MIXER_READ_LOUD;
502 extern unsigned IOCTL_SOUND_MIXER_READ_MIC;
503 extern unsigned IOCTL_SOUND_MIXER_READ_MUTE;
504 extern unsigned IOCTL_SOUND_MIXER_READ_OGAIN;
505 extern unsigned IOCTL_SOUND_MIXER_READ_PCM;
506 extern unsigned IOCTL_SOUND_MIXER_READ_RECLEV;
507 extern unsigned IOCTL_SOUND_MIXER_READ_RECMASK;
508 extern unsigned IOCTL_SOUND_MIXER_READ_RECSRC;
509 extern unsigned IOCTL_SOUND_MIXER_READ_SPEAKER;
510 extern unsigned IOCTL_SOUND_MIXER_READ_STEREODEVS;
511 extern unsigned IOCTL_SOUND_MIXER_READ_SYNTH;
512 extern unsigned IOCTL_SOUND_MIXER_READ_TREBLE;
513 extern unsigned IOCTL_SOUND_MIXER_READ_VOLUME;
514 extern unsigned IOCTL_SOUND_MIXER_WRITE_ALTPCM;
515 extern unsigned IOCTL_SOUND_MIXER_WRITE_BASS;
516 extern unsigned IOCTL_SOUND_MIXER_WRITE_CD;
517 extern unsigned IOCTL_SOUND_MIXER_WRITE_ENHANCE;
518 extern unsigned IOCTL_SOUND_MIXER_WRITE_IGAIN;
519 extern unsigned IOCTL_SOUND_MIXER_WRITE_IMIX;
520 extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE1;
521 extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE2;
522 extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE3;
523 extern unsigned IOCTL_SOUND_MIXER_WRITE_LINE;
524 extern unsigned IOCTL_SOUND_MIXER_WRITE_LOUD;
525 extern unsigned IOCTL_SOUND_MIXER_WRITE_MIC;
526 extern unsigned IOCTL_SOUND_MIXER_WRITE_MUTE;
527 extern unsigned IOCTL_SOUND_MIXER_WRITE_OGAIN;
528 extern unsigned IOCTL_SOUND_MIXER_WRITE_PCM;
529 extern unsigned IOCTL_SOUND_MIXER_WRITE_RECLEV;
530 extern unsigned IOCTL_SOUND_MIXER_WRITE_RECSRC;
531 extern unsigned IOCTL_SOUND_MIXER_WRITE_SPEAKER;
532 extern unsigned IOCTL_SOUND_MIXER_WRITE_SYNTH;
533 extern unsigned IOCTL_SOUND_MIXER_WRITE_TREBLE;
534 extern unsigned IOCTL_SOUND_MIXER_WRITE_VOLUME;
535 extern unsigned IOCTL_SOUND_PCM_READ_BITS;
536 extern unsigned IOCTL_SOUND_PCM_READ_CHANNELS;
537 extern unsigned IOCTL_SOUND_PCM_READ_FILTER;
538 extern unsigned IOCTL_SOUND_PCM_READ_RATE;
539 extern unsigned IOCTL_SOUND_PCM_WRITE_CHANNELS;
540 extern unsigned IOCTL_SOUND_PCM_WRITE_FILTER;
541 extern unsigned IOCTL_VT_ACTIVATE;
542 extern unsigned IOCTL_VT_GETMODE;
543 extern unsigned IOCTL_VT_OPENQRY;
544 extern unsigned IOCTL_VT_RELDISP;
545 extern unsigned IOCTL_VT_SETMODE;
546 extern unsigned IOCTL_VT_WAITACTIVE;
547 extern unsigned IOCTL_KDDISABIO;
548 extern unsigned IOCTL_KDENABIO;
549 extern unsigned IOCTL_KDGETLED;
550 extern unsigned IOCTL_KDGKBMODE;
551 extern unsigned IOCTL_KDGKBTYPE;
552 extern unsigned IOCTL_KDMKTONE;
553 extern unsigned IOCTL_KDSETLED;
554 extern unsigned IOCTL_KDSETMODE;
555 extern unsigned IOCTL_KDSKBMODE;
556
557 extern const int si_SEGV_MAPERR;
558 extern const int si_SEGV_ACCERR;
559 }  // namespace __sanitizer
560
561 #define CHECK_TYPE_SIZE(TYPE) \
562   COMPILER_CHECK(sizeof(__sanitizer_##TYPE) == sizeof(TYPE))
563
564 #define CHECK_SIZE_AND_OFFSET(CLASS, MEMBER)                      \
565   COMPILER_CHECK(sizeof(((__sanitizer_##CLASS *)NULL)->MEMBER) == \
566                  sizeof(((CLASS *)NULL)->MEMBER));                \
567   COMPILER_CHECK(offsetof(__sanitizer_##CLASS, MEMBER) ==         \
568                  offsetof(CLASS, MEMBER))
569
570 // For sigaction, which is a function and struct at the same time,
571 // and thus requires explicit "struct" in sizeof() expression.
572 #define CHECK_STRUCT_SIZE_AND_OFFSET(CLASS, MEMBER)                      \
573   COMPILER_CHECK(sizeof(((struct __sanitizer_##CLASS *)NULL)->MEMBER) == \
574                  sizeof(((struct CLASS *)NULL)->MEMBER));                \
575   COMPILER_CHECK(offsetof(struct __sanitizer_##CLASS, MEMBER) ==         \
576                  offsetof(struct CLASS, MEMBER))
577
578 #define SIGACTION_SYMNAME __sigaction14
579
580 #endif  // SANITIZER_NETBSD
581
582 #endif