From 6b24c39d320b34432001a40e30876fccca3f3dda Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 1 Mar 2021 16:31:44 -0600 Subject: [PATCH] Rebase against 3c2db20f66806074b047b0b3c76aa86ad79e3175. --- ...t-HashLinks-field-in-LDR-module-data.patch | 34 ++--- ...t-Win32-futexes-on-top-of-thread-ID-.patch | 18 +-- ...t-the-critical-section-fast-path-on-.patch | 16 +-- ...-the-direct-futex-path-for-condition.patch | 20 +-- ...nt-SRW-locks-on-top-of-Win32-futexes.patch | 18 +-- ...mporary-signal-handler-during-proces.patch | 34 ++--- .../0001-nvapi-First-implementation.patch | 12 +- patches/patchinstall.sh | 20 +-- .../0001-wow64cpu-Add-stub-dll.patch | 128 ------------------ ...ub-implementation-of-Wow64Transition.patch | 63 --------- patches/wow64cpu-Wow64Transition/definition | 1 - staging/upstream-commit | 2 +- 12 files changed, 78 insertions(+), 288 deletions(-) delete mode 100644 patches/wow64cpu-Wow64Transition/0001-wow64cpu-Add-stub-dll.patch delete mode 100644 patches/wow64cpu-Wow64Transition/0002-ntdll-Add-a-stub-implementation-of-Wow64Transition.patch delete mode 100644 patches/wow64cpu-Wow64Transition/definition diff --git a/patches/ntdll-HashLinks/0001-ntdll-Implement-HashLinks-field-in-LDR-module-data.patch b/patches/ntdll-HashLinks/0001-ntdll-Implement-HashLinks-field-in-LDR-module-data.patch index 2bfc8f2f..4199e120 100644 --- a/patches/ntdll-HashLinks/0001-ntdll-Implement-HashLinks-field-in-LDR-module-data.patch +++ b/patches/ntdll-HashLinks/0001-ntdll-Implement-HashLinks-field-in-LDR-module-data.patch @@ -1,4 +1,4 @@ -From 676ef7076ef33a21649a07acdc5e6e7fee761165 Mon Sep 17 00:00:00 2001 +From 0a07ca826c7991b6c4e2455ff374e6fee4f93b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 3 Apr 2017 05:30:27 +0200 Subject: [PATCH] ntdll: Implement HashLinks field in LDR module data. @@ -10,7 +10,7 @@ Subject: [PATCH] ntdll: Implement HashLinks field in LDR module data. 3 files changed, 141 insertions(+), 1 deletion(-) diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c -index 861fc321729..28b0edacd0a 100644 +index 1db68a191a3..bec46088518 100644 --- a/dlls/kernel32/tests/loader.c +++ b/dlls/kernel32/tests/loader.c @@ -30,6 +30,7 @@ @@ -21,8 +21,8 @@ index 861fc321729..28b0edacd0a 100644 #include "wine/test.h" #include "delayloadhandler.h" -@@ -4003,6 +4004,79 @@ static void test_LoadPackagedLibrary(void) - h, GetLastError()); +@@ -4031,6 +4032,79 @@ static void test_Wow64Transition(void) + debugstr_wn(name->SectionFileName.Buffer, name->SectionFileName.Length / sizeof(WCHAR))); } +static inline WCHAR toupperW(WCHAR c) @@ -101,7 +101,7 @@ index 861fc321729..28b0edacd0a 100644 START_TEST(loader) { int argc; -@@ -4075,6 +4149,7 @@ START_TEST(loader) +@@ -4103,6 +4177,7 @@ START_TEST(loader) test_InMemoryOrderModuleList(); test_LoadPackagedLibrary(); test_wow64_redirection(); @@ -110,10 +110,10 @@ index 861fc321729..28b0edacd0a 100644 test_dll_file( "kernel32.dll" ); test_dll_file( "advapi32.dll" ); diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index dad7bae6ccf..0727d4d15f5 100644 +index 6c86e6b2e6c..b8d6adaf390 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c -@@ -115,6 +115,9 @@ struct file_id +@@ -114,6 +114,9 @@ struct file_id BYTE ObjectId[16]; }; @@ -123,7 +123,7 @@ index dad7bae6ccf..0727d4d15f5 100644 /* internal representation of loaded modules */ typedef struct _wine_modref { -@@ -455,6 +458,52 @@ static void call_ldr_notifications( ULONG reason, LDR_DATA_TABLE_ENTRY *module ) +@@ -453,6 +456,52 @@ static void call_ldr_notifications( ULONG reason, LDR_DATA_TABLE_ENTRY *module ) } } @@ -176,7 +176,7 @@ index dad7bae6ccf..0727d4d15f5 100644 /************************************************************************* * get_modref * -@@ -1197,7 +1246,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, const UNICODE_STRING *nt_name +@@ -1195,7 +1244,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, const UNICODE_STRING *nt_name &wm->ldr.InLoadOrderLinks); InsertTailList(&NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList, &wm->ldr.InMemoryOrderLinks); @@ -189,7 +189,7 @@ index dad7bae6ccf..0727d4d15f5 100644 if (!(nt->OptionalHeader.DllCharacteristics & IMAGE_DLLCHARACTERISTICS_NX_COMPAT)) { -@@ -1904,6 +1958,7 @@ static NTSTATUS build_module( LPCWSTR load_path, const UNICODE_STRING *nt_name, +@@ -1873,6 +1927,7 @@ static NTSTATUS build_module( LPCWSTR load_path, const UNICODE_STRING *nt_name, /* the module has only be inserted in the load & memory order lists */ RemoveEntryList(&wm->ldr.InLoadOrderLinks); RemoveEntryList(&wm->ldr.InMemoryOrderLinks); @@ -197,7 +197,7 @@ index dad7bae6ccf..0727d4d15f5 100644 /* FIXME: there are several more dangling references * left. Including dlls loaded by this dll before the -@@ -3291,6 +3346,7 @@ static void free_modref( WINE_MODREF *wm ) +@@ -3246,6 +3301,7 @@ static void free_modref( WINE_MODREF *wm ) { RemoveEntryList(&wm->ldr.InLoadOrderLinks); RemoveEntryList(&wm->ldr.InMemoryOrderLinks); @@ -205,7 +205,7 @@ index dad7bae6ccf..0727d4d15f5 100644 if (wm->ldr.InInitializationOrderLinks.Flink) RemoveEntryList(&wm->ldr.InInitializationOrderLinks); -@@ -4010,6 +4066,7 @@ static NTSTATUS process_init(void) +@@ -3973,6 +4029,7 @@ static NTSTATUS process_init(void) INITIAL_TEB stack; TEB *teb = NtCurrentTeb(); PEB *peb = teb->Peb; @@ -213,7 +213,7 @@ index dad7bae6ccf..0727d4d15f5 100644 peb->LdrData = &ldr; peb->FastPebLock = &peb_lock; -@@ -4046,6 +4103,10 @@ static NTSTATUS process_init(void) +@@ -4006,6 +4063,10 @@ static NTSTATUS process_init(void) load_global_options(); version_init(); @@ -224,7 +224,7 @@ index dad7bae6ccf..0727d4d15f5 100644 if (!(status = load_dll( params->DllPath.Buffer, params->ImagePathName.Buffer, NULL, DONT_RESOLVE_DLL_REFERENCES, &wm ))) { -@@ -4133,6 +4194,10 @@ static NTSTATUS process_init(void) +@@ -4094,6 +4155,10 @@ static NTSTATUS process_init(void) teb->Tib.StackBase = stack.StackBase; teb->Tib.StackLimit = stack.StackLimit; teb->DeallocationStack = stack.DeallocationStack; @@ -236,10 +236,10 @@ index dad7bae6ccf..0727d4d15f5 100644 } diff --git a/include/winternl.h b/include/winternl.h -index 2ff60a35004..8cc8a166608 100644 +index f0ab223ef2e..b6676717436 100644 --- a/include/winternl.h +++ b/include/winternl.h -@@ -2731,8 +2731,8 @@ typedef struct _LDR_DATA_TABLE_ENTRY +@@ -2794,8 +2794,8 @@ typedef struct _LDR_DATA_TABLE_ENTRY ULONG Flags; SHORT LoadCount; SHORT TlsIndex; @@ -250,5 +250,5 @@ index 2ff60a35004..8cc8a166608 100644 HANDLE ActivationContext; void* Lock; -- -2.29.2 +2.20.1 diff --git a/patches/ntdll-NtAlertThreadByThreadId/0009-ntdll-Reimplement-Win32-futexes-on-top-of-thread-ID-.patch b/patches/ntdll-NtAlertThreadByThreadId/0009-ntdll-Reimplement-Win32-futexes-on-top-of-thread-ID-.patch index 93f28b25..0f286d85 100644 --- a/patches/ntdll-NtAlertThreadByThreadId/0009-ntdll-Reimplement-Win32-futexes-on-top-of-thread-ID-.patch +++ b/patches/ntdll-NtAlertThreadByThreadId/0009-ntdll-Reimplement-Win32-futexes-on-top-of-thread-ID-.patch @@ -1,4 +1,4 @@ -From 9a0cccb7476bf79cb2f5f0bc553c58044526477b Mon Sep 17 00:00:00 2001 +From 8ab8ef02e2a7daf9296250c8a1b72a7ee0114cd9 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 2 Nov 2020 20:24:07 -0600 Subject: [PATCH] ntdll: Reimplement Win32 futexes on top of thread-ID alerts. @@ -14,10 +14,10 @@ Signed-off-by: Zebediah Figura 6 files changed, 187 insertions(+), 173 deletions(-) diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h -index aebea12e6ba..03142ba4bab 100644 +index 72340a171c9..baf58ca17eb 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h -@@ -86,6 +86,8 @@ extern const struct unix_funcs *unix_funcs DECLSPEC_HIDDEN; +@@ -85,6 +85,8 @@ extern const struct unix_funcs *unix_funcs DECLSPEC_HIDDEN; extern struct _KUSER_SHARED_DATA *user_shared_data DECLSPEC_HIDDEN; @@ -25,7 +25,7 @@ index aebea12e6ba..03142ba4bab 100644 + /* locale */ extern LCID user_lcid, system_lcid; - extern DWORD ntdll_umbstowcs( const char* src, DWORD srclen, WCHAR* dst, DWORD dstlen ) DECLSPEC_HIDDEN; + diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c index f1263ae33fd..d652f55b630 100644 --- a/dlls/ntdll/sync.c @@ -261,7 +261,7 @@ index 25496609f08..4f395336428 100644 } diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c -index df8d99ce489..9e873d655ca 100644 +index b7e1432535d..aff4594ab46 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -1691,9 +1691,6 @@ static struct unix_funcs unix_funcs = @@ -275,7 +275,7 @@ index df8d99ce489..9e873d655ca 100644 fast_RtlpUnWaitCriticalSection, fast_RtlDeleteCriticalSection, diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index f4164b499da..0551682979c 100644 +index 7d6423083e1..41005425a90 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c @@ -77,10 +77,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(sync); @@ -467,15 +467,15 @@ index f4164b499da..0551682979c 100644 - mutex_unlock( &addr_mutex ); -} diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h -index bd2512030c2..933cd0d33ce 100644 +index 290379a9310..e84b6052378 100644 --- a/dlls/ntdll/unixlib.h +++ b/dlls/ntdll/unixlib.h @@ -26,7 +26,7 @@ struct _DISPATCHER_CONTEXT; /* increment this when you change the function table */ --#define NTDLL_UNIXLIB_VERSION 113 -+#define NTDLL_UNIXLIB_VERSION 114 +-#define NTDLL_UNIXLIB_VERSION 115 ++#define NTDLL_UNIXLIB_VERSION 116 struct unix_funcs { diff --git a/patches/ntdll-NtAlertThreadByThreadId/0011-ntdll-Reimplement-the-critical-section-fast-path-on-.patch b/patches/ntdll-NtAlertThreadByThreadId/0011-ntdll-Reimplement-the-critical-section-fast-path-on-.patch index e707ec97..35cae271 100644 --- a/patches/ntdll-NtAlertThreadByThreadId/0011-ntdll-Reimplement-the-critical-section-fast-path-on-.patch +++ b/patches/ntdll-NtAlertThreadByThreadId/0011-ntdll-Reimplement-the-critical-section-fast-path-on-.patch @@ -1,4 +1,4 @@ -From 66780246e8198c0b83c8955819a8d1a4b497ed8e Mon Sep 17 00:00:00 2001 +From aae4ecb64fea01acde1b44c95f063acd29f74a7e Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 31 Aug 2020 23:38:09 -0500 Subject: [PATCH] ntdll: Reimplement the critical section fast path on top of @@ -83,7 +83,7 @@ index 09975ac3d45..97a5ce7fffa 100644 return ret; } diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c -index 9e873d655ca..d2f8202171c 100644 +index aff4594ab46..38a18d9c949 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -1691,9 +1691,6 @@ static struct unix_funcs unix_funcs = @@ -97,7 +97,7 @@ index 9e873d655ca..d2f8202171c 100644 fast_RtlAcquireSRWLockExclusive, fast_RtlTryAcquireSRWLockShared, diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index 0551682979c..7b8bbe737f0 100644 +index 41005425a90..6b97028fb68 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c @@ -2409,115 +2409,6 @@ NTSTATUS WINAPI NtWaitForAlertByThreadId( const void *address, const LARGE_INTEG @@ -217,10 +217,10 @@ index 0551682979c..7b8bbe737f0 100644 /* Futex-based SRW lock implementation: diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h -index 75a8dc9c85d..3f4b93e42ed 100644 +index d056b1500c9..4033d8fee76 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h -@@ -94,9 +94,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON +@@ -98,9 +98,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON extern NTSTATUS (WINAPI *pKiUserExceptionDispatcher)(EXCEPTION_RECORD*,CONTEXT*) DECLSPEC_HIDDEN; extern void (WINAPI *pLdrInitializeThunk)(CONTEXT*,void**,ULONG_PTR,ULONG_PTR) DECLSPEC_HIDDEN; extern void (WINAPI *pRtlUserThreadStart)( PRTL_THREAD_START_ROUTINE entry, void *arg ) DECLSPEC_HIDDEN; @@ -231,15 +231,15 @@ index 75a8dc9c85d..3f4b93e42ed 100644 extern NTSTATUS CDECL fast_RtlAcquireSRWLockExclusive( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN; extern NTSTATUS CDECL fast_RtlTryAcquireSRWLockShared( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h -index 933cd0d33ce..24f5d92b0a8 100644 +index e84b6052378..f9c024d2e78 100644 --- a/dlls/ntdll/unixlib.h +++ b/dlls/ntdll/unixlib.h @@ -26,7 +26,7 @@ struct _DISPATCHER_CONTEXT; /* increment this when you change the function table */ --#define NTDLL_UNIXLIB_VERSION 114 -+#define NTDLL_UNIXLIB_VERSION 115 +-#define NTDLL_UNIXLIB_VERSION 116 ++#define NTDLL_UNIXLIB_VERSION 117 struct unix_funcs { diff --git a/patches/ntdll-NtAlertThreadByThreadId/0012-ntdll-Get-rid-of-the-direct-futex-path-for-condition.patch b/patches/ntdll-NtAlertThreadByThreadId/0012-ntdll-Get-rid-of-the-direct-futex-path-for-condition.patch index f6dc2c2f..8f7a5417 100644 --- a/patches/ntdll-NtAlertThreadByThreadId/0012-ntdll-Get-rid-of-the-direct-futex-path-for-condition.patch +++ b/patches/ntdll-NtAlertThreadByThreadId/0012-ntdll-Get-rid-of-the-direct-futex-path-for-condition.patch @@ -1,4 +1,4 @@ -From e2fca35720c0bb5bef7fc4993b163d5c8951530e Mon Sep 17 00:00:00 2001 +From 2ab71fb4253f099683b9a9c8974643b505f001e1 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 31 Aug 2020 23:55:29 -0500 Subject: [PATCH] ntdll: Get rid of the direct futex path for condition @@ -80,7 +80,7 @@ index 97a5ce7fffa..1e6afc4cfc8 100644 if (flags & RTL_CONDITION_VARIABLE_LOCKMODE_SHARED) RtlAcquireSRWLockShared( lock ); diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c -index d2f8202171c..ab27626fb6f 100644 +index 38a18d9c949..58616212f15 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -1697,8 +1697,6 @@ static struct unix_funcs unix_funcs = @@ -93,7 +93,7 @@ index d2f8202171c..ab27626fb6f 100644 ntdll_ceil, ntdll_cos, diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index 7b8bbe737f0..ca18c1a22b1 100644 +index 6b97028fb68..d4092438644 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c @@ -166,23 +166,6 @@ static int *get_futex(void **ptr) @@ -187,10 +187,10 @@ index 7b8bbe737f0..ca18c1a22b1 100644 - #endif diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h -index 3f4b93e42ed..504975538cc 100644 +index 4033d8fee76..3ccb51e155c 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h -@@ -100,10 +100,7 @@ extern NTSTATUS CDECL fast_RtlTryAcquireSRWLockShared( RTL_SRWLOCK *lock ) DECLS +@@ -104,10 +104,7 @@ extern NTSTATUS CDECL fast_RtlTryAcquireSRWLockShared( RTL_SRWLOCK *lock ) DECLS extern NTSTATUS CDECL fast_RtlAcquireSRWLockShared( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN; extern NTSTATUS CDECL fast_RtlReleaseSRWLockExclusive( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN; extern NTSTATUS CDECL fast_RtlReleaseSRWLockShared( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN; @@ -199,18 +199,18 @@ index 3f4b93e42ed..504975538cc 100644 -extern NTSTATUS CDECL fast_wait_cv( RTL_CONDITION_VARIABLE *variable, const void *value, - const LARGE_INTEGER *timeout ) DECLSPEC_HIDDEN; - extern USHORT * CDECL get_unix_codepage_data(void) DECLSPEC_HIDDEN; - extern void CDECL get_locales( WCHAR *sys, WCHAR *user ) DECLSPEC_HIDDEN; + extern void CDECL virtual_release_address_space(void) DECLSPEC_HIDDEN; + diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h -index 24f5d92b0a8..246fd44a53e 100644 +index f9c024d2e78..ed9c6584939 100644 --- a/dlls/ntdll/unixlib.h +++ b/dlls/ntdll/unixlib.h @@ -26,7 +26,7 @@ struct _DISPATCHER_CONTEXT; /* increment this when you change the function table */ --#define NTDLL_UNIXLIB_VERSION 115 -+#define NTDLL_UNIXLIB_VERSION 116 +-#define NTDLL_UNIXLIB_VERSION 117 ++#define NTDLL_UNIXLIB_VERSION 118 struct unix_funcs { diff --git a/patches/ntdll-NtAlertThreadByThreadId/0013-ntdll-Reimplement-SRW-locks-on-top-of-Win32-futexes.patch b/patches/ntdll-NtAlertThreadByThreadId/0013-ntdll-Reimplement-SRW-locks-on-top-of-Win32-futexes.patch index 60c8dfd9..aa569fb3 100644 --- a/patches/ntdll-NtAlertThreadByThreadId/0013-ntdll-Reimplement-SRW-locks-on-top-of-Win32-futexes.patch +++ b/patches/ntdll-NtAlertThreadByThreadId/0013-ntdll-Reimplement-SRW-locks-on-top-of-Win32-futexes.patch @@ -1,4 +1,4 @@ -From 2bc63e7c52262630869ac5a12ecd7225ac533b8d Mon Sep 17 00:00:00 2001 +From a85907faa73aef081c908fa48b3262301d105f22 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Sun, 22 Nov 2020 20:51:10 -0600 Subject: [PATCH] ntdll: Reimplement SRW locks on top of Win32 futexes. @@ -392,7 +392,7 @@ index 1e6afc4cfc8..93a6a5fd7de 100644 /*********************************************************************** diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c -index ab27626fb6f..f98e33b45fb 100644 +index 58616212f15..45fe4259d19 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -1691,12 +1691,6 @@ static struct unix_funcs unix_funcs = @@ -409,7 +409,7 @@ index ab27626fb6f..f98e33b45fb 100644 ntdll_ceil, ntdll_cos, diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index ca18c1a22b1..11dd6d65fa0 100644 +index d4092438644..b67f5fc8f10 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c @@ -114,8 +114,6 @@ static inline ULONGLONG monotonic_counter(void) @@ -747,10 +747,10 @@ index ca18c1a22b1..11dd6d65fa0 100644 - -#endif diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h -index 504975538cc..55e91f7a0bd 100644 +index 3ccb51e155c..313244e5e59 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h -@@ -94,12 +94,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON +@@ -98,12 +98,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON extern NTSTATUS (WINAPI *pKiUserExceptionDispatcher)(EXCEPTION_RECORD*,CONTEXT*) DECLSPEC_HIDDEN; extern void (WINAPI *pLdrInitializeThunk)(CONTEXT*,void**,ULONG_PTR,ULONG_PTR) DECLSPEC_HIDDEN; extern void (WINAPI *pRtlUserThreadStart)( PRTL_THREAD_START_ROUTINE entry, void *arg ) DECLSPEC_HIDDEN; @@ -762,17 +762,17 @@ index 504975538cc..55e91f7a0bd 100644 -extern NTSTATUS CDECL fast_RtlReleaseSRWLockShared( RTL_SRWLOCK *lock ) DECLSPEC_HIDDEN; extern LONGLONG CDECL fast_RtlGetSystemTimePrecise(void) DECLSPEC_HIDDEN; - extern USHORT * CDECL get_unix_codepage_data(void) DECLSPEC_HIDDEN; + extern void CDECL virtual_release_address_space(void) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h -index 246fd44a53e..8527f44173b 100644 +index ed9c6584939..090a694bb40 100644 --- a/dlls/ntdll/unixlib.h +++ b/dlls/ntdll/unixlib.h @@ -26,7 +26,7 @@ struct _DISPATCHER_CONTEXT; /* increment this when you change the function table */ --#define NTDLL_UNIXLIB_VERSION 116 -+#define NTDLL_UNIXLIB_VERSION 117 +-#define NTDLL_UNIXLIB_VERSION 118 ++#define NTDLL_UNIXLIB_VERSION 119 struct unix_funcs { diff --git a/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch b/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch index bbfd2293..502556f8 100644 --- a/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch +++ b/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch @@ -1,4 +1,4 @@ -From 0cdc9966b9cf95ab1d2c53112ef6ea03479a5708 Mon Sep 17 00:00:00 2001 +From bdb8554de8eba7d4a6e948122c1f98aad35e5d53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sat, 4 Oct 2014 02:53:22 +0200 Subject: [PATCH] ntdll: Setup a temporary signal handler during process @@ -15,10 +15,10 @@ Subject: [PATCH] ntdll: Setup a temporary signal handler during process 7 files changed, 75 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c -index c4f897f3d0d..7eedb03e7a0 100644 +index b7e1432535d..90fd2cb7a16 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c -@@ -1983,6 +1983,8 @@ void __wine_main( int argc, char *argv[], char *envp[] ) +@@ -2075,6 +2075,8 @@ void __wine_main( int argc, char *argv[], char *envp[] ) #endif virtual_init(); @@ -28,10 +28,10 @@ index c4f897f3d0d..7eedb03e7a0 100644 #ifdef __APPLE__ diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c -index 2de58925c84..3816f4429b8 100644 +index 5c96521e55e..bdefeb57ebf 100644 --- a/dlls/ntdll/unix/signal_arm.c +++ b/dlls/ntdll/unix/signal_arm.c -@@ -971,6 +971,12 @@ void *signal_init_syscalls(void) +@@ -982,6 +982,12 @@ void *signal_init_syscalls(void) return __wine_syscall_dispatcher; } @@ -45,10 +45,10 @@ index 2de58925c84..3816f4429b8 100644 /*********************************************************************** * init_thread_context diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c -index 9a36746f5bc..b04eaf92b65 100644 +index 80cc59d0743..b8ebca0d9c4 100644 --- a/dlls/ntdll/unix/signal_arm64.c +++ b/dlls/ntdll/unix/signal_arm64.c -@@ -1130,6 +1130,13 @@ void *signal_init_syscalls(void) +@@ -1140,6 +1140,13 @@ void *signal_init_syscalls(void) } @@ -63,10 +63,10 @@ index 9a36746f5bc..b04eaf92b65 100644 * init_thread_context */ diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c -index 09529a1ea96..41ea96ccbff 100644 +index cc1e1d24e2a..807ebb38169 100644 --- a/dlls/ntdll/unix/signal_i386.c +++ b/dlls/ntdll/unix/signal_i386.c -@@ -1907,6 +1907,30 @@ static BOOL handle_syscall_fault( ucontext_t *sigcontext, void *stack_ptr, +@@ -1984,6 +1984,30 @@ static BOOL handle_syscall_fault( ucontext_t *sigcontext, void *stack_ptr, } @@ -97,8 +97,8 @@ index 09529a1ea96..41ea96ccbff 100644 /********************************************************************** * segv_handler * -@@ -2475,6 +2499,34 @@ void *signal_init_syscalls(void) - return __wine_syscall_dispatcher; +@@ -2560,6 +2584,34 @@ void *signal_init_syscalls(void) + return NtCurrentTeb()->WOW32Reserved = syscall_dispatcher; } +/********************************************************************** @@ -133,10 +133,10 @@ index 09529a1ea96..41ea96ccbff 100644 /*********************************************************************** * init_thread_context diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c -index 8d3353e959d..7c0b446ecba 100644 +index e62e958b4aa..b10c0e58b17 100644 --- a/dlls/ntdll/unix/signal_x86_64.c +++ b/dlls/ntdll/unix/signal_x86_64.c -@@ -2783,6 +2783,12 @@ void *signal_init_syscalls(void) +@@ -2849,6 +2849,12 @@ void *signal_init_syscalls(void) return syscall_dispatcher; } @@ -150,10 +150,10 @@ index 8d3353e959d..7c0b446ecba 100644 /*********************************************************************** * init_thread_context diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h -index 65f526d0f7d..ca18cede199 100644 +index 031f9ed3d33..79a27192e18 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h -@@ -208,6 +208,7 @@ extern NTSTATUS signal_alloc_thread( TEB *teb ) DECLSPEC_HIDDEN; +@@ -207,6 +207,7 @@ extern NTSTATUS signal_alloc_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_free_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_init_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_init_process(void) DECLSPEC_HIDDEN; @@ -162,10 +162,10 @@ index 65f526d0f7d..ca18cede199 100644 extern void DECLSPEC_NORETURN signal_start_thread( PRTL_THREAD_START_ROUTINE entry, void *arg, BOOL suspend, void *thunk, TEB *teb ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c -index 9889028de27..6cdf5c3fa5c 100644 +index 23585a2a17b..5299a6c8859 100644 --- a/dlls/ntdll/unix/virtual.c +++ b/dlls/ntdll/unix/virtual.c -@@ -2933,7 +2933,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack ) +@@ -2932,7 +2932,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack ) mutex_lock( &virtual_mutex ); /* no need for signal masking inside signal handler */ vprot = get_page_vprot( page ); diff --git a/patches/nvapi-Stub_DLL/0001-nvapi-First-implementation.patch b/patches/nvapi-Stub_DLL/0001-nvapi-First-implementation.patch index 437bee6c..920968f1 100644 --- a/patches/nvapi-Stub_DLL/0001-nvapi-First-implementation.patch +++ b/patches/nvapi-Stub_DLL/0001-nvapi-First-implementation.patch @@ -1,4 +1,4 @@ -From d0a39d80d29ceee3358929d2b017a374f688ab2f Mon Sep 17 00:00:00 2001 +From 984214b365c072614c45f996074c092f3ca34d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 5 Jan 2015 18:11:53 +0100 Subject: [PATCH] nvapi: First implementation. @@ -25,10 +25,10 @@ Subject: [PATCH] nvapi: First implementation. create mode 100644 include/nvapi.h diff --git a/configure.ac b/configure.ac -index 67f4376f9aa..4c74e6436a3 100644 +index 69674311deb..d0117589326 100644 --- a/configure.ac +++ b/configure.ac -@@ -224,6 +224,12 @@ esac +@@ -225,6 +225,12 @@ esac dnl enable_win16 defaults to yes on x86, to no on other CPUs enable_win16=${enable_win16:-no} enable_win64=${enable_win64:-no} @@ -38,10 +38,10 @@ index 67f4376f9aa..4c74e6436a3 100644 +else + enable_win32="no" +fi + enable_wow64cpu=${enable_wow64cpu:-no} dnl Disable winetest too if tests are disabled - enable_winetest=${enable_winetest:-$enable_tests} -@@ -3557,6 +3563,9 @@ WINE_CONFIG_MAKEFILE(dlls/ntoskrnl.exe) +@@ -3559,6 +3565,9 @@ WINE_CONFIG_MAKEFILE(dlls/ntoskrnl.exe) WINE_CONFIG_MAKEFILE(dlls/ntoskrnl.exe/tests) WINE_CONFIG_MAKEFILE(dlls/ntprint) WINE_CONFIG_MAKEFILE(dlls/ntprint/tests) @@ -858,7 +858,7 @@ index 00000000000..f0c054b2bf9 +@ stub DllRegisterServer +@ stub DllUnregisterServer diff --git a/include/Makefile.in b/include/Makefile.in -index 41861c5af0d..78e9b15aad1 100644 +index 02ddf06df8f..f0600555cd9 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -539,6 +539,7 @@ SOURCES = \ diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index efe74f97..9595712e 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "0f972e2247932f255f131792724e4796b4b2b87a" + echo "3c2db20f66806074b047b0b3c76aa86ad79e3175" } # Show version information @@ -303,7 +303,6 @@ patch_enable_all () enable_winmm_mciSendCommandA="$1" enable_wintab32_improvements="$1" enable_wintrust_WTHelperGetProvCertFromChain="$1" - enable_wow64cpu_Wow64Transition="$1" enable_wpcap_Dynamic_Linking="$1" enable_ws2_32_APC_Performance="$1" enable_ws2_32_Connect_Time="$1" @@ -982,9 +981,6 @@ patch_enable () wintrust-WTHelperGetProvCertFromChain) enable_wintrust_WTHelperGetProvCertFromChain="$2" ;; - wow64cpu-Wow64Transition) - enable_wow64cpu_Wow64Transition="$2" - ;; wpcap-Dynamic_Linking) enable_wpcap_Dynamic_Linking="$2" ;; @@ -4749,20 +4745,6 @@ if test "$enable_wintrust_WTHelperGetProvCertFromChain" -eq 1; then patch_apply wintrust-WTHelperGetProvCertFromChain/0001-wintrust-Add-parameter-check-in-WTHelperGetProvCertF.patch fi -# Patchset wow64cpu-Wow64Transition -# | -# | This patchset fixes the following Wine bugs: -# | * [#45567] League of Legends 8.12+ fails to start a game (anticheat engine, validation of WoW64 syscall dispatcher) -# | -# | Modified files: -# | * configure, configure.ac, dlls/ntdll/loader.c, dlls/ntdll/ntdll.spec, dlls/wow64cpu/Makefile.in, -# | dlls/wow64cpu/wow64cpu.spec, dlls/wow64cpu/wow64cpu_main.c -# | -if test "$enable_wow64cpu_Wow64Transition" -eq 1; then - patch_apply wow64cpu-Wow64Transition/0001-wow64cpu-Add-stub-dll.patch - patch_apply wow64cpu-Wow64Transition/0002-ntdll-Add-a-stub-implementation-of-Wow64Transition.patch -fi - # Patchset wpcap-Dynamic_Linking # | # | Modified files: diff --git a/patches/wow64cpu-Wow64Transition/0001-wow64cpu-Add-stub-dll.patch b/patches/wow64cpu-Wow64Transition/0001-wow64cpu-Add-stub-dll.patch deleted file mode 100644 index 2f936602..00000000 --- a/patches/wow64cpu-Wow64Transition/0001-wow64cpu-Add-stub-dll.patch +++ /dev/null @@ -1,128 +0,0 @@ -From 162044fcf5d46edd5cc3c0994ec6085f5cdc3a53 Mon Sep 17 00:00:00 2001 -From: Zebediah Figura -Date: Tue, 7 Aug 2018 21:05:56 -0500 -Subject: [PATCH 1/2] wow64cpu: Add stub dll. - ---- - configure | 2 ++ - configure.ac | 1 + - dlls/wow64cpu/Makefile.in | 6 ++++++ - dlls/wow64cpu/wow64cpu.spec | 25 +++++++++++++++++++++++++ - dlls/wow64cpu/wow64cpu_main.c | 28 ++++++++++++++++++++++++++++ - 5 files changed, 62 insertions(+) - create mode 100644 dlls/wow64cpu/Makefile.in - create mode 100644 dlls/wow64cpu/wow64cpu.spec - create mode 100644 dlls/wow64cpu/wow64cpu_main.c - -diff --git a/configure b/configure -index 337ce91..477fe02 100755 ---- a/configure -+++ b/configure -@@ -1612,6 +1612,7 @@ enable_wmp - enable_wmphoto - enable_wmvcore - enable_wnaspi32 -+enable_wow64cpu - enable_wpc - enable_wpcap - enable_ws2_32 -@@ -19952,6 +19953,7 @@ wine_fn_config_makefile dlls/wmvcore enable_wmvcore - wine_fn_config_makefile dlls/wmvcore/tests enable_tests - wine_fn_config_makefile dlls/wnaspi32 enable_wnaspi32 - wine_fn_config_makefile dlls/wow32 enable_win16 -+wine_fn_config_makefile dlls/wow64cpu enable_wow64cpu - wine_fn_config_makefile dlls/wpc enable_wpc - wine_fn_config_makefile dlls/wpc/tests enable_tests - wine_fn_config_makefile dlls/wpcap enable_wpcap -diff --git a/configure.ac b/configure.ac -index be247ea..376b818 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -3813,6 +3813,7 @@ WINE_CONFIG_MAKEFILE(dlls/wmvcore) - WINE_CONFIG_MAKEFILE(dlls/wmvcore/tests) - WINE_CONFIG_MAKEFILE(dlls/wnaspi32) - WINE_CONFIG_MAKEFILE(dlls/wow32,enable_win16) -+WINE_CONFIG_MAKEFILE(dlls/wow64cpu) - WINE_CONFIG_MAKEFILE(dlls/wpc) - WINE_CONFIG_MAKEFILE(dlls/wpc/tests) - WINE_CONFIG_MAKEFILE(dlls/wpcap) -diff --git a/dlls/wow64cpu/Makefile.in b/dlls/wow64cpu/Makefile.in -new file mode 100644 -index 0000000..d05ff34 ---- /dev/null -+++ b/dlls/wow64cpu/Makefile.in -@@ -0,0 +1,6 @@ -+MODULE = wow64cpu.dll -+EXTRADLLFLAGS = -nodefaultlibs -+IMPORTS = winecrt0 ntdll -+ -+C_SRCS = \ -+ wow64cpu_main.c -diff --git a/dlls/wow64cpu/wow64cpu.spec b/dlls/wow64cpu/wow64cpu.spec -new file mode 100644 -index 0000000..0ea2b4d ---- /dev/null -+++ b/dlls/wow64cpu/wow64cpu.spec -@@ -0,0 +1,25 @@ -+# @ stub CpuFlushInstructionCache -+# @ stub CpuGetContext -+# @ stub CpuGetStackPointer -+# @ stub CpuInitializeStartupContext -+# @ stub CpuNotifyAffinityChange -+# @ stub CpuNotifyAfterFork -+# @ stub CpuNotifyBeforeFork -+# @ stub CpuNotifyDllLoad -+# @ stub CpuNotifyDllUnload -+# @ stub CpuPrepareForDebuggerAttach -+# @ stub CpuProcessDebugEvent -+# @ stub CpuProcessInit -+# @ stub CpuProcessTerm -+# @ stub CpuResetFloatingPoint -+# @ stub CpuResetToConsistentState -+# @ stub CpuSetContext -+# @ stub CpuSetInstructionPointer -+# @ stub CpuSetStackPointer -+# @ stub CpuSimulate -+# @ stub CpuSuspendLocalThread -+# @ stub CpuSuspendThread -+# @ stub CpuThreadInit -+# @ stub CpuThreadTerm -+# @ stub TurboDispatchJumpAddressEnd -+# @ stub TurboDispatchJumpAddressStart -diff --git a/dlls/wow64cpu/wow64cpu_main.c b/dlls/wow64cpu/wow64cpu_main.c -new file mode 100644 -index 0000000..9bf8012 ---- /dev/null -+++ b/dlls/wow64cpu/wow64cpu_main.c -@@ -0,0 +1,28 @@ -+/* -+ * Copyright 2018 Zebediah Figura -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA -+ */ -+ -+#include "config.h" -+#include -+#include "windef.h" -+#include "winternl.h" -+ -+BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, void *reserved ) -+{ -+ if (reason == DLL_PROCESS_ATTACH) LdrDisableThreadCalloutsForDll( inst ); -+ return TRUE; -+} --- -2.7.4 - diff --git a/patches/wow64cpu-Wow64Transition/0002-ntdll-Add-a-stub-implementation-of-Wow64Transition.patch b/patches/wow64cpu-Wow64Transition/0002-ntdll-Add-a-stub-implementation-of-Wow64Transition.patch deleted file mode 100644 index 9af92159..00000000 --- a/patches/wow64cpu-Wow64Transition/0002-ntdll-Add-a-stub-implementation-of-Wow64Transition.patch +++ /dev/null @@ -1,63 +0,0 @@ -From b692b26c6e1907d8e72c19a30463b258f18c5f30 Mon Sep 17 00:00:00 2001 -From: Zebediah Figura -Date: Wed, 8 Aug 2018 20:00:15 -0500 -Subject: [PATCH] ntdll: Add a stub implementation of Wow64Transition. - ---- - dlls/ntdll/loader.c | 11 ++++++++++- - dlls/ntdll/ntdll.spec | 1 + - 2 files changed, 11 insertions(+), 1 deletion(-) - -diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index 8dbbb14f05d..1fc49fa580f 100644 ---- a/dlls/ntdll/loader.c -+++ b/dlls/ntdll/loader.c -@@ -3935,6 +3935,7 @@ BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved ) - return TRUE; - } - -+void *Wow64Transition; - - /*********************************************************************** - * restart_winevdm -@@ -3965,9 +3966,10 @@ static void restart_winevdm( RTL_USER_PROCESS_PARAMETERS *params ) - static NTSTATUS process_init(void) - { - RTL_USER_PROCESS_PARAMETERS *params; -- WINE_MODREF *wm; -+ WINE_MODREF *wm, *wow64cpu_wm; - NTSTATUS status; - ANSI_STRING func_name; -+ UNICODE_STRING nt_name; - INITIAL_TEB stack; - TEB *teb = NtCurrentTeb(); - PEB *peb = teb->Peb; -@@ -4074,6 +4076,13 @@ static NTSTATUS process_init(void) - MESSAGE( "wine: could not load kernel32.dll, status %x\n", status ); - NtTerminateProcess( GetCurrentProcess(), status ); - } -+ -+ RtlInitUnicodeString( &nt_name, L"\\??\\C:\\windows\\system32\\wow64cpu.dll" ); -+ if ((status = load_builtin_dll( NULL, &nt_name, 0, &wow64cpu_wm, FALSE )) == STATUS_SUCCESS) -+ Wow64Transition = wow64cpu_wm->ldr.DllBase; -+ else -+ WARN( "could not load wow64cpu.dll, status %#x\n", status ); -+ - RtlInitAnsiString( &func_name, "BaseThreadInitThunk" ); - if ((status = LdrGetProcedureAddress( wm->ldr.DllBase, &func_name, - 0, (void **)&pBaseThreadInitThunk )) != STATUS_SUCCESS) -diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec -index 185dd6767eb..4b40e292fad 100644 ---- a/dlls/ntdll/ntdll.spec -+++ b/dlls/ntdll/ntdll.spec -@@ -1129,6 +1129,7 @@ - @ stdcall WinSqmIsOptedIn() - @ stdcall WinSqmSetDWORD(ptr long long) - @ stdcall WinSqmStartSession(ptr long long) -+@ extern Wow64Transition - @ stdcall -private -syscall ZwAcceptConnectPort(ptr long ptr long ptr ptr) NtAcceptConnectPort - @ stdcall -private -syscall ZwAccessCheck(ptr long long ptr ptr ptr ptr ptr) NtAccessCheck - @ stdcall -private -syscall ZwAccessCheckAndAuditAlarm(ptr long ptr ptr ptr long ptr long ptr ptr ptr) NtAccessCheckAndAuditAlarm --- -2.20.1 - diff --git a/patches/wow64cpu-Wow64Transition/definition b/patches/wow64cpu-Wow64Transition/definition deleted file mode 100644 index 52022c4d..00000000 --- a/patches/wow64cpu-Wow64Transition/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [45567] League of Legends 8.12+ fails to start a game (anticheat engine, validation of WoW64 syscall dispatcher) diff --git a/staging/upstream-commit b/staging/upstream-commit index 47aedaeb..3a7ca73d 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -0f972e2247932f255f131792724e4796b4b2b87a +3c2db20f66806074b047b0b3c76aa86ad79e3175