mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-25 13:27:26 +08:00
* i386-tdep.c (i386_reg_struct_return_p): Handle structures with a
single 'long double' member correctly. (i386_return_value): Tweak comment.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2005-07-18 Mark Kettenis <kettenis@gnu.org>
|
||||||
|
|
||||||
|
* i386-tdep.c (i386_reg_struct_return_p): Handle structures with a
|
||||||
|
single 'long double' member correctly.
|
||||||
|
(i386_return_value): Tweak comment.
|
||||||
|
|
||||||
2005-07-16 Nick Roberts <nickrob@snap.net.nz>
|
2005-07-16 Nick Roberts <nickrob@snap.net.nz>
|
||||||
|
|
||||||
* mi/gdb-mi.el: Update for changes in Emacs 22.0.50. Bring more
|
* mi/gdb-mi.el: Update for changes in Emacs 22.0.50. Bring more
|
||||||
|
@ -1427,6 +1427,15 @@ i386_reg_struct_return_p (struct gdbarch *gdbarch, struct type *type)
|
|||||||
&& tdep->struct_return == pcc_struct_return))
|
&& tdep->struct_return == pcc_struct_return))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
/* Structures consisting of a single `float', `double' or 'long
|
||||||
|
double' member are returned in %st(0). */
|
||||||
|
if (code == TYPE_CODE_STRUCT && TYPE_NFIELDS (type) == 1)
|
||||||
|
{
|
||||||
|
type = check_typedef (TYPE_FIELD_TYPE (type, 0));
|
||||||
|
if (TYPE_CODE (type) == TYPE_CODE_FLT)
|
||||||
|
return (len == 4 || len == 8 || len == 12);
|
||||||
|
}
|
||||||
|
|
||||||
return (len == 1 || len == 2 || len == 4 || len == 8);
|
return (len == 1 || len == 2 || len == 4 || len == 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1469,11 +1478,12 @@ i386_return_value (struct gdbarch *gdbarch, struct type *type,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* This special case is for structures consisting of a single
|
/* This special case is for structures consisting of a single
|
||||||
`float' or `double' member. These structures are returned in
|
`float', `double' or 'long double' member. These structures are
|
||||||
%st(0). For these structures, we call ourselves recursively,
|
returned in %st(0). For these structures, we call ourselves
|
||||||
changing TYPE into the type of the first member of the structure.
|
recursively, changing TYPE into the type of the first member of
|
||||||
Since that should work for all structures that have only one
|
the structure. Since that should work for all structures that
|
||||||
member, we don't bother to check the member's type here. */
|
have only one member, we don't bother to check the member's type
|
||||||
|
here. */
|
||||||
if (code == TYPE_CODE_STRUCT && TYPE_NFIELDS (type) == 1)
|
if (code == TYPE_CODE_STRUCT && TYPE_NFIELDS (type) == 1)
|
||||||
{
|
{
|
||||||
type = check_typedef (TYPE_FIELD_TYPE (type, 0));
|
type = check_typedef (TYPE_FIELD_TYPE (type, 0));
|
||||||
|
Reference in New Issue
Block a user