320e56fde5
and sync with upstream: enable D programming language as in
5bbe16ae7b
1216 lines
31 KiB
Diff
1216 lines
31 KiB
Diff
diff -Nurp a/libphobos/libdruntime/core/stdc/fenv.d b/libphobos/libdruntime/core/stdc/fenv.d
|
|
--- a/libphobos/libdruntime/core/stdc/fenv.d 2019-10-28 06:37:30.000000000 +0900
|
|
+++ b/libphobos/libdruntime/core/stdc/fenv.d 2019-10-28 08:08:09.000000000 +0900
|
|
@@ -375,7 +375,44 @@ else version (Solaris)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
- version (X86_64)
|
|
+ version (AArch64)
|
|
+ {
|
|
+ struct fenv_t
|
|
+ {
|
|
+ uint __fpcr;
|
|
+ uint __fpsr;
|
|
+ }
|
|
+ alias uint fexcept_t;
|
|
+ }
|
|
+ else version (ARM)
|
|
+ {
|
|
+ import core.stdc.config : c_ulong;
|
|
+
|
|
+ struct fenv_t
|
|
+ {
|
|
+ c_ulong __cw;
|
|
+ }
|
|
+ alias c_ulong fexcept_t;
|
|
+ }
|
|
+ else version (IBMZ_Any)
|
|
+ {
|
|
+ alias uint fenv_t;
|
|
+ alias uint fexcept_t;
|
|
+ }
|
|
+ else version (MIPS_Any)
|
|
+ {
|
|
+ struct fenv_t
|
|
+ {
|
|
+ uint __cw;
|
|
+ }
|
|
+ alias ushort fexcept_t;
|
|
+ }
|
|
+ else version (PPC_Any)
|
|
+ {
|
|
+ alias double fenv_t;
|
|
+ alias uint fexcept_t;
|
|
+ }
|
|
+ else version (X86_Any)
|
|
{
|
|
struct fenv_t
|
|
{
|
|
@@ -391,7 +428,8 @@ else version (CRuntime_Musl)
|
|
uint __data_offset;
|
|
ushort __data_selector;
|
|
ushort __unused5;
|
|
- uint __mxcsr;
|
|
+ version (X86_64)
|
|
+ uint __mxcsr;
|
|
}
|
|
alias ushort fexcept_t;
|
|
}
|
|
diff -Nurp a/libphobos/libdruntime/core/sys/posix/dirent.d b/libphobos/libdruntime/core/sys/posix/dirent.d
|
|
--- a/libphobos/libdruntime/core/sys/posix/dirent.d 2019-10-28 06:37:30.000000000 +0900
|
|
+++ b/libphobos/libdruntime/core/sys/posix/dirent.d 2019-10-28 08:08:09.000000000 +0900
|
|
@@ -506,7 +506,7 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
-
|
|
+ int readdir_r(DIR*, dirent*, dirent**);
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
@@ -591,6 +591,8 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
+ void seekdir(DIR*, c_long);
|
|
+ c_long telldir(DIR*);
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
diff -Nurp a/libphobos/libdruntime/core/sys/posix/pthread.d b/libphobos/libdruntime/core/sys/posix/pthread.d
|
|
--- a/libphobos/libdruntime/core/sys/posix/pthread.d 2019-10-28 06:37:30.000000000 +0900
|
|
+++ b/libphobos/libdruntime/core/sys/posix/pthread.d 2019-10-28 08:08:09.000000000 +0900
|
|
@@ -854,7 +854,15 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
+ enum PTHREAD_BARRIER_SERIAL_THREAD = -1;
|
|
|
|
+ int pthread_barrier_destroy(pthread_barrier_t*);
|
|
+ int pthread_barrier_init(pthread_barrier_t*, in pthread_barrierattr_t*, uint);
|
|
+ int pthread_barrier_wait(pthread_barrier_t*);
|
|
+ int pthread_barrierattr_destroy(pthread_barrierattr_t*);
|
|
+ int pthread_barrierattr_getpshared(in pthread_barrierattr_t*, int*);
|
|
+ int pthread_barrierattr_init(pthread_barrierattr_t*);
|
|
+ int pthread_barrierattr_setpshared(pthread_barrierattr_t*, int);
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
@@ -880,6 +888,55 @@ else
|
|
int pthread_condattr_getclock(in pthread_condattr_t*, clockid_t*);
|
|
int pthread_condattr_setclock(pthread_condattr_t*, clockid_t);
|
|
*/
|
|
+version (CRuntime_Glibc)
|
|
+{
|
|
+ int pthread_condattr_getclock(in pthread_condattr_t*, clockid_t*);
|
|
+ int pthread_condattr_setclock(pthread_condattr_t*, clockid_t);
|
|
+}
|
|
+else version (FreeBSD)
|
|
+{
|
|
+ int pthread_condattr_getclock(in pthread_condattr_t*, clockid_t*);
|
|
+ int pthread_condattr_setclock(pthread_condattr_t*, clockid_t);
|
|
+}
|
|
+else version (DragonFlyBSD)
|
|
+{
|
|
+ int pthread_condattr_getclock(in pthread_condattr_t*, clockid_t*);
|
|
+ int pthread_condattr_setclock(pthread_condattr_t*, clockid_t);
|
|
+}
|
|
+else version (NetBSD)
|
|
+{
|
|
+ int pthread_condattr_setclock(pthread_condattr_t*, clockid_t);
|
|
+}
|
|
+else version (OpenBSD)
|
|
+{
|
|
+ int pthread_condattr_getclock(in pthread_condattr_t*, clockid_t*);
|
|
+ int pthread_condattr_setclock(pthread_condattr_t*, clockid_t);
|
|
+}
|
|
+else version (Darwin)
|
|
+{
|
|
+}
|
|
+else version (Solaris)
|
|
+{
|
|
+ int pthread_condattr_getclock(in pthread_condattr_t*, clockid_t*);
|
|
+ int pthread_condattr_setclock(pthread_condattr_t*, clockid_t);
|
|
+}
|
|
+else version (CRuntime_Bionic)
|
|
+{
|
|
+}
|
|
+else version (CRuntime_Musl)
|
|
+{
|
|
+ int pthread_condattr_getclock(in pthread_condattr_t*, clockid_t*);
|
|
+ int pthread_condattr_setclock(pthread_condattr_t*, clockid_t);
|
|
+}
|
|
+else version (CRuntime_UClibc)
|
|
+{
|
|
+ int pthread_condattr_getclock(in pthread_condattr_t*, clockid_t*);
|
|
+ int pthread_condattr_setclock(pthread_condattr_t*, clockid_t);
|
|
+}
|
|
+else
|
|
+{
|
|
+ static assert(false, "Unsupported platform");
|
|
+}
|
|
|
|
//
|
|
// Spinlock (SPI)
|
|
@@ -948,7 +1005,11 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
-
|
|
+ int pthread_spin_destroy(pthread_spinlock_t*);
|
|
+ int pthread_spin_init(pthread_spinlock_t*, int);
|
|
+ int pthread_spin_lock(pthread_spinlock_t*);
|
|
+ int pthread_spin_trylock(pthread_spinlock_t*);
|
|
+ int pthread_spin_unlock(pthread_spinlock_t*);
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
@@ -1187,7 +1248,7 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
-
|
|
+ int pthread_getcpuclockid(pthread_t, clockid_t*);
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
@@ -1256,7 +1317,9 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
-
|
|
+ int pthread_mutex_timedlock(pthread_mutex_t*, in timespec*);
|
|
+ int pthread_rwlock_timedrdlock(pthread_rwlock_t*, in timespec*);
|
|
+ int pthread_rwlock_timedwrlock(pthread_rwlock_t*, in timespec*);
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
@@ -1693,7 +1756,12 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
-
|
|
+ int pthread_condattr_getpshared(pthread_condattr_t*, int*);
|
|
+ int pthread_condattr_setpshared(pthread_condattr_t*, int);
|
|
+ int pthread_mutexattr_getpshared(pthread_mutexattr_t*, int*);
|
|
+ int pthread_mutexattr_setpshared(pthread_mutexattr_t*, int);
|
|
+ int pthread_rwlockattr_getpshared(pthread_rwlockattr_t*, int*);
|
|
+ int pthread_rwlockattr_setpshared(pthread_rwlockattr_t*, int);
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
diff -Nurp a/libphobos/libdruntime/core/sys/posix/pwd.d b/libphobos/libdruntime/core/sys/posix/pwd.d
|
|
--- a/libphobos/libdruntime/core/sys/posix/pwd.d 2019-10-28 06:37:30.000000000 +0900
|
|
+++ b/libphobos/libdruntime/core/sys/posix/pwd.d 2019-10-28 08:08:09.000000000 +0900
|
|
@@ -172,7 +172,8 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
- struct passwd {
|
|
+ struct passwd
|
|
+ {
|
|
char *pw_name;
|
|
char *pw_passwd;
|
|
uid_t pw_uid;
|
|
@@ -257,6 +258,8 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
+ int getpwnam_r(in char*, passwd*, char*, size_t, passwd**);
|
|
+ int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**);
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
@@ -325,8 +328,9 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
- int getpwnam_r(in char*, passwd*, char*, size_t, passwd**);
|
|
- int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**);
|
|
+ void endpwent();
|
|
+ passwd* getpwent();
|
|
+ void setpwent();
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
diff -Nurp a/libphobos/libdruntime/core/sys/posix/signal.d b/libphobos/libdruntime/core/sys/posix/signal.d
|
|
--- a/libphobos/libdruntime/core/sys/posix/signal.d 2019-10-28 07:12:22.000000000 +0900
|
|
+++ b/libphobos/libdruntime/core/sys/posix/signal.d 2019-10-28 08:08:09.000000000 +0900
|
|
@@ -1136,55 +1136,57 @@ else version (NetBSD)
|
|
enum SIG_UNBLOCK = 2;
|
|
enum SIG_SETMASK = 3;
|
|
|
|
- union sigval_t {
|
|
- int sival_int;
|
|
- void *sival_ptr;
|
|
- };
|
|
- struct _rt{
|
|
- pid_t _pid;
|
|
- uid_t _uid;
|
|
- sigval_t _value;
|
|
- };
|
|
- struct _child{
|
|
- pid_t _pid;
|
|
- uid_t _uid;
|
|
- int _status;
|
|
- clock_t _utime;
|
|
- clock_t _stime;
|
|
- };
|
|
- struct _fault{
|
|
- void *_addr;
|
|
- int _trap;
|
|
- int _trap2;
|
|
- int _trap3;
|
|
- };
|
|
- struct _poll{
|
|
- long _band;
|
|
- int _fd;
|
|
- };
|
|
- union _reason{
|
|
- _rt rt;
|
|
- _child child;
|
|
- _fault fault;
|
|
- _poll poll;
|
|
- };
|
|
- struct _ksiginfo {
|
|
+ union sigval_t
|
|
+ {
|
|
+ int sival_int;
|
|
+ void* sival_ptr;
|
|
+ }
|
|
+
|
|
+ struct _ksiginfo
|
|
+ {
|
|
int _signo;
|
|
int _code;
|
|
int _errno;
|
|
-/+#ifdef _LP64
|
|
- /* In _LP64 the union starts on an 8-byte boundary. */
|
|
- int _pad;
|
|
-#endif+/
|
|
- _reason reason;
|
|
- };
|
|
+ version (D_LP64)
|
|
+ int _pad;
|
|
|
|
+ union reason_t
|
|
+ {
|
|
+ struct rt_t
|
|
+ {
|
|
+ pid_t _pid;
|
|
+ uid_t _uid;
|
|
+ sigval_t _value;
|
|
+ } rt_t _rt;
|
|
+ struct child_t
|
|
+ {
|
|
+ pid_t _pid;
|
|
+ uid_t _uid;
|
|
+ int _status;
|
|
+ clock_t _utime;
|
|
+ clock_t _stime;
|
|
+ } child_t _child;
|
|
+ struct fault_t
|
|
+ {
|
|
+ void* _addr;
|
|
+ int _trap;
|
|
+ int _trap2;
|
|
+ int _trap3;
|
|
+ } fault_t fault;
|
|
+ struct poll_t
|
|
+ {
|
|
+ c_long _band;
|
|
+ int _fd;
|
|
+ } poll_t _poll;
|
|
+ }
|
|
+ reason_t _reason;
|
|
+ }
|
|
|
|
union siginfo_t
|
|
{
|
|
- ubyte[128] si_pad;/* Total size; for future expansion */
|
|
+ ubyte[128] si_pad;
|
|
_ksiginfo _info;
|
|
- @property ref c_long si_band() return { return _info.reason.poll._band; }
|
|
+ @property ref c_long si_band() return { return _info._reason._poll._band; }
|
|
}
|
|
|
|
enum SI_USER = 0;
|
|
@@ -1589,27 +1591,53 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
- struct sigset_t {
|
|
- ulong[128/long.sizeof] __bits;
|
|
+ struct sigset_t
|
|
+ {
|
|
+ c_ulong[128/c_long.sizeof] __bits;
|
|
}
|
|
|
|
- enum SIG_BLOCK = 0;
|
|
- enum SIG_UNBLOCK = 1;
|
|
- enum SIG_SETMASK = 2;
|
|
+ version (MIPS_Any)
|
|
+ {
|
|
+ enum SIG_BLOCK = 1;
|
|
+ enum SIG_UNBLOCK = 2;
|
|
+ enum SIG_SETMASK = 3;
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ enum SIG_BLOCK = 0;
|
|
+ enum SIG_UNBLOCK = 1;
|
|
+ enum SIG_SETMASK = 2;
|
|
+ }
|
|
|
|
- struct siginfo_t {
|
|
- int si_signo, si_errno, si_code;
|
|
- union __si_fields_t {
|
|
- char[128 - 2*int.sizeof - long.sizeof] __pad = 0;
|
|
- struct __si_common_t {
|
|
- union __first_t {
|
|
- struct __piduid_t {
|
|
+ struct siginfo_t
|
|
+ {
|
|
+ int si_signo;
|
|
+ version (MIPS_Any) // __SI_SWAP_ERRNO_CODE
|
|
+ {
|
|
+ int si_code;
|
|
+ int si_errno;
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ int si_errno;
|
|
+ int si_code;
|
|
+ }
|
|
+ union __si_fields_t
|
|
+ {
|
|
+ char[128 - 2*int.sizeof - c_long.sizeof] __pad = 0;
|
|
+ struct __si_common_t
|
|
+ {
|
|
+ union __first_t
|
|
+ {
|
|
+ struct __piduid_t
|
|
+ {
|
|
pid_t si_pid;
|
|
uid_t si_uid;
|
|
}
|
|
__piduid_t __piduid;
|
|
|
|
- struct __timer_t {
|
|
+ struct __timer_t
|
|
+ {
|
|
int si_timerid;
|
|
int si_overrun;
|
|
}
|
|
@@ -1617,11 +1645,14 @@ else version (CRuntime_Musl)
|
|
}
|
|
__first_t __first;
|
|
|
|
- union __second_t {
|
|
+ union __second_t
|
|
+ {
|
|
sigval si_value;
|
|
- struct __sigchld_t {
|
|
+ struct __sigchld_t
|
|
+ {
|
|
int si_status;
|
|
- clock_t si_utime, si_stime;
|
|
+ clock_t si_utime;
|
|
+ clock_t si_stime;
|
|
}
|
|
__sigchld_t __sigchld;
|
|
}
|
|
@@ -1629,11 +1660,14 @@ else version (CRuntime_Musl)
|
|
}
|
|
__si_common_t __si_common;
|
|
|
|
- struct __sigfault_t {
|
|
+ struct __sigfault_t
|
|
+ {
|
|
void *si_addr;
|
|
short si_addr_lsb;
|
|
- union __first_t {
|
|
- struct __addr_bnd_t {
|
|
+ union __first_t
|
|
+ {
|
|
+ struct __addr_bnd_t
|
|
+ {
|
|
void *si_lower;
|
|
void *si_upper;
|
|
}
|
|
@@ -1644,13 +1678,15 @@ else version (CRuntime_Musl)
|
|
}
|
|
__sigfault_t __sigfault;
|
|
|
|
- struct __sigpoll_t {
|
|
- long si_band;
|
|
+ struct __sigpoll_t
|
|
+ {
|
|
+ c_long si_band;
|
|
int si_fd;
|
|
}
|
|
__sigpoll_t __sigpoll;
|
|
|
|
- struct __sigsys_t {
|
|
+ struct __sigsys_t
|
|
+ {
|
|
void *si_call_addr;
|
|
int si_syscall;
|
|
uint si_arch;
|
|
@@ -3030,7 +3066,177 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
- enum SA_RESTART = 0x10000000;
|
|
+ version (MIPS_Any)
|
|
+ {
|
|
+ enum SIGPOLL = 22;
|
|
+ enum SIGPROF = 29;
|
|
+ enum SIGSYS = 12;
|
|
+ enum SIGTRAP = 5;
|
|
+ enum SIGVTALRM = 28;
|
|
+ enum SIGXCPU = 30;
|
|
+ enum SIGXFSZ = 31;
|
|
+
|
|
+ enum SA_ONSTACK = 0x08000000;
|
|
+ enum SA_RESETHAND = 0x80000000;
|
|
+ enum SA_RESTART = 0x10000000;
|
|
+ enum SA_SIGINFO = 8;
|
|
+ enum SA_NOCLDWAIT = 0x10000;
|
|
+ enum SA_NODEFER = 0x40000000;
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ enum SIGPOLL = 29;
|
|
+ enum SIGPROF = 27;
|
|
+ enum SIGSYS = 31;
|
|
+ enum SIGTRAP = 5;
|
|
+ enum SIGVTALRM = 26;
|
|
+ enum SIGXCPU = 24;
|
|
+ enum SIGXFSZ = 25;
|
|
+
|
|
+ enum SA_ONSTACK = 0x08000000;
|
|
+ enum SA_RESETHAND = 0x80000000;
|
|
+ enum SA_RESTART = 0x10000000;
|
|
+ enum SA_SIGINFO = 4;
|
|
+ enum SA_NOCLDWAIT = 2;
|
|
+ enum SA_NODEFER = 0x40000000;
|
|
+ }
|
|
+
|
|
+ enum SS_ONSTACK = 1;
|
|
+ enum SS_DISABLE = 2;
|
|
+
|
|
+ version (ARM)
|
|
+ {
|
|
+ enum MINSIGSTKSZ = 2048;
|
|
+ enum SIGSTKSZ = 8192;
|
|
+ }
|
|
+ else version (AArch64)
|
|
+ {
|
|
+ enum MINSIGSTKSZ = 6144;
|
|
+ enum SIGSTKSZ = 12288;
|
|
+ }
|
|
+ else version (IBMZ_Any)
|
|
+ {
|
|
+ enum MINSIGSTKSZ = 4096;
|
|
+ enum SIGSTKSZ = 10240;
|
|
+ }
|
|
+ else version (MIPS_Any)
|
|
+ {
|
|
+ enum MINSIGSTKSZ = 2048;
|
|
+ enum SIGSTKSZ = 8192;
|
|
+ }
|
|
+ else version (PPC_Any)
|
|
+ {
|
|
+ enum MINSIGSTKSZ = 4096;
|
|
+ enum SIGSTKSZ = 10240;
|
|
+ }
|
|
+ else version (X86_Any)
|
|
+ {
|
|
+ enum MINSIGSTKSZ = 2048;
|
|
+ enum SIGSTKSZ = 8192;
|
|
+ }
|
|
+ else
|
|
+ static assert(0, "unimplemented");
|
|
+
|
|
+ //ucontext_t (defined in core.sys.posix.ucontext)
|
|
+ //mcontext_t (defined in core.sys.posix.ucontext)
|
|
+
|
|
+ version (MIPS_Any)
|
|
+ {
|
|
+ struct stack_t
|
|
+ {
|
|
+ void* ss_sp;
|
|
+ size_t ss_size;
|
|
+ int ss_flags;
|
|
+ }
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ struct stack_t
|
|
+ {
|
|
+ void* ss_sp;
|
|
+ int ss_flags;
|
|
+ size_t ss_size;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ enum
|
|
+ {
|
|
+ ILL_ILLOPC = 1,
|
|
+ ILL_ILLOPN,
|
|
+ ILL_ILLADR,
|
|
+ ILL_ILLTRP,
|
|
+ ILL_PRVOPC,
|
|
+ ILL_PRVREG,
|
|
+ ILL_COPROC,
|
|
+ ILL_BADSTK
|
|
+ }
|
|
+
|
|
+ enum
|
|
+ {
|
|
+ FPE_INTDIV = 1,
|
|
+ FPE_INTOVF,
|
|
+ FPE_FLTDIV,
|
|
+ FPE_FLTOVF,
|
|
+ FPE_FLTUND,
|
|
+ FPE_FLTRES,
|
|
+ FPE_FLTINV,
|
|
+ FPE_FLTSUB
|
|
+ }
|
|
+
|
|
+ enum
|
|
+ {
|
|
+ SEGV_MAPERR = 1,
|
|
+ SEGV_ACCERR
|
|
+ }
|
|
+
|
|
+ enum
|
|
+ {
|
|
+ BUS_ADRALN = 1,
|
|
+ BUS_ADRERR,
|
|
+ BUS_OBJERR
|
|
+ }
|
|
+
|
|
+ enum
|
|
+ {
|
|
+ TRAP_BRKPT = 1,
|
|
+ TRAP_TRACE
|
|
+ }
|
|
+
|
|
+ enum
|
|
+ {
|
|
+ CLD_EXITED = 1,
|
|
+ CLD_KILLED,
|
|
+ CLD_DUMPED,
|
|
+ CLD_TRAPPED,
|
|
+ CLD_STOPPED,
|
|
+ CLD_CONTINUED
|
|
+ }
|
|
+
|
|
+ enum
|
|
+ {
|
|
+ POLL_IN = 1,
|
|
+ POLL_OUT,
|
|
+ POLL_MSG,
|
|
+ POLL_ERR,
|
|
+ POLL_PRI,
|
|
+ POLL_HUP
|
|
+ }
|
|
+
|
|
+ sigfn_t bsd_signal(int sig, sigfn_t func);
|
|
+ sigfn_t sigset(int sig, sigfn_t func);
|
|
+
|
|
+ nothrow:
|
|
+ @nogc:
|
|
+ sigfn_t2 bsd_signal(int sig, sigfn_t2 func);
|
|
+ sigfn_t2 sigset(int sig, sigfn_t2 func);
|
|
+
|
|
+ int killpg(pid_t, int);
|
|
+ int sigaltstack(const scope stack_t*, stack_t*);
|
|
+ int sighold(int);
|
|
+ int sigignore(int);
|
|
+ int siginterrupt(int, int);
|
|
+ int sigpause(int);
|
|
+ int sigrelse(int);
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
@@ -3483,7 +3689,7 @@ else version (CRuntime_Musl)
|
|
int sigev_notify;
|
|
void function(sigval) sigev_notify_function;
|
|
pthread_attr_t *sigev_notify_attributes;
|
|
- char[56 - 3 * long.sizeof] __pad = void;
|
|
+ char[56 - 3 * c_long.sizeof] __pad = void;
|
|
}
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
diff -Nurp a/libphobos/libdruntime/core/sys/posix/sys/mman.d b/libphobos/libdruntime/core/sys/posix/sys/mman.d
|
|
--- a/libphobos/libdruntime/core/sys/posix/sys/mman.d 2019-10-28 07:12:22.000000000 +0900
|
|
+++ b/libphobos/libdruntime/core/sys/posix/sys/mman.d 2019-10-28 08:08:09.000000000 +0900
|
|
@@ -128,6 +128,15 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
+ enum
|
|
+ {
|
|
+ POSIX_MADV_NORMAL = 0,
|
|
+ POSIX_MADV_RANDOM = 1,
|
|
+ POSIX_MADV_SEQUENTIAL = 2,
|
|
+ POSIX_MADV_WILLNEED = 3,
|
|
+ POSIX_MADV_DONTNEED = 4,
|
|
+ }
|
|
+ int posix_madvise(void *, size_t, int);
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
@@ -611,6 +620,14 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
+ enum
|
|
+ {
|
|
+ MCL_CURRENT = 1,
|
|
+ MCL_FUTURE = 2,
|
|
+ }
|
|
+
|
|
+ int mlockall(int);
|
|
+ int munlockall();
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
@@ -674,6 +691,8 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
+ int mlock(in void*, size_t);
|
|
+ int munlock(in void*, size_t);
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
@@ -776,6 +795,8 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
+ int shm_open(in char*, int, mode_t);
|
|
+ int shm_unlink(in char*);
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
diff -Nurp a/libphobos/libdruntime/core/sys/posix/sys/socket.d b/libphobos/libdruntime/core/sys/posix/sys/socket.d
|
|
--- a/libphobos/libdruntime/core/sys/posix/sys/socket.d 2019-10-28 07:12:22.000000000 +0900
|
|
+++ b/libphobos/libdruntime/core/sys/posix/sys/socket.d 2019-10-28 08:08:09.000000000 +0900
|
|
@@ -1755,10 +1755,10 @@ else version (CRuntime_Musl)
|
|
c_ulong __ss_align;
|
|
}
|
|
|
|
- enum {
|
|
+ enum
|
|
+ {
|
|
SOCK_STREAM = 1,
|
|
SOCK_DGRAM = 2,
|
|
- SOCK_RAW = 3,
|
|
SOCK_RDM = 4,
|
|
SOCK_SEQPACKET = 5,
|
|
SOCK_DCCP = 6,
|
|
@@ -2187,6 +2187,10 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
+ enum
|
|
+ {
|
|
+ SOCK_RAW = 3
|
|
+ }
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
diff -Nurp a/libphobos/libdruntime/core/sys/posix/sys/types.d b/libphobos/libdruntime/core/sys/posix/sys/types.d
|
|
--- a/libphobos/libdruntime/core/sys/posix/sys/types.d 2019-10-28 07:12:22.000000000 +0900
|
|
+++ b/libphobos/libdruntime/core/sys/posix/sys/types.d 2019-10-28 08:07:51.000000000 +0900
|
|
@@ -112,20 +112,25 @@ version (CRuntime_Glibc)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
- alias long blksize_t;
|
|
- alias ulong nlink_t;
|
|
- alias long dev_t;
|
|
- alias long blkcnt_t;
|
|
- alias ulong ino_t;
|
|
- alias long off_t;
|
|
- alias long _Addr;
|
|
- alias int pid_t;
|
|
- alias uint uid_t;
|
|
- alias uint gid_t;
|
|
- alias long time_t;
|
|
- alias long clock_t;
|
|
- alias ulong pthread_t;
|
|
- alias _Addr ssize_t;
|
|
+ alias c_long blksize_t;
|
|
+ alias c_ulong nlink_t;
|
|
+ alias long dev_t;
|
|
+ alias long blkcnt_t;
|
|
+ alias ulong ino_t;
|
|
+ alias long off_t;
|
|
+ alias int pid_t;
|
|
+ alias uint uid_t;
|
|
+ alias uint gid_t;
|
|
+ version (D_X32)
|
|
+ alias long time_t;
|
|
+ else
|
|
+ alias c_long time_t;
|
|
+ alias c_long clock_t;
|
|
+ alias c_ulong pthread_t;
|
|
+ version (D_LP64)
|
|
+ alias c_long ssize_t;
|
|
+ else
|
|
+ alias int ssize_t;
|
|
}
|
|
else version (Darwin)
|
|
{
|
|
@@ -420,7 +425,10 @@ else version (CRuntime_Musl)
|
|
}
|
|
alias uint mode_t;
|
|
alias uint id_t;
|
|
- alias long suseconds_t;
|
|
+ version (D_X32)
|
|
+ alias long susseconds_t;
|
|
+ else
|
|
+ alias c_long suseconds_t;
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
@@ -723,40 +746,77 @@ version (CRuntime_Glibc)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
- version (X86_64) {
|
|
+ version (D_LP64)
|
|
+ {
|
|
union pthread_attr_t
|
|
{
|
|
int[14] __i;
|
|
ulong[7] __s;
|
|
}
|
|
+
|
|
union pthread_cond_t
|
|
{
|
|
int[12] __i;
|
|
void*[6] __p;
|
|
}
|
|
+
|
|
union pthread_mutex_t
|
|
{
|
|
int[10] __i;
|
|
void*[5] __p;
|
|
}
|
|
+
|
|
union pthread_rwlock_t
|
|
{
|
|
int[14] __i;
|
|
void*[7] __p;
|
|
}
|
|
- struct pthread_rwlockattr_t
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ union pthread_attr_t
|
|
+ {
|
|
+ int[9] __i;
|
|
+ uint[9] __s;
|
|
+ }
|
|
+
|
|
+ union pthread_cond_t
|
|
+ {
|
|
+ int[12] __i;
|
|
+ void*[12] __p;
|
|
+ }
|
|
+
|
|
+ union pthread_mutex_t
|
|
{
|
|
- uint[2] __attr;
|
|
+ int[6] __i;
|
|
+ void*[6] __p;
|
|
+ }
|
|
+
|
|
+ union pthread_rwlock_t
|
|
+ {
|
|
+ int[8] __i;
|
|
+ void*[8] __p;
|
|
}
|
|
- alias uint pthread_key_t;
|
|
- alias uint pthread_condattr_t;
|
|
- alias uint pthread_mutexattr_t;
|
|
- alias int pthread_once_t;
|
|
}
|
|
- else
|
|
+
|
|
+ struct pthread_rwlockattr_t
|
|
{
|
|
- static assert (false, "Architecture unsupported");
|
|
+ uint[2] __attr;
|
|
}
|
|
+
|
|
+ alias uint pthread_key_t;
|
|
+
|
|
+ struct pthread_condattr_t
|
|
+ {
|
|
+ uint __attr;
|
|
+ }
|
|
+
|
|
+ struct pthread_mutexattr_t
|
|
+ {
|
|
+ uint __attr;
|
|
+ }
|
|
+
|
|
+ alias int pthread_once_t;
|
|
}
|
|
else version (Darwin)
|
|
{
|
|
@@ -1300,6 +1360,27 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
+ version (D_LP64)
|
|
+ {
|
|
+ union pthread_barrier_t
|
|
+ {
|
|
+ int[8] __i;
|
|
+ void*[4] __p;
|
|
+ }
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ union pthread_barrier_t
|
|
+ {
|
|
+ int[5] __i;
|
|
+ void*[5] __p;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ struct pthread_barrierattr_t
|
|
+ {
|
|
+ uint __attr;
|
|
+ }
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
@@ -1351,6 +1432,10 @@ else version (CRuntime_UClibc)
|
|
{
|
|
alias int pthread_spinlock_t; // volatile
|
|
}
|
|
+else version (CRuntime_Musl)
|
|
+{
|
|
+ alias int pthread_spinlock_t;
|
|
+}
|
|
|
|
//
|
|
// Timer (TMR)
|
|
diff -Nurp a/libphobos/libdruntime/core/sys/posix/sys/wait.d b/libphobos/libdruntime/core/sys/posix/sys/wait.d
|
|
--- a/libphobos/libdruntime/core/sys/posix/sys/wait.d 2019-10-28 07:12:22.000000000 +0900
|
|
+++ b/libphobos/libdruntime/core/sys/posix/sys/wait.d 2019-10-28 08:08:09.000000000 +0900
|
|
@@ -362,6 +362,19 @@ else version (CRuntime_Bionic)
|
|
}
|
|
else version (CRuntime_Musl)
|
|
{
|
|
+ enum WEXITED = 4;
|
|
+ enum WSTOPPED = 2;
|
|
+ enum WCONTINUED = 8;
|
|
+ enum WNOWAIT = 0x01000000;
|
|
+
|
|
+ enum idtype_t
|
|
+ {
|
|
+ P_ALL,
|
|
+ P_PID,
|
|
+ P_PGID
|
|
+ }
|
|
+
|
|
+ int waitid(idtype_t, id_t, siginfo_t*, int);
|
|
}
|
|
else version (CRuntime_UClibc)
|
|
{
|
|
diff -Nurp a/libphobos/libdruntime/core/sys/posix/ucontext.d b/libphobos/libdruntime/core/sys/posix/ucontext.d
|
|
--- a/libphobos/libdruntime/core/sys/posix/ucontext.d 2019-10-28 07:12:22.000000000 +0900
|
|
+++ b/libphobos/libdruntime/core/sys/posix/ucontext.d 2019-10-28 08:08:09.000000000 +0900
|
|
@@ -23,6 +23,10 @@ extern (C):
|
|
nothrow:
|
|
@nogc:
|
|
|
|
+version (MIPS32) version = MIPS_Any;
|
|
+version (MIPS64) version = MIPS_Any;
|
|
+version (PPC) version = PPC_Any;
|
|
+version (PPC64) version = PPC_Any;
|
|
version (RISCV32) version = RISCV_Any;
|
|
version (RISCV64) version = RISCV_Any;
|
|
version (S390) version = IBMZ_Any;
|
|
@@ -770,6 +774,139 @@ version (CRuntime_Glibc)
|
|
else
|
|
static assert(0, "unimplemented");
|
|
}
|
|
+else version (CRuntime_Musl)
|
|
+{
|
|
+ version (AArch64)
|
|
+ {
|
|
+ struct mcontext_t
|
|
+ {
|
|
+ real[18+256] __regs;
|
|
+ }
|
|
+
|
|
+ struct ucontext_t
|
|
+ {
|
|
+ c_ulong uc_flags;
|
|
+ ucontext_t* uc_link;
|
|
+ stack_t uc_stack;
|
|
+ sigset_t uc_sigmask;
|
|
+ mcontext_t uc_mcontext;
|
|
+ }
|
|
+ }
|
|
+ else version (ARM)
|
|
+ {
|
|
+ struct mcontext_t
|
|
+ {
|
|
+ c_ulong[21] __regs;
|
|
+ }
|
|
+
|
|
+ struct ucontext_t
|
|
+ {
|
|
+ c_ulong uc_flags;
|
|
+ ucontext_t* uc_link;
|
|
+ stack_t uc_stack;
|
|
+ mcontext_t uc_mcontext;
|
|
+ sigset_t uc_sigmask;
|
|
+ ulong[64] uc_regspace;
|
|
+ }
|
|
+ }
|
|
+ else version (IBMZ_Any)
|
|
+ {
|
|
+ struct mcontext_t
|
|
+ {
|
|
+ c_ulong[18] __regs1;
|
|
+ uint[18] __regs2;
|
|
+ double[16] __regs3;
|
|
+ }
|
|
+
|
|
+ struct ucontext_t
|
|
+ {
|
|
+ c_ulong uc_flags;
|
|
+ ucontext_t* uc_link;
|
|
+ stack_t uc_stack;
|
|
+ mcontext_t uc_mcontext;
|
|
+ sigset_t uc_sigmask;
|
|
+ }
|
|
+ }
|
|
+ else version (MIPS_Any)
|
|
+ {
|
|
+ version (MIPS_N32)
|
|
+ {
|
|
+ struct mcontext_t
|
|
+ {
|
|
+ ulong[32] __mc1;
|
|
+ double[32] __mc2;
|
|
+ ulong[9] __mc3;
|
|
+ uint[4] __mc4;
|
|
+ }
|
|
+ }
|
|
+ else version (MIPS64)
|
|
+ {
|
|
+ struct mcontext_t
|
|
+ {
|
|
+ ulong[32] __mc1;
|
|
+ double[32] __mc2;
|
|
+ ulong[9] __mc3;
|
|
+ uint[4] __mc4;
|
|
+ }
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ struct mcontext_t
|
|
+ {
|
|
+ uint[2] __mc1;
|
|
+ ulong[65] __mc2;
|
|
+ uint[5] __mc3;
|
|
+ ulong[2] __mc4;
|
|
+ uint[6] __mc5;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ struct ucontext_t
|
|
+ {
|
|
+ c_ulong uc_flags;
|
|
+ ucontext_t* uc_link;
|
|
+ stack_t uc_stack;
|
|
+ mcontext_t uc_mcontext;
|
|
+ sigset_t uc_sigmask;
|
|
+ }
|
|
+ }
|
|
+ else version (X86)
|
|
+ {
|
|
+ struct mcontext_t
|
|
+ {
|
|
+ uint[22] __space;
|
|
+ }
|
|
+
|
|
+ struct ucontext_t
|
|
+ {
|
|
+ c_ulong uc_flags;
|
|
+ ucontext_t* uc_link;
|
|
+ stack_t uc_stack;
|
|
+ mcontext_t uc_mcontext;
|
|
+ sigset_t uc_sigmask;
|
|
+ c_ulong[28] __fpregs_mem;
|
|
+ }
|
|
+ }
|
|
+ else version (X86_64)
|
|
+ {
|
|
+ struct mcontext_t
|
|
+ {
|
|
+ ulong[32] __space;
|
|
+ }
|
|
+
|
|
+ struct ucontext_t
|
|
+ {
|
|
+ c_ulong uc_flags;
|
|
+ ucontext_t* uc_link;
|
|
+ stack_t uc_stack;
|
|
+ mcontext_t uc_mcontext;
|
|
+ sigset_t uc_sigmask;
|
|
+ ulong[64] __fpregs_mem;
|
|
+ }
|
|
+ }
|
|
+ else
|
|
+ static assert(0, "unimplemented");
|
|
+}
|
|
else version (FreeBSD)
|
|
{
|
|
// <machine/ucontext.h>
|
|
diff -Nurp a/libphobos/src/std/experimental/allocator/building_blocks/region.d b/libphobos/src/std/experimental/allocator/building_blocks/region.d
|
|
--- a/libphobos/src/std/experimental/allocator/building_blocks/region.d 2019-10-28 07:23:27.000000000 +0900
|
|
+++ b/libphobos/src/std/experimental/allocator/building_blocks/region.d 2019-10-28 08:08:09.000000000 +0900
|
|
@@ -580,6 +580,12 @@ struct InSituRegion(size_t size, size_t
|
|
assert(a.length == 2001);
|
|
}
|
|
|
|
+version(CRuntime_Musl)
|
|
+{
|
|
+ // sbrk and brk are disabled in Musl:
|
|
+ // https://git.musl-libc.org/cgit/musl/commit/?id=7a995fe706e519a4f55399776ef0df9596101f93
|
|
+ // https://git.musl-libc.org/cgit/musl/commit/?id=863d628d93ea341b6a32661a1654320ce69f6a07
|
|
+} else:
|
|
private extern(C) void* sbrk(long);
|
|
private extern(C) int brk(shared void*);
|
|
|
|
diff -Nurp a/libphobos/src/std/socket.d b/libphobos/src/std/socket.d
|
|
--- a/libphobos/src/std/socket.d 2019-10-28 07:23:27.000000000 +0900
|
|
+++ b/libphobos/src/std/socket.d 2019-10-28 08:08:09.000000000 +0900
|
|
@@ -163,47 +163,7 @@ string formatSocketError(int err) @trust
|
|
{
|
|
cs = strerror_r(err, buf.ptr, buf.length);
|
|
}
|
|
- else version (OSX)
|
|
- {
|
|
- auto errs = strerror_r(err, buf.ptr, buf.length);
|
|
- if (errs == 0)
|
|
- cs = buf.ptr;
|
|
- else
|
|
- return "Socket error " ~ to!string(err);
|
|
- }
|
|
- else version (FreeBSD)
|
|
- {
|
|
- auto errs = strerror_r(err, buf.ptr, buf.length);
|
|
- if (errs == 0)
|
|
- cs = buf.ptr;
|
|
- else
|
|
- return "Socket error " ~ to!string(err);
|
|
- }
|
|
- else version (NetBSD)
|
|
- {
|
|
- auto errs = strerror_r(err, buf.ptr, buf.length);
|
|
- if (errs == 0)
|
|
- cs = buf.ptr;
|
|
- else
|
|
- return "Socket error " ~ to!string(err);
|
|
- }
|
|
- else version (DragonFlyBSD)
|
|
- {
|
|
- auto errs = strerror_r(err, buf.ptr, buf.length);
|
|
- if (errs == 0)
|
|
- cs = buf.ptr;
|
|
- else
|
|
- return "Socket error " ~ to!string(err);
|
|
- }
|
|
- else version (Solaris)
|
|
- {
|
|
- auto errs = strerror_r(err, buf.ptr, buf.length);
|
|
- if (errs == 0)
|
|
- cs = buf.ptr;
|
|
- else
|
|
- return "Socket error " ~ to!string(err);
|
|
- }
|
|
- else version (CRuntime_Bionic)
|
|
+ else
|
|
{
|
|
auto errs = strerror_r(err, buf.ptr, buf.length);
|
|
if (errs == 0)
|
|
@@ -211,8 +171,6 @@ string formatSocketError(int err) @trust
|
|
else
|
|
return "Socket error " ~ to!string(err);
|
|
}
|
|
- else
|
|
- static assert(0);
|
|
|
|
auto len = strlen(cs);
|
|
|
|
diff -Nurp a/libphobos/src/std/stdio.d b/libphobos/src/std/stdio.d
|
|
--- a/libphobos/src/std/stdio.d 2019-10-28 07:23:27.000000000 +0900
|
|
+++ b/libphobos/src/std/stdio.d 2019-10-28 08:08:09.000000000 +0900
|
|
@@ -44,38 +44,38 @@ version (CRuntime_Glibc)
|
|
version = GCC_IO;
|
|
version = HAS_GETDELIM;
|
|
}
|
|
-
|
|
-version (OSX)
|
|
+else version (CRuntime_Bionic)
|
|
{
|
|
version = GENERIC_IO;
|
|
version = HAS_GETDELIM;
|
|
}
|
|
-
|
|
-version (FreeBSD)
|
|
+else version (CRuntime_Musl)
|
|
{
|
|
version = GENERIC_IO;
|
|
version = HAS_GETDELIM;
|
|
}
|
|
|
|
-version (NetBSD)
|
|
+version (OSX)
|
|
{
|
|
version = GENERIC_IO;
|
|
version = HAS_GETDELIM;
|
|
}
|
|
-
|
|
-version (DragonFlyBSD)
|
|
+else version (FreeBSD)
|
|
{
|
|
version = GENERIC_IO;
|
|
version = HAS_GETDELIM;
|
|
}
|
|
-
|
|
-version (Solaris)
|
|
+else version (NetBSD)
|
|
{
|
|
version = GENERIC_IO;
|
|
- version = NO_GETDELIM;
|
|
+ version = HAS_GETDELIM;
|
|
}
|
|
-
|
|
-version (CRuntime_Bionic)
|
|
+else version (DragonFlyBSD)
|
|
+{
|
|
+ version = GENERIC_IO;
|
|
+ version = HAS_GETDELIM;
|
|
+}
|
|
+else version (Solaris)
|
|
{
|
|
version = GENERIC_IO;
|
|
version = NO_GETDELIM;
|