diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c index 51ff3d1964..ec455f867c 100644 --- a/dlls/msvcrt/except.c +++ b/dlls/msvcrt/except.c @@ -44,14 +44,6 @@ typedef struct _EXCEPTION_REGISTRATION PCONTEXT, PEXCEPTION_RECORD); } EXCEPTION_REGISTRATION; -/********************************************************************* - * _EH_prolog (MSVCRT.@) - */ -void __cdecl MSVCRT__EH_prolog(void) -{ - FIXME("stub\n"); -} - /********************************************************************* * _XcptFilter (MSVCRT.@) */ @@ -61,6 +53,23 @@ int __cdecl MSVCRT__XcptFilter(int ex, PEXCEPTION_POINTERS ptr) return UnhandledExceptionFilter(ptr); } +/********************************************************************* + * _EH_prolog (MSVCRT.@) + */ +#ifdef __i386__ +/* Provided for VC++ binary compatability only */ +__ASM_GLOBAL_FUNC(MSVCRT__EH_prolog, + "pushl $0xff\n\t" + "pushl %eax\n\t" + "pushl %fs:0\n\t" + "movl %esp, %fs:0\n\t" + "movl 12(%esp), %eax\n\t" + "movl %ebp, 12(%esp)\n\t" + "leal 12(%esp), %ebp\n\t" + "pushl %eax\n\t" + "ret"); +#endif + /******************************************************************* * _global_unwind2 (MSVCRT.@) */ diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 2568ea9196..8d93b867de 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -74,7 +74,7 @@ debug_channels (msvcrt) @ cdecl -noimport _CItan() MSVCRT__CItan @ cdecl -noimport _CItanh() MSVCRT__CItanh @ stub _CxxThrowException -@ cdecl _EH_prolog() MSVCRT__EH_prolog # FIXME: crashes relay debugging +@ cdecl -i386 -norelay _EH_prolog() MSVCRT__EH_prolog @ cdecl _Getdays() MSVCRT__Getdays @ cdecl _Getmonths() MSVCRT__Getmonths @ cdecl _Getnames() MSVCRT__Getnames