[asan] two more bits for __sparc__
authorKostya Serebryany <kcc@google.com>
Mon, 3 Dec 2012 18:39:21 +0000 (18:39 +0000)
committerKostya Serebryany <kcc@google.com>
Mon, 3 Dec 2012 18:39:21 +0000 (18:39 +0000)
llvm-svn: 169141

compiler-rt/lib/asan/asan_linux.cc
compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cc

index 2f89a1e..068f7b1 100644 (file)
@@ -158,7 +158,9 @@ void GetStackTrace(StackTrace *stack, uptr max_s, uptr pc, uptr bp) {
   stack->trace[0] = pc;
   if ((max_s) > 1) {
     stack->max_size = max_s;
-#if defined(__arm__) || defined(__powerpc__) || defined(__powerpc64__)
+#if defined(__arm__) || \
+    defined(__powerpc__) || defined(__powerpc64__) || \
+    defined(__sparc__)
     _Unwind_Backtrace(Unwind_Trace, stack);
     // Pop off the two ASAN functions from the backtrace.
     stack->PopStackFrames(2);
index aeb2914..7525895 100644 (file)
@@ -36,6 +36,8 @@ static uptr patch_pc(uptr pc) {
 #if defined(__powerpc__) || defined(__powerpc64__)
   // PCs are always 4 byte aligned.
   return pc - 4;
+#elif defined(__sparc__)
+  return pc - 8;
 #else
   return pc - 1;
 #endif