#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, \
"pushl %ecx\n\t" \
"pushl %eax\n\t" \
"jmp " __ASM_NAME(#func) __ASM_STDCALL(args) )
+#endif /* _MSC_VER */
+
#else /* __i386__ */
#define THISCALL(func) func
/* vtables */
+#ifdef __GNUC__
#ifdef _WIN64
#define __ASM_VTABLE(name,funcs) \
#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 */
{
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"
"popl %%ebx"
: "=a" (ret), "=S" (dummy), "=D" (dummy)
: "0" (func), "1" (ebp) : "ecx", "edx", "memory" );
+#endif
return ret;
}
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"
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 */
}
*/
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")
"add $28,%esp\n\t"
__ASM_CFI(".cfi_adjust_cfa_offset -28\n\t")
"ret" )
-
+#endif
/*********************************************************************
* __CxxLongjmpUnwind (MSVCRT.@)
: "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,
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
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;
}
/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
+#ifdef _MSC_VER
+#pragma warning(disable: 4164)
+#pragma function(abs)
+#endif
+
/*
* @implemented
*/
#include <math.h>
+#ifdef _MSC_VER
+#pragma function(acos)
+#endif
double acos(double __x)
{
#include <math.h>
+#ifdef _MSC_VER
+#pragma function(asin)
+#endif
double asin(double __x)
{
* 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)
{
/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
#include <math.h>
+#ifdef _MSC_VER
+#pragma function(cosh)
+#endif
/*
* @implemented
/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
+#ifdef _MSC_VER
+#pragma warning(disable: 4164)
+#pragma function(labs)
+#endif
+
/*
* @implemented
*/
* 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)
{
* is preserved.
* ====================================================
*/
-
+#define modfl _dummy_modfl
#include <precomp.h>
+#undef modfl
//static const double one = 1.0;
* 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)
{
* 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)
{
/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
#include <math.h>
+#ifdef _MSC_VER
+#pragma function(sinh)
+#endif
+
/*
* @implemented
*/
#include <math.h>
+#ifdef _MSC_VER
+#pragma function(tanh)
+#endif
+
/*
* @implemented
*/
#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)
{
if (n != 0) {
/* Get MessageBoxA function pointer */
hmodUser32 = LoadLibrary("user32.dll");
- pMessageBoxA = GetProcAddress(hmodUser32, "MessageBoxA");
+ pMessageBoxA = (PVOID)GetProcAddress(hmodUser32, "MessageBoxA");
if (!pMessageBoxA)
{
abort();
#include <stdlib.h>
+#ifdef _MSC_VER
+#pragma function(_rotr, _rotl, _rotr, _lrotl, _lrotr)
+#endif
+
unsigned int _rotr( unsigned int value, int shift );
/*
* @implemented
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);
#if defined(__GNUC__) && !defined(__clang__)
#define __int64 long long
+#elif defined(_MSC_VER)
+#pragma warning(disable: 4164)
+#pragma function(_strset)
#endif
#ifdef _WIN64
}
return t;
}
+
#undef vprintf
#undef vwprintf
+#ifdef _MSC_VER
+#pragma function(_wcsset)
+#endif
+
#ifndef _LIBCNT_
/*********************************************************************
* _wcsdup (MSVCRT.@)
*/
#define MINGW_HAS_SECURE_API 1
+#define RC_INVOKED 1 // to prevent inline functions
#include <tchar.h>
#include <time.h>
#include "bitsfixup.h"
* PROGRAMERS: Timo Kreuzer
*/
#include <precomp.h>
+#define RC_INVOKED 1 // to prevent inline functions
#include <time.h>
#include <sys/utime.h>
#include "bitsfixup.h"
*/
#include <precomp.h>
#include <tchar.h>
+#define RC_INVOKED 1 // to prevent inline functions
#include <sys/utime.h>
#include "bitsfixup.h"