mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Updated winebuild-Fake_Dlls patchset.
This commit is contained in:
parent
8a2765d125
commit
f12808c094
@ -1,22 +1,24 @@
|
||||
From 2f82153b52cd517c9e30ab5ac26a0c60ed70a48d Mon Sep 17 00:00:00 2001
|
||||
From 7a2dceb0c325caa23d55f4ed4747221b09885c85 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 7 Sep 2017 00:38:09 +0200
|
||||
Subject: [PATCH] tools/winebuild: Add syscall thunks for 64 bit.
|
||||
|
||||
---
|
||||
dlls/kernel32/tests/loader.c | 7 +-
|
||||
dlls/ntdll/unix/virtual.c | 4 +-
|
||||
libs/wine/loader.c | 4 +
|
||||
server/mapping.c | 6 +-
|
||||
tools/winebuild/parser.c | 2 +-
|
||||
tools/winebuild/spec32.c | 285 ++++++++++++++++++++++++++++++++++-
|
||||
6 files changed, 297 insertions(+), 11 deletions(-)
|
||||
dlls/kernel32/tests/loader.c | 7 +-
|
||||
dlls/ntdll/unix/thread.c | 2 +-
|
||||
dlls/ntdll/unix/unix_private.h | 2 +-
|
||||
dlls/ntdll/unix/virtual.c | 12 +-
|
||||
libs/wine/loader.c | 4 +
|
||||
server/mapping.c | 6 +-
|
||||
tools/winebuild/parser.c | 2 +-
|
||||
tools/winebuild/spec32.c | 285 ++++++++++++++++++++++++++++++++-
|
||||
8 files changed, 306 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
|
||||
index 95939ba6bde..ae5462f6e55 100644
|
||||
index 1f525194ce7..21af7b4ce7a 100644
|
||||
--- a/dlls/kernel32/tests/loader.c
|
||||
+++ b/dlls/kernel32/tests/loader.c
|
||||
@@ -1573,7 +1573,7 @@ static void test_filenames(void)
|
||||
@@ -1574,7 +1574,7 @@ static void test_filenames(void)
|
||||
|
||||
static void test_FakeDLL(void)
|
||||
{
|
||||
@ -25,7 +27,7 @@ index 95939ba6bde..ae5462f6e55 100644
|
||||
NTSTATUS (WINAPI *pNtSetEvent)(HANDLE, ULONG *) = NULL;
|
||||
IMAGE_EXPORT_DIRECTORY *dir;
|
||||
HMODULE module = GetModuleHandleA("ntdll.dll");
|
||||
@@ -1615,8 +1615,13 @@ static void test_FakeDLL(void)
|
||||
@@ -1616,8 +1616,13 @@ static void test_FakeDLL(void)
|
||||
|
||||
dll_func = (BYTE *)GetProcAddress(module, func_name);
|
||||
ok(dll_func != NULL, "%s: GetProcAddress returned NULL\n", func_name);
|
||||
@ -39,11 +41,37 @@ index 95939ba6bde..ae5462f6e55 100644
|
||||
{
|
||||
todo_wine ok(0, "%s: Export is a stub-function, skipping\n", func_name);
|
||||
continue;
|
||||
diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c
|
||||
index 449e5814c2e..05cbd4b443b 100644
|
||||
--- a/dlls/ntdll/unix/thread.c
|
||||
+++ b/dlls/ntdll/unix/thread.c
|
||||
@@ -108,7 +108,7 @@ TEB * CDECL init_threading( int *nb_threads_ptr, struct ldt_copy **ldt_copy, SIZ
|
||||
dbg_init();
|
||||
server_init_process();
|
||||
info_size = server_init_thread( teb->Peb, suspend );
|
||||
- virtual_map_user_shared_data();
|
||||
+ virtual_map_user_shared_data(syscall_handler);
|
||||
NtCreateKeyedEvent( &keyed_event, GENERIC_READ | GENERIC_WRITE, NULL, 0 );
|
||||
|
||||
if (size) *size = info_size;
|
||||
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
|
||||
index 5f891d52e17..6ccd2ff6cc4 100644
|
||||
--- a/dlls/ntdll/unix/unix_private.h
|
||||
+++ b/dlls/ntdll/unix/unix_private.h
|
||||
@@ -137,7 +137,7 @@ extern void virtual_init(void) DECLSPEC_HIDDEN;
|
||||
extern TEB *virtual_alloc_first_teb(void) DECLSPEC_HIDDEN;
|
||||
extern NTSTATUS virtual_alloc_teb( TEB **ret_teb ) DECLSPEC_HIDDEN;
|
||||
extern void virtual_free_teb( TEB *teb ) DECLSPEC_HIDDEN;
|
||||
-extern void virtual_map_user_shared_data(void) DECLSPEC_HIDDEN;
|
||||
+extern void virtual_map_user_shared_data(void *) DECLSPEC_HIDDEN;
|
||||
|
||||
extern void signal_init_threading(void) DECLSPEC_HIDDEN;
|
||||
extern NTSTATUS signal_alloc_thread( TEB *teb ) DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
|
||||
index 7c5b5d5cf15..66ae4cb841c 100644
|
||||
index 83e51c369cb..40629214479 100644
|
||||
--- a/dlls/ntdll/unix/virtual.c
|
||||
+++ b/dlls/ntdll/unix/virtual.c
|
||||
@@ -2546,14 +2546,14 @@ TEB *virtual_alloc_first_teb(void)
|
||||
@@ -2742,14 +2742,14 @@ TEB *virtual_alloc_first_teb(void)
|
||||
TEB *teb;
|
||||
PEB *peb;
|
||||
NTSTATUS status;
|
||||
@ -60,6 +88,32 @@ index 7c5b5d5cf15..66ae4cb841c 100644
|
||||
if (status)
|
||||
{
|
||||
ERR( "wine: failed to map the shared user data: %08x\n", status );
|
||||
@@ -2943,11 +2943,12 @@ void virtual_clear_thread_stack( void *stack_end )
|
||||
if (force_exec_prot) mprotect( stack, size, PROT_READ | PROT_WRITE | PROT_EXEC );
|
||||
}
|
||||
|
||||
+extern void DECLSPEC_NORETURN __wine_syscall_dispatcher( void );
|
||||
|
||||
/***********************************************************************
|
||||
* virtual_map_user_shared_data
|
||||
*/
|
||||
-void virtual_map_user_shared_data(void)
|
||||
+void virtual_map_user_shared_data(void *syscall_handler)
|
||||
{
|
||||
static const WCHAR wine_usdW[] = {'\\','K','e','r','n','e','l','O','b','j','e','c','t','s',
|
||||
'\\','_','_','w','i','n','e','_','u','s','e','r','_','s','h','a','r','e','d','_','d','a','t','a',0};
|
||||
@@ -2970,6 +2971,11 @@ void virtual_map_user_shared_data(void)
|
||||
ERR( "failed to remap the process USD: %d\n", res );
|
||||
exit(1);
|
||||
}
|
||||
+
|
||||
+#if defined(__APPLE__) && defined(__x86_64__)
|
||||
+ *((void **)((char*)user_shared_data + 0x1000)) = syscall_handler;
|
||||
+#endif
|
||||
+
|
||||
if (needs_close) close( fd );
|
||||
NtClose( section );
|
||||
}
|
||||
diff --git a/libs/wine/loader.c b/libs/wine/loader.c
|
||||
index 4597a6cb324..3d0d75e9c6d 100644
|
||||
--- a/libs/wine/loader.c
|
||||
|
Loading…
x
Reference in New Issue
Block a user