Module: wine Branch: refs/heads/master Commit: c67bc2260c8d58186d424f27e371b9865d7a35b0 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=c67bc2260c8d58186d424f27...
Author: Eric Pouech eric.pouech@wanadoo.fr Date: Tue Feb 14 13:06:29 2006 +0100
A couple of new valgrind instrumentations for better support.
---
dlls/kernel/process.c | 9 +++++++++ dlls/ntdll/signal_i386.c | 7 +++++++ 2 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/dlls/kernel/process.c b/dlls/kernel/process.c index 417e658..c81ba03 100644 --- a/dlls/kernel/process.c +++ b/dlls/kernel/process.c @@ -46,6 +46,10 @@ #include "wine/unicode.h" #include "wine/debug.h"
+#ifdef HAVE_VALGRIND_MEMCHECK_H +#include <valgrind/memcheck.h> +#endif + WINE_DEFAULT_DEBUG_CHANNEL(process); WINE_DECLARE_DEBUG_CHANNEL(file); WINE_DECLARE_DEBUG_CHANNEL(relay); @@ -932,6 +936,11 @@ static void *init_stack(void) NtCurrentTeb()->Tib.StackBase = (char *)base + stack_size; NtCurrentTeb()->Tib.StackLimit = (char *)base + page_size;
+#ifdef VALGRIND_STACK_REGISTER + /* no need to de-register the stack as it's the one of the main thread */ + VALGRIND_STACK_REGISTER(NtCurrentTeb()->Tib.StackLimit, NtCurrentTeb()->Tib.StackBase); +#endif + /* setup guard page */ VirtualProtect( base, page_size, PAGE_NOACCESS, NULL ); return NtCurrentTeb()->Tib.StackBase; diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c index 0cacd7a..46f9fa6 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c @@ -56,6 +56,10 @@ #include "wine/library.h" #include "ntdll_misc.h"
+#ifdef HAVE_VALGRIND_MEMCHECK_H +#include <valgrind/memcheck.h> +#endif + /*********************************************************************** * signal context platform-specific definitions */ @@ -983,6 +987,9 @@ static EXCEPTION_RECORD *setup_exception }
stack--; /* push the stack_layout structure */ +#ifdef HAVE_VALGRIND_MEMCHECK_H + VALGRIND_MAKE_WRITABLE(stack, sizeof(*stack)); +#endif stack->ret_addr = (void *)0xdeadbabe; /* raise_func must not return */ stack->rec_ptr = &stack->rec; stack->context_ptr = &stack->context;