Author: tkreuzer Date: Thu Feb 10 11:35:05 2011 New Revision: 50647
URL: http://svn.reactos.org/svn/reactos?rev=50647&view=rev Log: Merge CRT changes from cmake branch (mainly MSVC compilation fixes)
Modified: trunk/reactos/lib/sdk/crt/except/cpp.c trunk/reactos/lib/sdk/crt/except/cppexcept.c trunk/reactos/lib/sdk/crt/except/except.c trunk/reactos/lib/sdk/crt/include/internal/file.h trunk/reactos/lib/sdk/crt/include/internal/time.h trunk/reactos/lib/sdk/crt/math/abs.c trunk/reactos/lib/sdk/crt/math/acos.c trunk/reactos/lib/sdk/crt/math/asin.c trunk/reactos/lib/sdk/crt/math/cosf.c trunk/reactos/lib/sdk/crt/math/cosh.c trunk/reactos/lib/sdk/crt/math/labs.c trunk/reactos/lib/sdk/crt/math/logf.c trunk/reactos/lib/sdk/crt/math/modf.c trunk/reactos/lib/sdk/crt/math/powf.c trunk/reactos/lib/sdk/crt/math/sinf.c trunk/reactos/lib/sdk/crt/math/sinh.c trunk/reactos/lib/sdk/crt/math/tanh.c trunk/reactos/lib/sdk/crt/mem/memcmp.c trunk/reactos/lib/sdk/crt/misc/assert.c trunk/reactos/lib/sdk/crt/stdlib/rot.c trunk/reactos/lib/sdk/crt/string/scanf.h trunk/reactos/lib/sdk/crt/string/strset.c trunk/reactos/lib/sdk/crt/string/wcs.c trunk/reactos/lib/sdk/crt/time/ctime.c trunk/reactos/lib/sdk/crt/time/futime.c trunk/reactos/lib/sdk/crt/time/utime.c
Modified: trunk/reactos/lib/sdk/crt/except/cpp.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/except/cpp.c?re... ============================================================================== --- trunk/reactos/lib/sdk/crt/except/cpp.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/except/cpp.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -63,6 +63,10 @@
#define THISCALL(func) __thiscall_ ## func #define THISCALL_NAME(func) __ASM_NAME("__thiscall_" #func) + +#ifdef _MSC_VER +#include <internal/wine_msc.h> +#else #define DEFINE_THISCALL_WRAPPER(func,args) \ extern void THISCALL(func)(void); \ __ASM_GLOBAL_FUNC(__thiscall_ ## func, \ @@ -70,6 +74,8 @@ "pushl %ecx\n\t" \ "pushl %eax\n\t" \ "jmp " __ASM_NAME(#func) __ASM_STDCALL(args) ) +#endif /* _MSC_VER */ + #else /* __i386__ */
#define THISCALL(func) func @@ -658,6 +664,7 @@
/* vtables */
+#ifdef __GNUC__ #ifdef _WIN64
#define __ASM_VTABLE(name,funcs) \ @@ -700,6 +707,16 @@
#ifndef __GNUC__ } +#endif +#endif + +#ifdef _MSC_VER +#pragma message ("HAXX!") +const vtable_ptr MSVCRT_exception_vtable; +const vtable_ptr MSVCRT_bad_typeid_vtable; +const vtable_ptr MSVCRT_bad_cast_vtable; +const vtable_ptr MSVCRT___non_rtti_object_vtable; +const vtable_ptr MSVCRT_type_info_vtable; #endif
/* Static RTTI for exported objects */
Modified: trunk/reactos/lib/sdk/crt/except/cppexcept.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/except/cppexcep... ============================================================================== --- trunk/reactos/lib/sdk/crt/except/cppexcept.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/except/cppexcept.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -45,6 +45,9 @@ { void *ret; int dummy; +#ifdef _MSC_VER +#pragma message ("call_ebp_func is unimplemented for MSC") +#else __asm__ __volatile__ ("pushl %%ebx\n\t" "pushl %%ebp\n\t" "movl %4,%%ebp\n\t" @@ -53,6 +56,7 @@ "popl %%ebx" : "=a" (ret), "=S" (dummy), "=D" (dummy) : "0" (func), "1" (ebp) : "ecx", "edx", "memory" ); +#endif return ret; }
@@ -60,6 +64,9 @@ static inline void call_copy_ctor( void *func, void *this, void *src, int has_vbase ) { TRACE( "calling copy ctor %p object %p src %p\n", func, this, src ); +#ifdef _MSC_VER +#pragma message ("call_copy_ctor is unimplemented for MSC") +#else if (has_vbase) /* in that case copy ctor takes an extra bool indicating whether to copy the base class */ __asm__ __volatile__("pushl $1; pushl %2; call *%0" @@ -67,19 +74,28 @@ else __asm__ __volatile__("pushl %2; call *%0" : : "r" (func), "c" (this), "r" (src) : "eax", "edx", "memory" ); +#endif }
/* call the destructor of the exception object */ static inline void call_dtor( void *func, void *object ) { +#ifdef _MSC_VER +#pragma message ("call_dtor is unimplemented for MSC") +#else __asm__ __volatile__("call *%0" : : "r" (func), "c" (object) : "eax", "edx", "memory" ); +#endif }
/* continue execution to the specified address after exception is caught */ static inline void DECLSPEC_NORETURN continue_after_catch( cxx_exception_frame* frame, void *addr ) { +#ifdef _MSC_VER +#pragma message ("continue_after_catch is unimplemented for MSC") +#else __asm__ __volatile__("movl -4(%0),%%esp; leal 12(%0),%%ebp; jmp *%1" : : "r" (frame), "a" (addr) ); +#endif for (;;) ; /* unreached */ }
@@ -415,6 +431,14 @@ */ extern DWORD CDECL __CxxFrameHandler( PEXCEPTION_RECORD rec, EXCEPTION_REGISTRATION_RECORD* frame, PCONTEXT context, EXCEPTION_REGISTRATION_RECORD** dispatch ); +#ifdef _MSC_VER +#pragma message ("__CxxFrameHandler is unimplemented for MSC") +DWORD CDECL __CxxFrameHandler( PEXCEPTION_RECORD rec, EXCEPTION_REGISTRATION_RECORD* frame, + PCONTEXT context, EXCEPTION_REGISTRATION_RECORD** dispatch ) +{ + return 0; +} +#else __ASM_GLOBAL_FUNC( __CxxFrameHandler, "pushl $0\n\t" /* nested_trylevel */ __ASM_CFI(".cfi_adjust_cfa_offset 4\n\t") @@ -434,7 +458,7 @@ "add $28,%esp\n\t" __ASM_CFI(".cfi_adjust_cfa_offset -28\n\t") "ret" ) - +#endif
/********************************************************************* * __CxxLongjmpUnwind (MSVCRT.@)
Modified: trunk/reactos/lib/sdk/crt/except/except.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/except/except.c... ============================================================================== --- trunk/reactos/lib/sdk/crt/except/except.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/except/except.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -96,6 +96,57 @@ : "ecx", "edx", "memory" ); return ret; } +#elif defined(_MSC_VER) +#pragma warning(push) +#pragma warning(disable:4731) // Don't complain about changing ebp +void __inline call_finally_block( void *code_block, void *base_ptr ) +{ + __asm + { + mov eax, code_block + mov ebp, base_ptr + call [eax] + } +} + +int __inline call_filter( int (*func)(PEXCEPTION_POINTERS), void *arg, void *_ebp ) +{ + int _ret; + __asm + { + push ebp + mov eax, arg + push eax + mov ebp, _ebp + mov eax, func + call [eax] + mov _ret, eax + pop ebp + pop ebp + } + return _ret; +} +int __inline call_unwind_func( int (*func)(void), void *_ebp ) +{ + int _ret; + + __asm + { + push ebp + push ebx + push esi + push edi + mov ebp, _ebp + call dword ptr [func] + mov _ret, eax + pop edi + pop esi + pop ebx + pop ebp + } + return _ret; +} +#pragma warning(pop) #endif
static DWORD MSVCRT_nested_handler(PEXCEPTION_RECORD rec,
Modified: trunk/reactos/lib/sdk/crt/include/internal/file.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/include/interna... ============================================================================== --- trunk/reactos/lib/sdk/crt/include/internal/file.h [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/include/internal/file.h [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -127,8 +127,6 @@
int _isnanl(long double x); int _isinfl(long double x); -int _isnan(double x); -int _isinf(double x);
/* Flags for the iobuf structure (for reference) */ #if 0
Modified: trunk/reactos/lib/sdk/crt/include/internal/time.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/include/interna... ============================================================================== --- trunk/reactos/lib/sdk/crt/include/internal/time.h [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/include/internal/time.h [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -20,9 +20,9 @@ ULargeInt.HighPart = FileTime->dwHighDateTime; ULargeInt.QuadPart -= DIFFTIME;
- time = ULargeInt.QuadPart / 10000000; + time = (time_t)(ULargeInt.QuadPart / 10000000); if (millitm) - *millitm = (ULargeInt.QuadPart % 10000000) / 10000; + *millitm = (USHORT)((ULargeInt.QuadPart % 10000000) / 10000);
return time; }
Modified: trunk/reactos/lib/sdk/crt/math/abs.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/abs.c?rev=... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/abs.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/abs.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -1,4 +1,9 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ + +#ifdef _MSC_VER +#pragma warning(disable: 4164) +#pragma function(abs) +#endif
/* * @implemented
Modified: trunk/reactos/lib/sdk/crt/math/acos.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/acos.c?rev... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/acos.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/acos.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -21,6 +21,9 @@
#include <math.h>
+#ifdef _MSC_VER +#pragma function(acos) +#endif
double acos(double __x) {
Modified: trunk/reactos/lib/sdk/crt/math/asin.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/asin.c?rev... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/asin.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/asin.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -21,6 +21,9 @@
#include <math.h>
+#ifdef _MSC_VER +#pragma function(asin) +#endif
double asin(double __x) {
Modified: trunk/reactos/lib/sdk/crt/math/cosf.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/cosf.c?rev... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/cosf.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/cosf.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -3,7 +3,9 @@ * This file is part of the w64 mingw-runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ +#define cosf _dummy_cosf #include <math.h> +#undef cosf
float cosf(float _X) {
Modified: trunk/reactos/lib/sdk/crt/math/cosh.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/cosh.c?rev... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/cosh.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/cosh.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -1,6 +1,9 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ #include <math.h>
+#ifdef _MSC_VER +#pragma function(cosh) +#endif
/* * @implemented
Modified: trunk/reactos/lib/sdk/crt/math/labs.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/labs.c?rev... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/labs.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/labs.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -1,4 +1,9 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ + +#ifdef _MSC_VER +#pragma warning(disable: 4164) +#pragma function(labs) +#endif
/* * @implemented
Modified: trunk/reactos/lib/sdk/crt/math/logf.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/logf.c?rev... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/logf.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/logf.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -3,7 +3,9 @@ * This file is part of the w64 mingw-runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ +#define logf _dummy_logf #include <math.h> +#undef logf
float logf(float _X) {
Modified: trunk/reactos/lib/sdk/crt/math/modf.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/modf.c?rev... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/modf.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/modf.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -9,8 +9,9 @@ * is preserved. * ==================================================== */ - +#define modfl _dummy_modfl #include <precomp.h> +#undef modfl
//static const double one = 1.0;
Modified: trunk/reactos/lib/sdk/crt/math/powf.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/powf.c?rev... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/powf.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/powf.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -3,7 +3,8 @@ * This file is part of the w64 mingw-runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ -#include <math.h> + +double __cdecl pow(double x, double y);
float powf(float x, float y) {
Modified: trunk/reactos/lib/sdk/crt/math/sinf.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/sinf.c?rev... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/sinf.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/sinf.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -3,7 +3,9 @@ * This file is part of the w64 mingw-runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ +#define sinf _dummy_sinf #include <math.h> +#undef sinf
float sinf(float _X) {
Modified: trunk/reactos/lib/sdk/crt/math/sinh.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/sinh.c?rev... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/sinh.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/sinh.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -1,5 +1,9 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */ #include <math.h> + +#ifdef _MSC_VER +#pragma function(sinh) +#endif
/* * @implemented
Modified: trunk/reactos/lib/sdk/crt/math/tanh.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/math/tanh.c?rev... ============================================================================== --- trunk/reactos/lib/sdk/crt/math/tanh.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/math/tanh.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -1,6 +1,10 @@ /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
#include <math.h> + +#ifdef _MSC_VER +#pragma function(tanh) +#endif
/* * @implemented
Modified: trunk/reactos/lib/sdk/crt/mem/memcmp.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/mem/memcmp.c?re... ============================================================================== --- trunk/reactos/lib/sdk/crt/mem/memcmp.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/mem/memcmp.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -3,6 +3,11 @@ */
#include <string.h> + +#ifdef _MSC_VER +#pragma warning(disable: 4164) +#pragma function(memcmp) +#endif
int memcmp(const void *s1, const void *s2, size_t n) {
Modified: trunk/reactos/lib/sdk/crt/misc/assert.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/misc/assert.c?r... ============================================================================== --- trunk/reactos/lib/sdk/crt/misc/assert.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/misc/assert.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -32,7 +32,7 @@
/* Get MessageBoxA function pointer */ hmodUser32 = LoadLibrary("user32.dll"); - pMessageBoxA = GetProcAddress(hmodUser32, "MessageBoxA"); + pMessageBoxA = (PVOID)GetProcAddress(hmodUser32, "MessageBoxA"); if (!pMessageBoxA) { abort();
Modified: trunk/reactos/lib/sdk/crt/stdlib/rot.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/stdlib/rot.c?re... ============================================================================== --- trunk/reactos/lib/sdk/crt/stdlib/rot.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/stdlib/rot.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -9,6 +9,10 @@ */
#include <stdlib.h> + +#ifdef _MSC_VER +#pragma function(_rotr, _rotl, _rotr, _lrotl, _lrotr) +#endif
unsigned int _rotr( unsigned int value, int shift ); /*
Modified: trunk/reactos/lib/sdk/crt/string/scanf.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/string/scanf.h?... ============================================================================== --- trunk/reactos/lib/sdk/crt/string/scanf.h [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/string/scanf.h [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -460,7 +460,7 @@ if ((*(format - 1)) < *(format + 1)) RtlSetBits(&bitMask, *(format - 1) +1 , *(format + 1) - *(format - 1)); else - RtlSetBits(&bitMask, *(format + 1) , *(format - 1) - *(format + 1)); + RtlSetBits(&bitMask, *(format + 1) , *(format - 1) - *(format + 1)); format++; } else RtlSetBits(&bitMask, *format, 1);
Modified: trunk/reactos/lib/sdk/crt/string/strset.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/string/strset.c... ============================================================================== --- trunk/reactos/lib/sdk/crt/string/strset.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/string/strset.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -10,6 +10,9 @@
#if defined(__GNUC__) && !defined(__clang__) #define __int64 long long +#elif defined(_MSC_VER) +#pragma warning(disable: 4164) +#pragma function(_strset) #endif
#ifdef _WIN64 @@ -49,3 +52,4 @@ } return t; } +
Modified: trunk/reactos/lib/sdk/crt/string/wcs.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/string/wcs.c?re... ============================================================================== --- trunk/reactos/lib/sdk/crt/string/wcs.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/string/wcs.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -47,6 +47,10 @@ #undef vprintf #undef vwprintf
+#ifdef _MSC_VER +#pragma function(_wcsset) +#endif + #ifndef _LIBCNT_ /********************************************************************* * _wcsdup (MSVCRT.@)
Modified: trunk/reactos/lib/sdk/crt/time/ctime.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/time/ctime.c?re... ============================================================================== --- trunk/reactos/lib/sdk/crt/time/ctime.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/time/ctime.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -7,6 +7,7 @@ */ #define MINGW_HAS_SECURE_API 1
+#define RC_INVOKED 1 // to prevent inline functions #include <tchar.h> #include <time.h> #include "bitsfixup.h"
Modified: trunk/reactos/lib/sdk/crt/time/futime.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/time/futime.c?r... ============================================================================== --- trunk/reactos/lib/sdk/crt/time/futime.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/time/futime.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -6,6 +6,7 @@ * PROGRAMERS: Timo Kreuzer */ #include <precomp.h> +#define RC_INVOKED 1 // to prevent inline functions #include <time.h> #include <sys/utime.h> #include "bitsfixup.h"
Modified: trunk/reactos/lib/sdk/crt/time/utime.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/time/utime.c?re... ============================================================================== --- trunk/reactos/lib/sdk/crt/time/utime.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/time/utime.c [iso-8859-1] Thu Feb 10 11:35:05 2011 @@ -7,6 +7,7 @@ */ #include <precomp.h> #include <tchar.h> +#define RC_INVOKED 1 // to prevent inline functions #include <sys/utime.h> #include "bitsfixup.h"