From 9c9fc2c1f089adc5b6621f2461a4527b300f4794 Mon Sep 17 00:00:00 2001 From: chefmax Date: Tue, 8 Nov 2016 22:07:50 +0000 Subject: [PATCH] libsanitizer/ * sanitizer_common/sanitizer_stacktrace.cc (GetCanonicFrame): Assume we compiled code with GCC when extracting the caller PC for ARM if no valid frame pointer is available. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241980 138bc75d-0d04-0410-961f-82ee72b054a4 --- libsanitizer/ChangeLog | 6 ++++++ libsanitizer/sanitizer_common/sanitizer_stacktrace.cc | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog index 166571485a6..7881ac7da39 100644 --- a/libsanitizer/ChangeLog +++ b/libsanitizer/ChangeLog @@ -1,5 +1,11 @@ 2016-11-09 Maxim Ostapenko + * sanitizer_common/sanitizer_stacktrace.cc (GetCanonicFrame): Assume we + compiled code with GCC when extracting the caller PC for ARM if no + valid frame pointer is available. + +2016-11-09 Maxim Ostapenko + PR sanitizer/63958 Reapply: 2014-10-14 David S. Miller diff --git a/libsanitizer/sanitizer_common/sanitizer_stacktrace.cc b/libsanitizer/sanitizer_common/sanitizer_stacktrace.cc index 531f256c048..cbb3af270b6 100644 --- a/libsanitizer/sanitizer_common/sanitizer_stacktrace.cc +++ b/libsanitizer/sanitizer_common/sanitizer_stacktrace.cc @@ -55,8 +55,8 @@ static inline uhwptr *GetCanonicFrame(uptr bp, // Nope, this does not look right either. This means the frame after next does // not have a valid frame pointer, but we can still extract the caller PC. // Unfortunately, there is no way to decide between GCC and LLVM frame - // layouts. Assume LLVM. - return bp_prev; + // layouts. Assume GCC. + return bp_prev - 1; #else return (uhwptr*)bp; #endif -- 2.11.4.GIT