Alexandre Julliard pushed to branch master at wine / wine
Commits: 51262b76 by Martin Storsjö at 2025-12-03T14:43:03+01:00 ntdll/tests: Add a missing testcase for arm64 packed unwind info.
We previously lacked a testcase for RegI > 3, which uses a save_regp unwind opcode, which none of the existing packed unwind info tests contain.
- - - - - 569e0629 by Martin Storsjö at 2025-12-03T14:43:08+01:00 ntdll: Rewrite arm64 packed unwind info handling.
Instead of trying to handcraft all the cases for dealing with partial prologues, just synthesize the full unwind info for the function and execute that instead. The packed unwind info format always maps to a combination of regular unwind opcodes.
This is how the arm packed unwind info implementation works already; this makes it easier to reason about compared with the handwritten code for dealing with partial prologues.
The previous implementation is certainly faster and more efficient, but much harder to reason about, and to modify.
- - - - - 5e6baf9c by Martin Storsjö at 2025-12-03T14:43:08+01:00 ntdll: Handle arm64 packed unwind with H=1, RegI=RegF=0, CR!=1.
This case isn't mentioned in documentation, but this behaviour seems reasonable.
This case was fixed in the same way in llvm-readobj in https://github.com/llvm/llvm-project/pull/170294.
- - - - -
3 changed files:
- dlls/ntdll/tests/unwind.c - dlls/ntdll/unwind.c - tools/winedump/pe.c
View it on GitLab: https://gitlab.winehq.org/wine/wine/-/compare/4c589a9ac20b5251f6263708840e46...