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