From a1677dfb5ef9883154db5c193c0464a88f6a3b07 Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Fri, 16 Nov 2001 02:48:30 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 6 ++++++ gdb/s390-tdep.c | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0f6c602ab5b..3e20ed5efae 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2001-11-15 Jim Blandy + + * 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 * remote.c (struct packet_reg): Declare. diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index d2fa1a0f5a6..d79654d878f 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)); } -- 2.30.2