Updated winebuild-Fake_Dlls patchset.

Fix stack alignment in x64 syscall thunks, again.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48274
This commit is contained in:
Paul Gofman 2019-12-16 16:44:27 +03:00
parent 8e8259db69
commit d36d63ac84

View File

@ -1,4 +1,4 @@
From f570930840bae4c83ec53acd52b5d45daa266898 Mon Sep 17 00:00:00 2001
From 76abfa6c07701466a7a14bfeeaad64e357f54a1c 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.
@ -117,7 +117,7 @@ index 004b6aea7a..40946409c5 100644
if (odp->flags & (FLAG_FORWARD | FLAG_REGISTER))
return 0;
diff --git a/tools/winebuild/spec32.c b/tools/winebuild/spec32.c
index 800cb23023..04e3d77042 100644
index 800cb23023..19046e5a50 100644
--- a/tools/winebuild/spec32.c
+++ b/tools/winebuild/spec32.c
@@ -372,11 +372,11 @@ static void output_relay_debug( DLLSPEC *spec )
@ -243,7 +243,6 @@ index 800cb23023..04e3d77042 100644
+ output_cfi( ".cfi_rel_offset %%rsi,-8" );
+ output( "\tpushq %%rdi\n" );
+ output_cfi( ".cfi_rel_offset %%rdi,-16" );
+ output( "\tand $~0xf,%%rsp\n\t" ); /* ensure stack alignment. */
+
+ /* Legends of Runeterra hooks the first system call return instruction, and
+ * depends on us returning to it. Adjust the return address accordingly. */
@ -262,6 +261,7 @@ index 800cb23023..04e3d77042 100644
+ else
+ output( "\tmovzbq %s(%%rax),%%rcx\n", asm_name("__wine_syscall_stack_size") );
+ output( "\tsubq %%rcx,%%rsp\n" );
+ output( "\tand $~0xf,%%rsp\n\t" ); /* ensure stack alignment. */
+ output( "\tshrq $3,%%rcx\n" );
+ output( "\tmovq %%rsp,%%rdi\n" );
+ output( "\trep; movsq\n" );