-
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.