* ada-lang.c (ada_evaluate_subexp) [OP_VAR_VALUE]: For tagged
types, if we are unable to determine the actual symbol type from its tag, then use the static approximation instead.
This commit is contained in:
parent
ef6f706809
commit
b79819baf7
2 changed files with 18 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2009-03-12 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
|
* ada-lang.c (ada_evaluate_subexp) [OP_VAR_VALUE]: For tagged
|
||||||
|
types, if we are unable to determine the actual symbol type
|
||||||
|
from its tag, then use the static approximation instead.
|
||||||
|
|
||||||
2009-03-12 Joel Brobecker <brobecker@adacore.com>
|
2009-03-12 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
Fix crash printing packed record with packed array.
|
Fix crash printing packed record with packed array.
|
||||||
|
|
|
@ -8576,8 +8576,19 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
|
||||||
a fixed type would result in the loss of that type name,
|
a fixed type would result in the loss of that type name,
|
||||||
thus preventing us from printing the name of the ancestor
|
thus preventing us from printing the name of the ancestor
|
||||||
type in the type description. */
|
type in the type description. */
|
||||||
|
struct type *actual_type;
|
||||||
|
|
||||||
arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
|
arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
|
||||||
return value_zero (type_from_tag (ada_value_tag (arg1)), not_lval);
|
actual_type = type_from_tag (ada_value_tag (arg1));
|
||||||
|
if (actual_type == NULL)
|
||||||
|
/* If, for some reason, we were unable to determine
|
||||||
|
the actual type from the tag, then use the static
|
||||||
|
approximation that we just computed as a fallback.
|
||||||
|
This can happen if the debugging information is
|
||||||
|
incomplete, for instance. */
|
||||||
|
actual_type = type;
|
||||||
|
|
||||||
|
return value_zero (actual_type, not_lval);
|
||||||
}
|
}
|
||||||
|
|
||||||
*pos += 4;
|
*pos += 4;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue