Module: wine Branch: master Commit: 917e4c97431f4e3390feac3d9447fe55964e0d90 URL: https://gitlab.winehq.org/wine/wine/-/commit/917e4c97431f4e3390feac3d9447fe5...
Author: Alexandre Julliard julliard@winehq.org Date: Thu Jul 11 15:50:34 2024 +0200
ntdll: Call the terminate process callback on ARM64EC.
---
dlls/ntdll/signal_arm64ec.c | 18 +++++++++++++++++- dlls/xtajit64/cpu.c | 9 +++++++++ dlls/xtajit64/xtajit64.spec | 2 +- 3 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/signal_arm64ec.c b/dlls/ntdll/signal_arm64ec.c index 49d66b517dd..20eb5ff662e 100644 --- a/dlls/ntdll/signal_arm64ec.c +++ b/dlls/ntdll/signal_arm64ec.c @@ -51,6 +51,7 @@ static void (WINAPI *pNotifyMemoryFree)(void*,SIZE_T,ULONG,BOOL,NTSTATUS); static void (WINAPI *pNotifyMemoryProtect)(void*,SIZE_T,ULONG,BOOL,NTSTATUS); static void (WINAPI *pNotifyUnmapViewOfSection)(void*,BOOL,NTSTATUS); static NTSTATUS (WINAPI *pProcessInit)(void); +static void (WINAPI *pProcessTerm)(HANDLE,BOOL,NTSTATUS); static NTSTATUS (WINAPI *pThreadInit)(void); static void (WINAPI *pThreadTerm)(HANDLE,LONG); static void (WINAPI *pUpdateProcessorInformation)(SYSTEM_CPU_INFORMATION*); @@ -163,6 +164,7 @@ NTSTATUS arm64ec_process_init( HMODULE module ) GET_PTR( NotifyMemoryProtect ); GET_PTR( NotifyUnmapViewOfSection ); GET_PTR( ProcessInit ); + GET_PTR( ProcessTerm ); GET_PTR( ThreadInit ); GET_PTR( ThreadTerm ); GET_PTR( UpdateProcessorInformation ); @@ -432,7 +434,7 @@ DEFINE_SYSCALL(NtSuspendProcess, (HANDLE handle)) DEFINE_SYSCALL(NtSuspendThread, (HANDLE handle, ULONG *count)) DEFINE_SYSCALL(NtSystemDebugControl, (SYSDBG_COMMAND command, void *in_buff, ULONG in_len, void *out_buff, ULONG out_len, ULONG *retlen)) DEFINE_SYSCALL(NtTerminateJobObject, (HANDLE handle, NTSTATUS status)) -DEFINE_SYSCALL(NtTerminateProcess, (HANDLE handle, LONG exit_code)) +DEFINE_WRAPPED_SYSCALL(NtTerminateProcess, (HANDLE handle, LONG exit_code)) DEFINE_WRAPPED_SYSCALL(NtTerminateThread, (HANDLE handle, LONG exit_code)) DEFINE_SYSCALL(NtTestAlert, (void)) DEFINE_SYSCALL(NtTraceControl, (ULONG code, void *inbuf, ULONG inbuf_len, void *outbuf, ULONG outbuf_len, ULONG *size)) @@ -640,6 +642,20 @@ NTSTATUS SYSCALL_API NtSetContextThread( HANDLE handle, const CONTEXT *context ) return syscall_NtSetContextThread( handle, &arm_ctx ); }
+NTSTATUS SYSCALL_API NtTerminateProcess( HANDLE handle, LONG exit_code ) +{ + NTSTATUS status; + + if (!handle && pProcessTerm) + { + pProcessTerm( handle, FALSE, 0 ); + status = syscall_NtTerminateProcess( handle, exit_code ); + pProcessTerm( handle, TRUE, status ); + return status; + } + return syscall_NtTerminateProcess( handle, exit_code ); +} + NTSTATUS SYSCALL_API NtTerminateThread( HANDLE handle, LONG exit_code ) { if (pThreadTerm) pThreadTerm( handle, exit_code ); diff --git a/dlls/xtajit64/cpu.c b/dlls/xtajit64/cpu.c index 91446aa1676..fec5f233eec 100644 --- a/dlls/xtajit64/cpu.c +++ b/dlls/xtajit64/cpu.c @@ -193,6 +193,15 @@ NTSTATUS WINAPI ProcessInit(void) }
+/********************************************************************** + * ProcessTerm (xtajit64.@) + */ +void WINAPI ProcessTerm( HANDLE handle, BOOL is_post, NTSTATUS status ) +{ + TRACE( "%p\n", handle ); +} + + /********************************************************************** * ThreadInit (xtajit64.@) */ diff --git a/dlls/xtajit64/xtajit64.spec b/dlls/xtajit64/xtajit64.spec index bfc6c41c4b0..2da5d1dc49b 100644 --- a/dlls/xtajit64/xtajit64.spec +++ b/dlls/xtajit64/xtajit64.spec @@ -13,7 +13,7 @@ @ stdcall NotifyMemoryProtect(ptr long long long long) @ stdcall NotifyUnmapViewOfSection(ptr long long) @ stdcall ProcessInit() -#@ stub ProcessTerm +@ stdcall ProcessTerm(ptr long long) #@ stub ResetToConsistentState @ stdcall ThreadInit() @ stdcall ThreadTerm(ptr long)