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(refs/users/ibuclaw/heads/darwin)] libphobos: Fix mcontext_t definitions for Darwin Date: Tue, 22 Dec 2020 13:41:18 +0000 (GMT) [thread overview] Message-ID: <20201222134118.58989382D82A@sourceware.org> (raw) https://gcc.gnu.org/g:bd88dd39f4773177eb961768c61ce375c0d71e8d commit bd88dd39f4773177eb961768c61ce375c0d71e8d Author: Iain Buclaw <ibuclaw@gdcproject.org> Date: Mon Dec 7 15:42:09 2020 +0100 libphobos: Fix mcontext_t definitions for Darwin Diff: --- libphobos/libdruntime/core/sys/posix/ucontext.d | 119 ++++++++++++++++++++++-- libphobos/src/std/datetime/package.d | 15 +-- 2 files changed, 114 insertions(+), 20 deletions(-) diff --git a/libphobos/libdruntime/core/sys/posix/ucontext.d b/libphobos/libdruntime/core/sys/posix/ucontext.d index ef74771a50d..9400edd11f2 100644 --- a/libphobos/libdruntime/core/sys/posix/ucontext.d +++ b/libphobos/libdruntime/core/sys/posix/ucontext.d @@ -920,16 +920,121 @@ else version (CRuntime_Musl) } else version (Darwin) { - alias mcontext_t = void; + private + { + version (X86_Any) + { + struct __darwin_mmst_reg + { + char[10] __mmst_reg; + char[6] __mmst_rsrv; + } + + struct __darwin_xmm_reg + { + char[16] __xmm_reg; + } + + struct __darwin_exception_state + { + uint __trapno; + uint __err; + version (X86_64) + ulong __faultvaddr; + else + uint __faultvaddr; + } + + struct __darwin_thread_state + { + version (X86_64) + ulong[21] __regs; + else + uint[16] __regs; + } + + struct __darwin_float_state + { + int[2] __fpu_reserved; + ushort __fpu_fcw; + ushort __fpu_fsw; + uint[7] __fpu_regs; + __darwin_mmst_reg[8] __fpu_stmm; + version (X86_64) + { + __darwin_xmm_reg[16] __fpu_xmm; + char[6*16] __fpu_rsrv4; + } + else + { + __darwin_xmm_reg[8] __fpu_xmm; + char[14*16] __fpu_rsrv4; + } + int __fpu_reserved1; + } + + struct __darwin_mcontext + { + __darwin_exception_state __es; + __darwin_thread_state __ss; + __darwin_float_state __fs; + } + } + else version (PPC_Any) + { + struct __darwin_exception_state + { + uint __dar; + uint __dsisr; + uint __exception; + uint __pad0; + uint[4] __pad1; + } + + struct __darwin_thread_state + { + uint[40] __regs; + } + + struct __darwin_float_state + { + double[32] __fpregs; + uint __fpscr_pad; + uint __fpscr; + } + + struct __darwin_vector_state + { + uint[32][4] __save_vr; + uint[4] __save_vscr; + uint[4] __save_pad5; + uint __save_vrvalid; + uint[7] __save_pad6; + } + + struct __darwin_mcontext + { + __darwin_exception_state __es; + __darwin_thread_state __ss; + __darwin_float_state __fs; + __darwin_vector_state __vs; + } + } + else + static assert(false, "mcontext_t unimplemented for this platform."); + } + + alias mcontext_t = __darwin_mcontext*; struct ucontext { - int uc_onstack; - sigset_t uc_sigmask; - stack_t uc_stack; - ucontext* uc_link; - size_t uc_mcsize; - mcontext_t* uc_mcontext; + int uc_onstack; + sigset_t uc_sigmask; + stack_t uc_stack; + ucontext* uc_link; + size_t uc_mcsize; + __darwin_mcontext* uc_mcontext; + __darwin_mcontext __mcontext_data; } alias ucontext_t = ucontext; diff --git a/libphobos/src/std/datetime/package.d b/libphobos/src/std/datetime/package.d index 976d06ddb79..a5fd03d39e9 100644 --- a/libphobos/src/std/datetime/package.d +++ b/libphobos/src/std/datetime/package.d @@ -115,7 +115,6 @@ public import std.datetime.interval; public import std.datetime.systime; public import std.datetime.timezone; -import core.exception : AssertError; import std.functional : unaryFun; import std.traits; import std.typecons : Flag, Yes, No; @@ -267,12 +266,7 @@ public: StopWatch sw; sw.start(); auto t1 = sw.peek(); - bool doublestart = true; - try - sw.start(); - catch (AssertError e) - doublestart = false; - assert(!doublestart); + assert(sw._flagStarted); sw.stop(); assert((t1 - sw.peek()).to!("seconds", real)() <= 0); } @@ -294,12 +288,7 @@ public: sw.start(); sw.stop(); auto t1 = sw.peek(); - bool doublestop = true; - try - sw.stop(); - catch (AssertError e) - doublestop = false; - assert(!doublestop); + assert(!sw._flagStarted); assert((t1 - sw.peek()).to!("seconds", real)() == 0); }
next reply other threads:[~2020-12-22 13:41 UTC|newest] Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-12-22 13:41 Iain Buclaw [this message] -- strict thread matches above, loose matches on Subject: below -- 2021-09-17 14:34 Iain Buclaw 2021-04-19 18:06 Iain Buclaw 2021-04-10 17:01 Iain Buclaw 2021-04-10 15:04 Iain Buclaw 2021-03-14 22:00 Iain Buclaw 2021-03-07 17:01 Iain Buclaw 2021-01-30 19:08 Iain Buclaw 2021-01-28 17:32 Iain Buclaw 2021-01-11 11:39 Iain Buclaw 2020-12-09 9:51 Iain Buclaw 2020-12-07 23:13 Iain Buclaw 2020-12-07 14:42 Iain Buclaw
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=20201222134118.58989382D82A@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).