Martin Storsjö : ntdll: Take ControlPcIsUnwound into account on arm64 too.

Alexandre Julliard julliard at winehq.org
Tue Jun 7 15:41:22 CDT 2022


Module: wine
Branch: master
Commit: 94f7f52dac5fbc3b1abe7f38cabf38853b7af0f1
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=94f7f52dac5fbc3b1abe7f38cabf38853b7af0f1

Author: Martin Storsjö <martin at martin.st>
Date:   Tue Jun  7 14:12:46 2022 +0300

ntdll: Take ControlPcIsUnwound into account on arm64 too.

This is the same modification as the previous patch, applied on arm64.
It doesn't change the outcome for any of my tests though.

Signed-off-by: Martin Storsjö <martin at martin.st>

---

 dlls/ntdll/signal_arm64.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c
index 034c78f6b4d..fba0da48a16 100644
--- a/dlls/ntdll/signal_arm64.c
+++ b/dlls/ntdll/signal_arm64.c
@@ -165,6 +165,7 @@ static NTSTATUS virtual_unwind( ULONG type, DISPATCHER_CONTEXT *dispatch, CONTEX
 {
     LDR_DATA_TABLE_ENTRY *module;
     NTSTATUS status;
+    DWORD64 pc;
 
     dispatch->ImageBase        = 0;
     dispatch->ScopeIndex       = 0;
@@ -175,14 +176,14 @@ static NTSTATUS virtual_unwind( ULONG type, DISPATCHER_CONTEXT *dispatch, CONTEX
      * signal frame.
      */
     dispatch->ControlPcIsUnwound = (context->ContextFlags & CONTEXT_UNWOUND_TO_CALL) != 0;
+    pc = context->Pc - (dispatch->ControlPcIsUnwound ? 4 : 0);
 
     /* first look for PE exception information */
 
-    if ((dispatch->FunctionEntry = lookup_function_info(
-             context->Pc - (dispatch->ControlPcIsUnwound ? 4 : 0),
+    if ((dispatch->FunctionEntry = lookup_function_info(pc,
              &dispatch->ImageBase, &module )))
     {
-        dispatch->LanguageHandler = RtlVirtualUnwind( type, dispatch->ImageBase, context->Pc,
+        dispatch->LanguageHandler = RtlVirtualUnwind( type, dispatch->ImageBase, pc,
                                                       dispatch->FunctionEntry, context,
                                                       &dispatch->HandlerData, &dispatch->EstablisherFrame,
                                                       NULL );




More information about the wine-cvs mailing list