diff --git a/reactos/ReactOS-generic.rbuild b/reactos/ReactOS-generic.rbuild
index 46584a22fb0..65bcc4f44ea 100644
--- a/reactos/ReactOS-generic.rbuild
+++ b/reactos/ReactOS-generic.rbuild
@@ -127,4 +127,6 @@
-Wno-non-virtual-dtor
+
+ /wd4711
diff --git a/reactos/include/crt/mingw32/intrin_x86.h b/reactos/include/crt/mingw32/intrin_x86.h
index e27e0d25f96..8fbc03fa83c 100644
--- a/reactos/include/crt/mingw32/intrin_x86.h
+++ b/reactos/include/crt/mingw32/intrin_x86.h
@@ -479,12 +479,12 @@ __INTRIN_INLINE long _InterlockedIncrement(volatile long * const lpAddend)
return _InterlockedExchangeAdd(lpAddend, 1) + 1;
}
-__INTRIN_INLINE long _InterlockedDecrement16(volatile short * const lpAddend)
+__INTRIN_INLINE short _InterlockedDecrement16(volatile short * const lpAddend)
{
return _InterlockedExchangeAdd16(lpAddend, -1) - 1;
}
-__INTRIN_INLINE long _InterlockedIncrement16(volatile short * const lpAddend)
+__INTRIN_INLINE short _InterlockedIncrement16(volatile short * const lpAddend)
{
return _InterlockedExchangeAdd16(lpAddend, 1) + 1;
}
@@ -1132,7 +1132,6 @@ __INTRIN_INLINE void __writecr8(const unsigned __int64 Data)
{
__asm__("mov %[Data], %%cr8" : : [Data] "q" (Data) : "memory");
}
-#endif
__INTRIN_INLINE unsigned __int64 __readcr0(void)
{
@@ -1162,13 +1161,40 @@ __INTRIN_INLINE unsigned __int64 __readcr4(void)
return value;
}
-#ifdef _M_AMD64
__INTRIN_INLINE unsigned __int64 __readcr8(void)
{
unsigned __int64 value;
__asm__ __volatile__("movq %%cr8, %q[value]" : [value] "=q" (value));
return value;
}
+#else
+__INTRIN_INLINE unsigned long __readcr0(void)
+{
+ unsigned long value;
+ __asm__ __volatile__("mov %%cr0, %[value]" : [value] "=q" (value));
+ return value;
+}
+
+__INTRIN_INLINE unsigned long __readcr2(void)
+{
+ unsigned long value;
+ __asm__ __volatile__("mov %%cr2, %[value]" : [value] "=q" (value));
+ return value;
+}
+
+__INTRIN_INLINE unsigned long __readcr3(void)
+{
+ unsigned long value;
+ __asm__ __volatile__("mov %%cr3, %[value]" : [value] "=q" (value));
+ return value;
+}
+
+__INTRIN_INLINE unsigned long __readcr4(void)
+{
+ unsigned long value;
+ __asm__ __volatile__("mov %%cr4, %[value]" : [value] "=q" (value));
+ return value;
+}
#endif
#ifdef _M_AMD64
@@ -1235,6 +1261,70 @@ __INTRIN_INLINE void __writedr(unsigned reg, unsigned __int64 value)
break;
}
}
+#else
+__INTRIN_INLINE unsigned int __readdr(unsigned int reg)
+{
+ unsigned int value;
+ switch (reg)
+ {
+ case 0:
+ __asm__ __volatile__("movq %%dr0, %q[value]" : [value] "=q" (value));
+ break;
+ case 1:
+ __asm__ __volatile__("movq %%dr1, %q[value]" : [value] "=q" (value));
+ break;
+ case 2:
+ __asm__ __volatile__("movq %%dr2, %q[value]" : [value] "=q" (value));
+ break;
+ case 3:
+ __asm__ __volatile__("movq %%dr3, %q[value]" : [value] "=q" (value));
+ break;
+ case 4:
+ __asm__ __volatile__("movq %%dr4, %q[value]" : [value] "=q" (value));
+ break;
+ case 5:
+ __asm__ __volatile__("movq %%dr5, %q[value]" : [value] "=q" (value));
+ break;
+ case 6:
+ __asm__ __volatile__("movq %%dr6, %q[value]" : [value] "=q" (value));
+ break;
+ case 7:
+ __asm__ __volatile__("movq %%dr7, %q[value]" : [value] "=q" (value));
+ break;
+ }
+ return value;
+}
+
+__INTRIN_INLINE void __writedr(unsigned reg, unsigned int value)
+{
+ switch (reg)
+ {
+ case 0:
+ __asm__("movq %q[value], %%dr0" : : [value] "q" (value) : "memory");
+ break;
+ case 1:
+ __asm__("movq %q[value], %%dr1" : : [value] "q" (value) : "memory");
+ break;
+ case 2:
+ __asm__("movq %q[value], %%dr2" : : [value] "q" (value) : "memory");
+ break;
+ case 3:
+ __asm__("movq %q[value], %%dr3" : : [value] "q" (value) : "memory");
+ break;
+ case 4:
+ __asm__("movq %q[value], %%dr4" : : [value] "q" (value) : "memory");
+ break;
+ case 5:
+ __asm__("movq %q[value], %%dr5" : : [value] "q" (value) : "memory");
+ break;
+ case 6:
+ __asm__("movq %q[value], %%dr6" : : [value] "q" (value) : "memory");
+ break;
+ case 7:
+ __asm__("movq %q[value], %%dr7" : : [value] "q" (value) : "memory");
+ break;
+ }
+}
#endif
__INTRIN_INLINE void __invlpg(void * const Address)
diff --git a/reactos/include/crt/msc/intrin.h b/reactos/include/crt/msc/intrin.h
index 2725e652fb1..52f35e160c4 100644
--- a/reactos/include/crt/msc/intrin.h
+++ b/reactos/include/crt/msc/intrin.h
@@ -35,8 +35,8 @@ long _InterlockedXor(volatile long * const value, const long mask);
long _InterlockedAddLargeStatistic(volatile __int64 * const Addend, const long Value);
long _InterlockedDecrement(volatile long * const lpAddend);
long _InterlockedIncrement(volatile long * const lpAddend);
-long _InterlockedDecrement16(volatile short * const lpAddend);
-long _InterlockedIncrement16(volatile short * const lpAddend);
+short _InterlockedDecrement16(volatile short * const lpAddend);
+short _InterlockedIncrement16(volatile short * const lpAddend);
unsigned char _interlockedbittestandreset(volatile long * a, const long b);
unsigned char _interlockedbittestandset(volatile long * a, const long b);
@@ -92,7 +92,7 @@ void __incfsword(const unsigned long Offset);
void __incfsdword(const unsigned long Offset);
void __addfsbyte(const unsigned long Offset, const unsigned char Data);
void __addfsword(const unsigned long Offset, const unsigned short Data);
-void __addfsdword(const unsigned long Offset, const unsigned int Data)
+void __addfsdword(const unsigned long Offset, const unsigned int Data);
#endif
@@ -153,19 +153,21 @@ void __writecr4(const unsigned __int64 Data);
#ifdef _M_AMD64
void __writecr8(const unsigned __int64 Data);
-#endif
-
unsigned __int64 __readcr0(void);
unsigned __int64 __readcr2(void);
unsigned __int64 __readcr3(void);
unsigned __int64 __readcr4(void);
-
-#ifdef _M_AMD64
unsigned __int64 __readcr8(void);
-#endif
-
unsigned __int64 __readdr(unsigned int reg);
void __writedr(unsigned reg, unsigned __int64 value);
+#else
+unsigned long __readcr0(void);
+unsigned long __readcr2(void);
+unsigned long __readcr3(void);
+unsigned long __readcr4(void);
+unsigned int __readdr(unsigned int reg);
+void __writedr(unsigned reg, unsigned int value);
+#endif
void __invlpg(void * const Address);
diff --git a/reactos/include/crt/stdlib.h b/reactos/include/crt/stdlib.h
index 7b39875f39f..ba4ac799cd7 100644
--- a/reactos/include/crt/stdlib.h
+++ b/reactos/include/crt/stdlib.h
@@ -304,7 +304,7 @@ extern "C" {
_CRTIMP __declspec(noreturn) void __cdecl _exit(int _Code);
#if !defined __NO_ISOCEXT /* extern stub in static libmingwex.a */
/* C99 function name */
- void __cdecl __declspec(noreturn) _Exit(int); /* Declare to get noreturn attribute. */
+ __declspec(noreturn) void __cdecl _Exit(int); /* Declare to get noreturn attribute. */
__CRT_INLINE void __cdecl _Exit(int status)
{ _exit(status); }
#endif
@@ -312,7 +312,7 @@ extern "C" {
#pragma push_macro("abort")
#undef abort
#endif
- void __cdecl __declspec(noreturn) abort(void);
+ __declspec(noreturn) void __cdecl abort(void);
#if __MINGW_GNUC_PREREQ(4,4)
#pragma pop_macro("abort")
#endif
diff --git a/reactos/lib/3rdparty/mingw/crtexe.c b/reactos/lib/3rdparty/mingw/crtexe.c
index d9889aeaf3d..23368b6c778 100644
--- a/reactos/lib/3rdparty/mingw/crtexe.c
+++ b/reactos/lib/3rdparty/mingw/crtexe.c
@@ -20,6 +20,7 @@
#include
#include
#include
+#include
#ifndef __winitenv
extern wchar_t ***_imp____winitenv;
@@ -86,7 +87,7 @@ static int has_cctor = 0;
static _startupinfo startinfo;
extern void _pei386_runtime_relocator (void);
-static CALLBACK long _gnu_exception_handler (EXCEPTION_POINTERS * exception_data);
+static long CALLBACK _gnu_exception_handler (EXCEPTION_POINTERS * exception_data);
static LONG __mingw_vex(EXCEPTION_POINTERS * exception_data);
#ifdef WPRFLAG
static void duplicate_ppstrings (int ac, wchar_t ***av);
@@ -169,7 +170,7 @@ __tmainCRTStartup (void)
STARTUPINFO StartupInfo;
BOOL inDoubleQuote = FALSE;
memset (&StartupInfo, 0, sizeof (STARTUPINFO));
-
+
if (mingw_app_type)
GetStartupInfo (&StartupInfo);
{
@@ -206,26 +207,18 @@ __tmainCRTStartup (void)
_ASSERTE(__native_startup_state == __initialized);
if (! nested)
(VOID)InterlockedExchangePointer ((volatile PVOID *) &__native_startup_lock, 0);
-
+
if (__dyn_tls_init_callback != NULL && _IsNonwritableInCurrentImage ((PBYTE) &__dyn_tls_init_callback))
__dyn_tls_init_callback (NULL, DLL_THREAD_ATTACH, NULL);
-
+
_pei386_runtime_relocator ();
-
- #ifdef _WIN64
- __asm__ __volatile__ (
- "xorq %rax,%rax\n\t"
- "decq %rax\n\t"
- "movq %rax,%gs:0" "\n");
- #else
- __asm__ __volatile__ (
- "xorl %eax,%eax\n\t"
- "decl %eax\n\t"
- "movl %eax,%fs:0" "\n");
- #endif
+
+#if defined(__i386__) || defined(_M_IX86)
+ __writefsdword(0, 0xffffffff);
+#endif
AddVectoredExceptionHandler (0, (PVECTORED_EXCEPTION_HANDLER)__mingw_vex);
SetUnhandledExceptionFilter (_gnu_exception_handler);
-
+
_fpreset ();
if (mingw_app_type)
@@ -330,7 +323,7 @@ check_managed_app (void)
return 0;
}
-static CALLBACK long
+static long CALLBACK
_gnu_exception_handler (EXCEPTION_POINTERS * exception_data)
{
void (*old_handler) (int);
@@ -466,7 +459,7 @@ static void duplicate_ppstrings (int ac, char ***av)
char **avl;
int i;
char **n = (char **) malloc (sizeof (char *) * (ac + 1));
-
+
avl=*av;
for (i=0; i < ac; i++)
{
diff --git a/reactos/lib/3rdparty/mingw/mingw.rbuild b/reactos/lib/3rdparty/mingw/mingw.rbuild
index ad8d1e48b6b..4e0bda3e634 100644
--- a/reactos/lib/3rdparty/mingw/mingw.rbuild
+++ b/reactos/lib/3rdparty/mingw/mingw.rbuild
@@ -39,6 +39,7 @@
include/reactos/mingw-w64
+ /wd4733
crt0_w.c
crtexe.c
dllargv.c
diff --git a/reactos/lib/sdk/scrnsave/scrnsave.c b/reactos/lib/sdk/scrnsave/scrnsave.c
index 86278f8a672..85159f308cf 100644
--- a/reactos/lib/sdk/scrnsave/scrnsave.c
+++ b/reactos/lib/sdk/scrnsave/scrnsave.c
@@ -204,6 +204,9 @@ int APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR CmdLine, int
{
LPTSTR p;
+ UNREFERENCED_PARAMETER(nCmdShow);
+ UNREFERENCED_PARAMETER(hPrevInst);
+
hMainInstance = hInst;
// Parse the arguments
diff --git a/reactos/tools/rbuild/backend/mingw/compilers/msc.mak b/reactos/tools/rbuild/backend/mingw/compilers/msc.mak
index ff45c878408..bb041b69a7e 100644
--- a/reactos/tools/rbuild/backend/mingw/compilers/msc.mak
+++ b/reactos/tools/rbuild/backend/mingw/compilers/msc.mak
@@ -47,13 +47,13 @@ ${call RBUILD_DEPENDS,$(1),$(2),,${call RBUILD_cflags,$(1),$(4)},$(5).d}
$(5): $(2) $(5).d $(3) $$(RBUILD_HELPER_TARGET) | ${call RBUILD_dir,$(5)}
$$(ECHO_CC)
- $${cl} /TC /Fo$$@ ${call RBUILD_cflags,$(1),$(4)} /c $$<
+ $${cl} /TC /Fo$$@ /Fd$(basename $$@).pdb ${call RBUILD_cflags,$(1),$(4)} /c $$<
else
$(5): $(2) $(3) $$(RBUILD_HELPER_TARGET) | ${call RBUILD_dir,$(5)}
$$(ECHO_CC)
- $${cl} /TC /Fo$$@ ${call RBUILD_cflags,$(1),$(4)} /c $$<
+ $${cl} /TC /Fo$$@ /Fd$(basename $$@).pdb ${call RBUILD_cflags,$(1),$(4)} /c $$<
endif
@@ -71,13 +71,13 @@ ${call RBUILD_CXX_DEPENDS,$(1),$(2),,${call RBUILD_cflags,$(1),$(4)},$(5).d}
$(5): $(2) $(5).d $(3) $$(RBUILD_HELPER_TARGET) | ${call RBUILD_dir,$(5)}
$$(ECHO_CC)
- $${cl} /TP /Fo$$@ ${call RBUILD_cxxflags,$(1),$(4)} /c $$<
+ $${cl} /TP /Fo$$@ /Fd$(basename $$@).pdb ${call RBUILD_cxxflags,$(1),$(4)} /c $$<
else
$(5): $(2) $(3) $$(RBUILD_HELPER_TARGET) | ${call RBUILD_dir,$(5)}
$$(ECHO_CC)
- $${cl} /TP /Fo$$@ ${call RBUILD_cxxflags,$(1),$(4)} /c $$<
+ $${cl} /TP /Fo$$@ /Fd$(basename $$@).pdb ${call RBUILD_cxxflags,$(1),$(4)} /c $$<
endif