diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/s390-tdep.c | 7 |
2 files changed, 11 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0f6c602..3e20ed5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2001-11-15 Jim Blandy <jimb@redhat.com> + + * s390-tdep.c (is_simple_arg): Structs and unions exactly eight + bytes long should be handled as DOUBLE_ARGs; don't recognize them + as SIMPLE_ARGs. + 2001-11-12 Andrew Cagney <ac131313@redhat.com> * remote.c (struct packet_reg): Declare. diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index d2fa1a0..d79654d 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -1243,10 +1243,13 @@ is_simple_arg (struct type *type) enum type_code code = TYPE_CODE (type); unsigned length = TYPE_LENGTH (type); + /* This is almost a direct translation of the ABI's language, except + that we have to exclude 8-byte structs; those are DOUBLE_ARGs. */ return ((is_integer_like (type) && length <= 4) || is_pointer_like (type) - || code == TYPE_CODE_STRUCT - || code == TYPE_CODE_UNION + || ((code == TYPE_CODE_STRUCT + || code == TYPE_CODE_UNION) + && length != 8) || (code == TYPE_CODE_FLT && length == 16)); } |