aboutsummaryrefslogtreecommitdiff
path: root/gdb/s390-tdep.c
diff options
context:
space:
mode:
authorJim Blandy <jimb@codesourcery.com>2001-11-16 02:48:30 +0000
committerJim Blandy <jimb@codesourcery.com>2001-11-16 02:48:30 +0000
commita1677dfb5ef9883154db5c193c0464a88f6a3b07 (patch)
treee547251f0f6a2315b85529998d404793e30d0e23 /gdb/s390-tdep.c
parent6150ba3d44d5a6194394a1214c98e951c6f69c0d (diff)
downloadgdb-a1677dfb5ef9883154db5c193c0464a88f6a3b07.zip
gdb-a1677dfb5ef9883154db5c193c0464a88f6a3b07.tar.gz
gdb-a1677dfb5ef9883154db5c193c0464a88f6a3b07.tar.bz2
* 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.
Diffstat (limited to 'gdb/s390-tdep.c')
-rw-r--r--gdb/s390-tdep.c7
1 files changed, 5 insertions, 2 deletions
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));
}