1 | /* Test program for executable stacks in an executable itself. */ |
---|---|
2 | |
3 | #include <dlfcn.h> |
4 | #include <stdio.h> |
5 | #include <string.h> |
6 | #include <unistd.h> |
7 | #include <error.h> |
8 | |
9 | #include "tst-execstack-mod.c" /* This defines the `tryme' test function. */ |
10 | |
11 | static void deeper (void (*f) (void)); |
12 | |
13 | static int |
14 | do_test (void) |
15 | { |
16 | tryme (); |
17 | |
18 | /* Test that growing the stack region gets new executable pages too. */ |
19 | deeper (f: &tryme); |
20 | |
21 | return 0; |
22 | } |
23 | |
24 | static void |
25 | deeper (void (*f) (void)) |
26 | { |
27 | char stack[1100 * 1024]; |
28 | explicit_bzero (s: stack, n: sizeof stack); |
29 | (*f) (); |
30 | memfrob (s: stack, n: sizeof stack); |
31 | } |
32 | |
33 | #include <support/test-driver.c> |
34 |