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