From: Seongbae Park Date: Thu, 28 Jun 2007 20:47:14 +0000 (+0000) Subject: arm.c (arm_get_frame_offsets): Set offsets->locals_base to avoid negative stack size. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb14f7901e5eb93f8398b460aa544d6fcb369c36;p=thirdparty%2Fgcc.git arm.c (arm_get_frame_offsets): Set offsets->locals_base to avoid negative stack size. gcc/ChangeLog: 2007-06-28 Seongbae Park * config/arm/arm.c (arm_get_frame_offsets): Set offsets->locals_base to avoid negative stack size. (thumb1_expand_prologue): Assert on negative stack size. gcc/testsuite/ChangeLog: 2007-06-28 Seongbae Park * gcc.target/arm/stack-corruption.c: New test. From-SVN: r126094 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 28989b2b174e..050623a02406 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-06-28 Seongbae Park + + * config/arm/arm.c (arm_get_frame_offsets): Set + offsets->locals_base to avoid negative stack size. + (thumb1_expand_prologue): Assert on negative stack size. + 2007-06-28 Jakub Jelinek * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 355e433cbf0a..a74d5139332e 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -10453,6 +10453,7 @@ arm_get_frame_offsets (void) if (leaf && frame_size == 0) { offsets->outgoing_args = offsets->soft_frame; + offsets->locals_base = offsets->soft_frame; return offsets; } @@ -13782,6 +13783,7 @@ thumb_expand_epilogue (void) amount = offsets->locals_base - offsets->saved_regs; } + gcc_assert (amount >= 0); if (amount) { if (amount < 512) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 208e276029e5..e540725a14ca 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2007-06-28 Seongbae Park + + * gcc.target/arm/stack-corruption.c: New test. + 2007-06-21 Uros Bizjak PR target/32389 diff --git a/gcc/testsuite/gcc.target/arm/stack-corruption.c b/gcc/testsuite/gcc.target/arm/stack-corruption.c new file mode 100644 index 000000000000..3a63950cc530 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/stack-corruption.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-options "-O -mthumb -fno-omit-frame-pointer" } */ + +int main() { + return 0; +} + +/* { dg-final { scan-assembler-not "\tadd\tr7, sp, #8\n" } } */