diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0af0c796a7..6b9d342f11 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2016-04-06 Don Breazeal + + * value.c (value_actual_type): Don't try to get rtti type + of the value if it has been optimized out. + (value_optimized_out): If a memory access error occurs, + just check vaue->optimized_out. + 2016-04-06 Jan Kratochvil Revert the previous commit adding unknown_v_replies_ok. diff --git a/gdb/value.c b/gdb/value.c index 8268b0860b..3b66946202 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -1205,7 +1205,8 @@ value_actual_type (struct value *value, int resolve_simple_types, if ((TYPE_CODE (result) == TYPE_CODE_PTR || TYPE_CODE (result) == TYPE_CODE_REF) && TYPE_CODE (check_typedef (TYPE_TARGET_TYPE (result))) - == TYPE_CODE_STRUCT) + == TYPE_CODE_STRUCT + && !value_optimized_out (value)) { struct type *real_type; @@ -1433,7 +1434,17 @@ value_optimized_out (struct value *value) /* We can only know if a value is optimized out once we have tried to fetch it. */ if (VEC_empty (range_s, value->optimized_out) && value->lazy) - value_fetch_lazy (value); + { + TRY + { + value_fetch_lazy (value); + } + CATCH (ex, RETURN_MASK_ERROR) + { + /* Fall back to checking value->optimized_out. */ + } + END_CATCH + } return !VEC_empty (range_s, value->optimized_out); }