Alexandre Julliard : msvcrt: Create an i386-specific file for exception handling.
Alexandre Julliard
julliard at winehq.org
Fri Mar 16 11:27:48 CDT 2012
Module: wine
Branch: master
Commit: aba6423b830939ad98f755f2a54104626483db9c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=aba6423b830939ad98f755f2a54104626483db9c
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Mar 13 15:10:15 2012 +0100
msvcrt: Create an i386-specific file for exception handling.
---
dlls/msvcrt/Makefile.in | 2 +-
dlls/msvcrt/cpp.c | 14 ++++++++++++++
dlls/msvcrt/{cppexcept.c => except_i386.c} | 22 ++++------------------
dlls/msvcrt/msvcrt.spec | 8 ++++----
4 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/dlls/msvcrt/Makefile.in b/dlls/msvcrt/Makefile.in
index 1f4860a..ba8cdbb 100644
--- a/dlls/msvcrt/Makefile.in
+++ b/dlls/msvcrt/Makefile.in
@@ -6,13 +6,13 @@ DELAYIMPORTS = advapi32 user32
C_SRCS = \
console.c \
cpp.c \
- cppexcept.c \
ctype.c \
data.c \
dir.c \
environ.c \
errno.c \
except.c \
+ except_i386.c \
exit.c \
file.c \
heap.c \
diff --git a/dlls/msvcrt/cpp.c b/dlls/msvcrt/cpp.c
index d5c0c64..dc609c1 100644
--- a/dlls/msvcrt/cpp.c
+++ b/dlls/msvcrt/cpp.c
@@ -1270,3 +1270,17 @@ void* CDECL MSVCRT___RTCastToVoid(void *cppobj)
__ENDTRY
return ret;
}
+
+
+/*********************************************************************
+ * _CxxThrowException (MSVCRT.@)
+ */
+void WINAPI _CxxThrowException( exception *object, const cxx_exception_type *type )
+{
+ ULONG_PTR args[3];
+
+ args[0] = CXX_FRAME_MAGIC_VC6;
+ args[1] = (ULONG_PTR)object;
+ args[2] = (ULONG_PTR)type;
+ RaiseException( CXX_EXCEPTION, EH_NONCONTINUABLE, 3, args );
+}
diff --git a/dlls/msvcrt/cppexcept.c b/dlls/msvcrt/except_i386.c
similarity index 97%
rename from dlls/msvcrt/cppexcept.c
rename to dlls/msvcrt/except_i386.c
index 18e5aa0..c95f49b 100644
--- a/dlls/msvcrt/cppexcept.c
+++ b/dlls/msvcrt/except_i386.c
@@ -26,6 +26,8 @@
#include "config.h"
#include "wine/port.h"
+#ifdef __i386__
+
#include <stdarg.h>
#include "windef.h"
@@ -38,8 +40,6 @@
#include "cppexcept.h"
-#ifdef __i386__ /* CxxFrameHandler is not supported on non-i386 */
-
WINE_DEFAULT_DEBUG_CHANNEL(seh);
DWORD CDECL cxx_frame_handler( PEXCEPTION_RECORD rec, cxx_exception_frame* frame,
@@ -455,9 +455,6 @@ void __stdcall __CxxLongjmpUnwind( const struct MSVCRT___JUMP_BUFFER *buf )
cxx_local_unwind( frame, descr, buf->TryLevel );
}
-#endif /* __i386__ */
-
-
/*********************************************************************
* __CppXcptFilter (MSVCRT.@)
*/
@@ -469,19 +466,6 @@ int CDECL __CppXcptFilter(NTSTATUS ex, PEXCEPTION_POINTERS ptr)
}
/*********************************************************************
- * _CxxThrowException (MSVCRT.@)
- */
-void WINAPI _CxxThrowException( exception *object, const cxx_exception_type *type )
-{
- ULONG_PTR args[3];
-
- args[0] = CXX_FRAME_MAGIC_VC6;
- args[1] = (ULONG_PTR)object;
- args[2] = (ULONG_PTR)type;
- RaiseException( CXX_EXCEPTION, EH_NONCONTINUABLE, 3, args );
-}
-
-/*********************************************************************
* __CxxDetectRethrow (MSVCRT.@)
*/
BOOL CDECL __CxxDetectRethrow(PEXCEPTION_POINTERS ptrs)
@@ -511,3 +495,5 @@ unsigned int CDECL __CxxQueryExceptionSize(void)
{
return sizeof(cxx_exception_type);
}
+
+#endif /* __i386__ */
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 1260dfa..c893382 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -145,18 +145,18 @@
@ extern _HUGE MSVCRT__HUGE
@ cdecl _Strftime(str long str ptr ptr)
@ cdecl _XcptFilter(long ptr)
-@ cdecl __CppXcptFilter(long ptr)
+@ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler
+@ cdecl -i386 __CppXcptFilter(long ptr)
# stub __CxxCallUnwindDelDtor
# stub __CxxCallUnwindDtor
# stub __CxxCallUnwindVecDtor
-@ cdecl __CxxDetectRethrow(ptr)
+@ cdecl -i386 __CxxDetectRethrow(ptr)
# stub __CxxExceptionFilter
@ cdecl -i386 -norelay __CxxFrameHandler(ptr ptr ptr ptr)
@ cdecl -i386 -norelay __CxxFrameHandler2(ptr ptr ptr ptr) __CxxFrameHandler
@ cdecl -i386 -norelay __CxxFrameHandler3(ptr ptr ptr ptr) __CxxFrameHandler
-@ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler
@ stdcall -i386 __CxxLongjmpUnwind(ptr)
-@ cdecl __CxxQueryExceptionSize()
+@ cdecl -i386 __CxxQueryExceptionSize()
# stub __CxxRegisterExceptionObject
# stub __CxxUnregisterExceptionObject
# stub __DestructExceptionObject
More information about the wine-cvs
mailing list