This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[testsuite, ARM] Fix gcc.dg/builtin-apply2.c for ARM EABI
- From: Jie Zhang <jie at codesourcery dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 10 Aug 2010 21:42:23 +0800
- Subject: [testsuite, ARM] Fix gcc.dg/builtin-apply2.c for ARM EABI
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?
--
Jie Zhang
CodeSourcery
* 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)