From: Zebediah Figura Subject: [PATCH 3/3] ntdll/tests: Test setting the return value via alertable NtContinue(). Message-Id: Date: Mon, 27 Jun 2022 21:20:41 +0000 In-Reply-To: References: From: Zebediah Figura This is currently broken on WoW64. --- dlls/ntdll/tests/exception.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c index 748ee0e52ee..753a44c769b 100644 --- a/dlls/ntdll/tests/exception.c +++ b/dlls/ntdll/tests/exception.c @@ -8775,6 +8775,7 @@ static void test_user_apc(void) NTSTATUS status; CONTEXT context; LONG pass; + int ret; if (!pNtQueueApcThread) { @@ -8797,16 +8798,20 @@ static void test_user_apc(void) 0xc9, /* leave */ 0xc3, /* ret */ }; - void (__cdecl *func)(void *capture, CONTEXT *context) = code_mem; + int (__cdecl *func)(void *capture, CONTEXT *context) = code_mem; memcpy(code_mem, code, sizeof(code)); - func(RtlCaptureContext, &context); + ret = func(RtlCaptureContext, &context); /* work around broken RtlCaptureContext on Windows < 7 which doesn't set * ContextFlags */ context.ContextFlags = CONTEXT_FULL; } #else - RtlCaptureContext(&context); + { + int (WINAPI *func)(CONTEXT *context) = (void *)RtlCaptureContext; + + ret = func(&context); + } #endif InterlockedIncrement(&pass); @@ -8815,6 +8820,16 @@ static void test_user_apc(void) /* Try to make sure context data is far enough below context.Esp. */ CONTEXT c[4]; +#ifdef __i386__ + context.Eax = 0xabacab; +#elif defined(__x86_64__) + context.Rax = 0xabacab; +#elif defined(__arm__) + context.R0 = 0xabacab; +#elif defined(__aarch64__) + context.X0 = 0xabacab; +#endif + c[0] = context; test_apc_called = FALSE; @@ -8830,6 +8845,7 @@ static void test_user_apc(void) ok(0, "Should not get here, status %#lx.\n", status); return; } + ok(ret == 0xabacab, "Got return value %#x.\n", ret); ok(pass == 3, "Got unexpected pass %ld.\n", pass); ok(test_apc_called, "Test user APC was not called.\n"); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/327