This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH+DOC] Print registers not saved in the frame as "<not saved>", instead of "<optimized out>".
- From: Eli Zaretskii <eliz at gnu dot org>
- To: Pedro Alves <palves at redhat dot com>
- Cc: aburgess at broadcom dot com, gdb-patches at sourceware dot org, mark dot kettenis at xs4all dot nl
- Date: Wed, 18 Sep 2013 22:34:59 +0300
- Subject: Re: [PATCH+DOC] Print registers not saved in the frame as "<not saved>", instead of "<optimized out>".
- Authentication-results: sourceware.org; auth=none
- References: <5200F55E dot 2050308 at broadcom dot com> <201308061318 dot r76DIMdd016369 at glazunov dot sibelius dot xs4all dot nl> <5200FECF dot 7030304 at broadcom dot com> <201308061541 dot r76FfYQN022875 at glazunov dot sibelius dot xs4all dot nl> <520142D9 dot 4030304 at redhat dot com> <5208E3C8 dot 7060107 at broadcom dot com> <5208E938 dot 3080305 at redhat dot com> <201308122001 dot r7CK1862007934 at glazunov dot sibelius dot xs4all dot nl> <520E7255 dot 7080206 at redhat dot com> <5211F25A dot 5070907 at broadcom dot com> <5228B15F dot 7060108 at redhat dot com> <5228B2D8 dot 7060604 at broadcom dot com> <5237567C dot 8050406 at redhat dot com> <5239B2D8 dot 4030403 at broadcom dot com> <5239CCB3 dot 605 at redhat dot com> <83zjram6sw dot fsf at gnu dot org> <5239E44B dot 7030704 at redhat dot com>
- Reply-to: Eli Zaretskii <eliz at gnu dot org>
> Date: Wed, 18 Sep 2013 18:35:07 +0100
> From: Pedro Alves <palves@redhat.com>
> CC: aburgess@broadcom.com, gdb-patches@sourceware.org, mark.kettenis@xs4all.nl
>
> > I don't understand the significance of the last paragraph.
>
> It's preexisting actually. I just added the "debug or unwind info" bit.
> But yeah, it's confusing. I _think_ I know what it's talking about.
> I think "makes no difference" refers to GDB assuming $reg in an outer
> frame is found at the same location as in the inner frame (that is,
> assuming the call clobbered register hasn't been clobbered yet).
>
> I've rewritten all this text now. What do you think?
We are almost there, just a few minor comments below.
> > Also, shouldn't we mention optimizations as (the main) reason for
> > registers being unavailable?
>
> I'm not actually sure how to say that. Not sure you actually
> always need optimization to see this in the debugger. But maybe
> we don't need to in this new version. :-)
One of the comments below addresses that.
> +In some ABIs, some registers may not be preserved, or saved, across
> +function calls.
It's enough to mention optimizations here, as in
In some ABIs, or in optimized code, some registers may not be preserved
> +the outer frame, you may also be affecting the inner frame. Values of
> +registers that @value{GDBN} can definitely tell from the debug/unwind
> +info were not saved in their stack frames and there's nowhere to
> +retrieve the original value from anymore are shown as
> +@w{@samp{<not saved>}}.
The last sentence is unduly hard to read, because it uses passive
tense too aggressively. I would rephrase:
If @value{GDBN} can definitely tell from the debug/unwind info that
the value of a register was not saved in its stack frame, and
there's no other place for it from which to retrieve that register's
original value, @value{GDBN} will show the value of such a register
as @w{@samp{<not saved>}}.
OK with those changes.
Thanks.