From patchwork Tue Aug 10 13:42:23 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [testsuite,ARM] Fix gcc.dg/builtin-apply2.c for ARM EABI Date: Tue, 10 Aug 2010 03:42:23 -0000 From: Jie Zhang X-Patchwork-Id: 61380 Message-Id: <4C61573F.1070400@codesourcery.com> To: GCC Patches When testing GCC on a Cortex-M4 board, gcc.dg/builtin-apply2.c will hang the testing. That is because we should not use 64 as the size of the stack argument. For ARM EABI, NAME is passed in r0. D is passed in r2 and r3. E, F and G are passed on stack. So the size of the stack argument data is 20. When using 64, the test will try to access too much data on stack. For Cortex-M4 case, it will access invalid memory region, which causes testing hang. Is it OK? * gcc.dg/builtin-apply2.c (STACK_ARGUMENTS_SIZE): Define to 20 for ARM EABI otherwise 64. (bar): Use STACK_ARGUMENTS_SIZE for the third argument instead of hard coded 64. Index: gcc.dg/builtin-apply2.c =================================================================== --- gcc.dg/builtin-apply2.c (revision 163048) +++ gcc.dg/builtin-apply2.c (working copy) @@ -12,6 +12,15 @@ #define INTEGER_ARG 5 +#ifdef __ARM_EABI__ +/* For ARM EABI, NAME is passed in r0. D is passed in r2 and r3. + E, F and G are passed on stack. So the size of the stack argument + data is 20. */ +#define STACK_ARGUMENTS_SIZE 20 +#else +#define STACK_ARGUMENTS_SIZE 64 +#endif + extern void abort(void); void foo(char *name, double d, double e, double f, int g) @@ -22,7 +31,7 @@ void foo(char *name, double d, double e, void bar(char *name, ...) { - __builtin_apply(foo, __builtin_apply_args(), 64); + __builtin_apply(foo, __builtin_apply_args(), STACK_ARGUMENTS_SIZE); } int main(void)