Author: jgardou
Date: Mon Aug 27 21:34:42 2012
New Revision: 57183
URL: http://svn.reactos.org/svn/reactos?rev=57183&view=rev
Log:
[MSVCRTEX]
- Better fix for DLLs not providing a DllMain function, as per Timo's remarks.
Added:
trunk/reactos/lib/sdk/crt/startup/dllmain.c
- copied unchanged from r57179, trunk/reactos/lib/sdk/crt/startup/mscdllmain.c
Removed:
trunk/reactos/lib/sdk/crt/startup/mscdllmain.c
Modified:
trunk/reactos/lib/sdk/crt/msvcrtex.cmake
trunk/reactos/lib/sdk/crt/startup/crtdll.c
Modified: trunk/reactos/lib/sdk/crt/msvcrtex.cmake
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/msvcrtex.cmake…
==============================================================================
--- trunk/reactos/lib/sdk/crt/msvcrtex.cmake [iso-8859-1] (original)
+++ trunk/reactos/lib/sdk/crt/msvcrtex.cmake [iso-8859-1] Mon Aug 27 21:34:42 2012
@@ -21,6 +21,7 @@
startup/charmax.c
startup/merr.c
startup/atonexit.c
+ startup/dllmain.c
startup/txtmode.c
startup/pesect.c
startup/tlsmcrt.c
@@ -66,9 +67,7 @@
endif()
if(MSVC)
- list(APPEND MSVCRTEX_SOURCE
- startup/mscmain.c
- startup/mscdllmain.c)
+ list(APPEND MSVCRTEX_SOURCE startup/mscmain.c)
else()
list(APPEND MSVCRTEX_SOURCE startup/gccmain.c)
endif()
Modified: trunk/reactos/lib/sdk/crt/startup/crtdll.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/startup/crtdll…
==============================================================================
--- trunk/reactos/lib/sdk/crt/startup/crtdll.c [iso-8859-1] (original)
+++ trunk/reactos/lib/sdk/crt/startup/crtdll.c [iso-8859-1] Mon Aug 27 21:34:42 2012
@@ -50,19 +50,7 @@
extern int mingw_app_type;
-/*
- * It is possible that a DLL provides no DllMain entry point.
- * Mark it as a weak symbol for GCC.
- * Tests show that at link time, MSVC looks for a function first in the object files provided, and then
- * in the libraries. This means that we must provide a basic implementation in msvcrtex, which will be used
- * if none is found in the object files provided to link.exe.
- * This also means that we can't rely on a DllMain function implemented in a static library when linking a DLL.
- */
-#ifdef __GNUC__
-extern WINBOOL WINAPI DllMain (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) __attribute__((weak));
-#else
extern WINBOOL WINAPI DllMain (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved);
-#endif
extern WINBOOL WINAPI DllEntryPoint (HANDLE, DWORD, LPVOID);
@@ -210,12 +198,10 @@
}
if (dwReason == DLL_PROCESS_ATTACH)
__main ();
- if(DllMain)
- retcode = DllMain(hDllHandle,dwReason,lpreserved);
+ retcode = DllMain(hDllHandle,dwReason,lpreserved);
if (dwReason == DLL_PROCESS_ATTACH && ! retcode)
{
- if(DllMain)
- DllMain (hDllHandle, DLL_PROCESS_DETACH, lpreserved);
+ DllMain (hDllHandle, DLL_PROCESS_DETACH, lpreserved);
DllEntryPoint (hDllHandle, DLL_PROCESS_DETACH, lpreserved);
_CRT_INIT (hDllHandle, DLL_PROCESS_DETACH, lpreserved);
}
Removed: trunk/reactos/lib/sdk/crt/startup/mscdllmain.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/startup/mscdll…
==============================================================================
--- trunk/reactos/lib/sdk/crt/startup/mscdllmain.c [iso-8859-1] (original)
+++ trunk/reactos/lib/sdk/crt/startup/mscdllmain.c (removed)
@@ -1,11 +1,0 @@
-#include <oscalls.h>
-#define _DECL_DLLMAIN
-#include <process.h>
-
-WINBOOL WINAPI DllMain (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
-{
- /* If the DLL provides no DllMain, then chances are that it doesn't bother with thread initialization */
- if(dwReason == DLL_PROCESS_ATTACH)
- DisableThreadLibraryCalls(hDllHandle);
- return TRUE;
-}