[Dwarf-Discuss] Location list entries for caller-saved registers at time of call

Cary Coutant ccoutant at gmail.com
Fri Dec 7 08:45:47 PST 2018


> I think clang is correct.
>
> As I read the loclists, from 0x8 up to but not including 0xf, the
> value is in reg0, from 0xf (after the call) up to but not including
> 0x16, the value is on the stack.
>
> I don't see that this describes the value as live (in a register)
> after the call, at PC = 0xf.

But *during* the call, when the unwinder will use a PC value of 0xe to
query the range list, it will think the value is still live in %eax,
which is not true. If the unwinder did not subtract 1 from the PC
value, it would get the right answer, but since it does subtract 1,
GCC needs to adjust the end of the range list entry.

-cary


More information about the Dwarf-Discuss mailing list