Hi,

> Ah, I see. But we could record delta here as well; just use 62 bits for it.

Actually if I understand correctly how the altstack works, you won't need
even the 62-bit offset. I think the sigcontext sits on the altstack, right,
and it's the restored RBP/RSP value deltas that are the real problem?

If so I think you can just record into cfa_reg_offset the delta to the
sigcontext_addr as the code does now, but leave {rsp,rbp}_cfa_offset 0.
Then we change the registers to be restored using UC_MCONTEXT_REGS_*,
as you did, not using the delta expressions.

Effectively, we'll use the DWARF info for CFA expression, but assume that
registers actually do come from the ucontext_t. For extra security we can
verify the DWARF locations match what we expect tdep_stash_frame(), maybe
under UNW_DEBUG.

How does that sound to you?

Regards,
Lassi

_______________________________________________
Libunwind-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to