Evgeniy Stepanov | 9358c58 | 2013-02-19 09:19:16 +0000 | [diff] [blame] | 1 | //===-- sanitizer_platform_limits_posix.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 POSIX data structures. |
| 13 | //===----------------------------------------------------------------------===// |
| 14 | |
| 15 | #ifndef SANITIZER_PLATFORM_LIMITS_POSIX_H |
| 16 | #define SANITIZER_PLATFORM_LIMITS_POSIX_H |
| 17 | |
Evgeniy Stepanov | 24e1372 | 2013-03-19 14:33:38 +0000 | [diff] [blame] | 18 | #include "sanitizer_platform.h" |
| 19 | |
Evgeniy Stepanov | 9358c58 | 2013-02-19 09:19:16 +0000 | [diff] [blame] | 20 | namespace __sanitizer { |
| 21 | extern unsigned struct_utsname_sz; |
| 22 | extern unsigned struct_stat_sz; |
| 23 | extern unsigned struct_stat64_sz; |
| 24 | extern unsigned struct_rusage_sz; |
| 25 | extern unsigned struct_tm_sz; |
Evgeniy Stepanov | e4bdda5 | 2013-04-01 14:47:21 +0000 | [diff] [blame] | 26 | extern unsigned struct_passwd_sz; |
Evgeniy Stepanov | 103a63e | 2013-04-23 12:01:20 +0000 | [diff] [blame] | 27 | extern unsigned struct_group_sz; |
Evgeniy Stepanov | e4bdda5 | 2013-04-01 14:47:21 +0000 | [diff] [blame] | 28 | extern unsigned struct_sigaction_sz; |
Evgeniy Stepanov | 897a4ae | 2013-04-09 14:34:59 +0000 | [diff] [blame] | 29 | extern unsigned siginfo_t_sz; |
Evgeniy Stepanov | e4bdda5 | 2013-04-01 14:47:21 +0000 | [diff] [blame] | 30 | extern unsigned struct_itimerval_sz; |
| 31 | extern unsigned pthread_t_sz; |
Evgeniy Stepanov | 447ef19 | 2013-05-22 12:50:26 +0000 | [diff] [blame] | 32 | extern unsigned struct_sockaddr_sz; |
Evgeniy Stepanov | 4fb04a8 | 2013-04-04 09:21:48 +0000 | [diff] [blame] | 33 | |
| 34 | #if !SANITIZER_ANDROID |
Evgeniy Stepanov | 0727702 | 2013-04-04 09:03:56 +0000 | [diff] [blame] | 35 | extern unsigned ucontext_t_sz; |
Evgeniy Stepanov | 4fb04a8 | 2013-04-04 09:21:48 +0000 | [diff] [blame] | 36 | #endif // !SANITIZER_ANDROID |
Evgeniy Stepanov | 9358c58 | 2013-02-19 09:19:16 +0000 | [diff] [blame] | 37 | |
Evgeniy Stepanov | 24e1372 | 2013-03-19 14:33:38 +0000 | [diff] [blame] | 38 | #if SANITIZER_LINUX |
Evgeniy Stepanov | 9358c58 | 2013-02-19 09:19:16 +0000 | [diff] [blame] | 39 | extern unsigned struct_rlimit_sz; |
Evgeniy Stepanov | 9358c58 | 2013-02-19 09:19:16 +0000 | [diff] [blame] | 40 | extern unsigned struct_dirent_sz; |
| 41 | extern unsigned struct_statfs_sz; |
Evgeniy Stepanov | 9358c58 | 2013-02-19 09:19:16 +0000 | [diff] [blame] | 42 | extern unsigned struct_epoll_event_sz; |
Evgeniy Stepanov | e4bdda5 | 2013-04-01 14:47:21 +0000 | [diff] [blame] | 43 | extern unsigned struct_timespec_sz; |
Alexey Samsonov | 46f9395 | 2013-04-03 07:24:35 +0000 | [diff] [blame] | 44 | #endif // SANITIZER_LINUX |
Evgeniy Stepanov | 9358c58 | 2013-02-19 09:19:16 +0000 | [diff] [blame] | 45 | |
Evgeniy Stepanov | 24e1372 | 2013-03-19 14:33:38 +0000 | [diff] [blame] | 46 | #if SANITIZER_LINUX && !SANITIZER_ANDROID |
Evgeniy Stepanov | e4cded9 | 2013-03-14 13:24:03 +0000 | [diff] [blame] | 47 | extern unsigned struct_dirent64_sz; |
Evgeniy Stepanov | b711ca6 | 2013-02-19 11:06:41 +0000 | [diff] [blame] | 48 | extern unsigned struct_rlimit64_sz; |
| 49 | extern unsigned struct_statfs64_sz; |
Alexey Samsonov | 46f9395 | 2013-04-03 07:24:35 +0000 | [diff] [blame] | 50 | #endif // SANITIZER_LINUX && !SANITIZER_ANDROID |
Evgeniy Stepanov | b711ca6 | 2013-02-19 11:06:41 +0000 | [diff] [blame] | 51 | |
Evgeniy Stepanov | 9358c58 | 2013-02-19 09:19:16 +0000 | [diff] [blame] | 52 | void* __sanitizer_get_msghdr_iov_iov_base(void* msg, int idx); |
| 53 | uptr __sanitizer_get_msghdr_iov_iov_len(void* msg, int idx); |
| 54 | uptr __sanitizer_get_msghdr_iovlen(void* msg); |
| 55 | uptr __sanitizer_get_socklen_t(void* socklen_ptr); |
Evgeniy Stepanov | 10fd322 | 2013-03-13 09:01:40 +0000 | [diff] [blame] | 56 | |
| 57 | // This thing depends on the platform. We are only interested in the upper |
| 58 | // limit. Verified with a compiler assert in .cc. |
| 59 | const int pthread_attr_t_max_sz = 128; |
| 60 | union __sanitizer_pthread_attr_t { |
Evgeniy Stepanov | 0ecc437 | 2013-03-13 10:20:35 +0000 | [diff] [blame] | 61 | char size[pthread_attr_t_max_sz]; // NOLINT |
Evgeniy Stepanov | 10fd322 | 2013-03-13 09:01:40 +0000 | [diff] [blame] | 62 | void *align; |
| 63 | }; |
Evgeniy Stepanov | 06658ea | 2013-04-04 08:22:52 +0000 | [diff] [blame] | 64 | |
| 65 | uptr __sanitizer_get_sigaction_sa_sigaction(void *act); |
| 66 | void __sanitizer_set_sigaction_sa_sigaction(void *act, uptr cb); |
| 67 | bool __sanitizer_get_sigaction_sa_siginfo(void *act); |
| 68 | |
| 69 | const unsigned struct_sigaction_max_sz = 256; |
| 70 | union __sanitizer_sigaction { |
| 71 | char size[struct_sigaction_max_sz]; // NOLINT |
| 72 | }; |
| 73 | |
| 74 | extern uptr sig_ign; |
| 75 | extern uptr sig_dfl; |
Evgeniy Stepanov | 9530eb7 | 2013-04-23 14:05:15 +0000 | [diff] [blame] | 76 | |
| 77 | uptr __sanitizer_in_addr_sz(int af); |
Evgeniy Stepanov | 1aad6b5 | 2013-05-17 12:51:13 +0000 | [diff] [blame] | 78 | |
| 79 | #if SANITIZER_LINUX |
| 80 | struct __sanitizer_dl_phdr_info { |
| 81 | uptr dlpi_addr; |
| 82 | const char *dlpi_name; |
| 83 | const void *dlpi_phdr; |
| 84 | short dlpi_phnum; |
| 85 | }; |
| 86 | #endif |
Evgeniy Stepanov | 447ef19 | 2013-05-22 12:50:26 +0000 | [diff] [blame] | 87 | |
| 88 | struct __sanitizer_addrinfo { |
| 89 | int ai_flags; |
| 90 | int ai_family; |
| 91 | int ai_socktype; |
| 92 | int ai_protocol; |
Evgeniy Stepanov | 761cabb | 2013-05-22 13:38:02 +0000 | [diff] [blame^] | 93 | #if SANITIZER_LINUX && !SANITIZER_ANDROID |
Evgeniy Stepanov | 447ef19 | 2013-05-22 12:50:26 +0000 | [diff] [blame] | 94 | uptr ai_addrlen; |
Evgeniy Stepanov | 761cabb | 2013-05-22 13:38:02 +0000 | [diff] [blame^] | 95 | #else |
| 96 | unsigned ai_addrlen; |
Evgeniy Stepanov | e0f18f2 | 2013-05-22 13:07:23 +0000 | [diff] [blame] | 97 | #endif |
Evgeniy Stepanov | 447ef19 | 2013-05-22 12:50:26 +0000 | [diff] [blame] | 98 | void *ai_addr; |
| 99 | char *ai_canonname; |
| 100 | struct __sanitizer_addrinfo *ai_next; |
| 101 | }; |
Evgeniy Stepanov | 9358c58 | 2013-02-19 09:19:16 +0000 | [diff] [blame] | 102 | } // namespace __sanitizer |
| 103 | |
| 104 | #endif |