Re: [PATCH v2 9/9] objtool: Abstract unwind hint reading

From: Julien Thierry
Date: Mon Aug 03 2020 - 08:13:26 EST




On 7/31/20 3:04 PM, Josh Poimboeuf wrote:
On Fri, Jul 31, 2020 at 08:00:58AM +0100, Julien Thierry wrote:
+ cfa->offset = hint->sp_offset;
+ insn->cfi.hint_type = hint->type;
+ insn->cfi.end = hint->end;
+
+ insn->cfi.sp_only = hint->type == ORC_TYPE_REGS || hint->type == ORC_TYPE_REGS_IRET;

What does "sp" mean here in sp_only?


Stack pointer, like in CFI_SP. When objtool encounters one of these hints,
it starts to only track the stack frame with the stack pointer (no BP, no
drap register, no move to temporary registers). Just trying to make some
sense of this corner case.

I think that's not quite right, because ORC_TYPE_CALL could also be
"sp_only" in some cases, by that definition.


But in that case the code will still track when/if the CFI becomes pointed to by BP.

The call to update_cfi_state_regs() is really regs-specific, not
sp-specific.


I must admit I don't really understand what "regs" is and why exactly such an exception in stack state tracking is made where only operations to SP are taken into account.

--
Julien Thierry