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)15do_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))26deeper (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