+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.
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;
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);