This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Jakub Jelinek Wed, 24 Sep 2003 15:47:04 writes: > The following patch does that (tested on a bunch of arches). Actually it does not include PowerPC 32/64. Currently for PowerPC linux __libc_stack_end is set in libc_start_main, but this is not soon enough to support execstack and the execstack tests in make check fails (because __libc_stack_end is not set). The attached patch uses DL_PLATFORM_INIT to capture the argv pointer and store that into __libc_stack_end during _dl_sysdep_start before the call to dl_main. This will work for both powerpc32 and powerpc64. This is soon enough to pass the stack-end into _dl_make_stack_executable but it still fails in the mprotect with a "Permission Denied". I'll pursue that issue further. I would like an explanation of why we are doing this. Generally arbitrarily marking the stack executable is a bad idea. So I would like a explaination (pointer to one) of the function we trying to provide and the conditions under which it will be used. 2003-09-24 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c [DL_PLATFORM_INIT]: Define (frob_stack_end): New function. -- Steven Munroe sjmunroe@us.ibm.com Linux on PowerPC-64 Development GLIBC for PowerPC-64 Development
diff -urN libc23-cvstip-20030923/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c libc23/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c --- libc23-cvstip-20030923/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c 2003-03-15 18:40:44.000000000 -0600 +++ libc23/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c 2003-09-24 13:19:34.000000000 -0500 @@ -25,6 +25,16 @@ extern int __cache_line_size; weak_extern (__cache_line_size) +#define DL_PLATFORM_INIT frob_stack_end (start_argptr) + +extern void *__libc_stack_end; + +static inline void +frob_stack_end (void *arg) +{ + __libc_stack_end = arg; /* Initialize the break. */ +} + /* Scan the Aux Vector for the "Data Cache Block Size" entry. If found verify that the static extern __cache_line_size is defined by checking for not NULL. If it is defined then assign the cache block size
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |