Patchwork Get sparc building again after ASAN merge.

login
register
mail settings
Submitter David Miller
Date Nov. 13, 2012, 6:49 a.m.
Message ID <20121113.014955.1285365295469482183.davem@davemloft.net>
Download mbox | patch
Permalink /patch/198549/
State New
Headers show

Comments

David Miller - Nov. 13, 2012, 6:49 a.m.
libsanitizer/

	* asan/asan_linux.cc (GetPcSpBp): Add sparc support.
---
 libsanitizer/ChangeLog.asan     |  4 ++++
 libsanitizer/asan/asan_linux.cc | 14 ++++++++++++++
 2 files changed, 18 insertions(+)

Patch

diff --git a/libsanitizer/ChangeLog.asan b/libsanitizer/ChangeLog.asan
index 7fe3c0c..5592092 100644
--- a/libsanitizer/ChangeLog.asan
+++ b/libsanitizer/ChangeLog.asan
@@ -1,3 +1,7 @@ 
+2012-11-12  David S. Miller  <davem@davemloft.net>
+
+	* asan/asan_linux.cc (GetPcSpBp): Add sparc support.
+
 2012-10-29  Wei Mi  <wmi@google.com>
 
 	Initial checkin: migrate asan runtime from llvm.
diff --git a/libsanitizer/asan/asan_linux.cc b/libsanitizer/asan/asan_linux.cc
index 2922740..ea7ee9e 100644
--- a/libsanitizer/asan/asan_linux.cc
+++ b/libsanitizer/asan/asan_linux.cc
@@ -66,6 +66,20 @@  void GetPcSpBp(void *context, uptr *pc, uptr *sp, uptr *bp) {
   *pc = ucontext->uc_mcontext.gregs[REG_EIP];
   *bp = ucontext->uc_mcontext.gregs[REG_EBP];
   *sp = ucontext->uc_mcontext.gregs[REG_ESP];
+# elif defined(__sparc__)
+  ucontext_t *ucontext = (ucontext_t*)context;
+  uptr *stk_ptr;
+# if defined (__arch64__)
+  *pc = ucontext->uc_mcontext.mc_gregs[MC_PC];
+  *sp = ucontext->uc_mcontext.mc_gregs[MC_O6];
+  stk_ptr = (uptr *) (*sp + 2047);
+  *bp = stk_ptr[15];
+# else
+  *pc = ucontext->uc_mcontext.gregs[REG_PC];
+  *sp = ucontext->uc_mcontext.gregs[REG_O6];
+  stk_ptr = (uptr *) *sp;
+  *bp = stk_ptr[15];
+# endif
 #else
 # error "Unsupported arch"
 #endif