1 /* Test program for making nonexecutable stacks executable
2    on DT_NEEDED load of a DSO that requires executable stacks.  */
3 
4 #include <dlfcn.h>
5 #include <stdio.h>
6 #include <string.h>
7 #include <unistd.h>
8 #include <error.h>
9 
10 extern void tryme (void);	/* from tst-execstack-mod.so */
11 
12 static void deeper (void (*f) (void));
13 
14 static int
do_test(void)15 do_test (void)
16 {
17   tryme ();
18 
19   /* Test that growing the stack region gets new executable pages too.  */
20   deeper (&tryme);
21 
22   return 0;
23 }
24 
25 static void
deeper(void (* f)(void))26 deeper (void (*f) (void))
27 {
28   char stack[1100 * 1024];
29   explicit_bzero (stack, sizeof stack);
30   (*f) ();
31   memfrob (stack, sizeof stack);
32 }
33 
34 #include <support/test-driver.c>
35