Wrong return convention for arrays (mips-irix).
* mips-tdep.c (mips_n32n64_return_value): Arrays whose size is 128 bits or smaller are returned the same way as structs and unions of the the same size.
This commit is contained in:
parent
e4b97d48ee
commit
f08877ba09
2 changed files with 12 additions and 5 deletions
|
@ -1,3 +1,10 @@
|
|||
2010-01-09 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
Wrong return convention for arrays (mips-irix).
|
||||
* mips-tdep.c (mips_n32n64_return_value): Arrays whose size is
|
||||
128 bits or smaller are returned the same way as structs
|
||||
and unions of the the same size.
|
||||
|
||||
2010-01-09 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
Cannot set the PC on mips-irix.
|
||||
|
|
|
@ -3379,7 +3379,7 @@ mips_n32n64_return_value (struct gdbarch *gdbarch, struct type *func_type,
|
|||
(and $f2 if necessary). This is a generalization of the Fortran COMPLEX
|
||||
case.
|
||||
|
||||
* Any other struct or union results of at most 128 bits are returned in
|
||||
* Any other composite results of at most 128 bits are returned in
|
||||
$2 (first 64 bits) and $3 (remainder, if necessary).
|
||||
|
||||
* Larger composite results are handled by converting the function to a
|
||||
|
@ -3390,8 +3390,7 @@ mips_n32n64_return_value (struct gdbarch *gdbarch, struct type *func_type,
|
|||
specific exception to return COMPLEX results in the floating point
|
||||
registers.] */
|
||||
|
||||
if (TYPE_CODE (type) == TYPE_CODE_ARRAY
|
||||
|| TYPE_LENGTH (type) > 2 * MIPS64_REGSIZE)
|
||||
if (TYPE_LENGTH (type) > 2 * MIPS64_REGSIZE)
|
||||
return RETURN_VALUE_STRUCT_CONVENTION;
|
||||
else if (TYPE_CODE (type) == TYPE_CODE_FLT
|
||||
&& TYPE_LENGTH (type) == 16
|
||||
|
@ -3481,9 +3480,10 @@ mips_n32n64_return_value (struct gdbarch *gdbarch, struct type *func_type,
|
|||
return RETURN_VALUE_REGISTER_CONVENTION;
|
||||
}
|
||||
else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
|
||||
|| TYPE_CODE (type) == TYPE_CODE_UNION)
|
||||
|| TYPE_CODE (type) == TYPE_CODE_UNION
|
||||
|| TYPE_CODE (type) == TYPE_CODE_ARRAY)
|
||||
{
|
||||
/* A structure or union. Extract the left justified value,
|
||||
/* A composite type. Extract the left justified value,
|
||||
regardless of the byte order. I.e. DO NOT USE
|
||||
mips_xfer_lower. */
|
||||
int offset;
|
||||
|
|
Loading…
Reference in a new issue