summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2004-03-09 17:08:25 +0000
committerDaniel Jacobowitz <dan@debian.org>2004-03-09 17:08:25 +0000
commit2566e3bfcdb4f36f7d2ded7184b998b5a8489e99 (patch)
treec48f05d36a437719920fd09a590f94bfcad598b2
parent33b64ea2e6da35a14af8dabec0a3a11c02b6489e (diff)
downloadgdb-2566e3bfcdb4f36f7d2ded7184b998b5a8489e99.tar.gz
* arm-tdep.c (arm_use_struct_convention): Look through typedefs.
* gdbtypes.c (check_typedef): Update comments.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/arm-tdep.c4
-rw-r--r--gdb/gdbtypes.c15
3 files changed, 18 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index cc9c0af39ac..8ae0ed28b07 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 05c0f23d035..bf54a318d19 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 2dc3a46e07b..1349ffbbe19 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)