Alexandre Julliard : msvcrt: Build the CRT startup code also for non-PE builds.

Alexandre Julliard julliard at winehq.org
Wed Apr 15 15:55:42 CDT 2020


Module: wine
Branch: master
Commit: a2e1e499ade0c99ece2a7e4b9b28e4ca6c24ae22
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=a2e1e499ade0c99ece2a7e4b9b28e4ca6c24ae22

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Apr 15 16:27:55 2020 +0200

msvcrt: Build the CRT startup code also for non-PE builds.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msvcrt/crt_main.c     | 9 +++------
 dlls/msvcrt/crt_winmain.c  | 4 ----
 dlls/msvcrt/crt_wmain.c    | 9 +++------
 dlls/msvcrt/crt_wwinmain.c | 4 ----
 4 files changed, 6 insertions(+), 20 deletions(-)

diff --git a/dlls/msvcrt/crt_main.c b/dlls/msvcrt/crt_main.c
index fa325d64b3..8e4a00bac7 100644
--- a/dlls/msvcrt/crt_main.c
+++ b/dlls/msvcrt/crt_main.c
@@ -22,8 +22,6 @@
 #pragma makedep implib
 #endif
 
-#ifdef __MINGW32__
-
 #if _MSVCR_VER >= 140
 #define _UCRT
 #endif
@@ -34,13 +32,14 @@
 
 #include "windef.h"
 #include "winbase.h"
+#include "winternl.h"
 
 int __cdecl main(int argc, char **argv, char **env);
 
 static const IMAGE_NT_HEADERS *get_nt_header( void )
 {
-    extern IMAGE_DOS_HEADER __ImageBase;
-    return (const IMAGE_NT_HEADERS *)((char *)&__ImageBase + __ImageBase.e_lfanew);
+    IMAGE_DOS_HEADER *dos = (IMAGE_DOS_HEADER *)NtCurrentTeb()->Peb->ImageBaseAddress;
+    return (const IMAGE_NT_HEADERS *)((char *)dos + dos->e_lfanew);
 }
 
 int __cdecl mainCRTStartup(void)
@@ -65,5 +64,3 @@ int __cdecl mainCRTStartup(void)
     exit(ret);
     return ret;
 }
-
-#endif
diff --git a/dlls/msvcrt/crt_winmain.c b/dlls/msvcrt/crt_winmain.c
index 27e0283cbf..fda3d12f68 100644
--- a/dlls/msvcrt/crt_winmain.c
+++ b/dlls/msvcrt/crt_winmain.c
@@ -22,8 +22,6 @@
 #pragma makedep implib
 #endif
 
-#ifdef __MINGW32__
-
 #include <stdarg.h>
 #include "windef.h"
 #include "winbase.h"
@@ -54,5 +52,3 @@ int __cdecl main( int argc, char *argv[] )
     if (!(info.dwFlags & STARTF_USESHOWWINDOW)) info.wShowWindow = SW_SHOWNORMAL;
     return WinMain( GetModuleHandleA(0), 0, cmdline, info.wShowWindow );
 }
-
-#endif
diff --git a/dlls/msvcrt/crt_wmain.c b/dlls/msvcrt/crt_wmain.c
index 6bc20e2e0f..6a51a1741b 100644
--- a/dlls/msvcrt/crt_wmain.c
+++ b/dlls/msvcrt/crt_wmain.c
@@ -22,8 +22,6 @@
 #pragma makedep implib
 #endif
 
-#ifdef __MINGW32__
-
 #if _MSVCR_VER >= 140
 #define _UCRT
 #endif
@@ -34,13 +32,14 @@
 
 #include "windef.h"
 #include "winbase.h"
+#include "winternl.h"
 
 int __cdecl wmain(int argc, WCHAR **argv, WCHAR **env);
 
 static const IMAGE_NT_HEADERS *get_nt_header( void )
 {
-    extern IMAGE_DOS_HEADER __ImageBase;
-    return (const IMAGE_NT_HEADERS *)((char *)&__ImageBase + __ImageBase.e_lfanew);
+    IMAGE_DOS_HEADER *dos = (IMAGE_DOS_HEADER *)NtCurrentTeb()->Peb->ImageBaseAddress;
+    return (const IMAGE_NT_HEADERS *)((char *)dos + dos->e_lfanew);
 }
 
 int __cdecl wmainCRTStartup(void)
@@ -65,5 +64,3 @@ int __cdecl wmainCRTStartup(void)
     exit(ret);
     return ret;
 }
-
-#endif
diff --git a/dlls/msvcrt/crt_wwinmain.c b/dlls/msvcrt/crt_wwinmain.c
index 2c53b744b5..b50f728025 100644
--- a/dlls/msvcrt/crt_wwinmain.c
+++ b/dlls/msvcrt/crt_wwinmain.c
@@ -22,8 +22,6 @@
 #pragma makedep implib
 #endif
 
-#ifdef __MINGW32__
-
 #include <stdarg.h>
 #include "windef.h"
 #include "winbase.h"
@@ -56,5 +54,3 @@ int __cdecl wmain( int argc, WCHAR *argv[] )
     if (!(info.dwFlags & STARTF_USESHOWWINDOW)) info.wShowWindow = SW_SHOWNORMAL;
     return wWinMain( GetModuleHandleW(0), 0, cmdline, info.wShowWindow );
 }
-
-#endif




More information about the wine-cvs mailing list