mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-02-17 13:10:12 +08:00
2009-03-20 Tom Tromey <tromey@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com> * dwarf2read.c (process_die): Handle DW_TAG_typedef. * eval.c (evaluate_subexp_standard) <OP_TYPE>: Strip a single typedef. * ada-lang.c (decode_packed_array_type): Call CHECK_TYPEDEF on the SYMBOL_TYPE result. * ada-typeprint.c (print_array_type): Do the NULL check unconditionally.
This commit is contained in:
parent
4bf27aa9ba
commit
cb249c71f6
@ -1,3 +1,14 @@
|
||||
2009-03-20 Tom Tromey <tromey@redhat.com>
|
||||
Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* dwarf2read.c (process_die): Handle DW_TAG_typedef.
|
||||
* eval.c (evaluate_subexp_standard) <OP_TYPE>: Strip a single
|
||||
typedef.
|
||||
* ada-lang.c (decode_packed_array_type): Call CHECK_TYPEDEF on the
|
||||
SYMBOL_TYPE result.
|
||||
* ada-typeprint.c (print_array_type): Do the NULL check
|
||||
unconditionally.
|
||||
|
||||
2009-03-19 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* utils.c (do_obstack_free): New function.
|
||||
|
@ -1783,6 +1783,7 @@ decode_packed_array_type (struct type *type)
|
||||
return NULL;
|
||||
}
|
||||
shadow_type = SYMBOL_TYPE (sym);
|
||||
CHECK_TYPEDEF (shadow_type);
|
||||
|
||||
if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
|
||||
{
|
||||
|
@ -357,16 +357,17 @@ print_array_type (struct type *type, struct ui_file *stream, int show,
|
||||
bitsize = 0;
|
||||
fprintf_filtered (stream, "array (");
|
||||
|
||||
if (type == NULL)
|
||||
{
|
||||
fprintf_filtered (stream, _("<undecipherable array type>"));
|
||||
return;
|
||||
}
|
||||
|
||||
n_indices = -1;
|
||||
if (show < 0)
|
||||
fprintf_filtered (stream, "...");
|
||||
else
|
||||
{
|
||||
if (type == NULL)
|
||||
{
|
||||
fprintf_filtered (stream, _("<undecipherable array type>"));
|
||||
return;
|
||||
}
|
||||
if (ada_is_simple_array_type (type))
|
||||
{
|
||||
struct type *range_desc_type =
|
||||
|
@ -2849,6 +2849,7 @@ process_die (struct die_info *die, struct dwarf2_cu *cu)
|
||||
|
||||
case DW_TAG_base_type:
|
||||
case DW_TAG_subrange_type:
|
||||
case DW_TAG_typedef:
|
||||
/* Add a typedef symbol for the type definition, if it has a
|
||||
DW_AT_name. */
|
||||
new_symbol (die, read_type_die (die, cu), cu);
|
||||
|
12
gdb/eval.c
12
gdb/eval.c
@ -2475,7 +2475,17 @@ evaluate_subexp_standard (struct type *expect_type,
|
||||
if (noside == EVAL_SKIP)
|
||||
goto nosideret;
|
||||
else if (noside == EVAL_AVOID_SIDE_EFFECTS)
|
||||
return allocate_value (exp->elts[pc + 1].type);
|
||||
{
|
||||
struct type *type = exp->elts[pc + 1].type;
|
||||
/* If this is a typedef, then find its immediate target. We
|
||||
use check_typedef to resolve stubs, but we ignore its
|
||||
result because we do not want to dig past all
|
||||
typedefs. */
|
||||
check_typedef (type);
|
||||
if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
|
||||
type = TYPE_TARGET_TYPE (type);
|
||||
return allocate_value (type);
|
||||
}
|
||||
else
|
||||
error (_("Attempt to use a type name as an expression"));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user