From 08039c9efdbe7602bfb0d1b4396a3f3a39130239 Mon Sep 17 00:00:00 2001 From: Sanimir Agovic Date: Thu, 29 Aug 2013 12:25:03 +0000 Subject: [PATCH] cleanup: use value_lazy_at instead of allocate_value_lazy/attribute setter I came across a pattern used to construct a value in the following way: struct value *val = allocate_value_lazy (type); VALUE_LVAL (val) = lval_memory; set_value_address (val, address); Instead we fold the above call into: value_at_lazy (type, addr); 2013-08-27 Sanimir Agovic * dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use value_at_lazy instead of assembling value via allocate_value_lazy and attribute setter. * findvar.c (default_read_var_value): Use value_at_lazy instead of assembling value via allocate_value_lazy and attribute setter. * valops.c (do_search_struct_field): Use value_at_lazy instead of assembling value via allocate_value_lazy and attribute setter. --- gdb/ChangeLog | 9 +++++++++ gdb/dwarf2loc.c | 4 +--- gdb/findvar.c | 10 +--------- gdb/valops.c | 6 ++---- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7f9056c..2f0bb85 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,14 @@ 2013-08-29 Sanimir Agovic + * dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use value_at_lazy instead + of assembling value via allocate_value_lazy and attribute setter. + * findvar.c (default_read_var_value): Use value_at_lazy instead of + assembling value via allocate_value_lazy and attribute setter. + * valops.c (do_search_struct_field): Use value_at_lazy instead of + assembling value via allocate_value_lazy and attribute setter. + +2013-08-29 Sanimir Agovic + * value.c (value_from_contents_and_address): Replace allocate_value and memcpy with value_from_contents. diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index 02afcdf..a1a384a 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -2303,11 +2303,9 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame, int in_stack_memory = dwarf_expr_fetch_in_stack_memory (ctx, 0); do_cleanups (value_chain); - retval = allocate_value_lazy (type); - VALUE_LVAL (retval) = lval_memory; + retval = value_at_lazy (type, address + byte_offset); if (in_stack_memory) set_value_stack (retval, 1); - set_value_address (retval, address + byte_offset); } break; diff --git a/gdb/findvar.c b/gdb/findvar.c index f586ce2..d59bee1 100644 --- a/gdb/findvar.c +++ b/gdb/findvar.c @@ -502,7 +502,6 @@ default_read_var_value (struct symbol *var, struct frame_info *frame) return v; case LOC_STATIC: - v = allocate_value_lazy (type); if (overlay_debugging) addr = symbol_overlayed_address (SYMBOL_VALUE_ADDRESS (var), SYMBOL_OBJ_SECTION (SYMBOL_OBJFILE (var), @@ -517,7 +516,6 @@ default_read_var_value (struct symbol *var, struct frame_info *frame) error (_("Unknown argument list address for `%s'."), SYMBOL_PRINT_NAME (var)); addr += SYMBOL_VALUE (var); - v = allocate_value_lazy (type); break; case LOC_REF_ARG: @@ -532,14 +530,12 @@ default_read_var_value (struct symbol *var, struct frame_info *frame) argref += SYMBOL_VALUE (var); ref = value_at (lookup_pointer_type (type), argref); addr = value_as_address (ref); - v = allocate_value_lazy (type); break; } case LOC_LOCAL: addr = get_frame_locals_address (frame); addr += SYMBOL_VALUE (var); - v = allocate_value_lazy (type); break; case LOC_TYPEDEF: @@ -548,7 +544,6 @@ default_read_var_value (struct symbol *var, struct frame_info *frame) break; case LOC_BLOCK: - v = allocate_value_lazy (type); if (overlay_debugging) addr = symbol_overlayed_address (BLOCK_START (SYMBOL_BLOCK_VALUE (var)), SYMBOL_OBJ_SECTION (SYMBOL_OBJFILE (var), @@ -575,7 +570,6 @@ default_read_var_value (struct symbol *var, struct frame_info *frame) SYMBOL_PRINT_NAME (var)); addr = value_as_address (regval); - v = allocate_value_lazy (type); } else { @@ -620,7 +614,6 @@ default_read_var_value (struct symbol *var, struct frame_info *frame) if (obj_section && (obj_section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0) addr = target_translate_tls_address (obj_section->objfile, addr); - v = allocate_value_lazy (type); } break; @@ -633,8 +626,7 @@ default_read_var_value (struct symbol *var, struct frame_info *frame) break; } - VALUE_LVAL (v) = lval_memory; - set_value_address (v, addr); + v = value_at_lazy (type, addr); return v; } diff --git a/gdb/valops.c b/gdb/valops.c index f86b283..890735e 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -1950,14 +1950,12 @@ do_search_struct_field (const char *name, struct value *arg1, int offset, { CORE_ADDR base_addr; - v2 = allocate_value (basetype); base_addr = value_address (arg1) + boffset; + v2 = value_at_lazy (basetype, base_addr); if (target_read_memory (base_addr, value_contents_raw (v2), - TYPE_LENGTH (basetype)) != 0) + TYPE_LENGTH (value_type (basetype))) != 0) error (_("virtual baseclass botch")); - VALUE_LVAL (v2) = lval_memory; - set_value_address (v2, base_addr); } else { -- 2.7.4