Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/lib/asan/asan_linux.cc b/lib/asan/asan_linux.cc
- index a150b19..7379297 100644
- --- a/lib/asan/asan_linux.cc
- +++ b/lib/asan/asan_linux.cc
- @@ -46,7 +46,7 @@
- #include <link.h>
- #endif
- -#if SANITIZER_ANDROID || SANITIZER_FREEBSD || SANITIZER_SOLARIS
- +#if SANITIZER_ANDROID || SANITIZER_FREEBSD || SANITIZER_SOLARIS || SANITIZER_NONGNU
- #include <ucontext.h>
- extern "C" void* _DYNAMIC;
- #elif SANITIZER_NETBSD
- @@ -139,7 +139,7 @@ void AsanApplyToGlobals(globals_op_fptr op, const void *needle) {
- UNIMPLEMENTED();
- }
- -#if SANITIZER_ANDROID
- +#if SANITIZER_ANDROID || SANITIZER_NONGNU
- // FIXME: should we do anything for Android?
- void AsanCheckDynamicRTPrereqs() {}
- void AsanCheckIncompatibleRT() {}
- diff --git a/lib/interception/interception_linux.cc b/lib/interception/interception_linux.cc
- index 26bfcd8..60f5cf0 100644
- --- a/lib/interception/interception_linux.cc
- +++ b/lib/interception/interception_linux.cc
- @@ -43,7 +43,7 @@ bool GetRealFunctionAddress(const char *func_name, uptr *func_addr,
- }
- // Android and Solaris do not have dlvsym
- -#if !SANITIZER_ANDROID && !SANITIZER_SOLARIS && !SANITIZER_OPENBSD
- +#if !SANITIZER_ANDROID && !SANITIZER_SOLARIS && !SANITIZER_OPENBSD && defined(__GLIBC__)
- void *GetFuncAddrVer(const char *func_name, const char *ver) {
- return dlvsym(RTLD_NEXT, func_name, ver);
- }
- diff --git a/lib/msan/msan_interceptors.cc b/lib/msan/msan_interceptors.cc
- index 497f943..f7b0618 100644
- --- a/lib/msan/msan_interceptors.cc
- +++ b/lib/msan/msan_interceptors.cc
- @@ -1466,6 +1466,7 @@ static int msan_dl_iterate_phdr_cb(__sanitizer_dl_phdr_info *info, SIZE_T size,
- return cbdata->callback(info, size, cbdata->data);
- }
- +/* does not compile with musl
- INTERCEPTOR(void *, shmat, int shmid, const void *shmaddr, int shmflg) {
- ENSURE_MSAN_INITED();
- void *p = REAL(shmat)(shmid, shmaddr, shmflg);
- @@ -1478,6 +1479,7 @@ INTERCEPTOR(void *, shmat, int shmid, const void *shmaddr, int shmflg) {
- }
- return p;
- }
- +*/
- INTERCEPTOR(int, dl_iterate_phdr, dl_iterate_phdr_cb callback, void *data) {
- void *ctx;
- @@ -1694,7 +1696,7 @@ void InitializeInterceptors() {
- INTERCEPT_FUNCTION(tzset);
- INTERCEPT_FUNCTION(atexit);
- INTERCEPT_FUNCTION(__cxa_atexit);
- - INTERCEPT_FUNCTION(shmat);
- + // INTERCEPT_FUNCTION(shmat); // does not compile with musl
- INTERCEPT_FUNCTION(fork);
- MSAN_MAYBE_INTERCEPT_OPENPTY;
- MSAN_MAYBE_INTERCEPT_FORKPTY;
- diff --git a/lib/msan/msan_linux.cc b/lib/msan/msan_linux.cc
- index 0b02088..a29d4c8 100644
- --- a/lib/msan/msan_linux.cc
- +++ b/lib/msan/msan_linux.cc
- @@ -13,7 +13,7 @@
- //===----------------------------------------------------------------------===//
- #include "sanitizer_common/sanitizer_platform.h"
- -#if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD
- +#if SANITIZER_FREEBSD || SANITIZER_LINUX && !SANITIZER_NONGNU || SANITIZER_NETBSD
- #include "msan.h"
- #include "msan_report.h"
- diff --git a/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
- index 2d633c1..b6eb231 100644
- --- a/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
- +++ b/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
- @@ -104,7 +104,7 @@ static void ioctl_table_fill() {
- _(SIOCGETVIFCNT, WRITE, struct_sioc_vif_req_sz);
- #endif
- -#if SANITIZER_LINUX
- +#if SANITIZER_LINUX && !SANITIZER_NONGNU
- // Conflicting request ids.
- // _(CDROMAUDIOBUFSIZ, NONE, 0);
- // _(SNDCTL_TMR_CONTINUE, NONE, 0);
- @@ -365,7 +365,7 @@ static void ioctl_table_fill() {
- _(VT_WAITACTIVE, NONE, 0);
- #endif
- -#if SANITIZER_LINUX && !SANITIZER_ANDROID
- +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
- // _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE
- _(CYGETDEFTHRESH, WRITE, sizeof(int));
- _(CYGETDEFTIMEOUT, WRITE, sizeof(int));
- diff --git a/lib/sanitizer_common/sanitizer_common_syscalls.inc b/lib/sanitizer_common/sanitizer_common_syscalls.inc
- index 469c8eb..24f8786 100644
- --- a/lib/sanitizer_common/sanitizer_common_syscalls.inc
- +++ b/lib/sanitizer_common/sanitizer_common_syscalls.inc
- @@ -2038,7 +2038,7 @@ POST_SYSCALL(setrlimit)(long res, long resource, void *rlim) {
- }
- }
- -#if !SANITIZER_ANDROID
- +#if !SANITIZER_ANDROID && !SANITIZER_NONGNU
- PRE_SYSCALL(prlimit64)(long pid, long resource, const void *new_rlim,
- void *old_rlim) {
- if (new_rlim) PRE_READ(new_rlim, struct_rlimit64_sz);
- diff --git a/lib/sanitizer_common/sanitizer_platform.h b/lib/sanitizer_common/sanitizer_platform.h
- index 82bb1af..7a64a84 100644
- --- a/lib/sanitizer_common/sanitizer_platform.h
- +++ b/lib/sanitizer_common/sanitizer_platform.h
- @@ -26,6 +26,12 @@
- # define SANITIZER_LINUX 0
- #endif
- +#if defined(__linux__) && !defined(__GLIBC__)
- +# define SANITIZER_NONGNU 1
- +#else
- +# define SANITIZER_NONGNU 0
- +#endif
- +
- #if defined(__FreeBSD__)
- # define SANITIZER_FREEBSD 1
- #else
- diff --git a/lib/sanitizer_common/sanitizer_platform_interceptors.h b/lib/sanitizer_common/sanitizer_platform_interceptors.h
- index 4d14665..e91bf97 100644
- --- a/lib/sanitizer_common/sanitizer_platform_interceptors.h
- +++ b/lib/sanitizer_common/sanitizer_platform_interceptors.h
- @@ -40,7 +40,7 @@
- # include "sanitizer_platform_limits_solaris.h"
- #endif
- -#if SANITIZER_LINUX && !SANITIZER_ANDROID
- +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
- # define SI_LINUX_NOT_ANDROID 1
- #else
- # define SI_LINUX_NOT_ANDROID 0
- diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
- index ecc69bc..72571e3 100644
- --- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
- +++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
- @@ -54,7 +54,7 @@
- #include <net/route.h>
- #endif
- -#if !SANITIZER_ANDROID
- +#if !SANITIZER_ANDROID && defined(__GLIBC__)
- #include <fstab.h>
- #include <sys/mount.h>
- #include <sys/timeb.h>
- @@ -62,6 +62,7 @@
- #endif
- #if SANITIZER_LINUX
- +#include <stdio.h>
- #include <malloc.h>
- #include <mntent.h>
- #include <netinet/ether.h>
- @@ -108,12 +109,14 @@ typedef struct user_fpregs elf_fpregset_t;
- #if SANITIZER_LINUX && !SANITIZER_ANDROID
- #include <glob.h>
- -#include <obstack.h>
- +#if !SANITIZER_NONGNU
- +# include <obstack.h>
- +#endif
- #include <mqueue.h>
- -#include <net/if_ppp.h>
- -#include <netax25/ax25.h>
- -#include <netipx/ipx.h>
- -#include <netrom/netrom.h>
- +#include <linux/if_ppp.h>
- +#include <linux/ax25.h>
- +#include <linux/ipx.h>
- +#include <linux/netrom.h>
- #if HAVE_RPC_XDR_H
- # include <rpc/xdr.h>
- #endif
- @@ -196,7 +199,7 @@ namespace __sanitizer {
- unsigned struct_statfs64_sz = sizeof(struct statfs64);
- #endif // SANITIZER_MAC && !SANITIZER_IOS
- -#if !SANITIZER_ANDROID
- +#if !SANITIZER_ANDROID && defined(__GLIBC__)
- unsigned struct_fstab_sz = sizeof(struct fstab);
- unsigned struct_statfs_sz = sizeof(struct statfs);
- unsigned struct_sockaddr_sz = sizeof(struct sockaddr);
- @@ -221,7 +224,7 @@ namespace __sanitizer {
- unsigned struct_itimerspec_sz = sizeof(struct itimerspec);
- #endif // SANITIZER_LINUX
- -#if SANITIZER_LINUX && !SANITIZER_ANDROID
- +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
- // Use pre-computed size of struct ustat to avoid <sys/ustat.h> which
- // has been removed from glibc 2.28.
- #if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \
- @@ -256,9 +259,9 @@ namespace __sanitizer {
- #endif
- -#if SANITIZER_LINUX && !SANITIZER_ANDROID
- +#if (SANITIZER_LINUX && !SANITIZER_NONGNU) && !SANITIZER_ANDROID
- unsigned struct_shminfo_sz = sizeof(struct shminfo);
- - unsigned struct_shm_info_sz = sizeof(struct shm_info);
- + unsigned struct_shm_info_sz = sizeof(nstruct shm_info);
- int shmctl_ipc_stat = (int)IPC_STAT;
- int shmctl_ipc_info = (int)IPC_INFO;
- int shmctl_shm_info = (int)SHM_INFO;
- @@ -292,7 +295,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(ElfW(Phdr));
- unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
- #endif
- -#if SANITIZER_LINUX && !SANITIZER_ANDROID
- +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
- int glob_nomatch = GLOB_NOMATCH;
- int glob_altdirfunc = GLOB_ALTDIRFUNC;
- #endif
- @@ -386,7 +389,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
- unsigned struct_termios_sz = sizeof(struct termios);
- unsigned struct_winsize_sz = sizeof(struct winsize);
- -#if SANITIZER_LINUX
- +#if SANITIZER_LINUX && !SANITIZER_NONGNU
- unsigned struct_arpreq_sz = sizeof(struct arpreq);
- unsigned struct_cdrom_msf_sz = sizeof(struct cdrom_msf);
- unsigned struct_cdrom_multisession_sz = sizeof(struct cdrom_multisession);
- @@ -436,7 +439,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
- unsigned struct_vt_mode_sz = sizeof(struct vt_mode);
- #endif // SANITIZER_LINUX
- -#if SANITIZER_LINUX && !SANITIZER_ANDROID
- +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
- unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct);
- unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor);
- #if EV_VERSION > (0x010000)
- @@ -803,7 +806,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
- unsigned IOCTL_VT_WAITACTIVE = VT_WAITACTIVE;
- #endif // SANITIZER_LINUX
- -#if SANITIZER_LINUX && !SANITIZER_ANDROID
- +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
- unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;
- unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;
- unsigned IOCTL_CYGETMON = CYGETMON;
- @@ -958,7 +961,7 @@ CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_phdr);
- CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_phnum);
- #endif // SANITIZER_LINUX || SANITIZER_FREEBSD
- -#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID
- +#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID && !SANITIZER_NONGNU
- CHECK_TYPE_SIZE(glob_t);
- CHECK_SIZE_AND_OFFSET(glob_t, gl_pathc);
- CHECK_SIZE_AND_OFFSET(glob_t, gl_pathv);
- @@ -992,6 +995,7 @@ CHECK_TYPE_SIZE(iovec);
- CHECK_SIZE_AND_OFFSET(iovec, iov_base);
- CHECK_SIZE_AND_OFFSET(iovec, iov_len);
- +#if !SANITIZER_NONGNU
- CHECK_TYPE_SIZE(msghdr);
- CHECK_SIZE_AND_OFFSET(msghdr, msg_name);
- CHECK_SIZE_AND_OFFSET(msghdr, msg_namelen);
- @@ -1005,6 +1009,7 @@ CHECK_TYPE_SIZE(cmsghdr);
- CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_len);
- CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_level);
- CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_type);
- +#endif
- #ifndef __GLIBC_PREREQ
- #define __GLIBC_PREREQ(x, y) 0
- @@ -1114,7 +1119,7 @@ CHECK_SIZE_AND_OFFSET(mntent, mnt_passno);
- CHECK_TYPE_SIZE(ether_addr);
- -#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID
- +#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID && !SANITIZER_NONGNU
- CHECK_TYPE_SIZE(ipc_perm);
- # if SANITIZER_FREEBSD
- CHECK_SIZE_AND_OFFSET(ipc_perm, key);
- @@ -1175,11 +1180,11 @@ CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_dstaddr);
- CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_data);
- #endif
- -#if SANITIZER_LINUX
- +#if SANITIZER_LINUX && !SANITIZER_NONGNU
- COMPILER_CHECK(sizeof(__sanitizer_struct_mallinfo) == sizeof(struct mallinfo));
- #endif
- -#if !SANITIZER_ANDROID
- +#if !SANITIZER_ANDROID && !SANITIZER_NONGNU
- CHECK_TYPE_SIZE(timeb);
- CHECK_SIZE_AND_OFFSET(timeb, time);
- CHECK_SIZE_AND_OFFSET(timeb, millitm);
- @@ -1225,7 +1230,7 @@ COMPILER_CHECK(__sanitizer_XDR_DECODE == XDR_DECODE);
- COMPILER_CHECK(__sanitizer_XDR_FREE == XDR_FREE);
- #endif
- -#if SANITIZER_LINUX && !SANITIZER_ANDROID
- +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
- COMPILER_CHECK(sizeof(__sanitizer_FILE) <= sizeof(FILE));
- CHECK_SIZE_AND_OFFSET(FILE, _flags);
- CHECK_SIZE_AND_OFFSET(FILE, _IO_read_ptr);
- @@ -1244,7 +1249,7 @@ CHECK_SIZE_AND_OFFSET(FILE, _chain);
- CHECK_SIZE_AND_OFFSET(FILE, _fileno);
- #endif
- -#if SANITIZER_LINUX && !SANITIZER_ANDROID
- +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
- COMPILER_CHECK(sizeof(__sanitizer__obstack_chunk) <= sizeof(_obstack_chunk));
- CHECK_SIZE_AND_OFFSET(_obstack_chunk, limit);
- CHECK_SIZE_AND_OFFSET(_obstack_chunk, prev);
- diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/lib/sanitizer_common/sanitizer_platform_limits_posix.h
- index de69852..38ca0bc 100644
- --- a/lib/sanitizer_common/sanitizer_platform_limits_posix.h
- +++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.h
- @@ -52,7 +52,7 @@ namespace __sanitizer {
- extern unsigned struct_regex_sz;
- extern unsigned struct_regmatch_sz;
- -#if !SANITIZER_ANDROID
- +#if !SANITIZER_ANDROID && defined(__GLIBC__)
- extern unsigned struct_fstab_sz;
- extern unsigned struct_statfs_sz;
- extern unsigned struct_sockaddr_sz;
- diff --git a/lib/tsan/rtl/tsan_platform_linux.cc b/lib/tsan/rtl/tsan_platform_linux.cc
- index d2ce607..b57e95c 100644
- --- a/lib/tsan/rtl/tsan_platform_linux.cc
- +++ b/lib/tsan/rtl/tsan_platform_linux.cc
- @@ -302,7 +302,7 @@ void InitializePlatform() {
- // This is required to properly "close" the fds, because we do not see internal
- // closes within glibc. The code is a pure hack.
- int ExtractResolvFDs(void *state, int *fds, int nfd) {
- -#if SANITIZER_LINUX && !SANITIZER_ANDROID
- +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
- int cnt = 0;
- struct __res_state *statp = (struct __res_state*)state;
- for (int i = 0; i < MAXNS && cnt < nfd; i++) {
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement