* dwarf2loc.c (dwarf2_evaluate_loc_desc): Do not call get_frame_arch
authorUlrich Weigand <uweigand@de.ibm.com>
Tue, 13 Jan 2009 18:01:49 +0000 (18:01 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Tue, 13 Jan 2009 18:01:49 +0000 (18:01 +0000)
for NULL frame pointers.

gdb/ChangeLog
gdb/dwarf2loc.c

index 9d7cb0423934b6f37c4e398c63fd5110373bd9c7..c8d71903b2b26a38ad65d66336d80cd80694ad9d 100644 (file)
@@ -1,3 +1,8 @@
+2009-01-13  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * dwarf2loc.c (dwarf2_evaluate_loc_desc): Do not call get_frame_arch
+       for NULL frame pointers.
+
 2009-01-13  Mark Kettenis  <kettenis@gnu.org>
 
        * utils.c (host_address_to_string): Reimplement in a way that
index 95018dce21ceab6515605b93248e1e029103e699..cad3db802292905b1120eba4e2e31d0313c07ae4 100644 (file)
@@ -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