summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--0007-ntdll-stub-NtSetInformationThread-ThreadPriority.patch18
-rw-r--r--0008-ntdll-nopguard-call_vectored_handlers.patch14
-rw-r--r--PKGBUILD12
3 files changed, 44 insertions, 0 deletions
diff --git a/0007-ntdll-stub-NtSetInformationThread-ThreadPriority.patch b/0007-ntdll-stub-NtSetInformationThread-ThreadPriority.patch
new file mode 100644
index 000000000000..dbaa2235bc1e
--- /dev/null
+++ b/0007-ntdll-stub-NtSetInformationThread-ThreadPriority.patch
@@ -0,0 +1,18 @@
+diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c
+index d56962e1721..87fdf2634b9 100644
+--- a/dlls/ntdll/unix/thread.c
++++ b/dlls/ntdll/unix/thread.c
+@@ -2402,9 +2402,12 @@ NTSTATUS WINAPI NtSetInformationThread( HANDLE handle, THREADINFOCLASS class,
+ WARN("Unimplemented class ThreadPriorityBoost.\n");
+ return STATUS_SUCCESS;
+
++ case ThreadPriority:
++ WARN("Unimplemented ThreadPriority\n");
++ return STATUS_SUCCESS;
++
+ case ThreadBasicInformation:
+ case ThreadTimes:
+- case ThreadPriority:
+ case ThreadDescriptorTableEntry:
+ case ThreadEventPair_Reusable:
+ case ThreadPerformanceCount:
diff --git a/0008-ntdll-nopguard-call_vectored_handlers.patch b/0008-ntdll-nopguard-call_vectored_handlers.patch
new file mode 100644
index 000000000000..ffb1d22dff42
--- /dev/null
+++ b/0008-ntdll-nopguard-call_vectored_handlers.patch
@@ -0,0 +1,14 @@
+diff --git a/dlls/ntdll/exception.c b/dlls/ntdll/exception.c
+index fc3e8982a98..a975e5c897a 100644
+--- a/dlls/ntdll/exception.c
++++ b/dlls/ntdll/exception.c
+@@ -168,7 +168,9 @@ LONG call_vectored_handlers( EXCEPTION_RECORD *rec, CONTEXT *context )
+
+ TRACE( "calling handler at %p code=%lx flags=%lx\n",
+ func, rec->ExceptionCode, rec->ExceptionFlags );
++ __asm__ __volatile__(".rept 16 ; nop ; .endr");
+ ret = func( &except_ptrs );
++ __asm__ __volatile__(".rept 16 ; nop ; .endr");
+ TRACE( "handler at %p returned %lx\n", func, ret );
+
+ RtlEnterCriticalSection( &vectored_handlers_section );
diff --git a/PKGBUILD b/PKGBUILD
index 34ff7b3b297e..0513cfce821b 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -19,6 +19,8 @@ source=("git+https://github.com/wine-staging/wine-staging.git#tag=v${_winever}"
"0004-LoL-broken-client-update-fix.patch"
"0005-LoL-client-slow-start-fix.patch"
"0006-LoL-abi-vsyscall32-disable-vDSO.patch"
+ "0007-ntdll-stub-NtSetInformationThread-ThreadPriority.patch"
+ "0008-ntdll-nopguard-call_vectored_handlers.patch"
)
sha256sums=('SKIP'
@@ -28,6 +30,8 @@ sha256sums=('SKIP'
'7607a84fd357a86bc8fb59d2cf002a3e471bd8ec78ecdb844b0b77b1ae6d11a0'
'49dfbf7546c00958e2b426a61371eedf0119471e9998b354595d5c0ce6dab48b'
'fe33c51d492de4685b515781ac157a5d02f8048a528404b4fd8319cfc7f5cf25'
+ 'fc4fba4db2f691e3686fa84dd81935f0eb183d7c5c1215aba33a575b42b38cb5'
+ '2075ddc417ddd11954f76be753c88e04db28f0b3937e60508f178630dd5763eb'
)
depends=(
@@ -130,6 +134,14 @@ prepare() {
# Disables vDSO in preelink, no need for "sudo sysctl -w abi.vsyscall32=0"
printf 'Apply 0006-LoL-abi-vsyscall32-disable-vDSO.patch\n'
patch -Np1 < "${srcdir}/0006-LoL-abi-vsyscall32-disable-vDSO.patch"
+
+ # Properly stub ThreadPriority for NtSetInformationThread
+ printf 'Apply 0007-ntdll-stub-NtSetInformationThread-ThreadPriority.patch\n'
+ patch -Np1 < "${srcdir}/0007-ntdll-stub-NtSetInformationThread-ThreadPriority.patch"
+
+ # Add some nops around exception dispatch for pacman/stub.dll to be able to hook
+ printf 'Apply 0008-ntdll-nopguard-call_vectored_handlers.patch\n'
+ patch -Np1 < "${srcdir}/0008-ntdll-nopguard-call_vectored_handlers.patch"
}
build() {