<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/2a6b87e879a3b1ca7d9c4ecb1d8a0056b69e3e84">https://github.com/macports/macports-ports/commit/2a6b87e879a3b1ca7d9c4ecb1d8a0056b69e3e84</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 2a6b87e879a wine-stable: Add patch for bug 57819
</span>2a6b87e879a is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 2a6b87e879a3b1ca7d9c4ecb1d8a0056b69e3e84
</span>Author: Dean M Greer <38226388+Gcenx@users.noreply.github.com>
AuthorDate: Mon Mar 3 20:18:47 2025 -0500
<span style='display:block; white-space:pre;color:#404040;'> wine-stable: Add patch for bug 57819
</span>---
emulators/wine-stable/Portfile | 4 +
emulators/wine-stable/files/MR7328.diff | 160 ++++++++++++++++++++++++++++++++
2 files changed, 164 insertions(+)
<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 00b77ee3b8b..aaf0f8cbfee 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;'>@@ -75,6 +75,10 @@ patchfiles-append \
</span> patchfiles-append \
0002-macos_hacks.diff
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://bugs.winehq.org/show_bug.cgi?id=57819
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MR7328.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # wine requires the program specified in INSTALL to create intermediate
# directories; /usr/bin/install doesn't.
# http://bugs.winehq.org/show_bug.cgi?id=35310
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-stable/files/MR7328.diff b/emulators/wine-stable/files/MR7328.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..9c1b61e6faa
</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/MR7328.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,160 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From fd59962827a715d321f91c9bdb43f3e61f9ebbcb Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jacek Caban <jacek@codeweavers.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 13 Feb 2025 14:34:25 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1/2] ntdll: Use signed type for IAT offset in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LdrResolveDelayLoadedAPI.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Allows negative IAT offsets.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dlls/ntdll/loader.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 1 deletion(-)
</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/loader.c b/dlls/ntdll/loader.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 3872f2b237b..5be6e44435f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/ntdll/loader.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/ntdll/loader.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3739,7 +3739,7 @@ void* WINAPI LdrResolveDelayLoadedAPI( void* base, const IMAGE_DELAYLOAD_DESCRIP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ HMODULE *phmod;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ NTSTATUS nts;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FARPROC fp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- DWORD id;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ INT_PTR id;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TRACE( "(%p, %p, %p, %p, %p, 0x%08lx)\n", base, desc, dllhook, syshook, addr, flags );
</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;'>+GitLab
</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;'>+From c9519f68ea04915a60704534ab3afec5ec1b8fd7 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jacek Caban <jacek@codeweavers.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 13 Feb 2025 14:37:02 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 2/2] winebuild: Avoid using .idata section for delay-load
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import libraries.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MIME-Version: 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Content-Type: text/plain; charset=UTF-8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Content-Transfer-Encoding: 8bit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Recent binutils changes merge .idata sections into the read-only .rdata section.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This is intended to make the IAT read-only, as with other modern linkers, but as
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+a side effect, it broke delay-load import libraries. Delay-load import libraries
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+should use separate sections regardless.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Since these new sections are not recognized by the linker, it won’t apply special
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+handling to maintain proper sorting. In practice, this isn’t an issue as long as
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the name table and IAT maintain the same order. This may result in negative IAT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+offsets (if the base symbol ends up in the middle of the IAT), but Windows appears
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+to handle this without issues.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57819
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tools/winebuild/import.c | 36 +++++++++++++++++++++++-------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 23 insertions(+), 13 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 6aee0fa98f8..9a635a8e8f7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/winebuild/import.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/winebuild/import.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1331,6 +1331,16 @@ static void build_dlltool_import_lib( const char *lib_name, DLLSPEC *spec, struc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (files.count) output_static_lib( output_file_name, files, 0 );
</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 output_import_section( int index, int is_delay )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!is_delay)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output( "\n\t.section .idata$%d\n", index );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else if (index == 5)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output( "\n\t.section .data$didat%d\n", index );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output( "\n\t.section .rdata$didat%d\n", index );
</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;'>+ /* create a Windows-style import library */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void build_windows_import_lib( const char *lib_name, DLLSPEC *spec, struct strarray files )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1454,20 +1464,20 @@ static void build_windows_import_lib( const char *lib_name, DLLSPEC *spec, struc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "\t.long 0\n" ); /* UnloadInformationTableRVA */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "\t.long 0\n" ); /* TimeDateStamp */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- output( "\n\t.section .idata$5\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output_import_section( 5, is_delay );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "\t%s 0\n", get_asm_ptr_keyword() ); /* FirstThunk tail */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( ".L__wine_import_addrs:\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- output( "\n\t.section .idata$4\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output_import_section( 4, is_delay );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "\t%s 0\n", get_asm_ptr_keyword() ); /* OriginalFirstThunk tail */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( ".L__wine_import_names:\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* required to avoid internal linker errors with some binutils versions */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- output( "\n\t.section .idata$2\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output_import_section( 2, is_delay );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- output( "\n\t.section .idata$2\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output_import_section( 2, is_delay );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "%s\n", asm_globl( import_desc ) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output_rva( ".L__wine_import_names" ); /* OriginalFirstThunk */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "\t.long 0\n" ); /* TimeDateStamp */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1475,10 +1485,10 @@ static void build_windows_import_lib( const char *lib_name, DLLSPEC *spec, struc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output_rva( "%s", asm_name( import_name ) ); /* Name */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output_rva( ".L__wine_import_addrs" ); /* FirstThunk */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- output( "\n\t.section .idata$4\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output_import_section( 4, is_delay );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( ".L__wine_import_names:\n" ); /* OriginalFirstThunk head */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- output( "\n\t.section .idata$5\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output_import_section( 5, is_delay );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( ".L__wine_import_addrs:\n" ); /* FirstThunk head */
</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;'>+@@ -1489,11 +1499,11 @@ static void build_windows_import_lib( const char *lib_name, DLLSPEC *spec, struc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ new_output_as_file();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- output( "\n\t.section .idata$4\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output_import_section( 4, is_delay );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "\t%s 0\n", get_asm_ptr_keyword() ); /* OriginalFirstThunk tail */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- output( "\n\t.section .idata$5\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output_import_section( 5, is_delay );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "\t%s 0\n", get_asm_ptr_keyword() ); /* FirstThunk tail */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- output( "\n\t.section .idata$7\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output_import_section( 7, is_delay );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "%s\n", asm_globl( import_name ) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "\t%s \"%s\"\n", get_asm_string_keyword(), spec->file_name );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1584,10 +1594,10 @@ static void build_windows_import_lib( const char *lib_name, DLLSPEC *spec, struc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</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;'>+- output( "\n\t.section .idata$4\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output_import_section( 4, is_delay );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output_thunk_rva( by_name ? -1 : odp->ordinal, ".L__wine_import_name" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- output( "\n\t.section .idata$5\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output_import_section( 5, is_delay );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "%s\n", asm_globl( imp_name ) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (is_delay)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "\t%s .L__wine_delay_import\n", get_asm_ptr_keyword() );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1596,14 +1606,14 @@ static void build_windows_import_lib( const char *lib_name, DLLSPEC *spec, struc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (by_name)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- output( "\n\t.section .idata$6\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output_import_section( 6, is_delay );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( ".L__wine_import_name:\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "\t.short %d\n", odp->hint );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output( "\t%s \"%s\"\n", get_asm_string_keyword(), name );
</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;'>+ /* reference head object to always pull its sections */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- output( "\n\t.section .idata$7\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ output_import_section( 7, is_delay );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ output_rva( "%s", asm_name( import_desc ) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ free( imp_name );
</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></pre><pre style='margin:0'>
</pre>