Module: wine Branch: master Commit: adb4e74b479d5406454dffa17fe908742306ac6e URL: https://source.winehq.org/git/wine.git/?a=commit;h=adb4e74b479d5406454dffa17...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Jul 15 10:34:47 2020 +0200
ntdll: Send debug event before pushing exception data on ARM.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/unix/signal_arm.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c index 1e8abb494c..34463309de 100644 --- a/dlls/ntdll/unix/signal_arm.c +++ b/dlls/ntdll/unix/signal_arm.c @@ -529,12 +529,24 @@ static void setup_exception( ucontext_t *sigcontext, EXCEPTION_RECORD *rec ) CONTEXT context; EXCEPTION_RECORD rec; } *stack; + void *stack_ptr = (void *)(SP_sig(sigcontext) & ~3); + CONTEXT context; + NTSTATUS status;
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->rec = *rec; - save_context( &stack->context, sigcontext ); + stack->context = context;
/* now modify the sigcontext to return to the raise function */ SP_sig(sigcontext) = (DWORD)stack;