diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a2da98fed4d..00369e98f20 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2013-11-27 Pedro Alves + + * frame-unwind.c (frame_unwind_got_optimized): Use the type of the + register in the previous frame's arch. + 2013-11-27 Pedro Alves * frame-unwind.c (frame_unwind_got_optimized): Return diff --git a/gdb/frame-unwind.c b/gdb/frame-unwind.c index 68879f30816..a731b3387c1 100644 --- a/gdb/frame-unwind.c +++ b/gdb/frame-unwind.c @@ -161,11 +161,18 @@ 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 *type = register_type (gdbarch, regnum); struct value *val; - val = value_of_register_lazy (frame, regnum); + /* Return an lval_register value, so that we print it as + "". */ + val = allocate_value_lazy (type); set_value_lazy (val, 0); set_value_optimized_out (val, 1); + VALUE_LVAL (val) = lval_register; + VALUE_REGNUM (val) = regnum; + VALUE_FRAME_ID (val) = get_frame_id (frame); return val; }