Jinoh Kang : ntdll/tests: Don't hard code the maximum XState length in test_extended_context().
Module: wine Branch: master Commit: 835f99bdce578a283049ccaab7694dcce536a794 URL: https://gitlab.winehq.org/wine/wine/-/commit/835f99bdce578a283049ccaab7694dc... Author: Jinoh Kang <jinoh.kang.kr(a)gmail.com> Date: Sat Jan 6 22:20:12 2024 +0900 ntdll/tests: Don't hard code the maximum XState length in test_extended_context(). This is required to support systems with a larger XSAVE area. --- dlls/ntdll/tests/exception.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c index 9f6bfbd2008..11bd062799c 100644 --- a/dlls/ntdll/tests/exception.c +++ b/dlls/ntdll/tests/exception.c @@ -10884,7 +10884,7 @@ static void test_extended_context(void) const struct context_parameters *context_arch; const ULONG64 supported_features = 7, supported_compaction_mask = supported_features | ((ULONG64)1 << 63); - ULONG expected_length, expected_length_xstate, context_flags, expected_offset; + ULONG expected_length, expected_length_xstate, context_flags, expected_offset, max_xstate_length; ULONG64 enabled_features, expected_compaction; DECLSPEC_ALIGN(64) BYTE context_buffer2[2048]; DECLSPEC_ALIGN(64) BYTE context_buffer[2048]; @@ -11511,6 +11511,9 @@ static void test_extended_context(void) context_ex = (CONTEXT_EX *)(context + 1); xs = (XSTATE *)((BYTE *)context_ex + context_ex->XState.Offset); + max_xstate_length = context_ex->XState.Length; + ok(max_xstate_length >= sizeof(XSTATE), "XSTATE size: %#lx; min: %#Ix.\n", max_xstate_length, sizeof(XSTATE)); + *(void **)(call_func_code_set_ymm0 + call_func_offsets.func_addr) = RtlCaptureContext; *(void **)(call_func_code_set_ymm0 + call_func_offsets.func_param1) = context; *(void **)(call_func_code_set_ymm0 + call_func_offsets.func_param2) = (void *)0xdeadbeef; @@ -11571,7 +11574,7 @@ static void test_extended_context(void) xs->CompactionMask = 4; xs->Mask = compaction_enabled ? 0 : 4; - context_ex->XState.Length = sizeof(XSTATE) + 64; + context_ex->XState.Length = max_xstate_length + 64; bret = func(); ok(!bret && GetLastError() == ERROR_INVALID_PARAMETER, "Got unexpected bret %#x, GetLastError() %lu.\n", bret, GetLastError());
participants (1)
-
Alexandre Julliard