Module Name:    src
Committed By:   mrg
Date:           Mon Feb  5 22:04:54 UTC 2018

Modified Files:
        src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common:
            sanitizer_linux.cc sanitizer_platform_limits_posix.cc
        src/external/gpl3/gcc/dist/libsanitizer/ubsan: ubsan_platform.h

Log Message:
- enable powerpc and arm support.
- port GetPcSpBp() to netbsd/powerpc* and netbsd/arm.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 \
    src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc
cvs rdiff -u -r1.7 -r1.8 \
    
src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
cvs rdiff -u -r1.3 -r1.4 \
    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.12 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.12	Sun Feb  4 20:22:17 2018
+++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc	Mon Feb  5 22:04:54 2018
@@ -1141,9 +1141,15 @@ void internal_join_thread(void *th) {}
 void GetPcSpBp(void *context, uptr *pc, uptr *sp, uptr *bp) {
 #if defined(__arm__)
   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_R11];
+# else
   *pc = ucontext->uc_mcontext.arm_pc;
   *bp = ucontext->uc_mcontext.arm_fp;
   *sp = ucontext->uc_mcontext.arm_sp;
+# endif
 #elif defined(__aarch64__)
   ucontext_t *ucontext = (ucontext_t*)context;
   *pc = ucontext->uc_mcontext.pc;
@@ -1191,11 +1197,17 @@ void GetPcSpBp(void *context, uptr *pc, 
 # endif
 #elif defined(__powerpc__) || defined(__powerpc64__)
   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_R31];
+#  else
   *pc = ucontext->uc_mcontext.regs->nip;
   *sp = ucontext->uc_mcontext.regs->gpr[PT_R1];
   // The powerpc{,64}-linux ABIs do not specify r31 as the frame
   // pointer, but GCC always uses r31 when we need a frame pointer.
   *bp = ucontext->uc_mcontext.regs->gpr[PT_R31];
+#endif
 #elif defined(__sparc__)
   ucontext_t *ucontext = (ucontext_t*)context;
   uptr *stk_ptr;

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.7 src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:1.8
--- src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:1.7	Fri Feb  2 03:41:11 2018
+++ src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc	Mon Feb  5 22:04:54 2018
@@ -129,13 +129,16 @@
 #if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD
 # include <utime.h>
 # include <sys/ptrace.h>
+# include <semaphore.h>
+#endif
+
+#if SANITIZER_LINUX 
 # if defined(__mips64) || defined(__aarch64__) || defined(__arm__)
 #  include <asm/ptrace.h>
-#  ifdef __arm__
+# endif
+# ifdef __arm__
 typedef struct user_fpregs elf_fpregset_t;
-#  endif
 # endif
-# include <semaphore.h>
 #endif
 
 #if !SANITIZER_ANDROID

Index: src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h
diff -u src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h:1.3 src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h:1.4
--- src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h:1.3	Sun Feb  4 20:22:18 2018
+++ src/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h	Mon Feb  5 22:04:54 2018
@@ -16,8 +16,8 @@
 #if (defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || \
      defined(__APPLE__)) && \
     (defined(__x86_64__) || defined(__i386__) || defined(__arm__) || \
-     defined(__aarch64__) || defined(__mips__) || defined(__powerpc64__) || \
-     defined(__sparc__))
+     defined(__aarch64__) || defined(__mips__) || defined(__powerpc__) || \
+     defined(__powerpc64__) || defined(__sparc__))
 # define CAN_SANITIZE_UB 1
 #elif defined(_WIN32)
 # define CAN_SANITIZE_UB 1

Reply via email to