Module: wine Branch: master Commit: 4fabaa6a284fc9409faff03d69f5b48efc8e8aa6 URL: https://gitlab.winehq.org/wine/wine/-/commit/4fabaa6a284fc9409faff03d69f5b48...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Sep 15 15:57:09 2023 +0200
ntdll: Fixup the pc address for breakpoint exceptions on ARM64.
---
dlls/ntdll/unix/signal_arm64.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c index 6dbc3fd5a59..4897b8e1824 100644 --- a/dlls/ntdll/unix/signal_arm64.c +++ b/dlls/ntdll/unix/signal_arm64.c @@ -1018,6 +1018,9 @@ static void setup_exception( ucontext_t *sigcontext, EXCEPTION_RECORD *rec ) return; }
+ /* fix up instruction pointer in context for EXCEPTION_BREAKPOINT */ + if (rec->ExceptionCode == EXCEPTION_BREAKPOINT) context.Pc -= 4; + stack = virtual_setup_exception( stack_ptr, (sizeof(*stack) + 15) & ~15, rec ); stack->rec = *rec; stack->context = context; @@ -1336,6 +1339,7 @@ static void trap_handler( int signal, siginfo_t *siginfo, void *sigcontext ) NtRaiseException( &rec, &ctx, FALSE ); return; } + PC_sig( context ) += 4; /* skip the brk instruction */ rec.ExceptionCode = EXCEPTION_BREAKPOINT; rec.NumberParameters = 1; break;