[Bug target/77933] Stack corruption on ARM when using high registers and __builtin_return_address

thopre01 at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Nov 17 20:33:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77933

--- Comment #6 from Thomas Preud'homme <thopre01 at gcc dot gnu.org> ---
Author: thopre01
Date: Thu Nov 17 20:30:41 2016
New Revision: 242560

URL: https://gcc.gnu.org/viewcvs?rev=242560&root=gcc&view=rev
Log:
Fix PR77933: stack corruption on ARM when using high registers and LR

2016-11-08  Thomas Preud'homme  <thomas.preudhomme@arm.com>

        Backport from mainline
        2016-11-08  Thomas Preud'homme  <thomas.preudhomme@arm.com>

        gcc/
        PR target/77933
        * config/arm/arm.c (thumb1_expand_prologue): Distinguish between lr
        being live in the function and lr needing to be saved.  Distinguish
        between already saved pushable registers and registers to push.
        Check for LR being an available pushable register.

        gcc/testsuite/
        PR target/77933
        * gcc.target/arm/pr77933-1.c: New test.
        * gcc.target/arm/pr77933-2.c: Likewise.


Added:
    branches/ARM/embedded-6-branch/gcc/testsuite/gcc.target/arm/pr77933-1.c
    branches/ARM/embedded-6-branch/gcc/testsuite/gcc.target/arm/pr77933-2.c
Modified:
    branches/ARM/embedded-6-branch/gcc/ChangeLog.arm
    branches/ARM/embedded-6-branch/gcc/config/arm/arm.c
    branches/ARM/embedded-6-branch/gcc/testsuite/ChangeLog.arm


More information about the Gcc-bugs mailing list