This is the mail archive of the
elfutils-devel@sourceware.org
mailing list for the elfutils project.
Re: supporting DW_OP_{implicit,stack}_value
- From: Mark Wielaard <mjw at redhat dot com>
- To: elfutils-devel at lists dot fedorahosted dot org
- Date: Wed, 22 Jul 2009 11:15:49 +0200
- Subject: Re: supporting DW_OP_{implicit,stack}_value
On Tue, 2009-07-21 at 16:56 -0700, Roland McGrath wrote:
> > I must admit to not really see when you need the information "it got
> > changed, but I put it back as is" versus "unchanged and in same place".
>
> Well, I think of "same_value" as meaning "that's not my register".
That is a nice way to think about it. That also makes more clear the
idea of "changing it is for real".
> > I admit to liking the return value 0 with *NOPS zero means CFI says the
> > caller's REGNO is same_value" here of the original better than using
> > DW_CFA_same_value as special marker.
>
> Do you like DW_CFA_nop any better? ;-)
Bah, I meant DW_OP_same_value of course. And no, not really. Because
like you said, that isn't a valid location expression.
But it clearly depends on your preference. If you don't want to use "out
of band signaling" then putting something, anything, in the returned
Dwarf_Ops array is the way to go. But I actually prefer my Dwarf_Ops
array to consist of only valid expressions. So I would use
DW_OP_stack_value to indicate the "is a value" versus "is a location",
but use length zero for undefined (since that is a valid expression with
that meaning) and NULL for same_value (since it isn't expressible
otherwise in a valid way).
That said, if it would be a single DW_OP_nop or DW_OP_stack_value I
would definitely cope.
Cheers,
Mark