Module Name: src Committed By: mrg Date: Tue Feb 6 09:31:57 UTC 2018
Modified Files: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common: sanitizer_linux.cc sanitizer_linux_libcdep.cc src/external/gpl3/gcc/dist/libsanitizer/ubsan: ubsan_platform.h Log Message: port to mips and alpha. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc cvs rdiff -u -r1.5 -r1.6 \ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc cvs rdiff -u -r1.4 -r1.5 \ src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.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/sanitizer_common/sanitizer_linux.cc diff -u src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc:1.13 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc:1.14 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc:1.13 Mon Feb 5 22:04:54 2018 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc Tue Feb 6 09:31:56 2018 @@ -27,7 +27,6 @@ #if !SANITIZER_FREEBSD && !SANITIZER_NETBSD #include <asm/param.h> -#endif // For mips64, syscall(__NR_stat) fills the buffer in the 'struct kernel_stat' // format. Struct kernel_stat is defined as 'struct stat' in asm/stat.h. To @@ -41,6 +40,8 @@ #undef stat #endif +#endif // !SANITIZER_FREEBSD && !SANITIZER_NETBSD + #include <dlfcn.h> #include <errno.h> #include <fcntl.h> @@ -207,7 +208,7 @@ static void stat64_to_stat(struct stat64 } #endif -#if defined(__mips64) +#if defined(__mips64) && SANITIZER_LINUX static void kernel_stat_to_stat(struct kernel_stat *in, struct stat *out) { internal_memset(out, 0, sizeof(*out)); out->st_dev = in->st_dev; @@ -933,7 +934,7 @@ uptr internal_clone(int (*fn)(void *), v : "rsp", "memory", "r11", "rcx"); return res; } -#elif defined(__mips__) +#elif defined(__mips__) && SANITIZER_LINUX uptr internal_clone(int (*fn)(void *), void *child_stack, int flags, void *arg, int *parent_tidptr, void *newtls, int *child_tidptr) { long long res; @@ -1233,9 +1234,20 @@ void GetPcSpBp(void *context, uptr *pc, # endif #elif defined(__mips__) ucontext_t *ucontext = (ucontext_t*)context; +# if SANITIZER_NETBSD + *pc = _UC_MACHINE_PC(ucontext); + *sp = _UC_MACHINE_SP(ucontext); + *bp = ucontext->uc_mcontext.__gregs[_REG_S8]; +# else *pc = ucontext->uc_mcontext.pc; *bp = ucontext->uc_mcontext.gregs[30]; *sp = ucontext->uc_mcontext.gregs[29]; +# endif +#elif defined(__alpha__) && SANITIZER_NETBSD + ucontext_t *ucontext = (ucontext_t*)context; + *pc = _UC_MACHINE_PC(ucontext); + *sp = _UC_MACHINE_SP(ucontext); + *bp = ucontext->uc_mcontext.__gregs[_REG_S6]; #else # error "Unsupported arch" #endif 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.5 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc:1.6 --- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc:1.5 Sun Feb 4 01:14:42 2018 +++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc Tue Feb 6 09:31:56 2018 @@ -164,6 +164,7 @@ static uptr g_tls_size; # define DL_INTERNAL_FUNCTION #endif +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD && !SANITIZER_ANDROID && !SANITIZER_GO #if defined(__mips__) || defined(__powerpc64__) // TlsPreTcbSize includes size of struct pthread_descr and size of tcb // head structure. It lies before the static tls blocks. @@ -181,6 +182,7 @@ static uptr TlsPreTcbSize() { return kTlsPreTcbSize; } #endif +#endif // !SANITIZER_FREEBSD && !SANITIZER_NETBSD && !SANITIZER_ANDROID && !SANITIZER_GO void InitTlsSize() { #if !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_NETBSD && !SANITIZER_GO Index: src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h diff -u src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h:1.4 src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h:1.5 --- src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h:1.4 Mon Feb 5 22:04:54 2018 +++ src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h Tue Feb 6 09:31:56 2018 @@ -17,7 +17,7 @@ defined(__APPLE__)) && \ (defined(__x86_64__) || defined(__i386__) || defined(__arm__) || \ defined(__aarch64__) || defined(__mips__) || defined(__powerpc__) || \ - defined(__powerpc64__) || defined(__sparc__)) + defined(__powerpc64__) || defined(__sparc__) || defined(__alpha__)) # define CAN_SANITIZE_UB 1 #elif defined(_WIN32) # define CAN_SANITIZE_UB 1