From 4d01e4884385b83aed20d12139b944dd32fa7834 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Sat, 4 Apr 2020 08:55:44 +1100 Subject: [PATCH] Rebase against 7096ab45444d7b7cbb926b5a51af0cbc46960ed3 --- ...ndline-option-patches-to-show-the-pa.patch | 28 +++++++++--------- ...er-Add-commandline-option-check-libs.patch | 20 ++++++------- ...unctions-for-managing-free-area-list.patch | 29 ++++++++++--------- ...Allow-to-modify-reserved-LDT-entries.patch | 20 ++++++------- patches/patchinstall.sh | 2 +- ...ate-syscall-thunks-for-ntdll-exports.patch | 20 ++++++------- 6 files changed, 60 insertions(+), 59 deletions(-) diff --git a/patches/Staging/0003-loader-Add-commandline-option-patches-to-show-the-pa.patch b/patches/Staging/0003-loader-Add-commandline-option-patches-to-show-the-pa.patch index f0329dcd..7f82be4a 100644 --- a/patches/Staging/0003-loader-Add-commandline-option-patches-to-show-the-pa.patch +++ b/patches/Staging/0003-loader-Add-commandline-option-patches-to-show-the-pa.patch @@ -1,4 +1,4 @@ -From d216f85a593a09e7983d9178fb3e1f20bfcf08cc Mon Sep 17 00:00:00 2001 +From 63d2046a8f4388fbc7c12a07ae5f412fccc1b202 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 29 May 2014 23:43:45 +0200 Subject: [PATCH] loader: Add commandline option --patches to show the patch @@ -14,7 +14,7 @@ Subject: [PATCH] loader: Add commandline option --patches to show the patch 6 files changed, 58 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c -index c29a1c26c..8906e1942 100644 +index c29a1c26c26..8906e194272 100644 --- a/dlls/ntdll/misc.c +++ b/dlls/ntdll/misc.c @@ -60,6 +60,14 @@ const char * CDECL NTDLL_wine_get_version(void) @@ -33,10 +33,10 @@ index c29a1c26c..8906e1942 100644 * wine_get_build_id (NTDLL.@) */ diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec -index 7aa953ca6..cf7d5b6f9 100644 +index e61a2578da5..52db67fd978 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec -@@ -1566,6 +1566,7 @@ +@@ -1571,6 +1571,7 @@ # Version @ cdecl wine_get_version() NTDLL_wine_get_version @@ -45,7 +45,7 @@ index 7aa953ca6..cf7d5b6f9 100644 @ cdecl wine_get_host_version(ptr ptr) NTDLL_wine_get_host_version diff --git a/include/wine/library.h b/include/wine/library.h -index a6fe28059..511bf4722 100644 +index f338c4da190..1f992da6062 100644 --- a/include/wine/library.h +++ b/include/wine/library.h @@ -47,6 +47,7 @@ extern const char *wine_get_data_dir(void); @@ -57,7 +57,7 @@ index a6fe28059..511bf4722 100644 extern void wine_init_argv0_path( const char *argv0 ); extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var ); diff --git a/libs/wine/config.c b/libs/wine/config.c -index 2a3314cbf..5b66c063d 100644 +index 2a3314cbfda..5b66c063db6 100644 --- a/libs/wine/config.c +++ b/libs/wine/config.c @@ -504,6 +504,12 @@ const char *wine_get_version(void) @@ -74,22 +74,22 @@ index 2a3314cbf..5b66c063d 100644 const char *wine_get_build_id(void) { diff --git a/libs/wine/wine.map b/libs/wine/wine.map -index 3f2c430fa..ca46979f5 100644 +index 7ea849b908e..a7359ee7872 100644 --- a/libs/wine/wine.map +++ b/libs/wine/wine.map -@@ -28,6 +28,7 @@ WINE_1.0 - wine_get_ss; +@@ -22,6 +22,7 @@ WINE_1.0 + wine_get_server_dir; wine_get_user_name; wine_get_version; + wine_get_patches; wine_init; wine_init_argv0_path; - wine_ldt_alloc_entries; + wine_mmap_add_reserved_area; diff --git a/loader/main.c b/loader/main.c -index f197cf802..f6629128d 100644 +index 407c897892d..d97d6b28bf8 100644 --- a/loader/main.c +++ b/loader/main.c -@@ -54,7 +54,8 @@ static void check_command_line( int argc, char *argv[] ) +@@ -53,7 +53,8 @@ static void check_command_line( int argc, char *argv[] ) static const char usage[] = "Usage: wine PROGRAM [ARGUMENTS...] Run the specified program\n" " wine --help Display this help and exit\n" @@ -99,7 +99,7 @@ index f197cf802..f6629128d 100644 if (argc <= 1) { -@@ -71,6 +72,45 @@ static void check_command_line( int argc, char *argv[] ) +@@ -70,6 +71,45 @@ static void check_command_line( int argc, char *argv[] ) printf( "%s\n", wine_get_build_id() ); exit(0); } @@ -146,5 +146,5 @@ index f197cf802..f6629128d 100644 -- -2.25.0 +2.25.1 diff --git a/patches/Staging/0004-loader-Add-commandline-option-check-libs.patch b/patches/Staging/0004-loader-Add-commandline-option-check-libs.patch index e24e1392..f881f614 100644 --- a/patches/Staging/0004-loader-Add-commandline-option-check-libs.patch +++ b/patches/Staging/0004-loader-Add-commandline-option-check-libs.patch @@ -1,4 +1,4 @@ -From df12fdb8d4cdf11d9f72a068923a5b0097e36bdb Mon Sep 17 00:00:00 2001 +From f600092be294a5bb42e42abcd20cc784d1ca5eab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Wed, 28 May 2014 19:50:51 +0200 Subject: [PATCH] loader: Add commandline option --check-libs. @@ -12,7 +12,7 @@ Subject: [PATCH] loader: Add commandline option --check-libs. 5 files changed, 213 insertions(+), 1 deletion(-) diff --git a/include/wine/library.h b/include/wine/library.h -index 511bf4722a0..557cec20cf8 100644 +index 1f992da6062..60d6b525c75 100644 --- a/include/wine/library.h +++ b/include/wine/library.h @@ -44,6 +44,7 @@ extern "C" { @@ -167,10 +167,10 @@ index 5b66c063db6..e0988513e14 100644 const char *wine_get_server_dir(void) { diff --git a/libs/wine/loader.c b/libs/wine/loader.c -index 2a569f5b739..5f10c3f9d3e 100644 +index 53e33c496a9..eb7dfb59fb8 100644 --- a/libs/wine/loader.c +++ b/libs/wine/loader.c -@@ -1072,6 +1072,42 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize +@@ -1073,6 +1073,42 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize return ret; } @@ -214,7 +214,7 @@ index 2a569f5b739..5f10c3f9d3e 100644 * wine_dlsym */ diff --git a/libs/wine/wine.map b/libs/wine/wine.map -index ca46979f5b9..22a4e73b05b 100644 +index a7359ee7872..9c4c86dde4d 100644 --- a/libs/wine/wine.map +++ b/libs/wine/wine.map @@ -9,6 +9,7 @@ WINE_1.0 @@ -225,14 +225,14 @@ index ca46979f5b9..22a4e73b05b 100644 wine_dlclose; wine_dll_enum_load_path; wine_dll_set_callback; -@@ -24,6 +25,7 @@ WINE_1.0 - wine_get_es; - wine_get_fs; - wine_get_gs; +@@ -19,6 +20,7 @@ WINE_1.0 + wine_get_build_id; + wine_get_config_dir; + wine_get_data_dir; + wine_get_libs; wine_get_server_dir; - wine_get_ss; wine_get_user_name; + wine_get_version; diff --git a/loader/main.c b/loader/main.c index d97d6b28bf8..49dc996e354 100644 --- a/loader/main.c diff --git a/patches/ntdll-ForceBottomUpAlloc/0005-libs-wine-Add-functions-for-managing-free-area-list.patch b/patches/ntdll-ForceBottomUpAlloc/0005-libs-wine-Add-functions-for-managing-free-area-list.patch index f8a5ab56..6fb71cff 100644 --- a/patches/ntdll-ForceBottomUpAlloc/0005-libs-wine-Add-functions-for-managing-free-area-list.patch +++ b/patches/ntdll-ForceBottomUpAlloc/0005-libs-wine-Add-functions-for-managing-free-area-list.patch @@ -1,19 +1,19 @@ -From 11d770c9800f37a9148b776836fdb24f8c43d403 Mon Sep 17 00:00:00 2001 +From 20012afe9a7e47f06550c9802e62d66ac9f9abba Mon Sep 17 00:00:00 2001 From: Paul Gofman Date: Tue, 14 Jan 2020 21:28:57 +0300 Subject: [PATCH] libs/wine: Add functions for managing free area list. --- - include/wine/library.h | 5 +++ + include/wine/library.h | 6 ++++ libs/wine/mmap.c | 75 ++++++++++++++++++++++++++++++++---------- libs/wine/wine.map | 4 +++ - 3 files changed, 67 insertions(+), 17 deletions(-) + 3 files changed, 68 insertions(+), 17 deletions(-) diff --git a/include/wine/library.h b/include/wine/library.h -index a6fe28059..006c59ba3 100644 +index 60d6b525c75..70b6a0b3055 100644 --- a/include/wine/library.h +++ b/include/wine/library.h -@@ -76,6 +76,11 @@ extern int wine_mmap_is_in_reserved_area( void *addr, size_t size ); +@@ -79,6 +79,12 @@ extern int wine_mmap_is_in_reserved_area( void *addr, size_t size ); extern int wine_mmap_enum_reserved_areas( int (*enum_func)(void *base, size_t size, void *arg), void *arg, int top_down ); @@ -22,11 +22,12 @@ index a6fe28059..006c59ba3 100644 +extern int wine_mmap_is_in_free_area( void *addr, size_t size ); +extern int wine_mmap_enum_free_areas( int (*enum_func)(void *base, size_t size, void *arg), + void *arg, int top_down ); - #ifdef __i386__ - - /* LDT management */ ++ + #ifdef __cplusplus + } + #endif diff --git a/libs/wine/mmap.c b/libs/wine/mmap.c -index f2b5adc1d..baa466c77 100644 +index f2b5adc1d29..baa466c7766 100644 --- a/libs/wine/mmap.c +++ b/libs/wine/mmap.c @@ -52,7 +52,9 @@ struct reserved_area @@ -240,10 +241,10 @@ index f2b5adc1d..baa466c77 100644 + return wine_mmap_enum_areas(&free_areas_list, enum_func, arg, top_down); +} diff --git a/libs/wine/wine.map b/libs/wine/wine.map -index f0c94a950..3fc30237e 100644 +index 9c4c86dde4d..32bf99bd6e6 100644 --- a/libs/wine/wine.map +++ b/libs/wine/wine.map -@@ -51,6 +51,10 @@ WINE_1.0 +@@ -31,6 +31,10 @@ WINE_1.0 wine_mmap_enum_reserved_areas; wine_mmap_is_in_reserved_area; wine_mmap_remove_reserved_area; @@ -251,9 +252,9 @@ index f0c94a950..3fc30237e 100644 + wine_mmap_enum_free_areas; + wine_mmap_is_in_free_area; + wine_mmap_remove_free_area; - wine_set_fs; - wine_set_gs; wine_wctype_table; + + /* the following functions are obsolete and only exported for backwards compatibility */ -- -2.25.0 +2.25.1 diff --git a/patches/ntdll-NtSetLdtEntries/0002-libs-wine-Allow-to-modify-reserved-LDT-entries.patch b/patches/ntdll-NtSetLdtEntries/0002-libs-wine-Allow-to-modify-reserved-LDT-entries.patch index da37448c..087781f9 100644 --- a/patches/ntdll-NtSetLdtEntries/0002-libs-wine-Allow-to-modify-reserved-LDT-entries.patch +++ b/patches/ntdll-NtSetLdtEntries/0002-libs-wine-Allow-to-modify-reserved-LDT-entries.patch @@ -1,4 +1,4 @@ -From 18e7f7c6475673f382a8d3015140383c2dd756b0 Mon Sep 17 00:00:00 2001 +From 338f514f1468d77ae19ac9bbe7ba7d2b018ec83c Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Thu, 28 Apr 2016 17:01:16 +0200 Subject: [PATCH] libs/wine: Allow to modify reserved LDT entries. @@ -43,10 +43,10 @@ index 70b22367e18..a454bf118cc 100644 } } diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c -index e812f634ff9..16ee93e001a 100644 +index 2db76f0e250..fd1a764dacf 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c -@@ -2558,8 +2558,6 @@ NTSTATUS get_thread_ldt_entry( HANDLE handle, void *data, ULONG len, ULONG *ret_ +@@ -2614,8 +2614,6 @@ NTSTATUS get_thread_ldt_entry( HANDLE handle, void *data, ULONG len, ULONG *ret_ NTSTATUS WINAPI NtSetLdtEntries( ULONG sel1, LDT_ENTRY entry1, ULONG sel2, LDT_ENTRY entry2 ) { if (sel1 >> 16 || sel2 >> 16) return STATUS_INVALID_LDT_DESCRIPTOR; @@ -56,10 +56,10 @@ index e812f634ff9..16ee93e001a 100644 ldt_lock(); if (sel1) ldt_set_entry( sel1, entry1 ); diff --git a/libs/wine/ldt.c b/libs/wine/ldt.c -index baf12a2e3a7..b9371814ba2 100644 +index a8f4925019b..5e85c1137c8 100644 --- a/libs/wine/ldt.c +++ b/libs/wine/ldt.c -@@ -170,8 +170,6 @@ static int internal_set_entry( unsigned short sel, const LDT_ENTRY *entry ) +@@ -225,8 +225,6 @@ static int internal_set_entry( unsigned short sel, const LDT_ENTRY *entry ) { int ret = 0, index = sel >> 3; @@ -68,15 +68,15 @@ index baf12a2e3a7..b9371814ba2 100644 #ifdef linux { struct modify_ldt_s ldt_info; -@@ -223,7 +221,7 @@ static int internal_set_entry( unsigned short sel, const LDT_ENTRY *entry ) - wine_ldt_copy.limit[index] = wine_ldt_get_limit(entry); - wine_ldt_copy.flags[index] = (entry->HighWord.Bits.Type | +@@ -278,7 +276,7 @@ static int internal_set_entry( unsigned short sel, const LDT_ENTRY *entry ) + wine_ldt_copy_obsolete.limit[index] = wine_ldt_get_limit(entry); + wine_ldt_copy_obsolete.flags[index] = (entry->HighWord.Bits.Type | (entry->HighWord.Bits.Default_Big ? WINE_LDT_FLAGS_32BIT : 0) | -- (wine_ldt_copy.flags[index] & WINE_LDT_FLAGS_ALLOCATED)); +- (wine_ldt_copy_obsolete.flags[index] & WINE_LDT_FLAGS_ALLOCATED)); + WINE_LDT_FLAGS_ALLOCATED); } return ret; } -- -2.26.0 +2.25.1 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 08cf9c5e..c627486c 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "3047385437c7ef36996d0418ac378677f3e9d67c" + echo "7096ab45444d7b7cbb926b5a51af0cbc46960ed3" } # Show version information diff --git a/patches/winebuild-Fake_Dlls/0003-winebuild-Generate-syscall-thunks-for-ntdll-exports.patch b/patches/winebuild-Fake_Dlls/0003-winebuild-Generate-syscall-thunks-for-ntdll-exports.patch index 763a3fbf..7ea7cd25 100644 --- a/patches/winebuild-Fake_Dlls/0003-winebuild-Generate-syscall-thunks-for-ntdll-exports.patch +++ b/patches/winebuild-Fake_Dlls/0003-winebuild-Generate-syscall-thunks-for-ntdll-exports.patch @@ -1,4 +1,4 @@ -From cc13b2bb6b823df3de62dfacabeff22ebb2cf93e Mon Sep 17 00:00:00 2001 +From b2d95f8d335ec606f9779eebb3bbcbed7d4c00ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 11 May 2017 05:32:55 +0200 Subject: [PATCH] winebuild: Generate syscall thunks for ntdll exports. @@ -17,7 +17,7 @@ Based on a patch by Erich E. Hoover. 9 files changed, 206 insertions(+), 27 deletions(-) diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c -index ba127c00361..915b344aabe 100644 +index 5d01acd00fc..0b2a62fe1a8 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c @@ -481,6 +481,9 @@ static ULONG first_ldt_entry = 32; @@ -30,16 +30,16 @@ index ba127c00361..915b344aabe 100644 enum i386_trap_code { TRAP_x86_UNKNOWN = -1, /* Unknown fault (TRAP_sig not defined) */ -@@ -1512,7 +1515,7 @@ NTSTATUS CDECL DECLSPEC_HIDDEN __regs_NtGetContextThread( DWORD edi, DWORD esi, +@@ -1519,7 +1522,7 @@ NTSTATUS CDECL DECLSPEC_HIDDEN __regs_NtGetContextThread( DWORD edi, DWORD esi, { context->Ebp = ebp; context->Esp = (DWORD)&retaddr; - context->Eip = *(&edi - 1); + context->Eip = (DWORD)__syscall_NtGetContextThread + 18; - context->SegCs = wine_get_cs(); - context->SegSs = wine_get_ss(); + context->SegCs = get_cs(); + context->SegSs = get_ds(); context->EFlags = eflags; -@@ -2599,6 +2602,7 @@ NTSTATUS signal_alloc_thread( TEB **teb ) +@@ -2613,6 +2616,7 @@ NTSTATUS signal_alloc_thread( TEB **teb ) *teb = addr; (*teb)->Tib.Self = &(*teb)->Tib; (*teb)->Tib.ExceptionList = (void *)~0UL; @@ -48,7 +48,7 @@ index ba127c00361..915b344aabe 100644 if (!(thread_data->fs = ldt_alloc_fs( *teb, first_thread ))) { diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c -index 249ba9d7c39..b10e2f65553 100644 +index 72afb0a3764..fbd90661ee0 100644 --- a/dlls/ntdll/tests/exception.c +++ b/dlls/ntdll/tests/exception.c @@ -1643,6 +1643,8 @@ static void test_thread_context(void) @@ -61,7 +61,7 @@ index 249ba9d7c39..b10e2f65553 100644 ok( context.SegCs == LOWORD(expect.SegCs), "wrong SegCs %08x/%08x\n", context.SegCs, expect.SegCs ); ok( context.SegDs == LOWORD(expect.SegDs), "wrong SegDs %08x/%08x\n", context.SegDs, expect.SegDs ); diff --git a/include/winternl.h b/include/winternl.h -index 7ab105752df..e469012b236 100644 +index d4316092e05..9e9a5eb819e 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -359,7 +359,7 @@ typedef struct _TEB @@ -253,7 +253,7 @@ index be705c25f0f..004b6aea7ab 100644 } diff --git a/tools/winebuild/spec16.c b/tools/winebuild/spec16.c -index 3a7e457282a..a179175b8c1 100644 +index a52c03aaa6a..15ef9a3f893 100644 --- a/tools/winebuild/spec16.c +++ b/tools/winebuild/spec16.c @@ -495,27 +495,6 @@ static int relay_type_compare( const void *e1, const void *e2 ) @@ -458,5 +458,5 @@ index be877080486..63aeeca4468 100644 + return j + 1; +} -- -2.26.0 +2.25.1