|
From: <sv...@va...> - 2005-11-17 19:32:10
|
Author: sewardj
Date: 2005-11-17 19:32:07 +0000 (Thu, 17 Nov 2005)
New Revision: 5174
Log:
Allocate stack with mmap rather than malloc, so that on ppc32 we get an e=
xecutable
stack.
Modified:
trunk/memcheck/tests/stack_changes.c
Modified: trunk/memcheck/tests/stack_changes.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/tests/stack_changes.c 2005-11-17 19:28:18 UTC (rev 517=
3)
+++ trunk/memcheck/tests/stack_changes.c 2005-11-17 19:32:07 UTC (rev 517=
4)
@@ -1,6 +1,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <ucontext.h>
+#include <sys/mman.h>
=20
#include "valgrind.h"
=20
@@ -27,8 +28,11 @@
exit(1);
}
=20
- if ((stack =3D malloc(STACK_SIZE)) =3D=3D NULL) {
- perror("malloc");
+ stack =3D (void *)mmap(0, STACK_SIZE, PROT_READ|PROT_WRITE|PROT_EXEC=
,
+ MAP_ANON|MAP_PRIVATE, -1, 0);
+
+ if (stack =3D=3D (void*)-1) {
+ perror("mmap");
exit(1);
}
=20
@@ -53,9 +57,9 @@
swapcontext(&oldc, &ctx1);
=20
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);
=20
return 0;
}
|