public inbox for gdb-cvs@sourceware.org help / color / mirror / Atom feed
From: Andreas Arnez <arnez@sourceware.org> To: gdb-cvs@sourceware.org Subject: [binutils-gdb] s390: Implement 'type_align' gdbarch method Date: Fri, 09 Aug 2019 18:30:00 -0000 [thread overview] Message-ID: <20190809183053.65562.qmail@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1022c627dbd9d7f7f67ac68f16de05474de7a75a commit 1022c627dbd9d7f7f67ac68f16de05474de7a75a Author: Andreas Arnez <arnez@linux.ibm.com> Date: Fri Aug 9 20:27:03 2019 +0200 s390: Implement 'type_align' gdbarch method The align.exp test case yields many FAILs on s390x, since GDB's _Alignoff doesn't always agree with the compiler's. On s390x, the maximum alignment is 8, but GDB returns an alignment of 16 for 16-byte data types such as "long double". This is fixed by implementing the type_align gdbarch method. The new method returns an alignment of 8 for all integer, floating-point, and vector types larger than 8 bytes. With this change, all align.exp tests pass. gdb/ChangeLog: * s390-tdep.c (s390_type_align): New function. (s390_gdbarch_init): Set it as type_align gdbarch method. Diff: --- gdb/ChangeLog | 5 +++++ gdb/s390-tdep.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6e6390c..00e4bac 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-08-09 Andreas Arnez <arnez@linux.ibm.com> + + * s390-tdep.c (s390_type_align): New function. + (s390_gdbarch_init): Set it as type_align gdbarch method. + 2019-08-09 Tom de Vries <tdevries@suse.de> PR gdb/24591 diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index 4b93101..871efc5 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -52,6 +52,37 @@ constexpr gdb_byte s390_break_insn[] = { 0x0, 0x1 }; typedef BP_MANIPULATION (s390_break_insn) s390_breakpoint; +/* Types. */ + +/* Implement the gdbarch type alignment method. */ + +static ULONGEST +s390_type_align (gdbarch *gdbarch, struct type *t) +{ + t = check_typedef (t); + + if (TYPE_LENGTH (t) > 8) + { + switch (TYPE_CODE (t)) + { + case TYPE_CODE_INT: + case TYPE_CODE_RANGE: + case TYPE_CODE_FLT: + case TYPE_CODE_ENUM: + case TYPE_CODE_CHAR: + case TYPE_CODE_BOOL: + case TYPE_CODE_DECFLOAT: + return 8; + + case TYPE_CODE_ARRAY: + if (TYPE_VECTOR (t)) + return 8; + break; + } + } + return 0; +} + /* Decoding S/390 instructions. */ /* Read a single instruction from address AT. */ @@ -6944,6 +6975,8 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_long_double_bit (gdbarch, 128); set_gdbarch_long_double_format (gdbarch, floatformats_ia64_quad); + set_gdbarch_type_align (gdbarch, s390_type_align); + /* Breakpoints. */ /* Amount PC must be decremented by after a breakpoint. This is often the number of bytes returned by gdbarch_breakpoint_from_pc but not
reply other threads:[~2019-08-09 18:30 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190809183053.65562.qmail@sourceware.org \ --to=arnez@sourceware.org \ --cc=gdb-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).