From a74ecc13fd6f1ea87ee5bf29eb9ce1d13117aa1f Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 10 May 2014 14:16:11 +0000 Subject: [PATCH] [MSVCRT] Fix export of __uncaught_exception [MSHTML] Add x64 asm wrappers svn path=/trunk/; revision=63219 --- reactos/dll/win32/mshtml/msvc.S | 20 +++++++++++++++----- reactos/dll/win32/msvcrt/msvcrt.spec | 3 +-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/reactos/dll/win32/mshtml/msvc.S b/reactos/dll/win32/mshtml/msvc.S index 9d210be115f..90b65d8ab37 100644 --- a/reactos/dll/win32/mshtml/msvc.S +++ b/reactos/dll/win32/mshtml/msvc.S @@ -4,13 +4,23 @@ .code MACRO(DEFINE_WRAPPER_FUNC, n, off, x) +#ifdef _M_IX86 PUBLIC _wrapper_func_&n& _wrapper_func_&n&: -mov eax, [esp+4] -mov eax, [eax+4] -mov [esp+4], eax -mov eax, [eax] -jmp dword ptr [eax+off] + mov eax, [esp+4] + mov eax, [eax+4] + mov [esp+4], eax + mov eax, [eax] + jmp dword ptr [eax+off] +#elif defined(_M_AMD64) +PUBLIC wrapper_func_&n& +wrapper_func_&n&: + mov rcx, [rcx+4] + mov rax, [rcx] + jmp qword ptr [rax+off] +#else +#error Unimplemented +#endif ENDM DEFINE_WRAPPER_FUNC 3, 12, 24 diff --git a/reactos/dll/win32/msvcrt/msvcrt.spec b/reactos/dll/win32/msvcrt/msvcrt.spec index 1e5e0670fd1..8587c0d9e66 100644 --- a/reactos/dll/win32/msvcrt/msvcrt.spec +++ b/reactos/dll/win32/msvcrt/msvcrt.spec @@ -73,7 +73,7 @@ # @ cdecl ??_U@YAPAXIHPBDH@Z(long long str long) MSVCRT_operator_new_dbg @ cdecl -arch=win32 ??_V@YAXPAX@Z(ptr) MSVCRT_operator_delete @ cdecl -arch=win64 ??_V@YAXPEAX@Z(ptr) MSVCRT_operator_delete -@ cdecl -arch=win64 -norelay __uncaught_exception(ptr) +@ cdecl -norelay __uncaught_exception(ptr) @ cdecl -arch=win32 -norelay ?_query_new_handler@@YAP6AHI@ZXZ() MSVCRT__query_new_handler @ cdecl -arch=win64 -norelay ?_query_new_handler@@YAP6AH_K@ZXZ() MSVCRT__query_new_handler @ cdecl ?_query_new_mode@@YAHXZ() MSVCRT__query_new_mode @@ -256,7 +256,6 @@ @ cdecl __threadhandle() kernel32.GetCurrentThread @ cdecl __threadid() kernel32.GetCurrentThreadId @ cdecl __toascii(long) -@ cdecl __uncaught_exception() @ cdecl __unDName(ptr str long ptr ptr long) @ cdecl __unDNameEx(ptr str long ptr ptr ptr long) @ extern __unguarded_readlc_active