[ros-diffs] [akhaldi] 52158: [CMAKE] * MSVC fixes for msvcrtex.

akhaldi at svn.reactos.org akhaldi at svn.reactos.org
Thu Jun 9 17:59:28 UTC 2011


Author: akhaldi
Date: Thu Jun  9 17:59:26 2011
New Revision: 52158

URL: http://svn.reactos.org/svn/reactos?rev=52158&view=rev
Log:
[CMAKE]
* MSVC fixes for msvcrtex.

Modified:
    trunk/reactos/lib/sdk/crt/msvcrtex.cmake
    trunk/reactos/lib/sdk/crt/startup/crtdll.c
    trunk/reactos/lib/sdk/crt/startup/crtexe.c

Modified: trunk/reactos/lib/sdk/crt/msvcrtex.cmake
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/msvcrtex.cmake?rev=52158&r1=52157&r2=52158&view=diff
==============================================================================
--- trunk/reactos/lib/sdk/crt/msvcrtex.cmake [iso-8859-1] (original)
+++ trunk/reactos/lib/sdk/crt/msvcrtex.cmake [iso-8859-1] Thu Jun  9 17:59:26 2011
@@ -20,8 +20,6 @@
     startup/atonexit.c
     startup/txtmode.c
     startup/pesect.c
-    startup/pseudo-reloc.c
-    startup/pseudo-reloc-list.c
     startup/tlsmcrt.c
     startup/tlsthrd.c
     startup/tlsmthread.c
@@ -36,6 +34,12 @@
     misc/fltused.c
     misc/ofmt_stub.c
 )
+
+if(NOT MSVC)
+list(APPEND MSVCRTEX_SOURCE
+    startup/pseudo-reloc.c
+    startup/pseudo-reloc-list.c)
+endif()
 
 if(ARCH MATCHES i386)
 list(APPEND MSVCRTEX_SOURCE

Modified: trunk/reactos/lib/sdk/crt/startup/crtdll.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/startup/crtdll.c?rev=52158&r1=52157&r2=52158&view=diff
==============================================================================
--- trunk/reactos/lib/sdk/crt/startup/crtdll.c [iso-8859-1] (original)
+++ trunk/reactos/lib/sdk/crt/startup/crtdll.c [iso-8859-1] Thu Jun  9 17:59:26 2011
@@ -33,8 +33,12 @@
 #include <locale.h>
 
 extern void __cdecl _initterm(_PVFV *,_PVFV *);
-extern void __main ();
+
+#if defined(__GNUC__)
+extern void __main (void);
 extern void _pei386_runtime_relocator (void);
+#endif
+
 extern _CRTALLOC(".CRT$XIA") _PIFV __xi_a[];
 extern _CRTALLOC(".CRT$XIZ") _PIFV __xi_z[];
 extern _CRTALLOC(".CRT$XCA") _PVFV __xc_a[];
@@ -179,7 +183,9 @@
 	retcode = FALSE;
 	goto i__leave;
     }
+#if defined(__GNUC__)
   _pei386_runtime_relocator ();
+#endif
   if (dwReason == DLL_PROCESS_ATTACH || dwReason == DLL_THREAD_ATTACH)
     {
         retcode = _CRT_INIT (hDllHandle, dwReason, lpreserved);
@@ -194,7 +200,9 @@
 	  }
     }
   if (dwReason == DLL_PROCESS_ATTACH)
+#if defined(__GNUC__)
     __main ();
+#endif
   retcode = DllMain(hDllHandle,dwReason,lpreserved);
   if (dwReason == DLL_PROCESS_ATTACH && ! retcode)
     {

Modified: trunk/reactos/lib/sdk/crt/startup/crtexe.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/startup/crtexe.c?rev=52158&r1=52157&r2=52158&view=diff
==============================================================================
--- trunk/reactos/lib/sdk/crt/startup/crtexe.c [iso-8859-1] (original)
+++ trunk/reactos/lib/sdk/crt/startup/crtexe.c [iso-8859-1] Thu Jun  9 17:59:26 2011
@@ -20,6 +20,7 @@
 #include <tchar.h>
 #include <sect_attribs.h>
 #include <locale.h>
+#include <malloc.h>
 
 #ifndef __winitenv
 extern wchar_t *** __MINGW_IMP_SYMBOL(__winitenv);
@@ -32,7 +33,7 @@
 #endif
 
 /* Hack, for bug in ld.  Will be removed soon.  */
-#ifndef _MSC_VER
+#if defined(__GNUC__)
 #define __ImageBase __MINGW_LSYMBOL(_image_base__)
 #endif
 
@@ -42,6 +43,8 @@
 extern void _fpreset (void);
 #define SPACECHAR _T(' ')
 #define DQUOTECHAR _T('\"')
+
+__declspec(dllimport) void __setusermatherr(int (__cdecl *)(struct _exception *));
 
 extern int * __MINGW_IMP_SYMBOL(_fmode);
 extern int * __MINGW_IMP_SYMBOL(_commode);
@@ -55,9 +58,11 @@
 #if defined(__GNUC__)
 int _MINGW_INSTALL_DEBUG_MATHERR __attribute__((weak)) = 0;
 #else
-int _MINGW_INSTALL_DEBUG_MATHERR = 0;
-#endif
+int __declspec(selectany) _MINGW_INSTALL_DEBUG_MATHERR = 0;
+#endif
+
 extern int __defaultmatherr;
+
 extern _CRTIMP void __cdecl _initterm(_PVFV *, _PVFV *);
 
 static int __cdecl check_managed_app (void);
@@ -80,7 +85,12 @@
 DWORD __mingw_winmain_nShowCmd;
 
 static int argc;
+
+#if defined(__GNUC__)
 extern void __main(void);
+extern void _pei386_runtime_relocator (void);
+#endif
+
 #ifdef WPRFLAG
 static wchar_t **argv;
 static wchar_t **envp;
@@ -96,7 +106,7 @@
 static _startupinfo startinfo;
 extern LPTOP_LEVEL_EXCEPTION_FILTER __mingw_oldexcpt_handler;
 
-extern void _pei386_runtime_relocator (void);
+
 long CALLBACK _gnu_exception_handler (EXCEPTION_POINTERS * exception_data);
 #ifdef WPRFLAG
 static void duplicate_ppstrings (int ac, wchar_t ***av);
@@ -107,10 +117,8 @@
 static int __cdecl pre_c_init (void);
 static void __cdecl pre_cpp_init (void);
 static void __cdecl __mingw_prepare_except_for_msvcr80_and_higher (void);
-_CRTALLOC(".CRT$XIAA") _PIFV mingw_pcinit = pre_c_init;
-_CRTALLOC(".CRT$XCAA") _PVFV mingw_pcppinit = pre_cpp_init;
-
-extern int _MINGW_INSTALL_DEBUG_MATHERR;
+_CRTALLOC(".CRT$XIAA") _PIFV __declspec(selectany) mingw_pcinit = pre_c_init;
+_CRTALLOC(".CRT$XCAA") _PVFV __declspec(selectany) mingw_pcppinit = pre_cpp_init;
 
 static int __cdecl
 pre_c_init (void)
@@ -216,7 +224,7 @@
   WINBOOL inDoubleQuote = FALSE;
   memset (&StartupInfo, 0, sizeof (STARTUPINFO));
 
-#ifndef _WIN64
+#if !defined(_WIN64) && defined(__GNUC__)
   /* We need to make sure that this function is build with frame-pointer
      and that we align the stack to 16 bytes for the sake of SSE ops in main
      or in functions inlined into main.  */
@@ -265,7 +273,9 @@
     if (__dyn_tls_init_callback != NULL)
       __dyn_tls_init_callback (NULL, DLL_THREAD_ATTACH, NULL);
     
+#if defined(__GNUC__)
     _pei386_runtime_relocator ();
+#endif
     __mingw_oldexcpt_handler = SetUnhandledExceptionFilter (_gnu_exception_handler);
 #ifdef _WIN64
     __mingw_init_ehandler ();
@@ -277,33 +287,35 @@
     if (mingw_app_type)
       {
 #ifdef WPRFLAG
-    lpszCommandLine = (_TCHAR *) _wcmdln;
-#else
-    lpszCommandLine = (char *) _acmdln;
-#endif
-    while (*lpszCommandLine > SPACECHAR || (*lpszCommandLine&&inDoubleQuote))
-      {
-	if (*lpszCommandLine == DQUOTECHAR)
-	  inDoubleQuote = !inDoubleQuote;
+	lpszCommandLine = (_TCHAR *) _wcmdln;
+#else
+	lpszCommandLine = (char *) _acmdln;
+#endif
+	while (*lpszCommandLine > SPACECHAR || (*lpszCommandLine && inDoubleQuote))
+	  {
+	    if (*lpszCommandLine == DQUOTECHAR)
+	      inDoubleQuote = !inDoubleQuote;
 #ifdef _MBCS
-	if (_ismbblead (*lpszCommandLine))
-	  {
-	    if (lpszCommandLine) /* FIXME: Why this check? Should I check for *lpszCommandLine != 0 too? */
-	      lpszCommandLine++;
+	    if (_ismbblead (*lpszCommandLine))
+	      {
+		if (lpszCommandLine) /* FIXME: Why this check? Should I check for *lpszCommandLine != 0 too? */
+		  lpszCommandLine++;
+	      }
+#endif
+	    ++lpszCommandLine;
 	  }
-#endif
-	++lpszCommandLine;
+	while (*lpszCommandLine && (*lpszCommandLine <= SPACECHAR))
+	  lpszCommandLine++;
+
+	__mingw_winmain_hInstance = (HINSTANCE) &__ImageBase;
+	__mingw_winmain_lpCmdLine = lpszCommandLine;
+	__mingw_winmain_nShowCmd = StartupInfo.dwFlags & STARTF_USESHOWWINDOW ?
+				    StartupInfo.wShowWindow : SW_SHOWDEFAULT;
       }
-    while (*lpszCommandLine && (*lpszCommandLine <= SPACECHAR))
-      lpszCommandLine++;
-
-    __mingw_winmain_hInstance = (HINSTANCE) &__ImageBase;
-    __mingw_winmain_lpCmdLine = lpszCommandLine;
-    __mingw_winmain_nShowCmd = StartupInfo.dwFlags & STARTF_USESHOWWINDOW ?
-				StartupInfo.wShowWindow : SW_SHOWDEFAULT;
-    }
     duplicate_ppstrings (argc, &argv);
+#if defined(__GNUC__)
     __main ();
+#endif
 #ifdef WPRFLAG
     __winitenv = envp;
     /* C++ initialization.
@@ -422,8 +434,8 @@
 				 uintptr_t __UNUSED_PARAM(pReserved))
 {
 #ifdef __MINGW_SHOW_INVALID_PARAMETER_EXCEPTION
-   wprintf(L"Invalid parameter detected in function %s. File: %s Line: %d\n", function, file, line);
-   wprintf(L"Expression: %s\n", expression);
+  wprintf(L"Invalid parameter detected in function %s. File: %s Line: %d\n", function, file, line);
+  wprintf(L"Expression: %s\n", expression);
 #endif
 }
 




More information about the Ros-diffs mailing list