This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[rfa/arm] Fix some structs.exp failures
- From: Daniel Jacobowitz <drow at false dot org>
- To: gdb-patches at sources dot redhat dot com
- Cc: rearnsha at arm dot com
- Date: Tue, 2 Mar 2004 12:16:59 -0500
- Subject: [rfa/arm] Fix some structs.exp failures
structs.exp uses "typedef float tf". A structure type that would otherwise
be returned by reference is returned by value, because GDB doesn't realize
that it counts as a floating-point-like structure.
OK?
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
2004-03-02 Daniel Jacobowitz <drow@mvista.com>
* arm-tdep.c (arm_use_struct_convention): Look through typedefs.
Index: gdb/arm-tdep.c
===================================================================
RCS file: /big/fsf/rsync/src-cvs/src/gdb/arm-tdep.c,v
retrieving revision 1.164
diff -u -p -r1.164 arm-tdep.c
--- gdb/arm-tdep.c 16 Feb 2004 21:49:21 -0000 1.164
+++ gdb/arm-tdep.c 2 Mar 2004 17:11:25 -0000
@@ -2141,6 +2142,8 @@ arm_use_struct_convention (int gcc_p, st
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
@@ -2198,7 +2201,7 @@ arm_use_struct_convention (int gcc_p, st
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)