Usage of separate static function __DllMainCRTStartup() is needed for MSVC
stack cookie handling as written in documentation for C Runtime Error R6035:
https://learn.microsoft.com/en-us/cpp/error-messages/tool-errors/c-runtime-error-r6035

mingw-w64 does not support MSVC stack cookie handling, it was removed in
commit e6ac7e4230c9 ("crt: Remove the vestigial gs_support.c").

So merge static __DllMainCRTStartup() function directly into entry point
function DllMainCRTStartup().
---
 mingw-w64-crt/crt/crtdll.c | 17 ++++-------------
 1 file changed, 4 insertions(+), 13 deletions(-)

diff --git a/mingw-w64-crt/crt/crtdll.c b/mingw-w64-crt/crt/crtdll.c
index 3d12d3f82c5f..797a8ab54e1d 100644
--- a/mingw-w64-crt/crt/crtdll.c
+++ b/mingw-w64-crt/crt/crtdll.c
@@ -160,29 +160,20 @@ i__leave:
   return TRUE;
 }
 
-static WINBOOL __DllMainCRTStartup (HANDLE, DWORD, LPVOID);
-
 WINBOOL WINAPI DllMainCRTStartup (HANDLE, DWORD, LPVOID);
 
-__attribute__((used)) /* required due to GNU LD bug: 
https://sourceware.org/bugzilla/show_bug.cgi?id=30300 */
-WINBOOL WINAPI
-DllMainCRTStartup (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
-{
-  __mingw_app_type = 0;
-  return __DllMainCRTStartup (hDllHandle, dwReason, lpreserved);
-}
-
-static
 #if defined(__i386__) || defined(_X86_)
 /* We need to make sure that we align the stack to 16 bytes for the sake of SSE
    opts in DllMain/DllEntryPoint or in functions called from 
DllMain/DllEntryPoint.  */
 __attribute__((force_align_arg_pointer))
 #endif
-__declspec(noinline) WINBOOL
-__DllMainCRTStartup (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
+__attribute__((used)) /* required due to GNU LD bug: 
https://sourceware.org/bugzilla/show_bug.cgi?id=30300 */
+WINBOOL WINAPI
+DllMainCRTStartup (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
 {
   WINBOOL retcode = TRUE;
 
+  __mingw_app_type = 0;
   __native_dllmain_reason = dwReason;
   if (dwReason == DLL_PROCESS_DETACH && __proc_attached <= 0)
     {
-- 
2.20.1



_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to