From cae1b3eba0aea8fdcd954af1d7ffa869c65d08ca Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Wed, 3 Feb 2021 10:11:33 +1100 Subject: [PATCH] Rebase against 433b9081ba7c862feb947400f507228e793d7d4c. --- ...FMT_A8R8G8B8-in-D3DXGetImageInfoFrom.patch | 56 ------------------- patches/d3dx9-32bpp_Alpha_Channel/definition | 1 - ...eventfd-based-objects-for-semaphores.patch | 22 ++++---- ...t-HashLinks-field-in-LDR-module-data.patch | 28 +++++----- ...Move-some-tests-to-a-new-sync.c-file.patch | 30 +++++----- ...NtQueryVirtualMemory-MemorySectionNa.patch | 30 +++++----- patches/patchinstall.sh | 20 +------ ...ObjectTypesInformation-in-NtQueryObj.patch | 38 ++++++------- ...ct-type-behavior-for-different-windo.patch | 14 ++--- staging/upstream-commit | 2 +- 10 files changed, 86 insertions(+), 155 deletions(-) delete mode 100644 patches/d3dx9-32bpp_Alpha_Channel/0001-d3dx9-Return-D3DFMT_A8R8G8B8-in-D3DXGetImageInfoFrom.patch delete mode 100644 patches/d3dx9-32bpp_Alpha_Channel/definition diff --git a/patches/d3dx9-32bpp_Alpha_Channel/0001-d3dx9-Return-D3DFMT_A8R8G8B8-in-D3DXGetImageInfoFrom.patch b/patches/d3dx9-32bpp_Alpha_Channel/0001-d3dx9-Return-D3DFMT_A8R8G8B8-in-D3DXGetImageInfoFrom.patch deleted file mode 100644 index 562930e2..00000000 --- a/patches/d3dx9-32bpp_Alpha_Channel/0001-d3dx9-Return-D3DFMT_A8R8G8B8-in-D3DXGetImageInfoFrom.patch +++ /dev/null @@ -1,56 +0,0 @@ -From bbc93f065045b7854f4446d9199c2c22c6251d3d Mon Sep 17 00:00:00 2001 -From: Christian Costa -Date: Sun, 30 Jul 2017 23:50:18 +0200 -Subject: [PATCH] d3dx9: Return D3DFMT_A8R8G8B8 in - D3DXGetImageInfoFromFileInMemory for 32 bpp BMP with alpha. - ---- - dlls/d3dx9_36/surface.c | 18 ++++++++++++++++++ - dlls/d3dx9_36/tests/surface.c | 2 +- - 2 files changed, 19 insertions(+), 1 deletion(-) - -diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c -index a2eca9cbdb..b670657125 100644 ---- a/dlls/d3dx9_36/surface.c -+++ b/dlls/d3dx9_36/surface.c -@@ -980,6 +980,24 @@ HRESULT WINAPI D3DXGetImageInfoFromFileInMemory(const void *data, UINT datasize, - } - } - -+ /* For 32 bpp BMP, windowscodecs.dll never returns a format with alpha while -+ * d3dx9_xx.dll returns one if at least 1 pixel has a non zero alpha component */ -+ if (SUCCEEDED(hr) && (info->Format == D3DFMT_X8R8G8B8) && (info->ImageFileFormat == D3DXIFF_BMP)) { -+ DWORD size = sizeof(DWORD) * info->Width * info->Height; -+ BYTE *buffer = HeapAlloc(GetProcessHeap(), 0, size); -+ hr = IWICBitmapFrameDecode_CopyPixels(frame, NULL, sizeof(DWORD) * info->Width, size, buffer); -+ if (SUCCEEDED(hr)) { -+ DWORD i; -+ for (i = 0; i < info->Width * info->Height; i++) { -+ if (buffer[i*4+3]) { -+ info->Format = D3DFMT_A8R8G8B8; -+ break; -+ } -+ } -+ } -+ HeapFree(GetProcessHeap(), 0, buffer); -+ } -+ - if (frame) - IWICBitmapFrameDecode_Release(frame); - -diff --git a/dlls/d3dx9_36/tests/surface.c b/dlls/d3dx9_36/tests/surface.c -index 04ce57fa4f..db0c9c7291 100644 ---- a/dlls/d3dx9_36/tests/surface.c -+++ b/dlls/d3dx9_36/tests/surface.c -@@ -616,7 +616,7 @@ static void test_D3DXGetImageInfo(void) - ok(info.Format == D3DFMT_X8R8G8B8, "Got unexpected format %u.\n", info.Format); - hr = D3DXGetImageInfoFromFileInMemory(bmp_32bpp_argb, sizeof(bmp_32bpp_argb), &info); - ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr); -- todo_wine ok(info.Format == D3DFMT_A8R8G8B8, "Got unexpected format %u.\n", info.Format); -+ ok(info.Format == D3DFMT_A8R8G8B8, "Got unexpected format %u.\n", info.Format); - - /* Grayscale PNG */ - hr = D3DXGetImageInfoFromFileInMemory(png_grayscale, sizeof(png_grayscale), &info); --- -2.21.0 - diff --git a/patches/d3dx9-32bpp_Alpha_Channel/definition b/patches/d3dx9-32bpp_Alpha_Channel/definition deleted file mode 100644 index e3f2a295..00000000 --- a/patches/d3dx9-32bpp_Alpha_Channel/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [48563] Runaway: A Twist of Fate renders its cursor incorrectly diff --git a/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch b/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch index 01186e3b..bc203b88 100644 --- a/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch +++ b/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch @@ -1,4 +1,4 @@ -From fd3e782fbebdfbac412ab3ee9ba01c2a562b61ee Mon Sep 17 00:00:00 2001 +From b528c37ea124f6c84bf2383a75ae50dc6f12b571 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 12:09:22 -0500 Subject: [PATCH] ntdll: Create eventfd-based objects for semaphores. @@ -16,7 +16,7 @@ Subject: [PATCH] ntdll: Create eventfd-based objects for semaphores. create mode 100644 dlls/ntdll/unix/esync.h diff --git a/dlls/ntdll/Makefile.in b/dlls/ntdll/Makefile.in -index f39ffb42c6f..f742d084906 100644 +index 258274ac529..1c3fb065ecf 100644 --- a/dlls/ntdll/Makefile.in +++ b/dlls/ntdll/Makefile.in @@ -46,6 +46,7 @@ C_SRCS = \ @@ -348,10 +348,10 @@ index 00000000000..a50a755149a + +extern int receive_fd( obj_handle_t *handle ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c -index c2b6ea603e3..ab2d9e347c3 100644 +index bcd1635e75c..52e61feb43a 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c -@@ -86,6 +86,7 @@ +@@ -89,6 +89,7 @@ #include "winioctl.h" #include "winternl.h" #include "unix_private.h" @@ -359,16 +359,16 @@ index c2b6ea603e3..ab2d9e347c3 100644 #include "wine/list.h" #include "wine/debug.h" -@@ -1564,6 +1565,7 @@ static void start_main_thread(void) +@@ -1626,6 +1627,7 @@ static void start_main_thread(void) + signal_init_thread( teb ); dbg_init(); - server_init_process(); - startup_info_size = server_init_thread( teb->Peb, &suspend ); + startup_info_size = server_init_process(); + esync_init(); virtual_map_user_shared_data(); init_cpu_info(); init_files(); diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c -index 7236f0acb83..971341bf6e0 100644 +index 7b469959f66..3063a13efb5 100644 --- a/dlls/ntdll/unix/server.c +++ b/dlls/ntdll/unix/server.c @@ -112,7 +112,7 @@ timeout_t server_start_time = 0; /* time of server startup */ @@ -380,7 +380,7 @@ index 7236f0acb83..971341bf6e0 100644 /* atomically exchange a 64-bit value */ static inline LONG64 interlocked_xchg64( LONG64 *dest, LONG64 val ) -@@ -813,7 +813,7 @@ void CDECL wine_server_send_fd( int fd ) +@@ -832,7 +832,7 @@ void CDECL wine_server_send_fd( int fd ) * * Receive a file descriptor passed from the server. */ @@ -390,7 +390,7 @@ index 7236f0acb83..971341bf6e0 100644 struct iovec vec; struct msghdr msghdr; diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index bba7af7e34f..663a170fc61 100644 +index 383e9c93273..19e1494a9b8 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c @@ -72,6 +72,7 @@ @@ -424,5 +424,5 @@ index b8b257281bf..226e70cd1ad 100644 int do_esync(void) { -- -2.28.0 +2.29.2 diff --git a/patches/ntdll-HashLinks/0001-ntdll-Implement-HashLinks-field-in-LDR-module-data.patch b/patches/ntdll-HashLinks/0001-ntdll-Implement-HashLinks-field-in-LDR-module-data.patch index 1b08ad65..2bfc8f2f 100644 --- a/patches/ntdll-HashLinks/0001-ntdll-Implement-HashLinks-field-in-LDR-module-data.patch +++ b/patches/ntdll-HashLinks/0001-ntdll-Implement-HashLinks-field-in-LDR-module-data.patch @@ -1,4 +1,4 @@ -From 869b1db8e2cc5e35976eaa751a3aa10dd017702d Mon Sep 17 00:00:00 2001 +From 676ef7076ef33a21649a07acdc5e6e7fee761165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 3 Apr 2017 05:30:27 +0200 Subject: [PATCH] ntdll: Implement HashLinks field in LDR module data. @@ -10,7 +10,7 @@ Subject: [PATCH] ntdll: Implement HashLinks field in LDR module data. 3 files changed, 141 insertions(+), 1 deletion(-) diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c -index 67fd62ef6aa..d101104af1d 100644 +index 861fc321729..28b0edacd0a 100644 --- a/dlls/kernel32/tests/loader.c +++ b/dlls/kernel32/tests/loader.c @@ -30,6 +30,7 @@ @@ -21,7 +21,7 @@ index 67fd62ef6aa..d101104af1d 100644 #include "wine/test.h" #include "delayloadhandler.h" -@@ -3992,6 +3993,79 @@ static void test_LoadPackagedLibrary(void) +@@ -4003,6 +4004,79 @@ static void test_LoadPackagedLibrary(void) h, GetLastError()); } @@ -101,7 +101,7 @@ index 67fd62ef6aa..d101104af1d 100644 START_TEST(loader) { int argc; -@@ -4064,6 +4138,7 @@ START_TEST(loader) +@@ -4075,6 +4149,7 @@ START_TEST(loader) test_InMemoryOrderModuleList(); test_LoadPackagedLibrary(); test_wow64_redirection(); @@ -110,7 +110,7 @@ index 67fd62ef6aa..d101104af1d 100644 test_dll_file( "kernel32.dll" ); test_dll_file( "advapi32.dll" ); diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index d948913d7b8..d2663916149 100644 +index dad7bae6ccf..0727d4d15f5 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -115,6 +115,9 @@ struct file_id @@ -197,7 +197,7 @@ index d948913d7b8..d2663916149 100644 /* FIXME: there are several more dangling references * left. Including dlls loaded by this dll before the -@@ -3269,6 +3324,7 @@ static void free_modref( WINE_MODREF *wm ) +@@ -3291,6 +3346,7 @@ static void free_modref( WINE_MODREF *wm ) { RemoveEntryList(&wm->ldr.InLoadOrderLinks); RemoveEntryList(&wm->ldr.InMemoryOrderLinks); @@ -205,7 +205,7 @@ index d948913d7b8..d2663916149 100644 if (wm->ldr.InInitializationOrderLinks.Flink) RemoveEntryList(&wm->ldr.InInitializationOrderLinks); -@@ -3988,6 +4044,7 @@ static NTSTATUS process_init(void) +@@ -4010,6 +4066,7 @@ static NTSTATUS process_init(void) INITIAL_TEB stack; TEB *teb = NtCurrentTeb(); PEB *peb = teb->Peb; @@ -213,7 +213,7 @@ index d948913d7b8..d2663916149 100644 peb->LdrData = &ldr; peb->FastPebLock = &peb_lock; -@@ -4024,6 +4081,10 @@ static NTSTATUS process_init(void) +@@ -4046,6 +4103,10 @@ static NTSTATUS process_init(void) load_global_options(); version_init(); @@ -221,10 +221,10 @@ index d948913d7b8..d2663916149 100644 + for (i = 0; i < HASH_MAP_SIZE; i++) + InitializeListHead(&hash_table[i]); + - /* setup the load callback and create ntdll modref */ - RtlInitUnicodeString( &nt_name, L"\\??\\C:\\windows\\system32\\ntdll.dll" ); - NtQueryVirtualMemory( GetCurrentProcess(), process_init, MemoryBasicInformation, -@@ -4118,6 +4179,10 @@ static NTSTATUS process_init(void) + if (!(status = load_dll( params->DllPath.Buffer, params->ImagePathName.Buffer, NULL, + DONT_RESOLVE_DLL_REFERENCES, &wm ))) + { +@@ -4133,6 +4194,10 @@ static NTSTATUS process_init(void) teb->Tib.StackBase = stack.StackBase; teb->Tib.StackLimit = stack.StackLimit; teb->DeallocationStack = stack.DeallocationStack; @@ -236,10 +236,10 @@ index d948913d7b8..d2663916149 100644 } diff --git a/include/winternl.h b/include/winternl.h -index c5f3ba04a8a..d5d16eff4f5 100644 +index 2ff60a35004..8cc8a166608 100644 --- a/include/winternl.h +++ b/include/winternl.h -@@ -2721,8 +2721,8 @@ typedef struct _LDR_DATA_TABLE_ENTRY +@@ -2731,8 +2731,8 @@ typedef struct _LDR_DATA_TABLE_ENTRY ULONG Flags; SHORT LoadCount; SHORT TlsIndex; diff --git a/patches/ntdll-NtAlertThreadByThreadId/0001-ntdll-tests-Move-some-tests-to-a-new-sync.c-file.patch b/patches/ntdll-NtAlertThreadByThreadId/0001-ntdll-tests-Move-some-tests-to-a-new-sync.c-file.patch index 20a2afb5..48c8624e 100644 --- a/patches/ntdll-NtAlertThreadByThreadId/0001-ntdll-tests-Move-some-tests-to-a-new-sync.c-file.patch +++ b/patches/ntdll-NtAlertThreadByThreadId/0001-ntdll-tests-Move-some-tests-to-a-new-sync.c-file.patch @@ -1,13 +1,13 @@ -From f1f8f1d85868f75ac182252335de1cd84cb4ba16 Mon Sep 17 00:00:00 2001 +From d6d1a8e33e479f9f7d8bd228efaaa5a9157255ab Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Thu, 9 Jan 2020 13:44:01 -0600 Subject: [PATCH] ntdll/tests: Move some tests to a new sync.c file. --- dlls/ntdll/tests/Makefile.in | 1 + - dlls/ntdll/tests/om.c | 498 ------------------------------- + dlls/ntdll/tests/om.c | 500 +------------------------------- dlls/ntdll/tests/sync.c | 547 +++++++++++++++++++++++++++++++++++ - 3 files changed, 548 insertions(+), 498 deletions(-) + 3 files changed, 550 insertions(+), 498 deletions(-) create mode 100644 dlls/ntdll/tests/sync.c diff --git a/dlls/ntdll/tests/Makefile.in b/dlls/ntdll/tests/Makefile.in @@ -23,10 +23,10 @@ index ed15c51339f..9a99c01bd7c 100644 time.c \ virtual.c diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c -index 266ec0d63eb..201fb92cc97 100644 +index b318c0b2e64..a65c879465c 100644 --- a/dlls/ntdll/tests/om.c +++ b/dlls/ntdll/tests/om.c -@@ -28,10 +28,6 @@ +@@ -30,10 +30,6 @@ static VOID (WINAPI *pRtlInitUnicodeString)( PUNICODE_STRING, LPCWSTR ); static NTSTATUS (WINAPI *pNtCreateEvent) ( PHANDLE, ACCESS_MASK, const POBJECT_ATTRIBUTES, EVENT_TYPE, BOOLEAN); static NTSTATUS (WINAPI *pNtOpenEvent) ( PHANDLE, ACCESS_MASK, const POBJECT_ATTRIBUTES); @@ -37,7 +37,7 @@ index 266ec0d63eb..201fb92cc97 100644 static NTSTATUS (WINAPI *pNtCreateJobObject)( PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES ); static NTSTATUS (WINAPI *pNtOpenJobObject)( PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES ); static NTSTATUS (WINAPI *pNtCreateKey)( PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, ULONG, -@@ -42,8 +38,6 @@ static NTSTATUS (WINAPI *pNtCreateMailslotFile)( PHANDLE, ACCESS_MASK, POBJECT_A +@@ -44,8 +40,6 @@ static NTSTATUS (WINAPI *pNtCreateMailslotFile)( PHANDLE, ACCESS_MASK, POBJECT_A ULONG, ULONG, ULONG, PLARGE_INTEGER ); static NTSTATUS (WINAPI *pNtCreateMutant)( PHANDLE, ACCESS_MASK, const POBJECT_ATTRIBUTES, BOOLEAN ); static NTSTATUS (WINAPI *pNtOpenMutant) ( PHANDLE, ACCESS_MASK, const POBJECT_ATTRIBUTES ); @@ -46,7 +46,7 @@ index 266ec0d63eb..201fb92cc97 100644 static NTSTATUS (WINAPI *pNtCreateSemaphore)( PHANDLE, ACCESS_MASK,const POBJECT_ATTRIBUTES,LONG,LONG ); static NTSTATUS (WINAPI *pNtOpenSemaphore)( PHANDLE, ACCESS_MASK, const POBJECT_ATTRIBUTES ); static NTSTATUS (WINAPI *pNtQuerySemaphore)( PHANDLE, SEMAPHORE_INFORMATION_CLASS, PVOID, ULONG, PULONG ); -@@ -65,23 +59,13 @@ static NTSTATUS (WINAPI *pNtQueryObject)(HANDLE,OBJECT_INFORMATION_CLASS,PVOID,U +@@ -67,25 +61,17 @@ static NTSTATUS (WINAPI *pNtQueryObject)(HANDLE,OBJECT_INFORMATION_CLASS,PVOID,U static NTSTATUS (WINAPI *pNtReleaseSemaphore)(HANDLE, ULONG, PULONG); static NTSTATUS (WINAPI *pNtCreateKeyedEvent)( HANDLE *, ACCESS_MASK, const OBJECT_ATTRIBUTES *, ULONG ); static NTSTATUS (WINAPI *pNtOpenKeyedEvent)( HANDLE *, ACCESS_MASK, const OBJECT_ATTRIBUTES * ); @@ -69,8 +69,12 @@ index 266ec0d63eb..201fb92cc97 100644 - #define ROUND_UP(value, alignment) (((value) + ((alignment) - 1)) & ~((alignment)-1)) ++#define KEYEDEVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x0003) ++ static LPCSTR wine_dbgstr_us( const UNICODE_STRING *us ) -@@ -1710,286 +1694,6 @@ static void test_type_mismatch(void) + { + if (!us) return "(null)"; +@@ -1783,286 +1769,6 @@ static void test_type_mismatch(void) pNtClose( h ); } @@ -357,7 +361,7 @@ index 266ec0d63eb..201fb92cc97 100644 static void test_null_device(void) { OBJECT_ATTRIBUTES attr; -@@ -2063,119 +1767,6 @@ static void test_null_device(void) +@@ -2136,119 +1842,6 @@ static void test_null_device(void) CloseHandle(ov.hEvent); } @@ -477,7 +481,7 @@ index 266ec0d63eb..201fb92cc97 100644 static void test_semaphore(void) { SEMAPHORE_BASIC_INFORMATION info; -@@ -2252,79 +1843,6 @@ static void test_semaphore(void) +@@ -2325,79 +1918,6 @@ static void test_semaphore(void) NtClose( semaphore ); } @@ -557,7 +561,7 @@ index 266ec0d63eb..201fb92cc97 100644 static void test_process(void) { OBJECT_ATTRIBUTES attr; -@@ -2388,13 +1906,7 @@ START_TEST(om) +@@ -2461,13 +1981,7 @@ START_TEST(om) pNtCreateMailslotFile = (void *)GetProcAddress(hntdll, "NtCreateMailslotFile"); pNtCreateMutant = (void *)GetProcAddress(hntdll, "NtCreateMutant"); pNtOpenEvent = (void *)GetProcAddress(hntdll, "NtOpenEvent"); @@ -571,7 +575,7 @@ index 266ec0d63eb..201fb92cc97 100644 pNtOpenFile = (void *)GetProcAddress(hntdll, "NtOpenFile"); pNtClose = (void *)GetProcAddress(hntdll, "NtClose"); pRtlInitUnicodeString = (void *)GetProcAddress(hntdll, "RtlInitUnicodeString"); -@@ -2415,15 +1927,9 @@ START_TEST(om) +@@ -2488,15 +2002,9 @@ START_TEST(om) pNtReleaseSemaphore = (void *)GetProcAddress(hntdll, "NtReleaseSemaphore"); pNtCreateKeyedEvent = (void *)GetProcAddress(hntdll, "NtCreateKeyedEvent"); pNtOpenKeyedEvent = (void *)GetProcAddress(hntdll, "NtOpenKeyedEvent"); @@ -587,7 +591,7 @@ index 266ec0d63eb..201fb92cc97 100644 pNtOpenProcess = (void *)GetProcAddress(hntdll, "NtOpenProcess"); pNtCreateDebugObject = (void *)GetProcAddress(hntdll, "NtCreateDebugObject"); pNtQuerySystemInformation = (void *)GetProcAddress(hntdll, "NtQuerySystemInformation"); -@@ -2437,11 +1943,7 @@ START_TEST(om) +@@ -2510,11 +2018,7 @@ START_TEST(om) test_query_object(); test_query_object_types(); test_type_mismatch(); diff --git a/patches/ntdll-NtQueryVirtualMemory/0003-ntdll-Implement-NtQueryVirtualMemory-MemorySectionNa.patch b/patches/ntdll-NtQueryVirtualMemory/0003-ntdll-Implement-NtQueryVirtualMemory-MemorySectionNa.patch index 5a6da72e..48414af0 100644 --- a/patches/ntdll-NtQueryVirtualMemory/0003-ntdll-Implement-NtQueryVirtualMemory-MemorySectionNa.patch +++ b/patches/ntdll-NtQueryVirtualMemory/0003-ntdll-Implement-NtQueryVirtualMemory-MemorySectionNa.patch @@ -1,4 +1,4 @@ -From 1642fdcb7681919a78d3a776382f8fdc9f5f8b94 Mon Sep 17 00:00:00 2001 +From d945688dd6b41731ea1ea515556e78d8de73979f Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Sun, 28 May 2017 05:19:30 +0200 Subject: [PATCH] ntdll: Implement NtQueryVirtualMemory(MemorySectionName). @@ -16,7 +16,7 @@ Contains several improvements by Sebastian Lackner . 7 files changed, 143 insertions(+), 10 deletions(-) diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index 8adb771cde78..d1731f449f7d 100644 +index 6a47422ac7f..82f314691c0 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c @@ -2014,7 +2014,7 @@ static NTSTATUS fill_file_info( const struct stat *st, ULONG attr, void *ptr, @@ -29,7 +29,7 @@ index 8adb771cde78..d1731f449f7d 100644 data_size_t size = 1024; NTSTATUS ret; diff --git a/dlls/ntdll/unix/process.c b/dlls/ntdll/unix/process.c -index 0401f8d998e7..200c252469c5 100644 +index a094c607da4..90617594411 100644 --- a/dlls/ntdll/unix/process.c +++ b/dlls/ntdll/unix/process.c @@ -478,7 +478,7 @@ static ULONG get_env_size( const RTL_USER_PROCESS_PARAMETERS *params, char **win @@ -42,7 +42,7 @@ index 0401f8d998e7..200c252469c5 100644 static const WCHAR ntprefixW[] = {'\\','?','?','\\',0}; static const WCHAR uncprefixW[] = {'U','N','C','\\',0}; diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h -index 4ef58f73f3b7..2e64c6d334a5 100644 +index 6b7b8a4ce7c..3371a2ffaf0 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h @@ -108,6 +108,7 @@ extern void CDECL get_initial_directory( UNICODE_STRING *dir ) DECLSPEC_HIDDEN; @@ -53,19 +53,19 @@ index 4ef58f73f3b7..2e64c6d334a5 100644 extern void CDECL virtual_release_address_space(void) DECLSPEC_HIDDEN; extern NTSTATUS CDECL unwind_builtin_dll( ULONG type, struct _DISPATCHER_CONTEXT *dispatch, -@@ -159,6 +160,7 @@ extern unsigned int server_queue_process_apc( HANDLE process, const apc_call_t * +@@ -161,6 +162,7 @@ extern unsigned int server_queue_process_apc( HANDLE process, const apc_call_t * apc_result_t *result ) DECLSPEC_HIDDEN; extern int server_get_unix_fd( HANDLE handle, unsigned int wanted_access, int *unix_fd, int *needs_close, enum server_fd_type *type, unsigned int *options ) DECLSPEC_HIDDEN; +extern NTSTATUS server_get_unix_name( HANDLE handle, char **unix_name, BOOL nofollow ) DECLSPEC_HIDDEN; - extern void server_init_process(void) DECLSPEC_HIDDEN; + extern size_t server_init_process(void) DECLSPEC_HIDDEN; extern void server_init_process_done(void) DECLSPEC_HIDDEN; - extern size_t server_init_thread( void *entry_point, BOOL *suspend ) DECLSPEC_HIDDEN; + extern void server_init_thread( void *entry_point, BOOL *suspend ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c -index cc1cfce6b093..f041b335a29e 100644 +index a136390c994..457bd45e516 100644 --- a/dlls/ntdll/unix/virtual.c +++ b/dlls/ntdll/unix/virtual.c -@@ -4024,6 +4024,103 @@ static NTSTATUS get_working_set_ex( HANDLE process, LPCVOID addr, +@@ -4042,6 +4042,103 @@ static NTSTATUS get_working_set_ex( HANDLE process, LPCVOID addr, return STATUS_SUCCESS; } @@ -169,7 +169,7 @@ index cc1cfce6b093..f041b335a29e 100644 #define UNIMPLEMENTED_INFO_CLASS(c) \ case c: \ FIXME("(process=%p,addr=%p) Unimplemented information class: " #c "\n", process, addr); \ -@@ -4048,8 +4145,10 @@ NTSTATUS WINAPI NtQueryVirtualMemory( HANDLE process, LPCVOID addr, +@@ -4066,8 +4163,10 @@ NTSTATUS WINAPI NtQueryVirtualMemory( HANDLE process, LPCVOID addr, case MemoryWorkingSetExInformation: return get_working_set_ex( process, addr, buffer, len, res_len ); @@ -182,7 +182,7 @@ index cc1cfce6b093..f041b335a29e 100644 default: diff --git a/dlls/psapi/tests/psapi_main.c b/dlls/psapi/tests/psapi_main.c -index be12af583112..3e211a771f93 100644 +index be12af58311..3e211a771f9 100644 --- a/dlls/psapi/tests/psapi_main.c +++ b/dlls/psapi/tests/psapi_main.c @@ -384,14 +384,7 @@ static BOOL nt_get_mapped_file_name(HANDLE process, LPVOID addr, LPWSTR name, DW @@ -209,10 +209,10 @@ index be12af583112..3e211a771f93 100644 } diff --git a/server/mapping.c b/server/mapping.c -index 7729d9582477..d5f889771e50 100644 +index 9e481646f2f..399d0c76918 100644 --- a/server/mapping.c +++ b/server/mapping.c -@@ -1139,6 +1139,35 @@ DECL_HANDLER(unmap_view) +@@ -1178,6 +1178,35 @@ DECL_HANDLER(unmap_view) if (view) free_memory_view( view ); } @@ -249,10 +249,10 @@ index 7729d9582477..d5f889771e50 100644 DECL_HANDLER(get_mapping_committed_range) { diff --git a/server/protocol.def b/server/protocol.def -index f1092a00da87..723425c053fc 100644 +index 957ef25f967..4888cb63506 100644 --- a/server/protocol.def +++ b/server/protocol.def -@@ -1549,6 +1549,15 @@ enum server_fd_type +@@ -1539,6 +1539,15 @@ enum server_fd_type @END diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index cbd6503a..930d1941 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "cfbbde2abce1eedc7f53db3f8af8078fe4a11cac" + echo "433b9081ba7c862feb947400f507228e793d7d4c" } # Show version information @@ -98,7 +98,6 @@ patch_enable_all () enable_cryptext_CryptExtOpenCER="$1" enable_d3d11_Deferred_Context="$1" enable_d3drm_IDirect3D3_support="$1" - enable_d3dx9_32bpp_Alpha_Channel="$1" enable_d3dx9_36_BumpLuminance="$1" enable_d3dx9_36_CloneEffect="$1" enable_d3dx9_36_D3DXDisassembleShader="$1" @@ -380,9 +379,6 @@ patch_enable () d3drm-IDirect3D3-support) enable_d3drm_IDirect3D3_support="$2" ;; - d3dx9-32bpp_Alpha_Channel) - enable_d3dx9_32bpp_Alpha_Channel="$2" - ;; d3dx9_36-BumpLuminance) enable_d3dx9_36_BumpLuminance="$2" ;; @@ -2034,18 +2030,6 @@ if test "$enable_d3drm_IDirect3D3_support" -eq 1; then patch_apply d3drm-IDirect3D3-support/0001-d3drm-Support-IDirect3D3-when-creating-device.patch fi -# Patchset d3dx9-32bpp_Alpha_Channel -# | -# | This patchset fixes the following Wine bugs: -# | * [#48563] Runaway: A Twist of Fate renders its cursor incorrectly -# | -# | Modified files: -# | * dlls/d3dx9_36/surface.c, dlls/d3dx9_36/tests/surface.c -# | -if test "$enable_d3dx9_32bpp_Alpha_Channel" -eq 1; then - patch_apply d3dx9-32bpp_Alpha_Channel/0001-d3dx9-Return-D3DFMT_A8R8G8B8-in-D3DXGetImageInfoFrom.patch -fi - # Patchset d3dx9_36-BumpLuminance # | # | Modified files: @@ -3304,7 +3288,7 @@ fi # | * dlls/ntdll/Makefile.in, dlls/ntdll/critsection.c, dlls/ntdll/ntdll.spec, dlls/ntdll/ntdll_misc.h, dlls/ntdll/sync.c, # | dlls/ntdll/tests/Makefile.in, dlls/ntdll/tests/om.c, dlls/ntdll/tests/sync.c, dlls/ntdll/thread.c, # | dlls/ntdll/unix/loader.c, dlls/ntdll/unix/sync.c, dlls/ntdll/unix/thread.c, dlls/ntdll/unix/unix_private.h, -# | dlls/ntdll/unix/virtual.c, dlls/ntdll/unixlib.h, include/winternl.h, server/thread.c +# | dlls/ntdll/unix/virtual.c, dlls/ntdll/unixlib.h, include/winternl.h # | if test "$enable_ntdll_NtAlertThreadByThreadId" -eq 1; then patch_apply ntdll-NtAlertThreadByThreadId/0001-ntdll-tests-Move-some-tests-to-a-new-sync.c-file.patch diff --git a/patches/server-Object_Types/0002-ntdll-Implement-ObjectTypesInformation-in-NtQueryObj.patch b/patches/server-Object_Types/0002-ntdll-Implement-ObjectTypesInformation-in-NtQueryObj.patch index 8a7ff853..38bdb476 100644 --- a/patches/server-Object_Types/0002-ntdll-Implement-ObjectTypesInformation-in-NtQueryObj.patch +++ b/patches/server-Object_Types/0002-ntdll-Implement-ObjectTypesInformation-in-NtQueryObj.patch @@ -1,4 +1,4 @@ -From fb47d0b55447f5ec93fb5091fc318c92651f0b40 Mon Sep 17 00:00:00 2001 +From 09687ecf83e4ba5b6363bf2ada5df63798e398cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Wed, 8 Mar 2017 02:12:37 +0100 Subject: [PATCH] ntdll: Implement ObjectTypesInformation in NtQueryObject. @@ -12,10 +12,10 @@ Subject: [PATCH] ntdll: Implement ObjectTypesInformation in NtQueryObject. 5 files changed, 170 insertions(+), 2 deletions(-) diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c -index d3b932bec1d..e5a123447e2 100644 +index 21de385a8bc..84a09bb1bfa 100644 --- a/dlls/ntdll/tests/om.c +++ b/dlls/ntdll/tests/om.c -@@ -78,6 +78,21 @@ static void (WINAPI *pRtlWakeAddressSingle)( const void * ); +@@ -83,6 +83,21 @@ static NTSTATUS (WINAPI *pNtCreateDebugObject)( HANDLE *, ACCESS_MASK, OBJECT_AT #define KEYEDEVENT_WAKE 0x0002 #define KEYEDEVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x0003) @@ -37,8 +37,8 @@ index d3b932bec1d..e5a123447e2 100644 static void test_case_sensitive (void) { NTSTATUS status; -@@ -1493,6 +1508,47 @@ static void test_query_object(void) - pNtClose(handle); +@@ -1643,6 +1658,47 @@ static void test_query_object(void) + pNtClose( handle ); } +static void test_query_object_types(void) @@ -85,7 +85,7 @@ index d3b932bec1d..e5a123447e2 100644 static void test_type_mismatch(void) { HANDLE h; -@@ -2090,6 +2146,7 @@ START_TEST(om) +@@ -2389,6 +2445,7 @@ START_TEST(om) test_directory(); test_symboliclink(); test_query_object(); @@ -94,10 +94,10 @@ index d3b932bec1d..e5a123447e2 100644 test_event(); test_mutant(); diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index afb552be098..e18daaea5ca 100644 +index 7a77b0a874d..342c97c2426 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c -@@ -130,6 +130,8 @@ +@@ -145,6 +145,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(file); WINE_DECLARE_DEBUG_CHANNEL(winediag); @@ -106,7 +106,7 @@ index afb552be098..e18daaea5ca 100644 #define MAX_DOS_DRIVES 26 #define FILE_WRITE_TO_END_OF_FILE ((LONGLONG)-1) -@@ -6593,6 +6595,57 @@ NTSTATUS WINAPI NtQueryObject( HANDLE handle, OBJECT_INFORMATION_CLASS info_clas +@@ -7544,6 +7546,57 @@ NTSTATUS WINAPI NtQueryObject( HANDLE handle, OBJECT_INFORMATION_CLASS info_clas break; } @@ -165,10 +165,10 @@ index afb552be098..e18daaea5ca 100644 { OBJECT_DATA_INFORMATION* p = ptr; diff --git a/include/winternl.h b/include/winternl.h -index 9b628474655..2944e03afc0 100644 +index 45b4eddd815..4d8b5841d17 100644 --- a/include/winternl.h +++ b/include/winternl.h -@@ -1115,7 +1115,7 @@ typedef enum _OBJECT_INFORMATION_CLASS { +@@ -1161,7 +1161,7 @@ typedef enum _OBJECT_INFORMATION_CLASS { ObjectBasicInformation, ObjectNameInformation, ObjectTypeInformation, @@ -177,7 +177,7 @@ index 9b628474655..2944e03afc0 100644 ObjectDataInformation } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS; -@@ -1554,9 +1554,35 @@ typedef struct _OBJECT_NAME_INFORMATION { +@@ -1600,9 +1600,35 @@ typedef struct _OBJECT_NAME_INFORMATION { typedef struct __OBJECT_TYPE_INFORMATION { UNICODE_STRING TypeName; @@ -215,10 +215,10 @@ index 9b628474655..2944e03afc0 100644 #ifdef __WINESRC__ DWORD_PTR ExitStatus; diff --git a/server/directory.c b/server/directory.c -index 4d6978f61af..82f02ddeb2e 100644 +index 2d25667106e..955be98faca 100644 --- a/server/directory.c +++ b/server/directory.c -@@ -73,6 +73,8 @@ static const struct object_ops object_type_ops = +@@ -74,6 +74,8 @@ static const struct object_ops object_type_ops = no_destroy /* destroy */ }; @@ -227,7 +227,7 @@ index 4d6978f61af..82f02ddeb2e 100644 struct directory { -@@ -236,7 +238,14 @@ struct object_type *get_object_type( const struct unicode_str *name ) +@@ -238,7 +240,14 @@ struct object_type *get_object_type( const struct unicode_str *name ) if ((type = create_named_object( &dir_objtype->obj, &object_type_ops, name, OBJ_OPENIF | OBJ_PERMANENT, NULL ))) @@ -242,7 +242,7 @@ index 4d6978f61af..82f02ddeb2e 100644 return type; } -@@ -532,3 +541,17 @@ DECL_HANDLER(get_object_type) +@@ -542,3 +551,17 @@ DECL_HANDLER(get_object_type) } release_object( obj ); } @@ -261,10 +261,10 @@ index 4d6978f61af..82f02ddeb2e 100644 + else set_error( STATUS_NO_MORE_ENTRIES ); +} diff --git a/server/protocol.def b/server/protocol.def -index 85af5f0061c..9bc4ba12042 100644 +index 5ff2cd3d082..d1d72e625e9 100644 --- a/server/protocol.def +++ b/server/protocol.def -@@ -3339,6 +3339,15 @@ struct handle_info +@@ -3311,6 +3311,15 @@ struct handle_info @END @@ -281,5 +281,5 @@ index 85af5f0061c..9bc4ba12042 100644 @REQ(get_token_impersonation_level) obj_handle_t handle; /* handle to the object */ -- -2.28.0 +2.29.2 diff --git a/patches/server-Object_Types/0010-ntdll-Mimic-object-type-behavior-for-different-windo.patch b/patches/server-Object_Types/0010-ntdll-Mimic-object-type-behavior-for-different-windo.patch index afa9335b..afebc2a0 100644 --- a/patches/server-Object_Types/0010-ntdll-Mimic-object-type-behavior-for-different-windo.patch +++ b/patches/server-Object_Types/0010-ntdll-Mimic-object-type-behavior-for-different-windo.patch @@ -1,4 +1,4 @@ -From ad4729eeb457b1957ba925928932f85d79e5534e Mon Sep 17 00:00:00 2001 +From 97644f6ad1f0ff31758356d12818de5454640fbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Wed, 8 Mar 2017 19:39:29 +0100 Subject: [PATCH] ntdll: Mimic object type behavior for different windows @@ -11,10 +11,10 @@ Subject: [PATCH] ntdll: Mimic object type behavior for different windows 3 files changed, 82 insertions(+), 5 deletions(-) diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c -index dea669f1186..266ec0d63eb 100644 +index 13035e12140..b318c0b2e64 100644 --- a/dlls/ntdll/tests/om.c +++ b/dlls/ntdll/tests/om.c -@@ -76,6 +76,7 @@ static void (WINAPI *pRtlWakeAddressAll)( const void * ); +@@ -78,6 +78,7 @@ static void (WINAPI *pRtlWakeAddressAll)( const void * ); static void (WINAPI *pRtlWakeAddressSingle)( const void * ); static NTSTATUS (WINAPI *pNtOpenProcess)( HANDLE *, ACCESS_MASK, const OBJECT_ATTRIBUTES *, const CLIENT_ID * ); static NTSTATUS (WINAPI *pNtCreateDebugObject)( HANDLE *, ACCESS_MASK, OBJECT_ATTRIBUTES *, ULONG ); @@ -22,8 +22,8 @@ index dea669f1186..266ec0d63eb 100644 #define KEYEDEVENT_WAIT 0x0001 #define KEYEDEVENT_WAKE 0x0002 -@@ -1585,13 +1586,31 @@ static void test_query_object(void) - pNtClose(handle); +@@ -1658,13 +1659,31 @@ static void test_query_object(void) + pNtClose( handle ); } +static BOOL winver_equal_or_newer(WORD major, WORD minor) @@ -55,7 +55,7 @@ index dea669f1186..266ec0d63eb 100644 buffer = HeapAlloc( GetProcessHeap(), 0, sizeof(OBJECT_TYPES_INFORMATION) ); ok( buffer != NULL, "Failed to allocate memory\n" ); -@@ -1619,11 +1638,54 @@ static void test_query_object_types(void) +@@ -1692,11 +1711,54 @@ static void test_query_object_types(void) ok( type->TypeName.Length == sizeof(typeW) && !strncmpW(typeW, type->TypeName.Buffer, 4), "Expected 'Type' as first type, got %s\n", wine_dbgstr_us(&type->TypeName) ); } @@ -110,7 +110,7 @@ index dea669f1186..266ec0d63eb 100644 } static void test_type_mismatch(void) -@@ -2364,6 +2426,7 @@ START_TEST(om) +@@ -2437,6 +2499,7 @@ START_TEST(om) pRtlWakeAddressSingle = (void *)GetProcAddress(hntdll, "RtlWakeAddressSingle"); pNtOpenProcess = (void *)GetProcAddress(hntdll, "NtOpenProcess"); pNtCreateDebugObject = (void *)GetProcAddress(hntdll, "NtCreateDebugObject"); diff --git a/staging/upstream-commit b/staging/upstream-commit index 5fdf321d..8a3b2b68 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -cfbbde2abce1eedc7f53db3f8af8078fe4a11cac +433b9081ba7c862feb947400f507228e793d7d4c