mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
* elf/rtld.c (dl_main): In rtld_is_main case, reinitialize
GL(dl_stack_flags) according to rtld's own PT_GNU_STACK. Move GL(dl_make_stack_executable_hook) initialization up. * elf/tst-execstack-prog.c: New file. * elf/Makefile (tests-execstack-yes): Add it. (LDFLAGS-tst-execstack-prog): New variable.
This commit is contained in:
35
elf/tst-execstack-prog.c
Normal file
35
elf/tst-execstack-prog.c
Normal file
@ -0,0 +1,35 @@
|
||||
/* Test program for executable stacks in an executable itself. */
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <error.h>
|
||||
|
||||
#include "tst-execstack-mod.c" /* This defines the `tryme' test function. */
|
||||
|
||||
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"
|
Reference in New Issue
Block a user