summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2012-12-03 18:39:21 +0000
committerKostya Serebryany <kcc@google.com>2012-12-03 18:39:21 +0000
commit214b71506178f9705891f4452d8b41ff14919f5c (patch)
tree3ff3f8b679ddc1f4f11050b14a6d6acde19aaf7e
parentf74c4034ddfa71b20277320924decaed44303426 (diff)
downloadbcm5719-llvm-214b71506178f9705891f4452d8b41ff14919f5c.tar.gz
bcm5719-llvm-214b71506178f9705891f4452d8b41ff14919f5c.zip
[asan] two more bits for __sparc__
llvm-svn: 169141
-rw-r--r--compiler-rt/lib/asan/asan_linux.cc4
-rw-r--r--compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cc2
2 files changed, 5 insertions, 1 deletions
diff --git a/compiler-rt/lib/asan/asan_linux.cc b/compiler-rt/lib/asan/asan_linux.cc
index 2f89a1ef541..068f7b100b2 100644
--- a/compiler-rt/lib/asan/asan_linux.cc
+++ b/compiler-rt/lib/asan/asan_linux.cc
@@ -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);
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cc b/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cc
index aeb291474d2..7525895ab83 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cc
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cc
@@ -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
OpenPOWER on IntegriCloud