Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/gpl3/gcc/dist/libsanitizer - enable powerpc and arm...



details:   https://anonhg.NetBSD.org/src/rev/29f606444a31
branches:  trunk
changeset: 829554:29f606444a31
user:      mrg <mrg%NetBSD.org@localhost>
date:      Mon Feb 05 22:04:54 2018 +0000

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

diffstat:

 external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc                 |  12 ++++++++++
 external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc |   9 +++++--
 external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h                              |   4 +-
 3 files changed, 20 insertions(+), 5 deletions(-)

diffs (74 lines):

diff -r 81841879d162 -r 29f606444a31 external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc
--- a/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc   Mon Feb 05 21:12:14 2018 +0000
+++ b/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc   Mon Feb 05 22:04:54 2018 +0000
@@ -1141,9 +1141,15 @@
 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 @@
 # 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;
diff -r 81841879d162 -r 29f606444a31 external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
--- a/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc   Mon Feb 05 21:12:14 2018 +0000
+++ b/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc   Mon Feb 05 22:04:54 2018 +0000
@@ -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
diff -r 81841879d162 -r 29f606444a31 external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h
--- a/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h        Mon Feb 05 21:12:14 2018 +0000
+++ b/external/gpl3/gcc/dist/libsanitizer/ubsan/ubsan_platform.h        Mon Feb 05 22:04:54 2018 +0000
@@ -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



Home | Main Index | Thread Index | Old Index