This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH 6/7] Libsanitizer merge from upstream r249633.
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Maxim Ostapenko <m dot ostapenko at partner dot samsung dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Kostya Serebryany <kcc at google dot com>, Dmitry Vyukov <dvyukov at google dot com>, Marek Polacek <polacek at redhat dot com>, Yury Gribov <y dot gribov at samsung dot com>, Slava Garbuzov <v dot garbuzov at samsung dot com>, Vyacheslav Barinov <v dot barinov at samsung dot com>
- Date: Wed, 14 Oct 2015 09:38:06 +0200
- Subject: Re: [PATCH 6/7] Libsanitizer merge from upstream r249633.
- Authentication-results: sourceware.org; auth=none
- References: <561CE769 dot 6050800 at partner dot samsung dot com> <561CE931 dot 3010909 at partner dot samsung dot com>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Tue, Oct 13, 2015 at 02:21:21PM +0300, Maxim Ostapenko wrote:
> This patch adjusts the fix for
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61771 to extract the last PC
> from the stack frame if no valid FP is available for ARM.
I guess this is ok once all other changes are acked.
> 2015-10-13 Maxim Ostapenko <m.ostapenko@partner.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.
>
> Index: libsanitizer/sanitizer_common/sanitizer_stacktrace.cc
> ===================================================================
> --- libsanitizer/sanitizer_common/sanitizer_stacktrace.cc (revision 250059)
> +++ libsanitizer/sanitizer_common/sanitizer_stacktrace.cc (working copy)
> @@ -62,8 +62,8 @@
> // 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
Jakub