aboutsummaryrefslogtreecommitdiff
path: root/gdb/frame-unwind.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2013-11-27 17:49:59 +0000
committerPedro Alves <palves@redhat.com>2013-11-27 17:49:59 +0000
commit6bd273ae450b2ba626b0f7dbda10947e69578e1d (patch)
treea169529449c0bf2950b66b9bc89f088448d84ddf /gdb/frame-unwind.c
parentf6c01fc5156fde67bd62b1d66dee769dd88bf51e (diff)
downloadgdb-6bd273ae450b2ba626b0f7dbda10947e69578e1d.zip
gdb-6bd273ae450b2ba626b0f7dbda10947e69578e1d.tar.gz
gdb-6bd273ae450b2ba626b0f7dbda10947e69578e1d.tar.bz2
Make "set debug frame 1" output print <not saved> instead of <optimized out>.
"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.
Diffstat (limited to 'gdb/frame-unwind.c')
-rw-r--r--gdb/frame-unwind.c8
1 files 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