Module Name: src Committed By: christos Date: Tue May 31 20:47:26 UTC 2016
Modified Files: src/external/gpl3/gcc/dist/libsanitizer/asan: asan_interceptors.h asan_linux.cc asan_mapping.h asan_stack.h src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common: sanitizer_common.h sanitizer_common_interceptors.inc sanitizer_internal_defs.h sanitizer_libignore.cc sanitizer_linux.cc sanitizer_linux.h sanitizer_linux_libcdep.cc sanitizer_platform.h sanitizer_platform_interceptors.h sanitizer_platform_limits_posix.cc sanitizer_platform_limits_posix.h sanitizer_procmaps_common.cc sanitizer_syscall_generic.inc sanitizer_unwind_posix_libcdep.cc src/external/gpl3/gcc/dist/libsanitizer/tsan: tsan_interceptors.cc src/external/gpl3/gcc/dist/libsanitizer/ubsan: ubsan_value.h Log Message: First steps to port this to NetBSD (compiles now but missing stuff) To generate a diff of this commit: cvs rdiff -u -r1.1.1.2 -r1.2 \ src/external/gpl3/gcc/dist/libsanitizer/asan/asan_interceptors.h \ src/external/gpl3/gcc/dist/libsanitizer/asan/asan_mapping.h \ src/external/gpl3/gcc/dist/libsanitizer/asan/asan_stack.h cvs rdiff -u -r1.7 -r1.8 \ src/external/gpl3/gcc/dist/libsanitizer/asan/asan_linux.cc cvs rdiff -u -r1.1.1.2 -r1.2 \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common.h \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h cvs rdiff -u -r1.3 -r1.4 \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_internal_defs.h \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc cvs rdiff -u -r1.1.1.1 -r1.2 \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_libignore.cc \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.h \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform.h \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_procmaps_common.cc \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_unwind_posix_libcdep.cc cvs rdiff -u -r1.1.1.2 -r1.2 \ src/external/gpl3/gcc/dist/libsanitizer/tsan/tsan_interceptors.cc cvs rdiff -u -r1.1.1.1 -r1.2 \ src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_value.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/gpl3/gcc/dist/libsanitizer/asan/asan_interceptors.h diff -u src/external/gpl3/gcc/dist/libsanitizer/asan/asan_interceptors.h:1.1.1.2 src/external/gpl3/gcc/dist/libsanitizer/asan/asan_interceptors.h:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/asan/asan_interceptors.h:1.1.1.2 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/asan/asan_interceptors.h Tue May 31 16:47:25 2016 @@ -34,7 +34,7 @@ # define ASAN_INTERCEPT_FORK 0 #endif -#if SANITIZER_FREEBSD || SANITIZER_LINUX +#if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD # define ASAN_USE_ALIAS_ATTRIBUTE_FOR_INDEX 1 #else # define ASAN_USE_ALIAS_ATTRIBUTE_FOR_INDEX 0 Index: src/external/gpl3/gcc/dist/libsanitizer/asan/asan_mapping.h diff -u src/external/gpl3/gcc/dist/libsanitizer/asan/asan_mapping.h:1.1.1.2 src/external/gpl3/gcc/dist/libsanitizer/asan/asan_mapping.h:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/asan/asan_mapping.h:1.1.1.2 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/asan/asan_mapping.h Tue May 31 16:47:25 2016 @@ -97,7 +97,7 @@ static const u64 kFreeBSD_ShadowOffset64 # if SANITIZER_WORDSIZE == 32 # if defined(__mips__) # define SHADOW_OFFSET kMIPS32_ShadowOffset32 -# elif SANITIZER_FREEBSD +# elif SANITIZER_FREEBSD || SANITIZER_NETBSD # define SHADOW_OFFSET kFreeBSD_ShadowOffset32 # else # if SANITIZER_IOS @@ -111,7 +111,7 @@ static const u64 kFreeBSD_ShadowOffset64 # define SHADOW_OFFSET kAArch64_ShadowOffset64 # elif defined(__powerpc64__) # define SHADOW_OFFSET kPPC64_ShadowOffset64 -# elif SANITIZER_FREEBSD +# elif SANITIZER_FREEBSD || SANITIZER_NETBSD # define SHADOW_OFFSET kFreeBSD_ShadowOffset64 # elif SANITIZER_MAC # define SHADOW_OFFSET kDefaultShadowOffset64 Index: src/external/gpl3/gcc/dist/libsanitizer/asan/asan_stack.h diff -u src/external/gpl3/gcc/dist/libsanitizer/asan/asan_stack.h:1.1.1.2 src/external/gpl3/gcc/dist/libsanitizer/asan/asan_stack.h:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/asan/asan_stack.h:1.1.1.2 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/asan/asan_stack.h Tue May 31 16:47:25 2016 @@ -36,7 +36,7 @@ void GetStackTraceWithPcBpAndContext(Buf // On FreeBSD the slow unwinding that leverages _Unwind_Backtrace() // yields the call stack of the signal's handler and not of the code // that raised the signal (as it does on Linux). - if (SANITIZER_FREEBSD && t->isInDeadlySignal()) fast = true; + if ((SANITIZER_NETBSD || SANITIZER_FREEBSD) && t->isInDeadlySignal()) fast = true; uptr stack_top = t->stack_top(); uptr stack_bottom = t->stack_bottom(); ScopedUnwinding unwind_scope(t); Index: src/external/gpl3/gcc/dist/libsanitizer/asan/asan_linux.cc diff -u src/external/gpl3/gcc/dist/libsanitizer/asan/asan_linux.cc:1.7 src/external/gpl3/gcc/dist/libsanitizer/asan/asan_linux.cc:1.8 --- src/external/gpl3/gcc/dist/libsanitizer/asan/asan_linux.cc:1.7 Sun Jan 24 04:43:38 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/asan/asan_linux.cc Tue May 31 16:47:25 2016 @@ -37,6 +37,10 @@ #if SANITIZER_FREEBSD #include <sys/link_elf.h> #endif +#if SANITIZER_NETBSD +#include <link_elf.h> +extern Elf_Dyn _DYNAMIC; +#endif #if SANITIZER_ANDROID || SANITIZER_FREEBSD #include <ucontext.h> @@ -207,6 +211,10 @@ void GetPcSpBp(void *context, uptr *pc, *pc = ucontext->uc_mcontext.mc_rip; *bp = ucontext->uc_mcontext.mc_rbp; *sp = ucontext->uc_mcontext.mc_rsp; +# elif SANITIZER_NETBSD + *pc = ucontext->uc_mcontext.__gregs[_REG_RIP]; + *bp = ucontext->uc_mcontext.__gregs[_REG_RBP]; + *sp = ucontext->uc_mcontext.__gregs[_REG_RSP]; # else ucontext_t *ucontext = (ucontext_t*)context; *pc = ucontext->uc_mcontext.gregs[REG_RIP]; @@ -219,6 +227,11 @@ void GetPcSpBp(void *context, uptr *pc, *pc = ucontext->uc_mcontext.mc_eip; *bp = ucontext->uc_mcontext.mc_ebp; *sp = ucontext->uc_mcontext.mc_esp; +# elif SANITIZER_FREEBSD + ucontext_t *ucontext = (ucontext_t*)context; + *pc = ucontext->uc_mcontext.__gregs[_REG_EIP]; + *bp = ucontext->uc_mcontext.__gregs[_REG_EBP]; + *sp = ucontext->uc_mcontext.__gregs[_REG_ESP]; # else ucontext_t *ucontext = (ucontext_t*)context; *pc = ucontext->uc_mcontext.gregs[REG_EIP]; Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common.h diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common.h:1.1.1.2 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common.h:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common.h:1.1.1.2 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common.h Tue May 31 16:47:25 2016 @@ -521,7 +521,7 @@ const uptr kPthreadDestructorIterations // Callback type for iterating over a set of memory ranges. typedef void (*RangeIteratorCallback)(uptr begin, uptr end, void *arg); -#if (SANITIZER_FREEBSD || SANITIZER_LINUX) && !defined(SANITIZER_GO) +#if (SANITIZER_NETBSD || SANITIZER_FREEBSD || SANITIZER_LINUX) && !defined(SANITIZER_GO) extern uptr indirect_call_wrapper; void SetIndirectCallWrapper(uptr wrapper); Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc:1.1.1.2 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc:1.1.1.2 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc Tue May 31 16:47:25 2016 @@ -11,7 +11,7 @@ //===----------------------------------------------------------------------===// #include "sanitizer_platform.h" -#if SANITIZER_FREEBSD || SANITIZER_LINUX +#if SANITIZER_NETBSD || SANITIZER_FREEBSD || SANITIZER_LINUX #include "sanitizer_common.h" #include "sanitizer_flags.h" @@ -24,7 +24,7 @@ #include "sanitizer_stacktrace.h" #include "sanitizer_symbolizer.h" -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD #include <asm/param.h> #endif @@ -55,6 +55,10 @@ extern "C" { } extern char **environ; // provided by crt1 #endif // SANITIZER_FREEBSD +#if SANITIZER_NETBSD +#include <sys/sysctl.h> +extern char **environ; // provided by crt1 +#endif // SANITIZER_NETBSD #if !SANITIZER_ANDROID #include <sys/signal.h> @@ -97,7 +101,7 @@ namespace __sanitizer { // --------------- sanitizer_libc.h uptr internal_mmap(void *addr, uptr length, int prot, int flags, int fd, u64 offset) { -#if SANITIZER_FREEBSD || SANITIZER_LINUX_USES_64BIT_SYSCALLS +#if SANITIZER_NETBSD || SANITIZER_FREEBSD || SANITIZER_LINUX_USES_64BIT_SYSCALLS return internal_syscall(SYSCALL(mmap), (uptr)addr, length, prot, flags, fd, offset); #else @@ -156,7 +160,7 @@ uptr internal_ftruncate(fd_t fd, uptr si return res; } -#if !SANITIZER_LINUX_USES_64BIT_SYSCALLS && !SANITIZER_FREEBSD +#if !SANITIZER_LINUX_USES_64BIT_SYSCALLS && !SANITIZER_FREEBSD && !SANITIZER_NETBSD static void stat64_to_stat(struct stat64 *in, struct stat *out) { internal_memset(out, 0, sizeof(*out)); out->st_dev = in->st_dev; @@ -177,7 +181,7 @@ static void stat64_to_stat(struct stat64 #endif uptr internal_stat(const char *path, void *buf) { -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD return internal_syscall(SYSCALL(stat), path, buf); #elif SANITIZER_USES_CANONICAL_LINUX_SYSCALLS return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, @@ -193,7 +197,7 @@ uptr internal_stat(const char *path, voi } uptr internal_lstat(const char *path, void *buf) { -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD return internal_syscall(SYSCALL(lstat), path, buf); #elif SANITIZER_USES_CANONICAL_LINUX_SYSCALLS return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, @@ -209,7 +213,7 @@ uptr internal_lstat(const char *path, vo } uptr internal_fstat(fd_t fd, void *buf) { -#if SANITIZER_FREEBSD || SANITIZER_LINUX_USES_64BIT_SYSCALLS +#if SANITIZER_FREEBSD || SANITIZER_LINUX_USES_64BIT_SYSCALLS || SANITIZER_NETBSD return internal_syscall(SYSCALL(fstat), fd, (uptr)buf); #else struct stat64 buf64; @@ -265,7 +269,7 @@ uptr internal_sched_yield() { } void internal__exit(int exitcode) { -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD internal_syscall(SYSCALL(exit), exitcode); #else internal_syscall(SYSCALL(exit_group), exitcode); @@ -293,7 +297,7 @@ bool FileExists(const char *filename) { } uptr GetTid() { -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD return (uptr)pthread_self(); #else return internal_syscall(SYSCALL(gettid)); @@ -301,7 +305,7 @@ uptr GetTid() { } u64 NanoTime() { -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD timeval tv; #else kernel_timeval tv; @@ -315,7 +319,7 @@ u64 NanoTime() { // 'environ' array (on FreeBSD) and does not use libc. This function should be // called first inside __asan_init. const char *GetEnv(const char *name) { -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD if (::environ != 0) { uptr NameLen = internal_strlen(name); for (char **Env = ::environ; *Env != 0; Env++) { @@ -416,6 +420,7 @@ void GetThreadStackAndTls(bool main, upt } #endif // SANITIZER_GO +#if !SANITIZER_NETBSD enum MutexState { MtxUnlocked = 0, MtxLocked = 1, @@ -460,6 +465,7 @@ void BlockingMutex::CheckLocked() { atomic_uint32_t *m = reinterpret_cast<atomic_uint32_t *>(&opaque_storage_); CHECK_NE(MtxUnlocked, atomic_load(m, memory_order_relaxed)); } +#endif // !SANITIZER_NETBSD // ----------------- sanitizer_linux.h // The actual size of this structure is specified by d_reclen. @@ -571,7 +577,7 @@ int internal_sigaction_norestorer(int si uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set, __sanitizer_sigset_t *oldset) { -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD return internal_syscall(SYSCALL(sigprocmask), how, set, oldset); #else __sanitizer_kernel_sigset_t *k_set = (__sanitizer_kernel_sigset_t *)set; @@ -685,7 +691,7 @@ uptr ReadBinaryName(/*out*/char *buf, up CHECK_LT(module_name_len, buf_len); return module_name_len; } -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD const int Mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 }; size_t Size = buf_len; bool IsErr = (sysctl(Mib, 4, buf, &Size, NULL, 0) != 0); @@ -871,4 +877,4 @@ bool IsDeadlySignal(int signum) { } // namespace __sanitizer -#endif // SANITIZER_FREEBSD || SANITIZER_LINUX +#endif // SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h:1.1.1.2 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h:1.1.1.2 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h Tue May 31 16:47:25 2016 @@ -33,6 +33,12 @@ # define SI_FREEBSD 0 #endif +#if SANITIZER_NETBSD +# define SI_NETBSD 1 +#else +# define SI_NETBSD 0 +#endif + #if SANITIZER_LINUX # define SI_LINUX 1 #else @@ -150,7 +156,7 @@ #define SANITIZER_INTERCEPT_SIGWAITINFO SI_LINUX_NOT_ANDROID #define SANITIZER_INTERCEPT_SIGTIMEDWAIT SI_LINUX_NOT_ANDROID #define SANITIZER_INTERCEPT_SIGSETOPS \ - SI_FREEBSD || SI_MAC || SI_LINUX_NOT_ANDROID + SI_NETBSD || SI_FREEBSD || SI_MAC || SI_LINUX_NOT_ANDROID #define SANITIZER_INTERCEPT_SIGPENDING SI_NOT_WINDOWS #define SANITIZER_INTERCEPT_SIGPROCMASK SI_NOT_WINDOWS #define SANITIZER_INTERCEPT_BACKTRACE SI_LINUX_NOT_ANDROID @@ -201,11 +207,11 @@ // FIXME: getline seems to be available on OSX 10.7 #define SANITIZER_INTERCEPT_GETLINE SI_LINUX_NOT_ANDROID -#define SANITIZER_INTERCEPT__EXIT SI_LINUX || SI_FREEBSD +#define SANITIZER_INTERCEPT__EXIT SI_LINUX || SI_FREEBSD || SI_NETBSD #define SANITIZER_INTERCEPT_PHTREAD_MUTEX SI_NOT_WINDOWS #define SANITIZER_INTERCEPT_PTHREAD_SETNAME_NP \ - SI_FREEBSD || SI_LINUX_NOT_ANDROID + SI_FREEBSD || SI_LINUX_NOT_ANDROID || SI_NETBSD #define SANITIZER_INTERCEPT_TLS_GET_ADDR SI_LINUX_NOT_ANDROID @@ -228,7 +234,7 @@ #define SANITIZER_INTERCEPT_FFLUSH SI_NOT_WINDOWS #define SANITIZER_INTERCEPT_FCLOSE SI_NOT_WINDOWS #define SANITIZER_INTERCEPT_DLOPEN_DLCLOSE \ - SI_FREEBSD || SI_LINUX_NOT_ANDROID || SI_MAC + SI_FREEBSD || SI_LINUX_NOT_ANDROID || SI_MAC || SI_NETBSD #define SANITIZER_INTERCEPT_GETPASS SI_LINUX_NOT_ANDROID || SI_MAC #define SANITIZER_INTERCEPT_TIMERFD SI_LINUX_NOT_ANDROID Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h:1.1.1.2 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h:1.1.1.2 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h Tue May 31 16:47:25 2016 @@ -19,7 +19,7 @@ namespace __sanitizer { extern unsigned struct_utsname_sz; extern unsigned struct_stat_sz; -#if !SANITIZER_FREEBSD && !SANITIZER_IOS +#if !SANITIZER_FREEBSD && !SANITIZER_IOS && !SANITIZER_NETBSD extern unsigned struct_stat64_sz; #endif extern unsigned struct_rusage_sz; @@ -98,7 +98,7 @@ namespace __sanitizer { const unsigned struct_kexec_segment_sz = 4 * sizeof(unsigned long); #endif // SANITIZER_LINUX -#if SANITIZER_LINUX || SANITIZER_FREEBSD +#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD #if defined(__powerpc64__) const unsigned struct___old_kernel_stat_sz = 0; @@ -147,7 +147,7 @@ namespace __sanitizer { }; const unsigned old_sigset_t_sz = sizeof(unsigned long); -#endif // SANITIZER_LINUX || SANITIZER_FREEBSD +#endif // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD #if SANITIZER_ANDROID struct __sanitizer_mallinfo { @@ -279,7 +279,6 @@ namespace __sanitizer { unsigned short seq; long key; }; - struct __sanitizer_shmid_ds { __sanitizer_ipc_perm shm_perm; unsigned long shm_segsz; @@ -290,14 +289,36 @@ namespace __sanitizer { unsigned long shm_dtime; unsigned long shm_ctime; }; +#elif SANITIZER_NETBSD + struct __sanitizer_ipc_perm { + unsigned int uid; + unsigned int gid; + unsigned int cuid; + unsigned int cgid; + unsigned int mode; + unsigned short _seq; + long _key; + }; + + struct __sanitizer_shmid_ds { + __sanitizer_ipc_perm shm_perm; + unsigned long shm_segsz; + unsigned int shm_lpid; + unsigned int shm_cpid; + int shm_nattch; + long long shm_atime; + long long shm_dtime; + long long shm_ctime; + void *_shm_internal; + }; #endif -#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID +#if (SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD) && !SANITIZER_ANDROID extern unsigned struct_msqid_ds_sz; extern unsigned struct_mq_attr_sz; extern unsigned struct_timex_sz; extern unsigned struct_statvfs_sz; -#endif // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID +#endif // (SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD) && !SANITIZER_ANDROID struct __sanitizer_iovec { void *iov_base; @@ -347,8 +368,12 @@ namespace __sanitizer { char *pw_passwd; int pw_uid; int pw_gid; -#if SANITIZER_MAC || SANITIZER_FREEBSD +#if SANITIZER_NETBSD + long long pw_change; +#elif SANITIZER_MAC || SANITIZER_FREEBSD long pw_change; +#endif +#if SANITIZER_MAC || SANITIZER_FREEBSD || SANITIZER_NETBSD char *pw_class; #endif #if !SANITIZER_ANDROID @@ -358,6 +383,8 @@ namespace __sanitizer { char *pw_shell; #if SANITIZER_MAC || SANITIZER_FREEBSD long pw_expire; +#elif SANITIZER_NETBSD + long long pw_expire; #endif #if SANITIZER_FREEBSD int pw_fields; @@ -413,7 +440,7 @@ namespace __sanitizer { }; #endif -#if SANITIZER_ANDROID || SANITIZER_MAC || SANITIZER_FREEBSD +#if SANITIZER_ANDROID || SANITIZER_MAC || SANITIZER_FREEBSD || SANITIZER_NETBSD struct __sanitizer_msghdr { void *msg_name; unsigned msg_namelen; @@ -458,6 +485,12 @@ namespace __sanitizer { unsigned short d_reclen; // more fields that we don't care about }; +#elif SANITIZER_NETBSD + struct __sanitizer_dirent { + unsigned long long d_fileno; + unsigned short d_reclen; + // more fields that we don't care about + }; #elif SANITIZER_ANDROID || defined(__x86_64__) struct __sanitizer_dirent { unsigned long long d_ino; @@ -484,7 +517,7 @@ namespace __sanitizer { #endif // 'clock_t' is 32 bits wide on x64 FreeBSD -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD typedef int __sanitizer_clock_t; #elif defined(__x86_64__) && !defined(_LP64) typedef long long __sanitizer_clock_t; @@ -496,7 +529,7 @@ namespace __sanitizer { typedef int __sanitizer_clockid_t; #endif -#if SANITIZER_LINUX || SANITIZER_FREEBSD +#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD #if defined(_LP64) || defined(__x86_64__) || defined(__powerpc__)\ || defined(__mips__) typedef unsigned __sanitizer___kernel_uid_t; @@ -542,13 +575,22 @@ namespace __sanitizer { // The size is determined by looking at sizeof of real sigset_t on linux. uptr val[128 / sizeof(uptr)]; }; -#elif SANITIZER_FREEBSD +#elif SANITIZER_FREEBSD || SANITIZER_NETBSD struct __sanitizer_sigset_t { // uint32_t * 4 unsigned int __bits[4]; }; #endif - +#if SANITIZER_NETBSD + struct __sanitizer_sigaction { + union { + void (*sigaction)(int sig, void *siginfo, void *uctx); + void (*handler)(int sig); + }; + __sanitizer_sigset_t sa_mask; + int sa_flags; + }; +#else // Linux system headers define the 'sa_handler' and 'sa_sigaction' macros. struct __sanitizer_sigaction { #if defined(__mips__) && !SANITIZER_FREEBSD @@ -578,8 +620,9 @@ namespace __sanitizer { int sa_resv[1]; #endif }; +#endif -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD typedef __sanitizer_sigset_t __sanitizer_kernel_sigset_t; #else struct __sanitizer_kernel_sigset_t { @@ -610,7 +653,7 @@ namespace __sanitizer { extern int af_inet6; uptr __sanitizer_in_addr_sz(int af); -#if SANITIZER_LINUX || SANITIZER_FREEBSD +#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD struct __sanitizer_dl_phdr_info { uptr dlpi_addr; const char *dlpi_name; @@ -624,7 +667,7 @@ namespace __sanitizer { int ai_family; int ai_socktype; int ai_protocol; -#if SANITIZER_ANDROID || SANITIZER_MAC || SANITIZER_FREEBSD +#if SANITIZER_ANDROID || SANITIZER_MAC || SANITIZER_FREEBSD || SANITIZER_NETBSD unsigned ai_addrlen; char *ai_canonname; void *ai_addr; @@ -650,7 +693,7 @@ namespace __sanitizer { short revents; }; -#if SANITIZER_ANDROID || SANITIZER_MAC || SANITIZER_FREEBSD +#if SANITIZER_ANDROID || SANITIZER_MAC || SANITIZER_FREEBSD || SANITIZER_NETBSD typedef unsigned __sanitizer_nfds_t; #else typedef unsigned long __sanitizer_nfds_t; @@ -670,7 +713,7 @@ namespace __sanitizer { int (*gl_lstat)(const char *, void *); int (*gl_stat)(const char *, void *); }; -# elif SANITIZER_FREEBSD +# elif SANITIZER_FREEBSD || SANITIZER_NETBSD struct __sanitizer_glob_t { uptr gl_pathc; uptr gl_matchc; @@ -684,9 +727,9 @@ namespace __sanitizer { int (*gl_lstat)(const char*, void* /* struct stat* */); int (*gl_stat)(const char*, void* /* struct stat* */); }; -# endif // SANITIZER_FREEBSD +# endif // SANITIZER_FREEBSD || SANITIZER_NETBSD -# if SANITIZER_LINUX || SANITIZER_FREEBSD +# if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD extern int glob_nomatch; extern int glob_altdirfunc; # endif @@ -698,7 +741,7 @@ namespace __sanitizer { uptr we_wordc; char **we_wordv; uptr we_offs; -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD char *we_strings; uptr we_nbytes; #endif @@ -750,7 +793,7 @@ namespace __sanitizer { extern int ptrace_geteventmsg; #endif -#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID +#if (SANITIZER_LINUX || SANITIZER_FREEBSD) || SANITIZER_NETBSD && !SANITIZER_ANDROID extern unsigned struct_shminfo_sz; extern unsigned struct_shm_info_sz; extern int shmctl_ipc_stat; @@ -866,7 +909,7 @@ struct __sanitizer_obstack { extern unsigned struct_vt_stat_sz; #endif // SANITIZER_LINUX -#if SANITIZER_LINUX || SANITIZER_FREEBSD +#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD extern unsigned struct_copr_buffer_sz; extern unsigned struct_copr_debug_buf_sz; extern unsigned struct_copr_msg_sz; @@ -878,7 +921,7 @@ struct __sanitizer_obstack { extern unsigned struct_seq_event_rec_sz; extern unsigned struct_synth_info_sz; extern unsigned struct_vt_mode_sz; -#endif // SANITIZER_LINUX || SANITIZER_FREEBSD +#endif // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD #if SANITIZER_LINUX && !SANITIZER_ANDROID extern unsigned struct_ax25_parms_struct_sz; @@ -900,10 +943,10 @@ struct __sanitizer_obstack { extern unsigned struct_unimapinit_sz; #endif // SANITIZER_LINUX && !SANITIZER_ANDROID -#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID +#if (SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD) && !SANITIZER_ANDROID extern unsigned struct_audio_buf_info_sz; extern unsigned struct_ppp_stats_sz; -#endif // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID +#endif // (SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD) && !SANITIZER_ANDROID #if !SANITIZER_ANDROID && !SANITIZER_MAC extern unsigned struct_sioc_sg_req_sz; @@ -960,7 +1003,7 @@ struct __sanitizer_obstack { extern unsigned IOCTL_TIOCSPGRP; extern unsigned IOCTL_TIOCSTI; extern unsigned IOCTL_TIOCSWINSZ; -#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID +#if (SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD) && !SANITIZER_ANDROID extern unsigned IOCTL_SIOCGETSGCNT; extern unsigned IOCTL_SIOCGETVIFCNT; #endif @@ -1123,7 +1166,7 @@ struct __sanitizer_obstack { extern unsigned IOCTL_VT_RESIZEX; extern unsigned IOCTL_VT_SENDSIG; #endif // SANITIZER_LINUX -#if SANITIZER_LINUX || SANITIZER_FREEBSD +#if SANITIZER_LINUX || SANITIZER_FREEBS || SANITIZER_NETBSDD extern unsigned IOCTL_MTIOCGET; extern unsigned IOCTL_MTIOCTOP; extern unsigned IOCTL_SIOCADDRT; @@ -1224,7 +1267,7 @@ struct __sanitizer_obstack { extern unsigned IOCTL_VT_RELDISP; extern unsigned IOCTL_VT_SETMODE; extern unsigned IOCTL_VT_WAITACTIVE; -#endif // SANITIZER_LINUX || SANITIZER_FREEBSD +#endif // SANITIZER_LINUX || SANITIZER_FREEBS || SANITIZER_NETBSDD #if SANITIZER_LINUX && !SANITIZER_ANDROID extern unsigned IOCTL_CYGETDEFTHRESH; @@ -1313,7 +1356,7 @@ struct __sanitizer_obstack { extern unsigned IOCTL_TIOCSSERIAL; #endif // SANITIZER_LINUX && !SANITIZER_ANDROID -#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID +#if (SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD) && !SANITIZER_ANDROID extern unsigned IOCTL_GIO_SCRNMAP; extern unsigned IOCTL_KDDISABIO; extern unsigned IOCTL_KDENABIO; Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:1.3 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:1.4 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:1.3 Sun Jan 24 04:43:38 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc Tue May 31 16:47:25 2016 @@ -39,7 +39,7 @@ #define va_copy(dst, src) ((dst) = (src)) #endif // _WIN32 -#if SANITIZER_FREEBSD +#if SANITIZER_BSD #define pthread_setname_np pthread_set_name_np #endif Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_internal_defs.h diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_internal_defs.h:1.3 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_internal_defs.h:1.4 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_internal_defs.h:1.3 Sun Jan 24 04:43:38 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_internal_defs.h Tue May 31 16:47:25 2016 @@ -154,11 +154,7 @@ using namespace __sanitizer; // NOLINT # define UNLIKELY(x) (x) # define PREFETCH(x) /* _mm_prefetch(x, _MM_HINT_NTA) */ #else // _MSC_VER -# ifdef __NetBSD__ -# define ALWAYS_INLINE // inline __attribute__((always_inline)) -# else -# define ALWAYS_INLINE inline __attribute__((always_inline)) -# endif +# define ALWAYS_INLINE inline __attribute__((always_inline)) # define ALIAS(x) __attribute__((alias(x))) // Please only use the ALIGNED macro before the type. // Using ALIGNED after the variable declaration is not portable! Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:1.3 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:1.4 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:1.3 Sun Jan 24 04:43:38 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc Tue May 31 16:47:25 2016 @@ -75,7 +75,7 @@ #include <linux/posix_types.h> #endif -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD # include <sys/mount.h> # include <sys/sockio.h> # include <sys/socket.h> @@ -90,13 +90,9 @@ # include <sys/statvfs.h> # include <sys/soundcard.h> # include <sys/mtio.h> -# include <sys/consio.h> -# include <sys/kbio.h> -# include <sys/link_elf.h> # include <netinet/ip_mroute.h> # include <netinet/in.h> # include <netinet/ip_compat.h> -# include <net/ethernet.h> # include <net/ppp_defs.h> # include <glob.h> # include <term.h> @@ -108,6 +104,20 @@ #undef INLINE // to avoid clashes with sanitizers' definitions #endif +#if SANITIZER_FREEBSD +# include <sys/consio.h> +# include <sys/kbio.h> +# include <sys/link_elf.h> +# include <net/ethernet.h> +#endif + +#if SANITIZER_NETBSD +# include <link_elf.h> +# include <net/if_ether.h> +# define statfs statvfs +# define d_ino d_fileno +#endif + #if SANITIZER_FREEBSD || SANITIZER_IOS || SANITIZER_NETBSD #undef IOC_DIRMASK #endif @@ -257,7 +267,7 @@ namespace __sanitizer { #endif -#if (SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD) && !SANITIZER_ANDROID +#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID unsigned struct_shminfo_sz = sizeof(struct shminfo); unsigned struct_shm_info_sz = sizeof(struct shm_info); int shmctl_ipc_stat = (int)IPC_STAT; @@ -359,7 +369,7 @@ namespace __sanitizer { unsigned struct_vt_stat_sz = sizeof(struct vt_stat); #endif // SANITIZER_LINUX -#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD +#if SANITIZER_LINUX || SANITIZER_FREEBSD #if SOUND_VERSION >= 0x040000 unsigned struct_copr_buffer_sz = 0; unsigned struct_copr_debug_buf_sz = 0; @@ -377,7 +387,7 @@ namespace __sanitizer { unsigned struct_seq_event_rec_sz = sizeof(struct seq_event_rec); unsigned struct_synth_info_sz = sizeof(struct synth_info); unsigned struct_vt_mode_sz = sizeof(struct vt_mode); -#endif // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD +#endif // SANITIZER_LINUX || SANITIZER_FREEBSD #if SANITIZER_LINUX && !SANITIZER_ANDROID unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct); @@ -652,7 +662,7 @@ namespace __sanitizer { unsigned IOCTL_VT_SENDSIG = VT_SENDSIG; #endif // SANITIZER_LINUX -#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD +#if SANITIZER_LINUX || SANITIZER_FREEBSD unsigned IOCTL_MTIOCGET = MTIOCGET; unsigned IOCTL_MTIOCTOP = MTIOCTOP; unsigned IOCTL_SNDCTL_DSP_GETBLKSIZE = SNDCTL_DSP_GETBLKSIZE; @@ -745,7 +755,7 @@ namespace __sanitizer { unsigned IOCTL_VT_RELDISP = VT_RELDISP; unsigned IOCTL_VT_SETMODE = VT_SETMODE; unsigned IOCTL_VT_WAITACTIVE = VT_WAITACTIVE; -#endif // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD +#endif // SANITIZER_LINUX || SANITIZER_FREEBSD #if SANITIZER_LINUX && !SANITIZER_ANDROID unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH; @@ -838,7 +848,7 @@ namespace __sanitizer { unsigned IOCTL_TIOCSSERIAL = TIOCSSERIAL; #endif // SANITIZER_LINUX && !SANITIZER_ANDROID -#if (SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD) && !SANITIZER_ANDROID +#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID unsigned IOCTL_GIO_SCRNMAP = GIO_SCRNMAP; unsigned IOCTL_KDDISABIO = KDDISABIO; unsigned IOCTL_KDENABIO = KDENABIO; @@ -854,7 +864,7 @@ namespace __sanitizer { unsigned IOCTL_PIO_SCRNMAP = PIO_SCRNMAP; unsigned IOCTL_SNDCTL_DSP_GETISPACE = SNDCTL_DSP_GETISPACE; unsigned IOCTL_SNDCTL_DSP_GETOSPACE = SNDCTL_DSP_GETOSPACE; -#endif // (SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD) && !SANITIZER_ANDROID +#endif // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID const int errno_EINVAL = EINVAL; // EOWNERDEAD is not present in some older platforms. @@ -1052,9 +1062,12 @@ CHECK_TYPE_SIZE(ether_addr); #if (SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD) && !SANITIZER_ANDROID CHECK_TYPE_SIZE(ipc_perm); -# if SANITIZER_FREEBSD || SANITIZER_NETBSD +# if SANITIZER_FREEBSD CHECK_SIZE_AND_OFFSET(ipc_perm, key); CHECK_SIZE_AND_OFFSET(ipc_perm, seq); +# elif SANITIZER_NETBSD +CHECK_SIZE_AND_OFFSET(ipc_perm, _key); +CHECK_SIZE_AND_OFFSET(ipc_perm, _seq); # else CHECK_SIZE_AND_OFFSET(ipc_perm, __key); CHECK_SIZE_AND_OFFSET(ipc_perm, __seq); Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_libignore.cc diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_libignore.cc:1.1.1.1 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_libignore.cc:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_libignore.cc:1.1.1.1 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_libignore.cc Tue May 31 16:47:25 2016 @@ -6,7 +6,7 @@ //===----------------------------------------------------------------------===// #include "sanitizer_platform.h" -#if SANITIZER_FREEBSD || SANITIZER_LINUX +#if SANITIZER_NETBSD || SANITIZER_FREEBSD || SANITIZER_LINUX #include "sanitizer_libignore.h" #include "sanitizer_flags.h" @@ -101,4 +101,4 @@ void LibIgnore::OnLibraryUnloaded() { } // namespace __sanitizer -#endif // #if SANITIZER_FREEBSD || SANITIZER_LINUX +#endif // #if SANITIZER_NETBSD || SANITIZER_FREEBSD || SANITIZER_LINUX Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.h diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.h:1.1.1.1 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.h:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.h:1.1.1.1 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.h Tue May 31 16:47:25 2016 @@ -12,7 +12,7 @@ #define SANITIZER_LINUX_H #include "sanitizer_platform.h" -#if SANITIZER_FREEBSD || SANITIZER_LINUX +#if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD #include "sanitizer_common.h" #include "sanitizer_internal_defs.h" #include "sanitizer_platform_limits_posix.h" @@ -87,5 +87,5 @@ void CacheBinaryName(); void ForEachMappedRegion(link_map *map, void (*cb)(const void *, uptr)); } // namespace __sanitizer -#endif // SANITIZER_FREEBSD || SANITIZER_LINUX +#endif // SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD #endif // SANITIZER_LINUX_H Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc:1.1.1.1 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc:1.1.1.1 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc Tue May 31 16:47:25 2016 @@ -11,7 +11,7 @@ //===----------------------------------------------------------------------===// #include "sanitizer_platform.h" -#if SANITIZER_FREEBSD || SANITIZER_LINUX +#if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD #include "sanitizer_common.h" #include "sanitizer_flags.h" @@ -23,7 +23,7 @@ #include "sanitizer_atomic.h" #include "sanitizer_symbolizer.h" -#if SANITIZER_ANDROID || SANITIZER_FREEBSD +#if SANITIZER_ANDROID || SANITIZER_FREEBSD || SANITIZER_NETBSD #include <dlfcn.h> // for dlsym() #endif @@ -149,7 +149,7 @@ bool SanitizerGetThreadName(char *name, #endif } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD static uptr g_tls_size; #endif @@ -160,7 +160,7 @@ static uptr g_tls_size; #endif void InitTlsSize() { -#if !SANITIZER_FREEBSD && !SANITIZER_ANDROID +#if !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_NETBSD typedef void (*get_tls_func)(size_t*, size_t*) DL_INTERNAL_FUNCTION; get_tls_func get_tls; void *get_tls_static_info_ptr = dlsym(RTLD_NEXT, "_dl_get_tls_static_info"); @@ -172,7 +172,7 @@ void InitTlsSize() { size_t tls_align = 0; IndirectExternCall(get_tls)(&tls_size, &tls_align); g_tls_size = tls_size; -#endif // !SANITIZER_FREEBSD && !SANITIZER_ANDROID +#endif // !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_NETBSD } #if (defined(__x86_64__) || defined(__i386__)) && SANITIZER_LINUX @@ -236,7 +236,7 @@ uptr ThreadSelf() { } #endif // (defined(__x86_64__) || defined(__i386__)) && SANITIZER_LINUX -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD static void **ThreadSelfSegbase() { void **segbase = 0; # if defined(__i386__) @@ -254,7 +254,7 @@ static void **ThreadSelfSegbase() { uptr ThreadSelf() { return (uptr)ThreadSelfSegbase()[2]; } -#endif // SANITIZER_FREEBSD +#endif // SANITIZER_FREEBSD || SANITIZER_NETBSD static void GetTls(uptr *addr, uptr *size) { #if SANITIZER_LINUX @@ -267,7 +267,7 @@ static void GetTls(uptr *addr, uptr *siz *addr = 0; *size = 0; # endif -#elif SANITIZER_FREEBSD +#elif SANITIZER_FREEBSD || SANITIZER_NETBSD void** segbase = ThreadSelfSegbase(); *addr = 0; *size = 0; @@ -286,7 +286,7 @@ static void GetTls(uptr *addr, uptr *siz } uptr GetTlsSize() { -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD uptr addr, size; GetTls(&addr, &size); return size; @@ -347,7 +347,7 @@ uptr GetListOfModules(LoadedModule *modu return memory_mapping.DumpListOfModules(modules, max_modules, filter); } #else // SANITIZER_ANDROID -# if !SANITIZER_FREEBSD +# if !SANITIZER_FREEBSD || SANITIZER_NETBSD typedef ElfW(Phdr) Elf_Phdr; # elif SANITIZER_WORDSIZE == 32 && __FreeBSD_version <= 902001 // v9.2 # define Elf_Phdr XElf32_Phdr @@ -428,4 +428,4 @@ void PrepareForSandboxing(__sanitizer_sa } // namespace __sanitizer -#endif // SANITIZER_FREEBSD || SANITIZER_LINUX +#endif // SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform.h diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform.h:1.1.1.1 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform.h:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform.h:1.1.1.1 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform.h Tue May 31 16:47:25 2016 @@ -11,7 +11,7 @@ #ifndef SANITIZER_PLATFORM_H #define SANITIZER_PLATFORM_H -#if !defined(__linux__) && !defined(__FreeBSD__) && \ +#if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__NetBSD__) && \ !defined(__APPLE__) && !defined(_WIN32) # error "This operating system is not supported" #endif @@ -28,6 +28,12 @@ # define SANITIZER_FREEBSD 0 #endif +#if defined(__NetBSD__) +# define SANITIZER_NETBSD 1 +#else +# define SANITIZER_NETBSD 0 +#endif + #if defined(__APPLE__) # define SANITIZER_MAC 1 # include <TargetConditionals.h> @@ -53,7 +59,7 @@ # define SANITIZER_ANDROID 0 #endif -#define SANITIZER_POSIX (SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_MAC) +#define SANITIZER_POSIX (SANITIZER_NETBSD || SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_MAC) #if __LP64__ || defined(_WIN64) # define SANITIZER_WORDSIZE 64 Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_procmaps_common.cc diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_procmaps_common.cc:1.1.1.1 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_procmaps_common.cc:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_procmaps_common.cc:1.1.1.1 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_procmaps_common.cc Tue May 31 16:47:25 2016 @@ -9,7 +9,7 @@ //===----------------------------------------------------------------------===// #include "sanitizer_platform.h" -#if SANITIZER_FREEBSD || SANITIZER_LINUX +#if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD #include "sanitizer_common.h" #include "sanitizer_placement_new.h" #include "sanitizer_procmaps.h" @@ -173,4 +173,4 @@ void GetMemoryProfile(fill_profile_f cb, } // namespace __sanitizer -#endif // SANITIZER_FREEBSD || SANITIZER_LINUX +#endif // SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc:1.1.1.1 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc:1.1.1.1 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc Tue May 31 16:47:25 2016 @@ -9,13 +9,23 @@ // //===----------------------------------------------------------------------===// -#if SANITIZER_FREEBSD +#ifdef SANITIZER_NETBSD +# define SYS_stat SYS___stat50 +# define SYS_lstat SYS___lstat50 +# define SYS_fstat SYS___fstat50 +# define SYS_gettimeofday SYS___gettimeofday50 +# define SYS_wait4 SYS___wait450 +# define SYS_getdents SYS___getdents30 +# define SYS_sigaltstack SYS___sigaltstack14 +# define SYS_sigprocmask SYS___sigprocmask14 +#endif +#if SANITIZER_FREEBSD || SANITIZER_NETBSD # define SYSCALL(name) SYS_ ## name #else # define SYSCALL(name) __NR_ ## name #endif -#if SANITIZER_FREEBSD && defined(__x86_64__) +#if (SANITIZER_FREEBSD && defined(__x86_64__)) || SANITIZER_NETBSD # define internal_syscall __syscall # else # define internal_syscall syscall Index: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_unwind_posix_libcdep.cc diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_unwind_posix_libcdep.cc:1.1.1.1 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_unwind_posix_libcdep.cc:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_unwind_posix_libcdep.cc:1.1.1.1 Sun Jan 24 01:05:41 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_unwind_posix_libcdep.cc Tue May 31 16:47:25 2016 @@ -88,7 +88,7 @@ uptr Unwind_GetIP(struct _Unwind_Context // Clear the Thumb bit. return val & ~(uptr)1; #else - return _Unwind_GetIP(ctx); + return (uptr)_Unwind_GetIP(ctx); #endif } Index: src/external/gpl3/gcc/dist/libsanitizer/tsan/tsan_interceptors.cc diff -u src/external/gpl3/gcc/dist/libsanitizer/tsan/tsan_interceptors.cc:1.1.1.2 src/external/gpl3/gcc/dist/libsanitizer/tsan/tsan_interceptors.cc:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/tsan/tsan_interceptors.cc:1.1.1.2 Sun Jan 24 01:05:42 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/tsan/tsan_interceptors.cc Tue May 31 16:47:25 2016 @@ -70,7 +70,7 @@ extern "C" void *__libc_malloc(uptr size extern "C" void *__libc_calloc(uptr size, uptr n); extern "C" void *__libc_realloc(void *ptr, uptr size); extern "C" void __libc_free(void *ptr); -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD extern "C" int mallopt(int param, int value); #endif extern __sanitizer_FILE *stdout, *stderr; @@ -108,7 +108,7 @@ struct sigaction_t { sighandler_t sa_handler; void (*sa_sigaction)(int sig, my_siginfo_t *siginfo, void *uctx); }; -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD int sa_flags; __sanitizer_sigset_t sa_mask; #else @@ -230,7 +230,7 @@ ScopedInterceptor::~ScopedInterceptor() #define TSAN_INTERCEPTOR(ret, func, ...) INTERCEPTOR(ret, func, __VA_ARGS__) #define TSAN_INTERCEPT(func) INTERCEPT_FUNCTION(func) -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD # define TSAN_INTERCEPT_VER(func, ver) INTERCEPT_FUNCTION(func) #else # define TSAN_INTERCEPT_VER(func, ver) INTERCEPT_FUNCTION_VER(func, ver) @@ -394,7 +394,7 @@ static void SetJmp(ThreadState *thr, upt } static void LongJmp(ThreadState *thr, uptr *env) { -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD uptr mangled_sp = env[2]; #else uptr mangled_sp = env[6]; @@ -743,7 +743,7 @@ TSAN_INTERCEPTOR(void*, mmap, void *addr return res; } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(void*, mmap64, void *addr, long_t sz, int prot, int flags, int fd, u64 off) { SCOPED_TSAN_INTERCEPTOR(mmap64, addr, sz, prot, flags, fd, off); @@ -769,7 +769,7 @@ TSAN_INTERCEPTOR(int, munmap, void *addr return res; } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(void*, memalign, uptr align, uptr sz) { SCOPED_INTERCEPTOR_RAW(memalign, align, sz); return user_alloc(thr, pc, sz, align); @@ -789,7 +789,7 @@ TSAN_INTERCEPTOR(void*, valloc, uptr sz) return user_alloc(thr, pc, sz, GetPageSizeCached()); } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(void*, pvalloc, uptr sz) { SCOPED_INTERCEPTOR_RAW(pvalloc, sz); sz = RoundUp(sz, GetPageSizeCached()); @@ -1345,7 +1345,7 @@ TSAN_INTERCEPTOR(int, sem_getvalue, void return res; } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, __xstat, int version, const char *path, void *buf) { SCOPED_TSAN_INTERCEPTOR(__xstat, version, path, buf); return REAL(__xstat)(version, path, buf); @@ -1356,7 +1356,7 @@ TSAN_INTERCEPTOR(int, __xstat, int versi #endif TSAN_INTERCEPTOR(int, stat, const char *path, void *buf) { -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD SCOPED_TSAN_INTERCEPTOR(stat, path, buf); return REAL(stat)(path, buf); #else @@ -1365,7 +1365,7 @@ TSAN_INTERCEPTOR(int, stat, const char * #endif } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, __xstat64, int version, const char *path, void *buf) { SCOPED_TSAN_INTERCEPTOR(__xstat64, version, path, buf); return REAL(__xstat64)(version, path, buf); @@ -1375,7 +1375,7 @@ TSAN_INTERCEPTOR(int, __xstat64, int ver #define TSAN_MAYBE_INTERCEPT___XSTAT64 #endif -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, stat64, const char *path, void *buf) { SCOPED_TSAN_INTERCEPTOR(__xstat64, 0, path, buf); return REAL(__xstat64)(0, path, buf); @@ -1385,7 +1385,7 @@ TSAN_INTERCEPTOR(int, stat64, const char #define TSAN_MAYBE_INTERCEPT_STAT64 #endif -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, __lxstat, int version, const char *path, void *buf) { SCOPED_TSAN_INTERCEPTOR(__lxstat, version, path, buf); return REAL(__lxstat)(version, path, buf); @@ -1396,7 +1396,7 @@ TSAN_INTERCEPTOR(int, __lxstat, int vers #endif TSAN_INTERCEPTOR(int, lstat, const char *path, void *buf) { -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD SCOPED_TSAN_INTERCEPTOR(lstat, path, buf); return REAL(lstat)(path, buf); #else @@ -1405,7 +1405,7 @@ TSAN_INTERCEPTOR(int, lstat, const char #endif } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, __lxstat64, int version, const char *path, void *buf) { SCOPED_TSAN_INTERCEPTOR(__lxstat64, version, path, buf); return REAL(__lxstat64)(version, path, buf); @@ -1415,7 +1415,7 @@ TSAN_INTERCEPTOR(int, __lxstat64, int ve #define TSAN_MAYBE_INTERCEPT___LXSTAT64 #endif -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, lstat64, const char *path, void *buf) { SCOPED_TSAN_INTERCEPTOR(__lxstat64, 0, path, buf); return REAL(__lxstat64)(0, path, buf); @@ -1425,7 +1425,7 @@ TSAN_INTERCEPTOR(int, lstat64, const cha #define TSAN_MAYBE_INTERCEPT_LSTAT64 #endif -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, __fxstat, int version, int fd, void *buf) { SCOPED_TSAN_INTERCEPTOR(__fxstat, version, fd, buf); if (fd > 0) @@ -1438,7 +1438,7 @@ TSAN_INTERCEPTOR(int, __fxstat, int vers #endif TSAN_INTERCEPTOR(int, fstat, int fd, void *buf) { -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD SCOPED_TSAN_INTERCEPTOR(fstat, fd, buf); if (fd > 0) FdAccess(thr, pc, fd); @@ -1451,7 +1451,7 @@ TSAN_INTERCEPTOR(int, fstat, int fd, voi #endif } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, __fxstat64, int version, int fd, void *buf) { SCOPED_TSAN_INTERCEPTOR(__fxstat64, version, fd, buf); if (fd > 0) @@ -1463,7 +1463,7 @@ TSAN_INTERCEPTOR(int, __fxstat64, int ve #define TSAN_MAYBE_INTERCEPT___FXSTAT64 #endif -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, fstat64, int fd, void *buf) { SCOPED_TSAN_INTERCEPTOR(__fxstat64, 0, fd, buf); if (fd > 0) @@ -1483,7 +1483,7 @@ TSAN_INTERCEPTOR(int, open, const char * return fd; } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, open64, const char *name, int flags, int mode) { SCOPED_TSAN_INTERCEPTOR(open64, name, flags, mode); int fd = REAL(open64)(name, flags, mode); @@ -1504,7 +1504,7 @@ TSAN_INTERCEPTOR(int, creat, const char return fd; } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, creat64, const char *name, int mode) { SCOPED_TSAN_INTERCEPTOR(creat64, name, mode); int fd = REAL(creat64)(name, mode); @@ -1541,7 +1541,7 @@ TSAN_INTERCEPTOR(int, dup3, int oldfd, i return newfd2; } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, eventfd, unsigned initval, int flags) { SCOPED_TSAN_INTERCEPTOR(eventfd, initval, flags); int fd = REAL(eventfd)(initval, flags); @@ -1554,7 +1554,7 @@ TSAN_INTERCEPTOR(int, eventfd, unsigned #define TSAN_MAYBE_INTERCEPT_EVENTFD #endif -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, signalfd, int fd, void *mask, int flags) { SCOPED_TSAN_INTERCEPTOR(signalfd, fd, mask, flags); if (fd >= 0) @@ -1569,7 +1569,7 @@ TSAN_INTERCEPTOR(int, signalfd, int fd, #define TSAN_MAYBE_INTERCEPT_SIGNALFD #endif -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, inotify_init, int fake) { SCOPED_TSAN_INTERCEPTOR(inotify_init, fake); int fd = REAL(inotify_init)(fake); @@ -1582,7 +1582,7 @@ TSAN_INTERCEPTOR(int, inotify_init, int #define TSAN_MAYBE_INTERCEPT_INOTIFY_INIT #endif -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, inotify_init1, int flags) { SCOPED_TSAN_INTERCEPTOR(inotify_init1, flags); int fd = REAL(inotify_init1)(flags); @@ -1636,7 +1636,7 @@ TSAN_INTERCEPTOR(int, listen, int fd, in return res; } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, epoll_create, int size) { SCOPED_TSAN_INTERCEPTOR(epoll_create, size); int fd = REAL(epoll_create)(size); @@ -1649,7 +1649,7 @@ TSAN_INTERCEPTOR(int, epoll_create, int #define TSAN_MAYBE_INTERCEPT_EPOLL_CREATE #endif -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, epoll_create1, int flags) { SCOPED_TSAN_INTERCEPTOR(epoll_create1, flags); int fd = REAL(epoll_create1)(flags); @@ -1669,7 +1669,7 @@ TSAN_INTERCEPTOR(int, close, int fd) { return REAL(close)(fd); } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, __close, int fd) { SCOPED_TSAN_INTERCEPTOR(__close, fd); if (fd >= 0) @@ -1682,7 +1682,7 @@ TSAN_INTERCEPTOR(int, __close, int fd) { #endif // glibc guts -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(void, __res_iclose, void *state, bool free_addr) { SCOPED_TSAN_INTERCEPTOR(__res_iclose, state, free_addr); int fds[64]; @@ -1763,7 +1763,7 @@ TSAN_INTERCEPTOR(void*, tmpfile, int fak return res; } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(void*, tmpfile64, int fake) { SCOPED_TSAN_INTERCEPTOR(tmpfile64, fake); void *res = REAL(tmpfile64)(fake); @@ -1824,7 +1824,7 @@ TSAN_INTERCEPTOR(void*, opendir, char *p return res; } -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, epoll_ctl, int epfd, int op, int fd, void *ev) { SCOPED_TSAN_INTERCEPTOR(epoll_ctl, epfd, op, fd, ev); if (epfd >= 0) @@ -1841,7 +1841,7 @@ TSAN_INTERCEPTOR(int, epoll_ctl, int epf #define TSAN_MAYBE_INTERCEPT_EPOLL_CTL #endif -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD TSAN_INTERCEPTOR(int, epoll_wait, int epfd, void *ev, int cnt, int timeout) { SCOPED_TSAN_INTERCEPTOR(epoll_wait, epfd, ev, cnt, timeout); if (epfd >= 0) @@ -2384,7 +2384,7 @@ void InitializeInterceptors() { REAL(memcmp) = internal_memcmp; // Instruct libc malloc to consume less memory. -#if !SANITIZER_FREEBSD +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD mallopt(1, 0); // M_MXFAST mallopt(-3, 32*1024); // M_MMAP_THRESHOLD #endif Index: src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_value.h diff -u src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_value.h:1.1.1.1 src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_value.h:1.2 --- src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_value.h:1.1.1.1 Sun Jan 24 01:05:42 2016 +++ src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_value.h Tue May 31 16:47:26 2016 @@ -14,7 +14,7 @@ // For now, only support Linux, FreeBSD and Darwin. Other platforms should // be easy to add, and probably work as-is. -#if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__APPLE__) +#if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__APPLE__) && !defined(__NetBSD__) #error "UBSan not supported for this platform!" #endif