From 5ca2e3275d6a1d969990090805596f5211091afd Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Tue, 24 Aug 2004 17:31:49 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 6 ++++++ gdb/dwarf2loc.c | 11 ++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 25cac87790f..219ed9a6e24 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2004-08-24 Jim Blandy + + * 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 * armnbsd-tdep.c (arm_nbsd_arm_be_breakpoint): Define. diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index cdbeb10acf4..3e7cdd60408 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -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); -- 2.30.2