llvm_39: disable sanitizers/xray bits when using musl
Don't have a fix for this handy and don't need it yet so for now just disable.
This commit is contained in:
parent
b39fb5525b
commit
a1bf9b6094
@ -107,8 +107,6 @@ in stdenv.mkDerivation rec {
|
|||||||
substituteInPlace lib/esan/esan_sideline_linux.cpp \
|
substituteInPlace lib/esan/esan_sideline_linux.cpp \
|
||||||
--replace 'struct sigaltstack' 'stack_t'
|
--replace 'struct sigaltstack' 'stack_t'
|
||||||
)
|
)
|
||||||
'' + stdenv.lib.optionalString stdenv.hostPlatform.isMusl ''
|
|
||||||
patch -p1 -i ${./sanitizers-nongnu.patch} -d projects/compiler-rt
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# hacky fix: created binaries need to be run before installation
|
# hacky fix: created binaries need to be run before installation
|
||||||
@ -138,6 +136,10 @@ in stdenv.mkDerivation rec {
|
|||||||
"-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
|
"-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
|
||||||
"-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.targetPlatform.config}"
|
"-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.targetPlatform.config}"
|
||||||
"-DTARGET_TRIPLE=${stdenv.targetPlatform.config}"
|
"-DTARGET_TRIPLE=${stdenv.targetPlatform.config}"
|
||||||
|
# Not yet supported
|
||||||
|
"-DCOMPILER_RT_BUILD_SANITIZERS=OFF"
|
||||||
|
"-DCOMPILER_RT_BUILD_XRAY=OFF"
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
|
@ -1,368 +0,0 @@
|
|||||||
From dac4d3912378069b44340204e5fc6237aa1baf94 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Matthias Maier <tamiko@43-1.org>
|
|
||||||
Date: Fri, 5 May 2017 17:47:39 +0000
|
|
||||||
Subject: [PATCH] Musl patches
|
|
||||||
|
|
||||||
Ported to compiler-rt-sanitizers-4.0.0. Taken from
|
|
||||||
|
|
||||||
https://gist.githubusercontent.com/pwaller/2337f3290f12634cad3e3730cff0a6c1/raw/83c87a8585e2f9662494db5662e5361beb093c26/nongnu.patch
|
|
||||||
---
|
|
||||||
lib/asan/asan_linux.cc | 4 +--
|
|
||||||
lib/interception/interception_linux.cc | 2 +-
|
|
||||||
lib/interception/interception_linux.h | 2 +-
|
|
||||||
lib/msan/msan_linux.cc | 2 +-
|
|
||||||
.../sanitizer_common_interceptors_ioctl.inc | 4 +--
|
|
||||||
lib/sanitizer_common/sanitizer_common_syscalls.inc | 2 +-
|
|
||||||
lib/sanitizer_common/sanitizer_linux_libcdep.cc | 12 +++----
|
|
||||||
lib/sanitizer_common/sanitizer_platform.h | 7 ++++
|
|
||||||
.../sanitizer_platform_interceptors.h | 2 +-
|
|
||||||
.../sanitizer_platform_limits_posix.cc | 39 +++++++++++++---------
|
|
||||||
lib/tsan/rtl/tsan_platform_linux.cc | 2 +-
|
|
||||||
11 files changed, 46 insertions(+), 32 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/asan/asan_linux.cc b/lib/asan/asan_linux.cc
|
|
||||||
index c051573dd..e295f6004 100644
|
|
||||||
--- a/lib/asan/asan_linux.cc
|
|
||||||
+++ b/lib/asan/asan_linux.cc
|
|
||||||
@@ -39,7 +39,7 @@
|
|
||||||
#include <sys/link_elf.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-#if SANITIZER_ANDROID || SANITIZER_FREEBSD
|
|
||||||
+#if SANITIZER_ANDROID || SANITIZER_FREEBSD || SANITIZER_NONGNU
|
|
||||||
#include <ucontext.h>
|
|
||||||
extern "C" void* _DYNAMIC;
|
|
||||||
#else
|
|
||||||
@@ -80,7 +80,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 6e908ac01..8f23d9adc 100644
|
|
||||||
--- a/lib/interception/interception_linux.cc
|
|
||||||
+++ b/lib/interception/interception_linux.cc
|
|
||||||
@@ -24,7 +24,7 @@ bool GetRealFunctionAddress(const char *func_name, uptr *func_addr,
|
|
||||||
return real == wrapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
-#if !defined(__ANDROID__) // android does not have dlvsym
|
|
||||||
+#if !defined(__ANDROID__) && !SANITIZER_NONGNU // android does not have dlvsym
|
|
||||||
void *GetFuncAddrVer(const char *func_name, const char *ver) {
|
|
||||||
return dlvsym(RTLD_NEXT, func_name, ver);
|
|
||||||
}
|
|
||||||
diff --git a/lib/interception/interception_linux.h b/lib/interception/interception_linux.h
|
|
||||||
index 27a66c882..3b559a303 100644
|
|
||||||
--- a/lib/interception/interception_linux.h
|
|
||||||
+++ b/lib/interception/interception_linux.h
|
|
||||||
@@ -34,7 +34,7 @@ void *GetFuncAddrVer(const char *func_name, const char *ver);
|
|
||||||
(::__interception::uptr) & (func), \
|
|
||||||
(::__interception::uptr) & WRAP(func))
|
|
||||||
|
|
||||||
-#if !defined(__ANDROID__) // android does not have dlvsym
|
|
||||||
+#if !defined(__ANDROID__) && !SANITIZER_NONGNU // android does not have dlvsym
|
|
||||||
#define INTERCEPT_FUNCTION_VER_LINUX_OR_FREEBSD(func, symver) \
|
|
||||||
(::__interception::real_##func = (func##_f)( \
|
|
||||||
unsigned long)::__interception::GetFuncAddrVer(#func, symver))
|
|
||||||
diff --git a/lib/msan/msan_linux.cc b/lib/msan/msan_linux.cc
|
|
||||||
index 0a687f620..0852d97d7 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
|
|
||||||
+#if SANITIZER_FREEBSD || SANITIZER_LINUX && !SANITIZER_NONGNU
|
|
||||||
|
|
||||||
#include "msan.h"
|
|
||||||
#include "msan_thread.h"
|
|
||||||
diff --git a/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
|
|
||||||
index 4ed9afedf..64f584e93 100644
|
|
||||||
--- a/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
|
|
||||||
+++ b/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
|
|
||||||
@@ -100,7 +100,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);
|
|
||||||
@@ -361,7 +361,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 469c8eb7e..24f87867d 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_linux_libcdep.cc b/lib/sanitizer_common/sanitizer_linux_libcdep.cc
|
|
||||||
index f99f0b594..3a773a94e 100644
|
|
||||||
--- a/lib/sanitizer_common/sanitizer_linux_libcdep.cc
|
|
||||||
+++ b/lib/sanitizer_common/sanitizer_linux_libcdep.cc
|
|
||||||
@@ -152,7 +152,7 @@ bool SanitizerGetThreadName(char *name, int max_len) {
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
-#if !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_GO
|
|
||||||
+#if !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_GO && !SANITIZER_NONGNU
|
|
||||||
static uptr g_tls_size;
|
|
||||||
|
|
||||||
#ifdef __i386__
|
|
||||||
@@ -180,11 +180,11 @@ void InitTlsSize() {
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
void InitTlsSize() { }
|
|
||||||
-#endif // !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_GO
|
|
||||||
+#endif // !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_GO && !SANITIZER_NONGNU
|
|
||||||
|
|
||||||
#if (defined(__x86_64__) || defined(__i386__) || defined(__mips__) \
|
|
||||||
|| defined(__aarch64__) || defined(__powerpc64__) || defined(__s390__)) \
|
|
||||||
- && SANITIZER_LINUX && !SANITIZER_ANDROID
|
|
||||||
+ && SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
|
|
||||||
// sizeof(struct pthread) from glibc.
|
|
||||||
static atomic_uintptr_t kThreadDescriptorSize;
|
|
||||||
|
|
||||||
@@ -338,7 +338,7 @@ uptr ThreadSelf() {
|
|
||||||
|
|
||||||
#if !SANITIZER_GO
|
|
||||||
static void GetTls(uptr *addr, uptr *size) {
|
|
||||||
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
|
|
||||||
+#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
|
|
||||||
# if defined(__x86_64__) || defined(__i386__) || defined(__s390__)
|
|
||||||
*addr = ThreadSelf();
|
|
||||||
*size = GetTlsSize();
|
|
||||||
@@ -364,7 +364,7 @@ static void GetTls(uptr *addr, uptr *size) {
|
|
||||||
*addr = (uptr) dtv[2];
|
|
||||||
*size = (*addr == 0) ? 0 : ((uptr) segbase[0] - (uptr) dtv[2]);
|
|
||||||
}
|
|
||||||
-#elif SANITIZER_ANDROID
|
|
||||||
+#elif SANITIZER_ANDROID || SANITIZER_NONGNU
|
|
||||||
*addr = 0;
|
|
||||||
*size = 0;
|
|
||||||
#else
|
|
||||||
@@ -375,7 +375,7 @@ static void GetTls(uptr *addr, uptr *size) {
|
|
||||||
|
|
||||||
#if !SANITIZER_GO
|
|
||||||
uptr GetTlsSize() {
|
|
||||||
-#if SANITIZER_FREEBSD || SANITIZER_ANDROID
|
|
||||||
+#if SANITIZER_FREEBSD || SANITIZER_ANDROID || SANITIZER_NONGNU
|
|
||||||
uptr addr, size;
|
|
||||||
GetTls(&addr, &size);
|
|
||||||
return size;
|
|
||||||
diff --git a/lib/sanitizer_common/sanitizer_platform.h b/lib/sanitizer_common/sanitizer_platform.h
|
|
||||||
index d9a8e8df1..fe01c5744 100644
|
|
||||||
--- a/lib/sanitizer_common/sanitizer_platform.h
|
|
||||||
+++ b/lib/sanitizer_common/sanitizer_platform.h
|
|
||||||
@@ -162,6 +162,13 @@
|
|
||||||
# define SANITIZER_PPC64V2 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+
|
|
||||||
+#if defined(__linux__) && !defined(__GLIBC__)
|
|
||||||
+# define SANITIZER_NONGNU 1
|
|
||||||
+#else
|
|
||||||
+# define SANITIZER_NONGNU 0
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
// By default we allow to use SizeClassAllocator64 on 64-bit platform.
|
|
||||||
// But in some cases (e.g. AArch64's 39-bit address space) SizeClassAllocator64
|
|
||||||
// does not work well and we need to fallback to SizeClassAllocator32.
|
|
||||||
diff --git a/lib/sanitizer_common/sanitizer_platform_interceptors.h b/lib/sanitizer_common/sanitizer_platform_interceptors.h
|
|
||||||
index 62875d11a..212e6e882 100644
|
|
||||||
--- a/lib/sanitizer_common/sanitizer_platform_interceptors.h
|
|
||||||
+++ b/lib/sanitizer_common/sanitizer_platform_interceptors.h
|
|
||||||
@@ -23,7 +23,7 @@
|
|
||||||
# define SI_NOT_WINDOWS 0
|
|
||||||
#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 683f019d7..fd4880962 100644
|
|
||||||
--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
|
|
||||||
+++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
|
|
||||||
@@ -14,6 +14,8 @@
|
|
||||||
|
|
||||||
#include "sanitizer_platform.h"
|
|
||||||
|
|
||||||
+#define _LINUX_SYSINFO_H
|
|
||||||
+
|
|
||||||
#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_MAC
|
|
||||||
// Tests in this file assume that off_t-dependent data structures match the
|
|
||||||
// libc ABI. For example, struct dirent here is what readdir() function (as
|
|
||||||
@@ -139,12 +141,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>
|
|
||||||
#elif HAVE_TIRPC_RPC_XDR_H
|
|
||||||
@@ -160,7 +164,8 @@ typedef struct user_fpregs elf_fpregset_t;
|
|
||||||
# include <sys/procfs.h>
|
|
||||||
#endif
|
|
||||||
#include <sys/user.h>
|
|
||||||
-#include <sys/ustat.h>
|
|
||||||
+// #include <sys/ustat.h>
|
|
||||||
+#include <sys/statfs.h>
|
|
||||||
#include <linux/cyclades.h>
|
|
||||||
#include <linux/if_eql.h>
|
|
||||||
#include <linux/if_plip.h>
|
|
||||||
@@ -252,7 +257,7 @@ namespace __sanitizer {
|
|
||||||
unsigned struct_itimerspec_sz = sizeof(struct itimerspec);
|
|
||||||
#endif // SANITIZER_LINUX || SANITIZER_FREEBSD
|
|
||||||
|
|
||||||
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
|
|
||||||
+#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
|
|
||||||
unsigned struct_ustat_sz = sizeof(struct ustat);
|
|
||||||
unsigned struct_rlimit64_sz = sizeof(struct rlimit64);
|
|
||||||
unsigned struct_statvfs64_sz = sizeof(struct statvfs64);
|
|
||||||
@@ -310,7 +315,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(ElfW(Phdr));
|
|
||||||
unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID
|
|
||||||
+#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID && !SANITIZER_NONGNU
|
|
||||||
int glob_nomatch = GLOB_NOMATCH;
|
|
||||||
int glob_altdirfunc = GLOB_ALTDIRFUNC;
|
|
||||||
#endif
|
|
||||||
@@ -404,7 +409,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);
|
|
||||||
@@ -454,7 +459,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
|
|
||||||
unsigned struct_vt_mode_sz = sizeof(struct vt_mode);
|
|
||||||
#endif // SANITIZER_LINUX || SANITIZER_FREEBSD
|
|
||||||
|
|
||||||
-#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)
|
|
||||||
@@ -822,7 +827,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
|
|
||||||
unsigned IOCTL_VT_WAITACTIVE = VT_WAITACTIVE;
|
|
||||||
#endif // SANITIZER_LINUX || SANITIZER_FREEBSD
|
|
||||||
|
|
||||||
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
|
|
||||||
+#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
|
|
||||||
unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;
|
|
||||||
unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;
|
|
||||||
unsigned IOCTL_CYGETMON = CYGETMON;
|
|
||||||
@@ -985,7 +990,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);
|
|
||||||
@@ -1019,6 +1024,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);
|
|
||||||
@@ -1032,6 +1038,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
|
|
||||||
|
|
||||||
COMPILER_CHECK(sizeof(__sanitizer_dirent) <= sizeof(dirent));
|
|
||||||
CHECK_SIZE_AND_OFFSET(dirent, d_ino);
|
|
||||||
@@ -1134,7 +1141,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);
|
|
||||||
@@ -1195,7 +1202,7 @@ 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_mallinfo) == sizeof(struct mallinfo));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -1245,7 +1252,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);
|
|
||||||
@@ -1264,7 +1271,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/tsan/rtl/tsan_platform_linux.cc b/lib/tsan/rtl/tsan_platform_linux.cc
|
|
||||||
index 3313288a7..103c7b6b9 100644
|
|
||||||
--- a/lib/tsan/rtl/tsan_platform_linux.cc
|
|
||||||
+++ b/lib/tsan/rtl/tsan_platform_linux.cc
|
|
||||||
@@ -287,7 +287,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;
|
|
||||||
__res_state *statp = (__res_state*)state;
|
|
||||||
for (int i = 0; i < MAXNS && cnt < nfd; i++) {
|
|
||||||
--
|
|
||||||
2.16.2
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user