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
10extern void tryme (void); /* from tst-execstack-mod.so */
11
12static void deeper (void (*f) (void));
13
14static int
15do_test (void)
16{
17 tryme ();
18
19 /* Test that growing the stack region gets new executable pages too. */
20 deeper (f: &tryme);
21
22 return 0;
23}
24
25static void
26deeper (void (*f) (void))
27{
28 char stack[1100 * 1024];
29 explicit_bzero (s: stack, n: sizeof stack);
30 (*f) ();
31 memfrob (s: stack, n: sizeof stack);
32}
33
34#include <support/test-driver.c>
35

source code of glibc/elf/tst-execstack-needed.c