crt: exe: Move mingw-w64 / gcc EXE runtime code into the guarded block This will ensure that _pei386_runtime_relocator() is called as the first function and that all those runtime init code functions are called in guarded block which prevents duplicate code execution. Signed-off-by: Martin Storsjö <martin@martin.st>
diff --git a/mingw-w64-crt/crt/crtexe.c b/mingw-w64-crt/crt/crtexe.c index 620f08b..0f79c0a 100644 --- a/mingw-w64-crt/crt/crtexe.c +++ b/mingw-w64-crt/crt/crtexe.c
@@ -172,6 +172,14 @@ { __native_startup_state = __initializing; + _pei386_runtime_relocator (); +#if defined(__x86_64__) && !defined(__SEH__) + __mingw_init_ehandler (); +#endif + __mingw_oldexcpt_handler = SetUnhandledExceptionFilter (_gnu_exception_handler); + _set_invalid_parameter_handler (__mingw_invalidParameterHandler); + _fpreset (); + managedapp = check_managed_app (); if (__mingw_app_type) __set_app_type (_GUI_APP); @@ -218,15 +226,6 @@ if (__dyn_tls_init_callback != NULL) __dyn_tls_init_callback (NULL, DLL_THREAD_ATTACH, NULL); - - _pei386_runtime_relocator (); - __mingw_oldexcpt_handler = SetUnhandledExceptionFilter (_gnu_exception_handler); -#if defined(__x86_64__) && !defined(__SEH__) - __mingw_init_ehandler (); -#endif - _set_invalid_parameter_handler (__mingw_invalidParameterHandler); - - _fpreset (); duplicate_ppstrings (argc, &argv); __main (); /* C++ initialization. */