1cda0c2cf073a7fba19e1fb2576446506894facbaphilippe#include <stdio.h>
2cda0c2cf073a7fba19e1fb2576446506894facbaphilippe
3cda0c2cf073a7fba19e1fb2576446506894facbaphilippe__attribute__((noinline)) void big(void)
4cda0c2cf073a7fba19e1fb2576446506894facbaphilippe{
5cda0c2cf073a7fba19e1fb2576446506894facbaphilippe   /* The below ensures the stack grows a lot. However, we hope the stack
6cda0c2cf073a7fba19e1fb2576446506894facbaphilippe      extension is not done yet, as no memory has been read/written. */
7cda0c2cf073a7fba19e1fb2576446506894facbaphilippe   volatile char c[200000];
8cda0c2cf073a7fba19e1fb2576446506894facbaphilippe
9cda0c2cf073a7fba19e1fb2576446506894facbaphilippe   /* Access only the higher part of the stack, to avoid mapping SP */
10cda0c2cf073a7fba19e1fb2576446506894facbaphilippe   /* The below 2 printfs should produce deterministic output, whatever
11cda0c2cf073a7fba19e1fb2576446506894facbaphilippe      the random value of c[]. */
12cda0c2cf073a7fba19e1fb2576446506894facbaphilippe   if (c[200000 - 1])
13cda0c2cf073a7fba19e1fb2576446506894facbaphilippe      fprintf(stderr, "Accessing fresh %s\n", "stack");
14cda0c2cf073a7fba19e1fb2576446506894facbaphilippe   else
15cda0c2cf073a7fba19e1fb2576446506894facbaphilippe      fprintf(stderr, "Accessing %s stack\n", "fresh");
16cda0c2cf073a7fba19e1fb2576446506894facbaphilippe
17cda0c2cf073a7fba19e1fb2576446506894facbaphilippe}
18cda0c2cf073a7fba19e1fb2576446506894facbaphilippe
19cda0c2cf073a7fba19e1fb2576446506894facbaphilippeint main(void )
20cda0c2cf073a7fba19e1fb2576446506894facbaphilippe{
21cda0c2cf073a7fba19e1fb2576446506894facbaphilippe   big();
22cda0c2cf073a7fba19e1fb2576446506894facbaphilippe   return 0;
23cda0c2cf073a7fba19e1fb2576446506894facbaphilippe}
24