Make "set debug frame 1" output print <not saved> instead of <optimized out>.
authorPedro Alves <palves@redhat.com>
Wed, 27 Nov 2013 17:49:59 +0000 (17:49 +0000)
committerPedro Alves <palves@redhat.com>
Wed, 27 Nov 2013 17:49:59 +0000 (17:49 +0000)
"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/ChangeLog
gdb/frame-unwind.c

index 727babab768c840d4b2f78834d3d7505127f362a..a2da98fed4dba504fef28ef21fdb5c5c7e565a8a 100644 (file)
@@ -1,3 +1,8 @@
+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.
+
 2013-11-27  Andrew Burgess  <aburgess@broadcom.com>
 
        * frame.c: Include "valprint.h".
index ce2f6da831348ed5111d155b4f113fed0f1716fc..68879f30816dbbdca26e28c3ffc14add779b8060 100644 (file)
@@ -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