include: Make the Wine exception handlers cdecl.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
c0a54996e2
commit
60df3b14b5
|
@ -2580,8 +2580,8 @@ static RUNTIME_FUNCTION *lookup_function_info( ULONG64 pc, ULONG64 *base, LDR_MO
|
||||||
return func;
|
return func;
|
||||||
}
|
}
|
||||||
|
|
||||||
static DWORD nested_exception_handler( EXCEPTION_RECORD *rec, EXCEPTION_REGISTRATION_RECORD *frame,
|
static DWORD __cdecl nested_exception_handler( EXCEPTION_RECORD *rec, EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context, EXCEPTION_REGISTRATION_RECORD **dispatcher )
|
CONTEXT *context, EXCEPTION_REGISTRATION_RECORD **dispatcher )
|
||||||
{
|
{
|
||||||
if (rec->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND)) return ExceptionContinueSearch;
|
if (rec->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND)) return ExceptionContinueSearch;
|
||||||
|
|
||||||
|
@ -3936,8 +3936,8 @@ struct unwind_exception_frame
|
||||||
*
|
*
|
||||||
* Handler for exceptions happening while calling an unwind handler.
|
* Handler for exceptions happening while calling an unwind handler.
|
||||||
*/
|
*/
|
||||||
static DWORD unwind_exception_handler( EXCEPTION_RECORD *rec, EXCEPTION_REGISTRATION_RECORD *frame,
|
static DWORD __cdecl unwind_exception_handler( EXCEPTION_RECORD *rec, EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context, EXCEPTION_REGISTRATION_RECORD **dispatcher )
|
CONTEXT *context, EXCEPTION_REGISTRATION_RECORD **dispatcher )
|
||||||
{
|
{
|
||||||
struct unwind_exception_frame *unwind_frame = (struct unwind_exception_frame *)frame;
|
struct unwind_exception_frame *unwind_frame = (struct unwind_exception_frame *)frame;
|
||||||
DISPATCHER_CONTEXT *dispatch = (DISPATCHER_CONTEXT *)dispatcher;
|
DISPATCHER_CONTEXT *dispatch = (DISPATCHER_CONTEXT *)dispatcher;
|
||||||
|
|
|
@ -86,10 +86,10 @@ static void DECLSPEC_NORETURN unwind_frame( EXCEPTION_RECORD *record,
|
||||||
__wine_rtl_unwind( frame, record, unwind_target );
|
__wine_rtl_unwind( frame, record, unwind_target );
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD __wine_exception_handler( EXCEPTION_RECORD *record,
|
DWORD __cdecl __wine_exception_handler( EXCEPTION_RECORD *record,
|
||||||
EXCEPTION_REGISTRATION_RECORD *frame,
|
EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context,
|
CONTEXT *context,
|
||||||
EXCEPTION_REGISTRATION_RECORD **pdispatcher )
|
EXCEPTION_REGISTRATION_RECORD **pdispatcher )
|
||||||
{
|
{
|
||||||
__WINE_FRAME *wine_frame = (__WINE_FRAME *)frame;
|
__WINE_FRAME *wine_frame = (__WINE_FRAME *)frame;
|
||||||
EXCEPTION_POINTERS ptrs;
|
EXCEPTION_POINTERS ptrs;
|
||||||
|
@ -111,10 +111,10 @@ DWORD __wine_exception_handler( EXCEPTION_RECORD *record,
|
||||||
unwind_frame( record, frame );
|
unwind_frame( record, frame );
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD __wine_exception_ctx_handler( EXCEPTION_RECORD *record,
|
DWORD __cdecl __wine_exception_ctx_handler( EXCEPTION_RECORD *record,
|
||||||
EXCEPTION_REGISTRATION_RECORD *frame,
|
EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context,
|
CONTEXT *context,
|
||||||
EXCEPTION_REGISTRATION_RECORD **pdispatcher )
|
EXCEPTION_REGISTRATION_RECORD **pdispatcher )
|
||||||
{
|
{
|
||||||
__WINE_FRAME *wine_frame = (__WINE_FRAME *)frame;
|
__WINE_FRAME *wine_frame = (__WINE_FRAME *)frame;
|
||||||
EXCEPTION_POINTERS ptrs;
|
EXCEPTION_POINTERS ptrs;
|
||||||
|
@ -136,10 +136,10 @@ DWORD __wine_exception_ctx_handler( EXCEPTION_RECORD *record,
|
||||||
unwind_frame( record, frame );
|
unwind_frame( record, frame );
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD __wine_exception_handler_page_fault( EXCEPTION_RECORD *record,
|
DWORD __cdecl __wine_exception_handler_page_fault( EXCEPTION_RECORD *record,
|
||||||
EXCEPTION_REGISTRATION_RECORD *frame,
|
EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context,
|
CONTEXT *context,
|
||||||
EXCEPTION_REGISTRATION_RECORD **pdispatcher )
|
EXCEPTION_REGISTRATION_RECORD **pdispatcher )
|
||||||
{
|
{
|
||||||
if (record->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND | EH_NESTED_CALL))
|
if (record->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND | EH_NESTED_CALL))
|
||||||
return ExceptionContinueSearch;
|
return ExceptionContinueSearch;
|
||||||
|
@ -148,20 +148,20 @@ DWORD __wine_exception_handler_page_fault( EXCEPTION_RECORD *record,
|
||||||
unwind_frame( record, frame );
|
unwind_frame( record, frame );
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD __wine_exception_handler_all( EXCEPTION_RECORD *record,
|
DWORD __cdecl __wine_exception_handler_all( EXCEPTION_RECORD *record,
|
||||||
EXCEPTION_REGISTRATION_RECORD *frame,
|
EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context,
|
CONTEXT *context,
|
||||||
EXCEPTION_REGISTRATION_RECORD **pdispatcher )
|
EXCEPTION_REGISTRATION_RECORD **pdispatcher )
|
||||||
{
|
{
|
||||||
if (record->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND | EH_NESTED_CALL))
|
if (record->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND | EH_NESTED_CALL))
|
||||||
return ExceptionContinueSearch;
|
return ExceptionContinueSearch;
|
||||||
unwind_frame( record, frame );
|
unwind_frame( record, frame );
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD __wine_finally_handler( EXCEPTION_RECORD *record,
|
DWORD __cdecl __wine_finally_handler( EXCEPTION_RECORD *record,
|
||||||
EXCEPTION_REGISTRATION_RECORD *frame,
|
EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context,
|
CONTEXT *context,
|
||||||
EXCEPTION_REGISTRATION_RECORD **pdispatcher )
|
EXCEPTION_REGISTRATION_RECORD **pdispatcher )
|
||||||
{
|
{
|
||||||
if (record->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND))
|
if (record->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND))
|
||||||
{
|
{
|
||||||
|
@ -171,10 +171,10 @@ DWORD __wine_finally_handler( EXCEPTION_RECORD *record,
|
||||||
return ExceptionContinueSearch;
|
return ExceptionContinueSearch;
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD __wine_finally_ctx_handler( EXCEPTION_RECORD *record,
|
DWORD __cdecl __wine_finally_ctx_handler( EXCEPTION_RECORD *record,
|
||||||
EXCEPTION_REGISTRATION_RECORD *frame,
|
EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context,
|
CONTEXT *context,
|
||||||
EXCEPTION_REGISTRATION_RECORD **pdispatcher )
|
EXCEPTION_REGISTRATION_RECORD **pdispatcher )
|
||||||
{
|
{
|
||||||
if (record->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND))
|
if (record->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND))
|
||||||
{
|
{
|
||||||
|
|
|
@ -94,36 +94,41 @@ extern "C" {
|
||||||
|
|
||||||
#if defined(__MINGW32__) || defined(__CYGWIN__) || defined(__WINE_SETJMP_H)
|
#if defined(__MINGW32__) || defined(__CYGWIN__) || defined(__WINE_SETJMP_H)
|
||||||
#define sigjmp_buf jmp_buf
|
#define sigjmp_buf jmp_buf
|
||||||
static inline int sigsetjmp( sigjmp_buf buf, int sigs ) { return setjmp( buf ); }
|
|
||||||
static inline void siglongjmp( sigjmp_buf buf, int val ) { longjmp( buf, val ); }
|
static inline void siglongjmp( sigjmp_buf buf, int val ) { longjmp( buf, val ); }
|
||||||
|
# ifdef _WIN64
|
||||||
|
int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) _setjmpex(jmp_buf,void*);
|
||||||
|
# define sigsetjmp(buf,sigs) _setjmpex(buf,CONTAINING_RECORD(buf,__WINE_FRAME,jmp))
|
||||||
|
# else
|
||||||
|
# define sigsetjmp(buf,sigs) setjmp(buf)
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern void __cdecl __wine_rtl_unwind( EXCEPTION_REGISTRATION_RECORD* frame, EXCEPTION_RECORD *record,
|
extern void __cdecl __wine_rtl_unwind( EXCEPTION_REGISTRATION_RECORD* frame, EXCEPTION_RECORD *record,
|
||||||
void (*target)(void) ) DECLSPEC_HIDDEN DECLSPEC_NORETURN;
|
void (*target)(void) ) DECLSPEC_HIDDEN DECLSPEC_NORETURN;
|
||||||
extern DWORD __wine_exception_handler( EXCEPTION_RECORD *record,
|
extern DWORD __cdecl __wine_exception_handler( EXCEPTION_RECORD *record,
|
||||||
EXCEPTION_REGISTRATION_RECORD *frame,
|
EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context,
|
CONTEXT *context,
|
||||||
EXCEPTION_REGISTRATION_RECORD **pdispatcher ) DECLSPEC_HIDDEN;
|
EXCEPTION_REGISTRATION_RECORD **pdispatcher ) DECLSPEC_HIDDEN;
|
||||||
extern DWORD __wine_exception_ctx_handler( EXCEPTION_RECORD *record,
|
extern DWORD __cdecl __wine_exception_ctx_handler( EXCEPTION_RECORD *record,
|
||||||
EXCEPTION_REGISTRATION_RECORD *frame,
|
EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context,
|
CONTEXT *context,
|
||||||
EXCEPTION_REGISTRATION_RECORD **pdispatcher ) DECLSPEC_HIDDEN;
|
EXCEPTION_REGISTRATION_RECORD **pdispatcher ) DECLSPEC_HIDDEN;
|
||||||
extern DWORD __wine_exception_handler_page_fault( EXCEPTION_RECORD *record,
|
extern DWORD __cdecl __wine_exception_handler_page_fault( EXCEPTION_RECORD *record,
|
||||||
EXCEPTION_REGISTRATION_RECORD *frame,
|
EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context,
|
CONTEXT *context,
|
||||||
EXCEPTION_REGISTRATION_RECORD **pdispatcher ) DECLSPEC_HIDDEN;
|
EXCEPTION_REGISTRATION_RECORD **pdispatcher ) DECLSPEC_HIDDEN;
|
||||||
extern DWORD __wine_exception_handler_all( EXCEPTION_RECORD *record,
|
extern DWORD __cdecl __wine_exception_handler_all( EXCEPTION_RECORD *record,
|
||||||
EXCEPTION_REGISTRATION_RECORD *frame,
|
EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context,
|
CONTEXT *context,
|
||||||
EXCEPTION_REGISTRATION_RECORD **pdispatcher ) DECLSPEC_HIDDEN;
|
EXCEPTION_REGISTRATION_RECORD **pdispatcher ) DECLSPEC_HIDDEN;
|
||||||
extern DWORD __wine_finally_handler( EXCEPTION_RECORD *record,
|
extern DWORD __cdecl __wine_finally_handler( EXCEPTION_RECORD *record,
|
||||||
EXCEPTION_REGISTRATION_RECORD *frame,
|
EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context,
|
CONTEXT *context,
|
||||||
EXCEPTION_REGISTRATION_RECORD **pdispatcher ) DECLSPEC_HIDDEN;
|
EXCEPTION_REGISTRATION_RECORD **pdispatcher ) DECLSPEC_HIDDEN;
|
||||||
extern DWORD __wine_finally_ctx_handler( EXCEPTION_RECORD *record,
|
extern DWORD __cdecl __wine_finally_ctx_handler( EXCEPTION_RECORD *record,
|
||||||
EXCEPTION_REGISTRATION_RECORD *frame,
|
EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
CONTEXT *context,
|
CONTEXT *context,
|
||||||
EXCEPTION_REGISTRATION_RECORD **pdispatcher ) DECLSPEC_HIDDEN;
|
EXCEPTION_REGISTRATION_RECORD **pdispatcher ) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
#define __TRY \
|
#define __TRY \
|
||||||
do { __WINE_FRAME __f; \
|
do { __WINE_FRAME __f; \
|
||||||
|
|
|
@ -2467,8 +2467,8 @@ typedef struct _EXCEPTION_POINTERS
|
||||||
|
|
||||||
struct _EXCEPTION_REGISTRATION_RECORD;
|
struct _EXCEPTION_REGISTRATION_RECORD;
|
||||||
|
|
||||||
typedef DWORD (*PEXCEPTION_HANDLER)(PEXCEPTION_RECORD,struct _EXCEPTION_REGISTRATION_RECORD*,
|
typedef DWORD (CDECL *PEXCEPTION_HANDLER)(PEXCEPTION_RECORD,struct _EXCEPTION_REGISTRATION_RECORD*,
|
||||||
PCONTEXT,struct _EXCEPTION_REGISTRATION_RECORD **);
|
PCONTEXT,struct _EXCEPTION_REGISTRATION_RECORD **);
|
||||||
|
|
||||||
typedef struct _EXCEPTION_REGISTRATION_RECORD
|
typedef struct _EXCEPTION_REGISTRATION_RECORD
|
||||||
{
|
{
|
||||||
|
|
|
@ -5064,10 +5064,10 @@ void write_exceptions( FILE *file )
|
||||||
fprintf( file, " siglongjmp( exc_frame->jmp, 1 );\n");
|
fprintf( file, " siglongjmp( exc_frame->jmp, 1 );\n");
|
||||||
fprintf( file, "}\n");
|
fprintf( file, "}\n");
|
||||||
fprintf( file, "\n");
|
fprintf( file, "\n");
|
||||||
fprintf( file, "static DWORD __widl_exception_handler( EXCEPTION_RECORD *record,\n");
|
fprintf( file, "static DWORD __cdecl __widl_exception_handler( EXCEPTION_RECORD *record,\n");
|
||||||
fprintf( file, " EXCEPTION_REGISTRATION_RECORD *frame,\n");
|
fprintf( file, " EXCEPTION_REGISTRATION_RECORD *frame,\n");
|
||||||
fprintf( file, " CONTEXT *context,\n");
|
fprintf( file, " CONTEXT *context,\n");
|
||||||
fprintf( file, " EXCEPTION_REGISTRATION_RECORD **pdispatcher )\n");
|
fprintf( file, " EXCEPTION_REGISTRATION_RECORD **pdispatcher )\n");
|
||||||
fprintf( file, "{\n");
|
fprintf( file, "{\n");
|
||||||
fprintf( file, " struct __exception_frame *exc_frame = (struct __exception_frame *)frame;\n");
|
fprintf( file, " struct __exception_frame *exc_frame = (struct __exception_frame *)frame;\n");
|
||||||
fprintf( file, "\n");
|
fprintf( file, "\n");
|
||||||
|
|
Loading…
Reference in New Issue