Signed-off-by: Paul Gofman pgofman@codeweavers.com --- .../api-ms-win-core-xstate-l1-1-0.spec | 2 +- .../api-ms-win-core-xstate-l2-1-0.spec | 2 +- dlls/kernel32/kernel32.spec | 2 +- dlls/kernelbase/kernelbase.spec | 2 +- dlls/kernelbase/memory.c | 41 +++++++++- dlls/ntdll/exception.c | 10 +++ dlls/ntdll/ntdll.spec | 1 + dlls/ntdll/tests/exception.c | 77 ++++++++++++++++++- dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 1 + include/ddk/wdm.h | 1 + include/winbase.h | 1 + 11 files changed, 131 insertions(+), 9 deletions(-)
diff --git a/dlls/api-ms-win-core-xstate-l1-1-0/api-ms-win-core-xstate-l1-1-0.spec b/dlls/api-ms-win-core-xstate-l1-1-0/api-ms-win-core-xstate-l1-1-0.spec index b933eca226f..0a29d660112 100644 --- a/dlls/api-ms-win-core-xstate-l1-1-0/api-ms-win-core-xstate-l1-1-0.spec +++ b/dlls/api-ms-win-core-xstate-l1-1-0/api-ms-win-core-xstate-l1-1-0.spec @@ -5,4 +5,4 @@ @ stdcall RtlInitializeExtendedContext(ptr long ptr) ntdll.RtlInitializeExtendedContext @ stdcall RtlLocateExtendedFeature(ptr long ptr) ntdll.RtlLocateExtendedFeature @ stdcall RtlLocateLegacyContext(ptr ptr) ntdll.RtlLocateLegacyContext -@ stub RtlSetExtendedFeaturesMask +@ stdcall RtlSetExtendedFeaturesMask(ptr int64) ntdll.RtlSetExtendedFeaturesMask diff --git a/dlls/api-ms-win-core-xstate-l2-1-0/api-ms-win-core-xstate-l2-1-0.spec b/dlls/api-ms-win-core-xstate-l2-1-0/api-ms-win-core-xstate-l2-1-0.spec index 5ad2df2b405..74aafa4db1c 100644 --- a/dlls/api-ms-win-core-xstate-l2-1-0/api-ms-win-core-xstate-l2-1-0.spec +++ b/dlls/api-ms-win-core-xstate-l2-1-0/api-ms-win-core-xstate-l2-1-0.spec @@ -3,4 +3,4 @@ @ stub GetXStateFeaturesMask @ stdcall -arch=i386,x86_64 InitializeContext(ptr long ptr ptr) kernel32.InitializeContext @ stdcall -arch=i386,x86_64 LocateXStateFeature(ptr long ptr) kernel32.LocateXStateFeature -@ stub SetXStateFeaturesMask +@ stdcall -arch=i386,x86_64 SetXStateFeaturesMask(ptr int64) kernel32.SetXStateFeaturesMask diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index c22f3000bf0..4bcda92bf7f 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -895,7 +895,7 @@ @ stdcall -import GetWindowsDirectoryA(ptr long) @ stdcall -import GetWindowsDirectoryW(ptr long) @ stdcall -import GetWriteWatch(long ptr long ptr ptr ptr) -# @ stub GetXStateFeaturesMask +@ stdcall -import -arch=i386,x86_64 SetXStateFeaturesMask(ptr int64) @ stdcall GlobalAddAtomA(str) @ stdcall GlobalAddAtomW(wstr) @ stdcall -import GlobalAlloc(long long) diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index ef862c57a4f..d2832600091 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -1510,7 +1510,7 @@ @ stdcall SetUserGeoID(long) @ stdcall SetWaitableTimer(long ptr long ptr ptr long) @ stdcall SetWaitableTimerEx(long ptr long ptr ptr ptr long) -# @ stub SetXStateFeaturesMask +@ stdcall -arch=i386,x86_64 SetXStateFeaturesMask(ptr int64) @ stdcall SetupComm(long long long) # @ stub SharedLocalIsEnabled @ stdcall SignalObjectAndWait(long long long long) diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c index ea958e1e232..f99b908494b 100644 --- a/dlls/kernelbase/memory.c +++ b/dlls/kernelbase/memory.c @@ -1236,10 +1236,10 @@ BOOL WINAPI InitializeContext( void *buffer, DWORD context_flags, CONTEXT **cont #endif
+#if defined(__x86_64__) /*********************************************************************** * LocateXStateFeature (kernelbase.@) */ -#if defined(__x86_64__) void * WINAPI LocateXStateFeature( CONTEXT *context, DWORD feature_id, DWORD *length ) { if (!(context->ContextFlags & CONTEXT_AMD64)) @@ -1262,7 +1262,28 @@ void * WINAPI LocateXStateFeature( CONTEXT *context, DWORD feature_id, DWORD *le
return &context->u.FltSave; } + +/*********************************************************************** + * SetXStateFeaturesMask (kernelbase.@) + */ +BOOL WINAPI SetXStateFeaturesMask( CONTEXT *context, DWORD64 feature_mask ) +{ + if (!(context->ContextFlags & CONTEXT_AMD64)) + return FALSE; + + if (feature_mask & 0x3) + context->ContextFlags |= CONTEXT_FLOATING_POINT; + + if ((context->ContextFlags & CONTEXT_XSTATE) != CONTEXT_XSTATE) + return !(feature_mask & ~(DWORD64)3); + + RtlSetExtendedFeaturesMask( (CONTEXT_EX *)(context + 1), feature_mask ); + return TRUE; +} #elif defined(__i386__) +/*********************************************************************** + * LocateXStateFeature (kernelbase.@) + */ void * WINAPI LocateXStateFeature( CONTEXT *context, DWORD feature_id, DWORD *length ) { if (!(context->ContextFlags & CONTEXT_X86)) @@ -1285,6 +1306,24 @@ void * WINAPI LocateXStateFeature( CONTEXT *context, DWORD feature_id, DWORD *le
return &context->ExtendedRegisters; } + +/*********************************************************************** + * SetXStateFeaturesMask (kernelbase.@) + */ +BOOL WINAPI SetXStateFeaturesMask( CONTEXT *context, DWORD64 feature_mask ) +{ + if (!(context->ContextFlags & CONTEXT_X86)) + return FALSE; + + if (feature_mask & 0x3) + context->ContextFlags |= CONTEXT_EXTENDED_REGISTERS; + + if ((context->ContextFlags & CONTEXT_XSTATE) != CONTEXT_XSTATE) + return !(feature_mask & ~(DWORD64)3); + + RtlSetExtendedFeaturesMask( (CONTEXT_EX *)(context + 1), feature_mask ); + return TRUE; +} #endif
/*********************************************************************** diff --git a/dlls/ntdll/exception.c b/dlls/ntdll/exception.c index 0e7e3b959e4..6ca22d6660f 100644 --- a/dlls/ntdll/exception.c +++ b/dlls/ntdll/exception.c @@ -861,3 +861,13 @@ void * WINAPI RtlLocateLegacyContext( CONTEXT_EX *context_ex, ULONG *length )
return (BYTE *)context_ex + context_ex->Legacy.Offset; } + +/********************************************************************** + * RtlSetExtendedFeaturesMask (NTDLL.@) + */ +void WINAPI RtlSetExtendedFeaturesMask( CONTEXT_EX *context_ex, ULONG64 feature_mask ) +{ + XSTATE *xs = (XSTATE *)((BYTE *)context_ex + context_ex->XState.Offset); + + xs->Mask = RtlGetEnabledExtendedFeatures( feature_mask ) & ~(ULONG64)3; +} diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index cc75aad06d1..0e17d29ed1b 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -946,6 +946,7 @@ @ stdcall RtlSetCurrentTransaction(ptr) @ stdcall RtlSetDaclSecurityDescriptor(ptr long ptr long) @ stdcall RtlSetEnvironmentVariable(ptr ptr ptr) +@ stdcall RtlSetExtendedFeaturesMask(ptr int64) @ stdcall RtlSetGroupSecurityDescriptor(ptr ptr long) @ stdcall RtlSetHeapInformation(long long ptr long) @ stub RtlSetInformationAcl diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c index 4b714e4739e..7b6c65f8572 100644 --- a/dlls/ntdll/tests/exception.c +++ b/dlls/ntdll/tests/exception.c @@ -53,6 +53,7 @@ static NTSTATUS (WINAPI *pRtlInitializeExtendedContext2)(void *context, ULONG c ULONG64 compaction_mask); static void * (WINAPI *pRtlLocateExtendedFeature)(CONTEXT_EX *context_ex, ULONG feature_id, ULONG *length); static void * (WINAPI *pRtlLocateLegacyContext)(CONTEXT_EX *context_ex, ULONG *length); +static void (WINAPI *pRtlSetExtendedFeaturesMask)(CONTEXT_EX *context_ex, ULONG64 feature_mask); static NTSTATUS (WINAPI *pNtReadVirtualMemory)(HANDLE, const void*, void*, SIZE_T, SIZE_T*); static NTSTATUS (WINAPI *pNtTerminateProcess)(HANDLE handle, LONG exit_code); static NTSTATUS (WINAPI *pNtQueryInformationProcess)(HANDLE, PROCESSINFOCLASS, PVOID, ULONG, PULONG); @@ -67,6 +68,7 @@ static BOOL (WINAPI *pInitializeContext)(void *buffer, DWORD context_flags, static BOOL (WINAPI *pInitializeContext2)(void *buffer, DWORD context_flags, CONTEXT **context, DWORD *length, ULONG64 compaction_mask); static void * (WINAPI *pLocateXStateFeature)(CONTEXT *context, DWORD feature_id, DWORD *length); +static BOOL (WINAPI *pSetXStateFeaturesMask)(CONTEXT *context, DWORD64 feature_mask);
#define RTL_UNLOAD_EVENT_TRACE_NUMBER 64
@@ -6224,15 +6226,15 @@ static void test_extended_context(void) }, }; ULONG expected_length, expected_length_xstate, context_flags, expected_offset; + ULONG64 enabled_features, expected_compaction; DECLSPEC_ALIGN(64) BYTE context_buffer2[2048]; DECLSPEC_ALIGN(64) BYTE context_buffer[2048]; unsigned int i, j, address_offset, test; ULONG ret, ret2, length, length2, align; - ULONG64 enabled_features; CONTEXT_EX *context_ex; + ULONG flags, flags_fpx; CONTEXT *context; unsigned data[8]; - ULONG flags; XSTATE *xs; BOOL bret; void *p; @@ -6359,6 +6361,36 @@ static void test_extended_context(void) "Got unexpected p %p, length %#x, flags %#x.\n", p, length2, flags); length2 = expected_length;
+ if (0) + { + /* Crashes on Windows. */ + pRtlSetExtendedFeaturesMask(context_ex, 0); + } + bret = pSetXStateFeaturesMask(context, 0); + ok(bret == !!(flags & CONTEXT_NATIVE), "Got unexpected bret %#x, flags %#x.\n", bret, flags); + context_flags = *(DWORD *)(context_buffer + context_arch[test].flags_offset); + ok(context_flags == flags, "Got unexpected ContextFlags %#x, flags %#x.\n", context_flags, flags); + + flags_fpx = flags & 0x10000 ? flags | 0x20 : flags | 0x8; + bret = pSetXStateFeaturesMask(context, 1); + ok(bret == !!(flags & CONTEXT_NATIVE), "Got unexpected bret %#x, flags %#x.\n", bret, flags); + context_flags = *(DWORD *)(context_buffer + context_arch[test].flags_offset); + ok(context_flags == (bret ? flags_fpx : flags), + "Got unexpected ContextFlags %#x, flags %#x.\n", context_flags, flags); + + bret = pSetXStateFeaturesMask(context, 2); + ok(bret == !!(flags & CONTEXT_NATIVE), "Got unexpected bret %#x, flags %#x.\n", bret, flags); + context_flags = *(DWORD *)(context_buffer + context_arch[test].flags_offset); + ok(context_flags == (bret ? flags_fpx : flags), + "Got unexpected ContextFlags %#x, flags %#x.\n", context_flags, flags); + + bret = pSetXStateFeaturesMask(context, 4); + ok(!bret, "Got unexpected bret %#x.\n", bret); + context_flags = *(DWORD *)(context_buffer + context_arch[test].flags_offset); + ok(context_flags == (flags & CONTEXT_NATIVE ? flags_fpx : flags), + "Got unexpected ContextFlags %#x, flags %#x.\n", context_flags, flags); + *(DWORD *)(context_buffer + context_arch[test].flags_offset) = flags; + for (j = 0; j < context_arch[test].flags_offset; ++j) { if (context_buffer[j] != 0xcc) @@ -6469,6 +6501,7 @@ static void test_extended_context(void) }
flags = context_arch[test].flag | 0x40; + flags_fpx = flags & 0x10000 ? flags | 0x20 : flags | 0x8;
length = 0xdeadbeef; ret = pRtlGetExtendedContextLength(flags, &length); @@ -6629,11 +6662,40 @@ static void test_extended_context(void) else ok(!p && length2 == 0xdeadbeef, "Got unexpected p %p, length %#x, flags %#x.\n", p, length2, flags);
+ expected_compaction = compaction_enabled ? ((ULONG64)1 << 63) | enabled_features : 0; ok(!xs->Mask, "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); - ok(xs->CompactionMask == (compaction_enabled ? ((ULONG64)1 << 63) | enabled_features : 0), + ok(xs->CompactionMask == expected_compaction, "Got unexpected CompactionMask %s.\n", wine_dbgstr_longlong(xs->CompactionMask)); ok(!xs->Reserved[0], "Got unexpected Reserved[0] %s.\n", wine_dbgstr_longlong(xs->Reserved[0]));
+ xs->Mask = 0xdeadbeef; + xs->CompactionMask = 0xdeadbeef; + pRtlSetExtendedFeaturesMask(context_ex, 0); + ok(!xs->Mask, "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); + ok(xs->CompactionMask == 0xdeadbeef, "Got unexpected CompactionMask %s.\n", wine_dbgstr_longlong(xs->CompactionMask)); + context_flags = *(DWORD *)(context_buffer + context_arch[test].flags_offset); + ok(context_flags == flags, "Got unexpected ContextFlags %#x, flags %#x.\n", context->ContextFlags, flags); + + xs->Mask = 0xdeadbeef; + xs->CompactionMask = 0; + pRtlSetExtendedFeaturesMask(context_ex, ~(ULONG64)0); + ok(xs->Mask == (enabled_features & ~(ULONG64)3), "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); + ok(!xs->CompactionMask, "Got unexpected CompactionMask %s.\n", + wine_dbgstr_longlong(xs->CompactionMask)); + context_flags = *(DWORD *)(context_buffer + context_arch[test].flags_offset); + ok(context_flags == flags, "Got unexpected ContextFlags %#x, flags %#x.\n", context->ContextFlags, flags); + + xs->Mask = 0xdeadbeef; + xs->CompactionMask = 0xdeadbeef; + bret = pSetXStateFeaturesMask(context, 7); + ok(bret == !!(flags & CONTEXT_NATIVE), "Got unexpected bret %#x.\n", bret); + context_flags = *(DWORD *)(context_buffer + context_arch[test].flags_offset); + ok(context_flags == (bret ? flags_fpx : flags), + "Got unexpected ContextFlags %#x, flags %#x.\n", context_flags, flags); + ok(xs->Mask == bret ? 4 : 0xdeadbeef, "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); + ok(xs->CompactionMask == bret ? expected_compaction : 0xdeadbeef, "Got unexpected CompactionMask %s.\n", + wine_dbgstr_longlong(xs->CompactionMask)); + if (pRtlGetExtendedContextLength2) { memset(context_buffer, 0xcc, sizeof(context_buffer)); @@ -6690,11 +6752,16 @@ static void test_extended_context(void) + context_ex->XState.Offset + context_ex->XState.Length, "Got unexpected Length %#x, flags %#x.\n", context_ex->All.Length, flags);
+ expected_compaction = compaction_enabled ? (ULONG64)1 << 63 : 0; xs = (XSTATE *)((BYTE *)context_ex + context_ex->XState.Offset); ok(!xs->Mask, "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); - ok(xs->CompactionMask == (compaction_enabled ? (ULONG64)1 << 63 : 0), + ok(xs->CompactionMask == expected_compaction, "Got unexpected CompactionMask %s.\n", wine_dbgstr_longlong(xs->CompactionMask)); ok(!xs->Reserved[0], "Got unexpected Reserved[0] %s.\n", wine_dbgstr_longlong(xs->Reserved[0])); + + pRtlSetExtendedFeaturesMask(context_ex, ~(ULONG64)0); + ok(xs->Mask == (enabled_features & ~(ULONG64)3), "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)); } }
@@ -6790,6 +6857,7 @@ START_TEST(exception) X(RtlInitializeExtendedContext2); X(RtlLocateExtendedFeature); X(RtlLocateLegacyContext); + X(RtlSetExtendedFeaturesMask); #undef X
#define X(f) p##f = (void*)GetProcAddress(hkernel32, #f) @@ -6799,6 +6867,7 @@ START_TEST(exception) X(InitializeContext); X(InitializeContext2); X(LocateXStateFeature); + X(SetXStateFeaturesMask); #undef X
if (pRtlAddVectoredExceptionHandler && pRtlRemoveVectoredExceptionHandler) diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index a900796359c..ffd8f7dcd4c 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -1235,6 +1235,7 @@ @ stdcall RtlSetBits(ptr long long) @ stdcall RtlSetControlSecurityDescriptor(ptr long long) @ stdcall RtlSetDaclSecurityDescriptor(ptr long ptr long) +@ stdcall RtlSetExtendedFeaturesMask(ptr int64) @ stdcall RtlSetGroupSecurityDescriptor(ptr ptr long) @ stdcall RtlSetOwnerSecurityDescriptor(ptr ptr long) @ stdcall RtlSetSaclSecurityDescriptor(ptr long ptr long) diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h index 2115627d3a6..3938645da94 100644 --- a/include/ddk/wdm.h +++ b/include/ddk/wdm.h @@ -1845,6 +1845,7 @@ NTSTATUS WINAPI RtlGetExtendedContextLength2(ULONG,ULONG*,ULONG64); void * WINAPI RtlLocateLegacyContext(CONTEXT_EX*,ULONG*); void * WINAPI RtlLocateExtendedFeature(CONTEXT_EX*,ULONG,ULONG*); void * WINAPI RtlLocateExtendedFeature2(CONTEXT_EX*,ULONG,XSTATE_CONFIGURATION*,ULONG*); +void WINAPI RtlSetExtendedFeaturesMask(CONTEXT_EX*,ULONG64); #endif
#ifdef __x86_64__ diff --git a/include/winbase.h b/include/winbase.h index d5ed5db8d7b..f741f0a09dc 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -2700,6 +2700,7 @@ WINBASEAPI BOOL WINAPI SetVolumeMountPointW(LPCWSTR,LPCWSTR); WINBASEAPI BOOL WINAPI SetWaitableTimer(HANDLE,const LARGE_INTEGER*,LONG,PTIMERAPCROUTINE,LPVOID,BOOL); WINBASEAPI BOOL WINAPI SetWaitableTimerEx(HANDLE,const LARGE_INTEGER*,LONG,PTIMERAPCROUTINE,LPVOID,REASON_CONTEXT*,ULONG); WINBASEAPI BOOL WINAPI SetUmsThreadInformation(PUMS_CONTEXT,UMS_THREAD_INFO_CLASS,void *,ULONG); +WINBASEAPI BOOL WINAPI SetXStateFeaturesMask(CONTEXT*, DWORD64); WINBASEAPI BOOL WINAPI SetupComm(HANDLE,DWORD,DWORD); WINBASEAPI DWORD WINAPI SignalObjectAndWait(HANDLE,HANDLE,DWORD,BOOL); WINBASEAPI DWORD WINAPI SizeofResource(HMODULE,HRSRC);
Signed-off-by: Paul Gofman pgofman@codeweavers.com --- .../api-ms-win-core-xstate-l1-1-0.spec | 2 +- .../api-ms-win-core-xstate-l2-1-0.spec | 2 +- dlls/kernel32/kernel32.spec | 1 + dlls/kernelbase/kernelbase.spec | 2 +- dlls/kernelbase/memory.c | 34 +++++++++++++ dlls/ntdll/exception.c | 11 +++++ dlls/ntdll/ntdll.spec | 1 + dlls/ntdll/tests/exception.c | 48 ++++++++++++++++++- dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 1 + include/ddk/wdm.h | 1 + include/winbase.h | 1 + 11 files changed, 100 insertions(+), 4 deletions(-)
diff --git a/dlls/api-ms-win-core-xstate-l1-1-0/api-ms-win-core-xstate-l1-1-0.spec b/dlls/api-ms-win-core-xstate-l1-1-0/api-ms-win-core-xstate-l1-1-0.spec index 0a29d660112..4abed7d3252 100644 --- a/dlls/api-ms-win-core-xstate-l1-1-0/api-ms-win-core-xstate-l1-1-0.spec +++ b/dlls/api-ms-win-core-xstate-l1-1-0/api-ms-win-core-xstate-l1-1-0.spec @@ -1,7 +1,7 @@ @ stub RtlCopyExtendedContext @ stdcall RtlGetEnabledExtendedFeatures(int64) ntdll.RtlGetEnabledExtendedFeatures @ stdcall RtlGetExtendedContextLength(long ptr) ntdll.RtlGetExtendedContextLength -@ stub RtlGetExtendedFeaturesMask +@ stdcall RtlGetExtendedFeaturesMask(ptr) ntdll.RtlGetExtendedFeaturesMask @ stdcall RtlInitializeExtendedContext(ptr long ptr) ntdll.RtlInitializeExtendedContext @ stdcall RtlLocateExtendedFeature(ptr long ptr) ntdll.RtlLocateExtendedFeature @ stdcall RtlLocateLegacyContext(ptr ptr) ntdll.RtlLocateLegacyContext diff --git a/dlls/api-ms-win-core-xstate-l2-1-0/api-ms-win-core-xstate-l2-1-0.spec b/dlls/api-ms-win-core-xstate-l2-1-0/api-ms-win-core-xstate-l2-1-0.spec index 74aafa4db1c..9c804b28864 100644 --- a/dlls/api-ms-win-core-xstate-l2-1-0/api-ms-win-core-xstate-l2-1-0.spec +++ b/dlls/api-ms-win-core-xstate-l2-1-0/api-ms-win-core-xstate-l2-1-0.spec @@ -1,6 +1,6 @@ @ stub CopyContext @ stdcall -ret64 -arch=i386,x86_64 GetEnabledXStateFeatures() kernel32.GetEnabledXStateFeatures -@ stub GetXStateFeaturesMask +@ stdcall -arch=i386,x86_64 GetXStateFeaturesMask(ptr ptr) kernel32.GetXStateFeaturesMask @ stdcall -arch=i386,x86_64 InitializeContext(ptr long ptr ptr) kernel32.InitializeContext @ stdcall -arch=i386,x86_64 LocateXStateFeature(ptr long ptr) kernel32.LocateXStateFeature @ stdcall -arch=i386,x86_64 SetXStateFeaturesMask(ptr int64) kernel32.SetXStateFeaturesMask diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index 4bcda92bf7f..d357d32c23e 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -895,6 +895,7 @@ @ stdcall -import GetWindowsDirectoryA(ptr long) @ stdcall -import GetWindowsDirectoryW(ptr long) @ stdcall -import GetWriteWatch(long ptr long ptr ptr ptr) +@ stdcall -import -arch=i386,x86_64 GetXStateFeaturesMask(ptr ptr) @ stdcall -import -arch=i386,x86_64 SetXStateFeaturesMask(ptr int64) @ stdcall GlobalAddAtomA(str) @ stdcall GlobalAddAtomW(wstr) diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index d2832600091..e8e974d9c15 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -766,7 +766,7 @@ @ stdcall GetWriteWatch(long ptr long ptr ptr ptr) # @ stub GetWsChanges # @ stub GetWsChangesEx -# @ stub GetXStateFeaturesMask +@ stdcall -arch=i386,x86_64 GetXStateFeaturesMask(ptr ptr) @ stdcall GlobalAlloc(long long) @ stdcall GlobalFree(long) @ stdcall GlobalMemoryStatusEx(ptr) diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c index f99b908494b..38aa2c78410 100644 --- a/dlls/kernelbase/memory.c +++ b/dlls/kernelbase/memory.c @@ -1280,6 +1280,23 @@ BOOL WINAPI SetXStateFeaturesMask( CONTEXT *context, DWORD64 feature_mask ) RtlSetExtendedFeaturesMask( (CONTEXT_EX *)(context + 1), feature_mask ); return TRUE; } + +/*********************************************************************** + * GetXStateFeaturesMask (kernelbase.@) + */ +BOOL WINAPI GetXStateFeaturesMask( CONTEXT *context, DWORD64 *feature_mask ) +{ + if (!(context->ContextFlags & CONTEXT_AMD64)) + return FALSE; + + *feature_mask = (context->ContextFlags & CONTEXT_FLOATING_POINT) == CONTEXT_FLOATING_POINT + ? 3 : 0; + + if ((context->ContextFlags & CONTEXT_XSTATE) == CONTEXT_XSTATE) + *feature_mask |= RtlGetExtendedFeaturesMask( (CONTEXT_EX *)(context + 1) ); + + return TRUE; +} #elif defined(__i386__) /*********************************************************************** * LocateXStateFeature (kernelbase.@) @@ -1324,6 +1341,23 @@ BOOL WINAPI SetXStateFeaturesMask( CONTEXT *context, DWORD64 feature_mask ) RtlSetExtendedFeaturesMask( (CONTEXT_EX *)(context + 1), feature_mask ); return TRUE; } + +/*********************************************************************** + * GetXStateFeaturesMask (kernelbase.@) + */ +BOOL WINAPI GetXStateFeaturesMask( CONTEXT *context, DWORD64 *feature_mask ) +{ + if (!(context->ContextFlags & CONTEXT_X86)) + return FALSE; + + *feature_mask = (context->ContextFlags & CONTEXT_EXTENDED_REGISTERS) == CONTEXT_EXTENDED_REGISTERS + ? 3 : 0; + + if ((context->ContextFlags & CONTEXT_XSTATE) == CONTEXT_XSTATE) + *feature_mask |= RtlGetExtendedFeaturesMask( (CONTEXT_EX *)(context + 1) ); + + return TRUE; +} #endif
/*********************************************************************** diff --git a/dlls/ntdll/exception.c b/dlls/ntdll/exception.c index 6ca22d6660f..e022e2c2cd1 100644 --- a/dlls/ntdll/exception.c +++ b/dlls/ntdll/exception.c @@ -871,3 +871,14 @@ void WINAPI RtlSetExtendedFeaturesMask( CONTEXT_EX *context_ex, ULONG64 feature_
xs->Mask = RtlGetEnabledExtendedFeatures( feature_mask ) & ~(ULONG64)3; } + + +/********************************************************************** + * RtlGetExtendedFeaturesMask (NTDLL.@) + */ +ULONG64 WINAPI RtlGetExtendedFeaturesMask( CONTEXT_EX *context_ex ) +{ + XSTATE *xs = (XSTATE *)((BYTE *)context_ex + context_ex->XState.Offset); + + return xs->Mask & ~(ULONG64)3; +} diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 0e17d29ed1b..c7083e0299c 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -697,6 +697,7 @@ @ stdcall RtlGetExePath(wstr ptr) @ stdcall RtlGetExtendedContextLength(long ptr) @ stdcall RtlGetExtendedContextLength2(long ptr int64) +@ stdcall -ret64 RtlGetExtendedFeaturesMask(ptr) # @ stub RtlGetFirstRange @ stdcall RtlGetFrame() @ stdcall RtlGetFullPathName_U(wstr long ptr ptr) diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c index 7b6c65f8572..5d0857476ea 100644 --- a/dlls/ntdll/tests/exception.c +++ b/dlls/ntdll/tests/exception.c @@ -54,6 +54,7 @@ static NTSTATUS (WINAPI *pRtlInitializeExtendedContext2)(void *context, ULONG c static void * (WINAPI *pRtlLocateExtendedFeature)(CONTEXT_EX *context_ex, ULONG feature_id, ULONG *length); static void * (WINAPI *pRtlLocateLegacyContext)(CONTEXT_EX *context_ex, ULONG *length); static void (WINAPI *pRtlSetExtendedFeaturesMask)(CONTEXT_EX *context_ex, ULONG64 feature_mask); +static ULONG64 (WINAPI *pRtlGetExtendedFeaturesMask)(CONTEXT_EX *context_ex); static NTSTATUS (WINAPI *pNtReadVirtualMemory)(HANDLE, const void*, void*, SIZE_T, SIZE_T*); static NTSTATUS (WINAPI *pNtTerminateProcess)(HANDLE handle, LONG exit_code); static NTSTATUS (WINAPI *pNtQueryInformationProcess)(HANDLE, PROCESSINFOCLASS, PVOID, ULONG, PULONG); @@ -69,6 +70,7 @@ static BOOL (WINAPI *pInitializeContext2)(void *buffer, DWORD context_flags DWORD *length, ULONG64 compaction_mask); static void * (WINAPI *pLocateXStateFeature)(CONTEXT *context, DWORD feature_id, DWORD *length); static BOOL (WINAPI *pSetXStateFeaturesMask)(CONTEXT *context, DWORD64 feature_mask); +static BOOL (WINAPI *pGetXStateFeaturesMask)(CONTEXT *context, DWORD64 *feature_mask);
#define RTL_UNLOAD_EVENT_TRACE_NUMBER 64
@@ -6235,6 +6237,7 @@ static void test_extended_context(void) ULONG flags, flags_fpx; CONTEXT *context; unsigned data[8]; + ULONG64 mask; XSTATE *xs; BOOL bret; void *p; @@ -6364,14 +6367,29 @@ static void test_extended_context(void) if (0) { /* Crashes on Windows. */ + pGetXStateFeaturesMask(context, NULL); + pRtlGetExtendedFeaturesMask(context_ex); pRtlSetExtendedFeaturesMask(context_ex, 0); } + + flags_fpx = flags & 0x10000 ? flags | 0x20 : flags | 0x8; + + mask = 0xdeadbeef; + bret = pGetXStateFeaturesMask(context, &mask); + SetLastError(0xdeadbeef); + if (flags & CONTEXT_NATIVE) + ok(bret && mask == ((flags & flags_fpx) == flags_fpx ? 0x3 : 0), + "Got unexpected bret %#x, mask %s, flags %#x.\n", bret, wine_dbgstr_longlong(mask), flags); + else + ok(!bret && mask == 0xdeadbeef && GetLastError() == 0xdeadbeef, + "Got unexpected bret %#x, mask %s, GetLastError() %#x, flags %#x.\n", + bret, wine_dbgstr_longlong(mask), GetLastError(), flags); + bret = pSetXStateFeaturesMask(context, 0); ok(bret == !!(flags & CONTEXT_NATIVE), "Got unexpected bret %#x, flags %#x.\n", bret, flags); context_flags = *(DWORD *)(context_buffer + context_arch[test].flags_offset); ok(context_flags == flags, "Got unexpected ContextFlags %#x, flags %#x.\n", context_flags, flags);
- flags_fpx = flags & 0x10000 ? flags | 0x20 : flags | 0x8; bret = pSetXStateFeaturesMask(context, 1); ok(bret == !!(flags & CONTEXT_NATIVE), "Got unexpected bret %#x, flags %#x.\n", bret, flags); context_flags = *(DWORD *)(context_buffer + context_arch[test].flags_offset); @@ -6662,8 +6680,19 @@ static void test_extended_context(void) else ok(!p && length2 == 0xdeadbeef, "Got unexpected p %p, length %#x, flags %#x.\n", p, length2, flags);
+ mask = 0xdeadbeef; + bret = pGetXStateFeaturesMask(context, &mask); + if (flags & CONTEXT_NATIVE) + ok(bret && !mask, + "Got unexpected bret %#x, mask %s, flags %#x.\n", bret, wine_dbgstr_longlong(mask), flags); + else + ok(!bret && mask == 0xdeadbeef, + "Got unexpected bret %#x, mask %s, flags %#x.\n", bret, wine_dbgstr_longlong(mask), flags); + expected_compaction = compaction_enabled ? ((ULONG64)1 << 63) | enabled_features : 0; ok(!xs->Mask, "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); + mask = pRtlGetExtendedFeaturesMask(context_ex); + ok(mask == (xs->Mask & ~(ULONG64)3), "Got unexpected mask %s.\n", wine_dbgstr_longlong(mask)); ok(xs->CompactionMask == expected_compaction, "Got unexpected CompactionMask %s.\n", wine_dbgstr_longlong(xs->CompactionMask)); ok(!xs->Reserved[0], "Got unexpected Reserved[0] %s.\n", wine_dbgstr_longlong(xs->Reserved[0])); @@ -6672,6 +6701,8 @@ static void test_extended_context(void) xs->CompactionMask = 0xdeadbeef; pRtlSetExtendedFeaturesMask(context_ex, 0); ok(!xs->Mask, "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); + mask = pRtlGetExtendedFeaturesMask(context_ex); + ok(mask == (xs->Mask & ~(ULONG64)3), "Got unexpected mask %s.\n", wine_dbgstr_longlong(mask)); ok(xs->CompactionMask == 0xdeadbeef, "Got unexpected CompactionMask %s.\n", wine_dbgstr_longlong(xs->CompactionMask)); context_flags = *(DWORD *)(context_buffer + context_arch[test].flags_offset); ok(context_flags == flags, "Got unexpected ContextFlags %#x, flags %#x.\n", context->ContextFlags, flags); @@ -6680,6 +6711,8 @@ static void test_extended_context(void) xs->CompactionMask = 0; pRtlSetExtendedFeaturesMask(context_ex, ~(ULONG64)0); ok(xs->Mask == (enabled_features & ~(ULONG64)3), "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); + mask = pRtlGetExtendedFeaturesMask(context_ex); + ok(mask == (xs->Mask & ~(ULONG64)3), "Got unexpected mask %s.\n", wine_dbgstr_longlong(mask)); ok(!xs->CompactionMask, "Got unexpected CompactionMask %s.\n", wine_dbgstr_longlong(xs->CompactionMask)); context_flags = *(DWORD *)(context_buffer + context_arch[test].flags_offset); @@ -6693,9 +6726,20 @@ static void test_extended_context(void) ok(context_flags == (bret ? flags_fpx : flags), "Got unexpected ContextFlags %#x, flags %#x.\n", context_flags, flags); ok(xs->Mask == bret ? 4 : 0xdeadbeef, "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); + mask = pRtlGetExtendedFeaturesMask(context_ex); + ok(mask == (xs->Mask & ~(ULONG64)3), "Got unexpected mask %s.\n", wine_dbgstr_longlong(mask)); ok(xs->CompactionMask == bret ? expected_compaction : 0xdeadbeef, "Got unexpected CompactionMask %s.\n", wine_dbgstr_longlong(xs->CompactionMask));
+ mask = 0xdeadbeef; + bret = pGetXStateFeaturesMask(context, &mask); + if (flags & CONTEXT_NATIVE) + ok(bret && mask == enabled_features, + "Got unexpected bret %#x, mask %s, flags %#x.\n", bret, wine_dbgstr_longlong(mask), flags); + else + ok(!bret && mask == 0xdeadbeef, + "Got unexpected bret %#x, mask %s, flags %#x.\n", bret, wine_dbgstr_longlong(mask), flags); + if (pRtlGetExtendedContextLength2) { memset(context_buffer, 0xcc, sizeof(context_buffer)); @@ -6858,6 +6902,7 @@ START_TEST(exception) X(RtlLocateExtendedFeature); X(RtlLocateLegacyContext); X(RtlSetExtendedFeaturesMask); + X(RtlGetExtendedFeaturesMask); #undef X
#define X(f) p##f = (void*)GetProcAddress(hkernel32, #f) @@ -6868,6 +6913,7 @@ START_TEST(exception) X(InitializeContext2); X(LocateXStateFeature); X(SetXStateFeaturesMask); + X(GetXStateFeaturesMask); #undef X
if (pRtlAddVectoredExceptionHandler && pRtlRemoveVectoredExceptionHandler) diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index ffd8f7dcd4c..ed09ffcd924 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -1235,6 +1235,7 @@ @ stdcall RtlSetBits(ptr long long) @ stdcall RtlSetControlSecurityDescriptor(ptr long long) @ stdcall RtlSetDaclSecurityDescriptor(ptr long ptr long) +@ stdcall -ret64 RtlGetExtendedFeaturesMask(ptr) @ stdcall RtlSetExtendedFeaturesMask(ptr int64) @ stdcall RtlSetGroupSecurityDescriptor(ptr ptr long) @ stdcall RtlSetOwnerSecurityDescriptor(ptr ptr long) diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h index 3938645da94..60f926d7c5a 100644 --- a/include/ddk/wdm.h +++ b/include/ddk/wdm.h @@ -1845,6 +1845,7 @@ NTSTATUS WINAPI RtlGetExtendedContextLength2(ULONG,ULONG*,ULONG64); void * WINAPI RtlLocateLegacyContext(CONTEXT_EX*,ULONG*); void * WINAPI RtlLocateExtendedFeature(CONTEXT_EX*,ULONG,ULONG*); void * WINAPI RtlLocateExtendedFeature2(CONTEXT_EX*,ULONG,XSTATE_CONFIGURATION*,ULONG*); +ULONG64 WINAPI RtlGetExtendedFeaturesMask(CONTEXT_EX*); void WINAPI RtlSetExtendedFeaturesMask(CONTEXT_EX*,ULONG64); #endif
diff --git a/include/winbase.h b/include/winbase.h index f741f0a09dc..1c29db367c2 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -2337,6 +2337,7 @@ WINBASEAPI UINT WINAPI GetWindowsDirectoryA(LPSTR,UINT); WINBASEAPI UINT WINAPI GetWindowsDirectoryW(LPWSTR,UINT); #define GetWindowsDirectory WINELIB_NAME_AW(GetWindowsDirectory) WINBASEAPI UINT WINAPI GetWriteWatch(DWORD,LPVOID,SIZE_T,LPVOID*,ULONG_PTR*,ULONG*); +WINBASEAPI BOOL WINAPI GetXStateFeaturesMask(CONTEXT*,DWORD64*); WINBASEAPI ATOM WINAPI GlobalAddAtomA(LPCSTR); WINBASEAPI ATOM WINAPI GlobalAddAtomW(LPCWSTR); #define GlobalAddAtom WINELIB_NAME_AW(GlobalAddAtom)
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=77832
Your paranoid android.
=== debiant (32 bit report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fa90 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 136b0 / 1361e loader.c:3946: Test failed: ntdll.dll:5: wrong OptionalHeader.DataDirectory[i].Size 3b54 / 3b4c loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 8 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
=== debiant (32 bit Chinese:China report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fa90 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 136b0 / 1361e loader.c:3946: Test failed: ntdll.dll:5: wrong OptionalHeader.DataDirectory[i].Size 3b54 / 3b4c loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 8 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
=== debiant (32 bit WoW report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fa90 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 136b0 / 1361e loader.c:3946: Test failed: ntdll.dll:5: wrong OptionalHeader.DataDirectory[i].Size 3b54 / 3b4c loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 8 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
=== debiant (64 bit WoW report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fa90 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 136b0 / 1361e loader.c:3946: Test failed: ntdll.dll:5: wrong OptionalHeader.DataDirectory[i].Size 3b54 / 3b4c loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 8 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
Signed-off-by: Paul Gofman pgofman@codeweavers.com --- .../api-ms-win-core-xstate-l1-1-0.spec | 2 +- .../api-ms-win-core-xstate-l2-1-0.spec | 2 +- dlls/kernel32/kernel32.spec | 2 +- dlls/kernelbase/kernelbase.spec | 2 +- dlls/kernelbase/memory.c | 56 +++ dlls/ntdll/exception.c | 85 +++- dlls/ntdll/ntdll.spec | 1 + dlls/ntdll/tests/exception.c | 365 ++++++++++++++++++ dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 1 + include/ddk/wdm.h | 1 + include/winbase.h | 1 + 11 files changed, 512 insertions(+), 6 deletions(-)
diff --git a/dlls/api-ms-win-core-xstate-l1-1-0/api-ms-win-core-xstate-l1-1-0.spec b/dlls/api-ms-win-core-xstate-l1-1-0/api-ms-win-core-xstate-l1-1-0.spec index 4abed7d3252..bfb2f68aa40 100644 --- a/dlls/api-ms-win-core-xstate-l1-1-0/api-ms-win-core-xstate-l1-1-0.spec +++ b/dlls/api-ms-win-core-xstate-l1-1-0/api-ms-win-core-xstate-l1-1-0.spec @@ -1,4 +1,4 @@ -@ stub RtlCopyExtendedContext +@ stdcall RtlCopyExtendedContext(ptr long ptr) ntdll.RtlCopyExtendedContext @ stdcall RtlGetEnabledExtendedFeatures(int64) ntdll.RtlGetEnabledExtendedFeatures @ stdcall RtlGetExtendedContextLength(long ptr) ntdll.RtlGetExtendedContextLength @ stdcall RtlGetExtendedFeaturesMask(ptr) ntdll.RtlGetExtendedFeaturesMask diff --git a/dlls/api-ms-win-core-xstate-l2-1-0/api-ms-win-core-xstate-l2-1-0.spec b/dlls/api-ms-win-core-xstate-l2-1-0/api-ms-win-core-xstate-l2-1-0.spec index 9c804b28864..a0baac7d4c7 100644 --- a/dlls/api-ms-win-core-xstate-l2-1-0/api-ms-win-core-xstate-l2-1-0.spec +++ b/dlls/api-ms-win-core-xstate-l2-1-0/api-ms-win-core-xstate-l2-1-0.spec @@ -1,4 +1,4 @@ -@ stub CopyContext +@ stdcall -arch=i386,x86_64 CopyContext(ptr long ptr) kernel32.CopyContext @ stdcall -ret64 -arch=i386,x86_64 GetEnabledXStateFeatures() kernel32.GetEnabledXStateFeatures @ stdcall -arch=i386,x86_64 GetXStateFeaturesMask(ptr ptr) kernel32.GetXStateFeaturesMask @ stdcall -arch=i386,x86_64 InitializeContext(ptr long ptr ptr) kernel32.InitializeContext diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index d357d32c23e..38eb1d5ece7 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -256,7 +256,7 @@ @ stdcall -import ConvertThreadToFiber(ptr) @ stdcall -import ConvertThreadToFiberEx(ptr long) @ stdcall ConvertToGlobalHandle(long) -# @ stub CopyContext +@ stdcall -import -arch=i386,x86_64 CopyContext(ptr long ptr) @ stdcall CopyFileA(str str long) @ stdcall CopyFileExA (str str ptr ptr ptr long) @ stdcall -import CopyFileExW(wstr wstr ptr ptr ptr long) diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index e8e974d9c15..a794e33faf3 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -165,7 +165,7 @@ @ stdcall ConvertThreadToFiber(ptr) @ stdcall ConvertThreadToFiberEx(ptr long) @ stdcall ConvertToAutoInheritPrivateObjectSecurity(ptr ptr ptr ptr long ptr) -# @ stub CopyContext +@ stdcall -arch=i386,x86_64 CopyContext(ptr long ptr) # @ stub CopyFile2 @ stdcall CopyFileExW(wstr wstr ptr ptr ptr long) @ stdcall CopyFileW(wstr wstr long) diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c index 38aa2c78410..4ead38f2bc0 100644 --- a/dlls/kernelbase/memory.c +++ b/dlls/kernelbase/memory.c @@ -1233,6 +1233,62 @@ BOOL WINAPI InitializeContext( void *buffer, DWORD context_flags, CONTEXT **cont { return InitializeContext2( buffer, context_flags, context, length, ~(ULONG64)0 ); } + +/*********************************************************************** + * CopyContext (kernelbase.@) + */ +BOOL WINAPI CopyContext( CONTEXT *dst, DWORD context_flags, CONTEXT *src ) +{ + DWORD context_size, arch_flag, flags_offset, dst_flags, src_flags; + static const DWORD arch_mask = 0x110000; + NTSTATUS status; + BYTE *d, *s; + + TRACE("dst %p, context_flags %#x, src %p.\n", dst, context_flags, src); + + if (context_flags & 0x40 && !RtlGetEnabledExtendedFeatures( ~(ULONG64)0 )) + { + SetLastError(ERROR_NOT_SUPPORTED); + return FALSE; + } + + arch_flag = context_flags & arch_mask; + + switch (arch_flag) + { + case 0x10000: context_size = 0x2cc; flags_offset = 0; break; + case 0x100000: context_size = 0x4d0; flags_offset = 0x30; break; + default: + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; + } + + d = (BYTE *)dst; + s = (BYTE *)src; + dst_flags = *(DWORD *)(d + flags_offset); + src_flags = *(DWORD *)(s + flags_offset); + + if ((dst_flags & arch_mask) != arch_flag + || (src_flags & arch_mask) != arch_flag) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; + } + + context_flags &= src_flags; + + if (context_flags & ~dst_flags & 0x40) + { + SetLastError(ERROR_MORE_DATA); + return FALSE; + } + + if ((status = RtlCopyExtendedContext( (CONTEXT_EX *)(d + context_size), context_flags, + (CONTEXT_EX *)(s + context_size) ))) + return set_ntstatus( status ); + + return TRUE; +} #endif
diff --git a/dlls/ntdll/exception.c b/dlls/ntdll/exception.c index e022e2c2cd1..17bbb26f9e8 100644 --- a/dlls/ntdll/exception.c +++ b/dlls/ntdll/exception.c @@ -666,6 +666,24 @@ ULONG64 WINAPI RtlGetEnabledExtendedFeatures(ULONG64 feature_mask) return user_shared_data->XState.EnabledFeatures & feature_mask; }
+struct context_copy_range +{ + ULONG start; + ULONG flag; +}; + +static const struct context_copy_range copy_ranges_amd64[] = +{ + {0x38, 0x1}, {0x3a, 0x4}, { 0x42, 0x1}, { 0x48, 0x10}, { 0x78, 0x2}, { 0x98, 0x1}, + {0xa0, 0x2}, {0xf8, 0x1}, {0x100, 0x8}, {0x2a0, 0}, {0x4b0, 0x10}, {0x4d0, 0} +}; + +static const struct context_copy_range copy_ranges_x86[] = +{ + { 0x4, 0x10}, {0x1c, 0x8}, {0x8c, 0x4}, {0x9c, 0x2}, {0xb4, 0x1}, {0xcc, 0x20}, {0x1ec, 0}, + {0x2cc, 0}, +}; + static const struct context_parameters { ULONG arch_flag; @@ -676,11 +694,12 @@ static const struct context_parameters ULONG alignment; /* Used when computing size of context. */ ULONG true_alignment; /* Used for actual alignment. */ ULONG flags_offset; + const struct context_copy_range *copy_ranges; } arch_context_paramaters[] = { - {0x00100000, 0xd810005f, 0x4d0, 0x4d0, 0x20, 7, 0xf, 0x30}, - {0x00010000, 0xd801007f, 0x2cc, 0xcc, 0x18, 3, 0x3, 0}, + {0x00100000, 0xd810005f, 0x4d0, 0x4d0, 0x20, 7, 0xf, 0x30, copy_ranges_amd64}, + {0x00010000, 0xd801007f, 0x2cc, 0xcc, 0x18, 3, 0x3, 0, copy_ranges_x86}, };
static const struct context_parameters *context_get_parameters( ULONG context_flags ) @@ -882,3 +901,65 @@ ULONG64 WINAPI RtlGetExtendedFeaturesMask( CONTEXT_EX *context_ex )
return xs->Mask & ~(ULONG64)3; } + + +/********************************************************************** + * RtlCopyExtendedContext (NTDLL.@) + */ +NTSTATUS WINAPI RtlCopyExtendedContext( CONTEXT_EX *dst, ULONG context_flags, CONTEXT_EX *src ) +{ + const struct context_copy_range *range; + const struct context_parameters *p; + XSTATE *dst_xs, *src_xs; + ULONG64 feature_mask; + unsigned int start; + BYTE *d, *s; + + TRACE( "dst %p, context_flags %#x, src %p.\n", dst, context_flags, src ); + + if (!(p = context_get_parameters( context_flags ))) + return STATUS_INVALID_PARAMETER; + + if (!(feature_mask = RtlGetEnabledExtendedFeatures( ~(ULONG64)0 )) && context_flags & 0x40) + return STATUS_NOT_SUPPORTED; + + d = RtlLocateLegacyContext( dst, NULL ); + s = RtlLocateLegacyContext( src, NULL ); + + *((ULONG *)(d + p->flags_offset)) |= context_flags; + + start = 0; + range = p->copy_ranges; + do + { + if (range->flag & context_flags) + { + if (!start) + start = range->start; + } + else if (start) + { + memcpy( d + start, s + start, range->start - start ); + start = 0; + } + } + while (range++->start != p->context_size); + + if (!(context_flags & 0x40)) + return STATUS_SUCCESS; + + if (dst->XState.Length < offsetof(XSTATE, YmmContext)) + return STATUS_BUFFER_OVERFLOW; + + dst_xs = (XSTATE *)((BYTE *)dst + dst->XState.Offset); + src_xs = (XSTATE *)((BYTE *)src + src->XState.Offset); + + memset(dst_xs, 0, offsetof(XSTATE, YmmContext)); + dst_xs->Mask = (src_xs->Mask & ~(ULONG64)3) & feature_mask; + dst_xs->CompactionMask = user_shared_data->XState.CompactionEnabled + ? ((ULONG64)1 << 63) | (src_xs->CompactionMask & feature_mask) : 0; + + if (dst_xs->Mask & 4 && src->XState.Length >= sizeof(XSTATE) && dst->XState.Length >= sizeof(XSTATE)) + memcpy( &dst_xs->YmmContext, &src_xs->YmmContext, sizeof(dst_xs->YmmContext) ); + return STATUS_SUCCESS; +} diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index c7083e0299c..9aa20034fa4 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -525,6 +525,7 @@ @ stub RtlConvertUiListToApiList @ stdcall -arch=win32 -ret64 RtlConvertUlongToLargeInteger(long) # @ stub RtlConvertVariantToProperty +@ stdcall RtlCopyExtendedContext(ptr long ptr) @ stdcall RtlCopyLuid(ptr ptr) @ stdcall RtlCopyLuidAndAttributesArray(long ptr ptr) @ stdcall -arch=x86_64 RtlCopyMemory(ptr ptr long) diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c index 5d0857476ea..301b86e8d3c 100644 --- a/dlls/ntdll/tests/exception.c +++ b/dlls/ntdll/tests/exception.c @@ -51,6 +51,7 @@ static NTSTATUS (WINAPI *pRtlGetExtendedContextLength2)(ULONG context_flags, UL static NTSTATUS (WINAPI *pRtlInitializeExtendedContext)(void *context, ULONG context_flags, CONTEXT_EX **context_ex); static NTSTATUS (WINAPI *pRtlInitializeExtendedContext2)(void *context, ULONG context_flags, CONTEXT_EX **context_ex, ULONG64 compaction_mask); +static NTSTATUS (WINAPI *pRtlCopyExtendedContext)(CONTEXT_EX *dst, ULONG context_flags, CONTEXT_EX *src); static void * (WINAPI *pRtlLocateExtendedFeature)(CONTEXT_EX *context_ex, ULONG feature_id, ULONG *length); static void * (WINAPI *pRtlLocateLegacyContext)(CONTEXT_EX *context_ex, ULONG *length); static void (WINAPI *pRtlSetExtendedFeaturesMask)(CONTEXT_EX *context_ex, ULONG64 feature_mask); @@ -71,6 +72,7 @@ static BOOL (WINAPI *pInitializeContext2)(void *buffer, DWORD context_flags static void * (WINAPI *pLocateXStateFeature)(CONTEXT *context, DWORD feature_id, DWORD *length); static BOOL (WINAPI *pSetXStateFeaturesMask)(CONTEXT *context, DWORD64 feature_mask); static BOOL (WINAPI *pGetXStateFeaturesMask)(CONTEXT *context, DWORD64 *feature_mask); +static BOOL (WINAPI *pCopyContext)(CONTEXT *dst, DWORD context_flags, CONTEXT *src);
#define RTL_UNLOAD_EVENT_TRACE_NUMBER 64
@@ -6849,6 +6851,365 @@ static void test_extended_context(void) for (i = 0; i < 8; ++i) ok(data[i] == test_extended_context_data[i], "Got unexpected data %#x, i %u.\n", data[i], i); } + +struct modified_range +{ + ULONG start; + ULONG flag; +}; + +#define check_changes_in_range(a, b, c, d) check_changes_in_range_(__FILE__, __LINE__, a, b, c, d) +static void check_changes_in_range_(const char *file, unsigned int line, const BYTE *p, + const struct modified_range *range, ULONG flags, unsigned int length) +{ + ULONG range_flag, flag; + unsigned int once = 0; + unsigned int i; + + range_flag = 0; + for (i = 0; i < length; i++) + { + if (i == range->start) + { + range_flag = range->flag; + ++range; + } + + if ((flag = range_flag) == ~0) + continue; + + if (flag & 0x80000000) + { + if (flag & flags && p[i] == 0xcc) + { + if (!once++) + ok(broken(1), "Matched broken result at %#x, flags %#x.\n", i, flags); + continue; + } + flag = 0; + } + + if (flag & flags && p[i] != 0xcc) + { + ok_(file, line)(0, "Got unexected byte %#x at %#x, flags %#x.\n", p[i], i, flags); + return; + } + else if (!(flag & flags) && p[i] != 0xdd) + { + ok_(file, line)(0, "Got unexected byte %#x at %#x, flags %#x.\n", p[i], i, flags); + return; + } + } + ok_(file, line)(1, "Range matches.\n"); +} + +static void test_copy_context(void) +{ + static const struct modified_range ranges_amd64[] = + { + {0x30, ~0}, {0x38, 0x1}, {0x3a, 0x4}, {0x42, 0x1}, {0x48, 0x10}, {0x78, 0x2}, {0x98, 0x1}, + {0xa0, 0x2}, {0xf8, 0x1}, {0x100, 0x8}, {0x2a0, 0x80000008}, {0x4b0, 0x10}, {0x4d0, ~0}, + {0x4e8, 0}, {0x500, ~0}, {0x640, 0}, {0x1000, 0}, + }; + static const struct modified_range ranges_x86[] = + { + {0x0, ~0}, {0x4, 0x10}, {0x1c, 0x8}, {0x8c, 0x4}, {0x9c, 0x2}, {0xb4, 0x1}, {0xcc, 0x20}, {0x1ec, 0x80000020}, + {0x2cc, ~0}, {0x294, 0}, {0x1000, 0}, + }; + static const struct modified_range single_range[] = + { + {0x0, 0x1}, {0x1000, 0}, + }; + + static const struct + { + ULONG flags; + } + tests[] = + { + /* AMD64 */ + {0x100000 | 0x01}, /* CONTEXT_CONTROL */ + {0x100000 | 0x02}, /* CONTEXT_INTEGER */ + {0x100000 | 0x04}, /* CONTEXT_SEGMENTS */ + {0x100000 | 0x08}, /* CONTEXT_FLOATING_POINT */ + {0x100000 | 0x10}, /* CONTEXT_DEBUG_REGISTERS */ + {0x100000 | 0x0b}, /* CONTEXT_FULL */ + {0x100000 | 0x40}, /* CONTEXT_XSTATE */ + {0x100000 | 0x1f}, /* CONTEXT_ALL */ + /* X86 */ + { 0x10000 | 0x01}, /* CONTEXT_CONTROL */ + { 0x10000 | 0x02}, /* CONTEXT_INTEGER */ + { 0x10000 | 0x04}, /* CONTEXT_SEGMENTS */ + { 0x10000 | 0x08}, /* CONTEXT_FLOATING_POINT */ + { 0x10000 | 0x10}, /* CONTEXT_DEBUG_REGISTERS */ + { 0x10000 | 0x20}, /* CONTEXT_EXTENDED_REGISTERS */ + { 0x10000 | 0x40}, /* CONTEXT_XSTATE */ + { 0x10000 | 0x3f}, /* CONTEXT_ALL */ + }; + static const ULONG arch_flags[] = {0x100000, 0x10000}; + + DECLSPEC_ALIGN(64) BYTE src_context_buffer[4096]; + DECLSPEC_ALIGN(64) BYTE dst_context_buffer[4096]; + ULONG64 enabled_features, expected_compaction; + unsigned int context_length, flags_offset, i; + CONTEXT_EX *src_ex, *dst_ex; + XSTATE *dst_xs, *src_xs; + BOOL compaction, bret; + CONTEXT *src, *dst; + NTSTATUS status; + DWORD length; + ULONG flags; + + if (!pRtlCopyExtendedContext) + { + win_skip("RtlCopyExtendedContext is not available.\n"); + return; + } + + if (!pRtlGetEnabledExtendedFeatures) + { + skip("RtlGetEnabledExtendedFeatures is not available.\n"); + return; + } + + enabled_features = pRtlGetEnabledExtendedFeatures(~(ULONG64)0); + + for (i = 0; i < ARRAY_SIZE(tests); ++i) + { + flags = tests[i].flags; + flags_offset = (flags & 0x100000) ? 0x30 : 0; + + memset(dst_context_buffer, 0xdd, sizeof(dst_context_buffer)); + memset(src_context_buffer, 0xcc, sizeof(src_context_buffer)); + + status = pRtlInitializeExtendedContext(src_context_buffer, flags, &src_ex); + if (enabled_features || !(flags & 0x40)) + { + ok(!status, "Got unexpected status %#x, flags %#x.\n", status, flags); + } + else + { + ok(status == STATUS_NOT_SUPPORTED, "Got unexpected status %#x, flags %#x.\n", status, flags); + continue; + } + status = pRtlInitializeExtendedContext(dst_context_buffer, flags, &dst_ex); + ok(!status, "Got unexpected status %#x, flags %#x.\n", status, flags); + + src = pRtlLocateLegacyContext(src_ex, NULL); + dst = pRtlLocateLegacyContext(dst_ex, NULL); + + *(DWORD *)((BYTE *)dst + flags_offset) = 0; + *(DWORD *)((BYTE *)src + flags_offset) = 0; + + src_xs = (XSTATE *)((BYTE *)src_ex + src_ex->XState.Offset); + memset(src_xs, 0xcc, sizeof(XSTATE)); + src_xs->Mask = 3; + src_xs->CompactionMask = ~(ULONG64)0; + + status = pRtlCopyExtendedContext(dst_ex, flags, src_ex); + ok(!status, "Got unexpected status %#x, flags %#x.\n", status, flags); + + context_length = (BYTE *)dst_ex - (BYTE *)dst + dst_ex->All.Length; + check_changes_in_range((BYTE *)dst, flags & 0x100000 ? &ranges_amd64[0] : &ranges_x86[0], + flags, context_length); + + ok(*(DWORD *)((BYTE *)dst + flags_offset) == flags, "Got unexpected ContextFlags %#x, flags %#x.\n", + *(DWORD *)((BYTE *)dst + flags_offset), flags); + + memset(dst_context_buffer, 0xdd, sizeof(dst_context_buffer)); + status = pRtlInitializeExtendedContext(dst_context_buffer, flags, &dst_ex); + ok(!status, "Got unexpected status %#x, flags %#x.\n", status, flags); + *(DWORD *)((BYTE *)src + flags_offset) = 0; + *(DWORD *)((BYTE *)dst + flags_offset) = 0; + SetLastError(0xdeadbeef); + bret = pCopyContext(dst, flags | 0x40, src); + ok((!bret && GetLastError() == (enabled_features ? ERROR_INVALID_PARAMETER : ERROR_NOT_SUPPORTED)) + || broken(!bret && GetLastError() == ERROR_INVALID_PARAMETER), + "Got unexpected bret %#x, GetLastError() %#x, flags %#x.\n", + bret, GetLastError(), flags); + ok(*(DWORD *)((BYTE *)dst + flags_offset) == 0, "Got unexpected ContextFlags %#x, flags %#x.\n", + *(DWORD *)((BYTE *)dst + flags_offset), flags); + check_changes_in_range((BYTE *)dst, flags & 0x100000 ? &ranges_amd64[0] : &ranges_x86[0], + 0, context_length); + + *(DWORD *)((BYTE *)dst + flags_offset) = flags & 0x110000; + *(DWORD *)((BYTE *)src + flags_offset) = flags; + SetLastError(0xdeadbeef); + bret = pCopyContext(dst, flags, src); + if (flags & 0x40) + ok((!bret && GetLastError() == ERROR_MORE_DATA) + || broken(!(flags & CONTEXT_NATIVE) && !bret && GetLastError() == ERROR_INVALID_PARAMETER), + "Got unexpected bret %#x, GetLastError() %#x, flags %#x.\n", + bret, GetLastError(), flags); + else + ok((bret && GetLastError() == 0xdeadbeef) + || broken(!(flags & CONTEXT_NATIVE) && !bret && GetLastError() == ERROR_INVALID_PARAMETER), + "Got unexpected bret %#x, GetLastError() %#x, flags %#x.\n", + bret, GetLastError(), flags); + if (bret) + { + ok(*(DWORD *)((BYTE *)dst + flags_offset) == flags, "Got unexpected ContextFlags %#x, flags %#x.\n", + *(DWORD *)((BYTE *)dst + flags_offset), flags); + check_changes_in_range((BYTE *)dst, flags & 0x100000 ? &ranges_amd64[0] : &ranges_x86[0], + flags, context_length); + } + else + { + ok(*(DWORD *)((BYTE *)dst + flags_offset) == (flags & 0x110000), + "Got unexpected ContextFlags %#x, flags %#x.\n", + *(DWORD *)((BYTE *)dst + flags_offset), flags); + check_changes_in_range((BYTE *)dst, flags & 0x100000 ? &ranges_amd64[0] : &ranges_x86[0], + 0, context_length); + } + } + + for (i = 0; i < ARRAY_SIZE(arch_flags); ++i) + { + flags = arch_flags[i] | 0x42; + flags_offset = (flags & 0x100000) ? 0x30 : 0; + context_length = (flags & 0x100000) ? 0x4d0 : 0x2cc; + + memset(dst_context_buffer, 0xdd, sizeof(dst_context_buffer)); + memset(src_context_buffer, 0xcc, sizeof(src_context_buffer)); + length = sizeof(src_context_buffer); + bret = pInitializeContext(src_context_buffer, flags, &src, &length); + ok(bret, "Got unexpected bret %#x, flags %#x.\n", bret, flags); + + length = sizeof(dst_context_buffer); + bret = pInitializeContext(dst_context_buffer, flags, &dst, &length); + ok(bret, "Got unexpected bret %#x, flags %#x.\n", bret, flags); + + dst_ex = (CONTEXT_EX *)((BYTE *)dst + context_length); + src_ex = (CONTEXT_EX *)((BYTE *)src + context_length); + + dst_xs = (XSTATE *)((BYTE *)dst_ex + dst_ex->XState.Offset); + src_xs = (XSTATE *)((BYTE *)src_ex + src_ex->XState.Offset); + + *(DWORD *)((BYTE *)dst + flags_offset) = 0; + *(DWORD *)((BYTE *)src + flags_offset) = 0; + + compaction = !!(src_xs->CompactionMask & ((ULONG64)1 << 63)); + expected_compaction = (compaction ? ((ULONG64)1 << (ULONG64)63) | enabled_features : 0); + + memset(&src_xs->YmmContext, 0xcc, sizeof(src_xs->YmmContext)); + src_xs->CompactionMask = ~(ULONG64)0; + + src_xs->Mask = 0; + memset(&dst_xs->YmmContext, 0xdd, sizeof(dst_xs->YmmContext)); + dst_xs->CompactionMask = 0xdddddddddddddddd; + dst_xs->Mask = 0xdddddddddddddddd; + dst_ex->XState.Length = 0; + status = pRtlCopyExtendedContext(dst_ex, flags, src_ex); + ok(status == (enabled_features ? STATUS_BUFFER_OVERFLOW : STATUS_NOT_SUPPORTED), + "Got unexpected status %#x, flags %#x.\n", status, flags); + + if (!enabled_features) + continue; + + ok(*(DWORD *)((BYTE *)dst + flags_offset) == flags, "Got unexpected ContextFlags %#x, flags %#x.\n", + *(DWORD *)((BYTE *)dst + flags_offset), flags); + + src_xs->Mask = ~(ULONG64)0; + + memset(&dst_xs->YmmContext, 0xdd, sizeof(dst_xs->YmmContext)); + dst_xs->CompactionMask = 0xdddddddddddddddd; + dst_xs->Mask = 0xdddddddddddddddd; + dst_ex->XState.Length = 0; + status = pRtlCopyExtendedContext(dst_ex, flags, src_ex); + ok(status == STATUS_BUFFER_OVERFLOW, "Got unexpected status %#x, flags %#x.\n", status, flags); + ok(*(DWORD *)((BYTE *)dst + flags_offset) == flags, "Got unexpected ContextFlags %#x, flags %#x.\n", + *(DWORD *)((BYTE *)dst + flags_offset), flags); + + ok(dst_xs->Mask == 0xdddddddddddddddd, "Got unexpected Mask %s.\n", + wine_dbgstr_longlong(dst_xs->Mask)); + ok(dst_xs->CompactionMask == 0xdddddddddddddddd, "Got unexpected CompactionMask %s.\n", + wine_dbgstr_longlong(dst_xs->CompactionMask)); + check_changes_in_range((BYTE *)&dst_xs->YmmContext, single_range, 0, sizeof(dst_xs->YmmContext)); + + src_xs->Mask = 3; + memset(&dst_xs->YmmContext, 0xdd, sizeof(dst_xs->YmmContext)); + dst_xs->CompactionMask = 0xdddddddddddddddd; + dst_xs->Mask = 0xdddddddddddddddd; + dst_ex->XState.Length = offsetof(XSTATE, YmmContext); + status = pRtlCopyExtendedContext(dst_ex, flags, src_ex); + ok(!status, "Got unexpected status %#x, flags %#x.\n", status, flags); + ok(*(DWORD *)((BYTE *)dst + flags_offset) == flags, "Got unexpected ContextFlags %#x, flags %#x.\n", + *(DWORD *)((BYTE *)dst + flags_offset), flags); + ok(dst_xs->Mask == 0, "Got unexpected Mask %s.\n", + wine_dbgstr_longlong(dst_xs->Mask)); + ok(dst_xs->CompactionMask == expected_compaction, + "Got unexpected CompactionMask %s.\n", wine_dbgstr_longlong(dst_xs->CompactionMask)); + check_changes_in_range((BYTE *)&dst_xs->YmmContext, single_range, 0, sizeof(dst_xs->YmmContext)); + + memset(&dst_xs->YmmContext, 0xdd, sizeof(dst_xs->YmmContext)); + dst_xs->CompactionMask = 0xdddddddddddddddd; + dst_xs->Mask = 0xdddddddddddddddd; + dst_ex->XState.Length = sizeof(XSTATE); + status = pRtlCopyExtendedContext(dst_ex, flags, src_ex); + ok(!status, "Got unexpected status %#x, flags %#x.\n", status, flags); + ok(dst_xs->Mask == 0, "Got unexpected Mask %s.\n", + wine_dbgstr_longlong(dst_xs->Mask)); + ok(dst_xs->CompactionMask == expected_compaction, + "Got unexpected CompactionMask %s.\n", wine_dbgstr_longlong(dst_xs->CompactionMask)); + check_changes_in_range((BYTE *)&dst_xs->YmmContext, single_range, 0, sizeof(dst_xs->YmmContext)); + + src_xs->Mask = 4; + memset(&dst_xs->YmmContext, 0xdd, sizeof(dst_xs->YmmContext)); + dst_xs->CompactionMask = 0xdddddddddddddddd; + dst_xs->Mask = 0xdddddddddddddddd; + status = pRtlCopyExtendedContext(dst_ex, flags, src_ex); + ok(!status, "Got unexpected status %#x, flags %#x.\n", status, flags); + ok(dst_xs->Mask == 4, "Got unexpected Mask %s.\n", + wine_dbgstr_longlong(dst_xs->Mask)); + ok(dst_xs->CompactionMask == expected_compaction, + "Got unexpected CompactionMask %s.\n", wine_dbgstr_longlong(dst_xs->CompactionMask)); + check_changes_in_range((BYTE *)&dst_xs->YmmContext, single_range, 1, sizeof(dst_xs->YmmContext)); + + src_xs->Mask = 3; + memset(&dst_xs->YmmContext, 0xdd, sizeof(dst_xs->YmmContext)); + dst_xs->CompactionMask = 0xdddddddddddddddd; + dst_xs->Mask = 0xdddddddddddddddd; + status = pRtlCopyExtendedContext(dst_ex, flags, src_ex); + ok(!status, "Got unexpected status %#x, flags %#x.\n", status, flags); + ok(dst_xs->Mask == 0, "Got unexpected Mask %s.\n", + wine_dbgstr_longlong(dst_xs->Mask)); + ok(dst_xs->CompactionMask == expected_compaction, + "Got unexpected CompactionMask %s.\n", wine_dbgstr_longlong(dst_xs->CompactionMask)); + check_changes_in_range((BYTE *)&dst_xs->YmmContext, single_range, 0, sizeof(dst_xs->YmmContext)); + + + *(DWORD *)((BYTE *)src + flags_offset) = arch_flags[i]; + + src_xs->Mask = 7; + memset(&dst_xs->YmmContext, 0xdd, sizeof(dst_xs->YmmContext)); + dst_xs->CompactionMask = 0xdddddddddddddddd; + dst_xs->Mask = 0xdddddddddddddddd; + status = pRtlCopyExtendedContext(dst_ex, flags, src_ex); + ok(!status, "Got unexpected status %#x, flags %#x.\n", status, flags); + ok(dst_xs->Mask == 4, "Got unexpected Mask %s.\n", + wine_dbgstr_longlong(dst_xs->Mask)); + ok(dst_xs->CompactionMask == expected_compaction, + "Got unexpected CompactionMask %s.\n", wine_dbgstr_longlong(dst_xs->CompactionMask)); + check_changes_in_range((BYTE *)&dst_xs->YmmContext, single_range, 1, sizeof(dst_xs->YmmContext)); + + src_xs->Mask = 7; + memset(&dst_xs->YmmContext, 0xdd, sizeof(dst_xs->YmmContext)); + dst_xs->CompactionMask = 0xdddddddddddddddd; + dst_xs->Mask = 0xdddddddddddddddd; + SetLastError(0xdeadbeef); + bret = pCopyContext(dst, flags, src); + ok((bret && GetLastError() == 0xdeadbeef) + || broken(!(flags & CONTEXT_NATIVE) && !bret && GetLastError() == ERROR_INVALID_PARAMETER), + "Got unexpected bret %#x, GetLastError() %#x, flags %#x.\n", + bret, GetLastError(), flags); + ok(dst_xs->Mask == 0xdddddddddddddddd || broken(dst_xs->Mask == 4), "Got unexpected Mask %s, flags %#x.\n", + wine_dbgstr_longlong(dst_xs->Mask), flags); + ok(dst_xs->CompactionMask == 0xdddddddddddddddd || broken(dst_xs->CompactionMask == expected_compaction), + "Got unexpected CompactionMask %s, flags %#x.\n", wine_dbgstr_longlong(dst_xs->CompactionMask), flags); + check_changes_in_range((BYTE *)&dst_xs->YmmContext, single_range, + dst_xs->Mask == 4, sizeof(dst_xs->YmmContext)); + } +} #endif
START_TEST(exception) @@ -6903,6 +7264,7 @@ START_TEST(exception) X(RtlLocateLegacyContext); X(RtlSetExtendedFeaturesMask); X(RtlGetExtendedFeaturesMask); + X(RtlCopyExtendedContext); #undef X
#define X(f) p##f = (void*)GetProcAddress(hkernel32, #f) @@ -6914,6 +7276,7 @@ START_TEST(exception) X(LocateXStateFeature); X(SetXStateFeaturesMask); X(GetXStateFeaturesMask); + X(CopyContext); #undef X
if (pRtlAddVectoredExceptionHandler && pRtlRemoveVectoredExceptionHandler) @@ -6994,6 +7357,7 @@ START_TEST(exception) test_prot_fault(); test_kiuserexceptiondispatcher(); test_extended_context(); + test_copy_context();
#elif defined(__x86_64__)
@@ -7033,6 +7397,7 @@ START_TEST(exception) else skip( "Dynamic unwind functions not found\n" ); test_extended_context(); + test_copy_context();
#elif defined(__aarch64__)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index ed09ffcd924..8892fde5054 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -1010,6 +1010,7 @@ @ stdcall -arch=win32 -ret64 RtlConvertLongToLargeInteger(long) @ stdcall RtlConvertSidToUnicodeString(ptr ptr long) @ stdcall -arch=win32 -ret64 RtlConvertUlongToLargeInteger(long) +@ stdcall RtlCopyExtendedContext(ptr long ptr) @ stdcall RtlCopyLuid(ptr ptr) @ stdcall RtlCopyLuidAndAttributesArray(long ptr ptr) @ stdcall -arch=x86_64 RtlCopyMemory(ptr ptr long) diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h index 60f926d7c5a..6885de1cf89 100644 --- a/include/ddk/wdm.h +++ b/include/ddk/wdm.h @@ -1837,6 +1837,7 @@ BOOLEAN WINAPI PsGetVersion(ULONG*,ULONG*,ULONG*,UNICODE_STRING*); NTSTATUS WINAPI PsTerminateSystemThread(NTSTATUS);
#if defined(__x86_64__) || defined(__i386__) +NTSTATUS WINAPI RtlCopyExtendedContext(CONTEXT_EX*,ULONG,CONTEXT_EX*); NTSTATUS WINAPI RtlInitializeExtendedContext(void*,ULONG,CONTEXT_EX**); NTSTATUS WINAPI RtlInitializeExtendedContext2(void*,ULONG,CONTEXT_EX**,ULONG64); ULONG64 WINAPI RtlGetEnabledExtendedFeatures(ULONG64); diff --git a/include/winbase.h b/include/winbase.h index 1c29db367c2..ab3155eb1e1 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -1827,6 +1827,7 @@ WINBASEAPI BOOL WINAPI CommConfigDialogW(LPCWSTR,HWND,LPCOMMCONFIG); WINBASEAPI BOOL WINAPI ConnectNamedPipe(HANDLE,LPOVERLAPPED); WINBASEAPI BOOL WINAPI ContinueDebugEvent(DWORD,DWORD,DWORD); WINBASEAPI HANDLE WINAPI ConvertToGlobalHandle(HANDLE hSrc); +WINBASEAPI BOOL WINAPI CopyContext(CONTEXT*, DWORD, CONTEXT*); WINBASEAPI BOOL WINAPI CopyFileA(LPCSTR,LPCSTR,BOOL); WINBASEAPI BOOL WINAPI CopyFileW(LPCWSTR,LPCWSTR,BOOL); #define CopyFile WINELIB_NAME_AW(CopyFile)
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=77833
Your paranoid android.
=== debiant (32 bit report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fcf0 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 136f5 / 1361e loader.c:3946: Test failed: ntdll.dll:5: wrong OptionalHeader.DataDirectory[i].Size 3b64 / 3b4c loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 3 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 8 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
=== debiant (32 bit Chinese:China report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fcf0 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 136f5 / 1361e loader.c:3946: Test failed: ntdll.dll:5: wrong OptionalHeader.DataDirectory[i].Size 3b64 / 3b4c loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 3 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 8 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
=== debiant (32 bit WoW report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fcf0 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 136f5 / 1361e loader.c:3946: Test failed: ntdll.dll:5: wrong OptionalHeader.DataDirectory[i].Size 3b64 / 3b4c loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 3 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 8 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
=== debiant (64 bit WoW report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fcf0 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 136f5 / 1361e loader.c:3946: Test failed: ntdll.dll:5: wrong OptionalHeader.DataDirectory[i].Size 3b64 / 3b4c loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 3 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 8 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
Signed-off-by: Paul Gofman pgofman@codeweavers.com --- dlls/ntdll/tests/exception.c | 268 ++++++++++++++++++++++++++++++++++- 1 file changed, 267 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c index 301b86e8d3c..05796a1636c 100644 --- a/dlls/ntdll/tests/exception.c +++ b/dlls/ntdll/tests/exception.c @@ -6189,6 +6189,116 @@ static void test_extended_context(void) 0xc5, 0xfc, 0x11, 0x00, /* vmovups %ymm0,(%ax) */ 0xc3, /* ret */ }; + + struct call_func_offsets + { + unsigned int func_addr; + unsigned int func_param1; + unsigned int func_param2; + unsigned int ymm0_save; + }; +#ifdef __x86_64__ + static BYTE call_func_code_set_ymm0[] = + { + 0x55, /* pushq %rbp */ + 0x48, 0xb8, /* mov imm,%rax */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x48, 0xb9, /* mov imm,%rcx */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x48, 0xba, /* mov imm,%rdx */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x48, 0xbd, /* mov imm,%rbp */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0xc5, 0xfc, 0x10, 0x45, 0x00, /* vmovups (%rbp),%ymm0 */ + 0xff, 0xd0, /* call *rax */ + 0xc5, 0xfc, 0x11, 0x45, 0x00, /* vmovups %ymm0,(%rbp) */ + 0x5d, /* popq %rbp */ + 0xc3, /* ret */ + }; + static BYTE call_func_code_reset_ymm_state[] = + { + 0x55, /* pushq %rbp */ + 0x48, 0xb8, /* mov imm,%rax */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x48, 0xb9, /* mov imm,%rcx */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x48, 0xba, /* mov imm,%rdx */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x48, 0xbd, /* mov imm,%rbp */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0xc5, 0xf8, 0x77, /* vzeroupper */ + 0x0f, 0x57, 0xc0, /* xorps %xmm0,%xmm0 */ + 0xff, 0xd0, /* call *rax */ + 0xc5, 0xfc, 0x11, 0x45, 0x00, /* vmovups %ymm0,(%rbp) */ + 0x5d, /* popq %rbp */ + 0xc3, /* ret */ + }; + static const struct call_func_offsets call_func_offsets = {3, 13, 23, 33}; +#else + static BYTE call_func_code_set_ymm0[] = + { + 0x55, /* pushl %ebp */ + 0xb8, /* mov imm,%eax */ + 0x00, 0x00, 0x00, 0x00, + + 0xb9, /* mov imm,%ecx */ + 0x00, 0x00, 0x00, 0x00, + + 0xba, /* mov imm,%edx */ + 0x00, 0x00, 0x00, 0x00, + + 0xbd, /* mov imm,%ebp */ + 0x00, 0x00, 0x00, 0x00, + + 0x81, 0xfa, 0xef, 0xbe, 0xad, 0xde, + /* cmpl $0xdeadbeef, %edx */ + 0x74, 0x01, /* je 1f */ + 0x52, /* pushl %edx */ + 0x51, /* 1: pushl %ecx */ + 0xc5, 0xfc, 0x10, 0x45, 0x00, /* vmovups (%ebp),%ymm0 */ + 0xff, 0xd0, /* call *eax */ + 0xc5, 0xfc, 0x11, 0x45, 0x00, /* vmovups %ymm0,(%ebp) */ + 0x5d, /* popl %ebp */ + 0xc3, /* ret */ + }; + static BYTE call_func_code_reset_ymm_state[] = + { + 0x55, /* pushl %ebp */ + 0xb8, /* mov imm,%eax */ + 0x00, 0x00, 0x00, 0x00, + + 0xb9, /* mov imm,%ecx */ + 0x00, 0x00, 0x00, 0x00, + + 0xba, /* mov imm,%edx */ + 0x00, 0x00, 0x00, 0x00, + + 0xbd, /* mov imm,%ebp */ + 0x00, 0x00, 0x00, 0x00, + + 0x81, 0xfa, 0xef, 0xbe, 0xad, 0xde, + /* cmpl $0xdeadbeef, %edx */ + 0x74, 0x01, /* je 1f */ + 0x52, /* pushl %edx */ + 0x51, /* 1: pushl %ecx */ + 0xc5, 0xf8, 0x77, /* vzeroupper */ + 0x0f, 0x57, 0xc0, /* xorps %xmm0,%xmm0 */ + 0xff, 0xd0, /* call *eax */ + 0xc5, 0xfc, 0x11, 0x45, 0x00, /* vmovups %ymm0,(%ebp) */ + 0x5d, /* popl %ebp */ + 0xc3, /* ret */ + }; + static const struct call_func_offsets call_func_offsets = {2, 7, 12, 17}; +#endif + static const struct { ULONG flag; @@ -6235,8 +6345,9 @@ static void test_extended_context(void) DECLSPEC_ALIGN(64) BYTE context_buffer[2048]; unsigned int i, j, address_offset, test; ULONG ret, ret2, length, length2, align; + ULONG flags, flags_fpx, expected_flags; + ULONG (WINAPI* func)(void) = code_mem; CONTEXT_EX *context_ex; - ULONG flags, flags_fpx; CONTEXT *context; unsigned data[8]; ULONG64 mask; @@ -6831,6 +6942,161 @@ static void test_extended_context(void) return; }
+ /* Test RtlCaptureContext (doesn't support xstates). */ + length = sizeof(context_buffer); + memset(context_buffer, 0xcc, sizeof(context_buffer)); + bret = pInitializeContext(context_buffer, CONTEXT_XSTATE, &context, &length); + ok(bret, "Got unexpected bret %#x.\n", bret); + context_ex = (CONTEXT_EX *)(context + 1); + xs = (XSTATE *)((BYTE *)context_ex + context_ex->XState.Offset); + + *(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; + *(void **)(call_func_code_set_ymm0 + call_func_offsets.ymm0_save) = data; + memcpy(code_mem, call_func_code_set_ymm0, sizeof(call_func_code_set_ymm0)); + + memcpy(data, test_extended_context_data, sizeof(data)); + func(); + ok(context->ContextFlags == (CONTEXT_FULL | CONTEXT_SEGMENTS), "Got unexpected ContextFlags %#x.\n", + context->ContextFlags); + for (i = 0; i < 8; ++i) + ok(data[i] == test_extended_context_data[i], "Got unexpected data %#x, i %u.\n", data[i], i); + + /* Test GetThreadContext (current thread, ymm0 set). */ + length = sizeof(context_buffer); + memset(context_buffer, 0xcc, sizeof(context_buffer)); + bret = pInitializeContext(context_buffer, CONTEXT_FULL | CONTEXT_XSTATE | CONTEXT_FLOATING_POINT, + &context, &length); + ok(bret, "Got unexpected bret %#x.\n", bret); + memset(&xs->YmmContext, 0xcc, sizeof(xs->YmmContext)); + + expected_flags = CONTEXT_FULL | CONTEXT_XSTATE | CONTEXT_FLOATING_POINT; +#ifdef __i386__ + expected_flags |= CONTEXT_EXTENDED_REGISTERS; +#endif + pSetXStateFeaturesMask(context, ~(ULONG64)0); + ok(context->ContextFlags == expected_flags, "Got unexpected ContextFlags %#x.\n", + context->ContextFlags); + *(void **)(call_func_code_set_ymm0 + call_func_offsets.func_addr) = GetThreadContext; + *(void **)(call_func_code_set_ymm0 + call_func_offsets.func_param1) = (void *)GetCurrentThread(); + *(void **)(call_func_code_set_ymm0 + call_func_offsets.func_param2) = context; + *(void **)(call_func_code_set_ymm0 + call_func_offsets.ymm0_save) = data; + memcpy(code_mem, call_func_code_set_ymm0, sizeof(call_func_code_set_ymm0)); + xs->CompactionMask = 2; + if (!compaction_enabled) + xs->Mask = 0; + context_ex->XState.Length = sizeof(XSTATE); + + bret = func(); + ok(bret, "Got unexpected bret %#x, GetLastError() %u.\n", bret, GetLastError()); + + ok(context->ContextFlags == expected_flags, "Got unexpected ContextFlags %#x.\n", + context->ContextFlags); + expected_compaction = compaction_enabled ? (ULONG64)1 << 63 : 0; + + todo_wine ok(!xs->Mask, "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); + todo_wine ok(xs->CompactionMask == expected_compaction, "Got unexpected CompactionMask %s.\n", + wine_dbgstr_longlong(xs->CompactionMask)); + + for (i = 4; i < 8; ++i) + 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, + "Got unexpected data %#x, i %u.\n", ((ULONG *)&xs->YmmContext)[i], i); + + expected_compaction = compaction_enabled ? ((ULONG64)1 << 63) | 4 : 0; + + xs->CompactionMask = 4; + xs->Mask = compaction_enabled ? 0 : 4; + context_ex->XState.Length = sizeof(XSTATE) + 64; + bret = func(); + todo_wine ok(!bret && GetLastError() == ERROR_INVALID_PARAMETER, + "Got unexpected bret %#x, GetLastError() %u.\n", bret, GetLastError()); + ok(context->ContextFlags == expected_flags, "Got unexpected ContextFlags %#x.\n", + context->ContextFlags); + ok(xs->Mask == (compaction_enabled ? 0 : 4), "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); + 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, + "Got unexpected data %#x, i %u.\n", ((ULONG *)&xs->YmmContext)[i], i); + + xs->CompactionMask = 4; + xs->Mask = compaction_enabled ? 0 : 4; + context_ex->XState.Length = offsetof(XSTATE, YmmContext); + bret = func(); + ok(context->ContextFlags == expected_flags, "Got unexpected ContextFlags %#x.\n", + context->ContextFlags); + todo_wine ok(!bret && GetLastError() == ERROR_MORE_DATA, + "Got unexpected bret %#x, GetLastError() %u.\n", bret, GetLastError()); + todo_wine ok(xs->Mask == 4, "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); + todo_wine 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, + "Got unexpected data %#x, i %u.\n", ((ULONG *)&xs->YmmContext)[i], i); + + context_ex->XState.Length = sizeof(XSTATE); + xs->CompactionMask = 4; + xs->Mask = compaction_enabled ? 0 : 4; + bret = func(); + ok(bret, "Got unexpected bret %#x, GetLastError() %u.\n", bret, GetLastError()); + + ok(context->ContextFlags == expected_flags, "Got unexpected ContextFlags %#x.\n", + context->ContextFlags); + + todo_wine ok(xs->Mask == 4, "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); + todo_wine ok(xs->CompactionMask == expected_compaction, "Got unexpected CompactionMask %s.\n", + wine_dbgstr_longlong(xs->CompactionMask)); + + for (i = 4; i < 8; ++i) + ok(data[i] == test_extended_context_data[i], "Got unexpected data %#x, i %u.\n", data[i], i); + + for (i = 0; i < 4; ++i) + todo_wine ok(((ULONG *)&xs->YmmContext)[i] == test_extended_context_data[i + 4], + "Got unexpected data %#x, i %u.\n", ((ULONG *)&xs->YmmContext)[i], i); + + /* Test GetThreadContext (current thread, ymm state cleared). */ + length = sizeof(context_buffer); + memset(context_buffer, 0xcc, sizeof(context_buffer)); + bret = pInitializeContext(context_buffer, CONTEXT_FULL | CONTEXT_XSTATE | CONTEXT_FLOATING_POINT, + &context, &length); + memset(&xs->YmmContext, 0xcc, sizeof(xs->YmmContext)); + ok(bret, "Got unexpected bret %#x.\n", bret); + pSetXStateFeaturesMask(context, ~(ULONG64)0); + *(void **)(call_func_code_reset_ymm_state + call_func_offsets.func_addr) = GetThreadContext; + *(void **)(call_func_code_reset_ymm_state + call_func_offsets.func_param1) = (void *)GetCurrentThread(); + *(void **)(call_func_code_reset_ymm_state + call_func_offsets.func_param2) = context; + *(void **)(call_func_code_reset_ymm_state + call_func_offsets.ymm0_save) = data; + memcpy(code_mem, call_func_code_reset_ymm_state, sizeof(call_func_code_reset_ymm_state)); + + bret = func(); + ok(bret, "Got unexpected bret %#x, GetLastError() %u.\n", bret, GetLastError()); + + expected_flags = CONTEXT_FULL | CONTEXT_XSTATE | CONTEXT_FLOATING_POINT; +#ifdef __i386__ + expected_flags |= CONTEXT_EXTENDED_REGISTERS; +#endif + ok(context->ContextFlags == expected_flags, "Got unexpected ContextFlags %#x.\n", + context->ContextFlags); + + expected_compaction = compaction_enabled ? ((ULONG64)1 << 63) | 4 : 0; + + xs = (XSTATE *)((BYTE *)context_ex + context_ex->XState.Offset); + todo_wine ok(!xs->Mask, "Got unexpected Mask %s.\n", wine_dbgstr_longlong(xs->Mask)); + todo_wine ok(xs->CompactionMask == expected_compaction, "Got unexpected CompactionMask %s.\n", + wine_dbgstr_longlong(xs->CompactionMask)); + + for (i = 4; i < 8; ++i) + ok(!data[i], "Got unexpected data %#x, i %u.\n", data[i], i); + + for (i = 0; i < 4; ++i) + ok(((ULONG *)&xs->YmmContext)[i] == 0xcccccccc + || broken(((ULONG *)&xs->YmmContext)[i] == test_extended_context_data[i + 4]), + "Got unexpected data %#x, i %u.\n", ((ULONG *)&xs->YmmContext)[i], i); + /* Test fault exception context. */ memset(data, 0xff, sizeof(data)); test_extended_context_modified_state = FALSE;
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=77834
Your paranoid android.
=== debiant (32 bit report) ===
kernel32: change.c:320: Test failed: should be ready change.c:350: Test failed: should be ready loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fcf0 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 136f5 / 1361e loader.c:3946: Test failed: ntdll.dll:5: wrong OptionalHeader.DataDirectory[i].Size 3b64 / 3b4c loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 3 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 8 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
ntdll: exception.c:6960: Test succeeded inside todo block: Got unexpected Mask 0. exception.c:6996: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7012: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7051: Test succeeded inside todo block: Got unexpected CompactionMask 0.
=== debiant (32 bit French report) ===
ntdll: exception.c:6960: Test succeeded inside todo block: Got unexpected Mask 0. exception.c:6996: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7012: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7051: Test succeeded inside todo block: Got unexpected CompactionMask 0.
=== debiant (32 bit Japanese:Japan report) ===
ntdll: exception.c:6960: Test succeeded inside todo block: Got unexpected Mask 0. exception.c:6996: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7012: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7051: Test succeeded inside todo block: Got unexpected CompactionMask 0.
=== debiant (32 bit Chinese:China report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fcf0 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 136f5 / 1361e loader.c:3946: Test failed: ntdll.dll:5: wrong OptionalHeader.DataDirectory[i].Size 3b64 / 3b4c loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 3 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 8 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
ntdll: exception.c:6960: Test succeeded inside todo block: Got unexpected Mask 0. exception.c:6996: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7012: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7051: Test succeeded inside todo block: Got unexpected CompactionMask 0.
=== debiant (32 bit WoW report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fcf0 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 136f5 / 1361e loader.c:3946: Test failed: ntdll.dll:5: wrong OptionalHeader.DataDirectory[i].Size 3b64 / 3b4c loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 3 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 8 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
ntdll: exception.c:6960: Test succeeded inside todo block: Got unexpected Mask 0. exception.c:6996: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7012: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7051: Test succeeded inside todo block: Got unexpected CompactionMask 0.
=== debiant (64 bit WoW report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fcf0 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 136f5 / 1361e loader.c:3946: Test failed: ntdll.dll:5: wrong OptionalHeader.DataDirectory[i].Size 3b64 / 3b4c loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 3 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 8 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
ntdll: exception.c:6960: Test succeeded inside todo block: Got unexpected Mask 0. exception.c:6996: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7012: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7051: Test succeeded inside todo block: Got unexpected CompactionMask 0.
On 9/1/20 16:44, Marvin wrote:
ntdll: exception.c:6960: Test succeeded inside todo block: Got unexpected Mask 0. exception.c:6996: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7012: Test succeeded inside todo block: Got unexpected Mask 4. exception.c:7051: Test succeeded inside todo block: Got unexpected CompactionMask 0.
Please ignore this last patch for now, I will fix the todo's (the case when compaction is not enabled) and resend along with the next part implementing those TODOs.
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=77831
Your paranoid android.
=== debiant (32 bit report) ===
kernel32: console.c:372: Test failed: At (77,0): expecting char 'd'/64 got 'a'/61 console.c:469: Test failed: At (0,3): expecting char 'd'/64 got 'f'/66 console.c:473: Test failed: Win9x/WinMe changes attribs for '\n' up to 'f' console.c:478: Test failed: At (0,4): expecting char 'f'/66 got ' '/20 console.c:478: Test failed: At (0,4): expecting attr 0012 got 0007 console.c:480: Test failed: At (1,4): expecting attr 0012 got 0007 console.c:480: Test failed: At (2,4): expecting attr 0012 got 0007 console.c:480: Test failed: At (3,4): expecting attr 0012 got 0007 console.c:480: Test failed: At (4,4): expecting attr 0012 got 0007 console.c:480: Test failed: At (5,4): expecting attr 0012 got 0007 console.c:480: Test failed: At (6,4): expecting attr 0012 got 0007 console.c:480: Test failed: At (7,4): expecting attr 0012 got 0007 console.c:481: Test failed: At (8,4): expecting char 'g'/67 got ' '/20 console.c:481: Test failed: At (8,4): expecting attr 0012 got 0007 console.c:484: Test failed: Expected cursor at (9,4), got (9,3) console.c:549: Test failed: At (0,25): expecting char 'L'/4c got 'E'/45 console.c:549: Test failed: At (0,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (1,25): expecting char 'M'/4d got 'E'/45 console.c:549: Test failed: At (1,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (2,25): expecting char 'N'/4e got 'E'/45 console.c:549: Test failed: At (2,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (3,25): expecting char 'O'/4f got 'E'/45 console.c:549: Test failed: At (3,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (4,25): expecting char 'P'/50 got 'E'/45 console.c:549: Test failed: At (4,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (5,25): expecting char 'Q'/51 got 'E'/45 console.c:549: Test failed: At (5,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (6,25): expecting char 'R'/52 got 'E'/45 console.c:549: Test failed: At (6,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (7,25): expecting char 'S'/53 got 'E'/45 console.c:549: Test failed: At (7,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (8,25): expecting char 'T'/54 got 'E'/45 console.c:549: Test failed: At (8,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (9,25): expecting char 'U'/55 got 'E'/45 console.c:549: Test failed: At (9,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (10,25): expecting char 'V'/56 got 'E'/45 console.c:549: Test failed: At (10,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (11,25): expecting char 'W'/57 got 'E'/45 console.c:549: Test failed: At (11,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (12,25): expecting char 'A'/41 got 'E'/45 console.c:549: Test failed: At (12,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (13,25): expecting char 'B'/42 got 'E'/45 console.c:549: Test failed: At (13,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (14,25): expecting char 'C'/43 got 'E'/45 console.c:549: Test failed: At (14,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (15,25): expecting char 'D'/44 got 'E'/45 console.c:549: Test failed: At (15,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (16,25): expecting char 'E'/45 got 'E'/45 console.c:549: Test failed: At (16,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (17,25): expecting char 'F'/46 got 'E'/45 console.c:549: Test failed: At (17,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (18,25): expecting char 'G'/47 got 'E'/45 console.c:549: Test failed: At (18,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (19,25): expecting char 'H'/48 got 'E'/45 console.c:549: Test failed: At (19,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (20,25): expecting char 'I'/49 got 'E'/45 console.c:549: Test failed: At (20,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (21,25): expecting char 'J'/4a got 'E'/45 console.c:549: Test failed: At (21,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (22,25): expecting char 'K'/4b got 'E'/45 console.c:549: Test failed: At (22,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (23,25): expecting char 'L'/4c got 'E'/45 console.c:549: Test failed: At (23,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (24,25): expecting char 'M'/4d got 'E'/45 console.c:549: Test failed: At (24,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (25,25): expecting char 'N'/4e got 'E'/45 console.c:549: Test failed: At (25,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (26,25): expecting char 'O'/4f got 'E'/45 console.c:549: Test failed: At (26,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (27,25): expecting char 'P'/50 got 'E'/45 console.c:549: Test failed: At (27,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (28,25): expecting char 'Q'/51 got 'E'/45 console.c:549: Test failed: At (28,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (29,25): expecting char 'R'/52 got 'E'/45 console.c:549: Test failed: At (29,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (30,25): expecting char 'S'/53 got 'E'/45 console.c:549: Test failed: At (30,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (31,25): expecting char 'T'/54 got 'E'/45 console.c:549: Test failed: At (31,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (32,25): expecting char 'U'/55 got 'E'/45 console.c:549: Test failed: At (32,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (33,25): expecting char 'V'/56 got 'E'/45 console.c:549: Test failed: At (33,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (34,25): expecting char 'W'/57 got 'E'/45 console.c:549: Test failed: At (34,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (35,25): expecting char 'A'/41 got 'E'/45 console.c:549: Test failed: At (35,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (36,25): expecting char 'B'/42 got 'E'/45 console.c:549: Test failed: At (36,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (37,25): expecting char 'C'/43 got 'E'/45 console.c:549: Test failed: At (37,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (38,25): expecting char 'D'/44 got 'E'/45 console.c:549: Test failed: At (38,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (39,25): expecting char 'E'/45 got 'E'/45 console.c:549: Test failed: At (39,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (40,25): expecting char 'F'/46 got 'E'/45 console.c:549: Test failed: At (40,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (41,25): expecting char 'G'/47 got 'E'/45 console.c:549: Test failed: At (41,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (42,25): expecting char 'H'/48 got 'E'/45 console.c:549: Test failed: At (42,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (43,25): expecting char 'I'/49 got 'E'/45 console.c:549: Test failed: At (43,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (44,25): expecting char 'J'/4a got 'E'/45 console.c:549: Test failed: At (44,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (45,25): expecting char 'K'/4b got 'E'/45 console.c:549: Test failed: At (45,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (46,25): expecting char 'L'/4c got 'E'/45 console.c:549: Test failed: At (46,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (47,25): expecting char 'M'/4d got 'E'/45 console.c:549: Test failed: At (47,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (48,25): expecting char 'N'/4e got 'E'/45 console.c:549: Test failed: At (48,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (49,25): expecting char 'O'/4f got 'E'/45 console.c:549: Test failed: At (49,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (50,25): expecting char 'P'/50 got 'E'/45 console.c:549: Test failed: At (50,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (51,25): expecting char 'Q'/51 got 'E'/45 console.c:549: Test failed: At (51,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (52,25): expecting char 'R'/52 got 'E'/45 console.c:549: Test failed: At (52,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (53,25): expecting char 'S'/53 got 'E'/45 console.c:549: Test failed: At (53,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (54,25): expecting char 'T'/54 got 'E'/45 console.c:549: Test failed: At (54,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (55,25): expecting char 'U'/55 got 'E'/45 console.c:549: Test failed: At (55,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (56,25): expecting char 'V'/56 got 'E'/45 console.c:549: Test failed: At (56,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (57,25): expecting char 'W'/57 got 'E'/45 console.c:549: Test failed: At (57,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (58,25): expecting char 'A'/41 got 'E'/45 console.c:549: Test failed: At (58,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (59,25): expecting char 'B'/42 got 'E'/45 console.c:549: Test failed: At (59,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (60,25): expecting char 'C'/43 got 'E'/45 console.c:549: Test failed: At (60,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (61,25): expecting char 'D'/44 got 'E'/45 console.c:549: Test failed: At (61,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (62,25): expecting char 'E'/45 got 'E'/45 console.c:549: Test failed: At (62,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (63,25): expecting char 'F'/46 got 'E'/45 console.c:549: Test failed: At (63,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (64,25): expecting char 'G'/47 got 'E'/45 console.c:549: Test failed: At (64,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (65,25): expecting char 'H'/48 got 'E'/45 console.c:549: Test failed: At (65,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (66,25): expecting char 'I'/49 got 'E'/45 console.c:549: Test failed: At (66,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (67,25): expecting char 'J'/4a got 'E'/45 console.c:549: Test failed: At (67,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (68,25): expecting char 'K'/4b got 'E'/45 console.c:549: Test failed: At (68,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (69,25): expecting char 'L'/4c got 'E'/45 console.c:549: Test failed: At (69,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (70,25): expecting char 'M'/4d got 'E'/45 console.c:549: Test failed: At (70,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (71,25): expecting char 'N'/4e got 'E'/45 console.c:549: Test failed: At (71,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (72,25): expecting char 'O'/4f got 'E'/45 console.c:549: Test failed: At (72,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (73,25): expecting char 'P'/50 got 'E'/45 console.c:549: Test failed: At (73,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (74,25): expecting char 'Q'/51 got 'E'/45 console.c:549: Test failed: At (74,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (75,25): expecting char 'R'/52 got 'E'/45 console.c:549: Test failed: At (75,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (76,25): expecting char 'S'/53 got 'E'/45 console.c:549: Test failed: At (76,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (77,25): expecting char 'T'/54 got 'E'/45 console.c:549: Test failed: At (77,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (78,25): expecting char 'U'/55 got 'E'/45 console.c:549: Test failed: At (78,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (79,25): expecting char 'V'/56 got 'E'/45 console.c:549: Test failed: At (79,25): expecting attr 0007 got 0007 console.c:549: Test failed: At (0,26): expecting char 'F'/46 got 'E'/45 console.c:549: Test failed: At (0,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (1,26): expecting char 'G'/47 got 'E'/45 console.c:549: Test failed: At (1,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (2,26): expecting char 'H'/48 got 'E'/45 console.c:549: Test failed: At (2,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (3,26): expecting char 'I'/49 got 'E'/45 console.c:549: Test failed: At (3,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (4,26): expecting char 'J'/4a got 'E'/45 console.c:549: Test failed: At (4,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (5,26): expecting char 'K'/4b got 'E'/45 console.c:549: Test failed: At (5,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (6,26): expecting char 'L'/4c got 'E'/45 console.c:549: Test failed: At (6,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (7,26): expecting char 'M'/4d got 'E'/45 console.c:549: Test failed: At (7,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (8,26): expecting char 'N'/4e got 'E'/45 console.c:549: Test failed: At (8,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (9,26): expecting char 'O'/4f got 'E'/45 console.c:549: Test failed: At (9,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (10,26): expecting char 'P'/50 got 'E'/45 console.c:549: Test failed: At (10,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (11,26): expecting char 'Q'/51 got 'E'/45 console.c:549: Test failed: At (11,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (12,26): expecting char 'R'/52 got 'E'/45 console.c:549: Test failed: At (12,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (13,26): expecting char 'S'/53 got 'E'/45 console.c:549: Test failed: At (13,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (14,26): expecting char 'T'/54 got 'E'/45 console.c:549: Test failed: At (14,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (15,26): expecting char 'U'/55 got 'E'/45 console.c:549: Test failed: At (15,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (16,26): expecting char 'V'/56 got 'E'/45 console.c:549: Test failed: At (16,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (17,26): expecting char 'W'/57 got 'E'/45 console.c:549: Test failed: At (17,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (18,26): expecting char 'A'/41 got 'E'/45 console.c:549: Test failed: At (18,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (19,26): expecting char 'B'/42 got 'E'/45 console.c:549: Test failed: At (19,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (20,26): expecting char 'C'/43 got 'E'/45 console.c:549: Test failed: At (20,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (21,26): expecting char 'D'/44 got 'E'/45 console.c:549: Test failed: At (21,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (22,26): expecting char 'E'/45 got 'E'/45 console.c:549: Test failed: At (22,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (23,26): expecting char 'F'/46 got 'E'/45 console.c:549: Test failed: At (23,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (24,26): expecting char 'G'/47 got 'E'/45 console.c:549: Test failed: At (24,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (25,26): expecting char 'H'/48 got 'E'/45 console.c:549: Test failed: At (25,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (26,26): expecting char 'I'/49 got 'E'/45 console.c:549: Test failed: At (26,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (27,26): expecting char 'J'/4a got 'E'/45 console.c:549: Test failed: At (27,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (28,26): expecting char 'K'/4b got 'E'/45 console.c:549: Test failed: At (28,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (29,26): expecting char 'L'/4c got 'E'/45 console.c:549: Test failed: At (29,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (30,26): expecting char 'M'/4d got 'E'/45 console.c:549: Test failed: At (30,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (31,26): expecting char 'N'/4e got 'E'/45 console.c:549: Test failed: At (31,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (32,26): expecting char 'O'/4f got 'E'/45 console.c:549: Test failed: At (32,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (33,26): expecting char 'P'/50 got 'E'/45 console.c:549: Test failed: At (33,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (34,26): expecting char 'Q'/51 got 'E'/45 console.c:549: Test failed: At (34,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (35,26): expecting char 'R'/52 got 'E'/45 console.c:549: Test failed: At (35,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (36,26): expecting char 'S'/53 got 'E'/45 console.c:549: Test failed: At (36,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (37,26): expecting char 'T'/54 got 'E'/45 console.c:549: Test failed: At (37,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (38,26): expecting char 'U'/55 got 'E'/45 console.c:549: Test failed: At (38,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (39,26): expecting char 'V'/56 got 'E'/45 console.c:549: Test failed: At (39,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (40,26): expecting char 'W'/57 got 'E'/45 console.c:549: Test failed: At (40,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (41,26): expecting char 'A'/41 got 'E'/45 console.c:549: Test failed: At (41,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (42,26): expecting char 'B'/42 got 'E'/45 console.c:549: Test failed: At (42,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (43,26): expecting char 'C'/43 got 'E'/45 console.c:549: Test failed: At (43,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (44,26): expecting char 'D'/44 got 'E'/45 console.c:549: Test failed: At (44,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (45,26): expecting char 'E'/45 got 'E'/45 console.c:549: Test failed: At (45,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (46,26): expecting char 'F'/46 got 'E'/45 console.c:549: Test failed: At (46,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (47,26): expecting char 'G'/47 got 'E'/45 console.c:549: Test failed: At (47,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (48,26): expecting char 'H'/48 got 'E'/45 console.c:549: Test failed: At (48,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (49,26): expecting char 'I'/49 got 'E'/45 console.c:549: Test failed: At (49,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (50,26): expecting char 'J'/4a got 'E'/45 console.c:549: Test failed: At (50,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (51,26): expecting char 'K'/4b got 'E'/45 console.c:549: Test failed: At (51,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (52,26): expecting char 'L'/4c got 'E'/45 console.c:549: Test failed: At (52,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (53,26): expecting char 'M'/4d got 'E'/45 console.c:549: Test failed: At (53,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (54,26): expecting char 'N'/4e got 'E'/45 console.c:549: Test failed: At (54,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (55,26): expecting char 'O'/4f got 'E'/45 console.c:549: Test failed: At (55,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (56,26): expecting char 'P'/50 got 'E'/45 console.c:549: Test failed: At (56,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (57,26): expecting char 'Q'/51 got 'E'/45 console.c:549: Test failed: At (57,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (58,26): expecting char 'R'/52 got 'E'/45 console.c:549: Test failed: At (58,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (59,26): expecting char 'S'/53 got 'E'/45 console.c:549: Test failed: At (59,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (60,26): expecting char 'T'/54 got 'E'/45 console.c:549: Test failed: At (60,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (61,26): expecting char 'U'/55 got 'E'/45 console.c:549: Test failed: At (61,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (62,26): expecting char 'V'/56 got 'E'/45 console.c:549: Test failed: At (62,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (63,26): expecting char 'W'/57 got 'E'/45 console.c:549: Test failed: At (63,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (64,26): expecting char 'A'/41 got 'E'/45 console.c:549: Test failed: At (64,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (65,26): expecting char 'B'/42 got 'E'/45 console.c:549: Test failed: At (65,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (66,26): expecting char 'C'/43 got 'E'/45 console.c:549: Test failed: At (66,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (67,26): expecting char 'D'/44 got 'E'/45 console.c:549: Test failed: At (67,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (68,26): expecting char 'E'/45 got 'E'/45 console.c:549: Test failed: At (68,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (69,26): expecting char 'F'/46 got 'E'/45 console.c:549: Test failed: At (69,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (70,26): expecting char 'G'/47 got 'E'/45 console.c:549: Test failed: At (70,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (71,26): expecting char 'H'/48 got 'E'/45 console.c:549: Test failed: At (71,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (72,26): expecting char 'I'/49 got 'E'/45 console.c:549: Test failed: At (72,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (73,26): expecting char 'J'/4a got 'E'/45 console.c:549: Test failed: At (73,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (74,26): expecting char 'K'/4b got 'E'/45 console.c:549: Test failed: At (74,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (75,26): expecting char 'L'/4c got 'E'/45 console.c:549: Test failed: At (75,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (76,26): expecting char 'M'/4d got 'E'/45 console.c:549: Test failed: At (76,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (77,26): expecting char 'N'/4e got 'E'/45 console.c:549: Test failed: At (77,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (78,26): expecting char 'O'/4f got 'E'/45 console.c:549: Test failed: At (78,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (79,26): expecting char 'P'/50 got 'E'/45 console.c:549: Test failed: At (79,26): expecting attr 0007 got 0007 console.c:549: Test failed: At (0,27): expecting char 'W'/57 got 'E'/45 console.c:549: Test failed: At (0,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (1,27): expecting char 'A'/41 got 'E'/45 console.c:549: Test failed: At (1,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (2,27): expecting char 'B'/42 got 'E'/45 console.c:549: Test failed: At (2,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (3,27): expecting char 'C'/43 got 'E'/45 console.c:549: Test failed: At (3,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (4,27): expecting char 'D'/44 got 'E'/45 console.c:549: Test failed: At (4,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (5,27): expecting char 'E'/45 got 'E'/45 console.c:549: Test failed: At (5,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (6,27): expecting char 'F'/46 got 'E'/45 console.c:549: Test failed: At (6,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (7,27): expecting char 'G'/47 got 'E'/45 console.c:549: Test failed: At (7,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (8,27): expecting char 'H'/48 got 'E'/45 console.c:549: Test failed: At (8,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (9,27): expecting char 'I'/49 got 'E'/45 console.c:549: Test failed: At (9,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (10,27): expecting char 'J'/4a got 'E'/45 console.c:549: Test failed: At (10,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (11,27): expecting char 'K'/4b got 'E'/45 console.c:549: Test failed: At (11,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (12,27): expecting char 'L'/4c got 'E'/45 console.c:549: Test failed: At (12,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (13,27): expecting char 'M'/4d got 'E'/45 console.c:549: Test failed: At (13,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (14,27): expecting char 'N'/4e got 'E'/45 console.c:549: Test failed: At (14,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (15,27): expecting char 'O'/4f got 'E'/45 console.c:549: Test failed: At (15,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (16,27): expecting char 'P'/50 got 'E'/45 console.c:549: Test failed: At (16,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (17,27): expecting char 'Q'/51 got 'E'/45 console.c:549: Test failed: At (17,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (18,27): expecting char 'R'/52 got 'E'/45 console.c:549: Test failed: At (18,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (19,27): expecting char 'S'/53 got 'E'/45 console.c:549: Test failed: At (19,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (20,27): expecting char 'T'/54 got 'E'/45 console.c:549: Test failed: At (20,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (21,27): expecting char 'U'/55 got 'E'/45 console.c:549: Test failed: At (21,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (22,27): expecting char 'V'/56 got 'E'/45 console.c:549: Test failed: At (22,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (23,27): expecting char 'W'/57 got 'E'/45 console.c:549: Test failed: At (23,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (24,27): expecting char 'A'/41 got 'E'/45 console.c:549: Test failed: At (24,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (25,27): expecting char 'B'/42 got 'E'/45 console.c:549: Test failed: At (25,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (26,27): expecting char 'C'/43 got 'E'/45 console.c:549: Test failed: At (26,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (27,27): expecting char 'D'/44 got 'E'/45 console.c:549: Test failed: At (27,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (28,27): expecting char 'E'/45 got 'E'/45 console.c:549: Test failed: At (28,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (29,27): expecting char 'F'/46 got 'E'/45 console.c:549: Test failed: At (29,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (30,27): expecting char 'G'/47 got 'E'/45 console.c:549: Test failed: At (30,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (31,27): expecting char 'H'/48 got 'E'/45 console.c:549: Test failed: At (31,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (32,27): expecting char 'I'/49 got 'E'/45 console.c:549: Test failed: At (32,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (33,27): expecting char 'J'/4a got 'E'/45 console.c:549: Test failed: At (33,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (34,27): expecting char 'K'/4b got 'E'/45 console.c:549: Test failed: At (34,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (35,27): expecting char 'L'/4c got 'E'/45 console.c:549: Test failed: At (35,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (36,27): expecting char 'M'/4d got 'E'/45 console.c:549: Test failed: At (36,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (37,27): expecting char 'N'/4e got 'E'/45 console.c:549: Test failed: At (37,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (38,27): expecting char 'O'/4f got 'E'/45 console.c:549: Test failed: At (38,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (39,27): expecting char 'P'/50 got 'E'/45 console.c:549: Test failed: At (39,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (40,27): expecting char 'Q'/51 got 'E'/45 console.c:549: Test failed: At (40,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (41,27): expecting char 'R'/52 got 'E'/45 console.c:549: Test failed: At (41,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (42,27): expecting char 'S'/53 got 'E'/45 console.c:549: Test failed: At (42,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (43,27): expecting char 'T'/54 got 'E'/45 console.c:549: Test failed: At (43,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (44,27): expecting char 'U'/55 got 'E'/45 console.c:549: Test failed: At (44,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (45,27): expecting char 'V'/56 got 'E'/45 console.c:549: Test failed: At (45,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (46,27): expecting char 'W'/57 got 'E'/45 console.c:549: Test failed: At (46,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (47,27): expecting char 'A'/41 got 'E'/45 console.c:549: Test failed: At (47,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (48,27): expecting char 'B'/42 got 'E'/45 console.c:549: Test failed: At (48,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (49,27): expecting char 'C'/43 got 'E'/45 console.c:549: Test failed: At (49,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (50,27): expecting char 'D'/44 got 'E'/45 console.c:549: Test failed: At (50,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (51,27): expecting char 'E'/45 got 'E'/45 console.c:549: Test failed: At (51,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (52,27): expecting char 'F'/46 got 'E'/45 console.c:549: Test failed: At (52,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (53,27): expecting char 'G'/47 got 'E'/45 console.c:549: Test failed: At (53,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (54,27): expecting char 'H'/48 got 'E'/45 console.c:549: Test failed: At (54,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (55,27): expecting char 'I'/49 got 'E'/45 console.c:549: Test failed: At (55,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (56,27): expecting char 'J'/4a got 'E'/45 console.c:549: Test failed: At (56,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (57,27): expecting char 'K'/4b got 'E'/45 console.c:549: Test failed: At (57,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (58,27): expecting char 'L'/4c got 'E'/45 console.c:549: Test failed: At (58,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (59,27): expecting char 'M'/4d got 'E'/45 console.c:549: Test failed: At (59,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (60,27): expecting char 'N'/4e got 'E'/45 console.c:549: Test failed: At (60,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (61,27): expecting char 'O'/4f got 'E'/45 console.c:549: Test failed: At (61,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (62,27): expecting char 'P'/50 got 'E'/45 console.c:549: Test failed: At (62,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (63,27): expecting char 'Q'/51 got 'E'/45 console.c:549: Test failed: At (63,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (64,27): expecting char 'R'/52 got 'E'/45 console.c:549: Test failed: At (64,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (65,27): expecting char 'S'/53 got 'E'/45 console.c:549: Test failed: At (65,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (66,27): expecting char 'T'/54 got 'E'/45 console.c:549: Test failed: At (66,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (67,27): expecting char 'U'/55 got 'E'/45 console.c:549: Test failed: At (67,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (68,27): expecting char 'V'/56 got 'E'/45 console.c:549: Test failed: At (68,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (69,27): expecting char 'W'/57 got 'E'/45 console.c:549: Test failed: At (69,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (70,27): expecting char 'A'/41 got 'E'/45 console.c:549: Test failed: At (70,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (71,27): expecting char 'B'/42 got 'E'/45 console.c:549: Test failed: At (71,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (72,27): expecting char 'C'/43 got 'E'/45 console.c:549: Test failed: At (72,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (73,27): expecting char 'D'/44 got 'E'/45 console.c:549: Test failed: At (73,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (74,27): expecting char 'E'/45 got 'E'/45 console.c:549: Test failed: At (74,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (75,27): expecting char 'F'/46 got 'E'/45 console.c:549: Test failed: At (75,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (76,27): expecting char 'G'/47 got 'E'/45 console.c:549: Test failed: At (76,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (77,27): expecting char 'H'/48 got 'E'/45 console.c:549: Test failed: At (77,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (78,27): expecting char 'I'/49 got 'E'/45 console.c:549: Test failed: At (78,27): expecting attr 0007 got 0007 console.c:549: Test failed: At (79,27): expecting char 'J'/4a got 'E'/45 console.c:549: Test failed: At (79,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (0,25): expecting char 'L'/4c got 'E'/45 console.c:583: Test failed: At (0,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (1,25): expecting char 'M'/4d got 'E'/45 console.c:583: Test failed: At (1,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (2,25): expecting char 'N'/4e got 'E'/45 console.c:583: Test failed: At (2,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (3,25): expecting char 'O'/4f got 'E'/45 console.c:583: Test failed: At (3,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (4,25): expecting char 'P'/50 got 'E'/45 console.c:583: Test failed: At (4,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (5,25): expecting char 'Q'/51 got 'E'/45 console.c:583: Test failed: At (5,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (6,25): expecting char 'R'/52 got 'E'/45 console.c:583: Test failed: At (6,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (7,25): expecting char 'S'/53 got 'E'/45 console.c:583: Test failed: At (7,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (8,25): expecting char 'T'/54 got 'E'/45 console.c:583: Test failed: At (8,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (9,25): expecting char 'U'/55 got 'E'/45 console.c:583: Test failed: At (9,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (10,25): expecting char 'V'/56 got 'E'/45 console.c:583: Test failed: At (10,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (11,25): expecting char 'W'/57 got 'E'/45 console.c:583: Test failed: At (11,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (12,25): expecting char 'A'/41 got 'E'/45 console.c:583: Test failed: At (12,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (13,25): expecting char 'B'/42 got 'E'/45 console.c:583: Test failed: At (13,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (14,25): expecting char 'C'/43 got 'E'/45 console.c:583: Test failed: At (14,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (15,25): expecting char 'D'/44 got 'E'/45 console.c:583: Test failed: At (15,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (16,25): expecting char 'E'/45 got 'E'/45 console.c:583: Test failed: At (16,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (17,25): expecting char 'F'/46 got 'E'/45 console.c:583: Test failed: At (17,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (18,25): expecting char 'G'/47 got 'E'/45 console.c:583: Test failed: At (18,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (19,25): expecting char 'H'/48 got 'E'/45 console.c:583: Test failed: At (19,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (20,25): expecting char 'I'/49 got 'E'/45 console.c:583: Test failed: At (20,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (21,25): expecting char 'J'/4a got 'E'/45 console.c:583: Test failed: At (21,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (22,25): expecting char 'K'/4b got 'E'/45 console.c:583: Test failed: At (22,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (23,25): expecting char 'L'/4c got 'E'/45 console.c:583: Test failed: At (23,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (24,25): expecting char 'M'/4d got 'E'/45 console.c:583: Test failed: At (24,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (25,25): expecting char 'N'/4e got 'E'/45 console.c:583: Test failed: At (25,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (26,25): expecting char 'O'/4f got 'E'/45 console.c:583: Test failed: At (26,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (27,25): expecting char 'P'/50 got 'E'/45 console.c:583: Test failed: At (27,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (28,25): expecting char 'Q'/51 got 'E'/45 console.c:583: Test failed: At (28,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (29,25): expecting char 'R'/52 got 'E'/45 console.c:583: Test failed: At (29,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (30,25): expecting char 'S'/53 got 'E'/45 console.c:583: Test failed: At (30,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (31,25): expecting char 'T'/54 got 'E'/45 console.c:583: Test failed: At (31,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (32,25): expecting char 'U'/55 got 'E'/45 console.c:583: Test failed: At (32,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (33,25): expecting char 'V'/56 got 'E'/45 console.c:583: Test failed: At (33,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (34,25): expecting char 'W'/57 got 'E'/45 console.c:583: Test failed: At (34,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (35,25): expecting char 'A'/41 got 'E'/45 console.c:583: Test failed: At (35,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (36,25): expecting char 'B'/42 got 'E'/45 console.c:583: Test failed: At (36,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (37,25): expecting char 'C'/43 got 'E'/45 console.c:583: Test failed: At (37,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (38,25): expecting char 'D'/44 got 'E'/45 console.c:583: Test failed: At (38,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (39,25): expecting char 'E'/45 got 'E'/45 console.c:583: Test failed: At (39,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (40,25): expecting char 'F'/46 got 'E'/45 console.c:583: Test failed: At (40,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (41,25): expecting char 'G'/47 got 'E'/45 console.c:583: Test failed: At (41,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (42,25): expecting char 'H'/48 got 'E'/45 console.c:583: Test failed: At (42,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (43,25): expecting char 'I'/49 got 'E'/45 console.c:583: Test failed: At (43,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (44,25): expecting char 'J'/4a got 'E'/45 console.c:583: Test failed: At (44,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (45,25): expecting char 'K'/4b got 'E'/45 console.c:583: Test failed: At (45,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (46,25): expecting char 'L'/4c got 'E'/45 console.c:583: Test failed: At (46,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (47,25): expecting char 'M'/4d got 'E'/45 console.c:583: Test failed: At (47,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (48,25): expecting char 'N'/4e got 'E'/45 console.c:583: Test failed: At (48,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (49,25): expecting char 'O'/4f got 'E'/45 console.c:583: Test failed: At (49,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (50,25): expecting char 'P'/50 got 'E'/45 console.c:583: Test failed: At (50,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (51,25): expecting char 'Q'/51 got 'E'/45 console.c:583: Test failed: At (51,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (52,25): expecting char 'R'/52 got 'E'/45 console.c:583: Test failed: At (52,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (53,25): expecting char 'S'/53 got 'E'/45 console.c:583: Test failed: At (53,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (54,25): expecting char 'T'/54 got 'E'/45 console.c:583: Test failed: At (54,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (55,25): expecting char 'U'/55 got 'E'/45 console.c:583: Test failed: At (55,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (56,25): expecting char 'V'/56 got 'E'/45 console.c:583: Test failed: At (56,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (57,25): expecting char 'W'/57 got 'E'/45 console.c:583: Test failed: At (57,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (58,25): expecting char 'A'/41 got 'E'/45 console.c:583: Test failed: At (58,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (59,25): expecting char 'B'/42 got 'E'/45 console.c:583: Test failed: At (59,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (60,25): expecting char 'C'/43 got 'E'/45 console.c:583: Test failed: At (60,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (61,25): expecting char 'D'/44 got 'E'/45 console.c:583: Test failed: At (61,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (62,25): expecting char 'E'/45 got 'E'/45 console.c:583: Test failed: At (62,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (63,25): expecting char 'F'/46 got 'E'/45 console.c:583: Test failed: At (63,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (64,25): expecting char 'G'/47 got 'E'/45 console.c:583: Test failed: At (64,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (65,25): expecting char 'H'/48 got 'E'/45 console.c:583: Test failed: At (65,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (66,25): expecting char 'I'/49 got 'E'/45 console.c:583: Test failed: At (66,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (67,25): expecting char 'J'/4a got 'E'/45 console.c:583: Test failed: At (67,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (68,25): expecting char 'K'/4b got 'E'/45 console.c:583: Test failed: At (68,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (69,25): expecting char 'L'/4c got 'E'/45 console.c:583: Test failed: At (69,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (70,25): expecting char 'M'/4d got 'E'/45 console.c:583: Test failed: At (70,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (71,25): expecting char 'N'/4e got 'E'/45 console.c:583: Test failed: At (71,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (72,25): expecting char 'O'/4f got 'E'/45 console.c:583: Test failed: At (72,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (73,25): expecting char 'P'/50 got 'E'/45 console.c:583: Test failed: At (73,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (74,25): expecting char 'Q'/51 got 'E'/45 console.c:583: Test failed: At (74,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (75,25): expecting char 'R'/52 got 'E'/45 console.c:583: Test failed: At (75,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (76,25): expecting char 'S'/53 got 'E'/45 console.c:583: Test failed: At (76,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (77,25): expecting char 'T'/54 got 'E'/45 console.c:583: Test failed: At (77,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (78,25): expecting char 'U'/55 got 'E'/45 console.c:583: Test failed: At (78,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (79,25): expecting char 'V'/56 got 'E'/45 console.c:583: Test failed: At (79,25): expecting attr 0007 got 0007 console.c:583: Test failed: At (0,26): expecting char 'F'/46 got 'E'/45 console.c:583: Test failed: At (0,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (1,26): expecting char 'G'/47 got 'E'/45 console.c:583: Test failed: At (1,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (2,26): expecting char 'H'/48 got 'E'/45 console.c:583: Test failed: At (2,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (3,26): expecting char 'I'/49 got 'E'/45 console.c:583: Test failed: At (3,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (4,26): expecting char 'J'/4a got 'E'/45 console.c:583: Test failed: At (4,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (5,26): expecting char 'K'/4b got 'E'/45 console.c:583: Test failed: At (5,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (6,26): expecting char 'L'/4c got 'E'/45 console.c:583: Test failed: At (6,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (7,26): expecting char 'M'/4d got 'E'/45 console.c:583: Test failed: At (7,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (8,26): expecting char 'N'/4e got 'E'/45 console.c:583: Test failed: At (8,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (9,26): expecting char 'O'/4f got 'E'/45 console.c:583: Test failed: At (9,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (10,26): expecting char 'P'/50 got 'E'/45 console.c:583: Test failed: At (10,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (11,26): expecting char 'Q'/51 got 'E'/45 console.c:583: Test failed: At (11,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (12,26): expecting char 'R'/52 got 'E'/45 console.c:583: Test failed: At (12,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (13,26): expecting char 'S'/53 got 'E'/45 console.c:583: Test failed: At (13,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (14,26): expecting char 'T'/54 got 'E'/45 console.c:583: Test failed: At (14,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (15,26): expecting char 'U'/55 got 'E'/45 console.c:583: Test failed: At (15,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (16,26): expecting char 'V'/56 got 'E'/45 console.c:583: Test failed: At (16,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (17,26): expecting char 'W'/57 got 'E'/45 console.c:583: Test failed: At (17,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (18,26): expecting char 'A'/41 got 'E'/45 console.c:583: Test failed: At (18,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (19,26): expecting char 'B'/42 got 'E'/45 console.c:583: Test failed: At (19,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (20,26): expecting char 'C'/43 got 'E'/45 console.c:583: Test failed: At (20,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (21,26): expecting char 'D'/44 got 'E'/45 console.c:583: Test failed: At (21,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (22,26): expecting char 'E'/45 got 'E'/45 console.c:583: Test failed: At (22,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (23,26): expecting char 'F'/46 got 'E'/45 console.c:583: Test failed: At (23,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (24,26): expecting char 'G'/47 got 'E'/45 console.c:583: Test failed: At (24,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (25,26): expecting char 'H'/48 got 'E'/45 console.c:583: Test failed: At (25,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (26,26): expecting char 'I'/49 got 'E'/45 console.c:583: Test failed: At (26,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (27,26): expecting char 'J'/4a got 'E'/45 console.c:583: Test failed: At (27,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (28,26): expecting char 'K'/4b got 'E'/45 console.c:583: Test failed: At (28,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (29,26): expecting char 'L'/4c got 'E'/45 console.c:583: Test failed: At (29,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (30,26): expecting char 'M'/4d got 'E'/45 console.c:583: Test failed: At (30,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (31,26): expecting char 'N'/4e got 'E'/45 console.c:583: Test failed: At (31,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (32,26): expecting char 'O'/4f got 'E'/45 console.c:583: Test failed: At (32,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (33,26): expecting char 'P'/50 got 'E'/45 console.c:583: Test failed: At (33,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (34,26): expecting char 'Q'/51 got 'E'/45 console.c:583: Test failed: At (34,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (35,26): expecting char 'R'/52 got 'E'/45 console.c:583: Test failed: At (35,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (36,26): expecting char 'S'/53 got 'E'/45 console.c:583: Test failed: At (36,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (37,26): expecting char 'T'/54 got 'E'/45 console.c:583: Test failed: At (37,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (38,26): expecting char 'U'/55 got 'E'/45 console.c:583: Test failed: At (38,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (39,26): expecting char 'V'/56 got 'E'/45 console.c:583: Test failed: At (39,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (40,26): expecting char 'W'/57 got 'E'/45 console.c:583: Test failed: At (40,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (41,26): expecting char 'A'/41 got 'E'/45 console.c:583: Test failed: At (41,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (42,26): expecting char 'B'/42 got 'E'/45 console.c:583: Test failed: At (42,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (43,26): expecting char 'C'/43 got 'E'/45 console.c:583: Test failed: At (43,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (44,26): expecting char 'D'/44 got 'E'/45 console.c:583: Test failed: At (44,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (45,26): expecting char 'E'/45 got 'E'/45 console.c:583: Test failed: At (45,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (46,26): expecting char 'F'/46 got 'E'/45 console.c:583: Test failed: At (46,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (47,26): expecting char 'G'/47 got 'E'/45 console.c:583: Test failed: At (47,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (48,26): expecting char 'H'/48 got 'E'/45 console.c:583: Test failed: At (48,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (49,26): expecting char 'I'/49 got 'E'/45 console.c:583: Test failed: At (49,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (50,26): expecting char 'J'/4a got 'E'/45 console.c:583: Test failed: At (50,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (51,26): expecting char 'K'/4b got 'E'/45 console.c:583: Test failed: At (51,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (52,26): expecting char 'L'/4c got 'E'/45 console.c:583: Test failed: At (52,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (53,26): expecting char 'M'/4d got 'E'/45 console.c:583: Test failed: At (53,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (54,26): expecting char 'N'/4e got 'E'/45 console.c:583: Test failed: At (54,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (55,26): expecting char 'O'/4f got 'E'/45 console.c:583: Test failed: At (55,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (56,26): expecting char 'P'/50 got 'E'/45 console.c:583: Test failed: At (56,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (57,26): expecting char 'Q'/51 got 'E'/45 console.c:583: Test failed: At (57,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (58,26): expecting char 'R'/52 got 'E'/45 console.c:583: Test failed: At (58,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (59,26): expecting char 'S'/53 got 'E'/45 console.c:583: Test failed: At (59,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (60,26): expecting char 'T'/54 got 'E'/45 console.c:583: Test failed: At (60,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (61,26): expecting char 'U'/55 got 'E'/45 console.c:583: Test failed: At (61,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (62,26): expecting char 'V'/56 got 'E'/45 console.c:583: Test failed: At (62,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (63,26): expecting char 'W'/57 got 'E'/45 console.c:583: Test failed: At (63,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (64,26): expecting char 'A'/41 got 'E'/45 console.c:583: Test failed: At (64,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (65,26): expecting char 'B'/42 got 'E'/45 console.c:583: Test failed: At (65,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (66,26): expecting char 'C'/43 got 'E'/45 console.c:583: Test failed: At (66,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (67,26): expecting char 'D'/44 got 'E'/45 console.c:583: Test failed: At (67,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (68,26): expecting char 'E'/45 got 'E'/45 console.c:583: Test failed: At (68,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (69,26): expecting char 'F'/46 got 'E'/45 console.c:583: Test failed: At (69,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (70,26): expecting char 'G'/47 got 'E'/45 console.c:583: Test failed: At (70,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (71,26): expecting char 'H'/48 got 'E'/45 console.c:583: Test failed: At (71,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (72,26): expecting char 'I'/49 got 'E'/45 console.c:583: Test failed: At (72,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (73,26): expecting char 'J'/4a got 'E'/45 console.c:583: Test failed: At (73,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (74,26): expecting char 'K'/4b got 'E'/45 console.c:583: Test failed: At (74,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (75,26): expecting char 'L'/4c got 'E'/45 console.c:583: Test failed: At (75,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (76,26): expecting char 'M'/4d got 'E'/45 console.c:583: Test failed: At (76,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (77,26): expecting char 'N'/4e got 'E'/45 console.c:583: Test failed: At (77,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (78,26): expecting char 'O'/4f got 'E'/45 console.c:583: Test failed: At (78,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (79,26): expecting char 'P'/50 got 'E'/45 console.c:583: Test failed: At (79,26): expecting attr 0007 got 0007 console.c:583: Test failed: At (0,27): expecting char 'W'/57 got 'E'/45 console.c:583: Test failed: At (0,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (1,27): expecting char 'A'/41 got 'E'/45 console.c:583: Test failed: At (1,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (2,27): expecting char 'B'/42 got 'E'/45 console.c:583: Test failed: At (2,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (3,27): expecting char 'C'/43 got 'E'/45 console.c:583: Test failed: At (3,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (4,27): expecting char 'D'/44 got 'E'/45 console.c:583: Test failed: At (4,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (5,27): expecting char 'E'/45 got 'E'/45 console.c:583: Test failed: At (5,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (6,27): expecting char 'F'/46 got 'E'/45 console.c:583: Test failed: At (6,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (7,27): expecting char 'G'/47 got 'E'/45 console.c:583: Test failed: At (7,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (8,27): expecting char 'H'/48 got 'E'/45 console.c:583: Test failed: At (8,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (9,27): expecting char 'I'/49 got 'E'/45 console.c:583: Test failed: At (9,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (10,27): expecting char 'J'/4a got 'E'/45 console.c:583: Test failed: At (10,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (11,27): expecting char 'K'/4b got 'E'/45 console.c:583: Test failed: At (11,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (12,27): expecting char 'L'/4c got 'E'/45 console.c:583: Test failed: At (12,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (13,27): expecting char 'M'/4d got 'E'/45 console.c:583: Test failed: At (13,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (14,27): expecting char 'N'/4e got 'E'/45 console.c:583: Test failed: At (14,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (15,27): expecting char 'O'/4f got 'E'/45 console.c:583: Test failed: At (15,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (16,27): expecting char 'P'/50 got 'E'/45 console.c:583: Test failed: At (16,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (17,27): expecting char 'Q'/51 got 'E'/45 console.c:583: Test failed: At (17,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (18,27): expecting char 'R'/52 got 'E'/45 console.c:583: Test failed: At (18,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (19,27): expecting char 'S'/53 got 'E'/45 console.c:583: Test failed: At (19,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (20,27): expecting char 'T'/54 got 'E'/45 console.c:583: Test failed: At (20,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (21,27): expecting char 'U'/55 got 'E'/45 console.c:583: Test failed: At (21,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (22,27): expecting char 'V'/56 got 'E'/45 console.c:583: Test failed: At (22,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (23,27): expecting char 'W'/57 got 'E'/45 console.c:583: Test failed: At (23,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (24,27): expecting char 'A'/41 got 'E'/45 console.c:583: Test failed: At (24,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (25,27): expecting char 'B'/42 got 'E'/45 console.c:583: Test failed: At (25,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (26,27): expecting char 'C'/43 got 'E'/45 console.c:583: Test failed: At (26,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (27,27): expecting char 'D'/44 got 'E'/45 console.c:583: Test failed: At (27,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (28,27): expecting char 'E'/45 got 'E'/45 console.c:583: Test failed: At (28,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (29,27): expecting char 'F'/46 got 'E'/45 console.c:583: Test failed: At (29,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (30,27): expecting char 'G'/47 got 'E'/45 console.c:583: Test failed: At (30,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (31,27): expecting char 'H'/48 got 'E'/45 console.c:583: Test failed: At (31,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (32,27): expecting char 'I'/49 got 'E'/45 console.c:583: Test failed: At (32,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (33,27): expecting char 'J'/4a got 'E'/45 console.c:583: Test failed: At (33,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (34,27): expecting char 'K'/4b got 'E'/45 console.c:583: Test failed: At (34,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (35,27): expecting char 'L'/4c got 'E'/45 console.c:583: Test failed: At (35,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (36,27): expecting char 'M'/4d got 'E'/45 console.c:583: Test failed: At (36,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (37,27): expecting char 'N'/4e got 'E'/45 console.c:583: Test failed: At (37,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (38,27): expecting char 'O'/4f got 'E'/45 console.c:583: Test failed: At (38,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (39,27): expecting char 'P'/50 got 'E'/45 console.c:583: Test failed: At (39,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (40,27): expecting char 'Q'/51 got 'E'/45 console.c:583: Test failed: At (40,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (41,27): expecting char 'R'/52 got 'E'/45 console.c:583: Test failed: At (41,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (42,27): expecting char 'S'/53 got 'E'/45 console.c:583: Test failed: At (42,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (43,27): expecting char 'T'/54 got 'E'/45 console.c:583: Test failed: At (43,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (44,27): expecting char 'U'/55 got 'E'/45 console.c:583: Test failed: At (44,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (45,27): expecting char 'V'/56 got 'E'/45 console.c:583: Test failed: At (45,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (46,27): expecting char 'W'/57 got 'E'/45 console.c:583: Test failed: At (46,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (47,27): expecting char 'A'/41 got 'E'/45 console.c:583: Test failed: At (47,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (48,27): expecting char 'B'/42 got 'E'/45 console.c:583: Test failed: At (48,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (49,27): expecting char 'C'/43 got 'E'/45 console.c:583: Test failed: At (49,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (50,27): expecting char 'D'/44 got 'E'/45 console.c:583: Test failed: At (50,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (51,27): expecting char 'E'/45 got 'E'/45 console.c:583: Test failed: At (51,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (52,27): expecting char 'F'/46 got 'E'/45 console.c:583: Test failed: At (52,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (53,27): expecting char 'G'/47 got 'E'/45 console.c:583: Test failed: At (53,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (54,27): expecting char 'H'/48 got 'E'/45 console.c:583: Test failed: At (54,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (55,27): expecting char 'I'/49 got 'E'/45 console.c:583: Test failed: At (55,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (56,27): expecting char 'J'/4a got 'E'/45 console.c:583: Test failed: At (56,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (57,27): expecting char 'K'/4b got 'E'/45 console.c:583: Test failed: At (57,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (58,27): expecting char 'L'/4c got 'E'/45 console.c:583: Test failed: At (58,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (59,27): expecting char 'M'/4d got 'E'/45 console.c:583: Test failed: At (59,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (60,27): expecting char 'N'/4e got 'E'/45 console.c:583: Test failed: At (60,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (61,27): expecting char 'O'/4f got 'E'/45 console.c:583: Test failed: At (61,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (62,27): expecting char 'P'/50 got 'E'/45 console.c:583: Test failed: At (62,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (63,27): expecting char 'Q'/51 got 'E'/45 console.c:583: Test failed: At (63,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (64,27): expecting char 'R'/52 got 'E'/45 console.c:583: Test failed: At (64,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (65,27): expecting char 'S'/53 got 'E'/45 console.c:583: Test failed: At (65,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (66,27): expecting char 'T'/54 got 'E'/45 console.c:583: Test failed: At (66,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (67,27): expecting char 'U'/55 got 'E'/45 console.c:583: Test failed: At (67,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (68,27): expecting char 'V'/56 got 'E'/45 console.c:583: Test failed: At (68,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (69,27): expecting char 'W'/57 got 'E'/45 console.c:583: Test failed: At (69,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (70,27): expecting char 'A'/41 got 'E'/45 console.c:583: Test failed: At (70,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (71,27): expecting char 'B'/42 got 'E'/45 console.c:583: Test failed: At (71,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (72,27): expecting char 'C'/43 got 'E'/45 console.c:583: Test failed: At (72,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (73,27): expecting char 'D'/44 got 'E'/45 console.c:583: Test failed: At (73,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (74,27): expecting char 'E'/45 got 'E'/45 console.c:583: Test failed: At (74,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (75,27): expecting char 'F'/46 got 'E'/45 console.c:583: Test failed: At (75,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (76,27): expecting char 'G'/47 got 'E'/45 console.c:583: Test failed: At (76,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (77,27): expecting char 'H'/48 got 'E'/45 console.c:583: Test failed: At (77,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (78,27): expecting char 'I'/49 got 'E'/45 console.c:583: Test failed: At (78,27): expecting attr 0007 got 0007 console.c:583: Test failed: At (79,27): expecting char 'J'/4a got 'E'/45 console.c:583: Test failed: At (79,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (0,25): expecting char 'L'/4c got 'E'/45 console.c:620: Test failed: At (0,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (1,25): expecting char 'M'/4d got 'E'/45 console.c:620: Test failed: At (1,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (2,25): expecting char 'N'/4e got 'E'/45 console.c:620: Test failed: At (2,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (3,25): expecting char 'O'/4f got 'E'/45 console.c:620: Test failed: At (3,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (4,25): expecting char 'P'/50 got 'E'/45 console.c:620: Test failed: At (4,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (5,25): expecting char 'Q'/51 got 'E'/45 console.c:620: Test failed: At (5,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (6,25): expecting char 'R'/52 got 'E'/45 console.c:620: Test failed: At (6,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (7,25): expecting char 'S'/53 got 'E'/45 console.c:620: Test failed: At (7,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (8,25): expecting char 'T'/54 got 'E'/45 console.c:620: Test failed: At (8,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (9,25): expecting char 'U'/55 got 'E'/45 console.c:620: Test failed: At (9,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (10,25): expecting char 'V'/56 got 'E'/45 console.c:620: Test failed: At (10,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (11,25): expecting char 'W'/57 got 'E'/45 console.c:620: Test failed: At (11,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (12,25): expecting char 'A'/41 got 'E'/45 console.c:620: Test failed: At (12,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (13,25): expecting char 'B'/42 got 'E'/45 console.c:620: Test failed: At (13,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (14,25): expecting char 'C'/43 got 'E'/45 console.c:620: Test failed: At (14,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (15,25): expecting char 'D'/44 got 'E'/45 console.c:620: Test failed: At (15,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (16,25): expecting char 'E'/45 got 'E'/45 console.c:620: Test failed: At (16,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (17,25): expecting char 'F'/46 got 'E'/45 console.c:620: Test failed: At (17,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (18,25): expecting char 'G'/47 got 'E'/45 console.c:620: Test failed: At (18,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (19,25): expecting char 'H'/48 got 'E'/45 console.c:620: Test failed: At (19,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (20,25): expecting char 'I'/49 got 'E'/45 console.c:620: Test failed: At (20,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (21,25): expecting char 'J'/4a got 'E'/45 console.c:620: Test failed: At (21,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (22,25): expecting char 'K'/4b got 'E'/45 console.c:620: Test failed: At (22,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (23,25): expecting char 'L'/4c got 'E'/45 console.c:620: Test failed: At (23,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (24,25): expecting char 'M'/4d got 'E'/45 console.c:620: Test failed: At (24,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (25,25): expecting char 'N'/4e got 'E'/45 console.c:620: Test failed: At (25,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (26,25): expecting char 'O'/4f got 'E'/45 console.c:620: Test failed: At (26,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (27,25): expecting char 'P'/50 got 'E'/45 console.c:620: Test failed: At (27,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (28,25): expecting char 'Q'/51 got 'E'/45 console.c:620: Test failed: At (28,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (29,25): expecting char 'R'/52 got 'E'/45 console.c:620: Test failed: At (29,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (30,25): expecting char 'S'/53 got 'E'/45 console.c:620: Test failed: At (30,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (31,25): expecting char 'T'/54 got 'E'/45 console.c:620: Test failed: At (31,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (32,25): expecting char 'U'/55 got 'E'/45 console.c:620: Test failed: At (32,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (33,25): expecting char 'V'/56 got 'E'/45 console.c:620: Test failed: At (33,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (34,25): expecting char 'W'/57 got 'E'/45 console.c:620: Test failed: At (34,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (35,25): expecting char 'A'/41 got 'E'/45 console.c:620: Test failed: At (35,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (36,25): expecting char 'B'/42 got 'E'/45 console.c:620: Test failed: At (36,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (37,25): expecting char 'C'/43 got 'E'/45 console.c:620: Test failed: At (37,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (38,25): expecting char 'D'/44 got 'E'/45 console.c:620: Test failed: At (38,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (39,25): expecting char 'E'/45 got 'E'/45 console.c:620: Test failed: At (39,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (40,25): expecting char 'F'/46 got 'E'/45 console.c:620: Test failed: At (40,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (41,25): expecting char 'G'/47 got 'E'/45 console.c:620: Test failed: At (41,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (42,25): expecting char 'H'/48 got 'E'/45 console.c:620: Test failed: At (42,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (43,25): expecting char 'I'/49 got 'E'/45 console.c:620: Test failed: At (43,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (44,25): expecting char 'J'/4a got 'E'/45 console.c:620: Test failed: At (44,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (45,25): expecting char 'K'/4b got 'E'/45 console.c:620: Test failed: At (45,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (46,25): expecting char 'L'/4c got 'E'/45 console.c:620: Test failed: At (46,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (47,25): expecting char 'M'/4d got 'E'/45 console.c:620: Test failed: At (47,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (48,25): expecting char 'N'/4e got 'E'/45 console.c:620: Test failed: At (48,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (49,25): expecting char 'O'/4f got 'E'/45 console.c:620: Test failed: At (49,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (50,25): expecting char 'P'/50 got 'E'/45 console.c:620: Test failed: At (50,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (51,25): expecting char 'Q'/51 got 'E'/45 console.c:620: Test failed: At (51,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (52,25): expecting char 'R'/52 got 'E'/45 console.c:620: Test failed: At (52,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (53,25): expecting char 'S'/53 got 'E'/45 console.c:620: Test failed: At (53,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (54,25): expecting char 'T'/54 got 'E'/45 console.c:620: Test failed: At (54,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (55,25): expecting char 'U'/55 got 'E'/45 console.c:620: Test failed: At (55,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (56,25): expecting char 'V'/56 got 'E'/45 console.c:620: Test failed: At (56,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (57,25): expecting char 'W'/57 got 'E'/45 console.c:620: Test failed: At (57,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (58,25): expecting char 'A'/41 got 'E'/45 console.c:620: Test failed: At (58,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (59,25): expecting char 'B'/42 got 'E'/45 console.c:620: Test failed: At (59,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (60,25): expecting char 'C'/43 got 'E'/45 console.c:620: Test failed: At (60,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (61,25): expecting char 'D'/44 got 'E'/45 console.c:620: Test failed: At (61,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (62,25): expecting char 'E'/45 got 'E'/45 console.c:620: Test failed: At (62,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (63,25): expecting char 'F'/46 got 'E'/45 console.c:620: Test failed: At (63,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (64,25): expecting char 'G'/47 got 'E'/45 console.c:620: Test failed: At (64,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (65,25): expecting char 'H'/48 got 'E'/45 console.c:620: Test failed: At (65,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (66,25): expecting char 'I'/49 got 'E'/45 console.c:620: Test failed: At (66,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (67,25): expecting char 'J'/4a got 'E'/45 console.c:620: Test failed: At (67,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (68,25): expecting char 'K'/4b got 'E'/45 console.c:620: Test failed: At (68,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (69,25): expecting char 'L'/4c got 'E'/45 console.c:620: Test failed: At (69,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (70,25): expecting char 'M'/4d got 'E'/45 console.c:620: Test failed: At (70,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (71,25): expecting char 'N'/4e got 'E'/45 console.c:620: Test failed: At (71,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (72,25): expecting char 'O'/4f got 'E'/45 console.c:620: Test failed: At (72,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (73,25): expecting char 'P'/50 got 'E'/45 console.c:620: Test failed: At (73,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (74,25): expecting char 'Q'/51 got 'E'/45 console.c:620: Test failed: At (74,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (75,25): expecting char 'R'/52 got 'E'/45 console.c:620: Test failed: At (75,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (76,25): expecting char 'S'/53 got 'E'/45 console.c:620: Test failed: At (76,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (77,25): expecting char 'T'/54 got 'E'/45 console.c:620: Test failed: At (77,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (78,25): expecting char 'U'/55 got 'E'/45 console.c:620: Test failed: At (78,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (79,25): expecting char 'V'/56 got 'E'/45 console.c:620: Test failed: At (79,25): expecting attr 0007 got 0007 console.c:620: Test failed: At (0,26): expecting char 'F'/46 got 'E'/45 console.c:620: Test failed: At (0,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (1,26): expecting char 'G'/47 got 'E'/45 console.c:620: Test failed: At (1,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (2,26): expecting char 'H'/48 got 'E'/45 console.c:620: Test failed: At (2,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (3,26): expecting char 'I'/49 got 'E'/45 console.c:620: Test failed: At (3,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (4,26): expecting char 'J'/4a got 'E'/45 console.c:620: Test failed: At (4,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (5,26): expecting char 'K'/4b got 'E'/45 console.c:620: Test failed: At (5,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (6,26): expecting char 'L'/4c got 'E'/45 console.c:620: Test failed: At (6,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (7,26): expecting char 'M'/4d got 'E'/45 console.c:620: Test failed: At (7,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (8,26): expecting char 'N'/4e got 'E'/45 console.c:620: Test failed: At (8,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (9,26): expecting char 'O'/4f got 'E'/45 console.c:620: Test failed: At (9,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (10,26): expecting char 'P'/50 got 'E'/45 console.c:620: Test failed: At (10,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (11,26): expecting char 'Q'/51 got 'E'/45 console.c:620: Test failed: At (11,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (12,26): expecting char 'R'/52 got 'E'/45 console.c:620: Test failed: At (12,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (13,26): expecting char 'S'/53 got 'E'/45 console.c:620: Test failed: At (13,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (14,26): expecting char 'T'/54 got 'E'/45 console.c:620: Test failed: At (14,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (15,26): expecting char 'U'/55 got 'E'/45 console.c:620: Test failed: At (15,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (16,26): expecting char 'V'/56 got 'E'/45 console.c:620: Test failed: At (16,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (17,26): expecting char 'W'/57 got 'E'/45 console.c:620: Test failed: At (17,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (18,26): expecting char 'A'/41 got 'E'/45 console.c:620: Test failed: At (18,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (19,26): expecting char 'B'/42 got 'E'/45 console.c:620: Test failed: At (19,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (20,26): expecting char 'C'/43 got 'E'/45 console.c:620: Test failed: At (20,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (21,26): expecting char 'D'/44 got 'E'/45 console.c:620: Test failed: At (21,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (22,26): expecting char 'E'/45 got 'E'/45 console.c:620: Test failed: At (22,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (23,26): expecting char 'F'/46 got 'E'/45 console.c:620: Test failed: At (23,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (24,26): expecting char 'G'/47 got 'E'/45 console.c:620: Test failed: At (24,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (25,26): expecting char 'H'/48 got 'E'/45 console.c:620: Test failed: At (25,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (26,26): expecting char 'I'/49 got 'E'/45 console.c:620: Test failed: At (26,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (27,26): expecting char 'J'/4a got 'E'/45 console.c:620: Test failed: At (27,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (28,26): expecting char 'K'/4b got 'E'/45 console.c:620: Test failed: At (28,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (29,26): expecting char 'L'/4c got 'E'/45 console.c:620: Test failed: At (29,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (30,26): expecting char 'M'/4d got 'E'/45 console.c:620: Test failed: At (30,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (31,26): expecting char 'N'/4e got 'E'/45 console.c:620: Test failed: At (31,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (32,26): expecting char 'O'/4f got 'E'/45 console.c:620: Test failed: At (32,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (33,26): expecting char 'P'/50 got 'E'/45 console.c:620: Test failed: At (33,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (34,26): expecting char 'Q'/51 got 'E'/45 console.c:620: Test failed: At (34,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (35,26): expecting char 'R'/52 got 'E'/45 console.c:620: Test failed: At (35,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (36,26): expecting char 'S'/53 got 'E'/45 console.c:620: Test failed: At (36,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (37,26): expecting char 'T'/54 got 'E'/45 console.c:620: Test failed: At (37,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (38,26): expecting char 'U'/55 got 'E'/45 console.c:620: Test failed: At (38,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (39,26): expecting char 'V'/56 got 'E'/45 console.c:620: Test failed: At (39,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (40,26): expecting char 'W'/57 got 'E'/45 console.c:620: Test failed: At (40,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (41,26): expecting char 'A'/41 got 'E'/45 console.c:620: Test failed: At (41,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (42,26): expecting char 'B'/42 got 'E'/45 console.c:620: Test failed: At (42,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (43,26): expecting char 'C'/43 got 'E'/45 console.c:620: Test failed: At (43,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (44,26): expecting char 'D'/44 got 'E'/45 console.c:620: Test failed: At (44,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (45,26): expecting char 'E'/45 got 'E'/45 console.c:620: Test failed: At (45,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (46,26): expecting char 'F'/46 got 'E'/45 console.c:620: Test failed: At (46,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (47,26): expecting char 'G'/47 got 'E'/45 console.c:620: Test failed: At (47,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (48,26): expecting char 'H'/48 got 'E'/45 console.c:620: Test failed: At (48,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (49,26): expecting char 'I'/49 got 'E'/45 console.c:620: Test failed: At (49,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (50,26): expecting char 'J'/4a got 'E'/45 console.c:620: Test failed: At (50,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (51,26): expecting char 'K'/4b got 'E'/45 console.c:620: Test failed: At (51,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (52,26): expecting char 'L'/4c got 'E'/45 console.c:620: Test failed: At (52,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (53,26): expecting char 'M'/4d got 'E'/45 console.c:620: Test failed: At (53,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (54,26): expecting char 'N'/4e got 'E'/45 console.c:620: Test failed: At (54,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (55,26): expecting char 'O'/4f got 'E'/45 console.c:620: Test failed: At (55,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (56,26): expecting char 'P'/50 got 'E'/45 console.c:620: Test failed: At (56,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (57,26): expecting char 'Q'/51 got 'E'/45 console.c:620: Test failed: At (57,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (58,26): expecting char 'R'/52 got 'E'/45 console.c:620: Test failed: At (58,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (59,26): expecting char 'S'/53 got 'E'/45 console.c:620: Test failed: At (59,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (60,26): expecting char 'T'/54 got 'E'/45 console.c:620: Test failed: At (60,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (61,26): expecting char 'U'/55 got 'E'/45 console.c:620: Test failed: At (61,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (62,26): expecting char 'V'/56 got 'E'/45 console.c:620: Test failed: At (62,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (63,26): expecting char 'W'/57 got 'E'/45 console.c:620: Test failed: At (63,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (64,26): expecting char 'A'/41 got 'E'/45 console.c:620: Test failed: At (64,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (65,26): expecting char 'B'/42 got 'E'/45 console.c:620: Test failed: At (65,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (66,26): expecting char 'C'/43 got 'E'/45 console.c:620: Test failed: At (66,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (67,26): expecting char 'D'/44 got 'E'/45 console.c:620: Test failed: At (67,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (68,26): expecting char 'E'/45 got 'E'/45 console.c:620: Test failed: At (68,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (69,26): expecting char 'F'/46 got 'E'/45 console.c:620: Test failed: At (69,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (70,26): expecting char 'G'/47 got 'E'/45 console.c:620: Test failed: At (70,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (71,26): expecting char 'H'/48 got 'E'/45 console.c:620: Test failed: At (71,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (72,26): expecting char 'I'/49 got 'E'/45 console.c:620: Test failed: At (72,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (73,26): expecting char 'J'/4a got 'E'/45 console.c:620: Test failed: At (73,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (74,26): expecting char 'K'/4b got 'E'/45 console.c:620: Test failed: At (74,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (75,26): expecting char 'L'/4c got 'E'/45 console.c:620: Test failed: At (75,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (76,26): expecting char 'M'/4d got 'E'/45 console.c:620: Test failed: At (76,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (77,26): expecting char 'N'/4e got 'E'/45 console.c:620: Test failed: At (77,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (78,26): expecting char 'O'/4f got 'E'/45 console.c:620: Test failed: At (78,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (79,26): expecting char 'P'/50 got 'E'/45 console.c:620: Test failed: At (79,26): expecting attr 0007 got 0007 console.c:620: Test failed: At (0,27): expecting char 'W'/57 got 'E'/45 console.c:620: Test failed: At (0,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (1,27): expecting char 'A'/41 got 'E'/45 console.c:620: Test failed: At (1,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (2,27): expecting char 'B'/42 got 'E'/45 console.c:620: Test failed: At (2,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (3,27): expecting char 'C'/43 got 'E'/45 console.c:620: Test failed: At (3,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (4,27): expecting char 'D'/44 got 'E'/45 console.c:620: Test failed: At (4,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (5,27): expecting char 'E'/45 got 'E'/45 console.c:620: Test failed: At (5,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (6,27): expecting char 'F'/46 got 'E'/45 console.c:620: Test failed: At (6,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (7,27): expecting char 'G'/47 got 'E'/45 console.c:620: Test failed: At (7,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (8,27): expecting char 'H'/48 got 'E'/45 console.c:620: Test failed: At (8,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (9,27): expecting char 'I'/49 got 'E'/45 console.c:620: Test failed: At (9,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (10,27): expecting char 'J'/4a got 'E'/45 console.c:620: Test failed: At (10,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (11,27): expecting char 'K'/4b got 'E'/45 console.c:620: Test failed: At (11,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (12,27): expecting char 'L'/4c got 'E'/45 console.c:620: Test failed: At (12,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (13,27): expecting char 'M'/4d got 'E'/45 console.c:620: Test failed: At (13,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (14,27): expecting char 'N'/4e got 'E'/45 console.c:620: Test failed: At (14,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (15,27): expecting char 'O'/4f got 'E'/45 console.c:620: Test failed: At (15,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (16,27): expecting char 'P'/50 got 'E'/45 console.c:620: Test failed: At (16,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (17,27): expecting char 'Q'/51 got 'E'/45 console.c:620: Test failed: At (17,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (18,27): expecting char 'R'/52 got 'E'/45 console.c:620: Test failed: At (18,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (19,27): expecting char 'S'/53 got 'E'/45 console.c:620: Test failed: At (19,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (20,27): expecting char 'T'/54 got 'E'/45 console.c:620: Test failed: At (20,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (21,27): expecting char 'U'/55 got 'E'/45 console.c:620: Test failed: At (21,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (22,27): expecting char 'V'/56 got 'E'/45 console.c:620: Test failed: At (22,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (23,27): expecting char 'W'/57 got 'E'/45 console.c:620: Test failed: At (23,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (24,27): expecting char 'A'/41 got 'E'/45 console.c:620: Test failed: At (24,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (25,27): expecting char 'B'/42 got 'E'/45 console.c:620: Test failed: At (25,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (26,27): expecting char 'C'/43 got 'E'/45 console.c:620: Test failed: At (26,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (27,27): expecting char 'D'/44 got 'E'/45 console.c:620: Test failed: At (27,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (28,27): expecting char 'E'/45 got 'E'/45 console.c:620: Test failed: At (28,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (29,27): expecting char 'F'/46 got 'E'/45 console.c:620: Test failed: At (29,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (30,27): expecting char 'G'/47 got 'E'/45 console.c:620: Test failed: At (30,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (31,27): expecting char 'H'/48 got 'E'/45 console.c:620: Test failed: At (31,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (32,27): expecting char 'I'/49 got 'E'/45 console.c:620: Test failed: At (32,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (33,27): expecting char 'J'/4a got 'E'/45 console.c:620: Test failed: At (33,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (34,27): expecting char 'K'/4b got 'E'/45 console.c:620: Test failed: At (34,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (35,27): expecting char 'L'/4c got 'E'/45 console.c:620: Test failed: At (35,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (36,27): expecting char 'M'/4d got 'E'/45 console.c:620: Test failed: At (36,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (37,27): expecting char 'N'/4e got 'E'/45 console.c:620: Test failed: At (37,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (38,27): expecting char 'O'/4f got 'E'/45 console.c:620: Test failed: At (38,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (39,27): expecting char 'P'/50 got 'E'/45 console.c:620: Test failed: At (39,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (40,27): expecting char 'Q'/51 got 'E'/45 console.c:620: Test failed: At (40,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (41,27): expecting char 'R'/52 got 'E'/45 console.c:620: Test failed: At (41,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (42,27): expecting char 'S'/53 got 'E'/45 console.c:620: Test failed: At (42,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (43,27): expecting char 'T'/54 got 'E'/45 console.c:620: Test failed: At (43,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (44,27): expecting char 'U'/55 got 'E'/45 console.c:620: Test failed: At (44,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (45,27): expecting char 'V'/56 got 'E'/45 console.c:620: Test failed: At (45,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (46,27): expecting char 'W'/57 got 'E'/45 console.c:620: Test failed: At (46,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (47,27): expecting char 'A'/41 got 'E'/45 console.c:620: Test failed: At (47,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (48,27): expecting char 'B'/42 got 'E'/45 console.c:620: Test failed: At (48,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (49,27): expecting char 'C'/43 got 'E'/45 console.c:620: Test failed: At (49,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (50,27): expecting char 'D'/44 got 'E'/45 console.c:620: Test failed: At (50,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (51,27): expecting char 'E'/45 got 'E'/45 console.c:620: Test failed: At (51,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (52,27): expecting char 'F'/46 got 'E'/45 console.c:620: Test failed: At (52,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (53,27): expecting char 'G'/47 got 'E'/45 console.c:620: Test failed: At (53,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (54,27): expecting char 'H'/48 got 'E'/45 console.c:620: Test failed: At (54,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (55,27): expecting char 'I'/49 got 'E'/45 console.c:620: Test failed: At (55,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (56,27): expecting char 'J'/4a got 'E'/45 console.c:620: Test failed: At (56,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (57,27): expecting char 'K'/4b got 'E'/45 console.c:620: Test failed: At (57,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (58,27): expecting char 'L'/4c got 'E'/45 console.c:620: Test failed: At (58,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (59,27): expecting char 'M'/4d got 'E'/45 console.c:620: Test failed: At (59,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (60,27): expecting char 'N'/4e got 'E'/45 console.c:620: Test failed: At (60,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (61,27): expecting char 'O'/4f got 'E'/45 console.c:620: Test failed: At (61,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (62,27): expecting char 'P'/50 got 'E'/45 console.c:620: Test failed: At (62,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (63,27): expecting char 'Q'/51 got 'E'/45 console.c:620: Test failed: At (63,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (64,27): expecting char 'R'/52 got 'E'/45 console.c:620: Test failed: At (64,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (65,27): expecting char 'S'/53 got 'E'/45 console.c:620: Test failed: At (65,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (66,27): expecting char 'T'/54 got 'E'/45 console.c:620: Test failed: At (66,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (67,27): expecting char 'U'/55 got 'E'/45 console.c:620: Test failed: At (67,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (68,27): expecting char 'V'/56 got 'E'/45 console.c:620: Test failed: At (68,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (69,27): expecting char 'W'/57 got 'E'/45 console.c:620: Test failed: At (69,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (70,27): expecting char 'A'/41 got 'E'/45 console.c:620: Test failed: At (70,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (71,27): expecting char 'B'/42 got 'E'/45 console.c:620: Test failed: At (71,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (72,27): expecting char 'C'/43 got 'E'/45 console.c:620: Test failed: At (72,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (73,27): expecting char 'D'/44 got 'E'/45 console.c:620: Test failed: At (73,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (74,27): expecting char 'E'/45 got 'E'/45 console.c:620: Test failed: At (74,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (75,27): expecting char 'F'/46 got 'E'/45 console.c:620: Test failed: At (75,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (76,27): expecting char 'G'/47 got 'E'/45 console.c:620: Test failed: At (76,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (77,27): expecting char 'H'/48 got 'E'/45 console.c:620: Test failed: At (77,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (78,27): expecting char 'I'/49 got 'E'/45 console.c:620: Test failed: At (78,27): expecting attr 0007 got 0007 console.c:620: Test failed: At (79,27): expecting char 'J'/4a got 'E'/45 console.c:620: Test failed: At (79,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (0,25): expecting char 'L'/4c got 'E'/45 console.c:663: Test failed: At (0,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (1,25): expecting char 'M'/4d got 'E'/45 console.c:663: Test failed: At (1,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (2,25): expecting char 'N'/4e got 'E'/45 console.c:663: Test failed: At (2,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (3,25): expecting char 'O'/4f got 'E'/45 console.c:663: Test failed: At (3,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (4,25): expecting char 'P'/50 got 'E'/45 console.c:663: Test failed: At (4,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (5,25): expecting char 'Q'/51 got 'E'/45 console.c:663: Test failed: At (5,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (6,25): expecting char 'R'/52 got 'E'/45 console.c:663: Test failed: At (6,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (7,25): expecting char 'S'/53 got 'E'/45 console.c:663: Test failed: At (7,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (8,25): expecting char 'T'/54 got 'E'/45 console.c:663: Test failed: At (8,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (9,25): expecting char 'U'/55 got 'E'/45 console.c:663: Test failed: At (9,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (10,25): expecting char 'V'/56 got 'E'/45 console.c:663: Test failed: At (10,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (11,25): expecting char 'W'/57 got 'E'/45 console.c:663: Test failed: At (11,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (12,25): expecting char 'A'/41 got 'E'/45 console.c:663: Test failed: At (12,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (13,25): expecting char 'B'/42 got 'E'/45 console.c:663: Test failed: At (13,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (14,25): expecting char 'C'/43 got 'E'/45 console.c:663: Test failed: At (14,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (15,25): expecting char 'D'/44 got 'E'/45 console.c:663: Test failed: At (15,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (16,25): expecting char 'E'/45 got 'E'/45 console.c:663: Test failed: At (16,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (17,25): expecting char 'F'/46 got 'E'/45 console.c:663: Test failed: At (17,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (18,25): expecting char 'G'/47 got 'E'/45 console.c:663: Test failed: At (18,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (19,25): expecting char 'H'/48 got 'E'/45 console.c:663: Test failed: At (19,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (20,25): expecting char 'I'/49 got 'E'/45 console.c:663: Test failed: At (20,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (21,25): expecting char 'J'/4a got 'E'/45 console.c:663: Test failed: At (21,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (22,25): expecting char 'K'/4b got 'E'/45 console.c:663: Test failed: At (22,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (23,25): expecting char 'L'/4c got 'E'/45 console.c:663: Test failed: At (23,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (24,25): expecting char 'M'/4d got 'E'/45 console.c:663: Test failed: At (24,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (25,25): expecting char 'N'/4e got 'E'/45 console.c:663: Test failed: At (25,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (26,25): expecting char 'O'/4f got 'E'/45 console.c:663: Test failed: At (26,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (27,25): expecting char 'P'/50 got 'E'/45 console.c:663: Test failed: At (27,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (28,25): expecting char 'Q'/51 got 'E'/45 console.c:663: Test failed: At (28,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (29,25): expecting char 'R'/52 got 'E'/45 console.c:663: Test failed: At (29,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (30,25): expecting char 'S'/53 got 'E'/45 console.c:663: Test failed: At (30,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (31,25): expecting char 'T'/54 got 'E'/45 console.c:663: Test failed: At (31,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (32,25): expecting char 'U'/55 got 'E'/45 console.c:663: Test failed: At (32,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (33,25): expecting char 'V'/56 got 'E'/45 console.c:663: Test failed: At (33,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (34,25): expecting char 'W'/57 got 'E'/45 console.c:663: Test failed: At (34,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (35,25): expecting char 'A'/41 got 'E'/45 console.c:663: Test failed: At (35,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (36,25): expecting char 'B'/42 got 'E'/45 console.c:663: Test failed: At (36,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (37,25): expecting char 'C'/43 got 'E'/45 console.c:663: Test failed: At (37,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (38,25): expecting char 'D'/44 got 'E'/45 console.c:663: Test failed: At (38,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (39,25): expecting char 'E'/45 got 'E'/45 console.c:663: Test failed: At (39,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (40,25): expecting char 'F'/46 got 'E'/45 console.c:663: Test failed: At (40,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (41,25): expecting char 'G'/47 got 'E'/45 console.c:663: Test failed: At (41,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (42,25): expecting char 'H'/48 got 'E'/45 console.c:663: Test failed: At (42,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (43,25): expecting char 'I'/49 got 'E'/45 console.c:663: Test failed: At (43,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (44,25): expecting char 'J'/4a got 'E'/45 console.c:663: Test failed: At (44,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (45,25): expecting char 'K'/4b got 'E'/45 console.c:663: Test failed: At (45,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (46,25): expecting char 'L'/4c got 'E'/45 console.c:663: Test failed: At (46,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (47,25): expecting char 'M'/4d got 'E'/45 console.c:663: Test failed: At (47,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (48,25): expecting char 'N'/4e got 'E'/45 console.c:663: Test failed: At (48,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (49,25): expecting char 'O'/4f got 'E'/45 console.c:663: Test failed: At (49,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (50,25): expecting char 'P'/50 got 'E'/45 console.c:663: Test failed: At (50,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (51,25): expecting char 'Q'/51 got 'E'/45 console.c:663: Test failed: At (51,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (52,25): expecting char 'R'/52 got 'E'/45 console.c:663: Test failed: At (52,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (53,25): expecting char 'S'/53 got 'E'/45 console.c:663: Test failed: At (53,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (54,25): expecting char 'T'/54 got 'E'/45 console.c:663: Test failed: At (54,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (55,25): expecting char 'U'/55 got 'E'/45 console.c:663: Test failed: At (55,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (56,25): expecting char 'V'/56 got 'E'/45 console.c:663: Test failed: At (56,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (57,25): expecting char 'W'/57 got 'E'/45 console.c:663: Test failed: At (57,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (58,25): expecting char 'A'/41 got 'E'/45 console.c:663: Test failed: At (58,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (59,25): expecting char 'B'/42 got 'E'/45 console.c:663: Test failed: At (59,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (60,25): expecting char 'C'/43 got 'E'/45 console.c:663: Test failed: At (60,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (61,25): expecting char 'D'/44 got 'E'/45 console.c:663: Test failed: At (61,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (62,25): expecting char 'E'/45 got 'E'/45 console.c:663: Test failed: At (62,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (63,25): expecting char 'F'/46 got 'E'/45 console.c:663: Test failed: At (63,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (64,25): expecting char 'G'/47 got 'E'/45 console.c:663: Test failed: At (64,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (65,25): expecting char 'H'/48 got 'E'/45 console.c:663: Test failed: At (65,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (66,25): expecting char 'I'/49 got 'E'/45 console.c:663: Test failed: At (66,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (67,25): expecting char 'J'/4a got 'E'/45 console.c:663: Test failed: At (67,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (68,25): expecting char 'K'/4b got 'E'/45 console.c:663: Test failed: At (68,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (69,25): expecting char 'L'/4c got 'E'/45 console.c:663: Test failed: At (69,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (70,25): expecting char 'M'/4d got 'E'/45 console.c:663: Test failed: At (70,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (71,25): expecting char 'N'/4e got 'E'/45 console.c:663: Test failed: At (71,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (72,25): expecting char 'O'/4f got 'E'/45 console.c:663: Test failed: At (72,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (73,25): expecting char 'P'/50 got 'E'/45 console.c:663: Test failed: At (73,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (74,25): expecting char 'Q'/51 got 'E'/45 console.c:663: Test failed: At (74,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (75,25): expecting char 'R'/52 got 'E'/45 console.c:663: Test failed: At (75,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (76,25): expecting char 'S'/53 got 'E'/45 console.c:663: Test failed: At (76,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (77,25): expecting char 'T'/54 got 'E'/45 console.c:663: Test failed: At (77,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (78,25): expecting char 'U'/55 got 'E'/45 console.c:663: Test failed: At (78,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (79,25): expecting char 'V'/56 got 'E'/45 console.c:663: Test failed: At (79,25): expecting attr 0007 got 0007 console.c:663: Test failed: At (0,26): expecting char 'F'/46 got 'E'/45 console.c:663: Test failed: At (0,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (1,26): expecting char 'G'/47 got 'E'/45 console.c:663: Test failed: At (1,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (2,26): expecting char 'H'/48 got 'E'/45 console.c:663: Test failed: At (2,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (3,26): expecting char 'I'/49 got 'E'/45 console.c:663: Test failed: At (3,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (4,26): expecting char 'J'/4a got 'E'/45 console.c:663: Test failed: At (4,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (5,26): expecting char 'K'/4b got 'E'/45 console.c:663: Test failed: At (5,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (6,26): expecting char 'L'/4c got 'E'/45 console.c:663: Test failed: At (6,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (7,26): expecting char 'M'/4d got 'E'/45 console.c:663: Test failed: At (7,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (8,26): expecting char 'N'/4e got 'E'/45 console.c:663: Test failed: At (8,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (9,26): expecting char 'O'/4f got 'E'/45 console.c:663: Test failed: At (9,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (10,26): expecting char 'P'/50 got 'E'/45 console.c:663: Test failed: At (10,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (11,26): expecting char 'Q'/51 got 'E'/45 console.c:663: Test failed: At (11,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (12,26): expecting char 'R'/52 got 'E'/45 console.c:663: Test failed: At (12,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (13,26): expecting char 'S'/53 got 'E'/45 console.c:663: Test failed: At (13,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (14,26): expecting char 'T'/54 got 'E'/45 console.c:663: Test failed: At (14,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (15,26): expecting char 'U'/55 got 'E'/45 console.c:663: Test failed: At (15,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (16,26): expecting char 'V'/56 got 'E'/45 console.c:663: Test failed: At (16,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (17,26): expecting char 'W'/57 got 'E'/45 console.c:663: Test failed: At (17,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (18,26): expecting char 'A'/41 got 'E'/45 console.c:663: Test failed: At (18,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (19,26): expecting char 'B'/42 got 'E'/45 console.c:663: Test failed: At (19,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (20,26): expecting char 'C'/43 got 'E'/45 console.c:663: Test failed: At (20,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (21,26): expecting char 'D'/44 got 'E'/45 console.c:663: Test failed: At (21,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (22,26): expecting char 'E'/45 got 'E'/45 console.c:663: Test failed: At (22,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (23,26): expecting char 'F'/46 got 'E'/45 console.c:663: Test failed: At (23,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (24,26): expecting char 'G'/47 got 'E'/45 console.c:663: Test failed: At (24,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (25,26): expecting char 'H'/48 got 'E'/45 console.c:663: Test failed: At (25,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (26,26): expecting char 'I'/49 got 'E'/45 console.c:663: Test failed: At (26,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (27,26): expecting char 'J'/4a got 'E'/45 console.c:663: Test failed: At (27,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (28,26): expecting char 'K'/4b got 'E'/45 console.c:663: Test failed: At (28,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (29,26): expecting char 'L'/4c got 'E'/45 console.c:663: Test failed: At (29,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (30,26): expecting char 'M'/4d got 'E'/45 console.c:663: Test failed: At (30,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (31,26): expecting char 'N'/4e got 'E'/45 console.c:663: Test failed: At (31,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (32,26): expecting char 'O'/4f got 'E'/45 console.c:663: Test failed: At (32,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (33,26): expecting char 'P'/50 got 'E'/45 console.c:663: Test failed: At (33,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (34,26): expecting char 'Q'/51 got 'E'/45 console.c:663: Test failed: At (34,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (35,26): expecting char 'R'/52 got 'E'/45 console.c:663: Test failed: At (35,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (36,26): expecting char 'S'/53 got 'E'/45 console.c:663: Test failed: At (36,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (37,26): expecting char 'T'/54 got 'E'/45 console.c:663: Test failed: At (37,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (38,26): expecting char 'U'/55 got 'E'/45 console.c:663: Test failed: At (38,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (39,26): expecting char 'V'/56 got 'E'/45 console.c:663: Test failed: At (39,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (40,26): expecting char 'W'/57 got 'E'/45 console.c:663: Test failed: At (40,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (41,26): expecting char 'A'/41 got 'E'/45 console.c:663: Test failed: At (41,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (42,26): expecting char 'B'/42 got 'E'/45 console.c:663: Test failed: At (42,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (43,26): expecting char 'C'/43 got 'E'/45 console.c:663: Test failed: At (43,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (44,26): expecting char 'D'/44 got 'E'/45 console.c:663: Test failed: At (44,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (45,26): expecting char 'E'/45 got 'E'/45 console.c:663: Test failed: At (45,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (46,26): expecting char 'F'/46 got 'E'/45 console.c:663: Test failed: At (46,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (47,26): expecting char 'G'/47 got 'E'/45 console.c:663: Test failed: At (47,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (48,26): expecting char 'H'/48 got 'E'/45 console.c:663: Test failed: At (48,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (49,26): expecting char 'I'/49 got 'E'/45 console.c:663: Test failed: At (49,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (50,26): expecting char 'J'/4a got 'E'/45 console.c:663: Test failed: At (50,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (51,26): expecting char 'K'/4b got 'E'/45 console.c:663: Test failed: At (51,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (52,26): expecting char 'L'/4c got 'E'/45 console.c:663: Test failed: At (52,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (53,26): expecting char 'M'/4d got 'E'/45 console.c:663: Test failed: At (53,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (54,26): expecting char 'N'/4e got 'E'/45 console.c:663: Test failed: At (54,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (55,26): expecting char 'O'/4f got 'E'/45 console.c:663: Test failed: At (55,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (56,26): expecting char 'P'/50 got 'E'/45 console.c:663: Test failed: At (56,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (57,26): expecting char 'Q'/51 got 'E'/45 console.c:663: Test failed: At (57,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (58,26): expecting char 'R'/52 got 'E'/45 console.c:663: Test failed: At (58,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (59,26): expecting char 'S'/53 got 'E'/45 console.c:663: Test failed: At (59,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (60,26): expecting char 'T'/54 got 'E'/45 console.c:663: Test failed: At (60,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (61,26): expecting char 'U'/55 got 'E'/45 console.c:663: Test failed: At (61,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (62,26): expecting char 'V'/56 got 'E'/45 console.c:663: Test failed: At (62,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (63,26): expecting char 'W'/57 got 'E'/45 console.c:663: Test failed: At (63,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (64,26): expecting char 'A'/41 got 'E'/45 console.c:663: Test failed: At (64,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (65,26): expecting char 'B'/42 got 'E'/45 console.c:663: Test failed: At (65,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (66,26): expecting char 'C'/43 got 'E'/45 console.c:663: Test failed: At (66,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (67,26): expecting char 'D'/44 got 'E'/45 console.c:663: Test failed: At (67,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (68,26): expecting char 'E'/45 got 'E'/45 console.c:663: Test failed: At (68,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (69,26): expecting char 'F'/46 got 'E'/45 console.c:663: Test failed: At (69,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (70,26): expecting char 'G'/47 got 'E'/45 console.c:663: Test failed: At (70,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (71,26): expecting char 'H'/48 got 'E'/45 console.c:663: Test failed: At (71,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (72,26): expecting char 'I'/49 got 'E'/45 console.c:663: Test failed: At (72,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (73,26): expecting char 'J'/4a got 'E'/45 console.c:663: Test failed: At (73,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (74,26): expecting char 'K'/4b got 'E'/45 console.c:663: Test failed: At (74,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (75,26): expecting char 'L'/4c got 'E'/45 console.c:663: Test failed: At (75,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (76,26): expecting char 'M'/4d got 'E'/45 console.c:663: Test failed: At (76,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (77,26): expecting char 'N'/4e got 'E'/45 console.c:663: Test failed: At (77,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (78,26): expecting char 'O'/4f got 'E'/45 console.c:663: Test failed: At (78,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (79,26): expecting char 'P'/50 got 'E'/45 console.c:663: Test failed: At (79,26): expecting attr 0007 got 0007 console.c:663: Test failed: At (0,27): expecting char 'W'/57 got 'E'/45 console.c:663: Test failed: At (0,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (1,27): expecting char 'A'/41 got 'E'/45 console.c:663: Test failed: At (1,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (2,27): expecting char 'B'/42 got 'E'/45 console.c:663: Test failed: At (2,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (3,27): expecting char 'C'/43 got 'E'/45 console.c:663: Test failed: At (3,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (4,27): expecting char 'D'/44 got 'E'/45 console.c:663: Test failed: At (4,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (5,27): expecting char 'E'/45 got 'E'/45 console.c:663: Test failed: At (5,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (6,27): expecting char 'F'/46 got 'E'/45 console.c:663: Test failed: At (6,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (7,27): expecting char 'G'/47 got 'E'/45 console.c:663: Test failed: At (7,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (8,27): expecting char 'H'/48 got 'E'/45 console.c:663: Test failed: At (8,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (9,27): expecting char 'I'/49 got 'E'/45 console.c:663: Test failed: At (9,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (10,27): expecting char 'J'/4a got 'E'/45 console.c:663: Test failed: At (10,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (11,27): expecting char 'K'/4b got 'E'/45 console.c:663: Test failed: At (11,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (12,27): expecting char 'L'/4c got 'E'/45 console.c:663: Test failed: At (12,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (13,27): expecting char 'M'/4d got 'E'/45 console.c:663: Test failed: At (13,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (14,27): expecting char 'N'/4e got 'E'/45 console.c:663: Test failed: At (14,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (15,27): expecting char 'O'/4f got 'E'/45 console.c:663: Test failed: At (15,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (16,27): expecting char 'P'/50 got 'E'/45 console.c:663: Test failed: At (16,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (17,27): expecting char 'Q'/51 got 'E'/45 console.c:663: Test failed: At (17,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (18,27): expecting char 'R'/52 got 'E'/45 console.c:663: Test failed: At (18,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (19,27): expecting char 'S'/53 got 'E'/45 console.c:663: Test failed: At (19,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (20,27): expecting char 'T'/54 got 'E'/45 console.c:663: Test failed: At (20,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (21,27): expecting char 'U'/55 got 'E'/45 console.c:663: Test failed: At (21,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (22,27): expecting char 'V'/56 got 'E'/45 console.c:663: Test failed: At (22,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (23,27): expecting char 'W'/57 got 'E'/45 console.c:663: Test failed: At (23,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (24,27): expecting char 'A'/41 got 'E'/45 console.c:663: Test failed: At (24,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (25,27): expecting char 'B'/42 got 'E'/45 console.c:663: Test failed: At (25,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (26,27): expecting char 'C'/43 got 'E'/45 console.c:663: Test failed: At (26,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (27,27): expecting char 'D'/44 got 'E'/45 console.c:663: Test failed: At (27,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (28,27): expecting char 'E'/45 got 'E'/45 console.c:663: Test failed: At (28,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (29,27): expecting char 'F'/46 got 'E'/45 console.c:663: Test failed: At (29,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (30,27): expecting char 'G'/47 got 'E'/45 console.c:663: Test failed: At (30,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (31,27): expecting char 'H'/48 got 'E'/45 console.c:663: Test failed: At (31,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (32,27): expecting char 'I'/49 got 'E'/45 console.c:663: Test failed: At (32,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (33,27): expecting char 'J'/4a got 'E'/45 console.c:663: Test failed: At (33,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (34,27): expecting char 'K'/4b got 'E'/45 console.c:663: Test failed: At (34,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (35,27): expecting char 'L'/4c got 'E'/45 console.c:663: Test failed: At (35,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (36,27): expecting char 'M'/4d got 'E'/45 console.c:663: Test failed: At (36,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (37,27): expecting char 'N'/4e got 'E'/45 console.c:663: Test failed: At (37,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (38,27): expecting char 'O'/4f got 'E'/45 console.c:663: Test failed: At (38,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (39,27): expecting char 'P'/50 got 'E'/45 console.c:663: Test failed: At (39,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (40,27): expecting char 'Q'/51 got 'E'/45 console.c:663: Test failed: At (40,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (41,27): expecting char 'R'/52 got 'E'/45 console.c:663: Test failed: At (41,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (42,27): expecting char 'S'/53 got 'E'/45 console.c:663: Test failed: At (42,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (43,27): expecting char 'T'/54 got 'E'/45 console.c:663: Test failed: At (43,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (44,27): expecting char 'U'/55 got 'E'/45 console.c:663: Test failed: At (44,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (45,27): expecting char 'V'/56 got 'E'/45 console.c:663: Test failed: At (45,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (46,27): expecting char 'W'/57 got 'E'/45 console.c:663: Test failed: At (46,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (47,27): expecting char 'A'/41 got 'E'/45 console.c:663: Test failed: At (47,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (48,27): expecting char 'B'/42 got 'E'/45 console.c:663: Test failed: At (48,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (49,27): expecting char 'C'/43 got 'E'/45 console.c:663: Test failed: At (49,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (50,27): expecting char 'D'/44 got 'E'/45 console.c:663: Test failed: At (50,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (51,27): expecting char 'E'/45 got 'E'/45 console.c:663: Test failed: At (51,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (52,27): expecting char 'F'/46 got 'E'/45 console.c:663: Test failed: At (52,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (53,27): expecting char 'G'/47 got 'E'/45 console.c:663: Test failed: At (53,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (54,27): expecting char 'H'/48 got 'E'/45 console.c:663: Test failed: At (54,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (55,27): expecting char 'I'/49 got 'E'/45 console.c:663: Test failed: At (55,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (56,27): expecting char 'J'/4a got 'E'/45 console.c:663: Test failed: At (56,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (57,27): expecting char 'K'/4b got 'E'/45 console.c:663: Test failed: At (57,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (58,27): expecting char 'L'/4c got 'E'/45 console.c:663: Test failed: At (58,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (59,27): expecting char 'M'/4d got 'E'/45 console.c:663: Test failed: At (59,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (60,27): expecting char 'N'/4e got 'E'/45 console.c:663: Test failed: At (60,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (61,27): expecting char 'O'/4f got 'E'/45 console.c:663: Test failed: At (61,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (62,27): expecting char 'P'/50 got 'E'/45 console.c:663: Test failed: At (62,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (63,27): expecting char 'Q'/51 got 'E'/45 console.c:663: Test failed: At (63,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (64,27): expecting char 'R'/52 got 'E'/45 console.c:663: Test failed: At (64,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (65,27): expecting char 'S'/53 got 'E'/45 console.c:663: Test failed: At (65,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (66,27): expecting char 'T'/54 got 'E'/45 console.c:663: Test failed: At (66,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (67,27): expecting char 'U'/55 got 'E'/45 console.c:663: Test failed: At (67,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (68,27): expecting char 'V'/56 got 'E'/45 console.c:663: Test failed: At (68,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (69,27): expecting char 'W'/57 got 'E'/45 console.c:663: Test failed: At (69,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (70,27): expecting char 'A'/41 got 'E'/45 console.c:663: Test failed: At (70,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (71,27): expecting char 'B'/42 got 'E'/45 console.c:663: Test failed: At (71,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (72,27): expecting char 'C'/43 got 'E'/45 console.c:663: Test failed: At (72,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (73,27): expecting char 'D'/44 got 'E'/45 console.c:663: Test failed: At (73,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (74,27): expecting char 'E'/45 got 'E'/45 console.c:663: Test failed: At (74,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (75,27): expecting char 'F'/46 got 'E'/45 console.c:663: Test failed: At (75,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (76,27): expecting char 'G'/47 got 'E'/45 console.c:663: Test failed: At (76,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (77,27): expecting char 'H'/48 got 'E'/45 console.c:663: Test failed: At (77,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (78,27): expecting char 'I'/49 got 'E'/45 console.c:663: Test failed: At (78,27): expecting attr 0007 got 0007 console.c:663: Test failed: At (79,27): expecting char 'J'/4a got 'E'/45 console.c:663: Test failed: At (79,27): expecting attr 0007 got 0007 loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fa50 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 13667 / 1361e loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
Report validation errors: kernel32:console prints too much data (141991 bytes)
=== debiant (32 bit Chinese:China report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fa50 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 13667 / 1361e loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
=== debiant (32 bit WoW report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fa50 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 13667 / 1361e loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15
=== debiant (64 bit WoW report) ===
kernel32: loader.c:3932: Test failed: ntdll.dll:0: wrong OptionalHeader.AddressOfEntryPoint 5fa50 / 5f9f0 loader.c:3946: Test failed: ntdll.dll:0: wrong OptionalHeader.DataDirectory[i].Size 13667 / 1361e loader.c:3952: Test failed: ntdll.dll: wrong section 0 loader.c:3952: Test failed: ntdll.dll: wrong section 2 loader.c:3952: Test failed: ntdll.dll: wrong section 5 loader.c:3952: Test failed: ntdll.dll: wrong section 10 loader.c:3952: Test failed: ntdll.dll: wrong section 11 loader.c:3952: Test failed: ntdll.dll: wrong section 12 loader.c:3952: Test failed: ntdll.dll: wrong section 13 loader.c:3952: Test failed: ntdll.dll: wrong section 14 loader.c:3952: Test failed: ntdll.dll: wrong section 15