This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[RFA]: SH patch for functions returning float/dbl
- To: ezannoni at redhat dot com
- Subject: [RFA]: SH patch for functions returning float/dbl
- From: Michael Snyder <msnyder at redhat dot com>
- Date: Mon, 18 Dec 2000 14:17:17 -0800
- CC: gdb-patches at sources dot redhat dot com
- Organization: Red Hat
Elena, this will fix two failures in finish.exp.
2000-12-18 Michael Snyder <msnyder@mvstp600e.cygnus.com>
* sh-tdep.c (sh_extract_return_value):
Handle floating point return value.
Index: sh-tdep.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gdb/sh-tdep.c,v
retrieving revision 2.71
diff -c -3 -p -r2.71 sh-tdep.c
*** sh-tdep.c 2000/12/18 05:32:59 2.71
--- sh-tdep.c 2000/12/18 22:12:07
*************** static void
*** 1228,1238 ****
sh_extract_return_value (struct type *type, char *regbuf, char *valbuf)
{
int len = TYPE_LENGTH (type);
if (len <= 4)
! memcpy (valbuf, ((char *) regbuf) + 4 - len, len);
else if (len <= 8)
! memcpy (valbuf, ((char *) regbuf) + 8 - len, len);
else
error ("bad size for return value");
}
--- 1228,1245 ----
sh_extract_return_value (struct type *type, char *regbuf, char *valbuf)
{
int len = TYPE_LENGTH (type);
+ int returnreg;
+
+ if (TYPE_CODE (type) == TYPE_CODE_FLT)
+ returnreg = FP0_REGNUM;
+ else
+ returnreg = R0_REGNUM;
+
if (len <= 4)
! memcpy (valbuf, regbuf + REGISTER_BYTE (returnreg) + 4 - len, len);
else if (len <= 8)
! memcpy (valbuf, regbuf + REGISTER_BYTE (returnreg) + 8 - len, len);
else
error ("bad size for return value");
}