mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-27 04:41:02 +08:00
37 lines
686 B
C
37 lines
686 B
C
|
/* Test program for making nonexecutable stacks executable
|
||
|
on DT_NEEDED load of a DSO that requires executable stacks. */
|
||
|
|
||
|
#include <dlfcn.h>
|
||
|
#include <stdio.h>
|
||
|
#include <string.h>
|
||
|
#include <unistd.h>
|
||
|
#include <error.h>
|
||
|
|
||
|
extern void tryme (void); /* from tst-execstack-mod.so */
|
||
|
|
||
|
static void deeper (void (*f) (void));
|
||
|
|
||
|
static int
|
||
|
do_test (void)
|
||
|
{
|
||
|
tryme ();
|
||
|
|
||
|
/* Test that growing the stack region gets new executable pages too. */
|
||
|
deeper (&tryme);
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
static void
|
||
|
deeper (void (*f) (void))
|
||
|
{
|
||
|
char stack[1100 * 1024];
|
||
|
memfrob (stack, sizeof stack);
|
||
|
(*f) ();
|
||
|
memfrob (stack, sizeof stack);
|
||
|
}
|
||
|
|
||
|
|
||
|
#define TEST_FUNCTION do_test ()
|
||
|
#include "../test-skeleton.c"
|