From: Jan Kratochvil Date: Tue, 12 Jul 2011 21:16:48 +0000 (+0000) Subject: gdb/ X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a7035dbbd10c5208e63cc3bc1b45f2dd8d16d7bb;p=binutils-gdb.git gdb/ Code cleanup making also optimized out values lazy. * dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use allocate_optimized_out_value. Twice. (loclist_read_variable) Use allocate_optimized_out_value. Once. * findvar.c (read_var_value): Likewise. * value.c (allocate_optimized_out_value): New function. * value.h (allocate_optimized_out_value): New declaration. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 60452ba730e..8ed7eaff91e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2011-07-12 Jan Kratochvil + + Code cleanup making also optimized out values lazy. + * dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use + allocate_optimized_out_value. Twice. + (loclist_read_variable) Use allocate_optimized_out_value. Once. + * findvar.c (read_var_value): Likewise. + * value.c (allocate_optimized_out_value): New function. + * value.h (allocate_optimized_out_value): New declaration. + 2011-07-12 Jan Kratochvil Fix occasional crash of CTRL-C during DWARF read in. diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index baac1c69236..101ce1cbf1b 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -1094,12 +1094,7 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame, invalid_synthetic_pointer (); if (size == 0) - { - retval = allocate_value (type); - VALUE_LVAL (retval) = not_lval; - set_value_optimized_out (retval, 1); - return retval; - } + return allocate_optimized_out_value (type); baton.frame = frame; baton.per_cu = per_cu; @@ -1247,9 +1242,7 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame, case DWARF_VALUE_OPTIMIZED_OUT: do_cleanups (value_chain); - retval = allocate_value (type); - VALUE_LVAL (retval) = not_lval; - set_value_optimized_out (retval, 1); + retval = allocate_optimized_out_value (type); break; /* DWARF_VALUE_IMPLICIT_POINTER was converted to a pieced @@ -2829,11 +2822,7 @@ loclist_read_variable (struct symbol *symbol, struct frame_info *frame) data = dwarf2_find_location_expression (dlbaton, &size, pc); if (data == NULL) - { - val = allocate_value (SYMBOL_TYPE (symbol)); - VALUE_LVAL (val) = not_lval; - set_value_optimized_out (val, 1); - } + val = allocate_optimized_out_value (SYMBOL_TYPE (symbol)); else val = dwarf2_evaluate_loc_desc (SYMBOL_TYPE (symbol), frame, data, size, dlbaton->per_cu); diff --git a/gdb/findvar.c b/gdb/findvar.c index 2b361efeda3..a700c0283a1 100644 --- a/gdb/findvar.c +++ b/gdb/findvar.c @@ -577,10 +577,7 @@ read_var_value (struct symbol *var, struct frame_info *frame) break; case LOC_OPTIMIZED_OUT: - v = allocate_value_lazy (type); - VALUE_LVAL (v) = not_lval; - set_value_optimized_out (v, 1); - return v; + return allocate_optimized_out_value (type); default: error (_("Cannot look up value of a botched symbol.")); diff --git a/gdb/value.c b/gdb/value.c index ccd29c83b0a..f308f3d2c8f 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -728,6 +728,18 @@ allocate_computed_value (struct type *type, return v; } +/* Allocate NOT_LVAL value for type TYPE being OPTIMIZED_OUT. */ + +struct value * +allocate_optimized_out_value (struct type *type) +{ + struct value *retval = allocate_value_lazy (type); + + set_value_optimized_out (retval, 1); + + return retval; +} + /* Accessor methods. */ struct value * diff --git a/gdb/value.h b/gdb/value.h index 03ca36bb5c1..307983170c0 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -207,6 +207,8 @@ extern struct value *allocate_computed_value (struct type *type, struct lval_funcs *funcs, void *closure); +extern struct value *allocate_optimized_out_value (struct type *type); + /* If VALUE is lval_computed, return its lval_funcs structure. */ extern struct lval_funcs *value_computed_funcs (struct value *value);