mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 06:45:56 +08:00
* rs6000-tdep.c (rs6000_extract_return_value): When extracting a float,
use convert_typed_floating to get the appropriate format.
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2004-04-23 Jerome Guitton <guitton@gnat.fr>
|
||||
|
||||
* rs6000-tdep.c (rs6000_extract_return_value): When extracting a float,
|
||||
use convert_typed_floating to get the appropriate format.
|
||||
|
||||
2004-04-22 Randolph Chung <tausq@debian.org>
|
||||
|
||||
* hppa-tdep.h (find_unwind_entry, hppa_get_field, hppa_extract_5_load)
|
||||
|
@ -1412,22 +1412,15 @@ rs6000_extract_return_value (struct type *valtype, char *regbuf, char *valbuf)
|
||||
if (TYPE_CODE (valtype) == TYPE_CODE_FLT)
|
||||
{
|
||||
|
||||
double dd;
|
||||
float ff;
|
||||
/* floats and doubles are returned in fpr1. fpr's have a size of 8 bytes.
|
||||
We need to truncate the return value into float size (4 byte) if
|
||||
necessary. */
|
||||
|
||||
if (TYPE_LENGTH (valtype) > 4) /* this is a double */
|
||||
memcpy (valbuf,
|
||||
®buf[DEPRECATED_REGISTER_BYTE (FP0_REGNUM + 1)],
|
||||
TYPE_LENGTH (valtype));
|
||||
else
|
||||
{ /* float */
|
||||
memcpy (&dd, ®buf[DEPRECATED_REGISTER_BYTE (FP0_REGNUM + 1)], 8);
|
||||
ff = (float) dd;
|
||||
memcpy (valbuf, &ff, sizeof (float));
|
||||
}
|
||||
convert_typed_floating (®buf[DEPRECATED_REGISTER_BYTE
|
||||
(FP0_REGNUM + 1)],
|
||||
builtin_type_double,
|
||||
valbuf,
|
||||
valtype);
|
||||
}
|
||||
else if (TYPE_CODE (valtype) == TYPE_CODE_ARRAY
|
||||
&& TYPE_LENGTH (valtype) == 16
|
||||
|
Reference in New Issue
Block a user