* rs6000-tdep.c (extract_return_value): Fix returning of values
whose length is less than the register size for big endian targets.
This commit is contained in:
parent
f2d1b56f40
commit
07781ac0c3
|
@ -1,3 +1,8 @@
|
|||
Sat Aug 12 03:18:04 1995 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
|
||||
|
||||
* rs6000-tdep.c (extract_return_value): Fix returning of values
|
||||
whose length is less than the register size for big endian targets.
|
||||
|
||||
Fri Aug 11 13:04:32 1995 Kung Hsu <kung@mexican.cygnus.com>
|
||||
|
||||
* symtab.c (list_symbols): if break command set breakpoint on matched
|
||||
|
|
|
@ -826,6 +826,7 @@ extract_return_value (valtype, regbuf, valbuf)
|
|||
char regbuf[REGISTER_BYTES];
|
||||
char *valbuf;
|
||||
{
|
||||
int offset = 0;
|
||||
|
||||
if (TYPE_CODE (valtype) == TYPE_CODE_FLT) {
|
||||
|
||||
|
@ -843,9 +844,15 @@ extract_return_value (valtype, regbuf, valbuf)
|
|||
memcpy (valbuf, &ff, sizeof(float));
|
||||
}
|
||||
}
|
||||
else
|
||||
else {
|
||||
/* return value is copied starting from r3. */
|
||||
memcpy (valbuf, ®buf[REGISTER_BYTE (3)], TYPE_LENGTH (valtype));
|
||||
if (TARGET_BYTE_ORDER == BIG_ENDIAN
|
||||
&& TYPE_LENGTH (valtype) < REGISTER_RAW_SIZE (3))
|
||||
offset = REGISTER_RAW_SIZE (3) - TYPE_LENGTH (valtype);
|
||||
|
||||
memcpy (valbuf, regbuf + REGISTER_BYTE (3) + offset,
|
||||
TYPE_LENGTH (valtype));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue