<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/8d75e1f26348e21a1a5fba46ac6aa8f3b676d231">https://github.com/macports/macports-ports/commit/8d75e1f26348e21a1a5fba46ac6aa8f3b676d231</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 8d75e1f2634 wine-stable: Update macos_hacks & rev-bump
</span>8d75e1f2634 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 8d75e1f26348e21a1a5fba46ac6aa8f3b676d231
</span>Author: Dean M Greer <38226388+Gcenx@users.noreply.github.com>
AuthorDate: Sun Jun 23 17:38:41 2024 -0400
<span style='display:block; white-space:pre;color:#404040;'> wine-stable: Update macos_hacks & rev-bump
</span>---
emulators/wine-stable/Portfile | 4 +-
emulators/wine-stable/files/5871.diff | 87 ++++++++++++++++++
emulators/wine-stable/files/5871.patch | 127 ---------------------------
emulators/wine-stable/files/macos_hacks.diff | 84 +++++++++++++++++-
4 files changed, 170 insertions(+), 132 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-stable/Portfile b/emulators/wine-stable/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index a6366b153f0..6973e0a5d1a 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/emulators/wine-stable/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/wine-stable/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -12,7 +12,7 @@ github.tarball_from archive
</span> name wine-stable
conflicts wine-devel wine-staging wine-crossover
set my_name wine
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 1
</span> platforms {darwin >= 19}
set branch [lindex [split ${version} .] 0].0
license LGPL-2.1+
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -73,7 +73,7 @@ patchfiles-append \
</span> # ntdll: Fix macOS build errors with Xcode 16.
# https://gitlab.winehq.org/wine/wine/-/merge_requests/5871
patchfiles-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 5871.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5871.diff
</span>
# wine requires the program specified in INSTALL to create intermediate
# directories; /usr/bin/install doesn't.
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-stable/files/5871.diff b/emulators/wine-stable/files/5871.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..9a62f1b8b02
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/wine-stable/files/5871.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,87 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 802a52cb1b9825a8baa63276b0e6620d7f4edc83 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Brendan Shanks <bshanks@codeweavers.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Wed, 19 Jun 2024 15:36:27 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] ntdll: Make __wine_syscall_dispatcher_return a separate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ function to fix Xcode 16 build errors.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+LLVM no longer allows non-private labels to appear between
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+.cfi_startproc/endproc when targeting Mach-O.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+For consistency, also modify ARM and i386.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dlls/ntdll/unix/signal_arm.c | 6 +++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dlls/ntdll/unix/signal_arm64.c | 6 +++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dlls/ntdll/unix/signal_i386.c | 5 ++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dlls/ntdll/unix/signal_x86_64.c | 6 +++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4 files changed, 11 insertions(+), 12 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5115fa7ec3a..9cadd1ceb10 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/ntdll/unix/signal_arm.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/ntdll/unix/signal_arm.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1756,9 +1756,9 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "5:\tmovw r0, #0x000d\n\t" /* STATUS_INVALID_PARAMETER */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "movt r0, #0xc000\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "add sp, sp, #0x10\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "b " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") "\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ".globl " __ASM_NAME("__wine_syscall_dispatcher_return") "\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- __ASM_NAME("__wine_syscall_dispatcher_return") ":\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "b " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++__ASM_GLOBAL_FUNC( __wine_syscall_dispatcher_return,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "mov r8, r0\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "mov r0, r1\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "b " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f96ec330796..898f2555bbb 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/ntdll/unix/signal_arm64.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/ntdll/unix/signal_arm64.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1864,9 +1864,9 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "ret x16\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "4:\tmov x0, #0xc0000000\n\t" /* STATUS_INVALID_PARAMETER */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "movk x0, #0x000d\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "b " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") "\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ".globl " __ASM_NAME("__wine_syscall_dispatcher_return") "\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- __ASM_NAME("__wine_syscall_dispatcher_return") ":\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "b " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++__ASM_GLOBAL_FUNC( __wine_syscall_dispatcher_return,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "mov sp, x0\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "mov x0, x1\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "b " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 751b0081534..b0026711044 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/ntdll/unix/signal_i386.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/ntdll/unix/signal_i386.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2742,10 +2742,9 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ASM_CFI("\t.cfi_restore_state\n")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "6:\tmovl $0xc000000d,%eax\n\t" /* STATUS_INVALID_PARAMETER */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "jmp " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") "\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "jmp " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ".globl " __ASM_NAME("__wine_syscall_dispatcher_return") "\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- __ASM_NAME("__wine_syscall_dispatcher_return") ":\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++__ASM_GLOBAL_FUNC( __wine_syscall_dispatcher_return,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "movl 8(%esp),%eax\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "movl 4(%esp),%esp\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "jmp " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ab544908883..029374610b7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/ntdll/unix/signal_x86_64.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/ntdll/unix/signal_x86_64.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2821,9 +2821,9 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ASM_CFI("\t.cfi_restore_state\n")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "5:\tmovl $0xc000000d,%eax\n\t" /* STATUS_INVALID_PARAMETER */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "movq %rsp,%rcx\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- "jmp " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") "\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ".globl " __ASM_NAME("__wine_syscall_dispatcher_return") "\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- __ASM_NAME("__wine_syscall_dispatcher_return") ":\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ "jmp " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++__ASM_GLOBAL_FUNC( __wine_syscall_dispatcher_return,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "movq %rdi,%rcx\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "movl 0xb0(%rcx),%r14d\n\t" /* frame->syscall_flags */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "movq %rsi,%rax\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+GitLab
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-stable/files/5871.patch b/emulators/wine-stable/files/5871.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index d6e2934f42b..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/emulators/wine-stable/files/5871.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,127 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 306e8d2c145b678d117174dbc3cd3b0b1761f271 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Brendan Shanks <bshanks@codeweavers.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 18 Jun 2024 10:35:03 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] ntdll: Fix macOS build errors with Xcode 16.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-LLVM no longer allows non-private labels to appear between
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-.cfi_startproc/endproc when targeting Mach-O.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Similar fixes as in commit 295d521b11644fb76c36854336b13c2155bb7d79.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dlls/ntdll/unix/signal_arm64.c | 16 ++++++++++++----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dlls/ntdll/unix/signal_x86_64.c | 13 +++++++++----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2 files changed, 21 insertions(+), 8 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 58911d9b1f2..49d54b11f91 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/dlls/ntdll/unix/signal_arm64.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/dlls/ntdll/unix/signal_arm64.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1017,10 +1017,12 @@ static BOOL handle_syscall_fault( ucontext_t *context, EXCEPTION_RECORD *rec )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ extern typeof(__wine_syscall_dispatcher_return) *__wine_syscall_dispatcher_return_ptr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- TRACE( "returning to user mode ip=%p ret=%08x\n", (void *)frame->pc, rec->ExceptionCode );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- REGn_sig(0, context) = (ULONG_PTR)frame;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- REGn_sig(1, context) = rec->ExceptionCode;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- PC_sig(context) = (ULONG_PTR)__wine_syscall_dispatcher_return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ PC_sig(context) = (ULONG_PTR)__wine_syscall_dispatcher_return_ptr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return TRUE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1381,6 +1383,7 @@ void call_init_thunk( LPTHREAD_START_ROUTINE entry, void *arg, BOOL suspend, TEB
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CONTEXT *ctx, context = { CONTEXT_ALL };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- I386_CONTEXT *i386_context;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ARM_CONTEXT *arm_context;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ extern typeof(__wine_syscall_dispatcher_return) *__wine_syscall_dispatcher_return_ptr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- thread_data->syscall_table = KeServiceDescriptorTable;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1440,7 +1443,7 @@ void call_init_thunk( LPTHREAD_START_ROUTINE entry, void *arg, BOOL suspend, TEB
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- syscall_frame_fixup_for_fastpath( frame );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- pthread_sigmask( SIG_UNBLOCK, &server_block_set, NULL );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- __wine_syscall_dispatcher_return( frame, 0 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ __wine_syscall_dispatcher_return_ptr( frame, 0 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1608,12 +1611,17 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "4:\tmov x0, #0xc0000000\n\t" /* STATUS_INVALID_PARAMETER */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "movk x0, #0x000d\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "b " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") "\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- ".globl " __ASM_NAME("__wine_syscall_dispatcher_return") "\n"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- __ASM_NAME("__wine_syscall_dispatcher_return") ":\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return_label") ":\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "mov sp, x0\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "mov x0, x1\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "b " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+asm( ".data\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ".align 4\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ".globl " __ASM_NAME("__wine_syscall_dispatcher_return_ptr") "\n"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ __ASM_NAME("__wine_syscall_dispatcher_return_ptr") ":\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ".quad " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return_label") "\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ".text\n\t" );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /***********************************************************************
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * __wine_unix_call_dispatcher
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index a163d5d0b33..894ddee9348 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/dlls/ntdll/unix/signal_x86_64.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/dlls/ntdll/unix/signal_x86_64.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1880,10 +1880,12 @@ static BOOL handle_syscall_fault( ucontext_t *sigcontext, EXCEPTION_RECORD *rec,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ extern typeof(__wine_syscall_dispatcher_return) *__wine_syscall_dispatcher_return_ptr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- TRACE_(seh)( "returning to user mode ip=%016lx ret=%08x\n", frame->rip, rec->ExceptionCode );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- RDI_sig(sigcontext) = (ULONG_PTR)frame;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- RSI_sig(sigcontext) = rec->ExceptionCode;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- RIP_sig(sigcontext) = (ULONG_PTR)__wine_syscall_dispatcher_return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ RIP_sig(sigcontext) = (ULONG_PTR)__wine_syscall_dispatcher_return_ptr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return TRUE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2513,6 +2515,7 @@ void call_init_thunk( LPTHREAD_START_ROUTINE entry, void *arg, BOOL suspend, TEB
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct amd64_thread_data *thread_data = (struct amd64_thread_data *)&teb->GdiTebBatch;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CONTEXT *ctx, context = { 0 };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- I386_CONTEXT *wow_context;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ extern typeof(__wine_syscall_dispatcher_return) *__wine_syscall_dispatcher_return_ptr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- thread_data->syscall_table = KeServiceDescriptorTable;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- thread_data->xstate_features_mask = xstate_supported_features_mask;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2592,7 +2595,7 @@ void call_init_thunk( LPTHREAD_START_ROUTINE entry, void *arg, BOOL suspend, TEB
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- frame->syscall_cfa = syscall_cfa;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- pthread_sigmask( SIG_UNBLOCK, &server_block_set, NULL );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- __wine_syscall_dispatcher_return( frame, 0 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ __wine_syscall_dispatcher_return_ptr( frame, 0 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2877,8 +2880,7 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "5:\tmovl $0xc000000d,%eax\n\t" /* STATUS_INVALID_PARAMETER */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "movq %rsp,%rcx\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "jmp " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return") "\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- ".globl " __ASM_NAME("__wine_syscall_dispatcher_return") "\n"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- __ASM_NAME("__wine_syscall_dispatcher_return") ":\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return_label") ":\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "movq %rdi,%rcx\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "movl 0xb0(%rcx),%r14d\n\t" /* frame->syscall_flags */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- "movq %rsi,%rax\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2994,6 +2996,9 @@ asm( ".data\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ".globl " __ASM_NAME("__wine_unix_call_dispatcher_prolog_end_ptr") "\n"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- __ASM_NAME("__wine_unix_call_dispatcher_prolog_end_ptr") ":\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ".quad " __ASM_LOCAL_LABEL("__wine_unix_call_dispatcher_prolog_end") "\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ".globl " __ASM_NAME("__wine_syscall_dispatcher_return_ptr") "\n"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ __ASM_NAME("__wine_syscall_dispatcher_return_ptr") ":\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ".quad " __ASM_LOCAL_LABEL("__wine_syscall_dispatcher_return_label") "\n\t"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ".text\n\t" );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif /* __x86_64__ */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-GitLab
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-stable/files/macos_hacks.diff b/emulators/wine-stable/files/macos_hacks.diff
</span><span style='display:block; white-space:pre;color:#808080;'>index 3133b8ee448..d8bfd832317 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/emulators/wine-stable/files/macos_hacks.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/wine-stable/files/macos_hacks.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -750,10 +750,88 @@ index 9e84ec3cc96..95b862a56d7 100644
</span> }
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index abe1b4dc4ec..724db5c7862 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index abe1b4dc4ec..9838650847c 100644
</span> --- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -5906,6 +5906,56 @@ NTSTATUS WINAPI NtReadVirtualMemory( HANDLE process, const void *addr, void *buf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -62,6 +62,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <mach/mach_init.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # include <mach/mach_vm.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# include <sys/utsname.h> /* CrossOver Hack #22011 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "ntstatus.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1714,6 +1715,42 @@ static void mprotect_range( void *base, size_t size, BYTE set, BYTE clear )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (count) mprotect_exec( addr, count << page_shift, prot );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static BOOL is_catalina_or_later(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ static int result = -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ struct utsname name;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ unsigned major, minor;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (result == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ result = (uname(&name) == 0 &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sscanf(name.release, "%u.%u", &major, &minor) == 2 &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ major >= 19 /* macOS 10.15 Catalina */);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return (result == 1) ? TRUE : FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static void *wine_mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && defined(__x86_64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // In Catalina-and-later, mapping files with execute permissions can make
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // Gatekeeper prompt the user, or just fail outright.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!(flags & MAP_ANON) && fd >= 0 && prot & PROT_EXEC && is_catalina_or_later())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void *ret = mmap(addr, len, prot & ~PROT_EXEC, flags, fd, offset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (ret != MAP_FAILED && mprotect(ret, len, prot))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ WARN("failed to mprotect region: %d\n", errno);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return mmap(addr, len, prot, flags, fd, offset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /***********************************************************************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * set_vprot
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2085,7 +2122,7 @@ static NTSTATUS map_file_into_view( struct file_view *view, int fd, size_t start
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* only try mmap if media is not removable (or if we require write access) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!removable || (flags & MAP_SHARED))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (mmap( (char *)view->base + start, size, prot, flags, fd, offset ) != MAP_FAILED)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (wine_mmap( (char *)view->base + start, size, prot, flags, fd, offset ) != MAP_FAILED)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ goto done;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch (errno)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2413,7 +2450,7 @@ static NTSTATUS map_pe_header( void *ptr, size_t size, int fd, BOOL *removable )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!*removable)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (mmap( ptr, size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_FIXED|MAP_PRIVATE, fd, 0 ) != MAP_FAILED)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (wine_mmap( ptr, size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_FIXED|MAP_PRIVATE, fd, 0 ) != MAP_FAILED)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return STATUS_SUCCESS;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch (errno)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3892,7 +3929,7 @@ void virtual_map_user_shared_data(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ((res = server_get_unix_fd( section, 0, &fd, &needs_close, NULL, NULL )) ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (user_shared_data != mmap( user_shared_data, page_size, PROT_READ, MAP_SHARED|MAP_FIXED, fd, 0 )))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (user_shared_data != wine_mmap( user_shared_data, page_size, PROT_READ, MAP_SHARED|MAP_FIXED, fd, 0 )))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ERR( "failed to remap the process USD: %d\n", res );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5906,6 +5943,56 @@ NTSTATUS WINAPI NtReadVirtualMemory( HANDLE process, const void *addr, void *buf
</span> return status;
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -810,7 +888,7 @@ index abe1b4dc4ec..724db5c7862 100644
</span>
/***********************************************************************
* NtWriteVirtualMemory (NTDLL.@)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -5926,6 +5976,10 @@ NTSTATUS WINAPI NtWriteVirtualMemory( HANDLE process, void *addr, const void *bu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5926,6 +6013,10 @@ NTSTATUS WINAPI NtWriteVirtualMemory( HANDLE process, void *addr, const void *bu
</span> if ((status = wine_server_call( req ))) size = 0;
}
SERVER_END_REQ;
</pre><pre style='margin:0'>
</pre>