Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
881374ee
Commit
881374ee
authored
Mar 13, 2012
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msvcrt: Add entry points for the C++ exception functions on x86_64.
parent
b8467c5f
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
111 additions
and
34 deletions
+111
-34
msvcr100.spec
dlls/msvcr100/msvcr100.spec
+6
-6
msvcr70.spec
dlls/msvcr70/msvcr70.spec
+3
-3
msvcr71.spec
dlls/msvcr71/msvcr71.spec
+4
-4
msvcr80.spec
dlls/msvcr80/msvcr80.spec
+6
-6
msvcr90.spec
dlls/msvcr90/msvcr90.spec
+6
-6
except_x86_64.c
dlls/msvcrt/except_x86_64.c
+77
-0
msvcrt.spec
dlls/msvcrt/msvcrt.spec
+6
-6
msvcrt20.spec
dlls/msvcrt20/msvcrt20.spec
+1
-1
msvcrt40.spec
dlls/msvcrt40/msvcrt40.spec
+1
-1
msvcrtd.spec
dlls/msvcrtd/msvcrtd.spec
+1
-1
No files found.
dlls/msvcr100/msvcr100.spec
View file @
881374ee
...
...
@@ -354,18 +354,18 @@
@ stub __BuildCatchObject
@ stub __BuildCatchObjectHelper
@ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr) msvcrt.__C_specific_handler
@ cdecl __CppXcptFilter(long ptr) msvcrt.__CppXcptFilter
@ cdecl
-arch=i386,x86_64
__CppXcptFilter(long ptr) msvcrt.__CppXcptFilter
@ stub __CxxCallUnwindDelDtor
@ stub __CxxCallUnwindDtor
@ stub __CxxCallUnwindStdDelDtor
@ stub __CxxCallUnwindVecDtor
@ cdecl __CxxDetectRethrow(ptr) msvcrt.__CxxDetectRethrow
@ cdecl
-arch=i386,x86_64
__CxxDetectRethrow(ptr) msvcrt.__CxxDetectRethrow
@ stub __CxxExceptionFilter
@ cdecl -
i386
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ cdecl -
i386
-norelay __CxxFrameHandler2(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler2
@ cdecl -
i386
-norelay __CxxFrameHandler3(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler3
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler2(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler2
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler3(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler3
@ stdcall -i386 __CxxLongjmpUnwind(ptr) msvcrt.__CxxLongjmpUnwind
@ cdecl __CxxQueryExceptionSize() msvcrt.__CxxQueryExceptionSize
@ cdecl
-arch=i386,x86_64
__CxxQueryExceptionSize() msvcrt.__CxxQueryExceptionSize
@ stub __CxxRegisterExceptionObject
@ stub __CxxUnregisterExceptionObject
@ stub __DestructExceptionObject
...
...
dlls/msvcr70/msvcr70.spec
View file @
881374ee
...
...
@@ -118,11 +118,11 @@
@ cdecl _XcptFilter(long ptr) msvcrt._XcptFilter
@ stub __CxxCallUnwindDtor
@ stub __CxxCallUnwindVecDtor
@ cdecl __CxxDetectRethrow(ptr) msvcrt.__CxxDetectRethrow
@ cdecl
-arch=i386,x86_64
__CxxDetectRethrow(ptr) msvcrt.__CxxDetectRethrow
@ stub __CxxExceptionFilter
@ cdecl -
i386
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ stdcall -i386 __CxxLongjmpUnwind(ptr) msvcrt.__CxxLongjmpUnwind
@ cdecl __CxxQueryExceptionSize() msvcrt.__CxxQueryExceptionSize
@ cdecl
-arch=i386,x86_64
__CxxQueryExceptionSize() msvcrt.__CxxQueryExceptionSize
@ stub __CxxRegisterExceptionObject
@ stub __CxxUnregisterExceptionObject
@ stub __DestructExceptionObject
...
...
dlls/msvcr71/msvcr71.spec
View file @
881374ee
...
...
@@ -110,14 +110,14 @@
@ extern _HUGE msvcrt._HUGE
@ cdecl _Strftime(str long str ptr ptr) msvcrt._Strftime
@ cdecl _XcptFilter(long ptr) msvcrt._XcptFilter
@ cdecl __CppXcptFilter(long ptr) msvcrt.__CppXcptFilter
@ cdecl
-arch=i386,x86_64
__CppXcptFilter(long ptr) msvcrt.__CppXcptFilter
@ stub __CxxCallUnwindDtor
@ stub __CxxCallUnwindVecDtor
@ cdecl __CxxDetectRethrow(ptr) msvcrt.__CxxDetectRethrow
@ cdecl
-arch=i386,x86_64
__CxxDetectRethrow(ptr) msvcrt.__CxxDetectRethrow
@ stub __CxxExceptionFilter
@ cdecl -
i386
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ stdcall -i386 __CxxLongjmpUnwind(ptr) msvcrt.__CxxLongjmpUnwind
@ cdecl __CxxQueryExceptionSize() msvcrt.__CxxQueryExceptionSize
@ cdecl
-arch=i386,x86_64
__CxxQueryExceptionSize() msvcrt.__CxxQueryExceptionSize
@ stub __CxxRegisterExceptionObject
@ stub __CxxUnregisterExceptionObject
@ stub __DestructExceptionObject
...
...
dlls/msvcr80/msvcr80.spec
View file @
881374ee
...
...
@@ -165,18 +165,18 @@
@ stub __BuildCatchObject
@ stub __BuildCatchObjectHelper
@ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr) msvcrt.__C_specific_handler
@ cdecl __CppXcptFilter(long ptr) msvcrt.__CppXcptFilter
@ cdecl
-arch=i386,x86_64
__CppXcptFilter(long ptr) msvcrt.__CppXcptFilter
@ stub __CxxCallUnwindDelDtor
@ stub __CxxCallUnwindDtor
@ stub __CxxCallUnwindStdDelDtor
@ stub __CxxCallUnwindVecDtor
@ cdecl __CxxDetectRethrow(ptr) msvcrt.__CxxDetectRethrow
@ cdecl
-arch=i386,x86_64
__CxxDetectRethrow(ptr) msvcrt.__CxxDetectRethrow
@ stub __CxxExceptionFilter
@ cdecl -
i386
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ cdecl -
i386
-norelay __CxxFrameHandler2(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler2
@ cdecl -
i386
-norelay __CxxFrameHandler3(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler3
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler2(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler2
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler3(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler3
@ stdcall -i386 __CxxLongjmpUnwind(ptr) msvcrt.__CxxLongjmpUnwind
@ cdecl __CxxQueryExceptionSize() msvcrt.__CxxQueryExceptionSize
@ cdecl
-arch=i386,x86_64
__CxxQueryExceptionSize() msvcrt.__CxxQueryExceptionSize
@ stub __CxxRegisterExceptionObject
@ stub __CxxUnregisterExceptionObject
@ stub __DestructExceptionObject
...
...
dlls/msvcr90/msvcr90.spec
View file @
881374ee
...
...
@@ -162,18 +162,18 @@
@ stub __BuildCatchObject
@ stub __BuildCatchObjectHelper
@ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr) msvcrt.__C_specific_handler
@ cdecl __CppXcptFilter(long ptr) msvcrt.__CppXcptFilter
@ cdecl
-arch=i386,x86_64
__CppXcptFilter(long ptr) msvcrt.__CppXcptFilter
@ stub __CxxCallUnwindDelDtor
@ stub __CxxCallUnwindDtor
@ stub __CxxCallUnwindStdDelDtor
@ stub __CxxCallUnwindVecDtor
@ cdecl __CxxDetectRethrow(ptr) msvcrt.__CxxDetectRethrow
@ cdecl
-arch=i386,x86_64
__CxxDetectRethrow(ptr) msvcrt.__CxxDetectRethrow
@ stub __CxxExceptionFilter
@ cdecl -
i386
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ cdecl -
i386
-norelay __CxxFrameHandler2(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler2
@ cdecl -
i386
-norelay __CxxFrameHandler3(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler3
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler2(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler2
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler3(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler3
@ stdcall -i386 __CxxLongjmpUnwind(ptr) msvcrt.__CxxLongjmpUnwind
@ cdecl __CxxQueryExceptionSize() msvcrt.__CxxQueryExceptionSize
@ cdecl
-arch=i386,x86_64
__CxxQueryExceptionSize() msvcrt.__CxxQueryExceptionSize
@ stub __CxxRegisterExceptionObject
@ stub __CxxUnregisterExceptionObject
@ stub __DestructExceptionObject
...
...
dlls/msvcrt/except_x86_64.c
View file @
881374ee
...
...
@@ -39,6 +39,83 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
seh
);
struct
_DISPATCHER_CONTEXT
;
typedef
LONG
(
WINAPI
*
PC_LANGUAGE_EXCEPTION_HANDLER
)(
EXCEPTION_POINTERS
*
ptrs
,
ULONG64
frame
);
typedef
EXCEPTION_DISPOSITION
(
WINAPI
*
PEXCEPTION_ROUTINE
)(
EXCEPTION_RECORD
*
rec
,
ULONG64
frame
,
CONTEXT
*
context
,
struct
_DISPATCHER_CONTEXT
*
dispatch
);
typedef
struct
_DISPATCHER_CONTEXT
{
ULONG64
ControlPc
;
ULONG64
ImageBase
;
PRUNTIME_FUNCTION
FunctionEntry
;
ULONG64
EstablisherFrame
;
ULONG64
TargetIp
;
PCONTEXT
ContextRecord
;
PEXCEPTION_ROUTINE
LanguageHandler
;
PVOID
HandlerData
;
PUNWIND_HISTORY_TABLE
HistoryTable
;
ULONG
ScopeIndex
;
}
DISPATCHER_CONTEXT
;
/*********************************************************************
* __CxxFrameHandler (MSVCRT.@)
*/
EXCEPTION_DISPOSITION
CDECL
__CxxFrameHandler
(
EXCEPTION_RECORD
*
rec
,
ULONG64
frame
,
CONTEXT
*
context
,
DISPATCHER_CONTEXT
*
dispatch
)
{
FIXME
(
"%p %lx %p %p: not implemented
\n
"
,
rec
,
frame
,
context
,
dispatch
);
return
ExceptionContinueSearch
;
}
/*********************************************************************
* __CppXcptFilter (MSVCRT.@)
*/
int
CDECL
__CppXcptFilter
(
NTSTATUS
ex
,
PEXCEPTION_POINTERS
ptr
)
{
/* only filter c++ exceptions */
if
(
ex
!=
CXX_EXCEPTION
)
return
EXCEPTION_CONTINUE_SEARCH
;
return
_XcptFilter
(
ex
,
ptr
);
}
/*********************************************************************
* __CxxDetectRethrow (MSVCRT.@)
*/
BOOL
CDECL
__CxxDetectRethrow
(
PEXCEPTION_POINTERS
ptrs
)
{
PEXCEPTION_RECORD
rec
;
if
(
!
ptrs
)
return
FALSE
;
rec
=
ptrs
->
ExceptionRecord
;
if
(
rec
->
ExceptionCode
==
CXX_EXCEPTION
&&
rec
->
NumberParameters
==
3
&&
rec
->
ExceptionInformation
[
0
]
==
CXX_FRAME_MAGIC_VC6
&&
rec
->
ExceptionInformation
[
2
])
{
ptrs
->
ExceptionRecord
=
msvcrt_get_thread_data
()
->
exc_record
;
return
TRUE
;
}
return
(
msvcrt_get_thread_data
()
->
exc_record
==
rec
);
}
/*********************************************************************
* __CxxQueryExceptionSize (MSVCRT.@)
*/
unsigned
int
CDECL
__CxxQueryExceptionSize
(
void
)
{
return
sizeof
(
cxx_exception_type
);
}
/*******************************************************************
* _setjmp (MSVCRT.@)
...
...
dlls/msvcrt/msvcrt.spec
View file @
881374ee
...
...
@@ -146,17 +146,17 @@
@ cdecl _Strftime(str long str ptr ptr)
@ cdecl _XcptFilter(long ptr)
@ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler
@ cdecl -
i386
__CppXcptFilter(long ptr)
@ cdecl -
arch=i386,x86_64
__CppXcptFilter(long ptr)
# stub __CxxCallUnwindDelDtor
# stub __CxxCallUnwindDtor
# stub __CxxCallUnwindVecDtor
@ cdecl -
i386
__CxxDetectRethrow(ptr)
@ cdecl -
arch=i386,x86_64
__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
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler(ptr ptr ptr ptr)
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler2(ptr ptr ptr ptr) __CxxFrameHandler
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler3(ptr ptr ptr ptr) __CxxFrameHandler
@ stdcall -i386 __CxxLongjmpUnwind(ptr)
@ cdecl -
i386
__CxxQueryExceptionSize()
@ cdecl -
arch=i386,x86_64
__CxxQueryExceptionSize()
# stub __CxxRegisterExceptionObject
# stub __CxxUnregisterExceptionObject
# stub __DestructExceptionObject
...
...
dlls/msvcrt20/msvcrt20.spec
View file @
881374ee
...
...
@@ -793,7 +793,7 @@
@ stdcall _CxxThrowException(long long) msvcrt._CxxThrowException
@ extern _HUGE msvcrt._HUGE
@ cdecl _XcptFilter(long ptr) msvcrt._XcptFilter
@ cdecl -
i386
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ stdcall -i386 __CxxLongjmpUnwind(ptr) msvcrt.__CxxLongjmpUnwind
@ cdecl __STRINGTOLD(ptr ptr str long) msvcrt.__STRINGTOLD
@ extern __argc msvcrt.__argc
...
...
dlls/msvcrt40/msvcrt40.spec
View file @
881374ee
...
...
@@ -868,7 +868,7 @@
@ cdecl -i386 -norelay _EH_prolog() msvcrt._EH_prolog
@ extern _HUGE msvcrt._HUGE
@ cdecl _XcptFilter(long ptr) msvcrt._XcptFilter
@ cdecl -
i386
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ stdcall -i386 __CxxLongjmpUnwind(ptr) msvcrt.__CxxLongjmpUnwind
@ cdecl __RTCastToVoid(ptr) msvcrt.__RTCastToVoid
@ cdecl __RTDynamicCast(ptr long ptr ptr long) msvcrt.__RTDynamicCast
...
...
dlls/msvcrtd/msvcrtd.spec
View file @
881374ee
...
...
@@ -124,7 +124,7 @@
@ extern _HUGE msvcrt._HUGE
@ cdecl _Strftime(str long str ptr ptr) msvcrt._Strftime
@ cdecl _XcptFilter(long ptr) msvcrt._XcptFilter
@ cdecl -
i386
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ cdecl -
arch=i386,x86_64
-norelay __CxxFrameHandler(ptr ptr ptr ptr) msvcrt.__CxxFrameHandler
@ stdcall -i386 __CxxLongjmpUnwind(ptr) msvcrt.__CxxLongjmpUnwind
@ cdecl __RTCastToVoid(ptr) msvcrt.__RTCastToVoid
@ cdecl __RTDynamicCast(ptr long ptr ptr long) msvcrt.__RTDynamicCast
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment