From 06523ed0a0dfb8bbba179c382b7481661f8eba21 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Thu, 3 Jun 2021 08:57:21 +1000 Subject: [PATCH] Rebase against 0807b09cfa7f2446f7a69f99ff1006e88c9de60b. --- ...eventfd-based-objects-for-semaphores.patch | 20 ++++---- ...mporary-signal-handler-during-proces.patch | 51 +++++++++---------- patches/patchinstall.sh | 2 +- ...-returning-the-proper-time-with-SO_C.patch | 30 +++++------ staging/upstream-commit | 2 +- 5 files changed, 52 insertions(+), 53 deletions(-) diff --git a/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch b/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch index 6e7619ac..2b6223af 100644 --- a/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch +++ b/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch @@ -1,4 +1,4 @@ -From bdc4be1fa3a5fca212eb8d146d114214399b9bd7 Mon Sep 17 00:00:00 2001 +From 402e89a3813766ac3ba38525b52e9c5a42a92eee Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 12:09:22 -0500 Subject: [PATCH] ntdll: Create eventfd-based objects for semaphores. @@ -16,7 +16,7 @@ Subject: [PATCH] ntdll: Create eventfd-based objects for semaphores. create mode 100644 dlls/ntdll/unix/esync.h diff --git a/dlls/ntdll/Makefile.in b/dlls/ntdll/Makefile.in -index 179d00b29ef..1de3490d4f0 100644 +index 6dfe2eb12f9..d86dafbddf9 100644 --- a/dlls/ntdll/Makefile.in +++ b/dlls/ntdll/Makefile.in @@ -45,6 +45,7 @@ C_SRCS = \ @@ -348,10 +348,10 @@ index 00000000000..a50a755149a + +extern int receive_fd( obj_handle_t *handle ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c -index 20f614f59f1..afbb0e391f3 100644 +index 1830c4fb392..8ae1a7548bf 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c -@@ -89,6 +89,7 @@ +@@ -86,6 +86,7 @@ #include "winioctl.h" #include "winternl.h" #include "unix_private.h" @@ -359,19 +359,19 @@ index 20f614f59f1..afbb0e391f3 100644 #include "wine/list.h" #include "wine/debug.h" -@@ -1602,6 +1603,7 @@ static void start_main_thread(void) +@@ -1867,6 +1868,7 @@ static void start_main_thread(void) signal_init_thread( teb ); dbg_init(); startup_info_size = server_init_process(); + esync_init(); virtual_map_user_shared_data(); init_cpu_info(); - syscall_dispatcher = signal_init_syscalls(); + init_files(); diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c -index 4f149c0f644..59f409ead8c 100644 +index cec2ef250a3..a5e9eff6f96 100644 --- a/dlls/ntdll/unix/server.c +++ b/dlls/ntdll/unix/server.c -@@ -112,7 +112,7 @@ timeout_t server_start_time = 0; /* time of server startup */ +@@ -114,7 +114,7 @@ timeout_t server_start_time = 0; /* time of server startup */ sigset_t server_block_set; /* signals to block during server calls */ static int fd_socket = -1; /* socket to exchange file descriptors with the server */ static pid_t server_pid; @@ -380,7 +380,7 @@ index 4f149c0f644..59f409ead8c 100644 /* atomically exchange a 64-bit value */ static inline LONG64 interlocked_xchg64( LONG64 *dest, LONG64 val ) -@@ -835,7 +835,7 @@ void CDECL wine_server_send_fd( int fd ) +@@ -821,7 +821,7 @@ void wine_server_send_fd( int fd ) * * Receive a file descriptor passed from the server. */ @@ -424,5 +424,5 @@ index a571855c70a..e41bbbf9349 100644 int do_esync(void) { -- -2.30.1 +2.30.2 diff --git a/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch b/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch index 502556f8..b67b360a 100644 --- a/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch +++ b/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch @@ -1,4 +1,4 @@ -From bdb8554de8eba7d4a6e948122c1f98aad35e5d53 Mon Sep 17 00:00:00 2001 +From 43e0d719795b5715afd3a058232a519ed67045b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sat, 4 Oct 2014 02:53:22 +0200 Subject: [PATCH] ntdll: Setup a temporary signal handler during process @@ -7,18 +7,18 @@ Subject: [PATCH] ntdll: Setup a temporary signal handler during process --- dlls/ntdll/unix/loader.c | 2 ++ dlls/ntdll/unix/signal_arm.c | 6 ++++ - dlls/ntdll/unix/signal_arm64.c | 7 +++++ + dlls/ntdll/unix/signal_arm64.c | 6 ++++ dlls/ntdll/unix/signal_i386.c | 52 +++++++++++++++++++++++++++++++++ dlls/ntdll/unix/signal_x86_64.c | 6 ++++ dlls/ntdll/unix/unix_private.h | 1 + dlls/ntdll/unix/virtual.c | 2 +- - 7 files changed, 75 insertions(+), 1 deletion(-) + 7 files changed, 74 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c -index b7e1432535d..90fd2cb7a16 100644 +index 1830c4fb392..de1629c3f23 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c -@@ -2075,6 +2075,8 @@ void __wine_main( int argc, char *argv[], char *envp[] ) +@@ -2210,6 +2210,8 @@ void __wine_main( int argc, char *argv[], char *envp[] ) #endif virtual_init(); @@ -28,11 +28,11 @@ index b7e1432535d..90fd2cb7a16 100644 #ifdef __APPLE__ diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c -index 5c96521e55e..bdefeb57ebf 100644 +index 3397e876722..27098259bba 100644 --- a/dlls/ntdll/unix/signal_arm.c +++ b/dlls/ntdll/unix/signal_arm.c -@@ -982,6 +982,12 @@ void *signal_init_syscalls(void) - return __wine_syscall_dispatcher; +@@ -848,6 +848,12 @@ void signal_init_process(void) + exit(1); } +/********************************************************************** @@ -45,28 +45,27 @@ index 5c96521e55e..bdefeb57ebf 100644 /*********************************************************************** * init_thread_context diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c -index 80cc59d0743..b8ebca0d9c4 100644 +index 5552704987f..84eafe64209 100644 --- a/dlls/ntdll/unix/signal_arm64.c +++ b/dlls/ntdll/unix/signal_arm64.c -@@ -1140,6 +1140,13 @@ void *signal_init_syscalls(void) +@@ -1032,6 +1032,12 @@ void signal_init_process(void) + exit(1); } - +/********************************************************************** + * signal_init_early + */ +void signal_init_early(void) +{ +} -+ + /*********************************************************************** * init_thread_context - */ diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c -index cc1e1d24e2a..807ebb38169 100644 +index c3f8c01d350..f94c8c993f3 100644 --- a/dlls/ntdll/unix/signal_i386.c +++ b/dlls/ntdll/unix/signal_i386.c -@@ -1984,6 +1984,30 @@ static BOOL handle_syscall_fault( ucontext_t *sigcontext, void *stack_ptr, +@@ -1833,6 +1833,30 @@ static BOOL handle_syscall_fault( ucontext_t *sigcontext, void *stack_ptr, } @@ -97,8 +96,8 @@ index cc1e1d24e2a..807ebb38169 100644 /********************************************************************** * segv_handler * -@@ -2560,6 +2584,34 @@ void *signal_init_syscalls(void) - return NtCurrentTeb()->WOW32Reserved = syscall_dispatcher; +@@ -2410,6 +2434,34 @@ void signal_init_process(void) + exit(1); } +/********************************************************************** @@ -133,11 +132,11 @@ index cc1e1d24e2a..807ebb38169 100644 /*********************************************************************** * init_thread_context diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c -index e62e958b4aa..b10c0e58b17 100644 +index 59c030ae6a4..7e31597c295 100644 --- a/dlls/ntdll/unix/signal_x86_64.c +++ b/dlls/ntdll/unix/signal_x86_64.c -@@ -2849,6 +2849,12 @@ void *signal_init_syscalls(void) - return syscall_dispatcher; +@@ -2692,6 +2692,12 @@ void signal_init_process(void) + exit(1); } +/********************************************************************** @@ -150,22 +149,22 @@ index e62e958b4aa..b10c0e58b17 100644 /*********************************************************************** * init_thread_context diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h -index 031f9ed3d33..79a27192e18 100644 +index 39ab7912490..2dd7a10ed36 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h -@@ -207,6 +207,7 @@ extern NTSTATUS signal_alloc_thread( TEB *teb ) DECLSPEC_HIDDEN; +@@ -243,6 +243,7 @@ extern NTSTATUS signal_alloc_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_free_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_init_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_init_process(void) DECLSPEC_HIDDEN; +extern void signal_init_early(void) DECLSPEC_HIDDEN; - extern void *signal_init_syscalls(void) DECLSPEC_HIDDEN; extern void DECLSPEC_NORETURN signal_start_thread( PRTL_THREAD_START_ROUTINE entry, void *arg, BOOL suspend, void *thunk, TEB *teb ) DECLSPEC_HIDDEN; + extern void DECLSPEC_NORETURN signal_exit_thread( int status, void (*func)(int) ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c -index 23585a2a17b..5299a6c8859 100644 +index 9796451f58f..0d796075b4c 100644 --- a/dlls/ntdll/unix/virtual.c +++ b/dlls/ntdll/unix/virtual.c -@@ -2932,7 +2932,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack ) +@@ -3197,7 +3197,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack ) mutex_lock( &virtual_mutex ); /* no need for signal masking inside signal handler */ vprot = get_page_vprot( page ); @@ -175,5 +174,5 @@ index 23585a2a17b..5299a6c8859 100644 if (page < (char *)NtCurrentTeb()->DeallocationStack || page >= (char *)NtCurrentTeb()->Tib.StackBase) -- -2.20.1 +2.30.2 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 0c882444..2d2602a6 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "96030ce738aa20f85a5138ec7c231c19a086f019" + echo "0807b09cfa7f2446f7a69f99ff1006e88c9de60b" } # Show version information diff --git a/patches/ws2_32-Connect_Time/0001-ws2_32-Implement-returning-the-proper-time-with-SO_C.patch b/patches/ws2_32-Connect_Time/0001-ws2_32-Implement-returning-the-proper-time-with-SO_C.patch index 35a496de..3a9fbffa 100644 --- a/patches/ws2_32-Connect_Time/0001-ws2_32-Implement-returning-the-proper-time-with-SO_C.patch +++ b/patches/ws2_32-Connect_Time/0001-ws2_32-Implement-returning-the-proper-time-with-SO_C.patch @@ -1,4 +1,4 @@ -From f9b83aeeeebe3c48fbc9d02c46ed78502a6a7733 Mon Sep 17 00:00:00 2001 +From e82ff01a82ef869fd97f19f5827f61eaaab7fb06 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 20 Nov 2014 13:27:24 +0100 Subject: [PATCH] ws2_32: Implement returning the proper time with @@ -16,11 +16,11 @@ Needs tools/make_requests. 4 files changed, 38 insertions(+), 5 deletions(-) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c -index ff24cc8f57c..25112eb0ef8 100644 +index 79085cf0c2a..2d35f4c9448 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c -@@ -898,6 +898,21 @@ static void _enable_event( HANDLE s, unsigned int event, - SERVER_END_REQ; +@@ -798,6 +798,21 @@ static inline void release_sock_fd( SOCKET s, int fd ) + close( fd ); } +static DWORD _get_connect_time(SOCKET s) @@ -38,10 +38,10 @@ index ff24cc8f57c..25112eb0ef8 100644 + return connect_time; +} + - static unsigned int _get_sock_mask(SOCKET s) + static void _get_sock_errors(SOCKET s, int *events) { - unsigned int ret; -@@ -2755,7 +2770,6 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level, + SERVER_START_REQ( get_socket_event ) +@@ -2626,7 +2641,6 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level, case WS_SO_CONNECT_TIME: { @@ -49,7 +49,7 @@ index ff24cc8f57c..25112eb0ef8 100644 struct WS_sockaddr addr; int len = sizeof(addr); -@@ -2767,10 +2781,7 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level, +@@ -2638,10 +2652,7 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level, if (WS_getpeername(s, &addr, &len) == SOCKET_ERROR) *(DWORD *)optval = ~0u; else @@ -62,10 +62,10 @@ index ff24cc8f57c..25112eb0ef8 100644 return ret; } diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c -index 33ab1e1b576..6e5c29608ee 100644 +index c0b1abcaaa5..b94da0809b8 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c -@@ -4131,11 +4131,15 @@ static void test_send(void) +@@ -4333,11 +4333,15 @@ static void test_send(void) OVERLAPPED ov; BOOL bret; DWORD id, bytes_sent, dwRet; @@ -81,7 +81,7 @@ index 33ab1e1b576..6e5c29608ee 100644 set_blocking(dst, FALSE); /* force disable buffering so we can get a pending overlapped request */ ret = setsockopt(dst, SOL_SOCKET, SO_SNDBUF, (char *) &zero, sizeof(zero)); -@@ -4208,6 +4212,22 @@ static void test_send(void) +@@ -4410,6 +4414,22 @@ static void test_send(void) ok(ret == SOCKET_ERROR && WSAGetLastError() == ERROR_IO_PENDING, "Failed to start overlapped send %d - %d\n", ret, WSAGetLastError()); @@ -105,10 +105,10 @@ index 33ab1e1b576..6e5c29608ee 100644 if (src != INVALID_SOCKET) closesocket(src); diff --git a/server/protocol.def b/server/protocol.def -index 57abacdf16b..5c236400dca 100644 +index 98d30ffc4be..e83e78006dd 100644 --- a/server/protocol.def +++ b/server/protocol.def -@@ -1453,6 +1453,7 @@ enum server_fd_type +@@ -1455,6 +1455,7 @@ enum server_fd_type int family; /* family, see socket manpage */ int type; /* type, see socket manpage */ int protocol; /* protocol, see socket manpage */ @@ -117,10 +117,10 @@ index 57abacdf16b..5c236400dca 100644 diff --git a/server/sock.c b/server/sock.c -index 228f987959b..e6d0fb7d6c0 100644 +index cf0ba068674..a828af2ec7d 100644 --- a/server/sock.c +++ b/server/sock.c -@@ -2414,6 +2414,7 @@ DECL_HANDLER(get_socket_info) +@@ -2411,6 +2411,7 @@ DECL_HANDLER(get_socket_info) reply->family = sock->family; reply->type = sock->type; reply->protocol = sock->proto; diff --git a/staging/upstream-commit b/staging/upstream-commit index 087aa59d..f6900ef3 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -96030ce738aa20f85a5138ec7c231c19a086f019 +0807b09cfa7f2446f7a69f99ff1006e88c9de60b