Jacek Caban : winebuild: Restore all x86_64 control registers in syscall dispatcher.

Alexandre Julliard julliard at winehq.org
Wed Feb 17 16:23:33 CST 2021


Module: wine
Branch: master
Commit: 9b6f715b28a5fad471a7c4800881f93ecf28787e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=9b6f715b28a5fad471a7c4800881f93ecf28787e

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Feb 15 21:59:02 2021 +0100

winebuild: Restore all x86_64 control registers in syscall dispatcher.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 tools/winebuild/import.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c
index 863d17c2734..6b5f704c8f1 100644
--- a/tools/winebuild/import.c
+++ b/tools/winebuild/import.c
@@ -1564,11 +1564,12 @@ void output_syscalls( DLLSPEC *spec )
             output_cfi( ".cfi_same_value %%rsi" );
             output( "\tmovq -0x90(%%rbp),%%rbx\n" );
             output_cfi( ".cfi_same_value %%rbx" );
+            output( "\tleaq -0x28(%%rbp),%%rsp\n" );
             output_cfi( ".cfi_def_cfa_register %%rsp" );
-            output( "\tleave\n" );
-            output_cfi( ".cfi_adjust_cfa_offset -8" );
+            output_cfi( ".cfi_adjust_cfa_offset 40" );
+            output( "\tmovq (%%rbp),%%rbp\n" );
             output_cfi( ".cfi_same_value %%rbp" );
-            output( "\tret\n" );
+            output( "\tiretq\n" );
             output( "3:\tmovl $0x%x,%%eax\n", invalid_param );
             output( "\tjmp 2b\n" );
             break;




More information about the wine-cvs mailing list