Martin Storsjo : ntdll: Fix more corner cases for arm64 packed info unwinding.

Alexandre Julliard julliard at winehq.org
Mon Sep 7 16:12:55 CDT 2020


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

Author: Martin Storsjo <martin at martin.st>
Date:   Mon Sep  7 13:14:57 2020 +0300

ntdll: Fix more corner cases for arm64 packed info unwinding.

Make sure to restore sp from fp for CR == 3.

Fix unwinding of partial prologues/epilogues - the previous logic
had an off-by-one for the pos/skip handling; fix a few more
corner cases with odd number of saved registers.

Functions with the H flag set (saving x0-x7 on the stack) should
be considred having 4 nops (for the instructions saving the
registers) in the prologue for unwind purposes. When unwinding
through a partial epilogue, the same 4 nops should also be
considered to be there (even though no sane epilogue would restore
the registers there) based on how windows handles partial epilogue
unwinding in those cases.

Uncomment prologue/epilogue cases in an existing test and add
tests for many more cases.

Signed-off-by: Martin Storsjo <martin at martin.st>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/signal_arm64.c    |  41 +++---
 dlls/ntdll/tests/exception.c | 322 ++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 340 insertions(+), 23 deletions(-)

Diff:   https://source.winehq.org/git/wine.git/?a=commitdiff;h=3395ee3631fe7088d33d5fd53f0e788741157e6a



More information about the wine-cvs mailing list