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: Tom Tromey <tromey at redhat dot com>
- To: elfutils-devel at lists dot fedorahosted dot org
- Date: Wed, 22 Jul 2009 09:57:06 -0600
- Subject: Re: supporting DW_OP_{implicit,stack}_value
>>>>> "Roland" == Roland McGrath <roland@redhat.com> writes:
Mark> I couldn't find a definition for DW_OP_GNU_uninit. What does it
Mark> express?
Roland> Yeah, good question. It's no my list to take it up on archer
Roland> and/or gcc lists to get a good specification for it. It seems
Roland> to be a not-really-used feature that perhaps was never thought
Roland> out or discussed very thoroughly.
Indeed. I was wondering about it, too. I ran across it while looking
at really implementing DW_OP_piece; the implementation of
DW_OP_GNU_uninit in gdb is weird.
I tracked down the original patches:
http://gcc.gnu.org/ml/gcc-patches/2007-05/msg00068.html
http://sourceware.org/ml/gdb-patches/2007-05/msg00024.html
Rationale for the behavior is here:
http://gcc.gnu.org/ml/gcc-patches/2007-05/msg00666.html
Rationale for the choice of how it should not interact with the piece
stuff is here:
http://sourceware.org/ml/gdb-patches/2007-05/msg00146.html
(This bit in particular I find very lame.)
Roland> The only use for the location-with-uninit I can really see is so
Roland> the debugger can install a watchpoint that the initializer is
Roland> expected to hit.
One other case I thought of is that with this feature, a user can still
assign to an uninitialized variable. So, printing will show that it is
bogus, but you could then fix the problem and continue.
I think it would be straightforward to extend the definition so that it
does apply to the current piece. This seems like the only sane
specification to me.
Tom