Module: wine
Branch: master
Commit: 3395ee3631fe7088d33d5fd53f0e788741157e6a
URL: https://source.winehq.org/git/wine.git/?a=commit;h=3395ee3631fe7088d33d5fd5…
Author: Martin Storsjo <martin(a)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(a)martin.st>
Signed-off-by: Alexandre Julliard <julliard(a)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=3395ee3631fe7088d33d…