ntdll: Send debug event before pushing exception data on ARM.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
1e4865ffcf
commit
adb4e74b47
|
@ -529,12 +529,24 @@ static void setup_exception( ucontext_t *sigcontext, EXCEPTION_RECORD *rec )
|
||||||
CONTEXT context;
|
CONTEXT context;
|
||||||
EXCEPTION_RECORD rec;
|
EXCEPTION_RECORD rec;
|
||||||
} *stack;
|
} *stack;
|
||||||
|
|
||||||
void *stack_ptr = (void *)(SP_sig(sigcontext) & ~3);
|
void *stack_ptr = (void *)(SP_sig(sigcontext) & ~3);
|
||||||
|
CONTEXT context;
|
||||||
|
NTSTATUS status;
|
||||||
|
|
||||||
rec->ExceptionAddress = (void *)PC_sig(sigcontext);
|
rec->ExceptionAddress = (void *)PC_sig(sigcontext);
|
||||||
|
save_context( &context, sigcontext );
|
||||||
|
|
||||||
|
status = send_debug_event( rec, &context, TRUE );
|
||||||
|
if (status == DBG_CONTINUE || status == DBG_EXCEPTION_HANDLED)
|
||||||
|
{
|
||||||
|
restore_context( &context, sigcontext );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
stack = virtual_setup_exception( stack_ptr, sizeof(*stack), rec );
|
stack = virtual_setup_exception( stack_ptr, sizeof(*stack), rec );
|
||||||
stack->rec = *rec;
|
stack->rec = *rec;
|
||||||
save_context( &stack->context, sigcontext );
|
stack->context = context;
|
||||||
|
|
||||||
/* now modify the sigcontext to return to the raise function */
|
/* now modify the sigcontext to return to the raise function */
|
||||||
SP_sig(sigcontext) = (DWORD)stack;
|
SP_sig(sigcontext) = (DWORD)stack;
|
||||||
|
|
Loading…
Reference in New Issue