Alexandre Julliard : msvcrt: Implement _local_unwind for x86_64.

Alexandre Julliard julliard at winehq.org
Tue May 17 12:53:00 CDT 2011


Module: wine
Branch: master
Commit: 21400066620eb716d54014ac70e26ff7ec5f1d4f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=21400066620eb716d54014ac70e26ff7ec5f1d4f

Author: Alexandre Julliard <julliard at 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




More information about the wine-cvs mailing list