diff --git a/patches/advapi32-Token_Integrity_Level/0008-ntdll-Implement-process-token-elevation-through-mani.patch b/patches/advapi32-Token_Integrity_Level/0008-ntdll-Implement-process-token-elevation-through-mani.patch index 2acba09b..c392e338 100644 --- a/patches/advapi32-Token_Integrity_Level/0008-ntdll-Implement-process-token-elevation-through-mani.patch +++ b/patches/advapi32-Token_Integrity_Level/0008-ntdll-Implement-process-token-elevation-through-mani.patch @@ -1,4 +1,4 @@ -From 7b7147df179554c5701f5d759a7b161d79ef90f3 Mon Sep 17 00:00:00 2001 +From e15be9d22652dbf7ef027ce5f3ef3faa42139c7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sat, 5 Aug 2017 03:39:55 +0200 Subject: ntdll: Implement process token elevation through manifests. @@ -12,13 +12,14 @@ Subject: ntdll: Implement process token elevation through manifests. 5 files changed, 67 insertions(+) diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index a09eca9db75..2f6bcbde8fe 100644 +index cdf8d586c36..5162e2fc0ec 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c -@@ -3632,6 +3632,32 @@ static void load_global_options(void) +@@ -3095,6 +3095,32 @@ static void load_global_options(void) + } - /*********************************************************************** ++/*********************************************************************** + * elevate_process + */ +static void elevate_process( void ) @@ -44,11 +45,10 @@ index a09eca9db75..2f6bcbde8fe 100644 +} + + -+/*********************************************************************** + /*********************************************************************** * start_process */ - static void start_process( void *arg ) -@@ -3679,6 +3705,7 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, +@@ -3111,6 +3137,7 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, ULONG_PTR unknown3, ULONG_PTR unknown4 ) { static const WCHAR globalflagW[] = {'G','l','o','b','a','l','F','l','a','g',0}; @@ -56,7 +56,7 @@ index a09eca9db75..2f6bcbde8fe 100644 LARGE_INTEGER timeout; NTSTATUS status; WINE_MODREF *wm; -@@ -3725,6 +3752,16 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, +@@ -3154,6 +3181,16 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, if ((status = fixup_imports( wm, load_path )) != STATUS_SUCCESS) goto error; heap_set_debug_flags( GetProcessHeap() ); @@ -70,14 +70,14 @@ index a09eca9db75..2f6bcbde8fe 100644 + elevate_process(); /* FIXME: the process exists with a wrong token for a short time */ + } + - /* Store original entrypoint (in case it gets corrupted) */ - start_params.kernel_start = kernel_start; - start_params.entry = wm->ldr.EntryPoint; + status = wine_call_on_stack( attach_process_dlls, wm, (char *)NtCurrentTeb()->Tib.StackBase - page_size ); + if (status != STATUS_SUCCESS) goto error; + diff --git a/server/process.c b/server/process.c -index f0f60edcd3f..74675d343b4 100644 +index f8969433ede..10cf39d8962 100644 --- a/server/process.c +++ b/server/process.c -@@ -1146,6 +1146,14 @@ struct process_snapshot *process_snap( int *count ) +@@ -1136,6 +1136,14 @@ struct process_snapshot *process_snap( int *count ) return snapshot; } @@ -105,10 +105,10 @@ index 548796f9c22..262eb59627b 100644 /* console functions */ extern void inherit_console(struct thread *parent_thread, struct process *process, obj_handle_t hconin); diff --git a/server/protocol.def b/server/protocol.def -index 300f23fb9b6..e5b598259f7 100644 +index 7590541ac8a..55cc768d21a 100644 --- a/server/protocol.def +++ b/server/protocol.def -@@ -3696,6 +3696,13 @@ struct handle_info +@@ -3610,6 +3610,13 @@ struct handle_info @END @@ -123,10 +123,10 @@ index 300f23fb9b6..e5b598259f7 100644 @REQ(create_completion) unsigned int access; /* desired access to a port */ diff --git a/server/token.c b/server/token.c -index c9d36a5b4f3..385ea3bbfda 100644 +index 7abd92386ea..49e84362a83 100644 --- a/server/token.c +++ b/server/token.c -@@ -1822,3 +1822,17 @@ DECL_HANDLER(create_token) +@@ -1813,3 +1813,17 @@ DECL_HANDLER(create_token) release_object( token ); } } @@ -145,5 +145,5 @@ index c9d36a5b4f3..385ea3bbfda 100644 + } +} -- -2.13.1 +2.14.1 diff --git a/patches/d3d9-DesktopWindow/0001-winex11.drv-Allow-changing-the-opengl-pixel-format-o.patch b/patches/d3d9-DesktopWindow/0001-winex11.drv-Allow-changing-the-opengl-pixel-format-o.patch index 4fc19c50..0f7a3725 100644 --- a/patches/d3d9-DesktopWindow/0001-winex11.drv-Allow-changing-the-opengl-pixel-format-o.patch +++ b/patches/d3d9-DesktopWindow/0001-winex11.drv-Allow-changing-the-opengl-pixel-format-o.patch @@ -1,4 +1,4 @@ -From 6ef722e8ff0af86432f13d5082369afdead6645c Mon Sep 17 00:00:00 2001 +From 4094c085cdc00864407b844720170fd619ce8c8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Wed, 3 Jun 2015 22:57:21 +0200 Subject: winex11.drv: Allow changing the opengl pixel format on the desktop @@ -43,10 +43,10 @@ index e1d6d4c97c2..bf6a9a138dd 100644 swapchain = (IDXGISwapChain *)0xdeadbeef; device = (ID3D10Device1 *)0xdeadbeef; diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c -index 9ce72ca853e..f8de8d59dbb 100644 +index f39e1ad43be..7bc4e982634 100644 --- a/dlls/d3d11/tests/d3d11.c +++ b/dlls/d3d11/tests/d3d11.c -@@ -1596,10 +1596,22 @@ static void test_create_device(void) +@@ -1592,10 +1592,22 @@ static void test_create_device(void) hr = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, 0, NULL, 0, D3D11_SDK_VERSION, &swapchain_desc, &swapchain, &device, &feature_level, &immediate_context); todo_wine ok(hr == DXGI_ERROR_INVALID_CALL, "D3D11CreateDeviceAndSwapChain returned %#x.\n", hr); @@ -74,11 +74,11 @@ index 9ce72ca853e..f8de8d59dbb 100644 swapchain = (IDXGISwapChain *)0xdeadbeef; device = (ID3D11Device *)0xdeadbeef; diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c -index 50752f86ad6..27ae47d9fed 100644 +index fb30636d0dd..63792e1ee05 100644 --- a/dlls/d3d9/tests/device.c +++ b/dlls/d3d9/tests/device.c -@@ -11575,6 +11575,21 @@ static void test_destroyed_window(void) - ok(!refcount, "Device has %u references left.\n", refcount); +@@ -11830,6 +11830,21 @@ todo_wine + DestroyWindow(window); } +static void test_desktop_window(void) @@ -99,19 +99,19 @@ index 50752f86ad6..27ae47d9fed 100644 START_TEST(device) { WNDCLASSA wc = {0}; -@@ -11694,6 +11709,7 @@ START_TEST(device) - test_render_target_device_mismatch(); +@@ -11950,6 +11965,7 @@ START_TEST(device) test_format_unknown(); test_destroyed_window(); + test_lockable_backbuffer(); + test_desktop_window(); UnregisterClassA("d3d9_test_wc", GetModuleHandleA(NULL)); } diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c -index f18e01f4dfc..1f4208adea4 100644 +index 5eb70a86928..c03905d221d 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c -@@ -1484,12 +1484,15 @@ static BOOL set_pixel_format(HDC hdc, int format, BOOL allow_change) +@@ -1480,12 +1480,15 @@ static BOOL set_pixel_format(HDC hdc, int format, BOOL allow_change) TRACE("(%p,%d)\n", hdc, format); @@ -129,5 +129,5 @@ index f18e01f4dfc..1f4208adea4 100644 if (!fmt) { -- -2.13.1 +2.14.1 diff --git a/patches/ntdll-APC_Start_Process/0001-ntdll-Process-APC-calls-before-starting-process.patch b/patches/ntdll-APC_Start_Process/0001-ntdll-Process-APC-calls-before-starting-process.patch index f7fea5eb..5e423be7 100644 --- a/patches/ntdll-APC_Start_Process/0001-ntdll-Process-APC-calls-before-starting-process.patch +++ b/patches/ntdll-APC_Start_Process/0001-ntdll-Process-APC-calls-before-starting-process.patch @@ -1,4 +1,4 @@ -From b4d76755b585f32399ae1a81c6166bda9cea355e Mon Sep 17 00:00:00 2001 +From cac3b5016a340f61ae2e7f16508fd8b30baaf88d Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 7 Mar 2015 18:09:37 +0100 Subject: ntdll: Process APC calls before starting process. @@ -8,10 +8,10 @@ Subject: ntdll: Process APC calls before starting process. 1 file changed, 5 insertions(+) diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index cf758505a4c..165121b689d 100644 +index 5d8b4e2e513..cdf8d586c36 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c -@@ -3062,6 +3062,7 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, +@@ -3111,6 +3111,7 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, ULONG_PTR unknown3, ULONG_PTR unknown4 ) { static const WCHAR globalflagW[] = {'G','l','o','b','a','l','F','l','a','g',0}; @@ -19,7 +19,7 @@ index cf758505a4c..165121b689d 100644 NTSTATUS status; WINE_MODREF *wm; LPCWSTR load_path; -@@ -3112,6 +3113,10 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, +@@ -3158,6 +3159,10 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, virtual_release_address_space(); virtual_clear_thread_stack(); @@ -27,9 +27,9 @@ index cf758505a4c..165121b689d 100644 + timeout.QuadPart = 0; + NtDelayExecution( TRUE, &timeout ); + - wine_switch_to_stack( start_process, &start_params, NtCurrentTeb()->Tib.StackBase ); + if (context.ContextFlags) NtSetContextThread( GetCurrentThread(), &context ); + wine_switch_to_stack( start_process, wm->ldr.EntryPoint, NtCurrentTeb()->Tib.StackBase ); - error: -- -2.11.0 +2.14.1 diff --git a/patches/ntdll-CLI_Images/0001-ntdll-Load-CLI-.NET-images-in-the-same-way-as-Window.patch b/patches/ntdll-CLI_Images/0001-ntdll-Load-CLI-.NET-images-in-the-same-way-as-Window.patch index 07bdbce9..84014501 100644 --- a/patches/ntdll-CLI_Images/0001-ntdll-Load-CLI-.NET-images-in-the-same-way-as-Window.patch +++ b/patches/ntdll-CLI_Images/0001-ntdll-Load-CLI-.NET-images-in-the-same-way-as-Window.patch @@ -1,22 +1,21 @@ -From 7c039b040883bf9cc22050f2dcb8b70cb9a2e5b8 Mon Sep 17 00:00:00 2001 +From d209582c297d376da27f80dc62c59b2f5440da25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Wed, 1 Apr 2015 04:34:20 +0200 Subject: ntdll: Load CLI/.NET images in the same way as Windows XP and above. --- - dlls/ntdll/loader.c | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 121 insertions(+), 2 deletions(-) + dlls/ntdll/loader.c | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 123 insertions(+), 4 deletions(-) diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index cf758505a4c..e796e7552b0 100644 +index cdf8d586c36..fa66c4c40d2 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c -@@ -104,12 +104,17 @@ struct start_params - void *kernel_start; - LPTHREAD_START_ROUTINE entry; - }; -+static struct start_params start_params; +@@ -100,11 +100,16 @@ struct builtin_load_info + static struct builtin_load_info default_load_info; + static struct builtin_load_info *builtin_load_info = &default_load_info; ++static CONTEXT start_context = { 0 }; static HANDLE main_exe_file; static UINT tls_module_count; /* number of modules with TLS directory */ static IMAGE_TLS_DIRECTORY *tls_dirs; /* array of TLS directories */ @@ -29,10 +28,11 @@ index cf758505a4c..e796e7552b0 100644 static RTL_CRITICAL_SECTION loader_section; static RTL_CRITICAL_SECTION_DEBUG critsect_debug = { -@@ -343,6 +348,78 @@ static inline ULONG_PTR allocate_stub( const char *dll, const char *name ) { ret +@@ -363,6 +368,78 @@ static inline ULONG_PTR allocate_stub( const char *dll, const char *name ) { ret + #endif /* __i386__ */ - /************************************************************************* ++/************************************************************************* + * is_cli_only_image + * + * Checks if an image is a CLI/.NET image which does not contain any @@ -104,11 +104,10 @@ index cf758505a4c..e796e7552b0 100644 +} + + -+/************************************************************************* + /************************************************************************* * get_modref * - * Looks for the referenced HMODULE in the current process -@@ -892,6 +969,10 @@ static NTSTATUS fixup_imports( WINE_MODREF *wm, LPCWSTR load_path ) +@@ -913,6 +990,10 @@ static NTSTATUS fixup_imports( WINE_MODREF *wm, LPCWSTR load_path ) if (!(wm->ldr.Flags & LDR_DONT_RESOLVE_REFS)) return STATUS_SUCCESS; /* already done */ wm->ldr.Flags &= ~LDR_DONT_RESOLVE_REFS; @@ -119,7 +118,7 @@ index cf758505a4c..e796e7552b0 100644 wm->ldr.TlsIndex = alloc_tls_slot( &wm->ldr ); if (!(imports = RtlImageDirectoryEntryToData( wm->ldr.BaseAddress, TRUE, -@@ -1096,8 +1177,47 @@ static NTSTATUS MODULE_InitDLL( WINE_MODREF *wm, UINT reason, LPVOID lpReserved +@@ -1117,8 +1198,47 @@ static NTSTATUS MODULE_InitDLL( WINE_MODREF *wm, UINT reason, LPVOID lpReserved BOOL retv = FALSE; /* Skip calls for modules loaded with special load flags */ @@ -159,7 +158,7 @@ index cf758505a4c..e796e7552b0 100644 + #endif + + if (!(wm->ldr.Flags & LDR_IMAGE_IS_DLL)) -+ start_params.entry = wm->ldr.EntryPoint; ++ start_context.ContextFlags = 0; + + entry = wm->ldr.EntryPoint; + } @@ -168,14 +167,32 @@ index cf758505a4c..e796e7552b0 100644 if (wm->ldr.TlsIndex != -1) call_tls_callbacks( wm->ldr.BaseAddress, reason ); if (!entry || !(wm->ldr.Flags & LDR_IMAGE_IS_DLL)) return STATUS_SUCCESS; -@@ -3066,7 +3186,6 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, +@@ -3116,7 +3236,6 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, WINE_MODREF *wm; LPCWSTR load_path; PEB *peb = NtCurrentTeb()->Peb; -- struct start_params start_params; +- CONTEXT context = { 0 }; + kernel32_start_process = kernel_start; if (main_exe_file) NtClose( main_exe_file ); /* at this point the main module is created */ +@@ -3147,7 +3266,7 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, + InsertHeadList( &peb->LdrData->InMemoryOrderModuleList, &wm->ldr.InMemoryOrderModuleList ); + if ((status = virtual_alloc_thread_stack( NtCurrentTeb(), 0, 0 )) != STATUS_SUCCESS) goto error; +- if ((status = server_init_process_done( &context )) != STATUS_SUCCESS) goto error; ++ if ((status = server_init_process_done( &start_context )) != STATUS_SUCCESS) goto error; + + actctx_init(); + load_path = NtCurrentTeb()->Peb->ProcessParameters->DllPath.Buffer; +@@ -3163,7 +3282,7 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, + timeout.QuadPart = 0; + NtDelayExecution( TRUE, &timeout ); + +- if (context.ContextFlags) NtSetContextThread( GetCurrentThread(), &context ); ++ if (start_context.ContextFlags) NtSetContextThread( GetCurrentThread(), &start_context ); + wine_switch_to_stack( start_process, wm->ldr.EntryPoint, NtCurrentTeb()->Tib.StackBase ); + + error: -- -2.11.0 +2.14.1 diff --git a/patches/ntdll-CLI_Images/definition b/patches/ntdll-CLI_Images/definition index 1d7c420f..e57d9e2b 100644 --- a/patches/ntdll-CLI_Images/definition +++ b/patches/ntdll-CLI_Images/definition @@ -1,2 +1,3 @@ Fixes: [38661] Implement proper handling of CLI .NET images in Wine library loader Depends: mscoree-CorValidateImage +Depends: ntdll-APC_Start_Process 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 b6f8efdd..f1c57a78 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 e9ae5fa171bfea7b44946f6ac3d3205d53a72904 Mon Sep 17 00:00:00 2001 +From 5b8f46cbd6c338fe8fc080e5fea870627f266de1 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: ntdll: Implement HashLinks field in LDR module data. @@ -10,7 +10,7 @@ Subject: ntdll: Implement HashLinks field in LDR module data. 3 files changed, 140 insertions(+), 4 deletions(-) diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c -index a74647b3d4..dc7b92deae 100644 +index 1f6f3176760..f51ac62b976 100644 --- a/dlls/kernel32/tests/loader.c +++ b/dlls/kernel32/tests/loader.c @@ -28,6 +28,7 @@ @@ -21,7 +21,7 @@ index a74647b3d4..dc7b92deae 100644 #include "wine/test.h" #include "delayloadhandler.h" -@@ -3043,6 +3044,79 @@ static void test_InMemoryOrderModuleList(void) +@@ -3036,6 +3037,79 @@ static void test_InMemoryOrderModuleList(void) ok(entry2 == mark2, "expected entry2 == mark2, got %p and %p\n", entry2, mark2); } @@ -101,17 +101,17 @@ index a74647b3d4..dc7b92deae 100644 START_TEST(loader) { int argc; -@@ -3104,4 +3178,5 @@ START_TEST(loader) +@@ -3097,4 +3171,5 @@ START_TEST(loader) test_import_resolution(); test_ExitProcess(); test_InMemoryOrderModuleList(); + test_HashLinks(); } diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index 97cde88354..d9b6b7d1c7 100644 +index 4ff69b674a3..691eb60e865 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c -@@ -82,6 +82,9 @@ static const char * const reason_names[] = +@@ -79,6 +79,9 @@ static const char * const reason_names[] = static const WCHAR dllW[] = {'.','d','l','l',0}; @@ -121,7 +121,7 @@ index 97cde88354..d9b6b7d1c7 100644 /* internal representation of 32bit modules. per process. */ typedef struct _wine_modref { -@@ -159,7 +162,6 @@ static inline void ascii_to_unicode( WCHAR *dst, const char *src, size_t len ) +@@ -148,7 +151,6 @@ static inline void ascii_to_unicode( WCHAR *dst, const char *src, size_t len ) while (len--) *dst++ = (unsigned char)*src++; } @@ -129,7 +129,7 @@ index 97cde88354..d9b6b7d1c7 100644 /************************************************************************* * call_dll_entry_point * -@@ -424,6 +426,51 @@ static BOOL load_mscoree( void ) +@@ -439,6 +441,51 @@ static BOOL load_mscoree( void ) return TRUE; } @@ -181,7 +181,7 @@ index 97cde88354..d9b6b7d1c7 100644 /************************************************************************* * get_modref -@@ -1054,7 +1101,6 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename, LPCWSTR fak +@@ -1056,7 +1103,6 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename ) wm->ldr.TlsIndex = -1; wm->ldr.LoadCount = 1; wm->ldr.SectionHandle = NULL; @@ -189,7 +189,7 @@ index 97cde88354..d9b6b7d1c7 100644 wm->ldr.TimeDateStamp = 0; wm->ldr.ActivationContext = 0; -@@ -1075,6 +1121,8 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename, LPCWSTR fak +@@ -1077,6 +1123,8 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename ) &wm->ldr.InLoadOrderModuleList); InsertTailList(&NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList, &wm->ldr.InMemoryOrderModuleList); @@ -198,7 +198,7 @@ index 97cde88354..d9b6b7d1c7 100644 /* wait until init is called for inserting into this list */ wm->ldr.InInitializationOrderModuleList.Flink = NULL; -@@ -1877,6 +1925,7 @@ static void load_builtin_callback( void *module, const char *filename ) +@@ -1784,6 +1832,7 @@ static void load_builtin_callback( void *module, const char *filename ) /* the module has only be inserted in the load & memory order lists */ RemoveEntryList(&wm->ldr.InLoadOrderModuleList); RemoveEntryList(&wm->ldr.InMemoryOrderModuleList); @@ -206,7 +206,7 @@ index 97cde88354..d9b6b7d1c7 100644 /* FIXME: free the modref */ builtin_load_info->status = STATUS_DLL_NOT_FOUND; return; -@@ -2091,6 +2140,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, LPCWSTR fakemo +@@ -1999,6 +2048,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file, /* the module has only be inserted in the load & memory order lists */ RemoveEntryList(&wm->ldr.InLoadOrderModuleList); RemoveEntryList(&wm->ldr.InMemoryOrderModuleList); @@ -214,7 +214,7 @@ index 97cde88354..d9b6b7d1c7 100644 /* FIXME: there are several more dangling references * left. Including dlls loaded by this dll before the -@@ -3217,6 +3267,7 @@ static void free_modref( WINE_MODREF *wm ) +@@ -2977,6 +3027,7 @@ static void free_modref( WINE_MODREF *wm ) { RemoveEntryList(&wm->ldr.InLoadOrderModuleList); RemoveEntryList(&wm->ldr.InMemoryOrderModuleList); @@ -222,7 +222,7 @@ index 97cde88354..d9b6b7d1c7 100644 if (wm->ldr.InInitializationOrderModuleList.Flink) RemoveEntryList(&wm->ldr.InInitializationOrderModuleList); -@@ -3507,6 +3558,9 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, +@@ -3264,6 +3315,9 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, RemoveEntryList( &wm->ldr.InMemoryOrderModuleList ); InsertHeadList( &peb->LdrData->InMemoryOrderModuleList, &wm->ldr.InMemoryOrderModuleList ); @@ -230,9 +230,9 @@ index 97cde88354..d9b6b7d1c7 100644 + recompute_hash_map(); + if ((status = virtual_alloc_thread_stack( NtCurrentTeb(), 0, 0 )) != STATUS_SUCCESS) goto error; - if ((status = server_init_process_done()) != STATUS_SUCCESS) goto error; + if ((status = server_init_process_done( &start_context )) != STATUS_SUCCESS) goto error; -@@ -3710,6 +3764,7 @@ void __wine_process_init(void) +@@ -3460,6 +3514,7 @@ void __wine_process_init(void) NTSTATUS status; ANSI_STRING func_name; void (* DECLSPEC_NORETURN CDECL init_func)(void); @@ -240,7 +240,7 @@ index 97cde88354..d9b6b7d1c7 100644 main_exe_file = thread_init(); -@@ -3719,6 +3774,10 @@ void __wine_process_init(void) +@@ -3469,6 +3524,10 @@ void __wine_process_init(void) load_global_options(); @@ -252,10 +252,10 @@ index 97cde88354..d9b6b7d1c7 100644 wine_dll_set_callback( load_builtin_callback ); diff --git a/include/winternl.h b/include/winternl.h -index 2685137d6a..d6f47ad3ba 100644 +index 4e7d2e966c2..c70d1bd837e 100644 --- a/include/winternl.h +++ b/include/winternl.h -@@ -2171,8 +2171,7 @@ typedef struct _LDR_MODULE +@@ -2099,8 +2099,7 @@ typedef struct _LDR_MODULE ULONG Flags; SHORT LoadCount; SHORT TlsIndex; @@ -265,7 +265,7 @@ index 2685137d6a..d6f47ad3ba 100644 ULONG TimeDateStamp; HANDLE ActivationContext; PVOID PatchInformation; -@@ -2182,6 +2181,9 @@ typedef struct _LDR_MODULE +@@ -2110,6 +2109,9 @@ typedef struct _LDR_MODULE PVOID ContextInformation; ULONG_PTR OriginalBase; LARGE_INTEGER LoadTime; @@ -276,5 +276,5 @@ index 2685137d6a..d6f47ad3ba 100644 /* those defines are (some of the) regular LDR_MODULE.Flags values */ -- -2.11.0 +2.14.1 diff --git a/patches/ntdll-User_Shared_Data/0003-ntdll-Create-thread-to-update-user_shared_data-time-.patch b/patches/ntdll-User_Shared_Data/0003-ntdll-Create-thread-to-update-user_shared_data-time-.patch index b6928755..29818a67 100644 --- a/patches/ntdll-User_Shared_Data/0003-ntdll-Create-thread-to-update-user_shared_data-time-.patch +++ b/patches/ntdll-User_Shared_Data/0003-ntdll-Create-thread-to-update-user_shared_data-time-.patch @@ -1,4 +1,4 @@ -From fd6f4d21e1f1aa87ae2c82edc38c6286e8af7a3f Mon Sep 17 00:00:00 2001 +From 6164061c7897abc29b28b0bb3a98b0cc525be934 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Fri, 5 May 2017 05:40:50 +0200 Subject: ntdll: Create thread to update user_shared_data time values when @@ -35,11 +35,11 @@ index 2e0e79f8e8d..d53488c7652 100644 return FALSE; } diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index 71bba83b9bc..a2ea5e0dcd3 100644 +index b405bb4e158..187e5a9b57a 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c -@@ -3217,6 +3217,37 @@ static void start_process( void *arg ) - call_thread_entry_point( start_params->kernel_start, start_params->entry ); +@@ -3211,6 +3211,37 @@ static void start_process( void *arg ) + call_thread_entry_point( kernel32_start_process, arg ); } + @@ -76,7 +76,7 @@ index 71bba83b9bc..a2ea5e0dcd3 100644 /****************************************************************** * LdrInitializeThunk (NTDLL.@) * -@@ -3248,6 +3279,7 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, +@@ -3243,6 +3274,7 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, peb->ProcessParameters->WindowTitle = wm->ldr.FullDllName; version_init( wm->ldr.FullDllName.Buffer ); hidden_exports_init( wm->ldr.FullDllName.Buffer ); @@ -85,10 +85,10 @@ index 71bba83b9bc..a2ea5e0dcd3 100644 LdrQueryImageFileExecutionOptions( &peb->ProcessParameters->ImagePathName, globalflagW, diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h -index cdc12b07db7..c627162da4d 100644 +index dfa808bfb29..463d88c67b9 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h -@@ -176,6 +176,9 @@ extern void VIRTUAL_SetForceExec( BOOL enable ) DECLSPEC_HIDDEN; +@@ -177,6 +177,9 @@ extern void VIRTUAL_SetForceExec( BOOL enable ) DECLSPEC_HIDDEN; extern void virtual_release_address_space(void) DECLSPEC_HIDDEN; extern void virtual_set_large_address_space(void) DECLSPEC_HIDDEN; extern struct _KUSER_SHARED_DATA *user_shared_data DECLSPEC_HIDDEN; @@ -99,7 +99,7 @@ index cdc12b07db7..c627162da4d 100644 /* completion */ extern NTSTATUS NTDLL_AddCompletion( HANDLE hFile, ULONG_PTR CompletionValue, diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c -index 0cebc2a8daf..9064e1559a9 100644 +index 0e73430907f..97b7383e2b8 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -43,6 +43,7 @@ @@ -120,8 +120,8 @@ index 0cebc2a8daf..9064e1559a9 100644 +struct _KUSER_SHARED_DATA *user_shared_data = &user_shared_data_internal; PUNHANDLED_EXCEPTION_FILTER unhandled_exception_filter = NULL; - -@@ -353,18 +356,71 @@ static ULONG_PTR get_image_addr(void) + LPTHREAD_START_ROUTINE kernel32_start_process = NULL; +@@ -355,18 +358,71 @@ static ULONG_PTR get_image_addr(void) */ BYTE* CDECL __wine_user_shared_data(void) { @@ -198,7 +198,7 @@ index 0cebc2a8daf..9064e1559a9 100644 /*********************************************************************** * thread_init * -@@ -395,7 +451,7 @@ HANDLE thread_init(void) +@@ -397,7 +453,7 @@ HANDLE thread_init(void) MESSAGE( "wine: failed to map the shared user data: %08x\n", status ); exit(1); } @@ -208,10 +208,10 @@ index 0cebc2a8daf..9064e1559a9 100644 /* allocate and initialize the PEB */ diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c -index 9f1b6da0c5e..25946c22c97 100644 +index a452c58a44d..da7206a58b1 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c -@@ -1691,6 +1691,7 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err, BOOL on_signal_stack ) +@@ -1758,6 +1758,7 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err, BOOL on_signal_stack ) struct file_view *view; NTSTATUS ret = STATUS_ACCESS_VIOLATION; sigset_t sigset; @@ -219,7 +219,7 @@ index 9f1b6da0c5e..25946c22c97 100644 server_enter_uninterrupted_section( &csVirtual, &sigset ); if ((view = VIRTUAL_FindView( addr, 0 ))) -@@ -1707,6 +1708,18 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err, BOOL on_signal_stack ) +@@ -1774,6 +1775,18 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err, BOOL on_signal_stack ) /* ignore fault if page is writable now */ if (VIRTUAL_GetUnixProt( get_page_vprot( page )) & PROT_WRITE) ret = STATUS_SUCCESS; } @@ -238,7 +238,7 @@ index 9f1b6da0c5e..25946c22c97 100644 if (!on_signal_stack && (vprot & VPROT_GUARD)) { set_page_vprot_bits( page, page_size, 0, VPROT_GUARD ); -@@ -1715,6 +1728,10 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err, BOOL on_signal_stack ) +@@ -1782,6 +1795,10 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err, BOOL on_signal_stack ) } } server_leave_uninterrupted_section( &csVirtual, &sigset ); diff --git a/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch b/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch index 08dd8f56..0efb72ff 100644 --- a/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch +++ b/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch @@ -1,4 +1,4 @@ -From 7fd25e2e5a4397a4a4134ec50bb982b365f13534 Mon Sep 17 00:00:00 2001 +From 44f9d4109dfcd0a9e49b3396bd8f8a1f1c2ca1a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sat, 4 Oct 2014 02:53:22 +0200 Subject: ntdll: Setup a temporary signal handler during process startup to @@ -15,22 +15,22 @@ Subject: ntdll: Setup a temporary signal handler during process startup to 7 files changed, 79 insertions(+) diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h -index f78e4fe8f3..74e3c0a002 100644 +index fafad135f29..ec3b1746f84 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h @@ -68,6 +68,7 @@ extern NTSTATUS signal_alloc_thread( TEB **teb ) DECLSPEC_HIDDEN; extern void signal_free_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_init_thread( TEB *teb ) DECLSPEC_HIDDEN; - extern void signal_init_process(void) DECLSPEC_HIDDEN; + extern void signal_init_process( CONTEXT *context, LPTHREAD_START_ROUTINE entry ) DECLSPEC_HIDDEN; +extern void signal_init_early(void) DECLSPEC_HIDDEN; extern void version_init( const WCHAR *appname ) DECLSPEC_HIDDEN; extern void debug_init(void) DECLSPEC_HIDDEN; extern HANDLE thread_init(void) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/signal_arm.c b/dlls/ntdll/signal_arm.c -index cb5f67db75..b9ec7fb874 100644 +index e5e314049e8..61c9ead5682 100644 --- a/dlls/ntdll/signal_arm.c +++ b/dlls/ntdll/signal_arm.c -@@ -974,6 +974,12 @@ void signal_init_process(void) +@@ -1019,6 +1019,12 @@ void signal_init_process( CONTEXT *context, LPTHREAD_START_ROUTINE entry ) exit(1); } @@ -44,10 +44,10 @@ index cb5f67db75..b9ec7fb874 100644 /********************************************************************** * __wine_enter_vm86 (NTDLL.@) diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c -index 14c5260c14..7967310355 100644 +index 5b3e8879b8f..6e4a4f12343 100644 --- a/dlls/ntdll/signal_arm64.c +++ b/dlls/ntdll/signal_arm64.c -@@ -846,6 +846,12 @@ void signal_init_process(void) +@@ -890,6 +890,12 @@ void signal_init_process( CONTEXT *context, LPTHREAD_START_ROUTINE entry ) exit(1); } @@ -61,13 +61,14 @@ index 14c5260c14..7967310355 100644 /********************************************************************** * __wine_enter_vm86 (NTDLL.@) diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c -index bee6ab8694..ee8855a24c 100644 +index c8b85936fbf..3442851e65a 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c -@@ -2056,6 +2056,31 @@ static void usr2_handler( int signal, siginfo_t *siginfo, void *sigcontext ) +@@ -2181,6 +2181,31 @@ static void usr2_handler( int signal, siginfo_t *siginfo, void *sigcontext ) + #endif /* __HAVE_VM86 */ - /********************************************************************** ++/********************************************************************** + * segv_handler_early + * + * Handler for SIGSEGV and related errors. Used only during the initialization @@ -92,11 +93,10 @@ index bee6ab8694..ee8855a24c 100644 + } +} + -+/********************************************************************** + /********************************************************************** * segv_handler * - * Handler for SIGSEGV and related errors. -@@ -2493,6 +2518,34 @@ void signal_init_process(void) +@@ -2621,6 +2646,34 @@ void signal_init_process( CONTEXT *context, LPTHREAD_START_ROUTINE entry ) exit(1); } @@ -132,10 +132,10 @@ index bee6ab8694..ee8855a24c 100644 #ifdef __HAVE_VM86 /********************************************************************** diff --git a/dlls/ntdll/signal_powerpc.c b/dlls/ntdll/signal_powerpc.c -index 507490a526..6adf0c343b 100644 +index e5a009c2aa2..dcbc1c4fa0b 100644 --- a/dlls/ntdll/signal_powerpc.c +++ b/dlls/ntdll/signal_powerpc.c -@@ -1048,6 +1048,12 @@ void signal_init_process(void) +@@ -1092,6 +1092,12 @@ void signal_init_process( CONTEXT *context, LPTHREAD_START_ROUTINE entry ) exit(1); } @@ -149,10 +149,10 @@ index 507490a526..6adf0c343b 100644 /********************************************************************** * __wine_enter_vm86 (NTDLL.@) diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c -index 61bb2ddce6..1870c061c3 100644 +index 691ee1ffdbf..1148f0224aa 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c -@@ -3005,6 +3005,12 @@ void signal_init_process(void) +@@ -3158,6 +3158,12 @@ void signal_init_process( CONTEXT *context, LPTHREAD_START_ROUTINE entry ) exit(1); } @@ -166,10 +166,10 @@ index 61bb2ddce6..1870c061c3 100644 /********************************************************************** * RtlAddFunctionTable (NTDLL.@) diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c -index 6b5e9f5c9c..3a3d6c0efd 100644 +index 85ceb2bbeac..cc0159dd87b 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c -@@ -270,6 +270,7 @@ HANDLE thread_init(void) +@@ -280,6 +280,7 @@ HANDLE thread_init(void) static struct debug_info debug_info; /* debug info for initial thread */ virtual_init(); @@ -178,5 +178,5 @@ index 6b5e9f5c9c..3a3d6c0efd 100644 /* reserve space for shared user data */ -- -2.12.2 +2.14.1 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index b9dfbad6..1883a359 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "302153117e20b62c9170aed62aa33e83cacfaf59" + echo "fdac39f697e049ead215b164bfe6953269ffa7be" } # Show version information @@ -2686,7 +2686,11 @@ if test "$enable_ntdll_CLI_Images" -eq 1; then if test "$enable_mscoree_CorValidateImage" -gt 1; then abort "Patchset mscoree-CorValidateImage disabled, but ntdll-CLI_Images depends on that." fi + if test "$enable_ntdll_APC_Start_Process" -gt 1; then + abort "Patchset ntdll-APC_Start_Process disabled, but ntdll-CLI_Images depends on that." + fi enable_mscoree_CorValidateImage=1 + enable_ntdll_APC_Start_Process=1 fi if test "$enable_ntdll_Builtin_Prot" -eq 1; then @@ -6154,7 +6158,7 @@ fi # Patchset ntdll-CLI_Images # | # | This patchset has the following (direct or indirect) dependencies: -# | * mscoree-CorValidateImage +# | * mscoree-CorValidateImage, ntdll-APC_Start_Process # | # | This patchset fixes the following Wine bugs: # | * [#38661] Implement proper handling of CLI .NET images in Wine library loader @@ -6365,7 +6369,7 @@ fi # Patchset ntdll-HashLinks # | # | This patchset has the following (direct or indirect) dependencies: -# | * mscoree-CorValidateImage, ntdll-CLI_Images, ntdll-LDR_MODULE +# | * mscoree-CorValidateImage, ntdll-APC_Start_Process, ntdll-CLI_Images, ntdll-LDR_MODULE # | # | Modified files: # | * dlls/kernel32/tests/loader.c, dlls/ntdll/loader.c, include/winternl.h @@ -6500,8 +6504,8 @@ fi # Patchset ntdll-LdrRegisterDllNotification # | # | This patchset has the following (direct or indirect) dependencies: -# | * mscoree-CorValidateImage, ntdll-CLI_Images, ntdll-LDR_MODULE, ntdll-HashLinks, ntdll-Attach_Process_DLLs, ntdll- -# | ThreadTime, ntdll-Hide_Wine_Exports, ntdll-RtlQueryPackageIdentity +# | * mscoree-CorValidateImage, ntdll-APC_Start_Process, ntdll-CLI_Images, ntdll-LDR_MODULE, ntdll-HashLinks, ntdll- +# | Attach_Process_DLLs, ntdll-ThreadTime, ntdll-Hide_Wine_Exports, ntdll-RtlQueryPackageIdentity # | # | Modified files: # | * dlls/ntdll/loader.c, dlls/ntdll/ntdll.spec, dlls/ntdll/tests/rtl.c, include/winternl.h diff --git a/patches/winebuild-Fake_Dlls/0010-tools-winebuild-Add-syscall-thunks-for-64-bit.patch b/patches/winebuild-Fake_Dlls/0010-tools-winebuild-Add-syscall-thunks-for-64-bit.patch index 5ea7eae9..6e31188e 100644 --- a/patches/winebuild-Fake_Dlls/0010-tools-winebuild-Add-syscall-thunks-for-64-bit.patch +++ b/patches/winebuild-Fake_Dlls/0010-tools-winebuild-Add-syscall-thunks-for-64-bit.patch @@ -1,4 +1,4 @@ -From bf996fd4928c50ce68bd266cff147cc3d52a178c Mon Sep 17 00:00:00 2001 +From e6812e345ddbfdf41222de31025661cc7c66c747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 7 Sep 2017 00:38:09 +0200 Subject: tools/winebuild: Add syscall thunks for 64 bit. @@ -13,10 +13,10 @@ Subject: tools/winebuild: Add syscall thunks for 64 bit. 6 files changed, 224 insertions(+), 10 deletions(-) diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c -index 5ac99e0c1ec..20e9868ac31 100644 +index 57b2b08aeca..1a47abe5a4f 100644 --- a/dlls/kernel32/tests/loader.c +++ b/dlls/kernel32/tests/loader.c -@@ -898,7 +898,7 @@ static void test_Loader(void) +@@ -858,7 +858,7 @@ static void test_Loader(void) static void test_FakeDLL(void) { @@ -25,7 +25,7 @@ index 5ac99e0c1ec..20e9868ac31 100644 NTSTATUS (WINAPI *pNtSetEvent)(HANDLE, ULONG *) = NULL; IMAGE_EXPORT_DIRECTORY *dir; HMODULE module = GetModuleHandleA("ntdll.dll"); -@@ -940,8 +940,13 @@ static void test_FakeDLL(void) +@@ -900,8 +900,13 @@ static void test_FakeDLL(void) dll_func = (BYTE *)GetProcAddress(module, func_name); ok(dll_func != NULL, "%s: GetProcAddress returned NULL\n", func_name); @@ -40,7 +40,7 @@ index 5ac99e0c1ec..20e9868ac31 100644 todo_wine ok(0, "%s: Export is a stub-function, skipping\n", func_name); continue; diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c -index 07dbfc71210..1c5ab158a3a 100644 +index a74825c3c36..83bcd4d46f7 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c @@ -326,6 +326,8 @@ static inline struct amd64_thread_data *amd64_thread_data(void) @@ -52,7 +52,7 @@ index 07dbfc71210..1c5ab158a3a 100644 /*********************************************************************** * Dynamic unwind table */ -@@ -2971,6 +2973,7 @@ NTSTATUS signal_alloc_thread( TEB **teb ) +@@ -2973,6 +2975,7 @@ NTSTATUS signal_alloc_thread( TEB **teb ) { (*teb)->Tib.Self = &(*teb)->Tib; (*teb)->Tib.ExceptionList = (void *)~0UL; @@ -61,7 +61,7 @@ index 07dbfc71210..1c5ab158a3a 100644 return status; } diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c -index fb31a351d19..d4bbae1896e 100644 +index 86e5047facb..8b9df0cc7c0 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -55,6 +55,8 @@ static struct _KUSER_SHARED_DATA user_shared_data_internal; @@ -71,8 +71,8 @@ index fb31a351d19..d4bbae1896e 100644 +extern void DECLSPEC_NORETURN __wine_syscall_dispatcher( void ); + PUNHANDLED_EXCEPTION_FILTER unhandled_exception_filter = NULL; + LPTHREAD_START_ROUTINE kernel32_start_process = NULL; - /* info passed to a starting thread */ @@ -84,7 +86,6 @@ static RTL_CRITICAL_SECTION_DEBUG critsect_debug = }; static RTL_CRITICAL_SECTION peb_lock = { &critsect_debug, -1, 0, 0, 0, 0 }; @@ -81,7 +81,7 @@ index fb31a351d19..d4bbae1896e 100644 BOOL read_process_time(int unix_pid, int unix_tid, unsigned long clk_tck, LARGE_INTEGER *kernel, LARGE_INTEGER *user) { -@@ -491,6 +492,10 @@ HANDLE thread_init(void) +@@ -490,6 +491,10 @@ HANDLE thread_init(void) InitializeListHead( &ldr.InInitializationOrderModuleList ); *(ULONG_PTR *)peb->Reserved = get_image_addr(); @@ -93,10 +93,10 @@ index fb31a351d19..d4bbae1896e 100644 * Starting with Vista, the first user to log on has session id 1. * Session id 0 is for processes that don't interact with the user (like services). diff --git a/libs/wine/loader.c b/libs/wine/loader.c -index 5f37dc978ba..ab1f9c548f1 100644 +index 0a64ea4a73b..e2ae56df427 100644 --- a/libs/wine/loader.c +++ b/libs/wine/loader.c -@@ -450,7 +450,11 @@ static void *map_dll( const IMAGE_NT_HEADERS *nt_descr ) +@@ -455,7 +455,11 @@ static void *map_dll( const IMAGE_NT_HEADERS *nt_descr ) sec->SizeOfRawData = data_start - code_start; sec->Misc.VirtualSize = sec->SizeOfRawData; sec->VirtualAddress = code_start;