public inbox for gcc-cvs@sourceware.org help / color / mirror / Atom feed
From: Iain Buclaw <ibuclaw@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org Subject: [gcc r10-10582] libphobos: Give _Unwind_Exception an alignment that best resembles __attribute__((aligned)) Date: Tue, 26 Apr 2022 15:14:47 +0000 (GMT) [thread overview] Message-ID: <20220426151447.68CD9385842B@sourceware.org> (raw) https://gcc.gnu.org/g:a94620503e8a79917aca25ab7d804232ba12efc0 commit r10-10582-ga94620503e8a79917aca25ab7d804232ba12efc0 Author: Iain Buclaw <ibuclaw@gdcproject.org> Date: Sat Sep 25 19:50:52 2021 +0200 libphobos: Give _Unwind_Exception an alignment that best resembles __attribute__((aligned)) For interoperability with C++ EH, the alignment should match, otherwise D may not be able to intercept exceptions thrown from C++. libphobos/ChangeLog: * libdruntime/gcc/unwind/generic.d (__aligned__): Define. (_Unwind_Exception): Align struct to __aligned__. (cherry picked from commit efa5449a094d3887e124d400ff0410af2c745b2d) Diff: --- libphobos/libdruntime/gcc/unwind/generic.d | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/libphobos/libdruntime/gcc/unwind/generic.d b/libphobos/libdruntime/gcc/unwind/generic.d index 9c164b6fbac..cca437df926 100644 --- a/libphobos/libdruntime/gcc/unwind/generic.d +++ b/libphobos/libdruntime/gcc/unwind/generic.d @@ -123,7 +123,27 @@ enum : _Unwind_Reason_Code // @@@ The IA-64 ABI says that this structure must be double-word aligned. // Taking that literally does not make much sense generically. Instead we // provide the maximum alignment required by any type for the machine. -struct _Unwind_Exception + version (ARM) private enum __aligned__ = 8; +else version (AArch64) private enum __aligned__ = 16; +else version (HPPA) private enum __aligned__ = 8; +else version (HPPA64) private enum __aligned__ = 16; +else version (MIPS_N32) private enum __aligned__ = 16; +else version (MIPS_N64) private enum __aligned__ = 16; +else version (MIPS32) private enum __aligned__ = 8; +else version (MIPS64) private enum __aligned__ = 8; +else version (PPC) private enum __aligned__ = 16; +else version (PPC64) private enum __aligned__ = 16; +else version (RISCV32) private enum __aligned__ = 16; +else version (RISCV64) private enum __aligned__ = 16; +else version (S390) private enum __aligned__ = 8; +else version (SPARC) private enum __aligned__ = 8; +else version (SPARC64) private enum __aligned__ = 16; +else version (SystemZ) private enum __aligned__ = 8; +else version (X86) private enum __aligned__ = 16; +else version (X86_64) private enum __aligned__ = 16; +else static assert( false, "Platform not supported."); + +align(__aligned__) struct _Unwind_Exception { _Unwind_Exception_Class exception_class; _Unwind_Exception_Cleanup_Fn exception_cleanup;
reply other threads:[~2022-04-26 15:14 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=20220426151447.68CD9385842B@sourceware.org \ --to=ibuclaw@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.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).