mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 20:28:28 +08:00
* 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:
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user