From: Evgeniy Stepanov Date: Thu, 13 Feb 2014 13:32:24 +0000 (+0000) Subject: [sanitizer] Fix off-by-one-line in SEGV reports on Android. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3bec7a9c778d12c89f8317f0de7dd458fe7e889a;p=platform%2Fupstream%2Fllvm.git [sanitizer] Fix off-by-one-line in SEGV reports on Android. This will be covered by null_deref.cc test (requires one more fix to pass). llvm-svn: 201325 --- diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc index 4e29e25..04ab618 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc @@ -258,8 +258,10 @@ void StackTrace::SlowUnwindStackWithContext(uptr pc, void *context, if (res < 0) return; CHECK((uptr)res <= kStackTraceMax); + // +2 compensate for libcorkscrew unwinder returning addresses of call + // instructions instead of raw return addresses. for (sptr i = 0; i < res; ++i) - trace[size++] = frames[i].absolute_pc; + trace[size++] = frames[i].absolute_pc + 2; } #endif // !SANITIZER_GO