Alexandre Julliard : ntdll: Remove no longer needed function argument from setup_raise_exception() on i386.
Alexandre Julliard
julliard at winehq.org
Thu Sep 12 16:28:57 CDT 2019
Module: wine
Branch: master
Commit: d9ec920fd9234a1cc257264bae5a5a41d3a760b2
URL: https://source.winehq.org/git/wine.git/?a=commit;h=d9ec920fd9234a1cc257264bae5a5a41d3a760b2
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Sep 12 21:02:29 2019 +0200
ntdll: Remove no longer needed function argument from setup_raise_exception() on i386.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/signal_i386.c | 56 +++++++++++++++++++++++-------------------------
1 file changed, 27 insertions(+), 29 deletions(-)
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index 11ef7c393a..8876790195 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -422,9 +422,9 @@ typedef struct trapframe ucontext_t;
/* stack layout when calling an exception raise function */
struct stack_layout
{
- void *ret_addr; /* return address from raise_func */
- EXCEPTION_RECORD *rec_ptr; /* first arg for raise_func */
- CONTEXT *context_ptr; /* second arg for raise_func */
+ void *ret_addr; /* return address from raise_generic_exception */
+ EXCEPTION_RECORD *rec_ptr; /* first arg for raise_generic_exception */
+ CONTEXT *context_ptr; /* second arg for raise_generic_exception */
CONTEXT context;
EXCEPTION_RECORD rec;
DWORD ebp;
@@ -804,8 +804,6 @@ static int solaris_sigaction( int sig, const struct sigaction *new, struct sigac
#endif
-typedef void (WINAPI *raise_func)( EXCEPTION_RECORD *rec, CONTEXT *context );
-
extern void clear_alignment_flag(void);
__ASM_GLOBAL_FUNC( clear_alignment_flag,
"pushfl\n\t"
@@ -1852,15 +1850,29 @@ static struct stack_layout *setup_exception( ucontext_t *sigcontext )
}
+/**********************************************************************
+ * raise_generic_exception
+ *
+ * Generic raise function for exceptions that don't need special treatment.
+ */
+static void WINAPI raise_generic_exception( EXCEPTION_RECORD *rec, CONTEXT *context )
+{
+ NTSTATUS status;
+
+ status = NtRaiseException( rec, context, TRUE );
+ raise_status( status, rec );
+}
+
+
/***********************************************************************
* setup_raise_exception
*
* Change context to setup a call to a raise exception function.
*/
-static void setup_raise_exception( ucontext_t *sigcontext, struct stack_layout *stack, raise_func func )
+static void setup_raise_exception( ucontext_t *sigcontext, struct stack_layout *stack )
{
ESP_sig(sigcontext) = (DWORD)stack;
- EIP_sig(sigcontext) = (DWORD)func;
+ EIP_sig(sigcontext) = (DWORD)raise_generic_exception;
/* clear single-step, direction, and align check flag */
EFL_sig(sigcontext) &= ~(0x100|0x400|0x40000);
CS_sig(sigcontext) = wine_get_cs();
@@ -1869,8 +1881,8 @@ static void setup_raise_exception( ucontext_t *sigcontext, struct stack_layout *
FS_sig(sigcontext) = wine_get_fs();
GS_sig(sigcontext) = wine_get_gs();
SS_sig(sigcontext) = wine_get_ss();
- stack->ret_addr = (void *)0xdeadbabe; /* raise_func must not return */
- stack->rec_ptr = &stack->rec; /* arguments for raise_func */
+ stack->ret_addr = (void *)0xdeadbabe; /* raise_generic_exception must not return */
+ stack->rec_ptr = &stack->rec; /* arguments for raise_generic_exception */
stack->context_ptr = &stack->context;
}
@@ -1900,20 +1912,6 @@ static inline DWORD get_fpu_code( const CONTEXT *context )
}
-/**********************************************************************
- * raise_generic_exception
- *
- * Generic raise function for exceptions that don't need special treatment.
- */
-static void WINAPI raise_generic_exception( EXCEPTION_RECORD *rec, CONTEXT *context )
-{
- NTSTATUS status;
-
- status = NtRaiseException( rec, context, TRUE );
- raise_status( status, rec );
-}
-
-
/***********************************************************************
* handle_interrupt
*
@@ -1945,7 +1943,7 @@ static BOOL handle_interrupt( unsigned int interrupt, ucontext_t *sigcontext, st
stack->rec.ExceptionInformation[0] = stack->context.Eax;
stack->rec.ExceptionInformation[1] = stack->context.Ecx;
stack->rec.ExceptionInformation[2] = stack->context.Edx;
- setup_raise_exception( sigcontext, stack, raise_generic_exception );
+ setup_raise_exception( sigcontext, stack );
return TRUE;
default:
return FALSE;
@@ -2068,7 +2066,7 @@ static void segv_handler( int signal, siginfo_t *siginfo, void *sigcontext )
break;
}
done:
- setup_raise_exception( context, stack, raise_generic_exception );
+ setup_raise_exception( context, stack );
}
@@ -2110,7 +2108,7 @@ static void trap_handler( int signal, siginfo_t *siginfo, void *sigcontext )
stack->rec.ExceptionInformation[2] = 0; /* FIXME */
break;
}
- setup_raise_exception( context, stack, raise_generic_exception );
+ setup_raise_exception( context, stack );
}
@@ -2156,7 +2154,7 @@ static void fpe_handler( int signal, siginfo_t *siginfo, void *sigcontext )
break;
}
- setup_raise_exception( context, stack, raise_generic_exception );
+ setup_raise_exception( context, stack );
}
@@ -2175,7 +2173,7 @@ static void int_handler( int signal, siginfo_t *siginfo, void *sigcontext )
{
struct stack_layout *stack = setup_exception( sigcontext );
stack->rec.ExceptionCode = CONTROL_C_EXIT;
- setup_raise_exception( sigcontext, stack, raise_generic_exception );
+ setup_raise_exception( sigcontext, stack );
}
}
@@ -2189,7 +2187,7 @@ static void abrt_handler( int signal, siginfo_t *siginfo, void *sigcontext )
struct stack_layout *stack = setup_exception( sigcontext );
stack->rec.ExceptionCode = EXCEPTION_WINE_ASSERTION;
stack->rec.ExceptionFlags = EH_NONCONTINUABLE;
- setup_raise_exception( sigcontext, stack, raise_generic_exception );
+ setup_raise_exception( sigcontext, stack );
}
More information about the wine-cvs
mailing list