/* Return the value of SYMBOL in FRAME using the DWARF-2 expression evaluator to calculate the location. */ static struct value * locexpr_read_variable (struct symbol *symbol, struct frame_info *frame) { struct dwarf2_locexpr_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); struct value *val; val = dwarf2_evaluate_loc_desc (symbol, frame, dlbaton->data, dlbaton->size, dlbaton->objfile); return val; }
/* Return the value of SYMBOL in FRAME using the DWARF-2 expression evaluator to calculate the location. */ static struct value * loclist_read_variable (struct symbol *symbol, struct frame_info *frame) { struct dwarf2_loclist_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); struct value *val; unsigned char *data; size_t size; data = find_location_expression (dlbaton, &size, frame ? get_frame_pc (frame) : 0); if (data == NULL) error ("Variable \"%s\" is not available.", SYMBOL_NATURAL_NAME (symbol)); val = dwarf2_evaluate_loc_desc (symbol, frame, data, size, dlbaton->objfile); return val; }
/* Return the value of SYMBOL in FRAME using the DWARF-2 expression evaluator to calculate the location. */ static struct value * loclist_read_variable (struct symbol *symbol, struct frame_info *frame) { struct dwarf2_loclist_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol); struct value *val; gdb_byte *data; size_t size; data = find_location_expression (dlbaton, &size, frame ? get_frame_address_in_block (frame) : 0); if (data == NULL) { val = allocate_value (SYMBOL_TYPE (symbol)); VALUE_LVAL (val) = not_lval; set_value_optimized_out (val, 1); } else val = dwarf2_evaluate_loc_desc (symbol, frame, data, size, dlbaton->objfile); return val; }