diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9d7cb04239..c8d71903b2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2009-01-13 Ulrich Weigand + + * dwarf2loc.c (dwarf2_evaluate_loc_desc): Do not call get_frame_arch + for NULL frame pointers. + 2009-01-13 Mark Kettenis * utils.c (host_address_to_string): Reimplement in a way that diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index 95018dce21..cad3db8022 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -199,7 +199,6 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame, gdb_byte *data, unsigned short size, struct dwarf2_per_cu_data *per_cu) { - struct gdbarch *arch = get_frame_arch (frame); struct value *retval; struct dwarf_expr_baton baton; struct dwarf_expr_context *ctx; @@ -238,9 +237,9 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame, struct dwarf_expr_piece *p = &ctx->pieces[i]; if (p->in_reg) { + struct gdbarch *arch = get_frame_arch (frame); bfd_byte regval[MAX_REGISTER_SIZE]; - int gdb_regnum = gdbarch_dwarf2_reg_to_regnum - (arch, p->value); + int gdb_regnum = gdbarch_dwarf2_reg_to_regnum (arch, p->value); get_frame_register (frame, gdb_regnum, regval); memcpy (contents + offset, regval, p->size); } @@ -253,9 +252,9 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame, } else if (ctx->in_reg) { + struct gdbarch *arch = get_frame_arch (frame); CORE_ADDR dwarf_regnum = dwarf_expr_fetch (ctx, 0); - int gdb_regnum = gdbarch_dwarf2_reg_to_regnum - (arch, dwarf_regnum); + int gdb_regnum = gdbarch_dwarf2_reg_to_regnum (arch, dwarf_regnum); retval = value_from_register (SYMBOL_TYPE (var), gdb_regnum, frame); } else