diff options
author | Tom Tromey <tromey@redhat.com> | 2009-03-20 22:00:11 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2009-03-20 22:00:11 +0000 |
commit | cb249c71f6bfb565578d4258eaab9144a45716fe (patch) | |
tree | bdd83d740e1e8665d41cb61f8db67d4f22a2779c /gdb/eval.c | |
parent | 4bf27aa9bace1519a934017fe12cdc5a60da43ad (diff) | |
download | gdb-cb249c71f6bfb565578d4258eaab9144a45716fe.zip gdb-cb249c71f6bfb565578d4258eaab9144a45716fe.tar.gz gdb-cb249c71f6bfb565578d4258eaab9144a45716fe.tar.bz2 |
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.
Diffstat (limited to 'gdb/eval.c')
-rw-r--r-- | gdb/eval.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -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")); |