From 6bd273ae450b2ba626b0f7dbda10947e69578e1d Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Wed, 27 Nov 2013 17:49:59 +0000 Subject: [PATCH] Make "set debug frame 1" output print instead of . "set debug frame 1" is printing "" for not saved registers. That's because the unwinders are returning optimized out not_lval values instead of optimized out lval_register values. "" is how val_print_optimized_out prints lval_register values. ... - { frame_unwind_register_value (frame=0,regnum=7(rsp),...) -> } + { frame_unwind_register_value (frame=0,regnum=7(rsp),...) -> } ... Tested on x86_64 Fedora 17. 2013-11-27 Pedro Alves * frame-unwind.c (frame_unwind_got_optimized): Return an lval_register value instead of a not_lval value. --- gdb/ChangeLog | 5 +++++ gdb/frame-unwind.c | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 727babab768..a2da98fed4d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2013-11-27 Pedro Alves + + * frame-unwind.c (frame_unwind_got_optimized): Return + an lval_register value instead of a not_lval value. + 2013-11-27 Andrew Burgess * frame.c: Include "valprint.h". diff --git a/gdb/frame-unwind.c b/gdb/frame-unwind.c index ce2f6da8313..68879f30816 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 -- 2.30.2