From 47c59305c10898e9dc6e8d8aba66d19b1ba38f4b Mon Sep 17 00:00:00 2001 From: drow Date: Tue, 9 Mar 2004 17:08:24 +0000 Subject: [PATCH] * arm-tdep.c (arm_use_struct_convention): Look through typedefs. * gdbtypes.c (check_typedef): Update comments. --- gdb/ChangeLog | 5 +++++ gdb/arm-tdep.c | 4 +++- gdb/gdbtypes.c | 15 ++++++++++----- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cc9c0af39a..8ae0ed28b0 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2004-03-09 Daniel Jacobowitz + * arm-tdep.c (arm_use_struct_convention): Look through typedefs. + * gdbtypes.c (check_typedef): Update comments. + +2004-03-09 Daniel Jacobowitz + * dwarf2read.c (struct comp_unit_head): Remove dwarf2_abbrevs array. (struct dwarf2_cu): Add abbrev_obstack and dwarf2_abbrevs pointer. Update comment about comp_unit_head. diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 05c0f23d03..bf54a318d1 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -2173,6 +2173,8 @@ arm_use_struct_convention (int gcc_p, struct type *type) int nRc; enum type_code code; + CHECK_TYPEDEF (type); + /* In the ARM ABI, "integer" like aggregate types are returned in registers. For an aggregate type to be integer like, its size must be less than or equal to DEPRECATED_REGISTER_SIZE and the @@ -2230,7 +2232,7 @@ arm_use_struct_convention (int gcc_p, struct type *type) for (i = 0; i < TYPE_NFIELDS (type); i++) { enum type_code field_type_code; - field_type_code = TYPE_CODE (TYPE_FIELD_TYPE (type, i)); + field_type_code = TYPE_CODE (check_typedef (TYPE_FIELD_TYPE (type, i))); /* Is it a floating point type field? */ if (field_type_code == TYPE_CODE_FLT) diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 2dc3a46e07..1349ffbbe1 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -1343,6 +1343,12 @@ get_destructor_fn_field (struct type *t, int *method_indexp, int *field_indexp) return 0; } +static void +stub_noname_complaint (void) +{ + complaint (&symfile_complaints, "stub type has NULL name"); +} + /* Added by Bryan Boreham, Kewill, Sun Sep 17 18:07:17 1989. If this is a stubbed struct (i.e. declared as struct foo *), see if @@ -1356,11 +1362,10 @@ get_destructor_fn_field (struct type *t, int *method_indexp, int *field_indexp) This used to be coded as a macro, but I don't think it is called often enough to merit such treatment. */ -static void -stub_noname_complaint (void) -{ - complaint (&symfile_complaints, "stub type has NULL name"); -} +/* Find the real type of TYPE. This function returns the real type, after + removing all layers of typedefs and completing opaque or stub types. + Completion changes the TYPE argument, but stripping of typedefs does + not. */ struct type * check_typedef (struct type *type) -- 2.11.0