aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Ostapenko <m.ostapenko@samsung.com>2016-11-08 22:07:50 +0000
committerMaxim Ostapenko <chefmax@gcc.gnu.org>2016-11-09 00:07:50 +0200
commit789306de0fa860eebe32a2677d87d1203bbb81f4 (patch)
tree247ce07074665a9835ecf838a46ee3ef49537083
parent103c4f759ab75305a7cb7927af6b35b1f5da5f06 (diff)
downloadgcc-789306de0fa860eebe32a2677d87d1203bbb81f4.zip
gcc-789306de0fa860eebe32a2677d87d1203bbb81f4.tar.gz
gcc-789306de0fa860eebe32a2677d87d1203bbb81f4.tar.bz2
sanitizer_stacktrace.cc (GetCanonicFrame): Assume we compiled code with GCC when extracting the caller PC for ARM if...
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. From-SVN: r241980
-rw-r--r--libsanitizer/ChangeLog6
-rw-r--r--libsanitizer/sanitizer_common/sanitizer_stacktrace.cc4
2 files changed, 8 insertions, 2 deletions
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index 1665714..7881ac7 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,5 +1,11 @@
2016-11-09 Maxim Ostapenko <m.ostapenko@samsung.com>
+ * 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 <m.ostapenko@samsung.com>
+
PR sanitizer/63958
Reapply:
2014-10-14 David S. Miller <davem@davemloft.net>
diff --git a/libsanitizer/sanitizer_common/sanitizer_stacktrace.cc b/libsanitizer/sanitizer_common/sanitizer_stacktrace.cc
index 531f256..cbb3af2 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