Alexandre Julliard : kernel32/tests: Add some tests for CIL 32-bit image flags.
Alexandre Julliard
julliard at winehq.org
Thu Feb 15 14:42:28 CST 2018
Module: wine
Branch: master
Commit: 2df367a4f7e84a5c97d26ae326167755c7197207
URL: https://source.winehq.org/git/wine.git/?a=commit;h=2df367a4f7e84a5c97d26ae326167755c7197207
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Feb 15 08:07:09 2018 +0100
kernel32/tests: Add some tests for CIL 32-bit image flags.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernel32/tests/loader.c | 29 ++++++++++++++++++++++++++++-
include/winnt.h | 3 ++-
2 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
index b4fb1c6..877d381 100644
--- a/dlls/kernel32/tests/loader.c
+++ b/dlls/kernel32/tests/loader.c
@@ -405,7 +405,8 @@ static BOOL query_image_section( int id, const char *dll_name, const IMAGE_NT_HE
todo_wine
ok( S(U(image)).ComPlusILOnly || broken(is_winxp),
"%u: wrong ComPlusILOnly flags %02x\n", id, U(image).ImageFlags );
- if (nt_header->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
+ if (nt_header->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC &&
+ !(cor_header->Flags & COMIMAGE_FLAGS_32BITREQUIRED))
todo_wine
ok( S(U(image)).ComPlusNativeReady || broken(is_winxp),
"%u: wrong ComPlusNativeReady flags %02x\n", id, U(image).ImageFlags );
@@ -1019,6 +1020,14 @@ static void test_Loader(void)
status = map_image_section( &nt_header, §ion, &cor_header, __LINE__ );
ok( status == STATUS_SUCCESS, "NtCreateSection error %08x\n", status );
+ cor_header.Flags = COMIMAGE_FLAGS_ILONLY | COMIMAGE_FLAGS_32BITREQUIRED;
+ status = map_image_section( &nt_header, §ion, &cor_header, __LINE__ );
+ ok( status == STATUS_SUCCESS, "NtCreateSection error %08x\n", status );
+
+ cor_header.Flags = COMIMAGE_FLAGS_ILONLY | COMIMAGE_FLAGS_32BITPREFERRED;
+ status = map_image_section( &nt_header, §ion, &cor_header, __LINE__ );
+ ok( status == STATUS_SUCCESS, "NtCreateSection error %08x\n", status );
+
cor_header.Flags = 0;
status = map_image_section( &nt_header, §ion, &cor_header, __LINE__ );
ok( status == STATUS_SUCCESS, "NtCreateSection error %08x\n", status );
@@ -1122,6 +1131,16 @@ static void test_Loader(void)
ok( status == (is_wow64 ? STATUS_SUCCESS : STATUS_INVALID_IMAGE_WIN_64),
"NtCreateSection error %08x\n", status );
+ cor_header.Flags = COMIMAGE_FLAGS_ILONLY | COMIMAGE_FLAGS_32BITREQUIRED;
+ status = map_image_section( (IMAGE_NT_HEADERS *)&nt64, §ion, &cor_header, __LINE__ );
+ ok( status == (is_wow64 ? STATUS_SUCCESS : STATUS_INVALID_IMAGE_WIN_64),
+ "NtCreateSection error %08x\n", status );
+
+ cor_header.Flags = COMIMAGE_FLAGS_ILONLY | COMIMAGE_FLAGS_32BITPREFERRED;
+ status = map_image_section( (IMAGE_NT_HEADERS *)&nt64, §ion, &cor_header, __LINE__ );
+ ok( status == (is_wow64 ? STATUS_SUCCESS : STATUS_INVALID_IMAGE_WIN_64),
+ "NtCreateSection error %08x\n", status );
+
cor_header.Flags = 0;
status = map_image_section( (IMAGE_NT_HEADERS *)&nt64, §ion, &cor_header, __LINE__ );
ok( status == (is_wow64 ? STATUS_SUCCESS : STATUS_INVALID_IMAGE_WIN_64),
@@ -1218,6 +1237,14 @@ static void test_Loader(void)
status = map_image_section( (IMAGE_NT_HEADERS *)&nt32, §ion, &cor_header, __LINE__ );
ok( status == STATUS_SUCCESS, "NtCreateSection error %08x\n", status );
+ cor_header.Flags = COMIMAGE_FLAGS_ILONLY | COMIMAGE_FLAGS_32BITREQUIRED;
+ status = map_image_section( (IMAGE_NT_HEADERS *)&nt32, §ion, &cor_header, __LINE__ );
+ ok( status == STATUS_SUCCESS, "NtCreateSection error %08x\n", status );
+
+ cor_header.Flags = COMIMAGE_FLAGS_ILONLY | COMIMAGE_FLAGS_32BITPREFERRED;
+ status = map_image_section( (IMAGE_NT_HEADERS *)&nt32, §ion, &cor_header, __LINE__ );
+ ok( status == STATUS_SUCCESS, "NtCreateSection error %08x\n", status );
+
cor_header.Flags = 0;
status = map_image_section( (IMAGE_NT_HEADERS *)&nt32, §ion, &cor_header, __LINE__ );
ok( status == STATUS_SUCCESS, "NtCreateSection error %08x\n", status );
diff --git a/include/winnt.h b/include/winnt.h
index 855d2a8..56b533c 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -3621,10 +3621,11 @@ typedef enum ReplacesCorHdrNumericDefines
COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,
COMIMAGE_FLAGS_NATIVE_ENTRYPOINT= 0x00000010,
COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,
+ COMIMAGE_FLAGS_32BITPREFERRED = 0x00020000,
COR_VERSION_MAJOR_V2 = 2,
COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2,
- COR_VERSION_MINOR = 0,
+ COR_VERSION_MINOR = 5,
COR_DELETED_NAME_LENGTH = 8,
COR_VTABLEGAP_NAME_LENGTH = 8,
More information about the wine-cvs
mailing list