* dwarf2loc.c (dwarf2_evaluate_loc_desc): Wait to fetch the top of
authorJim Blandy <jimb@codesourcery.com>
Tue, 24 Aug 2004 17:31:49 +0000 (17:31 +0000)
committerJim Blandy <jimb@codesourcery.com>
Tue, 24 Aug 2004 17:31:49 +0000 (17:31 +0000)
the stack until we've decided what sort of result the evaluation
has produced.  Use separate variables, with more specific names.

gdb/ChangeLog
gdb/dwarf2loc.c

index 25cac87..219ed9a 100644 (file)
@@ -1,3 +1,9 @@
+2004-08-24  Jim Blandy  <jimb@redhat.com>
+
+       * dwarf2loc.c (dwarf2_evaluate_loc_desc): Wait to fetch the top of
+       the stack until we've decided what sort of result the evaluation
+       has produced.  Use separate variables, with more specific names.
+
 2004-08-23  Richard Earnshaw  <rearnsha@arm.com>
 
        * armnbsd-tdep.c (arm_nbsd_arm_be_breakpoint): Define.
index cdbeb10..3e7cdd6 100644 (file)
@@ -205,7 +205,6 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
                          unsigned char *data, unsigned short size,
                          struct objfile *objfile)
 {
-  CORE_ADDR result;
   struct value *retval;
   struct dwarf_expr_baton baton;
   struct dwarf_expr_context *ctx;
@@ -228,21 +227,23 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
   ctx->get_tls_address = dwarf_expr_tls_address;
 
   dwarf_expr_eval (ctx, data, size);
-  result = dwarf_expr_fetch (ctx, 0);
 
   if (ctx->in_reg)
     {
-      int regnum = DWARF2_REG_TO_REGNUM (result);
-      retval = value_from_register (SYMBOL_TYPE (var), regnum, frame);
+      CORE_ADDR dwarf_regnum = dwarf_expr_fetch (ctx, 0);
+      int gdb_regnum = DWARF2_REG_TO_REGNUM (dwarf_regnum);
+      retval = value_from_register (SYMBOL_TYPE (var), gdb_regnum, frame);
     }
   else
     {
+      CORE_ADDR address = dwarf_expr_fetch (ctx, 0);
+
       retval = allocate_value (SYMBOL_TYPE (var));
       VALUE_BFD_SECTION (retval) = SYMBOL_BFD_SECTION (var);
 
       VALUE_LVAL (retval) = lval_memory;
       VALUE_LAZY (retval) = 1;
-      VALUE_ADDRESS (retval) = result;
+      VALUE_ADDRESS (retval) = address;
     }
 
   free_dwarf_expr_context (ctx);