Author: sserapion
Date: Thu Nov 13 23:49:21 2008
New Revision: 37351
URL:
http://svn.reactos.org/svn/reactos?rev=37351&view=rev
Log:
Declare war, shock and awe, and utterly defeat auto-import in one day.
Modified:
branches/ros-amd64-bringup/reactos/include/crt/_mingw.h
branches/ros-amd64-bringup/reactos/include/crt/stdio.h
Modified: branches/ros-amd64-bringup/reactos/include/crt/_mingw.h
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/inclu…
==============================================================================
--- branches/ros-amd64-bringup/reactos/include/crt/_mingw.h [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/include/crt/_mingw.h [iso-8859-1] Thu Nov 13
23:49:21 2008
@@ -22,28 +22,50 @@
#define __stdcall
#endif
-#ifndef __GNUC__
+#if defined(_MSC_VER)
+# ifdef _DLL
# ifndef __MINGW_IMPORT
# define __MINGW_IMPORT __declspec(dllimport)
# endif
# ifndef _CRTIMP
# define _CRTIMP __declspec(dllimport)
# endif
+# else
+# ifndef __MINGW_IMPORT
+# define __MINGW_IMPORT
+# endif
+# ifndef _CRTIMP
+# define _CRTIMP
+# endif
+#endif
# define __DECLSPEC_SUPPORTED
# define __attribute__(x) /* nothing */
-#else /* __GNUC__ */
+# define __restrict__/* nothing */
+#elif defined(__GNUC__)
# ifdef __declspec
# ifndef __MINGW_IMPORT
+# ifdef _DLL
/* Note the extern. This is needed to work around GCC's
limitations in handling dllimport attribute. */
# define __MINGW_IMPORT extern __attribute__ ((__dllimport__))
+# else
+# define __MINGW_IMPORT extern
+# endif
# endif
# ifndef _CRTIMP
-# ifdef __USE_CRTIMP
-# define _CRTIMP __attribute__ ((dllimport))
-# else
-# define _CRTIMP
-# endif
+# undef __USE_CRTIMP
+# if !defined (_CRTBLD) && !defined (_SYSCRT)
+# define __USE_CRTIMP 1
+# endif
+# ifdef __USE_CRTIMP
+# ifdef _DLL
+# define _CRTIMP __attribute__ ((dllimport))
+# else
+# define _CRTIMP
+# endif
+# else
+# define _CRTIMP
+# endif
# endif
# define __DECLSPEC_SUPPORTED
# else /* __declspec */
@@ -53,6 +75,15 @@
# define _CRTIMP
# endif
# endif /* __declspec */
+#else
+# ifndef __MINGW_IMPORT
+# define __MINGW_IMPORT __declspec(dllimport)
+# endif
+# ifndef _CRTIMP
+# define _CRTIMP __declspec(dllimport)
+# endif
+# define __DECLSPEC_SUPPORTED
+# define __attribute__(x)/* nothing */
#endif
#if defined (__GNUC__) && defined (__GNUC_MINOR__)
@@ -63,12 +94,22 @@
#define __MINGW_GNUC_PREREQ(major, minor) 0
#endif
+#if defined (_MSC_VER)
+#define __MINGW_MSC_PREREQ(major,minor) \
+ ((_MSC_VER /100) > (major) \
+ || ((_MSC)VER /100) == (major) && (_MSC_VER) % 100) >=(minor)))
+#else
+#define __MINGW_MSC_PREREQ(major, minor) 0
+#endif
+
#define USE___UUIDOF 0
#ifdef __cplusplus
# define __CRT_INLINE inline
#else
-# if ( __MINGW_GNUC_PREREQ(4, 3) && __STDC_VERSION__ >= 199901L)
+# if defined(_MSC_VER)
+# define __CRT_INLINE __inline
+# elif __GNUC_STDC_INLINE__
# define __CRT_INLINE extern inline __attribute__((__gnu_inline__))
# else
# define __CRT_INLINE extern __inline__
@@ -88,6 +129,9 @@
#ifdef __GNUC__
#define __MINGW_ATTRIB_NORETURN __attribute__ ((__noreturn__))
#define __MINGW_ATTRIB_CONST __attribute__ ((__const__))
+#elif __MINGW_MSC_PREREQ(12, 0)
+#define __MINGW_ATTRIB_NORETURN __declspec(noreturn)
+#define __MINGW_ATTRIB_CONST
#else
#define __MINGW_ATTRIB_NORETURN
#define __MINGW_ATTRIB_CONST
@@ -112,15 +156,22 @@
#if __MINGW_GNUC_PREREQ (3, 1)
#define __MINGW_ATTRIB_DEPRECATED __attribute__ ((__deprecated__))
+#elif __MINGW_MSC_PREREQ(12, 0)
+#define __MINGW_ATTRIB_DEPRECATED __declspec(deprecated)
#else
#define __MINGW_ATTRIB_DEPRECATED
-#endif /* GNUC >= 3.1 */
+#endif
#if __MINGW_GNUC_PREREQ (3, 3)
#define __MINGW_NOTHROW __attribute__ ((__nothrow__))
+#elif __MINGW_MSC_PREREQ(12, 0) && defined (__cplusplus)
+#define __MINGW_NOTHROW __declspec(nothrow)
#else
#define __MINGW_NOTHROW
-#endif /* GNUC >= 3.3 */
+#endif
+
+/* TODO: Mark (almost) all CRT functions as __MINGW_NOTHROW. This will
+allow GCC to optimize away some EH unwind code, at least in DW2 case. */
#ifndef __MSVCRT_VERSION__
/* High byte is the major version, low byte is the minor. */
Modified: branches/ros-amd64-bringup/reactos/include/crt/stdio.h
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/inclu…
==============================================================================
--- branches/ros-amd64-bringup/reactos/include/crt/stdio.h [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/include/crt/stdio.h [iso-8859-1] Thu Nov 13
23:49:21 2008
@@ -242,9 +242,10 @@
#if __MINGW_GNUC_PREREQ(4,4)
#pragma push_macro("vsnprintf")
#pragma push_macro("snprintf")
+#endif
#undef vsnprintf
#undef snprintf
-#endif
+
extern
#ifdef gnu_printf
__attribute__((format(gnu_printf, 3, 0))) __attribute__((nonnull (3)))
@@ -261,14 +262,7 @@
int __cdecl sprintf(char *_Dest,const char *_Format,...);
int __cdecl vsprintf(char *_Dest,const char *_Format,va_list _Args);
#ifndef __NO_ISOCEXT /* externs in libmingwex.a */
- __CRT_INLINE int __cdecl snprintf(char* s, size_t n, const char* format, ...) {
- int r;
- va_list a;
- __mingw_va_start(a, format);
- r = _vsnprintf (s, n, format, a);
- __mingw_va_end(a);
- return r;
- }
+ int __cdecl snprintf(char* s, size_t n, const char* format, ...);
__CRT_INLINE int __cdecl vsnprintf (char* s, size_t n, const char* format,va_list arg)
{
return _vsnprintf ( s, n, format, arg);
}