Signed-off-by: fanwenjie fanwj@mail.ustc.edu.cn
On unixlib, macro WINAPI means nothing. In windef.h
``` #ifdef WINE_UNIX_LIB # define __stdcall # define __cdecl # define __fastcall #elif !defined(_MSC_VER) && !defined(__MINGW32__) ``` ``` extern void WINAPI DECLSPEC_NORETURN __wine_syscall_dispatcher_return( void *frame, ULONG_PTR retval ) DECLSPEC_HIDDEN; ```
equals ``` extern void __attribute__((sysv_abi)) DECLSPEC_NORETURN __wine_syscall_dispatcher_return( void *frame, ULONG_PTR retval ) DECLSPEC_HIDDEN; ```
But implementation of __wine_syscall_dispatcher_return is ms_abi on x86_64, the patch fixed it
From: Fan WenJie fanwj@mail.ustc.edu.cn
Signed-off-by: fanwenjie fanwj@mail.ustc.edu.cn --- dlls/ntdll/unix/signal_x86_64.c | 7 ++++--- dlls/ntdll/unix/unix_private.h | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c index 48443799ef6..e21b4a218b9 100644 --- a/dlls/ntdll/unix/signal_x86_64.c +++ b/dlls/ntdll/unix/signal_x86_64.c @@ -2824,14 +2824,15 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, __ASM_CFI_REG_IS_AT1(r14, rbp, 0x48) __ASM_CFI_REG_IS_AT1(r15, rbp, 0x50) __ASM_CFI_REG_IS_AT1(rbp, rbp, 0x00) - "5:\tmovl $0xc000000d,%edx\n\t" /* STATUS_INVALID_PARAMETER */ - "movq %rsp,%rcx\n\t" + "5:\tmovl $0xc000000d,%esi\n\t" /* STATUS_INVALID_PARAMETER */ + "movq %rsp,%rdi\n\t" /* $rcx is now pointing to "frame" again */ __ASM_CFI(".cfi_restore_state\n\t") ".globl " __ASM_NAME("__wine_syscall_dispatcher_return") "\n" __ASM_NAME("__wine_syscall_dispatcher_return") ":\n\t" + "movq %rdi, %rcx\n\t" "movl 0xb0(%rcx),%r14d\n\t" /* frame->syscall_flags */ - "movq %rdx,%rax\n\t" + "movq %rsi,%rax\n\t" "jmp " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") )
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h index a9a829a1685..4d62c4f6570 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h @@ -266,7 +266,7 @@ extern void DECLSPEC_NORETURN signal_start_thread( PRTL_THREAD_START_ROUTINE ent extern void DECLSPEC_NORETURN signal_exit_thread( int status, void (*func)(int), TEB *teb ) DECLSPEC_HIDDEN; extern SYSTEM_SERVICE_TABLE KeServiceDescriptorTable[4] DECLSPEC_HIDDEN; extern void __wine_syscall_dispatcher(void) DECLSPEC_HIDDEN; -extern void WINAPI DECLSPEC_NORETURN __wine_syscall_dispatcher_return( void *frame, ULONG_PTR retval ) DECLSPEC_HIDDEN; +extern void DECLSPEC_NORETURN __wine_syscall_dispatcher_return( void *frame, ULONG_PTR retval ) DECLSPEC_HIDDEN; extern void __wine_unix_call_dispatcher(void) DECLSPEC_HIDDEN; extern NTSTATUS signal_set_full_context( CONTEXT *context ) DECLSPEC_HIDDEN; extern NTSTATUS get_thread_wow64_context( HANDLE handle, void *ctx, ULONG size ) DECLSPEC_HIDDEN;
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=133634
Your paranoid android.
=== debian11b (64 bit WoW report) ===
ntdll: exception: Timeout file: Timeout info: Timeout
Report validation errors: ntdll:om timeout
=== debian11b (build log) ===
WineRunWineTest.pl:error: The task timed out
This merge request was closed by Alexandre Julliard.
Superseded by 931292f1a6af1fee99e2e7a0bad787d8436219ef.