From: Julian Seward Date: Thu, 17 Nov 2005 19:32:07 +0000 (+0000) Subject: Allocate stack with mmap rather than malloc, so that on ppc32 we get an executable X-Git-Tag: svn/VALGRIND_3_1_0~58 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=27599310f4e12e09f7eef0ec9114442b3383beae;p=thirdparty%2Fvalgrind.git Allocate stack with mmap rather than malloc, so that on ppc32 we get an executable stack. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5174 --- diff --git a/memcheck/tests/stack_changes.c b/memcheck/tests/stack_changes.c index d18353e966..2bba5888fa 100644 --- a/memcheck/tests/stack_changes.c +++ b/memcheck/tests/stack_changes.c @@ -1,6 +1,7 @@ #include #include #include +#include #include "valgrind.h" @@ -27,8 +28,11 @@ int init_context(struct ucontext *uc) exit(1); } - if ((stack = malloc(STACK_SIZE)) == NULL) { - perror("malloc"); + stack = (void *)mmap(0, STACK_SIZE, PROT_READ|PROT_WRITE|PROT_EXEC, + MAP_ANON|MAP_PRIVATE, -1, 0); + + if (stack == (void*)-1) { + perror("mmap"); exit(1); } @@ -53,9 +57,9 @@ int main(int argc, char **argv) swapcontext(&oldc, &ctx1); VALGRIND_STACK_DEREGISTER(c1); - free(ctx1.uc_stack.ss_sp); + //free(ctx1.uc_stack.ss_sp); VALGRIND_STACK_DEREGISTER(c2); - free(ctx2.uc_stack.ss_sp); + //free(ctx2.uc_stack.ss_sp); return 0; }