sanitizer_platform_limits_posix.h revision 46f9395baf65e17f1a3f7a3a1deee72a1560ac53
19358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov//===-- sanitizer_platform_limits_posix.h ---------------------------------===// 278c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// 378c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// The LLVM Compiler Infrastructure 478c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// 578c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// This file is distributed under the University of Illinois Open Source 678c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// License. See LICENSE.TXT for details. 778c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// 878c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov//===----------------------------------------------------------------------===// 978c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// 109358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov// This file is a part of Sanitizer common code. 1178c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov// 129358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov// Sizes and layouts of platform-specific POSIX data structures. 1378c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov//===----------------------------------------------------------------------===// 1478c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov 159358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov#ifndef SANITIZER_PLATFORM_LIMITS_POSIX_H 169358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov#define SANITIZER_PLATFORM_LIMITS_POSIX_H 1778c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov 1824e13723f8477d8c42ab8b2a7f4f69fc089842f1Evgeniy Stepanov#include "sanitizer_platform.h" 1924e13723f8477d8c42ab8b2a7f4f69fc089842f1Evgeniy Stepanov 209358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanovnamespace __sanitizer { 2178c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_utsname_sz; 2278c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_stat_sz; 2378c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_stat64_sz; 249358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov extern unsigned struct_rusage_sz; 259358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov extern unsigned struct_tm_sz; 26e4bdda51b3469aa0f6ef6f6c4656419effa48038Evgeniy Stepanov extern unsigned struct_passwd_sz; 27e4bdda51b3469aa0f6ef6f6c4656419effa48038Evgeniy Stepanov extern unsigned struct_sigaction_sz; 28e4bdda51b3469aa0f6ef6f6c4656419effa48038Evgeniy Stepanov extern unsigned struct_itimerval_sz; 29e4bdda51b3469aa0f6ef6f6c4656419effa48038Evgeniy Stepanov extern unsigned pthread_t_sz; 309358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov 3124e13723f8477d8c42ab8b2a7f4f69fc089842f1Evgeniy Stepanov#if SANITIZER_LINUX 3278c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_rlimit_sz; 3378c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_dirent_sz; 3478c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_statfs_sz; 3578c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov extern unsigned struct_epoll_event_sz; 36e4bdda51b3469aa0f6ef6f6c4656419effa48038Evgeniy Stepanov extern unsigned struct_timespec_sz; 3746f9395baf65e17f1a3f7a3a1deee72a1560ac53Alexey Samsonov#endif // SANITIZER_LINUX 3878c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov 3924e13723f8477d8c42ab8b2a7f4f69fc089842f1Evgeniy Stepanov#if SANITIZER_LINUX && !SANITIZER_ANDROID 40e4cded90e63cfe6c59d438dec63b6665f774ac16Evgeniy Stepanov extern unsigned struct_dirent64_sz; 41b711ca6e040d0ac4adb79e688e1a59afcc871d20Evgeniy Stepanov extern unsigned struct_rlimit64_sz; 42b711ca6e040d0ac4adb79e688e1a59afcc871d20Evgeniy Stepanov extern unsigned struct_statfs64_sz; 4346f9395baf65e17f1a3f7a3a1deee72a1560ac53Alexey Samsonov#endif // SANITIZER_LINUX && !SANITIZER_ANDROID 44b711ca6e040d0ac4adb79e688e1a59afcc871d20Evgeniy Stepanov 459358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov void* __sanitizer_get_msghdr_iov_iov_base(void* msg, int idx); 469358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov uptr __sanitizer_get_msghdr_iov_iov_len(void* msg, int idx); 479358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov uptr __sanitizer_get_msghdr_iovlen(void* msg); 489358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov uptr __sanitizer_get_socklen_t(void* socklen_ptr); 4910fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov 5010fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov // This thing depends on the platform. We are only interested in the upper 5110fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov // limit. Verified with a compiler assert in .cc. 5210fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov const int pthread_attr_t_max_sz = 128; 5310fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov union __sanitizer_pthread_attr_t { 540ecc4379bbb04f1d03ceb58f6a0751790fb17c75Evgeniy Stepanov char size[pthread_attr_t_max_sz]; // NOLINT 5510fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov void *align; 5610fd3227546d17c7411241a45ebc143b2031c78dEvgeniy Stepanov }; 579358c58d0aaf1b20f17362af354d4c3c1309276aEvgeniy Stepanov} // namespace __sanitizer 5878c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov 5978c56c3c407d2c92825c86e6af7a0230d6019a1cEvgeniy Stepanov#endif 60