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

Reply via email to