You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Rebase against 4de079bb7247c8b849558c0f27a280a9546c5570.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From 32242051c19fcd4f4f0ada534ad5a1621df96b45 Mon Sep 17 00:00:00 2001
|
||||
From 8d1cfce5ceee03b91f9843e7b5123fed823687e7 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Gofman <pgofman@codeweavers.com>
|
||||
Date: Tue, 14 Jul 2020 15:00:34 +0300
|
||||
Subject: [PATCH] ntdll: Support x86_64 syscall emulation.
|
||||
@@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Support x86_64 syscall emulation.
|
||||
3 files changed, 120 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 5e392ff5ed6..d814b6f85d7 100644
|
||||
index caff5d1fe52..d30b437320a 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -466,6 +466,7 @@ AC_CHECK_HEADERS(\
|
||||
@@ -467,6 +467,7 @@ AC_CHECK_HEADERS(\
|
||||
linux/joystick.h \
|
||||
linux/major.h \
|
||||
linux/param.h \
|
||||
@@ -22,7 +22,7 @@ index 5e392ff5ed6..d814b6f85d7 100644
|
||||
linux/types.h \
|
||||
linux/ucdrom.h \
|
||||
diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
|
||||
index 892d208e43a..bb820eee6e5 100644
|
||||
index 8d3353e959d..a8a142c2ab1 100644
|
||||
--- a/dlls/ntdll/unix/signal_x86_64.c
|
||||
+++ b/dlls/ntdll/unix/signal_x86_64.c
|
||||
@@ -28,6 +28,7 @@
|
||||
@@ -33,7 +33,7 @@ index 892d208e43a..bb820eee6e5 100644
|
||||
#include <pthread.h>
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
@@ -64,6 +65,13 @@
|
||||
@@ -65,6 +66,13 @@
|
||||
# include <mach/mach.h>
|
||||
#endif
|
||||
|
||||
@@ -47,7 +47,7 @@ index 892d208e43a..bb820eee6e5 100644
|
||||
#define NONAMELESSUNION
|
||||
#define NONAMELESSSTRUCT
|
||||
#include "ntstatus.h"
|
||||
@@ -2320,6 +2328,114 @@ static inline DWORD is_privileged_instr( CONTEXT *context )
|
||||
@@ -2292,6 +2300,114 @@ static inline DWORD is_privileged_instr( CONTEXT *context )
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -162,7 +162,7 @@ index 892d208e43a..bb820eee6e5 100644
|
||||
|
||||
/***********************************************************************
|
||||
* handle_interrupt
|
||||
@@ -2779,6 +2895,7 @@ void signal_init_process(void)
|
||||
@@ -2751,6 +2867,7 @@ void signal_init_process(void)
|
||||
if (sigaction( SIGSEGV, &sig_act, NULL ) == -1) goto error;
|
||||
if (sigaction( SIGILL, &sig_act, NULL ) == -1) goto error;
|
||||
if (sigaction( SIGBUS, &sig_act, NULL ) == -1) goto error;
|
||||
@@ -171,18 +171,18 @@ index 892d208e43a..bb820eee6e5 100644
|
||||
|
||||
error:
|
||||
diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c
|
||||
index 5645d3aa9af..441a3800726 100644
|
||||
index 0fddbaf6134..901423cc028 100644
|
||||
--- a/tools/winebuild/import.c
|
||||
+++ b/tools/winebuild/import.c
|
||||
@@ -1526,6 +1526,7 @@ void output_syscalls( DLLSPEC *spec )
|
||||
/* Legends of Runeterra hooks the first system call return instruction, and
|
||||
* depends on us returning to it. Adjust the return address accordingly. */
|
||||
output( "\tsubq $0xb,0x8(%%rbp)\n" );
|
||||
+ output( "\tsubq $0xf000,%%rax\n" );
|
||||
output( "\tmovq 0x8(%%rbp),%%rbx\n" );
|
||||
output( "\tmovq %%rbx,-0x28(%%rbp)\n" );
|
||||
output( "\tleaq 0x10(%%rbp),%%rbx\n" );
|
||||
@@ -1746,7 +1747,7 @@ void output_syscalls( DLLSPEC *spec )
|
||||
@@ -1510,6 +1510,7 @@ static void output_syscall_dispatcher( int count, const char *variant )
|
||||
/* Legends of Runeterra hooks the first system call return instruction, and
|
||||
* depends on us returning to it. Adjust the return address accordingly. */
|
||||
output( "\tsubq $0xb,0x8(%%rbp)\n" );
|
||||
+ output( "\tsubq $0xf000,%%rax\n" );
|
||||
output( "\tmovq 0x8(%%rbp),%%rbx\n" );
|
||||
output( "\tmovq %%rbx,-0x28(%%rbp)\n" );
|
||||
output( "\tleaq 0x10(%%rbp),%%rbx\n" );
|
||||
@@ -1779,7 +1780,7 @@ void output_syscalls( DLLSPEC *spec )
|
||||
* validate that instruction, we can just put a jmp there instead. */
|
||||
output( "\t.byte 0x4c,0x8b,0xd1\n" ); /* movq %rcx,%r10 */
|
||||
output( "\t.byte 0xb8\n" ); /* movl $i,%eax */
|
||||
|
Reference in New Issue
Block a user