[PATCH v2 1/3] ntdll/tests: Fix exception test failures on win10pro.

Paul Gofman pgofman at codeweavers.com
Mon Sep 7 08:31:19 CDT 2020


Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
---
 dlls/ntdll/tests/exception.c | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c
index aac5df531a0..43c4859e005 100644
--- a/dlls/ntdll/tests/exception.c
+++ b/dlls/ntdll/tests/exception.c
@@ -6690,12 +6690,14 @@ static void test_extended_context(void)
 
             length = 0xdeadbeef;
             ret = pRtlGetExtendedContextLength2(flags, &length, 0);
-            ok(!ret && length == expected_length_xstate - sizeof(YMMCONTEXT),
+            ok((!ret && length == expected_length_xstate - sizeof(YMMCONTEXT))
+                    || broken(!ret && length == expected_length_xstate) /* win10pro */,
                     "Got unexpected result ret %#x, length %#x, test %u.\n", ret, length, test);
 
             length = 0xdeadbeef;
             ret = pRtlGetExtendedContextLength2(flags, &length, 3);
-            ok(!ret && length == expected_length_xstate - sizeof(YMMCONTEXT),
+            ok((!ret && length == expected_length_xstate - sizeof(YMMCONTEXT))
+                    || broken(!ret && length == expected_length_xstate) /* win10pro */,
                     "Got unexpected result ret %#x, length %#x, test %u.\n", ret, length, test);
 
             length = 0xdeadbeef;
@@ -6877,7 +6879,9 @@ static void test_extended_context(void)
 
             length2 = 0xdeadbeef;
             p = pRtlLocateExtendedFeature(context_ex, 2, &length2);
-            ok(!p && length2 == sizeof(YMMCONTEXT), "Got unexpected p %p, length %#x, flags %#x.\n", p, length2, flags);
+            ok((!p && length2 == sizeof(YMMCONTEXT))
+                    || broken(p && length2 == sizeof(YMMCONTEXT)) /* win10pro */,
+                    "Got unexpected p %p, length %#x, flags %#x.\n", p, length2, flags);
 
             length2 = 0xdeadbeef;
             p = pLocateXStateFeature(context, 2, &length2);
@@ -6899,7 +6903,8 @@ static void test_extended_context(void)
                     - context_arch[test].context_length;
             ok(context_ex->XState.Offset == expected_offset,
                     "Got unexpected Offset %d, flags %#x.\n", context_ex->XState.Offset, flags);
-            ok(context_ex->XState.Length == sizeof(XSTATE) - sizeof(YMMCONTEXT),
+            ok(context_ex->XState.Length == sizeof(XSTATE) - sizeof(YMMCONTEXT)
+                    || broken(context_ex->XState.Length == sizeof(XSTATE)) /* win10pro */,
                     "Got unexpected Length %#x, flags %#x.\n", context_ex->XState.Length, flags);
 
             ok(context_ex->All.Offset == -(int)context_arch[test].context_length,
@@ -6995,7 +7000,8 @@ static void test_extended_context(void)
             context->ContextFlags);
     expected_compaction = compaction_enabled ? (ULONG64)1 << 63 : 0;
 
-    ok(!xs->Mask, "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask));
+    ok(!xs->Mask || broken(xs->Mask == 4) /* win10pro */,
+            "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask));
     ok(xs->CompactionMask == expected_compaction, "Got unexpected CompactionMask %s.\n",
             wine_dbgstr_longlong(xs->CompactionMask));
 
@@ -7003,7 +7009,7 @@ static void test_extended_context(void)
         ok(data[i] == test_extended_context_data[i], "Got unexpected data %#x, i %u.\n", data[i], i);
 
     for (i = 0; i < 4; ++i)
-        ok(((ULONG *)&xs->YmmContext)[i] == 0xcccccccc,
+        ok(((ULONG *)&xs->YmmContext)[i] == (xs->Mask == 4 ? test_extended_context_data[i + 4] : 0xcccccccc),
                 "Got unexpected data %#x, i %u.\n", ((ULONG *)&xs->YmmContext)[i], i);
 
     expected_compaction = compaction_enabled ? ((ULONG64)1 << 63) | 4 : 0;
@@ -7020,7 +7026,8 @@ static void test_extended_context(void)
     ok(xs->CompactionMask == 4, "Got unexpected CompactionMask %s.\n",
             wine_dbgstr_longlong(xs->CompactionMask));
     for (i = 0; i < 4; ++i)
-        ok(((ULONG *)&xs->YmmContext)[i] == 0xcccccccc,
+        ok(((ULONG *)&xs->YmmContext)[i] == 0xcccccccc
+                || broken(((ULONG *)&xs->YmmContext)[i] == test_extended_context_data[i + 4]) /* win10pro */,
                 "Got unexpected data %#x, i %u.\n", ((ULONG *)&xs->YmmContext)[i], i);
 
     xs->CompactionMask = 4;
@@ -7035,7 +7042,8 @@ static void test_extended_context(void)
     ok(xs->CompactionMask == expected_compaction, "Got unexpected CompactionMask %s.\n",
             wine_dbgstr_longlong(xs->CompactionMask));
     for (i = 0; i < 4; ++i)
-        ok(((ULONG *)&xs->YmmContext)[i] == 0xcccccccc,
+        ok(((ULONG *)&xs->YmmContext)[i] == 0xcccccccc
+                || broken(((ULONG *)&xs->YmmContext)[i] == test_extended_context_data[i + 4]) /* win10pro */,
                 "Got unexpected data %#x, i %u.\n", ((ULONG *)&xs->YmmContext)[i], i);
 
     context_ex->XState.Length = sizeof(XSTATE);
-- 
2.26.2




More information about the wine-devel mailing list