From: Rémi Bernon rbernon@codeweavers.com
--- dlls/ntdll/unix/file.c | 6 ++++++ dlls/ntdll/unix/process.c | 8 +++++++- dlls/ntdll/unix/virtual.c | 6 +++++- tools/valgrind.supp | 25 +++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 tools/valgrind.supp
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c index e366f0fff9b..413aaa67198 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c @@ -109,6 +109,12 @@ #endif #include <time.h> #include <unistd.h> +#ifdef HAVE_VALGRIND_VALGRIND_H +# include <valgrind/valgrind.h> +#endif +#ifdef HAVE_VALGRIND_MEMCHECK_H +# include <valgrind/memcheck.h> +#endif
#include "ntstatus.h" #define WIN32_NO_STATUS diff --git a/dlls/ntdll/unix/process.c b/dlls/ntdll/unix/process.c index 243c0d902a4..323f90586cc 100644 --- a/dlls/ntdll/unix/process.c +++ b/dlls/ntdll/unix/process.c @@ -60,6 +60,12 @@ #ifdef HAVE_MACH_MACH_H # include <mach/mach.h> #endif +#ifdef HAVE_VALGRIND_VALGRIND_H +# include <valgrind/valgrind.h> +#endif +#ifdef HAVE_VALGRIND_MEMCHECK_H +# include <valgrind/memcheck.h> +#endif
#include "ntstatus.h" #define WIN32_NO_STATUS @@ -1687,7 +1693,7 @@ NTSTATUS WINAPI NtSetInformationProcess( HANDLE handle, PROCESSINFOCLASS class, if (!ret) { #ifdef VALGRIND_STACK_REGISTER - VALGRIND_STACK_REGISTER( addr, (char *)addr + reserve ); + VALGRIND_DISCARD( VALGRIND_STACK_REGISTER( addr, (char *)addr + reserve ) ); #endif stack->StackBase = addr; } diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c index 72bc2d2214e..c86a244fdf9 100644 --- a/dlls/ntdll/unix/virtual.c +++ b/dlls/ntdll/unix/virtual.c @@ -32,6 +32,7 @@ #include <string.h> #include <stdlib.h> #include <signal.h> +#include <stdint.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/stat.h> @@ -59,6 +60,9 @@ #ifdef HAVE_VALGRIND_VALGRIND_H # include <valgrind/valgrind.h> #endif +#ifdef HAVE_VALGRIND_MEMCHECK_H +# include <valgrind/memcheck.h> +#endif #if defined(__APPLE__) # include <mach/mach_init.h> # include <mach/mach_vm.h> @@ -3127,7 +3131,7 @@ NTSTATUS virtual_alloc_thread_stack( INITIAL_TEB *stack, ULONG_PTR zero_bits, SI goto done;
#ifdef VALGRIND_STACK_REGISTER - VALGRIND_STACK_REGISTER( view->base, (char *)view->base + view->size ); + VALGRIND_DISCARD( VALGRIND_STACK_REGISTER( view->base, (char *)view->base + view->size ) ); #endif
/* setup no access guard page */ diff --git a/tools/valgrind.supp b/tools/valgrind.supp new file mode 100644 index 00000000000..b01185a8f3c --- /dev/null +++ b/tools/valgrind.supp @@ -0,0 +1,25 @@ +{ + mingw_stack_grow + Memcheck:Addr8 + fun:___chkstk_ms + ... +} +{ + mingw_stack_grow + Memcheck:Addr4 + fun:___chkstk_ms + ... +} +{ + KeUserModeCallback_args + Memcheck:Addr8 + fun:memmove + fun:KeUserModeCallback + ... +} +{ + KeUserModeCallback_args + Memcheck:Addr8 + fun:KeUserModeCallback + ... +}