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 19:30:07 +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>
- Reply-to: Eli Zaretskii <eliz at gnu dot org>
> Date: Wed, 18 Sep 2013 16:54:27 +0100
> From: Pedro Alves <palves@redhat.com>
> CC: gdb-patches@sourceware.org, Mark Kettenis <mark.kettenis@xs4all.nl>
>
> Eli, I've added NEWS and documentation changes to this patch.
> Are those OK?
Almost.
> +* GDB now shows "<not saved>" when printing values of registers that
> + have not been saved in the frame:
> +
> + (gdb) p $rax $1 = <not saved>
> + (gdb) info registers rax rax <not saved>
Wrong formatting of what GDB prints.
> +In some ABIs, some registers may not be preserved, or saved, across
> +function calls. It may therefore not be possible for @value{GDBN} to
> +know the value a register had before the call (in other words, in a
^
"the"
> +outer frame). Values of registers that @value{GDBN} can tell were not
> +saved in their stack frames are shown as @w{@samp{<not saved>}}.
> +
> +However, if debug or unwind information is missing, @value{GDBN} must
> +deduce where registers are saved, from the machine code generated by
> +your compiler. If some registers are not saved, or if @value{GDBN} is
> +unable to locate the saved registers, the selected stack frame makes
> +no difference.
I don't understand the significance of the last paragraph.
Also, shouldn't we mention optimizations as (the main) reason for
registers being unavailable?
Thanks.