[Lldb-commits] [PATCH] D153043: [lldb] Fix handling of cfi_restore in the unwinder

Jason Molenda via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Jun 15 16:13:34 PDT 2023


jasonmolenda accepted this revision.
jasonmolenda added a comment.
This revision is now accepted and ready to land.

I can see why the existing code is written as it is, given the dwarf spec for DW_CFA_restore: "The DW_CFA_restore instruction takes a single operand (encoded with the opcode) that represents a register number. The required action is to change the rule for the indicated register to the rule assigned it by the `initial_instructions` in the CIE".  The mistake in the current code is that any register not mentioned in the CIE state (the unwind rules at Row 0 in this UnwindPlan) is the unmodified value of the caller.

This patch is correct; the register was not mentioned in the CIE so should say there is no unwind rule for this register - it is the unmodified value of the caller function.  I probably would have added a comment to this new line in the `else` block saying that explicitly, but that's just a personal preference.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D153043/new/

https://reviews.llvm.org/D153043



More information about the lldb-commits mailing list