* config/mn10300/mn10300.md (adddi3_degenerate): Remove bogus
[official-gcc.git] / libsanitizer / sanitizer_common / sanitizer_platform_limits_openbsd.h
blob8f21de7522883f05fc267c2d62d247f03541cb57
1 //===-- sanitizer_platform_limits_openbsd.h -------------------------------===//
2 //
3 // This file is distributed under the University of Illinois Open Source
4 // License. See LICENSE.TXT for details.
5 //
6 //===----------------------------------------------------------------------===//
7 //
8 // This file is a part of Sanitizer common code.
9 //
10 // Sizes and layouts of platform-specific OpenBSD data structures.
11 //===----------------------------------------------------------------------===//
13 #ifndef SANITIZER_PLATFORM_LIMITS_OPENBSD_H
14 #define SANITIZER_PLATFORM_LIMITS_OPENBSD_H
16 #if SANITIZER_OPENBSD
18 #include "sanitizer_internal_defs.h"
19 #include "sanitizer_platform.h"
21 #define _GET_LINK_MAP_BY_DLOPEN_HANDLE(handle, shift) \
22 ((link_map *)((handle) == nullptr ? nullptr : ((char *)(handle) + (shift))))
24 #if defined(__x86_64__)
25 #define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) \
26 _GET_LINK_MAP_BY_DLOPEN_HANDLE(handle, 312)
27 #elif defined(__i386__)
28 #define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) \
29 _GET_LINK_MAP_BY_DLOPEN_HANDLE(handle, 164)
30 #endif
32 #define RLIMIT_AS RLIMIT_DATA
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_statfs_sz;
53 extern unsigned struct_sockaddr_sz;
55 extern unsigned struct_rlimit_sz;
56 extern unsigned struct_utimbuf_sz;
57 extern unsigned struct_timespec_sz;
59 struct __sanitizer_iocb {
60 u64 aio_offset;
61 uptr aio_buf;
62 long aio_nbytes;
63 u32 aio_fildes;
64 u32 aio_lio_opcode;
65 long aio_reqprio;
66 #if SANITIZER_WORDSIZE == 64
67 u8 aio_sigevent[32];
68 #else
69 u8 aio_sigevent[20];
70 #endif
71 u32 _state;
72 u32 _errno;
73 long _retval;
76 struct __sanitizer___sysctl_args {
77 int *name;
78 int nlen;
79 void *oldval;
80 uptr *oldlenp;
81 void *newval;
82 uptr newlen;
85 struct __sanitizer_sem_t {
86 uptr data[5];
89 struct __sanitizer_ipc_perm {
90 u32 cuid;
91 u32 cgid;
92 u32 uid;
93 u32 gid;
94 u32 mode;
95 unsigned short seq;
96 long key;
99 struct __sanitizer_shmid_ds {
100 __sanitizer_ipc_perm shm_perm;
101 int shm_segsz;
102 u32 shm_lpid;
103 u32 shm_cpid;
104 short shm_nattch;
105 u64 shm_atime;
106 long __shm_atimensec;
107 u64 shm_dtime;
108 long __shm_dtimensec;
109 u64 shm_ctime;
110 long __shm_ctimensec;
111 void *_shm_internal;
114 extern unsigned struct_msqid_ds_sz;
115 extern unsigned struct_mq_attr_sz;
116 extern unsigned struct_timex_sz;
117 extern unsigned struct_statvfs_sz;
119 struct __sanitizer_iovec {
120 void *iov_base;
121 uptr iov_len;
124 struct __sanitizer_ifaddrs {
125 struct __sanitizer_ifaddrs *ifa_next;
126 char *ifa_name;
127 unsigned int ifa_flags;
128 struct __sanitizer_sockaddr *ifa_addr; // (struct sockaddr *)
129 struct __sanitizer_sockaddr *ifa_netmask; // (struct sockaddr *)
130 struct __sanitizer_sockaddr *ifa_dstaddr; // (struct sockaddr *)
131 void *ifa_data;
134 typedef unsigned __sanitizer_pthread_key_t;
136 typedef long long __sanitizer_time_t;
137 typedef int __sanitizer_suseconds_t;
139 struct __sanitizer_timeval {
140 __sanitizer_time_t tv_sec;
141 __sanitizer_suseconds_t tv_usec;
144 struct __sanitizer_itimerval {
145 struct __sanitizer_timeval it_interval;
146 struct __sanitizer_timeval it_value;
149 struct __sanitizer_passwd {
150 char *pw_name;
151 char *pw_passwd;
152 int pw_uid;
153 int pw_gid;
154 __sanitizer_time_t pw_change;
155 char *pw_class;
156 char *pw_gecos;
157 char *pw_dir;
158 char *pw_shell;
159 __sanitizer_time_t pw_expire;
162 struct __sanitizer_group {
163 char *gr_name;
164 char *gr_passwd;
165 int gr_gid;
166 char **gr_mem;
169 struct __sanitizer_ether_addr {
170 u8 octet[6];
173 struct __sanitizer_tm {
174 int tm_sec;
175 int tm_min;
176 int tm_hour;
177 int tm_mday;
178 int tm_mon;
179 int tm_year;
180 int tm_wday;
181 int tm_yday;
182 int tm_isdst;
183 long int tm_gmtoff;
184 const char *tm_zone;
187 struct __sanitizer_msghdr {
188 void *msg_name;
189 unsigned msg_namelen;
190 struct __sanitizer_iovec *msg_iov;
191 unsigned msg_iovlen;
192 void *msg_control;
193 unsigned msg_controllen;
194 int msg_flags;
196 struct __sanitizer_cmsghdr {
197 unsigned cmsg_len;
198 int cmsg_level;
199 int cmsg_type;
202 struct __sanitizer_dirent {
203 u64 d_fileno;
204 u64 d_off;
205 u16 d_reclen;
208 typedef u64 __sanitizer_clock_t;
209 typedef u32 __sanitizer_clockid_t;
211 typedef u32 __sanitizer___kernel_uid_t;
212 typedef u32 __sanitizer___kernel_gid_t;
213 typedef u64 __sanitizer___kernel_off_t;
214 typedef struct {
215 u32 fds_bits[8];
216 } __sanitizer___kernel_fd_set;
218 typedef struct {
219 unsigned int pta_magic;
220 int pta_flags;
221 void *pta_private;
222 } __sanitizer_pthread_attr_t;
224 typedef unsigned int __sanitizer_sigset_t;
226 struct __sanitizer_siginfo {
227 // The size is determined by looking at sizeof of real siginfo_t on linux.
228 u64 opaque[128 / sizeof(u64)];
231 using __sanitizer_sighandler_ptr = void (*)(int sig);
232 using __sanitizer_sigactionhandler_ptr = void (*)(int sig,
233 __sanitizer_siginfo *siginfo,
234 void *uctx);
236 struct __sanitizer_sigaction {
237 union {
238 __sanitizer_sighandler_ptr handler;
239 __sanitizer_sigactionhandler_ptr sigaction;
241 __sanitizer_sigset_t sa_mask;
242 int sa_flags;
245 typedef __sanitizer_sigset_t __sanitizer_kernel_sigset_t;
247 struct __sanitizer_kernel_sigaction_t {
248 union {
249 void (*handler)(int signo);
250 void (*sigaction)(int signo, void *info, void *ctx);
252 unsigned long sa_flags;
253 void (*sa_restorer)(void);
254 __sanitizer_kernel_sigset_t sa_mask;
257 extern const uptr sig_ign;
258 extern const uptr sig_dfl;
259 extern const uptr sig_err;
260 extern const uptr sa_siginfo;
262 extern int af_inet;
263 extern int af_inet6;
264 uptr __sanitizer_in_addr_sz(int af);
266 struct __sanitizer_dl_phdr_info {
267 #if SANITIZER_WORDSIZE == 64
268 u64 dlpi_addr;
269 #else
270 u32 dlpi_addr;
271 #endif
272 const char *dlpi_name;
273 const void *dlpi_phdr;
274 #if SANITIZER_WORDSIZE == 64
275 u32 dlpi_phnum;
276 #else
277 u16 dlpi_phnum;
278 #endif
281 extern unsigned struct_ElfW_Phdr_sz;
283 struct __sanitizer_addrinfo {
284 int ai_flags;
285 int ai_family;
286 int ai_socktype;
287 int ai_protocol;
288 unsigned ai_addrlen;
289 struct __sanitizer_sockaddr *ai_addr;
290 char *ai_canonname;
291 struct __sanitizer_addrinfo *ai_next;
294 struct __sanitizer_hostent {
295 char *h_name;
296 char **h_aliases;
297 int h_addrtype;
298 int h_length;
299 char **h_addr_list;
302 struct __sanitizer_pollfd {
303 int fd;
304 short events;
305 short revents;
308 typedef unsigned __sanitizer_nfds_t;
310 struct __sanitizer_glob_t {
311 int gl_pathc;
312 int gl_matchc;
313 int gl_offs;
314 int gl_flags;
315 char **gl_pathv;
316 void **gl_statv;
317 int (*gl_errfunc)(const char *, int);
318 void (*gl_closedir)(void *dirp);
319 struct dirent *(*gl_readdir)(void *dirp);
320 void *(*gl_opendir)(const char *);
321 int (*gl_lstat)(const char *, void * /* struct stat* */);
322 int (*gl_stat)(const char *, void * /* struct stat* */);
325 extern int glob_nomatch;
326 extern int glob_altdirfunc;
328 extern unsigned path_max;
330 typedef char __sanitizer_FILE;
331 #define SANITIZER_HAS_STRUCT_FILE 0
333 extern int shmctl_ipc_stat;
335 // This simplifies generic code
336 #define struct_shminfo_sz -1
337 #define struct_shm_info_sz -1
338 #define shmctl_shm_stat -1
339 #define shmctl_ipc_info -1
340 #define shmctl_shm_info -1
342 extern unsigned struct_utmp_sz;
343 extern unsigned struct_utmpx_sz;
345 extern int map_fixed;
347 // ioctl arguments
348 struct __sanitizer_ifconf {
349 int ifc_len;
350 union {
351 void *ifcu_req;
352 } ifc_ifcu;
355 extern const int si_SEGV_MAPERR;
356 extern const int si_SEGV_ACCERR;
357 } // namespace __sanitizer
359 #define CHECK_TYPE_SIZE(TYPE) \
360 COMPILER_CHECK(sizeof(__sanitizer_##TYPE) == sizeof(TYPE))
362 #define CHECK_SIZE_AND_OFFSET(CLASS, MEMBER) \
363 COMPILER_CHECK(sizeof(((__sanitizer_##CLASS *)NULL)->MEMBER) == \
364 sizeof(((CLASS *)NULL)->MEMBER)); \
365 COMPILER_CHECK(offsetof(__sanitizer_##CLASS, MEMBER) == \
366 offsetof(CLASS, MEMBER))
368 // For sigaction, which is a function and struct at the same time,
369 // and thus requires explicit "struct" in sizeof() expression.
370 #define CHECK_STRUCT_SIZE_AND_OFFSET(CLASS, MEMBER) \
371 COMPILER_CHECK(sizeof(((struct __sanitizer_##CLASS *)NULL)->MEMBER) == \
372 sizeof(((struct CLASS *)NULL)->MEMBER)); \
373 COMPILER_CHECK(offsetof(struct __sanitizer_##CLASS, MEMBER) == \
374 offsetof(struct CLASS, MEMBER))
376 #define SIGACTION_SYMNAME __sigaction14
378 #endif // SANITIZER_OPENBSD
380 #endif