This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 2/2] Make "set debug frame 1" output print <not saved> instead of <optimized out>.
- From: Pedro Alves <palves at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Wed, 27 Nov 2013 17:52:40 +0000
- Subject: [PATCH 2/2] Make "set debug frame 1" output print <not saved> instead of <optimized out>.
- Authentication-results: sourceware.org; auth=none
- References: <5208D50F dot 8020109 at broadcom dot com> <1385574760-26557-1-git-send-email-palves at redhat dot com>
"set debug frame 1" is printing "<optimized out>" for not saved
registers. That's because the unwinders are returning optimized out
not_lval values instead of optimized out lval_register values. "<not
saved>" is how val_print_optimized_out prints lval_register values.
...
- { frame_unwind_register_value (frame=0,regnum=7(rsp),...) -> <optimized out> }
+ { frame_unwind_register_value (frame=0,regnum=7(rsp),...) -> <not saved> }
...
Tested on x86_64 Fedora 17.
2013-11-27 Pedro Alves <palves@redhat.com>
* frame-unwind.c (frame_unwind_got_optimized): Return
an lval_register value instead of a not_lval value.
---
gdb/frame-unwind.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/gdb/frame-unwind.c b/gdb/frame-unwind.c
index ce2f6da..68879f3 100644
--- a/gdb/frame-unwind.c
+++ b/gdb/frame-unwind.c
@@ -161,10 +161,12 @@ default_frame_unwind_stop_reason (struct frame_info *this_frame,
struct value *
frame_unwind_got_optimized (struct frame_info *frame, int regnum)
{
- struct gdbarch *gdbarch = frame_unwind_arch (frame);
- struct type *reg_type = register_type (gdbarch, regnum);
+ struct value *val;
- return allocate_optimized_out_value (reg_type);
+ val = value_of_register_lazy (frame, regnum);
+ set_value_lazy (val, 0);
+ set_value_optimized_out (val, 1);
+ return val;
}
/* Return a value which indicates that FRAME copied REGNUM into
--
1.7.11.7