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: Mon, 7 Dec 2020 14:42:20 +0000 (GMT) [thread overview] Message-ID: <20201207144221.00E20385783D@sourceware.org> (raw) https://gcc.gnu.org/g:792757d44e27b345149b2dc99ba25fe0600d04df commit 792757d44e27b345149b2dc99ba25fe0600d04df 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 | 281 +++++++++++++++++++++++- libphobos/src/std/datetime/package.d | 15 +- 2 files changed, 276 insertions(+), 20 deletions(-) diff --git a/libphobos/libdruntime/core/sys/posix/ucontext.d b/libphobos/libdruntime/core/sys/posix/ucontext.d index ef74771a50d..f363b990b8f 100644 --- a/libphobos/libdruntime/core/sys/posix/ucontext.d +++ b/libphobos/libdruntime/core/sys/posix/ucontext.d @@ -920,16 +920,283 @@ else version (CRuntime_Musl) } else version (Darwin) { - alias mcontext_t = void; + private + { + version (X86_Any) + { + struct __darwin_fp_control + { + ushort __flags; + } + + struct __darwin_fp_status + { + ushort __flags; + } + + struct __darwin_mmst_reg + { + char[10] __mmst_reg; + char[6] __mmst_rsrv; + } + + struct __darwin_xmm_reg + { + char[16] __xmm_reg; + } + + struct __darwin_i386_exception_state + { + uint __trapno; + uint __err; + uint __faultvaddr; + } + + struct __darwin_i386_thread_state + { + uint __eax; + uint __ebx; + uint __ecx; + uint __edx; + uint __edi; + uint __esi; + uint __ebp; + uint __esp; + uint __ss; + uint __eflags; + uint __eip; + uint __cs; + uint __ds; + uint __es; + uint __fs; + uint __gs; + } + + struct __darwin_i386_float_state + { + int[2] __fpu_reserved; + __darwin_fp_control __fpu_fcw; + __darwin_fp_status __fpu_fsw; + ubyte __fpu_ftw; + ubyte __fpu_rsrv1; + ushort __fpu_fop; + uint __fpu_ip; + ushort __fpu_cs; + ushort __fpu_rsrv2; + uint __fpu_dp; + ushort __fpu_ds; + ushort __fpu_rsrv3; + uint __fpu_mxcsr; + uint __fpu_mxcsrmask; + __darwin_mmst_reg __fpu_stmm0; + __darwin_mmst_reg __fpu_stmm1; + __darwin_mmst_reg __fpu_stmm2; + __darwin_mmst_reg __fpu_stmm3; + __darwin_mmst_reg __fpu_stmm4; + __darwin_mmst_reg __fpu_stmm5; + __darwin_mmst_reg __fpu_stmm6; + __darwin_mmst_reg __fpu_stmm7; + __darwin_xmm_reg __fpu_xmm0; + __darwin_xmm_reg __fpu_xmm1; + __darwin_xmm_reg __fpu_xmm2; + __darwin_xmm_reg __fpu_xmm3; + __darwin_xmm_reg __fpu_xmm4; + __darwin_xmm_reg __fpu_xmm5; + __darwin_xmm_reg __fpu_xmm6; + __darwin_xmm_reg __fpu_xmm7; + char[14*16] __fpu_rsrv4; + int __fpu_reserved1; + } + + struct __darwin_x86_exception_state64 + { + uint __trapno; + uint __err; + ulong __faultvaddr; + } + + struct __darwin_x86_thread_state64 + { + ulong __rax; + ulong __rbx; + ulong __rcx; + ulong __rdx; + ulong __rdi; + ulong __rsi; + ulong __rbp; + ulong __rsp; + ulong __r8; + ulong __r9; + ulong __r10; + ulong __r11; + ulong __r12; + ulong __r13; + ulong __r14; + ulong __r15; + ulong __rip; + ulong __rflags; + ulong __cs; + ulong __fs; + ulong __gs; + } + + struct __darwin_x86_float_state64 + { + int[2] __fpu_reserved; + __darwin_fp_control __fpu_fcw; + __darwin_fp_status __fpu_fsw; + ubyte __fpu_ftw; + ubyte __fpu_rsrv1; + ushort __fpu_fop; + uint __fpu_ip; + ushort __fpu_cs; + ushort __fpu_rsrv2; + uint __fpu_dp; + ushort __fpu_ds; + ushort __fpu_rsrv3; + uint __fpu_mxcsr; + uint __fpu_mxcsrmask; + __darwin_mmst_reg __fpu_stmm0; + __darwin_mmst_reg __fpu_stmm1; + __darwin_mmst_reg __fpu_stmm2; + __darwin_mmst_reg __fpu_stmm3; + __darwin_mmst_reg __fpu_stmm4; + __darwin_mmst_reg __fpu_stmm5; + __darwin_mmst_reg __fpu_stmm6; + __darwin_mmst_reg __fpu_stmm7; + __darwin_xmm_reg __fpu_xmm0; + __darwin_xmm_reg __fpu_xmm1; + __darwin_xmm_reg __fpu_xmm2; + __darwin_xmm_reg __fpu_xmm3; + __darwin_xmm_reg __fpu_xmm4; + __darwin_xmm_reg __fpu_xmm5; + __darwin_xmm_reg __fpu_xmm6; + __darwin_xmm_reg __fpu_xmm7; + __darwin_xmm_reg __fpu_xmm8; + __darwin_xmm_reg __fpu_xmm9; + __darwin_xmm_reg __fpu_xmm10; + __darwin_xmm_reg __fpu_xmm11; + __darwin_xmm_reg __fpu_xmm12; + __darwin_xmm_reg __fpu_xmm13; + __darwin_xmm_reg __fpu_xmm14; + __darwin_xmm_reg __fpu_xmm15; + char[6*16] __fpu_rsrv4; + int __fpu_reserved1; + } + + version (X86) + { + struct __darwin_mcontext + { + __darwin_i386_exception_state __es; + __darwin_i386_thread_state __ss; + __darwin_i386_float_state __fs; + } + } + else version (X86_64) + { + struct __darwin_mcontext + { + __darwin_x86_exception_state64 __es; + __darwin_x86_thread_state64 __ss; + __darwin_x86_float_state64 __fs; + } + } + } + else version (PPC_Any) + { + struct __darwin_ppc_exception_state + { + uint __dar; + uint __dsisr; + uint __exception; + uint __pad0; + uint[4] __pad1; + } + + struct __darwin_ppc_thread_state + { + uint __srr0; + uint __srr1; + uint __r0; + uint __r1; + uint __r2; + uint __r3; + uint __r4; + uint __r5; + uint __r6; + uint __r7; + uint __r8; + uint __r9; + uint __r10; + uint __r11; + uint __r12; + uint __r13; + uint __r14; + uint __r15; + uint __r16; + uint __r17; + uint __r18; + uint __r19; + uint __r20; + uint __r21; + uint __r22; + uint __r23; + uint __r24; + uint __r25; + uint __r26; + uint __r27; + uint __r28; + uint __r29; + uint __r30; + uint __r31; + uint __cr; + uint __xer; + uint __lr; + uint __ctr; + uint __mq; + uint __vrsave; + } + + struct __darwin_ppc_float_state + { + double[32] __fpregs; + uint __fpscr_pad; + uint __fpscr; + } + + struct __darwin_ppc_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_ppc_exception_state __es; + __darwin_ppc_thread_state __ss; + __darwin_ppc_float_state __fs; + __darwin_ppc_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-07 14:42 UTC|newest] Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-12-07 14:42 Iain Buclaw [this message] 2020-12-07 23:13 Iain Buclaw 2020-12-09 9:51 Iain Buclaw 2020-12-22 13:41 Iain Buclaw 2021-01-11 11:39 Iain Buclaw 2021-01-28 17:32 Iain Buclaw 2021-01-30 19:08 Iain Buclaw 2021-03-07 17:01 Iain Buclaw 2021-03-14 22:00 Iain Buclaw 2021-04-10 15:04 Iain Buclaw 2021-04-10 17:01 Iain Buclaw 2021-04-19 18:06 Iain Buclaw 2021-09-17 14:34 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=20201207144221.00E20385783D@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).