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);
     }


             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: link
Be 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).