/* Test of c-stack module.
- Copyright (C) 2002, 2004, 2006, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004, 2006, 2008-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "exitfail.h"
#include <stdio.h>
-#include <stdlib.h>
#if HAVE_SETRLIMIT
/* At least FreeBSD 5.0 needs extra headers before <sys/resource.h>
will compile. */
# include <sys/resource.h>
#endif
-#define ASSERT(expr) \
- do \
- { \
- if (!(expr)) \
- { \
- fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
- fflush (stderr); \
- abort (); \
- } \
- } \
- while (0)
+#include "macros.h"
-static long
-recurse (char *p)
+char *program_name;
+
+static volatile int *
+recurse_1 (volatile int n, volatile int *p)
{
- char array[500];
- array[0] = 1;
- return *p + recurse (array);
+ if (n >= 0)
+ *recurse_1 (n + 1, p) += n;
+ return p;
}
-char *program_name;
+static int
+recurse (volatile int n)
+{
+ int sum = 0;
+ return *recurse_1 (n, &sum);
+}
int
main (int argc, char **argv)
if (c_stack_action (0) == 0)
{
if (1 < argc)
- {
- exit_failure = 77;
- ++*argv[argc]; /* Intentionally dereference NULL. */
- }
- return recurse ("\1");
+ {
+ exit_failure = 77;
+ ++*argv[argc]; /* Intentionally dereference NULL. */
+ }
+ return recurse (0);
}
+ fputs ("skipping test: ", stderr);
perror ("c_stack_action");
return 77;
}