From: Brendan Shanks bshanks@codeweavers.com
Fixes syscall faults on 32-bit macOS.
Spotted by Stefan Dösinger. --- dlls/ntdll/unix/signal_arm.c | 1 + dlls/ntdll/unix/signal_arm64.c | 1 + dlls/ntdll/unix/signal_i386.c | 2 ++ dlls/ntdll/unix/signal_x86_64.c | 2 ++ 4 files changed, 6 insertions(+)
diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c index c8edf22b170..b93bd2fbde7 100644 --- a/dlls/ntdll/unix/signal_arm.c +++ b/dlls/ntdll/unix/signal_arm.c @@ -1262,6 +1262,7 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, "movt r0, #0xc000\n\t" "add sp, sp, #0x10\n\t" "b 4b\n" + ".globl " __ASM_NAME("__wine_syscall_dispatcher_return") "\n\t" __ASM_NAME("__wine_syscall_dispatcher_return") ":\n\t" "mov r8, r0\n\t" "mov r0, r1\n\t" diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c index 45cb3d1bf13..a2e2a805e76 100644 --- a/dlls/ntdll/unix/signal_arm64.c +++ b/dlls/ntdll/unix/signal_arm64.c @@ -1383,6 +1383,7 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, "4:\tmov x0, #0xc0000000\n\t" /* STATUS_INVALID_PARAMETER */ "movk x0, #0x000d\n\t" "b 3b\n" + ".globl " __ASM_NAME("__wine_syscall_dispatcher_return") "\n\t" __ASM_NAME("__wine_syscall_dispatcher_return") ":\n\t" "mov sp, x0\n\t" "mov x0, x1\n\t" diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c index 7be0c39c424..b8a7e5a53dd 100644 --- a/dlls/ntdll/unix/signal_i386.c +++ b/dlls/ntdll/unix/signal_i386.c @@ -2499,6 +2499,7 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, "popl 0x08(%ecx)\n\t" /* frame->eip */ "pushfl\n\t" "popl 0x04(%ecx)\n" /* frame->eflags */ + ".globl " __ASM_NAME("__wine_syscall_dispatcher_prolog_end") "\n\t" __ASM_NAME("__wine_syscall_dispatcher_prolog_end") ":\n\t" "movl %esp,0x0c(%ecx)\n\t" /* frame->esp */ "movw %cs,0x10(%ecx)\n\t" @@ -2612,6 +2613,7 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, "iret\n" "6:\tmovl $0xc000000d,%eax\n\t" /* STATUS_INVALID_PARAMETER */ "jmp 5b\n" + ".globl " __ASM_NAME("__wine_syscall_dispatcher_return") "\n\t" __ASM_NAME("__wine_syscall_dispatcher_return") ":\n\t" "movl 8(%esp),%eax\n\t" "movl 4(%esp),%esp\n\t" diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c index 6c87e347eac..46c11f6561b 100644 --- a/dlls/ntdll/unix/signal_x86_64.c +++ b/dlls/ntdll/unix/signal_x86_64.c @@ -3305,6 +3305,7 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, "pushfq\n\t" "popq 0x80(%rcx)\n\t" "movl $0,0x94(%rcx)\n\t" /* frame->restore_flags */ + ".globl " __ASM_NAME("__wine_syscall_dispatcher_prolog_end") "\n\t" __ASM_NAME("__wine_syscall_dispatcher_prolog_end") ":\n\t" "movq %rax,0x00(%rcx)\n\t" "movq %rbx,0x08(%rcx)\n\t" @@ -3435,6 +3436,7 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, "iretq\n" "5:\tmovl $0xc000000d,%edx\n\t" /* STATUS_INVALID_PARAMETER */ "movq %rsp,%rcx\n" + ".globl " __ASM_NAME("__wine_syscall_dispatcher_return") "\n\t" __ASM_NAME("__wine_syscall_dispatcher_return") ":\n\t" "movl 0xb0(%rcx),%r14d\n\t" /* frame->syscall_flags */ "movq %rdx,%rax\n\t"