Jacek Caban : winebuild: Restore all x86_64 control registers in syscall dispatcher.
Module: wine Branch: master Commit: 9b6f715b28a5fad471a7c4800881f93ecf28787e URL: https://source.winehq.org/git/wine.git/?a=commit;h=9b6f715b28a5fad471a7c4800... Author: Jacek Caban <jacek(a)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(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)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;
participants (1)
-
Alexandre Julliard