diff options
author | Daniel Jacobowitz <drow@false.org> | 2004-03-09 17:08:25 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2004-03-09 17:08:25 +0000 |
commit | 44e1a9eb2556723d464e53f3bf2fd34b6cf5aa13 (patch) | |
tree | 5bbbfbd12b3dc6481d2dfb946a4cf5fd3fc3b335 /gdb | |
parent | 283014616ee05c93c7164a20384a29d5e43550af (diff) | |
download | gdb-44e1a9eb2556723d464e53f3bf2fd34b6cf5aa13.zip gdb-44e1a9eb2556723d464e53f3bf2fd34b6cf5aa13.tar.gz gdb-44e1a9eb2556723d464e53f3bf2fd34b6cf5aa13.tar.bz2 |
* arm-tdep.c (arm_use_struct_convention): Look through typedefs.
* gdbtypes.c (check_typedef): Update comments.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/arm-tdep.c | 4 | ||||
-rw-r--r-- | gdb/gdbtypes.c | 15 |
3 files changed, 18 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cc9c0af..8ae0ed2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2004-03-09 Daniel Jacobowitz <drow@mvista.com> + * arm-tdep.c (arm_use_struct_convention): Look through typedefs. + * gdbtypes.c (check_typedef): Update comments. + +2004-03-09 Daniel Jacobowitz <drow@mvista.com> + * 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 05c0f23..bf54a31 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 2dc3a46..1349ffb 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) |