Module: wine Branch: master Commit: 21400066620eb716d54014ac70e26ff7ec5f1d4f URL: http://source.winehq.org/git/wine.git/?a=commit;h=21400066620eb716d54014ac70...
Author: Alexandre Julliard julliard@winehq.org Date: Tue May 17 12:31:00 2011 +0200
msvcrt: Implement _local_unwind for x86_64.
---
dlls/msvcr100/msvcr100.spec | 1 + dlls/msvcr80/msvcr80.spec | 1 + dlls/msvcr90/msvcr90.spec | 1 + dlls/msvcrt/except.c | 9 +++++++++ dlls/msvcrt/msvcrt.spec | 2 +- dlls/msvcrtd/msvcrtd.spec | 1 + dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 3 ++- 7 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index a6cfaa3..4192ff6 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -844,6 +844,7 @@ @ cdecl _lfind(ptr ptr ptr long ptr) msvcrt._lfind @ stub _lfind_s @ cdecl _loaddll(str) msvcrt._loaddll +@ cdecl -arch=x86_64 _local_unwind(ptr ptr) msvcrt._local_unwind @ cdecl -i386 _local_unwind2(ptr long) msvcrt._local_unwind2 @ cdecl -i386 _local_unwind4(ptr ptr long) msvcrt._local_unwind4 @ cdecl _localtime32(ptr) msvcrt._localtime32 diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index c9f62f0..2158734 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -690,6 +690,7 @@ @ cdecl _lfind(ptr ptr ptr long ptr) msvcrt._lfind @ stub _lfind_s @ cdecl _loaddll(str) msvcrt._loaddll +@ cdecl -arch=x86_64 _local_unwind(ptr ptr) msvcrt._local_unwind @ cdecl -i386 _local_unwind2(ptr long) msvcrt._local_unwind2 @ cdecl -i386 _local_unwind4(ptr ptr long) msvcrt._local_unwind4 @ cdecl _localtime32(ptr) msvcrt._localtime32 diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 5f09767..1bb525d 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -678,6 +678,7 @@ @ cdecl _lfind(ptr ptr ptr long ptr) msvcrt._lfind @ stub _lfind_s @ cdecl _loaddll(str) msvcrt._loaddll +@ cdecl -arch=x86_64 _local_unwind(ptr ptr) msvcrt._local_unwind @ cdecl -i386 _local_unwind2(ptr long) msvcrt._local_unwind2 @ cdecl -i386 _local_unwind4(ptr ptr long) msvcrt._local_unwind4 @ cdecl _localtime32(ptr) msvcrt._localtime32 diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c index 7404089..422e3fa 100644 --- a/dlls/msvcrt/except.c +++ b/dlls/msvcrt/except.c @@ -605,6 +605,15 @@ void __cdecl MSVCRT_longjmp( struct MSVCRT___JUMP_BUFFER *jmp, int retval ) longjmp_set_regs( jmp, retval ); }
+/******************************************************************* + * _local_unwind (MSVCRT.@) + */ +void __cdecl _local_unwind( void *frame, void *target ) +{ + CONTEXT context; + RtlUnwindEx( frame, target, NULL, 0, &context, NULL ); +} + #endif /* __x86_64__ */
static MSVCRT___sighandler_t sighandlers[MSVCRT_NSIG] = { MSVCRT_SIG_DFL }; diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 3b36d77..5d065fb 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -627,7 +627,7 @@ @ cdecl _lfind(ptr ptr ptr long ptr) # stub _lfind_s(ptr ptr ptr long ptr ptr) @ cdecl _loaddll(str) -# stub -arch=x86_64 _local_unwind +@ cdecl -arch=x86_64 _local_unwind(ptr ptr) @ cdecl -i386 _local_unwind2(ptr long) @ cdecl -i386 _local_unwind4(ptr ptr long) @ cdecl _localtime32(ptr) MSVCRT__localtime32 diff --git a/dlls/msvcrtd/msvcrtd.spec b/dlls/msvcrtd/msvcrtd.spec index ff83f8e..e4372e9 100644 --- a/dlls/msvcrtd/msvcrtd.spec +++ b/dlls/msvcrtd/msvcrtd.spec @@ -378,6 +378,7 @@ @ cdecl _kbhit() msvcrt._kbhit @ cdecl _lfind(ptr ptr ptr long ptr) msvcrt._lfind @ cdecl _loaddll(str) msvcrt._loaddll +@ cdecl -arch=x86_64 _local_unwind(ptr ptr) msvcrt._local_unwind @ cdecl -i386 _local_unwind2(ptr long) msvcrt._local_unwind2 @ cdecl _lock(long) msvcrt._lock @ cdecl _locking(long long long) msvcrt._locking diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index 64aaf39..3c059b6 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -1411,7 +1411,8 @@ @ cdecl -private -i386 _global_unwind2(ptr) msvcrt._global_unwind2 @ cdecl -private _itoa(long ptr long) msvcrt._itoa @ cdecl -private _itow(long ptr long) msvcrt._itow -@ cdecl -private _local_unwind2(ptr long) msvcrt._local_unwind2 +@ cdecl -private -arch=x86_64 _local_unwind(ptr ptr) msvcrt._local_unwind +@ cdecl -private -arch=i386 _local_unwind2(ptr long) msvcrt._local_unwind2 @ cdecl -private _purecall() msvcrt._purecall @ varargs -private _snprintf(str long str) msvcrt._snprintf @ varargs -private _snwprintf(wstr long wstr) msvcrt._snwprintf