* 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>
|
Fri Aug 11 13:04:32 1995 Kung Hsu <kung@mexican.cygnus.com>
|
||||||
|
|
||||||
* symtab.c (list_symbols): if break command set breakpoint on matched
|
* 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 regbuf[REGISTER_BYTES];
|
||||||
char *valbuf;
|
char *valbuf;
|
||||||
{
|
{
|
||||||
|
int offset = 0;
|
||||||
|
|
||||||
if (TYPE_CODE (valtype) == TYPE_CODE_FLT) {
|
if (TYPE_CODE (valtype) == TYPE_CODE_FLT) {
|
||||||
|
|
||||||
|
@ -843,9 +844,15 @@ extract_return_value (valtype, regbuf, valbuf)
|
||||||
memcpy (valbuf, &ff, sizeof(float));
|
memcpy (valbuf, &ff, sizeof(float));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
/* return value is copied starting from r3. */
|
/* 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