sanitizer_stacktrace.cc (GetCanonicFrame): Assume we compiled code with GCC when...
authorMaxim Ostapenko <m.ostapenko@samsung.com>
Tue, 8 Nov 2016 22:07:50 +0000 (22:07 +0000)
committerMaxim Ostapenko <chefmax@gcc.gnu.org>
Tue, 8 Nov 2016 22:07:50 +0000 (00:07 +0200)
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

libsanitizer/ChangeLog
libsanitizer/sanitizer_common/sanitizer_stacktrace.cc

index 166571485a6cf27f91460fb994f0acbee626180f..7881ac7da395f889aaefd4de6bc4b376d3cb2f8f 100644 (file)
@@ -1,3 +1,9 @@
+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
index 531f256c04898f116029c5d7543f9c5449e5101c..cbb3af270b6d7b456af5db6c6c44f5b16188e628 100644 (file)
@@ -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