Added patch to set ldr.EntryPoint for main executable (fixes wine bug 33034).

This commit is contained in:
Sebastian Lackner 2014-08-06 00:19:57 +02:00
parent 399f43a3f2
commit e08596a770
6 changed files with 66 additions and 3 deletions

View File

@ -19,7 +19,7 @@ Wine-Compholio contains fixes for the following Wine bugs:
* Add Dynamic DST exceptions for Israel Standard Time ([Wine Bug #36374](http://bugs.winehq.org/show_bug.cgi?id=36374 "Israel timezone handled incorrectly"))
* Add implementation of WTSEnumerateProcessesW ([Wine Bug #29903](http://bugs.winehq.org/show_bug.cgi?id=29903 "Some Microsoft debuggers fail to enumerate processes due to wtsapi32.WTSEnumerateProcessesW() being a stub (Microsoft Visual Studio 2005, DbgCLR from .NET 2.0 SDK)"))
* Add support for extra large and jumbo icon lists in shell32 ([Wine Bug #24721](http://bugs.winehq.org/show_bug.cgi?id=24721 "Explorer++ crashes when choosing to view large icons or extra large icons"))
* Allow special characters in pipe names. ([Wine Bug #28995](http://bugs.winehq.org/show_bug.cgi?id=28995 "Unable to use named pipes with \">\" character in the name"))
* Allow special characters in pipe names ([Wine Bug #28995](http://bugs.winehq.org/show_bug.cgi?id=28995 "Unable to use named pipes with \">\" character in the name"))
* Fix for ConnectNamedPort return value in overlapped mode ([Wine Bug #16550](http://bugs.winehq.org/show_bug.cgi?id=16550 "ConnectNamedPort should never return OK in overlapped mode (affects chromium ui_tests.exe)"))
* Fix race conditions and deadlocks in strmbase/quartz ([Wine Bug #31566](http://bugs.winehq.org/show_bug.cgi?id=31566 "Fallout 3: regression causes block at critical section when radio is enabled"))
* GetSecurityInfo returns NULL DACL for process object ([Wine Bug #15980](http://bugs.winehq.org/show_bug.cgi?id=15980 "Rhapsody 2 crashes on startup (GetSecurityInfo returns NULL DACL for process object)"))
@ -30,6 +30,7 @@ Wine-Compholio contains fixes for the following Wine bugs:
* Old games cannot locate software-only renderer ([Wine Bug #32581](http://bugs.winehq.org/show_bug.cgi?id=32581 "Invalid dwFlags of reference rasterizer's HAL D3DDEVICEDESC"))
* Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](http://bugs.winehq.org/show_bug.cgi?id=23174 "Fallout 3: Diologue and Video/sound issues"))
* SHCreateSessionKey not implemented ([Wine Bug #35630](http://bugs.winehq.org/show_bug.cgi?id=35630 "SHCreateSessionKey is unimplemented"))
* Set ldr.EntryPoint for main executable ([Wine Bug #33034](http://bugs.winehq.org/show_bug.cgi?id=33034 "Many GFWL (Games For Windows Live) 1.x/2.x/3.x games crash or exit silently on startup (DiRT 2/3, GTA IV Steam)"))
* Support for AllocateAndGetTcpExTableFromStack ([Wine Bug #34372](http://bugs.winehq.org/show_bug.cgi?id=34372 "Add missing function AllocateAndGetTcpExTableFromStack() to iphlpapi.dll"))
* Support for GetSystemTimes ([Wine Bug #19813](http://bugs.winehq.org/show_bug.cgi?id=19813 "Voddler needs GetSystemTimes to run"))
* Support for Junction Points ([Wine Bug #12401](http://bugs.winehq.org/show_bug.cgi?id=12401 "Support junction points, i.e. DeviceIoCtl(FSCTL_SET_REPARSE_POINT/FSCTL_GET_REPARSE_POINT)"))

3
debian/changelog vendored
View File

@ -14,7 +14,8 @@ wine-compholio (1.7.24) UNRELEASED; urgency=low
* Added patch to return the appropriate connection time with SO_CONNECT_TIME.
* Added patch to support extra large and jumbo icons.
* Added patch to allow setting tablet / media center status via registry.
* Added patch to use manual redirection for RunDLL_CallEntry16
* Added patch to use manual redirection for RunDLL_CallEntry16.
* Added patch to set ldr.EntryPoint for main executable.
* Removed patch to create directories (accepted upstream).
-- Erich E. Hoover <erich.e.hoover@gmail.com> Wed, 30 Jul 2014 17:40:14 -0600

View File

@ -20,6 +20,7 @@ PATCHLIST := Miscellaneous.ok \
ntdll-FD_Cache.ok \
ntdll-Junction_Points.ok \
ntdll-Pipe_SpecialCharacters.ok \
ntdll-loader_EntryPoint.ok \
quartz-MediaSeeking_Positions.ok \
server-ACL_Compat.ok \
server-Address_Change_Notification.ok \
@ -349,6 +350,24 @@ ntdll-Pipe_SpecialCharacters.ok:
echo '+ { "ntdll-Pipe_SpecialCharacters", "Michael Müller", "Allow special characters in pipe names." },'; \
) > ntdll-Pipe_SpecialCharacters.ok
# Patchset ntdll-loader_EntryPoint
# |
# | Included patches:
# | * Set ldr.EntryPoint for main executable. [by Sebastian Lackner]
# |
# | This patchset fixes the following Wine bugs:
# | * [#33034] Many GFWL (Games For Windows Live) 1.x/2.x/3.x games crash or exit silently on startup (DiRT 2/3, GTA IV Steam)
# |
# | Modified files:
# | * dlls/ntdll/loader.c
# |
.INTERMEDIATE: ntdll-loader_EntryPoint.ok
ntdll-loader_EntryPoint.ok:
$(PATCH) < ntdll-loader_EntryPoint/0001-ntdll-Set-ldr.EntryPoint-for-main-executable.patch
@( \
echo '+ { "ntdll-loader_EntryPoint", "Sebastian Lackner", "Set ldr.EntryPoint for main executable." },'; \
) > ntdll-loader_EntryPoint.ok
# Patchset quartz-MediaSeeking_Positions
# |
# | Included patches:

View File

@ -1,4 +1,4 @@
Author: Michael Müller
Subject: Allow special characters in pipe names.
Revision: 1
Fixes: [28995] Allow special characters in pipe names.
Fixes: [28995] Allow special characters in pipe names

View File

@ -0,0 +1,38 @@
From 63a62bb5903e62f161b7e5972662220c606d702f Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 2 Aug 2014 18:27:20 +0200
Subject: ntdll: Set ldr.EntryPoint for main executable.
---
dlls/ntdll/loader.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 79aa341..c869d8f 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -921,9 +921,10 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename )
else p = wm->ldr.FullDllName.Buffer;
RtlInitUnicodeString( &wm->ldr.BaseDllName, p );
- if ((nt->FileHeader.Characteristics & IMAGE_FILE_DLL) && !is_dll_native_subsystem( hModule, nt, p ))
+ if (!(nt->FileHeader.Characteristics & IMAGE_FILE_DLL) || !is_dll_native_subsystem( hModule, nt, p ))
{
- wm->ldr.Flags |= LDR_IMAGE_IS_DLL;
+ if (nt->FileHeader.Characteristics & IMAGE_FILE_DLL)
+ wm->ldr.Flags |= LDR_IMAGE_IS_DLL;
if (nt->OptionalHeader.AddressOfEntryPoint)
wm->ldr.EntryPoint = (char *)hModule + nt->OptionalHeader.AddressOfEntryPoint;
}
@@ -1049,7 +1050,7 @@ static NTSTATUS MODULE_InitDLL( WINE_MODREF *wm, UINT reason, LPVOID lpReserved
if (wm->ldr.Flags & LDR_DONT_RESOLVE_REFS) return STATUS_SUCCESS;
if (wm->ldr.TlsIndex != -1) call_tls_callbacks( wm->ldr.BaseAddress, reason );
- if (!entry) return STATUS_SUCCESS;
+ if (!entry || !(wm->ldr.Flags & LDR_IMAGE_IS_DLL)) return STATUS_SUCCESS;
if (TRACE_ON(relay))
{
--
1.7.9.5

View File

@ -0,0 +1,4 @@
Author: Sebastian Lackner
Subject: Set ldr.EntryPoint for main executable.
Revision: 1
Fixes: [33034] Set ldr.EntryPoint for main executable