| 1 | Upstream status: https://github.com/D-Programming-GDC/gcc/pull/25
|
| 2 |
|
| 3 | Backport of
|
| 4 | https://github.com/dlang/dmd/pull/22829
|
| 5 | https://github.com/dlang/phobos/pull/10980
|
| 6 |
|
| 7 | to gdc-14
|
| 8 |
|
| 9 | with additional gdc specific changes.
|
| 10 | Also regenerates the autotools.
|
| 11 |
|
| 12 | From e8c3f2cfad1a69cd3fa5445a0d61d2f59d73a5d1 Mon Sep 17 00:00:00 2001
|
| 13 | From: Yelninei <[email protected]>
|
| 14 | Date: Sat, 11 Apr 2026 19:42:55 +0000
|
| 15 | Subject: [PATCH 1/4] phobos: Port to GNU/Hurd
|
| 16 |
|
| 17 | ---
|
| 18 | libphobos/src/std/datetime/timezone.d | 1 +
|
| 19 | libphobos/src/std/math/algebraic.d | 1 +
|
| 20 | libphobos/src/std/process.d | 2 ++
|
| 21 | 3 files changed, 4 insertions(+)
|
| 22 |
|
| 23 | diff --git a/libphobos/src/std/datetime/timezone.d b/libphobos/src/std/datetime/timezone.d
|
| 24 | index b23891808..e68f2e828 100644
|
| 25 | |
| 26 | |
| 27 | @@ -338,6 +338,7 @@ public:
|
| 28 | else version (linux) enum utcZone = "UTC";
|
| 29 | else version (Darwin) enum utcZone = "UTC";
|
| 30 | else version (Solaris) enum utcZone = "UTC";
|
| 31 | + else version (Hurd) enum utcZone = "UTC";
|
| 32 | else static assert(0, "The location of the UTC timezone file on this Posix platform must be set.");
|
| 33 |
|
| 34 | auto tzs = [testTZ("America/Los_Angeles", "PST", "PDT", dur!"hours"(-8), dur!"hours"(1)),
|
| 35 | diff --git a/libphobos/src/std/math/algebraic.d b/libphobos/src/std/math/algebraic.d
|
| 36 | index fd305231d..c909148ea 100644
|
| 37 | |
| 38 | |
| 39 | @@ -611,6 +611,7 @@ else version (FreeBSD) version = GenericPosixVersion;
|
| 40 | else version (OpenBSD) version = GenericPosixVersion;
|
| 41 | else version (Solaris) version = GenericPosixVersion;
|
| 42 | else version (DragonFlyBSD) version = GenericPosixVersion;
|
| 43 | +else version (Hurd) version = GenericPosixVersion;
|
| 44 |
|
| 45 | private real polyImpl(real x, in real[] A) @trusted pure nothrow @nogc
|
| 46 | {
|
| 47 | diff --git a/libphobos/src/std/process.d b/libphobos/src/std/process.d
|
| 48 | index 3b8922179..b245936da 100644
|
| 49 | |
| 50 | |
| 51 | @@ -1039,6 +1039,8 @@ private Pid spawnProcessPosix(scope const(char[])[] args,
|
| 52 | import core.sys.freebsd.unistd : closefrom;
|
| 53 | else version (OpenBSD)
|
| 54 | import core.sys.openbsd.unistd : closefrom;
|
| 55 | + else version (Hurd)
|
| 56 | + import core.sys.hurd.unistd : closefrom;
|
| 57 |
|
| 58 | static if (!__traits(compiles, closefrom))
|
| 59 | {
|
| 60 | --
|
| 61 | 2.52.0
|
| 62 |
|
| 63 | From 0549a921b9309f860f0a038427a7fc6526fcde4d Mon Sep 17 00:00:00 2001
|
| 64 | From: Yelninei <[email protected]>
|
| 65 | Date: Sat, 11 Apr 2026 20:09:59 +0000
|
| 66 | Subject: [PATCH 2/4] druntime: Backport support for GNU/Hurd
|
| 67 |
|
| 68 | ---
|
| 69 | libphobos/libdruntime/core/demangle.d | 1 +
|
| 70 | libphobos/libdruntime/core/stdc/config.d | 2 +
|
| 71 | libphobos/libdruntime/core/stdc/errno.d | 107 +++
|
| 72 | libphobos/libdruntime/core/stdc/limits.d | 14 +
|
| 73 | libphobos/libdruntime/core/sys/hurd/config.d | 30 +
|
| 74 | libphobos/libdruntime/core/sys/hurd/dlfcn.d | 114 +++
|
| 75 | libphobos/libdruntime/core/sys/hurd/elf.d | 162 +++++
|
| 76 | libphobos/libdruntime/core/sys/hurd/errno.d | 21 +
|
| 77 | .../libdruntime/core/sys/hurd/execinfo.d | 16 +
|
| 78 | libphobos/libdruntime/core/sys/hurd/link.d | 134 ++++
|
| 79 | .../libdruntime/core/sys/hurd/sys/types.d | 22 +
|
| 80 | libphobos/libdruntime/core/sys/hurd/time.d | 15 +
|
| 81 | libphobos/libdruntime/core/sys/hurd/unistd.d | 30 +
|
| 82 | libphobos/libdruntime/core/sys/linux/stdio.d | 1 +
|
| 83 | libphobos/libdruntime/core/sys/posix/dirent.d | 11 +
|
| 84 | libphobos/libdruntime/core/sys/posix/fcntl.d | 107 +++
|
| 85 | .../libdruntime/core/sys/posix/netinet/in_.d | 58 +-
|
| 86 | libphobos/libdruntime/core/sys/posix/poll.d | 16 +
|
| 87 | .../libdruntime/core/sys/posix/pthread.d | 218 ++++--
|
| 88 | libphobos/libdruntime/core/sys/posix/sched.d | 11 +
|
| 89 | .../libdruntime/core/sys/posix/semaphore.d | 32 +-
|
| 90 | libphobos/libdruntime/core/sys/posix/signal.d | 189 ++++-
|
| 91 | libphobos/libdruntime/core/sys/posix/spawn.d | 42 ++
|
| 92 | .../libdruntime/core/sys/posix/sys/ioctl.d | 37 +
|
| 93 | .../libdruntime/core/sys/posix/sys/ipc.d | 43 ++
|
| 94 | .../libdruntime/core/sys/posix/sys/mman.d | 33 +
|
| 95 | .../libdruntime/core/sys/posix/sys/msg.d | 44 ++
|
| 96 | .../libdruntime/core/sys/posix/sys/resource.d | 58 ++
|
| 97 | .../libdruntime/core/sys/posix/sys/shm.d | 26 +
|
| 98 | .../libdruntime/core/sys/posix/sys/socket.d | 161 +++++
|
| 99 | .../libdruntime/core/sys/posix/sys/stat.d | 72 ++
|
| 100 | .../libdruntime/core/sys/posix/sys/statvfs.d | 152 ++--
|
| 101 | .../libdruntime/core/sys/posix/sys/types.d | 669 +++++++++++-------
|
| 102 | libphobos/libdruntime/core/sys/posix/sys/un.d | 9 +
|
| 103 | .../libdruntime/core/sys/posix/sys/utsname.d | 39 +-
|
| 104 | .../libdruntime/core/sys/posix/sys/wait.d | 23 +
|
| 105 | .../libdruntime/core/sys/posix/termios.d | 97 +++
|
| 106 | libphobos/libdruntime/core/sys/posix/time.d | 12 +
|
| 107 | libphobos/libdruntime/core/thread/osthread.d | 8 +
|
| 108 | libphobos/libdruntime/core/time.d | 25 +
|
| 109 | libphobos/libdruntime/gcc/backtrace.d | 2 +
|
| 110 | libphobos/libdruntime/gcc/sections/elf.d | 9 +
|
| 111 | 42 files changed, 2474 insertions(+), 398 deletions(-)
|
| 112 | create mode 100644 libphobos/libdruntime/core/sys/hurd/config.d
|
| 113 | create mode 100644 libphobos/libdruntime/core/sys/hurd/dlfcn.d
|
| 114 | create mode 100644 libphobos/libdruntime/core/sys/hurd/elf.d
|
| 115 | create mode 100644 libphobos/libdruntime/core/sys/hurd/errno.d
|
| 116 | create mode 100644 libphobos/libdruntime/core/sys/hurd/execinfo.d
|
| 117 | create mode 100644 libphobos/libdruntime/core/sys/hurd/link.d
|
| 118 | create mode 100644 libphobos/libdruntime/core/sys/hurd/sys/types.d
|
| 119 | create mode 100644 libphobos/libdruntime/core/sys/hurd/time.d
|
| 120 | create mode 100644 libphobos/libdruntime/core/sys/hurd/unistd.d
|
| 121 |
|
| 122 | diff --git a/libphobos/libdruntime/core/demangle.d b/libphobos/libdruntime/core/demangle.d
|
| 123 | index 272ee1e1b..522991dd7 100644
|
| 124 | |
| 125 | |
| 126 | @@ -3045,6 +3045,7 @@ CXX_DEMANGLER getCXXDemangler() nothrow @trusted
|
| 127 | version (OpenBSD) import core.sys.openbsd.dlfcn : RTLD_DEFAULT;
|
| 128 | version (Darwin) import core.sys.darwin.dlfcn : RTLD_DEFAULT;
|
| 129 | version (Solaris) import core.sys.solaris.dlfcn : RTLD_DEFAULT;
|
| 130 | + version (Hurd) import core.sys.hurd.dlfcn : RTLD_DEFAULT;
|
| 131 |
|
| 132 | if (auto found = cast(CXX_DEMANGLER) dlsym(RTLD_DEFAULT, "__cxa_demangle"))
|
| 133 | atomicStore(__cxa_demangle, found);
|
| 134 | diff --git a/libphobos/libdruntime/core/stdc/config.d b/libphobos/libdruntime/core/stdc/config.d
|
| 135 | index ca833eaac..c5ad3a87e 100644
|
| 136 | |
| 137 | |
| 138 | @@ -262,6 +262,8 @@ else version (DigitalMars)
|
| 139 | alias real c_long_double;
|
| 140 | else version (Darwin)
|
| 141 | alias real c_long_double;
|
| 142 | + else version (Hurd)
|
| 143 | + alias real c_long_double;
|
| 144 | }
|
| 145 | }
|
| 146 |
|
| 147 | diff --git a/libphobos/libdruntime/core/stdc/errno.d b/libphobos/libdruntime/core/stdc/errno.d
|
| 148 | index ddec70f7a..21c4dff97 100644
|
| 149 | |
| 150 | |
| 151 | @@ -2551,6 +2551,113 @@ else version (WASI)
|
| 152 | enum ERFKILL = 132;
|
| 153 | enum EHWPOISON = 133;
|
| 154 | }
|
| 155 | +else version (Hurd)
|
| 156 | +{
|
| 157 | + enum EPERM = 0x40000001; /* Operation not permitted */
|
| 158 | + enum ENOENT = 0x40000002; /* No such file or directory */
|
| 159 | + enum ESRCH = 0x40000003; /* No such process */
|
| 160 | + enum EINTR = 0x40000004; /* Interrupted system call */
|
| 161 | + enum EIO = 0x40000005; /* Input/output error */
|
| 162 | + enum ENXIO = 0x40000006; /* No such device or address */
|
| 163 | + enum E2BIG = 0x40000007; /* Argument list too long */
|
| 164 | + enum ENOEXEC = 0x40000008; /*enum Exec format error */
|
| 165 | + enum EBADF = 0x40000009; /* Bad file descriptor */
|
| 166 | + enum ECHILD = 0x4000000a; /* No child processes */
|
| 167 | + enum EDEADLK = 0x4000000b; /* Resource deadlock avoided */
|
| 168 | + enum ENOMEM = 0x4000000c; /* Cannot allocate memory */
|
| 169 | + enum EACCES = 0x4000000d; /* Permission denied */
|
| 170 | + enum EFAULT = 0x4000000e; /* Bad address */
|
| 171 | + enum ENOTBLK = 0x4000000f; /* Block device required */
|
| 172 | + enum EBUSY = 0x40000010; /* Device or resource busy */
|
| 173 | + enum EEXIST = 0x40000011; /* File exists */
|
| 174 | + enum EXDEV = 0x40000012; /* Invalid cross-device link */
|
| 175 | + enum ENODEV = 0x40000013; /* No such device */
|
| 176 | + enum ENOTDIR = 0x40000014; /* Not a directory */
|
| 177 | + enum EISDIR = 0x40000015; /* Is a directory */
|
| 178 | + enum EINVAL = 0x40000016; /* Invalid argument */
|
| 179 | + enum EMFILE = 0x40000018; /* Too many open files */
|
| 180 | + enum ENFILE = 0x40000017; /* Too many open files in system */
|
| 181 | + enum ENOTTY = 0x40000019; /* Inappropriate ioctl for device */
|
| 182 | + enum ETXTBSY = 0x4000001a; /* Text file busy */
|
| 183 | + enum EFBIG = 0x4000001b; /* File too large */
|
| 184 | + enum ENOSPC = 0x4000001c; /* No space left on device */
|
| 185 | + enum ESPIPE = 0x4000001d; /* Illegal seek */
|
| 186 | + enum EROFS = 0x4000001e; /* Read-only file system */
|
| 187 | + enum EMLINK = 0x4000001f; /* Too many links */
|
| 188 | + enum EPIPE = 0x40000020; /* Broken pipe */
|
| 189 | + enum EDOM = 0x40000021; /* Numerical argument out of domain */
|
| 190 | + enum ERANGE = 0x40000022; /* Numerical result out of range */
|
| 191 | + enum EAGAIN = 0x40000023; /* Resource temporarily unavailable */
|
| 192 | + enum EINPROGRESS = 0x40000024; /* Operation now in progress */
|
| 193 | + enum EALREADY = 0x40000025; /* Operation already in progress */
|
| 194 | + enum ENOTSOCK = 0x40000026; /* Socket operation on non-socket */
|
| 195 | + enum EMSGSIZE = 0x40000028; /* Message too long */
|
| 196 | + enum EPROTOTYPE = 0x40000029; /* Protocol wrong type for socket */
|
| 197 | + enum ENOPROTOOPT = 0x4000002a; /* Protocol not available */
|
| 198 | + enum EPROTONOSUPPORT = 0x4000002b; /* Protocol not supported */
|
| 199 | + enum ESOCKTNOSUPPORT = 0x4000002c; /* Socket type not supported */
|
| 200 | + enum EOPNOTSUPP = 0x4000002d; /* Operation not supported */
|
| 201 | + enum EPFNOSUPPORT = 0x4000002e; /* Protocol family not supported */
|
| 202 | + enum EAFNOSUPPORT = 0x4000002f; /* Address family not supported by protocol */
|
| 203 | + enum EADDRINUSE = 0x40000030; /* Address already in use */
|
| 204 | + enum EADDRNOTAVAIL = 0x40000031; /* Cannot assign requested address */
|
| 205 | + enum ENETDOWN = 0x40000032; /* Network is down */
|
| 206 | + enum ENETUNREACH = 0x40000033; /* Network is unreachable */
|
| 207 | + enum ENETRESET = 0x40000034; /* Network dropped connection on reset */
|
| 208 | + enum ECONNABORTED = 0x40000035; /* Software caused connection abort */
|
| 209 | + enum ECONNRESET = 0x40000036; /* Connection reset by peer */
|
| 210 | + enum ENOBUFS = 0x40000037; /* No buffer space available */
|
| 211 | + enum EISCONN = 0x40000038; /* Transport endpoint is already connected */
|
| 212 | + enum ENOTCONN = 0x40000039; /* Transport endpoint is not connected */
|
| 213 | + enum EDESTADDRREQ = 0x40000027; /* Destination address required */
|
| 214 | + enum ESHUTDOWN = 0x4000003a; /* Cannot send after transport endpoint shutdown */
|
| 215 | + enum ETOOMANYREFS = 0x4000003b; /* Too many references: cannot splice */
|
| 216 | + enum ETIMEDOUT = 0x4000003c; /* Connection timed out */
|
| 217 | + enum ECONNREFUSED = 0x4000003d; /* Connection refused */
|
| 218 | + enum ELOOP = 0x4000003e; /* Too many levels of symbolic links */
|
| 219 | + enum ENAMETOOLONG = 0x4000003f; /* File name too long */
|
| 220 | + enum EHOSTDOWN = 0x40000040; /* Host is down */
|
| 221 | + enum EHOSTUNREACH = 0x40000041; /* No route to host */
|
| 222 | + enum ENOTEMPTY = 0x40000042; /* Directory not empty */
|
| 223 | + enum EPROCLIM = 0x40000043; /* Too many processes */
|
| 224 | + enum EUSERS = 0x40000044; /* Too many users */
|
| 225 | + enum EDQUOT = 0x40000045; /* Disk quota exceeded */
|
| 226 | + enum ESTALE = 0x40000046; /* Stale file handle */
|
| 227 | + enum EREMOTE = 0x40000047; /* Object is remote */
|
| 228 | + enum EBADRPC = 0x40000048; /* RPC struct is bad */
|
| 229 | + enum ERPCMISMATCH = 0x40000049; /* RPC version wrong */
|
| 230 | + enum EPROGUNAVAIL = 0x4000004a; /* RPC program not available */
|
| 231 | + enum EPROGMISMATCH = 0x4000004b; /* RPC program version wrong */
|
| 232 | + enum EPROCUNAVAIL = 0x4000004c; /* RPC bad procedure for program */
|
| 233 | + enum ENOLCK = 0x4000004d; /* No locks available */
|
| 234 | + enum EFTYPE = 0x4000004f; /* Inappropriate file type or format */
|
| 235 | + enum EAUTH = 0x40000050; /* Authentication error */
|
| 236 | + enum ENEEDAUTH = 0x40000051; /* Need authenticator */
|
| 237 | + enum ENOSYS = 0x4000004e; /* Function not implemented */
|
| 238 | + enum ELIBEXEC = 0x40000053; /* Cannot exec a shared library directly */
|
| 239 | + enum ENOTSUP = 0x40000076; /* Not supported */
|
| 240 | + enum EILSEQ = 0x4000006a; /* Invalid or incomplete multibyte or wide character */
|
| 241 | + enum EBACKGROUND = 0x40000064; /* Inappropriate operation for background process */
|
| 242 | + enum EDIED = 0x40000065; /* Translator died */
|
| 243 | + enum ED = 0x40000066; /* ? */
|
| 244 | + enum EGREGIOUS = 0x40000067; /* You really blew it this time */
|
| 245 | + enum EIEIO = 0x40000068; /* Computer bought the farm */
|
| 246 | + enum EGRATUITOUS = 0x40000069; /* Gratuitous error */
|
| 247 | + enum EBADMSG = 0x4000006b; /* Bad message */
|
| 248 | + enum EIDRM = 0x4000006c; /* Identifier removed */
|
| 249 | + enum EMULTIHOP = 0x4000006d; /* Multihop attempted */
|
| 250 | + enum ENODATA = 0x4000006e; /* No data available */
|
| 251 | + enum ENOLINK = 0x4000006f; /* Link has been severed */
|
| 252 | + enum ENOMSG = 0x40000070; /* No message of desired type */
|
| 253 | + enum ENOSR = 0x40000071; /* Out of streams resources */
|
| 254 | + enum ENOSTR = 0x40000072; /* Device not a stream */
|
| 255 | + enum EOVERFLOW = 0x40000073; /* Value too large for defined data type */
|
| 256 | + enum EPROTO = 0x40000074; /* Protocol error */
|
| 257 | + enum ETIME = 0x40000075; /* Timer expired */
|
| 258 | + enum ECANCELED = 0x40000077; /* Operation canceled */
|
| 259 | + enum EOWNERDEAD = 0x40000078; /* Owner died */
|
| 260 | + enum ENOTRECOVERABLE = 0x40000079; /* State not recoverable */
|
| 261 | + }
|
| 262 | else
|
| 263 | {
|
| 264 | static assert(false, "Unsupported platform");
|
| 265 | diff --git a/libphobos/libdruntime/core/stdc/limits.d b/libphobos/libdruntime/core/stdc/limits.d
|
| 266 | index f3f88006a..e67b0cb22 100644
|
| 267 | |
| 268 | |
| 269 | @@ -182,3 +182,17 @@ else version (Windows)
|
| 270 | ///
|
| 271 | enum PIPE_BUF = 5120;
|
| 272 | }
|
| 273 | +else version (Hurd)
|
| 274 | +{
|
| 275 | + // no arbitrary fixed limits
|
| 276 | + ///
|
| 277 | + // enum MAX_CANON
|
| 278 | + ///
|
| 279 | + // enum MAX_INPUT
|
| 280 | + ///
|
| 281 | + enum NAME_MAX = 255;
|
| 282 | + ///
|
| 283 | + // enum PATH_MAX
|
| 284 | + ///
|
| 285 | + // enum PIPE_BUF
|
| 286 | +}
|
| 287 | diff --git a/libphobos/libdruntime/core/sys/hurd/config.d b/libphobos/libdruntime/core/sys/hurd/config.d
|
| 288 | new file mode 100644
|
| 289 | index 000000000..109990d54
|
| 290 | |
| 291 | |
| 292 | @@ -0,0 +1,30 @@
|
| 293 | +/**
|
| 294 | + * D header file for GNU/Hurd.
|
| 295 | + *
|
| 296 | + * Copyright: Copyright (c) 2026 D Language Foundation
|
| 297 | + * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
|
| 298 | + */
|
| 299 | +module core.sys.hurd.config;
|
| 300 | +
|
| 301 | +version (Hurd):
|
| 302 | +
|
| 303 | +public import core.sys.posix.config;
|
| 304 | +
|
| 305 | +// man 7 feature_test_macros
|
| 306 | +// http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
|
| 307 | +enum _GNU_SOURCE = true;
|
| 308 | +// deduced <features.h>
|
| 309 | +// http://sourceware.org/git/?p=glibc.git;a=blob;f=include/features.h
|
| 310 | +enum _DEFAULT_SOURCE = true;
|
| 311 | +enum _ATFILE_SOURCE = true;
|
| 312 | +
|
| 313 | +// _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for _DEFAULT_SOURCE.
|
| 314 | +deprecated("use _DEFAULT_SOURCE")
|
| 315 | +{
|
| 316 | + enum _BSD_SOURCE = true;
|
| 317 | + enum _SVID_SOURCE = true;
|
| 318 | +}
|
| 319 | +
|
| 320 | +enum __USE_MISC = _DEFAULT_SOURCE;
|
| 321 | +enum __USE_ATFILE = _ATFILE_SOURCE;
|
| 322 | +enum __USE_GNU = _GNU_SOURCE;
|
| 323 | diff --git a/libphobos/libdruntime/core/sys/hurd/dlfcn.d b/libphobos/libdruntime/core/sys/hurd/dlfcn.d
|
| 324 | new file mode 100644
|
| 325 | index 000000000..430857621
|
| 326 | |
| 327 | |
| 328 | @@ -0,0 +1,114 @@
|
| 329 | +/**
|
| 330 | + * D header file for GNU/Hurd.
|
| 331 | + *
|
| 332 | + * Copyright: Copyright (c) 2026 D Language Foundation
|
| 333 | + * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
|
| 334 | + * $(LINK2 http://sourceware.org/git/?p=glibc.git;a=blob;f=dlfcn/dlfcn.h, glibc dlfcn/dlfcn.h)
|
| 335 | + */
|
| 336 | +module core.sys.hurd.dlfcn;
|
| 337 | +
|
| 338 | +version (Hurd):
|
| 339 | +extern (C):
|
| 340 | +nothrow:
|
| 341 | +@nogc:
|
| 342 | +@system:
|
| 343 | +
|
| 344 | +
|
| 345 | +public import core.sys.posix.dlfcn;
|
| 346 | +import core.sys.hurd.config;
|
| 347 | +
|
| 348 | +// <bits/dlfcn.h>
|
| 349 | +
|
| 350 | +// http://sourceware.org/git/?p=glibc.git;a=blob;f=bits/dlfcn.h
|
| 351 | +// enum RTLD_LAZY = 0x00001; // POSIX
|
| 352 | +// enum RTLD_NOW = 0x00002; // POSIX
|
| 353 | +enum RTLD_BINDING_MASK = 0x3;
|
| 354 | +enum RTLD_NOLOAD = 0x00004;
|
| 355 | +enum RTLD_DEEPBIND = 0x00008;
|
| 356 | +
|
| 357 | +// enum RTLD_GLOBAL = 0x00100; // POSIX
|
| 358 | +// enum RTLD_LOCAL = 0; // POSIX
|
| 359 | +enum RTLD_NODELETE = 0x01000;
|
| 360 | +
|
| 361 | +static if (__USE_GNU)
|
| 362 | +{
|
| 363 | + RT DL_CALL_FCT(RT, Args...)(RT function(Args) fctp, auto ref Args args)
|
| 364 | + {
|
| 365 | + _dl_mcount_wrapper_check(cast(void*)fctp);
|
| 366 | + return fctp(args);
|
| 367 | + }
|
| 368 | +
|
| 369 | + void _dl_mcount_wrapper_check(void* __selfpc);
|
| 370 | +}
|
| 371 | +// <bits/dlfcn.h>
|
| 372 | +
|
| 373 | +static if (__USE_GNU)
|
| 374 | +{
|
| 375 | + enum RTLD_NEXT = cast(void *)-1L;
|
| 376 | + enum RTLD_DEFAULT = cast(void *)0;
|
| 377 | + alias c_long Lmid_t;
|
| 378 | + enum LM_ID_BASE = 0;
|
| 379 | + enum LM_ID_NEWLM = -1;
|
| 380 | +}
|
| 381 | +
|
| 382 | +// void* dlopen(const scope char* __file, int __mode); // POSIX
|
| 383 | +// int dlclose(void* __handle); // POSIX
|
| 384 | +// void* dlsym(void* __handle, const scope char* __name); // POSIX
|
| 385 | +
|
| 386 | +static if (__USE_GNU)
|
| 387 | +{
|
| 388 | + void* dlmopen(Lmid_t __nsid, const scope char* __file, int __mode);
|
| 389 | + void* dlvsym(void* __handle, const scope char* __name, const scope char* __version);
|
| 390 | +}
|
| 391 | +
|
| 392 | +// char* dlerror(); // POSIX
|
| 393 | +
|
| 394 | +static if (__USE_GNU)
|
| 395 | +{
|
| 396 | + struct Dl_info
|
| 397 | + {
|
| 398 | + const(char)* dli_fname;
|
| 399 | + void* dli_fbase;
|
| 400 | + const(char)* dli_sname;
|
| 401 | + void* dli_saddr;
|
| 402 | + }
|
| 403 | +
|
| 404 | + int dladdr(const scope void* __address, Dl_info* __info);
|
| 405 | + int dladdr1(void* __address, Dl_info* __info, void** __extra_info, int __flags);
|
| 406 | +
|
| 407 | + enum
|
| 408 | + {
|
| 409 | + RTLD_DL_SYMENT = 1,
|
| 410 | + RTLD_DL_LINKMAP = 2,
|
| 411 | + }
|
| 412 | +
|
| 413 | + int dlinfo(void* __handle, int __request, void* __arg);
|
| 414 | +
|
| 415 | + enum
|
| 416 | + {
|
| 417 | + RTLD_DI_LMID = 1,
|
| 418 | + RTLD_DI_LINKMAP = 2,
|
| 419 | + RTLD_DI_CONFIGADDR = 3,
|
| 420 | + RTLD_DI_SERINFO = 4,
|
| 421 | + RTLD_DI_SERINFOSIZE = 5,
|
| 422 | + RTLD_DI_ORIGIN = 6,
|
| 423 | + RTLD_DI_PROFILENAME = 7,
|
| 424 | + RTLD_DI_PROFILEOUT = 8,
|
| 425 | + RTLD_DI_TLS_MODID = 9,
|
| 426 | + RTLD_DI_TLS_DATA = 10,
|
| 427 | + RTLD_DI_MAX = 10,
|
| 428 | + }
|
| 429 | +
|
| 430 | + struct Dl_serpath
|
| 431 | + {
|
| 432 | + char* dls_name;
|
| 433 | + uint dls_flags;
|
| 434 | + }
|
| 435 | +
|
| 436 | + struct Dl_serinfo
|
| 437 | + {
|
| 438 | + size_t dls_size;
|
| 439 | + uint dls_cnt;
|
| 440 | + Dl_serpath[1] dls_serpath;
|
| 441 | + }
|
| 442 | +}
|
| 443 | diff --git a/libphobos/libdruntime/core/sys/hurd/elf.d b/libphobos/libdruntime/core/sys/hurd/elf.d
|
| 444 | new file mode 100644
|
| 445 | index 000000000..0cdc29c5a
|
| 446 | |
| 447 | |
| 448 | @@ -0,0 +1,162 @@
|
| 449 | +/**
|
| 450 | + * D header file for GNU/Hurd.
|
| 451 | + *
|
| 452 | + * Copyright: Copyright (c) 2026 D Language Foundation
|
| 453 | + * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
|
| 454 | + * $(LINK2 http://sourceware.org/git/?p=glibc.git;a=blob;f=elf/elf.h, glibc elf/elf.h)
|
| 455 | + */
|
| 456 | +module core.sys.hurd.elf;
|
| 457 | +
|
| 458 | +version (Hurd):
|
| 459 | +extern (C):
|
| 460 | +pure:
|
| 461 | +nothrow:
|
| 462 | +@system:
|
| 463 | +
|
| 464 | +import core.stdc.stdint;
|
| 465 | +public import core.sys.elf;
|
| 466 | +
|
| 467 | +extern (D)
|
| 468 | +{
|
| 469 | + auto ELF32_ST_VISIBILITY(O)(O o) { return o & 0x03; }
|
| 470 | + alias ELF32_ST_VISIBILITY ELF64_ST_VISIBILITY;
|
| 471 | +}
|
| 472 | +
|
| 473 | +struct Elf32_Nhdr
|
| 474 | +{
|
| 475 | + Elf32_Word n_namesz;
|
| 476 | + Elf32_Word n_descsz;
|
| 477 | + Elf32_Word n_type;
|
| 478 | +}
|
| 479 | +
|
| 480 | +struct Elf64_Nhdr
|
| 481 | +{
|
| 482 | + Elf64_Word n_namesz;
|
| 483 | + Elf64_Word n_descsz;
|
| 484 | + Elf64_Word n_type;
|
| 485 | +}
|
| 486 | +
|
| 487 | +enum NT_PRSTATUS = 1;
|
| 488 | +enum NT_FPREGSET = 2;
|
| 489 | +enum NT_PRPSINFO = 3;
|
| 490 | +enum NT_PRXREG = 4;
|
| 491 | +enum NT_TASKSTRUCT = 4;
|
| 492 | +enum NT_PLATFORM = 5;
|
| 493 | +enum NT_AUXV = 6;
|
| 494 | +enum NT_GWINDOWS = 7;
|
| 495 | +enum NT_ASRS = 8;
|
| 496 | +enum NT_PSTATUS = 10;
|
| 497 | +enum NT_PSINFO = 13;
|
| 498 | +enum NT_PRCRED = 14;
|
| 499 | +enum NT_UTSNAME = 15;
|
| 500 | +enum NT_LWPSTATUS = 16;
|
| 501 | +enum NT_LWPSINFO = 17;
|
| 502 | +enum NT_PRFPXREG = 20;
|
| 503 | +enum NT_SIGINFO = 0x53494749;
|
| 504 | +enum NT_FILE = 0x46494c45;
|
| 505 | +enum NT_PRXFPREG = 0x46e62b7f;
|
| 506 | +enum NT_PPC_VMX = 0x100;
|
| 507 | +enum NT_PPC_SPE = 0x101;
|
| 508 | +enum NT_PPC_VSX = 0x102;
|
| 509 | +enum NT_386_TLS = 0x200;
|
| 510 | +enum NT_386_IOPERM = 0x201;
|
| 511 | +enum NT_X86_XSTATE = 0x202;
|
| 512 | +enum NT_S390_HIGH_GPRS = 0x300;
|
| 513 | +enum NT_S390_TIMER = 0x301;
|
| 514 | +enum NT_S390_TODCMP = 0x302;
|
| 515 | +enum NT_S390_TODPREG = 0x303;
|
| 516 | +enum NT_S390_CTRS = 0x304;
|
| 517 | +enum NT_S390_PREFIX = 0x305;
|
| 518 | +enum NT_S390_LAST_BREAK = 0x306;
|
| 519 | +enum NT_S390_SYSTEM_CALL = 0x307;
|
| 520 | +enum NT_S390_TDB = 0x308;
|
| 521 | +enum NT_ARM_VFP = 0x400;
|
| 522 | +enum NT_ARM_TLS = 0x401;
|
| 523 | +enum NT_ARM_HW_BREAK = 0x402;
|
| 524 | +enum NT_ARM_HW_WATCH = 0x403;
|
| 525 | +
|
| 526 | +enum NT_VERSION = 1;
|
| 527 | +
|
| 528 | +struct Elf32_Dyn
|
| 529 | +{
|
| 530 | + Elf32_Sword d_tag;
|
| 531 | + union _d_un
|
| 532 | + {
|
| 533 | + Elf32_Word d_val;
|
| 534 | + Elf32_Addr d_ptr;
|
| 535 | + } _d_un d_un;
|
| 536 | +}
|
| 537 | +
|
| 538 | +struct Elf64_Dyn
|
| 539 | +{
|
| 540 | + Elf64_Sxword d_tag;
|
| 541 | + union _d_un
|
| 542 | + {
|
| 543 | + Elf64_Xword d_val;
|
| 544 | + Elf64_Addr d_ptr;
|
| 545 | + } _d_un d_un;
|
| 546 | +}
|
| 547 | +
|
| 548 | +enum NT_GNU_ABI_TAG = 1;
|
| 549 | +enum NT_GNU_HWCAP = 2;
|
| 550 | +enum NT_GNU_BUILD_ID = 3;
|
| 551 | +enum NT_GNU_GOLD_VERSION = 4;
|
| 552 | +
|
| 553 | +struct Elf32_auxv_t
|
| 554 | +{
|
| 555 | + uint32_t a_type;
|
| 556 | + union _a_un
|
| 557 | + {
|
| 558 | + uint32_t a_val;
|
| 559 | + } _a_un a_un;
|
| 560 | +}
|
| 561 | +
|
| 562 | +struct Elf64_auxv_t
|
| 563 | +{
|
| 564 | + uint64_t a_type;
|
| 565 | + union _a_un
|
| 566 | + {
|
| 567 | + uint64_t a_val;
|
| 568 | + } _a_un a_un;
|
| 569 | +}
|
| 570 | +
|
| 571 | +enum AT_NULL = 0;
|
| 572 | +enum AT_IGNORE = 1;
|
| 573 | +enum AT_EXECFD = 2;
|
| 574 | +enum AT_PHDR = 3;
|
| 575 | +enum AT_PHENT = 4;
|
| 576 | +enum AT_PHNUM = 5;
|
| 577 | +enum AT_PAGESZ = 6;
|
| 578 | +enum AT_BASE = 7;
|
| 579 | +enum AT_FLAGS = 8;
|
| 580 | +enum AT_ENTRY = 9;
|
| 581 | +enum AT_NOTELF = 10;
|
| 582 | +enum AT_UID = 11;
|
| 583 | +enum AT_EUID = 12;
|
| 584 | +enum AT_GID = 13;
|
| 585 | +enum AT_EGID = 14;
|
| 586 | +enum AT_CLKTCK = 17;
|
| 587 | +enum AT_PLATFORM = 15;
|
| 588 | +enum AT_HWCAP = 16;
|
| 589 | +enum AT_FPUCW = 18;
|
| 590 | +enum AT_DCACHEBSIZE = 19;
|
| 591 | +enum AT_ICACHEBSIZE = 20;
|
| 592 | +enum AT_UCACHEBSIZE = 21;
|
| 593 | +enum AT_IGNOREPPC = 22;
|
| 594 | +
|
| 595 | +enum AT_SECURE = 23;
|
| 596 | +
|
| 597 | +enum AT_BASE_PLATFORM = 24;
|
| 598 | +
|
| 599 | +enum AT_RANDOM = 25;
|
| 600 | +
|
| 601 | +enum AT_HWCAP2 = 26;
|
| 602 | +
|
| 603 | +enum AT_EXECFN = 31;
|
| 604 | +enum AT_SYSINFO = 32;
|
| 605 | +enum AT_SYSINFO_EHDR = 33;
|
| 606 | +
|
| 607 | +enum AT_L1I_CACHESHAPE = 34;
|
| 608 | +enum AT_L1D_CACHESHAPE = 35;
|
| 609 | +enum AT_L2_CACHESHAPE = 36;
|
| 610 | +enum AT_L3_CACHESHAPE = 37;
|
| 611 | diff --git a/libphobos/libdruntime/core/sys/hurd/errno.d b/libphobos/libdruntime/core/sys/hurd/errno.d
|
| 612 | new file mode 100644
|
| 613 | index 000000000..db9c83c90
|
| 614 | |
| 615 | |
| 616 | @@ -0,0 +1,21 @@
|
| 617 | +/**
|
| 618 | + * D header file for GNU/Hurd
|
| 619 | + *
|
| 620 | + * Copyright: Copyright (c) 2026 D Language Foundation
|
| 621 | + * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
|
| 622 | + * $(LINK2 http://sourceware.org/git/?p=glibc.git;a=blob;f=stdlib/errno.h, glibc stdlib/errno.h)
|
| 623 | + */
|
| 624 | +module core.sys.hurd.errno;
|
| 625 | +
|
| 626 | +version (Hurd):
|
| 627 | +extern (C):
|
| 628 | +nothrow:
|
| 629 | +
|
| 630 | +public import core.stdc.errno;
|
| 631 | +import core.sys.hurd.config;
|
| 632 | +
|
| 633 | +static if (_GNU_SOURCE)
|
| 634 | +{
|
| 635 | + extern __gshared char* program_invocation_name, program_invocation_short_name;
|
| 636 | + alias error_t = int;
|
| 637 | +}
|
| 638 | diff --git a/libphobos/libdruntime/core/sys/hurd/execinfo.d b/libphobos/libdruntime/core/sys/hurd/execinfo.d
|
| 639 | new file mode 100644
|
| 640 | index 000000000..4afeffa8f
|
| 641 | |
| 642 | |
| 643 | @@ -0,0 +1,16 @@
|
| 644 | +/**
|
| 645 | + * D header file for GNU/Hurd.
|
| 646 | + *
|
| 647 | + * Copyright: Copyright (c) 2026 D Language Foundation
|
| 648 | + * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
|
| 649 | + */
|
| 650 | +module core.sys.hurd.execinfo;
|
| 651 | +
|
| 652 | +version (Hurd):
|
| 653 | +extern (C):
|
| 654 | +nothrow:
|
| 655 | +@nogc:
|
| 656 | +
|
| 657 | +int backtrace(void** buffer, int size);
|
| 658 | +char** backtrace_symbols(const(void*)* buffer, int size);
|
| 659 | +void backtrace_symbols_fd(const(void*)* buffer, int size, int fd);
|
| 660 | diff --git a/libphobos/libdruntime/core/sys/hurd/link.d b/libphobos/libdruntime/core/sys/hurd/link.d
|
| 661 | new file mode 100644
|
| 662 | index 000000000..e9df0fc0b
|
| 663 | |
| 664 | |
| 665 | @@ -0,0 +1,134 @@
|
| 666 | +/**
|
| 667 | + * D header file for GNU/Hurd.
|
| 668 | + * Copyright: Copyright (c) 2026 D Language Foundation
|
| 669 | + * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
|
| 670 | + *
|
| 671 | + * $(LINK2 http://sourceware.org/git/?p=glibc.git;a=blob;f=elf/link.h, glibc elf/link.h)
|
| 672 | + */
|
| 673 | +module core.sys.hurd.link;
|
| 674 | +
|
| 675 | +version (Hurd):
|
| 676 | +extern (C):
|
| 677 | +nothrow:
|
| 678 | +@system:
|
| 679 | +
|
| 680 | +version (X86) version = X86_Any;
|
| 681 | +version (X86_64) version = X86_Any;
|
| 682 | +
|
| 683 | +import core.stdc.stdint : uintptr_t, uint32_t, uint64_t;
|
| 684 | +import core.sys.hurd.config : __WORDSIZE;
|
| 685 | +import core.sys.hurd.dlfcn : Lmid_t;
|
| 686 | +import core.sys.hurd.elf;
|
| 687 | +
|
| 688 | +version (X86_Any)
|
| 689 | +{
|
| 690 | + // http://sourceware.org/git/?p=glibc.git;a=blob;f=bits/elfclass.h
|
| 691 | + alias __WORDSIZE __ELF_NATIVE_CLASS;
|
| 692 | + alias uint32_t Elf_Symndx;
|
| 693 | +}
|
| 694 | +else
|
| 695 | + static assert(0, "unimplemented");
|
| 696 | +// <bits/elfclass.h>
|
| 697 | +
|
| 698 | +template ElfW(string type)
|
| 699 | +{
|
| 700 | + mixin("alias Elf"~__ELF_NATIVE_CLASS.stringof~"_"~type~" ElfW;");
|
| 701 | +}
|
| 702 | +
|
| 703 | +enum
|
| 704 | +{
|
| 705 | + RT_CONSISTENT,
|
| 706 | + RT_ADD,
|
| 707 | + RT_DELETE,
|
| 708 | +}
|
| 709 | +
|
| 710 | +struct r_debug
|
| 711 | +{
|
| 712 | + int r_version;
|
| 713 | + link_map* r_map;
|
| 714 | + ElfW!"Addr" r_brk;
|
| 715 | + typeof(RT_CONSISTENT) r_state;
|
| 716 | + ElfW!"Addr" r_ldbase;
|
| 717 | +}
|
| 718 | +
|
| 719 | +extern r_debug _r_debug;
|
| 720 | +extern ElfW!"Dyn"* _DYNAMIC;
|
| 721 | +
|
| 722 | +struct link_map
|
| 723 | +{
|
| 724 | + ElfW!"Addr" l_addr;
|
| 725 | + char* l_name;
|
| 726 | + ElfW!"Dyn"* l_ld;
|
| 727 | + link_map* l_next, l_prev;
|
| 728 | +}
|
| 729 | +
|
| 730 | +enum
|
| 731 | +{
|
| 732 | + LA_ACT_CONSISTENT,
|
| 733 | + LA_ACT_ADD,
|
| 734 | + LA_ACT_DELETE,
|
| 735 | +}
|
| 736 | +
|
| 737 | +enum
|
| 738 | +{
|
| 739 | + LA_SER_ORIG = 0x01,
|
| 740 | + LA_SER_LIBPATH = 0x02,
|
| 741 | + LA_SER_RUNPATH = 0x04,
|
| 742 | + LA_SER_CONFIG = 0x08,
|
| 743 | + LA_SER_DEFAULT = 0x40,
|
| 744 | + LA_SER_SECURE = 0x80,
|
| 745 | +}
|
| 746 | +
|
| 747 | +
|
| 748 | +enum
|
| 749 | +{
|
| 750 | + LA_FLG_BINDTO = 0x01,
|
| 751 | + LA_FLG_BINDFROM = 0x02,
|
| 752 | +}
|
| 753 | +
|
| 754 | +
|
| 755 | +enum
|
| 756 | +{
|
| 757 | + LA_SYMB_NOPLTENTER = 0x01,
|
| 758 | + LA_SYMB_NOPLTEXIT = 0x02,
|
| 759 | + LA_SYMB_STRUCTCALL = 0x04,
|
| 760 | + LA_SYMB_DLSYM = 0x08,
|
| 761 | + LA_SYMB_ALTVALUE = 0x10,
|
| 762 | +}
|
| 763 | +
|
| 764 | +struct dl_phdr_info
|
| 765 | +{
|
| 766 | + ElfW!"Addr" dlpi_addr;
|
| 767 | + const(char)* dlpi_name;
|
| 768 | + const(ElfW!"Phdr")* dlpi_phdr;
|
| 769 | + ElfW!"Half" dlpi_phnum;
|
| 770 | +
|
| 771 | + // check the SIZE argument of the dl_iterate_phdr callback whether
|
| 772 | + // the following members are available
|
| 773 | + ulong dlpi_adds;
|
| 774 | + ulong dlpi_subs;
|
| 775 | +
|
| 776 | + size_t dlpi_tls_modid;
|
| 777 | + void *dlpi_tls_data;
|
| 778 | +}
|
| 779 | +
|
| 780 | +private alias extern(C) int function(dl_phdr_info*, size_t, void *) dl_iterate_phdr_cb;
|
| 781 | +private alias extern(C) int function(dl_phdr_info*, size_t, void *) @nogc dl_iterate_phdr_cb_ngc;
|
| 782 | +extern int dl_iterate_phdr(dl_iterate_phdr_cb __callback, void*__data);
|
| 783 | +extern int dl_iterate_phdr(dl_iterate_phdr_cb_ngc __callback, void*__data) @nogc;
|
| 784 | +
|
| 785 | +// ld.so auditing interfaces prototypes have to be defined by the auditing DSO.
|
| 786 | +extern uint la_version(uint __version);
|
| 787 | +extern void la_activity(uintptr_t *__cookie, uint __flag);
|
| 788 | +extern char* la_objsearch(const(char)* __name, uintptr_t* __cookie,
|
| 789 | + uint __flag);
|
| 790 | +extern uint la_objopen(link_map* __map, Lmid_t __lmid,
|
| 791 | + uintptr_t* __cookie);
|
| 792 | +extern void la_preinit(uintptr_t* __cookie);
|
| 793 | +extern uintptr_t la_symbind32(Elf32_Sym* __sym, uint __ndx,
|
| 794 | + uintptr_t* __refcook, uintptr_t* __defcook,
|
| 795 | + uint *__flags, const(char)* __symname);
|
| 796 | +extern uintptr_t la_symbind64(Elf64_Sym* __sym, uint __ndx,
|
| 797 | + uintptr_t* __refcook, uintptr_t* __defcook,
|
| 798 | + uint* __flags, const(char)* __symname);
|
| 799 | +extern uint la_objclose(uintptr_t *__cookie);
|
| 800 | diff --git a/libphobos/libdruntime/core/sys/hurd/sys/types.d b/libphobos/libdruntime/core/sys/hurd/sys/types.d
|
| 801 | new file mode 100644
|
| 802 | index 000000000..a523a8df3
|
| 803 | |
| 804 | |
| 805 | @@ -0,0 +1,22 @@
|
| 806 | +/**
|
| 807 | + * D header file for Hurd extensions to POSIX's sys/types.h.
|
| 808 | + *
|
| 809 | + * Copyright: Copyright (c) 2026 D Language Foundation
|
| 810 | + * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
|
| 811 | + */
|
| 812 | +
|
| 813 | +module core.sys.hurd.sys.types;
|
| 814 | +
|
| 815 | +import core.sys.posix.config;
|
| 816 | +
|
| 817 | +version (Hurd):
|
| 818 | +extern(C):
|
| 819 | +@nogc:
|
| 820 | +nothrow:
|
| 821 | +
|
| 822 | +static if (__WORDSIZE == 32)
|
| 823 | + alias ushort ipc_pid_t;
|
| 824 | +else
|
| 825 | + alias int ipc_pid_t;
|
| 826 | +
|
| 827 | +alias fsid_t = ulong;
|
| 828 | diff --git a/libphobos/libdruntime/core/sys/hurd/time.d b/libphobos/libdruntime/core/sys/hurd/time.d
|
| 829 | new file mode 100644
|
| 830 | index 000000000..12031e599
|
| 831 | |
| 832 | |
| 833 | @@ -0,0 +1,15 @@
|
| 834 | +/**
|
| 835 | + * D header file for Hurd extensions to POSIX's time.h.
|
| 836 | + *
|
| 837 | + * Copyright: Copyright (c) 2026 D Language Foundation
|
| 838 | + * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
|
| 839 | + */
|
| 840 | +module core.sys.hurd.time;
|
| 841 | +
|
| 842 | +public import core.sys.posix.time;
|
| 843 | +
|
| 844 | +version (Hurd):
|
| 845 | +
|
| 846 | +enum CLOCK_MONOTONIC_RAW = 4;
|
| 847 | +enum CLOCK_REALTIME_COARSE = 5;
|
| 848 | +enum CLOCK_MONOTONIC_COARSE = 6;
|
| 849 | diff --git a/libphobos/libdruntime/core/sys/hurd/unistd.d b/libphobos/libdruntime/core/sys/hurd/unistd.d
|
| 850 | new file mode 100644
|
| 851 | index 000000000..a351134cd
|
| 852 | |
| 853 | |
| 854 | @@ -0,0 +1,30 @@
|
| 855 | +/**
|
| 856 | + * D header file for GNU/Hurd.
|
| 857 | + *
|
| 858 | + * Copyright: Copyright (c) 2026 D Language Foundation
|
| 859 | + * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
|
| 860 | + */
|
| 861 | +module core.sys.hurd.unistd;
|
| 862 | +
|
| 863 | +public import core.sys.posix.unistd;
|
| 864 | +
|
| 865 | +version (Hurd):
|
| 866 | +extern(C):
|
| 867 | +nothrow:
|
| 868 | +@nogc:
|
| 869 | +
|
| 870 | +
|
| 871 | +// Additional seek constants for sparse file handling
|
| 872 | +// from Hurds's unistd.h, stdio.h
|
| 873 | +enum {
|
| 874 | + /// Offset is relative to the next location containing data
|
| 875 | + SEEK_DATA = 3,
|
| 876 | + /// Offset is relative to the next hole (or EOF if file is not sparse)
|
| 877 | + SEEK_HOLE = 4
|
| 878 | +}
|
| 879 | +
|
| 880 | +/// Prompt for a password without echoing it.
|
| 881 | +char* getpass(const(char)* prompt);
|
| 882 | +
|
| 883 | +/// Close all open file descriptors greater or equal to `lowfd`
|
| 884 | +void closefrom(int lowfd);
|
| 885 | diff --git a/libphobos/libdruntime/core/sys/linux/stdio.d b/libphobos/libdruntime/core/sys/linux/stdio.d
|
| 886 | index 2d079fd71..0b2ea266b 100644
|
| 887 | |
| 888 | |
| 889 | @@ -6,6 +6,7 @@
|
| 890 | * Authors: Danny Milosavljevic
|
| 891 | */
|
| 892 | module core.sys.linux.stdio;
|
| 893 | +version (linux):
|
| 894 | version (CRuntime_Glibc):
|
| 895 | public import core.sys.posix.stdio;
|
| 896 | import core.sys.posix.sys.types : ssize_t, off64_t = off_t;
|
| 897 | diff --git a/libphobos/libdruntime/core/sys/posix/dirent.d b/libphobos/libdruntime/core/sys/posix/dirent.d
|
| 898 | index c7e8649d6..be56a7c2d 100644
|
| 899 | |
| 900 | |
| 901 | @@ -147,6 +147,17 @@ else version (Solaris)
|
| 902 | char[1] d_name = 0;
|
| 903 | }
|
| 904 | }
|
| 905 | +else version (Hurd)
|
| 906 | +{
|
| 907 | + struct dirent
|
| 908 | + {
|
| 909 | + ino_t d_ino;
|
| 910 | + ushort d_reclen;
|
| 911 | + ubyte d_type;
|
| 912 | + ubyte d_namlen;
|
| 913 | + char[1] d_name = 0;
|
| 914 | + }
|
| 915 | +}
|
| 916 | else
|
| 917 | {
|
| 918 | static assert(false, "Unsupported platform");
|
| 919 | diff --git a/libphobos/libdruntime/core/sys/posix/fcntl.d b/libphobos/libdruntime/core/sys/posix/fcntl.d
|
| 920 | index c0e9006a0..b5af01e74 100644
|
| 921 | |
| 922 | |
| 923 | @@ -843,6 +843,113 @@ else version (Solaris)
|
| 924 | }
|
| 925 | }
|
| 926 | }
|
| 927 | +else version (Hurd)
|
| 928 | +{
|
| 929 | + enum F_DUPFD = 0;
|
| 930 | + enum F_GETFD = 1;
|
| 931 | + enum F_SETFD = 2;
|
| 932 | + enum F_GETFL = 3;
|
| 933 | + enum F_SETFL = 4;
|
| 934 | + enum F_GETOWN = 5;
|
| 935 | + enum F_SETOWN = 6;
|
| 936 | +
|
| 937 | + static if ( __USE_FILE_OFFSET64 )
|
| 938 | + {
|
| 939 | + enum F_GETLK = F_GETLK64;
|
| 940 | + enum F_SETLK = F_SETLK64;
|
| 941 | + enum F_SETLKW = F_SETLKW64;
|
| 942 | + }
|
| 943 | + else
|
| 944 | + {
|
| 945 | + enum F_GETLK = 7;
|
| 946 | + enum F_SETLK = 8;
|
| 947 | + enum F_SETLKW = 9;
|
| 948 | + }
|
| 949 | + enum F_GETLK64 = 10;
|
| 950 | + enum F_SETLK64 = 11;
|
| 951 | + enum F_SETLKW64 = 12;
|
| 952 | +
|
| 953 | + enum F_DUPFD_CLOEXEC = 1030;
|
| 954 | +
|
| 955 | + enum FD_CLOEXEC = 1;
|
| 956 | +
|
| 957 | + enum F_RDLCK = 1;
|
| 958 | + enum F_WRLCK = 2;
|
| 959 | + enum F_UNLCK = 3;
|
| 960 | +
|
| 961 | + enum O_CREAT = 0x0010;
|
| 962 | + enum O_EXCL = 0x0020;
|
| 963 | + enum O_NOCTTY = 0;
|
| 964 | + enum O_TRUNC = 0x00010000;
|
| 965 | +
|
| 966 | + enum O_APPEND = 0x0100;
|
| 967 | + enum O_DSYNC = O_SYNC;
|
| 968 | + enum O_NONBLOCK = 0x0004;
|
| 969 | + enum O_RSYNC = O_SYNC;
|
| 970 | +
|
| 971 | +
|
| 972 | + enum O_ACCMODE = O_RDWR;
|
| 973 | + enum O_RDONLY = 0x0001;
|
| 974 | + enum O_WRONLY = 0x0002;
|
| 975 | + enum O_RDWR = (O_RDONLY|O_WRONLY);
|
| 976 | +
|
| 977 | + enum O_SYNC = O_FSYNC;
|
| 978 | + enum O_FSYNC = 0x0400;
|
| 979 | +
|
| 980 | + enum O_READ = O_RDONLY;
|
| 981 | + enum O_WRITE = O_WRONLY;
|
| 982 | + enum O_EXEC = 0x0004;
|
| 983 | + enum O_NORW = 0;
|
| 984 | + enum O_LARGEFILE = 0;
|
| 985 | + enum O_NOLINK = 0x0040;
|
| 986 | + enum O_NOTRANS = 0x0080;
|
| 987 | + enum O_NOFOLLOW = 0x00100000;
|
| 988 | + enum O_DIRECTORY = 0x00200000;
|
| 989 | + enum O_ASYNC = 0x0200;
|
| 990 | + enum O_NOATIME = 0x0800;
|
| 991 | + enum O_SHLOCK = 0x00020000;
|
| 992 | + enum O_EXLOCK = 0x00040000;
|
| 993 | + enum O_NDELAY = O_NONBLOCK;
|
| 994 | + enum O_HURD = (0xffff | O_EXLOCK | O_SHLOCK);
|
| 995 | + enum O_CLOEXEC = 0x00400000;
|
| 996 | + enum O_TMPFILE = 0x00800000;
|
| 997 | + enum O_IGNORE_CTTY = 0x00080000;
|
| 998 | +
|
| 999 | +
|
| 1000 | + version (X86)
|
| 1001 | + {
|
| 1002 | + struct flock
|
| 1003 | + {
|
| 1004 | + int l_type;
|
| 1005 | + int l_whence;
|
| 1006 | + off_t l_start;
|
| 1007 | + off_t l_len;
|
| 1008 | + pid_t l_pid;
|
| 1009 | + }
|
| 1010 | + }
|
| 1011 | + else version (X86_64)
|
| 1012 | + {
|
| 1013 | + struct flock
|
| 1014 | + {
|
| 1015 | + short l_type;
|
| 1016 | + short l_whence;
|
| 1017 | + off_t l_start;
|
| 1018 | + off_t l_len;
|
| 1019 | + pid_t l_pid;
|
| 1020 | + }
|
| 1021 | + }
|
| 1022 | + else
|
| 1023 | + {
|
| 1024 | + static assert(false, "Unsupported platform");
|
| 1025 | + }
|
| 1026 | +
|
| 1027 | + enum AT_FDCWD = -100;
|
| 1028 | +
|
| 1029 | + enum AT_EACCESS = 0x200;
|
| 1030 | + enum AT_SYMLINK_NOFOLLOW = 0x100;
|
| 1031 | + enum AT_SYMLINK_FOLLOW = 0x400;
|
| 1032 | + enum AT_REMOVEDIR = 0x200;
|
| 1033 | +}
|
| 1034 | else
|
| 1035 | {
|
| 1036 | static assert(false, "Unsupported platform");
|
| 1037 | diff --git a/libphobos/libdruntime/core/sys/posix/netinet/in_.d b/libphobos/libdruntime/core/sys/posix/netinet/in_.d
|
| 1038 | index 5818ee6e2..c5b7c4018 100644
|
| 1039 | |
| 1040 | |
| 1041 | @@ -85,18 +85,31 @@ version (CRuntime_Glibc)
|
| 1042 | //{
|
| 1043 | // in_addr_t s_addr;
|
| 1044 | //}
|
| 1045 | + version (linux)
|
| 1046 | + {
|
| 1047 | + private enum __SOCK_SIZE__ = 16;
|
| 1048 |
|
| 1049 | - private enum __SOCK_SIZE__ = 16;
|
| 1050 | + struct sockaddr_in
|
| 1051 | + {
|
| 1052 | + sa_family_t sin_family;
|
| 1053 | + in_port_t sin_port;
|
| 1054 | + in_addr sin_addr;
|
| 1055 |
|
| 1056 | - struct sockaddr_in
|
| 1057 | + /* Pad to size of `struct sockaddr'. */
|
| 1058 | + ubyte[__SOCK_SIZE__ - sa_family_t.sizeof -
|
| 1059 | + in_port_t.sizeof - in_addr.sizeof] __pad;
|
| 1060 | + }
|
| 1061 | + }
|
| 1062 | + else version (Hurd)
|
| 1063 | {
|
| 1064 | - sa_family_t sin_family;
|
| 1065 | - in_port_t sin_port;
|
| 1066 | - in_addr sin_addr;
|
| 1067 | -
|
| 1068 | - /* Pad to size of `struct sockaddr'. */
|
| 1069 | - ubyte[__SOCK_SIZE__ - sa_family_t.sizeof -
|
| 1070 | - in_port_t.sizeof - in_addr.sizeof] __pad;
|
| 1071 | + struct sockaddr_in
|
| 1072 | + {
|
| 1073 | + ubyte sin_len;
|
| 1074 | + sa_family_t sin_family;
|
| 1075 | + in_port_t sin_port;
|
| 1076 | + in_addr sin_addr;
|
| 1077 | + ubyte[8] sin_zero;
|
| 1078 | + }
|
| 1079 | }
|
| 1080 |
|
| 1081 | enum
|
| 1082 | @@ -513,13 +526,28 @@ version (CRuntime_Glibc)
|
| 1083 | }
|
| 1084 | }
|
| 1085 |
|
| 1086 | - struct sockaddr_in6
|
| 1087 | + version (linux)
|
| 1088 | {
|
| 1089 | - sa_family_t sin6_family;
|
| 1090 | - in_port_t sin6_port;
|
| 1091 | - uint32_t sin6_flowinfo;
|
| 1092 | - in6_addr sin6_addr;
|
| 1093 | - uint32_t sin6_scope_id;
|
| 1094 | + struct sockaddr_in6
|
| 1095 | + {
|
| 1096 | + ushort sin6_family;
|
| 1097 | + uint16_t sin6_port;
|
| 1098 | + uint32_t sin6_flowinfo;
|
| 1099 | + in6_addr sin6_addr;
|
| 1100 | + uint32_t sin6_scope_id;
|
| 1101 | + }
|
| 1102 | + }
|
| 1103 | + else version (Hurd)
|
| 1104 | + {
|
| 1105 | + struct sockaddr_in6
|
| 1106 | + {
|
| 1107 | + uint8_t sin6_len;
|
| 1108 | + sa_family_t sin6_family;
|
| 1109 | + uint16_t sin6_port;
|
| 1110 | + uint32_t sin6_flowinfo;
|
| 1111 | + in6_addr sin6_addr;
|
| 1112 | + uint32_t sin6_scope_id;
|
| 1113 | + }
|
| 1114 | }
|
| 1115 |
|
| 1116 | extern __gshared immutable in6_addr in6addr_any;
|
| 1117 | diff --git a/libphobos/libdruntime/core/sys/posix/poll.d b/libphobos/libdruntime/core/sys/posix/poll.d
|
| 1118 | index 5901f62b5..eeaea0b36 100644
|
| 1119 | |
| 1120 | |
| 1121 | @@ -338,6 +338,22 @@ else version (Solaris)
|
| 1122 | POLLNVAL = 0x0020,
|
| 1123 | }
|
| 1124 | }
|
| 1125 | +else version (Hurd)
|
| 1126 | +{
|
| 1127 | + enum
|
| 1128 | + {
|
| 1129 | + POLLIN = 0x001,
|
| 1130 | + POLLRDNORM = POLLIN,
|
| 1131 | + POLLRDBAND = POLLPRI,
|
| 1132 | + POLLPRI = 0x002,
|
| 1133 | + POLLOUT = 0x004,
|
| 1134 | + POLLWRNORM = POLLOUT,
|
| 1135 | + POLLWRBAND = POLLOUT,
|
| 1136 | + POLLERR = 0x008, /* ocatal 010 */
|
| 1137 | + POLLHUP = 0x010, /* ocatal 020 */
|
| 1138 | + POLLNVAL = 0x020, /* ocatal 040 */
|
| 1139 | + }
|
| 1140 | +}
|
| 1141 | else
|
| 1142 | {
|
| 1143 | static assert(false, "Unsupported platform");
|
| 1144 | diff --git a/libphobos/libdruntime/core/sys/posix/pthread.d b/libphobos/libdruntime/core/sys/posix/pthread.d
|
| 1145 | index 6c5f1a93e..b6c9ca555 100644
|
| 1146 | |
| 1147 | |
| 1148 | @@ -104,41 +104,83 @@ void pthread_testcancel();
|
| 1149 | */
|
| 1150 | version (CRuntime_Glibc)
|
| 1151 | {
|
| 1152 | - enum
|
| 1153 | + version (linux)
|
| 1154 | {
|
| 1155 | - PTHREAD_CANCEL_ENABLE,
|
| 1156 | - PTHREAD_CANCEL_DISABLE
|
| 1157 | - }
|
| 1158 | + enum
|
| 1159 | + {
|
| 1160 | + PTHREAD_CANCEL_ENABLE,
|
| 1161 | + PTHREAD_CANCEL_DISABLE
|
| 1162 | + }
|
| 1163 |
|
| 1164 | - enum
|
| 1165 | - {
|
| 1166 | - PTHREAD_CANCEL_DEFERRED,
|
| 1167 | - PTHREAD_CANCEL_ASYNCHRONOUS
|
| 1168 | - }
|
| 1169 | + enum
|
| 1170 | + {
|
| 1171 | + PTHREAD_CANCEL_DEFERRED,
|
| 1172 | + PTHREAD_CANCEL_ASYNCHRONOUS
|
| 1173 | + }
|
| 1174 |
|
| 1175 | - enum PTHREAD_CANCELED = cast(void*) -1;
|
| 1176 | + enum PTHREAD_CANCELED = cast(void*) -1;
|
| 1177 |
|
| 1178 | - //enum pthread_mutex_t PTHREAD_COND_INITIALIZER = { __LOCK_ALT_INITIALIZER, 0, "", 0 };
|
| 1179 | + //enum pthread_mutex_t PTHREAD_COND_INITIALIZER = { __LOCK_ALT_INITIALIZER, 0, "", 0 };
|
| 1180 |
|
| 1181 | - enum
|
| 1182 | - {
|
| 1183 | - PTHREAD_CREATE_JOINABLE,
|
| 1184 | - PTHREAD_CREATE_DETACHED
|
| 1185 | - }
|
| 1186 | + enum
|
| 1187 | + {
|
| 1188 | + PTHREAD_CREATE_JOINABLE,
|
| 1189 | + PTHREAD_CREATE_DETACHED
|
| 1190 | + }
|
| 1191 |
|
| 1192 | - enum
|
| 1193 | - {
|
| 1194 | - PTHREAD_INHERIT_SCHED,
|
| 1195 | - PTHREAD_EXPLICIT_SCHED
|
| 1196 | - }
|
| 1197 | + enum
|
| 1198 | + {
|
| 1199 | + PTHREAD_INHERIT_SCHED,
|
| 1200 | + PTHREAD_EXPLICIT_SCHED
|
| 1201 | + }
|
| 1202 |
|
| 1203 | - enum PTHREAD_MUTEX_INITIALIZER = pthread_mutex_t.init;
|
| 1204 | - enum PTHREAD_ONCE_INIT = pthread_once_t.init;
|
| 1205 | + enum PTHREAD_MUTEX_INITIALIZER = pthread_mutex_t.init;
|
| 1206 | + enum PTHREAD_ONCE_INIT = pthread_once_t.init;
|
| 1207 |
|
| 1208 | - enum
|
| 1209 | + enum
|
| 1210 | + {
|
| 1211 | + PTHREAD_PROCESS_PRIVATE,
|
| 1212 | + PTHREAD_PROCESS_SHARED
|
| 1213 | + }
|
| 1214 | + }
|
| 1215 | + else version (Hurd)
|
| 1216 | {
|
| 1217 | - PTHREAD_PROCESS_PRIVATE,
|
| 1218 | - PTHREAD_PROCESS_SHARED
|
| 1219 | + enum
|
| 1220 | + {
|
| 1221 | + PTHREAD_CANCEL_DISABLE,
|
| 1222 | + PTHREAD_CANCEL_ENABLE,
|
| 1223 | + }
|
| 1224 | +
|
| 1225 | + enum
|
| 1226 | + {
|
| 1227 | + PTHREAD_CANCEL_DEFERRED,
|
| 1228 | + PTHREAD_CANCEL_ASYNCHRONOUS
|
| 1229 | + }
|
| 1230 | +
|
| 1231 | + enum PTHREAD_CANCELED = cast(void*) -1;
|
| 1232 | +
|
| 1233 | + // enum __pthread_cond PTHREAD_COND_INITIALIZER = { __PTHREAD_SPIN_LOCK_INITIALIZER, NULL, NULL, 0, NULL }
|
| 1234 | +
|
| 1235 | + enum
|
| 1236 | + {
|
| 1237 | + PTHREAD_CREATE_JOINABLE = 0,
|
| 1238 | + PTHREAD_CREATE_DETACHED,
|
| 1239 | + }
|
| 1240 | +
|
| 1241 | + enum
|
| 1242 | + {
|
| 1243 | + PTHREAD_EXPLICIT_SCHED = 0,
|
| 1244 | + PTHREAD_INHERIT_SCHED ,
|
| 1245 | + }
|
| 1246 | +
|
| 1247 | + enum PTHREAD_MUTEX_INITIALIZER = pthread_mutex_t.init;
|
| 1248 | + enum PTHREAD_ONCE_INIT = pthread_once_t.init;
|
| 1249 | +
|
| 1250 | + enum
|
| 1251 | + {
|
| 1252 | + PTHREAD_PROCESS_PRIVATE = 0,
|
| 1253 | + PTHREAD_PROCESS_SHARED,
|
| 1254 | + }
|
| 1255 | }
|
| 1256 | }
|
| 1257 | else version (Darwin)
|
| 1258 | @@ -455,32 +497,70 @@ alias void function(void*) _pthread_cleanup_routine;
|
| 1259 | alias void function(void*) @nogc _pthread_cleanup_routine_nogc;
|
| 1260 | version (CRuntime_Glibc)
|
| 1261 | {
|
| 1262 | - struct _pthread_cleanup_buffer
|
| 1263 | + version (linux)
|
| 1264 | {
|
| 1265 | - _pthread_cleanup_routine __routine;
|
| 1266 | - void* __arg;
|
| 1267 | - int __canceltype;
|
| 1268 | - _pthread_cleanup_buffer* __prev;
|
| 1269 | - }
|
| 1270 | + struct _pthread_cleanup_buffer
|
| 1271 | + {
|
| 1272 | + _pthread_cleanup_routine __routine;
|
| 1273 | + void* __arg;
|
| 1274 | + int __canceltype;
|
| 1275 | + _pthread_cleanup_buffer* __prev;
|
| 1276 | + }
|
| 1277 |
|
| 1278 | - void _pthread_cleanup_push(_pthread_cleanup_buffer*, _pthread_cleanup_routine, void*);
|
| 1279 | - void _pthread_cleanup_push(_pthread_cleanup_buffer*, _pthread_cleanup_routine_nogc, void*) @nogc;
|
| 1280 | - void _pthread_cleanup_pop(_pthread_cleanup_buffer*, int);
|
| 1281 | + void _pthread_cleanup_push(_pthread_cleanup_buffer*, _pthread_cleanup_routine, void*);
|
| 1282 | + void _pthread_cleanup_push(_pthread_cleanup_buffer*, _pthread_cleanup_routine_nogc, void*) @nogc;
|
| 1283 | + void _pthread_cleanup_pop(_pthread_cleanup_buffer*, int);
|
| 1284 |
|
| 1285 | - struct pthread_cleanup
|
| 1286 | - {
|
| 1287 | - _pthread_cleanup_buffer buffer = void;
|
| 1288 | + struct pthread_cleanup
|
| 1289 | + {
|
| 1290 | + _pthread_cleanup_buffer buffer = void;
|
| 1291 |
|
| 1292 | - extern (D) void push(F: _pthread_cleanup_routine)(F routine, void* arg )
|
| 1293 | + extern (D) void push(F: _pthread_cleanup_routine)(F routine, void* arg )
|
| 1294 | + {
|
| 1295 | + _pthread_cleanup_push( &buffer, routine, arg );
|
| 1296 | + }
|
| 1297 | +
|
| 1298 | + extern (D) void pop()( int execute )
|
| 1299 | + {
|
| 1300 | + _pthread_cleanup_pop( &buffer, execute );
|
| 1301 | + }
|
| 1302 | + }
|
| 1303 | + }
|
| 1304 | + else version (Hurd)
|
| 1305 | + {
|
| 1306 | + struct __pthread_cancelation_handler
|
| 1307 | {
|
| 1308 | - _pthread_cleanup_push( &buffer, routine, arg );
|
| 1309 | + _pthread_cleanup_routine __handler;
|
| 1310 | + void* __arg;
|
| 1311 | + __pthread_cancelation_handler* __next;
|
| 1312 | }
|
| 1313 |
|
| 1314 | - extern (D) void pop()( int execute )
|
| 1315 | + private __pthread_cancelation_handler** __pthread_get_cleanup_stack();
|
| 1316 | +
|
| 1317 | + struct pthread_cleanup
|
| 1318 | {
|
| 1319 | - _pthread_cleanup_pop( &buffer, execute );
|
| 1320 | + __pthread_cancelation_handler** handlers = void;
|
| 1321 | + __pthread_cancelation_handler handler = void;
|
| 1322 | +
|
| 1323 | + extern (D) void push(F: _pthread_cleanup_routine)(F routine, void* arg)
|
| 1324 | + {
|
| 1325 | + handlers = __pthread_get_cleanup_stack();
|
| 1326 | + handler = __pthread_cancelation_handler(routine, arg, *handlers);
|
| 1327 | + *handlers = &handler;
|
| 1328 | + }
|
| 1329 | + extern (D) void pop()(int execute)
|
| 1330 | + {
|
| 1331 | + if (execute)
|
| 1332 | + handler.__handler(handler.__arg);
|
| 1333 | + *handlers = handler.__next;
|
| 1334 | + }
|
| 1335 | }
|
| 1336 | }
|
| 1337 | + else
|
| 1338 | + {
|
| 1339 | + static assert(false, "Unsupported platform");
|
| 1340 | + }
|
| 1341 | +
|
| 1342 | }
|
| 1343 | else version (Darwin)
|
| 1344 | {
|
| 1345 | @@ -1042,9 +1122,24 @@ int pthread_setconcurrency(int);
|
| 1346 |
|
| 1347 | version (CRuntime_Glibc)
|
| 1348 | {
|
| 1349 | - enum PTHREAD_MUTEX_NORMAL = 0;
|
| 1350 | - enum PTHREAD_MUTEX_RECURSIVE = 1;
|
| 1351 | - enum PTHREAD_MUTEX_ERRORCHECK = 2;
|
| 1352 | +
|
| 1353 | + version(linux)
|
| 1354 | + {
|
| 1355 | + enum PTHREAD_MUTEX_NORMAL = 0;
|
| 1356 | + enum PTHREAD_MUTEX_RECURSIVE = 1;
|
| 1357 | + enum PTHREAD_MUTEX_ERRORCHECK = 2;
|
| 1358 | + }
|
| 1359 | + else version(Hurd)
|
| 1360 | + {
|
| 1361 | + enum PTHREAD_MUTEX_NORMAL = 0;
|
| 1362 | + enum PTHREAD_MUTEX_ERRORCHECK = 1;
|
| 1363 | + enum PTHREAD_MUTEX_RECURSIVE = 2;
|
| 1364 | +
|
| 1365 | + }
|
| 1366 | + else
|
| 1367 | + {
|
| 1368 | + static assert(false, "Unsupported platform");
|
| 1369 | + }
|
| 1370 | enum PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL;
|
| 1371 |
|
| 1372 | int pthread_attr_getguardsize(const scope pthread_attr_t*, size_t*);
|
| 1373 | @@ -1378,6 +1473,22 @@ else version (Solaris)
|
| 1374 | int pthread_mutexattr_setprioceiling(pthread_mutexattr_t*, int);
|
| 1375 | int pthread_mutexattr_setprotocol(pthread_mutexattr_t*, int);
|
| 1376 | }
|
| 1377 | +else version (Hurd)
|
| 1378 | +{
|
| 1379 | + enum
|
| 1380 | + {
|
| 1381 | + PTHREAD_PRIO_NONE = 0,
|
| 1382 | + PTHREAD_PRIO_INHERIT,
|
| 1383 | + PTHREAD_PRIO_PROTECT,
|
| 1384 | + }
|
| 1385 | +
|
| 1386 | + int pthread_mutex_getprioceiling(const scope pthread_mutex_t*, int*);
|
| 1387 | + int pthread_mutex_setprioceiling(pthread_mutex_t*, int, int*);
|
| 1388 | + int pthread_mutexattr_getprioceiling(const scope pthread_mutexattr_t*, int*);
|
| 1389 | + int pthread_mutexattr_getprotocol(const scope pthread_mutexattr_t*, int*);
|
| 1390 | + int pthread_mutexattr_setprioceiling(pthread_mutexattr_t*, int);
|
| 1391 | + int pthread_mutexattr_setprotocol(pthread_mutexattr_t*, int);
|
| 1392 | +}
|
| 1393 |
|
| 1394 | //
|
| 1395 | // Scheduling (TPS)
|
| 1396 | @@ -1399,10 +1510,21 @@ int pthread_setschedprio(pthread_t, int);
|
| 1397 |
|
| 1398 | version (CRuntime_Glibc)
|
| 1399 | {
|
| 1400 | - enum
|
| 1401 | + version (linux)
|
| 1402 | {
|
| 1403 | - PTHREAD_SCOPE_SYSTEM,
|
| 1404 | - PTHREAD_SCOPE_PROCESS
|
| 1405 | + enum
|
| 1406 | + {
|
| 1407 | + PTHREAD_SCOPE_SYSTEM,
|
| 1408 | + PTHREAD_SCOPE_PROCESS
|
| 1409 | + }
|
| 1410 | + }
|
| 1411 | + else version (Hurd)
|
| 1412 | + {
|
| 1413 | + enum
|
| 1414 | + {
|
| 1415 | + PTHREAD_SCOPE_SYSTEM = 0,
|
| 1416 | + PTHREAD_SCOPE_PROCESS,
|
| 1417 | + }
|
| 1418 | }
|
| 1419 |
|
| 1420 | int pthread_attr_getinheritsched(const scope pthread_attr_t*, int*);
|
| 1421 | diff --git a/libphobos/libdruntime/core/sys/posix/sched.d b/libphobos/libdruntime/core/sys/posix/sched.d
|
| 1422 | index ba7ab8984..008ad0602 100644
|
| 1423 | |
| 1424 | |
| 1425 | @@ -162,6 +162,17 @@ else version (Solaris)
|
| 1426 | enum SCHED_FX = 6;
|
| 1427 | enum _SCHED_NEXT = 7;
|
| 1428 | }
|
| 1429 | +else version (Hurd)
|
| 1430 | +{
|
| 1431 | + struct sched_param
|
| 1432 | + {
|
| 1433 | + int sched_priority;
|
| 1434 | + }
|
| 1435 | +
|
| 1436 | + enum SCHED_FIFO = 1;
|
| 1437 | + enum SCHED_OTHER = 0;
|
| 1438 | + enum SCHED_RR = 2;
|
| 1439 | +}
|
| 1440 | else
|
| 1441 | {
|
| 1442 | static assert(false, "Unsupported platform");
|
| 1443 | diff --git a/libphobos/libdruntime/core/sys/posix/semaphore.d b/libphobos/libdruntime/core/sys/posix/semaphore.d
|
| 1444 | index 4f3b6e951..ead305cce 100644
|
| 1445 | |
| 1446 | |
| 1447 | @@ -51,19 +51,31 @@ int sem_wait(sem_t*);
|
| 1448 |
|
| 1449 | version (CRuntime_Glibc)
|
| 1450 | {
|
| 1451 | - private alias int __atomic_lock_t;
|
| 1452 | -
|
| 1453 | - private struct _pthread_fastlock
|
| 1454 | + version(linux)
|
| 1455 | {
|
| 1456 | - c_long __status;
|
| 1457 | - __atomic_lock_t __spinlock;
|
| 1458 | - }
|
| 1459 | + private alias int __atomic_lock_t;
|
| 1460 |
|
| 1461 | - struct sem_t
|
| 1462 | + private struct _pthread_fastlock
|
| 1463 | + {
|
| 1464 | + c_long __status;
|
| 1465 | + __atomic_lock_t __spinlock;
|
| 1466 | + }
|
| 1467 | +
|
| 1468 | + struct sem_t
|
| 1469 | + {
|
| 1470 | + _pthread_fastlock __sem_lock;
|
| 1471 | + int __sem_value;
|
| 1472 | + void* __sem_waiting;
|
| 1473 | + }
|
| 1474 | + }
|
| 1475 | + else version (Hurd)
|
| 1476 | {
|
| 1477 | - _pthread_fastlock __sem_lock;
|
| 1478 | - int __sem_value;
|
| 1479 | - void* __sem_waiting;
|
| 1480 | + private enum __SIZEOF_SEM_T = 20;
|
| 1481 | + union sem_t
|
| 1482 | + {
|
| 1483 | + byte[__SIZEOF_SEM_T] __size;
|
| 1484 | + c_long __align;
|
| 1485 | + }
|
| 1486 | }
|
| 1487 |
|
| 1488 | enum SEM_FAILED = cast(sem_t*) null;
|
| 1489 | diff --git a/libphobos/libdruntime/core/sys/posix/signal.d b/libphobos/libdruntime/core/sys/posix/signal.d
|
| 1490 | index a8b7f7511..235d89c9c 100644
|
| 1491 | |
| 1492 | |
| 1493 | @@ -168,6 +168,9 @@ else version (NetBSD)
|
| 1494 | enum SIGRTMIN = 33;
|
| 1495 | enum SIGRTMAX = 63;
|
| 1496 | }
|
| 1497 | +else version (Hurd)
|
| 1498 | +{
|
| 1499 | +}
|
| 1500 | else version (linux)
|
| 1501 | {
|
| 1502 | // Note: CRuntime_Bionic switched to calling these functions
|
| 1503 | @@ -561,6 +564,24 @@ else version (Solaris)
|
| 1504 | enum SIGUSR2 = 17;
|
| 1505 | enum SIGURG = 21;
|
| 1506 | }
|
| 1507 | +else version (Hurd)
|
| 1508 | +{
|
| 1509 | + enum SIGALRM = 14;
|
| 1510 | + enum SIGBUS = 10;
|
| 1511 | + enum SIGCHLD = 20;
|
| 1512 | + enum SIGCONT = 19;
|
| 1513 | + enum SIGHUP = 1;
|
| 1514 | + enum SIGKILL = 9;
|
| 1515 | + enum SIGPIPE = 13;
|
| 1516 | + enum SIGQUIT = 3;
|
| 1517 | + enum SIGSTOP = 17;
|
| 1518 | + enum SIGTSTP = 18;
|
| 1519 | + enum SIGTTIN = 21;
|
| 1520 | + enum SIGTTOU = 22;
|
| 1521 | + enum SIGUSR1 = 30;
|
| 1522 | + enum SIGUSR2 = 31;
|
| 1523 | + enum SIGURG = 16;
|
| 1524 | +}
|
| 1525 | else
|
| 1526 | {
|
| 1527 | static assert(false, "Unsupported platform");
|
| 1528 | @@ -848,6 +869,26 @@ else version (Darwin)
|
| 1529 | int sa_flags;
|
| 1530 | }
|
| 1531 | }
|
| 1532 | +else version (Hurd)
|
| 1533 | +{
|
| 1534 | + struct sigaction_t
|
| 1535 | + {
|
| 1536 | + static if ( true /* __USE_POSIX199309 */ )
|
| 1537 | + {
|
| 1538 | + union
|
| 1539 | + {
|
| 1540 | + sigfn_t sa_handler;
|
| 1541 | + sigactfn_t sa_sigaction;
|
| 1542 | + }
|
| 1543 | + }
|
| 1544 | + else
|
| 1545 | + {
|
| 1546 | + sigfn_t sa_handler;
|
| 1547 | + }
|
| 1548 | + sigset_t sa_mask;
|
| 1549 | + int sa_flags;
|
| 1550 | + }
|
| 1551 | +}
|
| 1552 | else
|
| 1553 | {
|
| 1554 | static assert(false, "Unsupported platform");
|
| 1555 | @@ -1417,6 +1458,41 @@ else version (Solaris)
|
| 1556 | enum SI_ASYNCIO = -4;
|
| 1557 | enum SI_MESGQ = -5;
|
| 1558 | }
|
| 1559 | +else version(Hurd)
|
| 1560 | +{
|
| 1561 | + enum SIG_HOLD = cast(sigfn_t2) 2;
|
| 1562 | +
|
| 1563 | + alias c_ulong sigset_t;
|
| 1564 | +
|
| 1565 | + enum SA_NOCLDSTOP = 0x0008; // (CX|XSI)
|
| 1566 | +
|
| 1567 | + enum SIG_BLOCK = 1;
|
| 1568 | + enum SIG_UNBLOCK = 2;
|
| 1569 | + enum SIG_SETMASK = 3;
|
| 1570 | +
|
| 1571 | + struct siginfo_t
|
| 1572 | + {
|
| 1573 | + int si_signo;
|
| 1574 | + int si_errno;
|
| 1575 | + int si_code;
|
| 1576 | +
|
| 1577 | + pid_t si_pid;
|
| 1578 | + uid_t si_uid;
|
| 1579 | + void* si_addr;
|
| 1580 | + int si_status;
|
| 1581 | + c_long si_band;
|
| 1582 | + sigval si_value;
|
| 1583 | + }
|
| 1584 | +
|
| 1585 | + enum
|
| 1586 | + {
|
| 1587 | + SI_ASYNCIO = -4,
|
| 1588 | + SI_MESGQ,
|
| 1589 | + SI_TIMER,
|
| 1590 | + SI_QUEUE,
|
| 1591 | + SI_USER
|
| 1592 | + }
|
| 1593 | +}
|
| 1594 | else
|
| 1595 | {
|
| 1596 | static assert(false, "Unsupported platform");
|
| 1597 | @@ -2375,6 +2451,89 @@ else version (Solaris)
|
| 1598 | POLL_HUP,
|
| 1599 | }
|
| 1600 | }
|
| 1601 | +else version(Hurd)
|
| 1602 | +{
|
| 1603 | + enum SIGPOLL = 23;
|
| 1604 | + enum SIGPROF = 27;
|
| 1605 | + enum SIGSYS = 12;
|
| 1606 | + enum SIGTRAP = 5;
|
| 1607 | + enum SIGVTALRM = 26;
|
| 1608 | + enum SIGXCPU = 24;
|
| 1609 | + enum SIGXFSZ = 25;
|
| 1610 | +
|
| 1611 | + enum
|
| 1612 | + {
|
| 1613 | + SA_ONSTACK = 0x0001,
|
| 1614 | + SA_RESETHAND = 0x0004,
|
| 1615 | + SA_RESTART = 0x0002,
|
| 1616 | + SA_SIGINFO = 0x0040,
|
| 1617 | + // SA_NOCLDWAIT = ,
|
| 1618 | + SA_NODEFER = 0x00010,
|
| 1619 | + }
|
| 1620 | +
|
| 1621 | + enum
|
| 1622 | + {
|
| 1623 | + ILL_ILLOPC = 1,
|
| 1624 | + ILL_ILLOPN,
|
| 1625 | + ILL_ILLADR,
|
| 1626 | + ILL_ILLTRP,
|
| 1627 | + ILL_PRVOPC,
|
| 1628 | + ILL_PRVREG,
|
| 1629 | + ILL_COPROC,
|
| 1630 | + ILL_BADSTK
|
| 1631 | + }
|
| 1632 | +
|
| 1633 | + enum
|
| 1634 | + {
|
| 1635 | + FPE_INTDIV = 1,
|
| 1636 | + FPE_INTOVF,
|
| 1637 | + FPE_FLTDIV,
|
| 1638 | + FPE_FLTOVF,
|
| 1639 | + FPE_FLTUND,
|
| 1640 | + FPE_FLTRES,
|
| 1641 | + FPE_FLTINV,
|
| 1642 | + FPE_FLTSUB
|
| 1643 | + }
|
| 1644 | +
|
| 1645 | + enum
|
| 1646 | + {
|
| 1647 | + SEGV_MAPERR = 1,
|
| 1648 | + SEGV_ACCERR
|
| 1649 | + }
|
| 1650 | +
|
| 1651 | + enum
|
| 1652 | + {
|
| 1653 | + BUS_ADRALN = 1,
|
| 1654 | + BUS_ADRERR,
|
| 1655 | + BUS_OBJERR
|
| 1656 | + }
|
| 1657 | +
|
| 1658 | + enum
|
| 1659 | + {
|
| 1660 | + TRAP_BRKPT = 1,
|
| 1661 | + TRAP_TRACE
|
| 1662 | + }
|
| 1663 | +
|
| 1664 | + enum
|
| 1665 | + {
|
| 1666 | + CLD_EXITED = 1,
|
| 1667 | + CLD_KILLED,
|
| 1668 | + CLD_DUMPED,
|
| 1669 | + CLD_TRAPPED,
|
| 1670 | + CLD_STOPPED,
|
| 1671 | + CLD_CONTINUED
|
| 1672 | + }
|
| 1673 | +
|
| 1674 | + enum
|
| 1675 | + {
|
| 1676 | + POLL_IN = 1,
|
| 1677 | + POLL_OUT,
|
| 1678 | + POLL_MSG,
|
| 1679 | + POLL_ERR,
|
| 1680 | + POLL_PRI,
|
| 1681 | + POLL_HUP
|
| 1682 | + }
|
| 1683 | +}
|
| 1684 | else
|
| 1685 | {
|
| 1686 | static assert(false, "Unsupported platform");
|
| 1687 | @@ -2416,11 +2575,21 @@ int sigrelse(int);
|
| 1688 |
|
| 1689 | version (CRuntime_Glibc)
|
| 1690 | {
|
| 1691 | - enum SS_ONSTACK = 1;
|
| 1692 | - enum SS_DISABLE = 2;
|
| 1693 | - enum MINSIGSTKSZ = 2048;
|
| 1694 | - enum SIGSTKSZ = 8192;
|
| 1695 | + version (linux)
|
| 1696 | + {
|
| 1697 | + enum SS_ONSTACK = 1;
|
| 1698 | + enum SS_DISABLE = 2;
|
| 1699 | + enum MINSIGSTKSZ = 2048;
|
| 1700 | + enum SIGSTKSZ = 8192;
|
| 1701 | + }
|
| 1702 |
|
| 1703 | + version (Hurd)
|
| 1704 | + {
|
| 1705 | + enum SS_ONSTACK = 0x0001;
|
| 1706 | + enum SS_DISABLE = 0x0004;
|
| 1707 | + enum MINSIGSTKSZ = 8192;
|
| 1708 | + enum SIGSTKSZ = (MINSIGSTKSZ + 32768);
|
| 1709 | + }
|
| 1710 | //ucontext_t (defined in core.sys.posix.ucontext)
|
| 1711 | //mcontext_t (defined in core.sys.posix.ucontext)
|
| 1712 |
|
| 1713 | @@ -2980,6 +3149,18 @@ else version (Solaris)
|
| 1714 | int __sigev_pad2;
|
| 1715 | }
|
| 1716 | }
|
| 1717 | +else version (Hurd)
|
| 1718 | +{
|
| 1719 | + struct sigevent
|
| 1720 | + {
|
| 1721 | + sigval sigev_value;
|
| 1722 | + int sigev_signo;
|
| 1723 | + int sigev_notify;
|
| 1724 | +
|
| 1725 | + void function(sigval) sigev_notify_function;
|
| 1726 | + void* sigev_notify_attributes;
|
| 1727 | + }
|
| 1728 | +}
|
| 1729 | else
|
| 1730 | {
|
| 1731 | static assert(false, "Unsupported platform");
|
| 1732 | diff --git a/libphobos/libdruntime/core/sys/posix/spawn.d b/libphobos/libdruntime/core/sys/posix/spawn.d
|
| 1733 | index 789053396..b0e184e9f 100644
|
| 1734 | |
| 1735 | |
| 1736 | @@ -34,6 +34,8 @@ OpenBSD: https://github.com/openbsd/src/blob/master/include/spawn.h
|
| 1737 | DragonFlyBSD: https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/include/spawn.h
|
| 1738 |
|
| 1739 | Solaris: https://github.com/illumos/illumos-gate/blob/master/usr/src/head/spawn.h
|
| 1740 | +
|
| 1741 | +Hurd: https://sourceware.org/git/?p=glibc.git;a=blob;f=posix/spawn.h;hb=HEAD
|
| 1742 | */
|
| 1743 |
|
| 1744 | version (OSX) // macOS and iOS only as this API is prohibited on WatchOS and TVOS
|
| 1745 | @@ -370,5 +372,45 @@ else version (Solaris)
|
| 1746 | int posix_spawnattr_setsigignore_np(posix_spawnattr_t* attr, const sigset_t* sigignore);
|
| 1747 | }
|
| 1748 | }
|
| 1749 | +else version (Hurd)
|
| 1750 | +{
|
| 1751 | + // Source: https://sourceware.org/git/?p=glibc.git;a=blob;f=posix/spawn.h;hb=HEAD
|
| 1752 | + enum
|
| 1753 | + {
|
| 1754 | + POSIX_SPAWN_RESETIDS = 0x01,
|
| 1755 | + POSIX_SPAWN_SETPGROUP = 0x02,
|
| 1756 | + POSIX_SPAWN_SETSIGDEF = 0x04,
|
| 1757 | + POSIX_SPAWN_SETSIGMASK = 0x08,
|
| 1758 | + POSIX_SPAWN_SETSCHEDPARAM = 0x10,
|
| 1759 | + POSIX_SPAWN_SETSCHEDULER = 0x20,
|
| 1760 | + }
|
| 1761 | + import core.sys.posix.config : _GNU_SOURCE;
|
| 1762 | + static if (_GNU_SOURCE)
|
| 1763 | + {
|
| 1764 | + enum
|
| 1765 | + {
|
| 1766 | + POSIX_SPAWN_USEVFORK = 0x40,
|
| 1767 | + POSIX_SPAWN_SETSID = 0x80
|
| 1768 | + }
|
| 1769 | + }
|
| 1770 | + struct posix_spawnattr_t
|
| 1771 | + {
|
| 1772 | + short __flags;
|
| 1773 | + pid_t __pgrp;
|
| 1774 | + sigset_t __sd;
|
| 1775 | + sigset_t __ss;
|
| 1776 | + sched_param __sp;
|
| 1777 | + int __policy;
|
| 1778 | + int[16] __pad;
|
| 1779 | + }
|
| 1780 | + private struct __spawn_action;
|
| 1781 | + struct posix_spawn_file_actions_t
|
| 1782 | + {
|
| 1783 | + int __allocated;
|
| 1784 | + int __used;
|
| 1785 | + __spawn_action* __actions;
|
| 1786 | + int[16] __pad;
|
| 1787 | + }
|
| 1788 | +}
|
| 1789 | else
|
| 1790 | static assert(0, "Unsupported OS");
|
| 1791 | diff --git a/libphobos/libdruntime/core/sys/posix/sys/ioctl.d b/libphobos/libdruntime/core/sys/posix/sys/ioctl.d
|
| 1792 | index caf3ebafb..596b19ed5 100644
|
| 1793 | |
| 1794 | |
| 1795 | @@ -400,6 +400,43 @@ else version (DragonFlyBSD)
|
| 1796 | else version (Solaris)
|
| 1797 | {
|
| 1798 | }
|
| 1799 | +else version (Hurd)
|
| 1800 | +{
|
| 1801 | + struct tchars
|
| 1802 | + {
|
| 1803 | + char t_intrc;
|
| 1804 | + char t_quitc;
|
| 1805 | + char t_startc;
|
| 1806 | + char t_stopc;
|
| 1807 | + char t_eofc;
|
| 1808 | + char t_brkc;
|
| 1809 | + }
|
| 1810 | + struct ltchars
|
| 1811 | + {
|
| 1812 | + char t_suspc;
|
| 1813 | + char t_dsuspc;
|
| 1814 | + char t_rprntc;
|
| 1815 | + char t_flushc;
|
| 1816 | + char t_werasc;
|
| 1817 | + char t_lnextc;
|
| 1818 | + }
|
| 1819 | + struct sgttyb
|
| 1820 | + {
|
| 1821 | + char sg_ispeed;
|
| 1822 | + char sg_ospeed;
|
| 1823 | + char sg_erase;
|
| 1824 | + char sg_kill;
|
| 1825 | + short sg_flags;
|
| 1826 | + }
|
| 1827 | +
|
| 1828 | + struct winsize
|
| 1829 | + {
|
| 1830 | + ushort ws_row;
|
| 1831 | + ushort ws_col;
|
| 1832 | + ushort ws_xpixel;
|
| 1833 | + ushort ws_ypixel;
|
| 1834 | + }
|
| 1835 | +}
|
| 1836 | else
|
| 1837 | {
|
| 1838 | static assert(false, "Unsupported platform");
|
| 1839 | diff --git a/libphobos/libdruntime/core/sys/posix/sys/ipc.d b/libphobos/libdruntime/core/sys/posix/sys/ipc.d
|
| 1840 | index 32caba95a..1d12841ff 100644
|
| 1841 | |
| 1842 | |
| 1843 | @@ -246,6 +246,49 @@ else version (Solaris)
|
| 1844 | enum IPC_SET = 11;
|
| 1845 | enum IPC_STAT = 12;
|
| 1846 | }
|
| 1847 | +else version (Hurd)
|
| 1848 | +{
|
| 1849 | + version (X86)
|
| 1850 | + {
|
| 1851 | + struct ipc_perm
|
| 1852 | + {
|
| 1853 | + key_t __key;
|
| 1854 | + ushort uid;
|
| 1855 | + ushort gid;
|
| 1856 | + ushort cuid;
|
| 1857 | + ushort cgid;
|
| 1858 | + ushort mode;
|
| 1859 | + ushort __seq;
|
| 1860 | + }
|
| 1861 | + }
|
| 1862 | + else version (X86_64)
|
| 1863 | + {
|
| 1864 | + struct ipc_perm
|
| 1865 | + {
|
| 1866 | + key_t __key;
|
| 1867 | + uid_t uid;
|
| 1868 | + gid_t gid;
|
| 1869 | + uid_t cuid;
|
| 1870 | + gid_t cgid;
|
| 1871 | + mode_t mode;
|
| 1872 | + ushort __seq;
|
| 1873 | + }
|
| 1874 | + }
|
| 1875 | + else
|
| 1876 | + {
|
| 1877 | + static assert(false, "Unsupported platform");
|
| 1878 | + }
|
| 1879 | +
|
| 1880 | + enum IPC_CREAT = 0x0200; // 01000
|
| 1881 | + enum IPC_EXCL = 0x0400; // 02000
|
| 1882 | + enum IPC_NOWAIT = 0x0800; // 04000
|
| 1883 | +
|
| 1884 | + enum key_t IPC_PRIVATE = 0;
|
| 1885 | +
|
| 1886 | + enum IPC_RMID = 0;
|
| 1887 | + enum IPC_SET = 1;
|
| 1888 | + enum IPC_STAT = 2;
|
| 1889 | +}
|
| 1890 | else
|
| 1891 | {
|
| 1892 | static assert(false, "Unsupported platform");
|
| 1893 | diff --git a/libphobos/libdruntime/core/sys/posix/sys/mman.d b/libphobos/libdruntime/core/sys/posix/sys/mman.d
|
| 1894 | index b1eb9fa81..35baa422c 100644
|
| 1895 | |
| 1896 | |
| 1897 | @@ -170,6 +170,14 @@ else version (DragonFlyBSD)
|
| 1898 | else version (Solaris)
|
| 1899 | {
|
| 1900 | }
|
| 1901 | +else version (Hurd)
|
| 1902 | +{
|
| 1903 | + enum POSIX_MADV_NORMAL = 0;
|
| 1904 | + enum POSIX_MADV_RANDOM = 1;
|
| 1905 | + enum POSIX_MADV_SEQUENTIAL = 2;
|
| 1906 | + enum POSIX_MADV_WILLNEED = 3;
|
| 1907 | + enum POSIX_MADV_DONTNEED = 4;
|
| 1908 | +}
|
| 1909 | else
|
| 1910 | {
|
| 1911 | static assert(false, "Unsupported platform");
|
| 1912 | @@ -234,6 +242,13 @@ else version (Solaris)
|
| 1913 | enum PROT_WRITE = 0x02;
|
| 1914 | enum PROT_EXEC = 0x04;
|
| 1915 | }
|
| 1916 | +else version (Hurd)
|
| 1917 | +{
|
| 1918 | + enum PROT_NONE = 0x00;
|
| 1919 | + enum PROT_READ = 0x04;
|
| 1920 | + enum PROT_WRITE = 0x02;
|
| 1921 | + enum PROT_EXEC = 0x01;
|
| 1922 | +}
|
| 1923 | else
|
| 1924 | {
|
| 1925 | static assert(false, "Unsupported platform");
|
| 1926 | @@ -473,6 +488,19 @@ else version (Solaris)
|
| 1927 | enum MS_SYNC = 0x0004;
|
| 1928 | enum MS_ASYNC = 0x0001;
|
| 1929 | enum MS_INVALIDATE = 0x0002;
|
| 1930 | +}
|
| 1931 | + else version (Hurd)
|
| 1932 | +{
|
| 1933 | + enum MAP_SHARED = 0x0010;
|
| 1934 | + enum MAP_PRIVATE = 0x0000;
|
| 1935 | + enum MAP_FIXED = 0x0100;
|
| 1936 | + enum MAP_ANON = 0x0002;
|
| 1937 | +
|
| 1938 | + enum MAP_FAILED = cast(void*)-1;
|
| 1939 | +
|
| 1940 | + enum MS_ASYNC = 1;
|
| 1941 | + enum MS_INVALIDATE = 0;
|
| 1942 | + enum MS_SYNC = 2;
|
| 1943 | }
|
| 1944 | else
|
| 1945 | {
|
| 1946 | @@ -590,6 +618,11 @@ else version (Solaris)
|
| 1947 | enum MCL_CURRENT = 0x0001;
|
| 1948 | enum MCL_FUTURE = 0x0002;
|
| 1949 | }
|
| 1950 | +else version (Hurd)
|
| 1951 | +{
|
| 1952 | + enum MCL_CURRENT = 0x0001;
|
| 1953 | + enum MCL_FUTURE = 0x0002;
|
| 1954 | +}
|
| 1955 | else
|
| 1956 | {
|
| 1957 | static assert(false, "Unsupported platform");
|
| 1958 | diff --git a/libphobos/libdruntime/core/sys/posix/sys/msg.d b/libphobos/libdruntime/core/sys/posix/sys/msg.d
|
| 1959 | index 19e07bd64..f6b353bf5 100644
|
| 1960 | |
| 1961 | |
| 1962 | @@ -173,6 +173,50 @@ version (linux)
|
| 1963 | }
|
| 1964 | }
|
| 1965 | }
|
| 1966 | +else version (Hurd)
|
| 1967 | +{
|
| 1968 | + import core.sys.hurd.sys.types;
|
| 1969 | + enum MSG_STAT = 11;
|
| 1970 | + enum MSG_INFO = 12;
|
| 1971 | +
|
| 1972 | + enum MSG_NOERROR = 1 << 12; // octal!10000
|
| 1973 | + enum MSG_EXCEPT = 2 << 12; // octal!20000
|
| 1974 | +
|
| 1975 | + struct msginfo
|
| 1976 | + {
|
| 1977 | + int msgpool;
|
| 1978 | + int msgmap;
|
| 1979 | + int msgmax;
|
| 1980 | + int msgmnb;
|
| 1981 | + int msgmni;
|
| 1982 | + int msgssz;
|
| 1983 | + int msgtql;
|
| 1984 | + ushort msgseg;
|
| 1985 | + }
|
| 1986 | +
|
| 1987 | + alias ushort msgqnum_t;
|
| 1988 | + alias ushort msglen_t;
|
| 1989 | +
|
| 1990 | + private struct msg;
|
| 1991 | + private struct __wait_queue;
|
| 1992 | +
|
| 1993 | + struct msqid_ds
|
| 1994 | + {
|
| 1995 | + ipc_perm msg_perm;
|
| 1996 | + msg *__msg_first;
|
| 1997 | + msg *__msg_last;
|
| 1998 | + time_t msg_stime;
|
| 1999 | + time_t msg_rtime;
|
| 2000 | + time_t msg_ctime;
|
| 2001 | + __wait_queue *__wwait;
|
| 2002 | + __wait_queue *__rwait;
|
| 2003 | + ushort __msg_cbytes;
|
| 2004 | + msgqnum_t msg_qnum;
|
| 2005 | + msglen_t msg_qbytes;
|
| 2006 | + ipc_pid_t msg_lspid;
|
| 2007 | + ipc_pid_t msg_lrpid;
|
| 2008 | + }
|
| 2009 | +}
|
| 2010 | else
|
| 2011 | {
|
| 2012 | // https://sourceware.org/git/?p=glibc.git;a=blob;f=bits/msq.h
|
| 2013 | diff --git a/libphobos/libdruntime/core/sys/posix/sys/resource.d b/libphobos/libdruntime/core/sys/posix/sys/resource.d
|
| 2014 | index 3a9a18763..36fd6e959 100644
|
| 2015 | |
| 2016 | |
| 2017 | @@ -477,6 +477,64 @@ else version (Solaris)
|
| 2018 | RLIMIT_AS = 6,
|
| 2019 | }
|
| 2020 | }
|
| 2021 | +else version (Hurd)
|
| 2022 | +{
|
| 2023 | + enum
|
| 2024 | + {
|
| 2025 | + PRIO_PROCESS = 0,
|
| 2026 | + PRIO_PGRP = 1,
|
| 2027 | + PRIO_USER = 2,
|
| 2028 | + }
|
| 2029 | +
|
| 2030 | + static if (__USE_FILE_OFFSET64)
|
| 2031 | + alias ulong rlim_t;
|
| 2032 | + else
|
| 2033 | + alias c_ulong rlim_t;
|
| 2034 | +
|
| 2035 | + static if (__USE_FILE_OFFSET64)
|
| 2036 | + enum RLIM_INFINITY = 0xffffffffffffffffUL;
|
| 2037 | + else
|
| 2038 | + enum RLIM_INFINITY = cast(c_ulong)(~0UL);
|
| 2039 | +
|
| 2040 | + enum RLIM_SAVED_MAX = RLIM_INFINITY;
|
| 2041 | + enum RLIM_SAVED_CUR = RLIM_INFINITY;
|
| 2042 | +
|
| 2043 | + enum
|
| 2044 | + {
|
| 2045 | + RUSAGE_SELF = 0,
|
| 2046 | + RUSAGE_CHILDREN = -1,
|
| 2047 | + }
|
| 2048 | +
|
| 2049 | + struct rusage
|
| 2050 | + {
|
| 2051 | + timeval ru_utime;
|
| 2052 | + timeval ru_stime;
|
| 2053 | + c_long ru_maxrss;
|
| 2054 | + c_long ru_ixrss;
|
| 2055 | + c_long ru_idrss;
|
| 2056 | + c_long ru_isrss;
|
| 2057 | + c_long ru_minflt;
|
| 2058 | + c_long ru_majflt;
|
| 2059 | + c_long ru_nswap;
|
| 2060 | + c_long ru_inblock;
|
| 2061 | + c_long ru_oublock;
|
| 2062 | + c_long ru_msgsnd;
|
| 2063 | + c_long ru_msgrcv;
|
| 2064 | + c_long ru_nsignals;
|
| 2065 | + c_long ru_nvcsw;
|
| 2066 | + c_long ru_nivcsw;
|
| 2067 | + }
|
| 2068 | + enum
|
| 2069 | + {
|
| 2070 | + RLIMIT_CORE = 4,
|
| 2071 | + RLIMIT_CPU = 0,
|
| 2072 | + RLIMIT_DATA = 2,
|
| 2073 | + RLIMIT_FSIZE = 1,
|
| 2074 | + RLIMIT_NOFILE = 8,
|
| 2075 | + RLIMIT_STACK = 3,
|
| 2076 | + RLIMIT_AS = 10,
|
| 2077 | + }
|
| 2078 | +}
|
| 2079 | else
|
| 2080 | static assert (false, "Unsupported platform");
|
| 2081 |
|
| 2082 | diff --git a/libphobos/libdruntime/core/sys/posix/sys/shm.d b/libphobos/libdruntime/core/sys/posix/sys/shm.d
|
| 2083 | index 6ecdc0def..41c2c9794 100644
|
| 2084 | |
| 2085 | |
| 2086 | @@ -180,6 +180,32 @@ else version (Darwin)
|
| 2087 | else version (Solaris)
|
| 2088 | {
|
| 2089 |
|
| 2090 | +}
|
| 2091 | +else version (Hurd)
|
| 2092 | +{
|
| 2093 | + import core.sys.hurd.sys.types;
|
| 2094 | + enum SHM_RDONLY = 0x01000; // 010000
|
| 2095 | + enum SHM_RND = 0x02000; // 020000
|
| 2096 | + enum SHM_REMAP = 0x4000; // 040000
|
| 2097 | +
|
| 2098 | + alias short shmatt_t;
|
| 2099 | +
|
| 2100 | + private struct __vm_area_struct;
|
| 2101 | +
|
| 2102 | + struct shmid_ds
|
| 2103 | + {
|
| 2104 | + ipc_perm shm_perm;
|
| 2105 | + size_t shm_segsz;
|
| 2106 | + time_t shm_atime;
|
| 2107 | + time_t shm_dtime;
|
| 2108 | + time_t shm_ctime;
|
| 2109 | + ipc_pid_t shm_cpid;
|
| 2110 | + ipc_pid_t shm_lpid;
|
| 2111 | + shmatt_t shm_nattch;
|
| 2112 | + private ushort __shm_npages;
|
| 2113 | + private c_ulong* __shm_pages;
|
| 2114 | + private __vm_area_struct* __attaches;
|
| 2115 | + }
|
| 2116 | }
|
| 2117 | else
|
| 2118 | {
|
| 2119 | diff --git a/libphobos/libdruntime/core/sys/posix/sys/socket.d b/libphobos/libdruntime/core/sys/posix/sys/socket.d
|
| 2120 | index 7c6fab631..9a74f5981 100644
|
| 2121 | |
| 2122 | |
| 2123 | @@ -1589,6 +1589,153 @@ else version (Solaris)
|
| 2124 | SHUT_RDWR
|
| 2125 | }
|
| 2126 | }
|
| 2127 | +else version (Hurd)
|
| 2128 | +{
|
| 2129 | + alias uint socklen_t;
|
| 2130 | + alias ubyte sa_family_t;
|
| 2131 | +
|
| 2132 | + struct sockaddr
|
| 2133 | + {
|
| 2134 | + ubyte ss_len;
|
| 2135 | + sa_family_t sa_family;
|
| 2136 | + byte[14] sa_data;
|
| 2137 | + }
|
| 2138 | +
|
| 2139 | + private enum : size_t
|
| 2140 | + {
|
| 2141 | + _SS_SIZE = 128,
|
| 2142 | + _SS_PADSIZE = _SS_SIZE - c_ulong.sizeof - sa_family_t.sizeof - ubyte.sizeof,
|
| 2143 | + }
|
| 2144 | +
|
| 2145 | + struct sockaddr_storage
|
| 2146 | + {
|
| 2147 | + ubyte ss_len;
|
| 2148 | + sa_family_t ss_family;
|
| 2149 | + byte[_SS_PADSIZE] __ss_padding;
|
| 2150 | + c_ulong __ss_align;
|
| 2151 | + }
|
| 2152 | + struct msghdr
|
| 2153 | + {
|
| 2154 | + void* msg_name;
|
| 2155 | + socklen_t msg_namelen;
|
| 2156 | + iovec* msg_iov;
|
| 2157 | + int msg_iovlen;
|
| 2158 | + void* msg_control;
|
| 2159 | + socklen_t msg_controllen;
|
| 2160 | + int msg_flags;
|
| 2161 | + }
|
| 2162 | +
|
| 2163 | + struct cmsghdr
|
| 2164 | + {
|
| 2165 | + socklen_t cmsg_len;
|
| 2166 | + int cmsg_level;
|
| 2167 | + int cmsg_type;
|
| 2168 | + }
|
| 2169 | + enum : uint
|
| 2170 | + {
|
| 2171 | + SCM_RIGHTS = 0x01
|
| 2172 | + }
|
| 2173 | +
|
| 2174 | + extern (D) inout(ubyte)* CMSG_DATA( return scope inout(cmsghdr)* cmsg ) pure nothrow @nogc { return cast(ubyte*)( cmsg + 1 ); }
|
| 2175 | + private inout(cmsghdr)* __cmsg_nxthdr(inout(msghdr)*, inout(cmsghdr)*) pure nothrow @nogc;
|
| 2176 | + extern (D) inout(cmsghdr)* CMSG_NXTHDR(inout(msghdr)* msg, inout(cmsghdr)* cmsg) pure nothrow @nogc
|
| 2177 | + {
|
| 2178 | + return __cmsg_nxthdr(msg, cmsg);
|
| 2179 | + }
|
| 2180 | +
|
| 2181 | + extern (D) inout(cmsghdr)* CMSG_FIRSTHDR( inout(msghdr)* mhdr ) pure nothrow @nogc
|
| 2182 | + {
|
| 2183 | + return ( cast(size_t)mhdr.msg_controllen >= cmsghdr.sizeof
|
| 2184 | + ? cast(inout(cmsghdr)*) mhdr.msg_control
|
| 2185 | + : cast(inout(cmsghdr)*) null );
|
| 2186 | + }
|
| 2187 | +
|
| 2188 | + extern (D)
|
| 2189 | + {
|
| 2190 | + size_t CMSG_ALIGN( size_t len ) pure nothrow @nogc
|
| 2191 | + {
|
| 2192 | + return (len + size_t.sizeof - 1) & cast(size_t) (~(size_t.sizeof - 1));
|
| 2193 | + }
|
| 2194 | +
|
| 2195 | + size_t CMSG_LEN( size_t len ) pure nothrow @nogc
|
| 2196 | + {
|
| 2197 | + return CMSG_ALIGN(cmsghdr.sizeof) + len;
|
| 2198 | + }
|
| 2199 | + }
|
| 2200 | +
|
| 2201 | + extern (D) size_t CMSG_SPACE(size_t len) pure nothrow @nogc
|
| 2202 | + {
|
| 2203 | + return CMSG_ALIGN(len) + CMSG_ALIGN(cmsghdr.sizeof);
|
| 2204 | + }
|
| 2205 | + struct linger
|
| 2206 | + {
|
| 2207 | + int l_onoff;
|
| 2208 | + int l_linger;
|
| 2209 | + }
|
| 2210 | +
|
| 2211 | + enum
|
| 2212 | + {
|
| 2213 | + SOCK_DGRAM = 2,
|
| 2214 | + SOCK_RDM = 4,
|
| 2215 | + SOCK_SEQPACKET = 5,
|
| 2216 | + SOCK_STREAM = 1,
|
| 2217 | + }
|
| 2218 | + enum
|
| 2219 | + {
|
| 2220 | + SOL_SOCKET = 0xffff
|
| 2221 | + }
|
| 2222 | + enum
|
| 2223 | + {
|
| 2224 | + SO_ACCEPTCONN = 0x0002,
|
| 2225 | + SO_BROADCAST = 0x0020,
|
| 2226 | + SO_DEBUG = 0x0001,
|
| 2227 | + SO_DONTROUTE = 0x0010,
|
| 2228 | + SO_ERROR = 0x1007,
|
| 2229 | + SO_KEEPALIVE = 0x0008,
|
| 2230 | + SO_LINGER = 0x0080,
|
| 2231 | + SO_OOBINLINE = 0x0100,
|
| 2232 | + SO_RCVBUF = 0x1002,
|
| 2233 | + SO_RCVLOWAT = 0x1004,
|
| 2234 | + SO_RCVTIMEO = 0x1006,
|
| 2235 | + SO_REUSEADDR = 0x0004,
|
| 2236 | + SO_REUSEPORT = 0x0200,
|
| 2237 | + SO_SNDBUF = 0x1002,
|
| 2238 | + SO_SNDLOWAT = 0x1003,
|
| 2239 | + SO_SNDTIMEO = 0x1005,
|
| 2240 | + SO_TYPE = 0x1008
|
| 2241 | + }
|
| 2242 | + enum
|
| 2243 | + {
|
| 2244 | + SOMAXCONN = 128
|
| 2245 | + }
|
| 2246 | + enum : uint
|
| 2247 | + {
|
| 2248 | + MSG_CTRUNC = 0x20,
|
| 2249 | + MSG_DONTROUTE = 0x04,
|
| 2250 | + MSG_EOR = 0x08,
|
| 2251 | + MSG_OOB = 0x01,
|
| 2252 | + MSG_PEEK = 0x02,
|
| 2253 | + MSG_TRUNC = 0x10,
|
| 2254 | + MSG_WAITALL = 0x40,
|
| 2255 | + MSG_NOSIGNAL = 0x0400
|
| 2256 | + }
|
| 2257 | +
|
| 2258 | + enum
|
| 2259 | + {
|
| 2260 | + AF_INET = 2,
|
| 2261 | + AF_LOCAL = 1,
|
| 2262 | + AF_UNIX = AF_LOCAL,
|
| 2263 | + AF_UNSPEC = 0,
|
| 2264 | + AF_APPLETALK = 16,
|
| 2265 | + AF_IPX = 23
|
| 2266 | + }
|
| 2267 | + enum
|
| 2268 | + {
|
| 2269 | + SHUT_RD = 0,
|
| 2270 | + SHUT_WR = 1,
|
| 2271 | + SHUT_RDWR = 2
|
| 2272 | + }
|
| 2273 | +}
|
| 2274 | else
|
| 2275 | {
|
| 2276 | static assert(false, "Unsupported platform");
|
| 2277 | @@ -1890,6 +2037,13 @@ else version (Solaris)
|
| 2278 | AF_INET6 = 26,
|
| 2279 | }
|
| 2280 | }
|
| 2281 | +else version (Hurd)
|
| 2282 | +{
|
| 2283 | + enum
|
| 2284 | + {
|
| 2285 | + AF_INET6 = 26,
|
| 2286 | + }
|
| 2287 | +}
|
| 2288 | else
|
| 2289 | {
|
| 2290 | static assert(false, "Unsupported platform");
|
| 2291 | @@ -1951,6 +2105,13 @@ else version (Solaris)
|
| 2292 | SOCK_RAW = 4,
|
| 2293 | }
|
| 2294 | }
|
| 2295 | +else version (Hurd)
|
| 2296 | +{
|
| 2297 | + enum
|
| 2298 | + {
|
| 2299 | + SOCK_RAW = 3,
|
| 2300 | + }
|
| 2301 | +}
|
| 2302 | else
|
| 2303 | {
|
| 2304 | static assert(false, "Unsupported platform");
|
| 2305 | diff --git a/libphobos/libdruntime/core/sys/posix/sys/stat.d b/libphobos/libdruntime/core/sys/posix/sys/stat.d
|
| 2306 | index b89478fe7..35aac45da 100644
|
| 2307 | |
| 2308 | |
| 2309 | @@ -1412,6 +1412,67 @@ else version (Solaris)
|
| 2310 | enum S_ISGID = 0x400;
|
| 2311 | enum S_ISVTX = 0x200;
|
| 2312 | }
|
| 2313 | +else version (Hurd)
|
| 2314 | +{
|
| 2315 | + import core.sys.hurd.sys.types;
|
| 2316 | + static if (__USE_FILE_OFFSET64)
|
| 2317 | + private enum SPARE_SIZE = 8;
|
| 2318 | + else
|
| 2319 | + private enum SPARE_SIZE = 11;
|
| 2320 | +
|
| 2321 | + struct stat_t
|
| 2322 | + {
|
| 2323 | + int st_fstype; /* File system type. */
|
| 2324 | + fsid_t st_fsid; /* File system ID. */
|
| 2325 | + alias st_dev = st_fsid;
|
| 2326 | + ino_t st_ino; /* File number. */
|
| 2327 | + uint st_gen;
|
| 2328 | + dev_t st_rdev;
|
| 2329 | + mode_t st_mode;
|
| 2330 | + nlink_t st_nlink;
|
| 2331 | + uid_t st_uid;
|
| 2332 | + gid_t st_gid;
|
| 2333 | + off_t st_size;
|
| 2334 | +
|
| 2335 | + static if (_DEFAULT_SOURCE || _XOPEN_SOURCE >= 700)
|
| 2336 | + {
|
| 2337 | + timespec st_atim;
|
| 2338 | + timespec st_mtim;
|
| 2339 | + timespec st_ctim;
|
| 2340 | + extern(D) @safe @property inout pure nothrow
|
| 2341 | + {
|
| 2342 | + ref inout(time_t) st_atime() return { return st_atim.tv_sec; }
|
| 2343 | + ref inout(time_t) st_mtime() return { return st_mtim.tv_sec; }
|
| 2344 | + ref inout(time_t) st_ctime() return { return st_ctim.tv_sec; }
|
| 2345 | + }
|
| 2346 | + }
|
| 2347 | + else
|
| 2348 | + {
|
| 2349 | + time_t st_atime;
|
| 2350 | + c_ulong st_atimensec;
|
| 2351 | + time_t st_mtime;
|
| 2352 | + c_ulong st_mtimensec;
|
| 2353 | + time_t st_ctime;
|
| 2354 | + c_ulong st_ctimensec;
|
| 2355 | + }
|
| 2356 | +
|
| 2357 | + blksize_t st_blksize;
|
| 2358 | + blkcnt_t st_blocks;
|
| 2359 | +
|
| 2360 | + uid_t st_author;
|
| 2361 | + uint st_flags;
|
| 2362 | + int[SPARE_SIZE] st_spare;
|
| 2363 | + }
|
| 2364 | + version (X86) static assert(stat_t.sizeof == 128);
|
| 2365 | + version (X86_64) static assert(stat_t.sizeof == 176);
|
| 2366 | +
|
| 2367 | + enum S_ISUID = 0x800; // octal 0004000
|
| 2368 | + enum S_ISGID = 0x400; // octal 0002000
|
| 2369 | + enum S_ISVTX = 0x200; // octal 0001000
|
| 2370 | +
|
| 2371 | + enum UTIME_NOW = -1;
|
| 2372 | + enum UTIME_OMIT = -2;
|
| 2373 | +}
|
| 2374 | else
|
| 2375 | {
|
| 2376 | static assert(false, "Unsupported platform");
|
| 2377 | @@ -2081,6 +2142,17 @@ else version (Solaris)
|
| 2378 | enum S_IFDOOR = 0xD000;
|
| 2379 | enum S_IFPORT = 0xE000;
|
| 2380 | }
|
| 2381 | +else version (Hurd)
|
| 2382 | +{
|
| 2383 | + enum S_IFMT = 0xF000; // octal 0170000
|
| 2384 | + enum S_IFBLK = 0x6000; // octal 0060000
|
| 2385 | + enum S_IFCHR = 0x2000; // octal 0020000
|
| 2386 | + enum S_IFIFO = 0x1000; // octal 0010000
|
| 2387 | + enum S_IFREG = 0x8000; // octal 0100000
|
| 2388 | + enum S_IFDIR = 0x4000; // octal 0040000
|
| 2389 | + enum S_IFLNK = 0xA000; // octal 0120000
|
| 2390 | + enum S_IFSOCK = 0xC000; // octal 0140000
|
| 2391 | +}
|
| 2392 | else
|
| 2393 | {
|
| 2394 | static assert(false, "Unsupported platform");
|
| 2395 | diff --git a/libphobos/libdruntime/core/sys/posix/sys/statvfs.d b/libphobos/libdruntime/core/sys/posix/sys/statvfs.d
|
| 2396 | index eae0e5c95..63ca2440f 100644
|
| 2397 | |
| 2398 | |
| 2399 | @@ -18,71 +18,117 @@ nothrow:
|
| 2400 | @nogc:
|
| 2401 |
|
| 2402 | version (CRuntime_Glibc) {
|
| 2403 | - static if (__WORDSIZE == 32)
|
| 2404 | + version (linux)
|
| 2405 | {
|
| 2406 | - version=_STATVFSBUF_F_UNUSED;
|
| 2407 | - }
|
| 2408 | - struct statvfs_t
|
| 2409 | - {
|
| 2410 | - c_ulong f_bsize;
|
| 2411 | - c_ulong f_frsize;
|
| 2412 | - fsblkcnt_t f_blocks;
|
| 2413 | - fsblkcnt_t f_bfree;
|
| 2414 | - fsblkcnt_t f_bavail;
|
| 2415 | - fsfilcnt_t f_files;
|
| 2416 | - fsfilcnt_t f_ffree;
|
| 2417 | - fsfilcnt_t f_favail;
|
| 2418 | - c_ulong f_fsid;
|
| 2419 | - version (_STATVFSBUF_F_UNUSED)
|
| 2420 | + static if (__WORDSIZE == 32)
|
| 2421 | {
|
| 2422 | - int __f_unused;
|
| 2423 | + version=_STATVFSBUF_F_UNUSED;
|
| 2424 | + }
|
| 2425 | + struct statvfs_t
|
| 2426 | + {
|
| 2427 | + c_ulong f_bsize;
|
| 2428 | + c_ulong f_frsize;
|
| 2429 | + fsblkcnt_t f_blocks;
|
| 2430 | + fsblkcnt_t f_bfree;
|
| 2431 | + fsblkcnt_t f_bavail;
|
| 2432 | + fsfilcnt_t f_files;
|
| 2433 | + fsfilcnt_t f_ffree;
|
| 2434 | + fsfilcnt_t f_favail;
|
| 2435 | + c_ulong f_fsid;
|
| 2436 | + version (_STATVFSBUF_F_UNUSED)
|
| 2437 | + {
|
| 2438 | + int __f_unused;
|
| 2439 | + }
|
| 2440 | + c_ulong f_flag;
|
| 2441 | + c_ulong f_namemax;
|
| 2442 | + int[6] __f_spare;
|
| 2443 | + }
|
| 2444 | + /* Definitions for the flag in `f_flag'. These definitions should be
|
| 2445 | + kept in sync with the definitions in <sys/mount.h>. */
|
| 2446 | + static if (_GNU_SOURCE)
|
| 2447 | + {
|
| 2448 | + enum FFlag
|
| 2449 | + {
|
| 2450 | + ST_RDONLY = 1, /* Mount read-only. */
|
| 2451 | + ST_NOSUID = 2,
|
| 2452 | + ST_NODEV = 4, /* Disallow access to device special files. */
|
| 2453 | + ST_NOEXEC = 8, /* Disallow program execution. */
|
| 2454 | + ST_SYNCHRONOUS = 16, /* Writes are synced at once. */
|
| 2455 | + ST_MANDLOCK = 64, /* Allow mandatory locks on an FS. */
|
| 2456 | + ST_WRITE = 128, /* Write on file/directory/symlink. */
|
| 2457 | + ST_APPEND = 256, /* Append-only file. */
|
| 2458 | + ST_IMMUTABLE = 512, /* Immutable file. */
|
| 2459 | + ST_NOATIME = 1024, /* Do not update access times. */
|
| 2460 | + ST_NODIRATIME = 2048, /* Do not update directory access times. */
|
| 2461 | + ST_RELATIME = 4096 /* Update atime relative to mtime/ctime. */
|
| 2462 | +
|
| 2463 | + }
|
| 2464 | + } /* Use GNU. */
|
| 2465 | + else
|
| 2466 | + { // Posix defined:
|
| 2467 | + enum FFlag
|
| 2468 | + {
|
| 2469 | + ST_RDONLY = 1, /* Mount read-only. */
|
| 2470 | + ST_NOSUID = 2
|
| 2471 | + }
|
| 2472 | + }
|
| 2473 | + static if ( __USE_FILE_OFFSET64 )
|
| 2474 | + {
|
| 2475 | + int statvfs64 (const char * file, statvfs_t* buf);
|
| 2476 | + alias statvfs = statvfs64;
|
| 2477 | +
|
| 2478 | + int fstatvfs64 (int fildes, statvfs_t *buf) @trusted;
|
| 2479 | + alias fstatvfs = fstatvfs64;
|
| 2480 | + }
|
| 2481 | + else
|
| 2482 | + {
|
| 2483 | + int statvfs (const char * file, statvfs_t* buf);
|
| 2484 | + int fstatvfs (int fildes, statvfs_t *buf);
|
| 2485 | }
|
| 2486 | - c_ulong f_flag;
|
| 2487 | - c_ulong f_namemax;
|
| 2488 | - int[6] __f_spare;
|
| 2489 | }
|
| 2490 | - /* Definitions for the flag in `f_flag'. These definitions should be
|
| 2491 | - kept in sync with the definitions in <sys/mount.h>. */
|
| 2492 | - static if (_GNU_SOURCE)
|
| 2493 | + else version (Hurd)
|
| 2494 | {
|
| 2495 | - enum FFlag
|
| 2496 | + import core.sys.hurd.sys.types;
|
| 2497 | + struct statvfs_t
|
| 2498 | {
|
| 2499 | - ST_RDONLY = 1, /* Mount read-only. */
|
| 2500 | - ST_NOSUID = 2,
|
| 2501 | - ST_NODEV = 4, /* Disallow access to device special files. */
|
| 2502 | - ST_NOEXEC = 8, /* Disallow program execution. */
|
| 2503 | - ST_SYNCHRONOUS = 16, /* Writes are synced at once. */
|
| 2504 | - ST_MANDLOCK = 64, /* Allow mandatory locks on an FS. */
|
| 2505 | - ST_WRITE = 128, /* Write on file/directory/symlink. */
|
| 2506 | - ST_APPEND = 256, /* Append-only file. */
|
| 2507 | - ST_IMMUTABLE = 512, /* Immutable file. */
|
| 2508 | - ST_NOATIME = 1024, /* Do not update access times. */
|
| 2509 | - ST_NODIRATIME = 2048, /* Do not update directory access times. */
|
| 2510 | - ST_RELATIME = 4096 /* Update atime relative to mtime/ctime. */
|
| 2511 | -
|
| 2512 | + uint f_type;
|
| 2513 | + c_ulong f_bsize;
|
| 2514 | + fsblkcnt_t f_blocks;
|
| 2515 | + fsblkcnt_t f_bfree;
|
| 2516 | + fsblkcnt_t f_bavail;
|
| 2517 | + fsfilcnt_t f_files;
|
| 2518 | + fsfilcnt_t f_ffree;
|
| 2519 | + fsid_t f_fsid;
|
| 2520 | + c_ulong f_namelen;
|
| 2521 | + fsfilcnt_t f_favail;
|
| 2522 | + c_ulong f_frsize;
|
| 2523 | + c_ulong f_flag;
|
| 2524 | + uint[3] f_spare;
|
| 2525 | }
|
| 2526 | - } /* Use GNU. */
|
| 2527 | - else
|
| 2528 | - { // Posix defined:
|
| 2529 | +
|
| 2530 | enum FFlag
|
| 2531 | {
|
| 2532 | - ST_RDONLY = 1, /* Mount read-only. */
|
| 2533 | - ST_NOSUID = 2
|
| 2534 | + ST_RDONLY = 1,
|
| 2535 | + ST_NOSUID = 2,
|
| 2536 | + ST_NOEXEC = 8,
|
| 2537 | + ST_SYNCHRONOUS = 16,
|
| 2538 | + ST_NOATIME = 32,
|
| 2539 | + ST_RELATIME = 64,
|
| 2540 | }
|
| 2541 | - }
|
| 2542 |
|
| 2543 | - static if ( __USE_FILE_OFFSET64 )
|
| 2544 | - {
|
| 2545 | - int statvfs64 (const char * file, statvfs_t* buf);
|
| 2546 | - alias statvfs64 statvfs;
|
| 2547 | + static if ( __USE_FILE_OFFSET64 )
|
| 2548 | + {
|
| 2549 | + int statvfs64 (const char * file, statvfs_t* buf);
|
| 2550 | + alias statvfs = statvfs64;
|
| 2551 |
|
| 2552 | - int fstatvfs64 (int fildes, statvfs_t *buf) @trusted;
|
| 2553 | - alias fstatvfs64 fstatvfs;
|
| 2554 | - }
|
| 2555 | - else
|
| 2556 | - {
|
| 2557 | - int statvfs (const char * file, statvfs_t* buf);
|
| 2558 | - int fstatvfs (int fildes, statvfs_t *buf);
|
| 2559 | + int fstatvfs64 (int fildes, statvfs_t *buf) @trusted;
|
| 2560 | + alias fstatvfs = fstatvfs64;
|
| 2561 | + }
|
| 2562 | + else
|
| 2563 | + {
|
| 2564 | + int statvfs (const char * file, statvfs_t* buf);
|
| 2565 | + int fstatvfs (int fildes, statvfs_t *buf);
|
| 2566 | + }
|
| 2567 | }
|
| 2568 |
|
| 2569 | }
|
| 2570 | diff --git a/libphobos/libdruntime/core/sys/posix/sys/types.d b/libphobos/libdruntime/core/sys/posix/sys/types.d
|
| 2571 | index 642b3839a..46fb36189 100644
|
| 2572 | |
| 2573 | |
| 2574 | @@ -279,6 +279,32 @@ else version (Solaris)
|
| 2575 | alias c_long time_t;
|
| 2576 | alias uint uid_t;
|
| 2577 | }
|
| 2578 | +else version (Hurd)
|
| 2579 | +{
|
| 2580 | + static if ( __USE_FILE_OFFSET64 )
|
| 2581 | + {
|
| 2582 | + alias long blkcnt_t;
|
| 2583 | + alias ulong ino_t;
|
| 2584 | + alias long off_t;
|
| 2585 | + }
|
| 2586 | + else
|
| 2587 | + {
|
| 2588 | + alias slong_t blkcnt_t;
|
| 2589 | + alias ulong_t ino_t;
|
| 2590 | + alias slong_t off_t;
|
| 2591 | + }
|
| 2592 | + alias slong_t blksize_t;
|
| 2593 | + alias ulong_t dev_t;
|
| 2594 | + alias uint gid_t;
|
| 2595 | + alias uint mode_t;
|
| 2596 | + alias ulong_t nlink_t;
|
| 2597 | + alias int pid_t;
|
| 2598 | + //size_t (defined in core.stdc.stddef)
|
| 2599 | + alias c_long ssize_t;
|
| 2600 | + alias uint uid_t;
|
| 2601 | +
|
| 2602 | + alias slong_t time_t;
|
| 2603 | +}
|
| 2604 | else
|
| 2605 | {
|
| 2606 | static assert(false, "Unsupported platform");
|
| 2607 | @@ -390,6 +416,24 @@ else version (Solaris)
|
| 2608 | alias id_t zoneid_t;
|
| 2609 | alias id_t ctid_t;
|
| 2610 | }
|
| 2611 | +else version (Hurd)
|
| 2612 | +{
|
| 2613 | + static if ( __USE_FILE_OFFSET64 )
|
| 2614 | + {
|
| 2615 | + alias ulong fsblkcnt_t;
|
| 2616 | + alias ulong fsfilcnt_t;
|
| 2617 | + }
|
| 2618 | + else
|
| 2619 | + {
|
| 2620 | + alias ulong_t fsblkcnt_t;
|
| 2621 | + alias ulong_t fsfilcnt_t;
|
| 2622 | + }
|
| 2623 | + alias slong_t clock_t;
|
| 2624 | + alias uint id_t;
|
| 2625 | + alias int key_t;
|
| 2626 | + alias slong_t suseconds_t;
|
| 2627 | + alias uint useconds_t;
|
| 2628 | +}
|
| 2629 | else
|
| 2630 | {
|
| 2631 | static assert(false, "Unsupported platform");
|
| 2632 | @@ -413,21 +457,84 @@ pthread_t
|
| 2633 |
|
| 2634 | version (CRuntime_Glibc)
|
| 2635 | {
|
| 2636 | - version (X86)
|
| 2637 | + version (linux)
|
| 2638 | {
|
| 2639 | - enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 2640 | - enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 2641 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2642 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2643 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2644 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 2645 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2646 | - enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 2647 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2648 | - }
|
| 2649 | - else version (X86_64)
|
| 2650 | - {
|
| 2651 | - static if (__WORDSIZE == 64)
|
| 2652 | + version (X86)
|
| 2653 | + {
|
| 2654 | + enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 2655 | + enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 2656 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2657 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2658 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2659 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 2660 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2661 | + enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 2662 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2663 | + }
|
| 2664 | + else version (X86_64)
|
| 2665 | + {
|
| 2666 | + static if (__WORDSIZE == 64)
|
| 2667 | + {
|
| 2668 | + enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 2669 | + enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 2670 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2671 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2672 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2673 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 2674 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2675 | + enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 2676 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2677 | + }
|
| 2678 | + else
|
| 2679 | + {
|
| 2680 | + enum __SIZEOF_PTHREAD_ATTR_T = 32;
|
| 2681 | + enum __SIZEOF_PTHREAD_MUTEX_T = 32;
|
| 2682 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2683 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2684 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2685 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 44;
|
| 2686 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2687 | + enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 2688 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2689 | + }
|
| 2690 | + }
|
| 2691 | + else version (AArch64)
|
| 2692 | + {
|
| 2693 | + enum __SIZEOF_PTHREAD_ATTR_T = 64;
|
| 2694 | + enum __SIZEOF_PTHREAD_MUTEX_T = 48;
|
| 2695 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 8;
|
| 2696 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2697 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 8;
|
| 2698 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 2699 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2700 | + enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 2701 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 8;
|
| 2702 | + }
|
| 2703 | + else version (ARM)
|
| 2704 | + {
|
| 2705 | + enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 2706 | + enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 2707 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2708 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2709 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2710 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 2711 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2712 | + enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 2713 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2714 | + }
|
| 2715 | + else version (HPPA)
|
| 2716 | + {
|
| 2717 | + enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 2718 | + enum __SIZEOF_PTHREAD_MUTEX_T = 48;
|
| 2719 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2720 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2721 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2722 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 64;
|
| 2723 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2724 | + enum __SIZEOF_PTHREAD_BARRIER_T = 48;
|
| 2725 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2726 | + }
|
| 2727 | + else version (IA64)
|
| 2728 | {
|
| 2729 | enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 2730 | enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 2731 | @@ -439,262 +546,290 @@ version (CRuntime_Glibc)
|
| 2732 | enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 2733 | enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2734 | }
|
| 2735 | - else
|
| 2736 | + else version (MIPS32)
|
| 2737 | {
|
| 2738 | - enum __SIZEOF_PTHREAD_ATTR_T = 32;
|
| 2739 | - enum __SIZEOF_PTHREAD_MUTEX_T = 32;
|
| 2740 | + enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 2741 | + enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 2742 | enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2743 | enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2744 | enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2745 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 44;
|
| 2746 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 2747 | enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2748 | enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 2749 | enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2750 | }
|
| 2751 | + else version (MIPS64)
|
| 2752 | + {
|
| 2753 | + enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 2754 | + enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 2755 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2756 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2757 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2758 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 2759 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2760 | + enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 2761 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2762 | + }
|
| 2763 | + else version (PPC)
|
| 2764 | + {
|
| 2765 | + enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 2766 | + enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 2767 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2768 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2769 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2770 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 2771 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2772 | + enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 2773 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2774 | + }
|
| 2775 | + else version (PPC64)
|
| 2776 | + {
|
| 2777 | + enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 2778 | + enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 2779 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2780 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2781 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2782 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 2783 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2784 | + enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 2785 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2786 | + }
|
| 2787 | + else version (RISCV32)
|
| 2788 | + {
|
| 2789 | + enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 2790 | + enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 2791 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2792 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2793 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2794 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 2795 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2796 | + enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 2797 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2798 | + }
|
| 2799 | + else version (RISCV64)
|
| 2800 | + {
|
| 2801 | + enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 2802 | + enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 2803 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2804 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2805 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2806 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 2807 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2808 | + enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 2809 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2810 | + }
|
| 2811 | + else version (SPARC)
|
| 2812 | + {
|
| 2813 | + enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 2814 | + enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 2815 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2816 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2817 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2818 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 2819 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2820 | + enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 2821 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2822 | + }
|
| 2823 | + else version (SPARC64)
|
| 2824 | + {
|
| 2825 | + enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 2826 | + enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 2827 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2828 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2829 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2830 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 2831 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2832 | + enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 2833 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2834 | + }
|
| 2835 | + else version (S390)
|
| 2836 | + {
|
| 2837 | + enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 2838 | + enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 2839 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2840 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2841 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2842 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 2843 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2844 | + enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 2845 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2846 | + }
|
| 2847 | + else version (SystemZ)
|
| 2848 | + {
|
| 2849 | + enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 2850 | + enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 2851 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2852 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2853 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2854 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 2855 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2856 | + enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 2857 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2858 | + }
|
| 2859 | + else version (LoongArch64)
|
| 2860 | + {
|
| 2861 | + enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 2862 | + enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 2863 | + enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2864 | + enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2865 | + enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2866 | + enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 2867 | + enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2868 | + enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 2869 | + enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2870 | + }
|
| 2871 | + else
|
| 2872 | + {
|
| 2873 | + static assert (false, "Unsupported platform");
|
| 2874 | + }
|
| 2875 | +
|
| 2876 | + union pthread_attr_t
|
| 2877 | + {
|
| 2878 | + byte[__SIZEOF_PTHREAD_ATTR_T] __size;
|
| 2879 | + c_long __align;
|
| 2880 | + }
|
| 2881 | +
|
| 2882 | + private alias int __atomic_lock_t;
|
| 2883 | +
|
| 2884 | + private struct _pthread_fastlock
|
| 2885 | + {
|
| 2886 | + c_long __status;
|
| 2887 | + __atomic_lock_t __spinlock;
|
| 2888 | + }
|
| 2889 | +
|
| 2890 | + private alias void* _pthread_descr;
|
| 2891 | +
|
| 2892 | + union pthread_cond_t
|
| 2893 | + {
|
| 2894 | + byte[__SIZEOF_PTHREAD_COND_T] __size;
|
| 2895 | + long __align;
|
| 2896 | + }
|
| 2897 | +
|
| 2898 | + union pthread_condattr_t
|
| 2899 | + {
|
| 2900 | + byte[__SIZEOF_PTHREAD_CONDATTR_T] __size;
|
| 2901 | + int __align;
|
| 2902 | + }
|
| 2903 | +
|
| 2904 | + alias uint pthread_key_t;
|
| 2905 | +
|
| 2906 | + union pthread_mutex_t
|
| 2907 | + {
|
| 2908 | + byte[__SIZEOF_PTHREAD_MUTEX_T] __size;
|
| 2909 | + c_long __align;
|
| 2910 | + }
|
| 2911 | +
|
| 2912 | + union pthread_mutexattr_t
|
| 2913 | + {
|
| 2914 | + byte[__SIZEOF_PTHREAD_MUTEXATTR_T] __size;
|
| 2915 | + int __align;
|
| 2916 | + }
|
| 2917 | +
|
| 2918 | + alias int pthread_once_t;
|
| 2919 | +
|
| 2920 | + struct pthread_rwlock_t
|
| 2921 | + {
|
| 2922 | + byte[__SIZEOF_PTHREAD_RWLOCK_T] __size;
|
| 2923 | + c_long __align;
|
| 2924 | + }
|
| 2925 | +
|
| 2926 | + struct pthread_rwlockattr_t
|
| 2927 | + {
|
| 2928 | + byte[__SIZEOF_PTHREAD_RWLOCKATTR_T] __size;
|
| 2929 | + c_long __align;
|
| 2930 | + }
|
| 2931 | +
|
| 2932 | + alias c_ulong pthread_t;
|
| 2933 | }
|
| 2934 | - else version (AArch64)
|
| 2935 | - {
|
| 2936 | - enum __SIZEOF_PTHREAD_ATTR_T = 64;
|
| 2937 | - enum __SIZEOF_PTHREAD_MUTEX_T = 48;
|
| 2938 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 8;
|
| 2939 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2940 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 8;
|
| 2941 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 2942 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2943 | - enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 2944 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 8;
|
| 2945 | - }
|
| 2946 | - else version (ARM)
|
| 2947 | - {
|
| 2948 | - enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 2949 | - enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 2950 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2951 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2952 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2953 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 2954 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2955 | - enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 2956 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2957 | - }
|
| 2958 | - else version (HPPA)
|
| 2959 | - {
|
| 2960 | - enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 2961 | - enum __SIZEOF_PTHREAD_MUTEX_T = 48;
|
| 2962 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2963 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2964 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2965 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 64;
|
| 2966 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2967 | - enum __SIZEOF_PTHREAD_BARRIER_T = 48;
|
| 2968 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2969 | - }
|
| 2970 | - else version (IA64)
|
| 2971 | - {
|
| 2972 | - enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 2973 | - enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 2974 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2975 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2976 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2977 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 2978 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2979 | - enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 2980 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2981 | - }
|
| 2982 | - else version (MIPS32)
|
| 2983 | - {
|
| 2984 | - enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 2985 | - enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 2986 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2987 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 2988 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 2989 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 2990 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 2991 | - enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 2992 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 2993 | - }
|
| 2994 | - else version (MIPS64)
|
| 2995 | - {
|
| 2996 | - enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 2997 | - enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 2998 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 2999 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 3000 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 3001 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 3002 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 3003 | - enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 3004 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 3005 | - }
|
| 3006 | - else version (PPC)
|
| 3007 | - {
|
| 3008 | - enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 3009 | - enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 3010 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 3011 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 3012 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 3013 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 3014 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 3015 | - enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 3016 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 3017 | - }
|
| 3018 | - else version (PPC64)
|
| 3019 | - {
|
| 3020 | - enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 3021 | - enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 3022 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 3023 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 3024 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 3025 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 3026 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 3027 | - enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 3028 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 3029 | - }
|
| 3030 | - else version (RISCV32)
|
| 3031 | - {
|
| 3032 | - enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 3033 | - enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 3034 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 3035 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 3036 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 3037 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 3038 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 3039 | - enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 3040 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 3041 | - }
|
| 3042 | - else version (RISCV64)
|
| 3043 | - {
|
| 3044 | - enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 3045 | - enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 3046 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 3047 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 3048 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 3049 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 3050 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 3051 | - enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 3052 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 3053 | - }
|
| 3054 | - else version (SPARC)
|
| 3055 | - {
|
| 3056 | - enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 3057 | - enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 3058 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 3059 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 3060 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 3061 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 3062 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 3063 | - enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 3064 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 3065 | - }
|
| 3066 | - else version (SPARC64)
|
| 3067 | - {
|
| 3068 | - enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 3069 | - enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 3070 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 3071 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 3072 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 3073 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 3074 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 3075 | - enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 3076 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 3077 | - }
|
| 3078 | - else version (S390)
|
| 3079 | - {
|
| 3080 | - enum __SIZEOF_PTHREAD_ATTR_T = 36;
|
| 3081 | - enum __SIZEOF_PTHREAD_MUTEX_T = 24;
|
| 3082 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 3083 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 3084 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 3085 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 32;
|
| 3086 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 3087 | - enum __SIZEOF_PTHREAD_BARRIER_T = 20;
|
| 3088 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 3089 | - }
|
| 3090 | - else version (SystemZ)
|
| 3091 | - {
|
| 3092 | - enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 3093 | - enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 3094 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 3095 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 3096 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 3097 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 3098 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 3099 | - enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 3100 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 3101 | - }
|
| 3102 | - else version (LoongArch64)
|
| 3103 | - {
|
| 3104 | - enum __SIZEOF_PTHREAD_ATTR_T = 56;
|
| 3105 | - enum __SIZEOF_PTHREAD_MUTEX_T = 40;
|
| 3106 | - enum __SIZEOF_PTHREAD_MUTEXATTR_T = 4;
|
| 3107 | - enum __SIZEOF_PTHREAD_COND_T = 48;
|
| 3108 | - enum __SIZEOF_PTHREAD_CONDATTR_T = 4;
|
| 3109 | - enum __SIZEOF_PTHREAD_RWLOCK_T = 56;
|
| 3110 | - enum __SIZEOF_PTHREAD_RWLOCKATTR_T = 8;
|
| 3111 | - enum __SIZEOF_PTHREAD_BARRIER_T = 32;
|
| 3112 | - enum __SIZEOF_PTHREAD_BARRIERATTR_T = 4;
|
| 3113 | - }
|
| 3114 | - else
|
| 3115 | + else version (Hurd)
|
| 3116 | {
|
| 3117 | - static assert (false, "Unsupported platform");
|
| 3118 | - }
|
| 3119 | + import core.sys.hurd.sys.types;
|
| 3120 | + import core.sys.posix.time: clockid_t;
|
| 3121 |
|
| 3122 | - union pthread_attr_t
|
| 3123 | - {
|
| 3124 | - byte[__SIZEOF_PTHREAD_ATTR_T] __size;
|
| 3125 | - c_long __align;
|
| 3126 | - }
|
| 3127 | + private struct __sched_param
|
| 3128 | + {
|
| 3129 | + int __sched_priority;
|
| 3130 | + }
|
| 3131 |
|
| 3132 | - private alias int __atomic_lock_t;
|
| 3133 | + private struct __pthread;
|
| 3134 |
|
| 3135 | - private struct _pthread_fastlock
|
| 3136 | - {
|
| 3137 | - c_long __status;
|
| 3138 | - __atomic_lock_t __spinlock;
|
| 3139 | - }
|
| 3140 | + struct pthread_attr_t
|
| 3141 | + {
|
| 3142 | + __sched_param schedparam;
|
| 3143 | + void* stackaddr;
|
| 3144 | + size_t __stacksize;
|
| 3145 | + size_t __guardsize;
|
| 3146 | + int __detachstate;
|
| 3147 | + int __inheritsched;
|
| 3148 | + int __contentionscope;
|
| 3149 | + int __schedpolicy;
|
| 3150 | + }
|
| 3151 |
|
| 3152 | - private alias void* _pthread_descr;
|
| 3153 | + struct pthread_cond_t
|
| 3154 | + {
|
| 3155 | + pthread_spinlock_t __lock;
|
| 3156 | + __pthread *__queue;
|
| 3157 | + pthread_condattr_t *__attr;
|
| 3158 | + uint __wrefs;
|
| 3159 | + void *__data;
|
| 3160 | + }
|
| 3161 |
|
| 3162 | - union pthread_cond_t
|
| 3163 | - {
|
| 3164 | - byte[__SIZEOF_PTHREAD_COND_T] __size;
|
| 3165 | - long __align;
|
| 3166 | - }
|
| 3167 | + struct pthread_condattr_t
|
| 3168 | + {
|
| 3169 | + int __pshared;
|
| 3170 | + clockid_t __clock;
|
| 3171 | + }
|
| 3172 |
|
| 3173 | - union pthread_condattr_t
|
| 3174 | - {
|
| 3175 | - byte[__SIZEOF_PTHREAD_CONDATTR_T] __size;
|
| 3176 | - int __align;
|
| 3177 | - }
|
| 3178 | + alias int pthread_key_t;
|
| 3179 |
|
| 3180 | - alias uint pthread_key_t;
|
| 3181 | + struct pthread_mutex_t
|
| 3182 | + {
|
| 3183 | + uint __lock;
|
| 3184 | + uint __owner_id;
|
| 3185 | + uint __cnt;
|
| 3186 | + int __shpid;
|
| 3187 | + int __type;
|
| 3188 | + int __flags;
|
| 3189 | + union
|
| 3190 | + {
|
| 3191 | + uint[2] __reserved;
|
| 3192 | + void *__pointer_aligned;
|
| 3193 | + }
|
| 3194 | + }
|
| 3195 |
|
| 3196 | - union pthread_mutex_t
|
| 3197 | - {
|
| 3198 | - byte[__SIZEOF_PTHREAD_MUTEX_T] __size;
|
| 3199 | - c_long __align;
|
| 3200 | - }
|
| 3201 | + struct pthread_mutexattr_t
|
| 3202 | + {
|
| 3203 | + int __prioceiling;
|
| 3204 | + int __protocol;
|
| 3205 | + int __pshared;
|
| 3206 | + int __mutex_type;
|
| 3207 | + }
|
| 3208 |
|
| 3209 | - union pthread_mutexattr_t
|
| 3210 | - {
|
| 3211 | - byte[__SIZEOF_PTHREAD_MUTEXATTR_T] __size;
|
| 3212 | - int __align;
|
| 3213 | - }
|
| 3214 | + struct pthread_once_t
|
| 3215 | + {
|
| 3216 | + int __run;
|
| 3217 | + pthread_spinlock_t __lock;
|
| 3218 | + }
|
| 3219 |
|
| 3220 | - alias int pthread_once_t;
|
| 3221 | + struct pthread_rwlock_t
|
| 3222 | + {
|
| 3223 | + pthread_spinlock_t __held;
|
| 3224 | + pthread_spinlock_t __lock;
|
| 3225 | + int __readers;
|
| 3226 | + __pthread *__readerqueue;
|
| 3227 | + __pthread *__writerqueue;
|
| 3228 | + pthread_rwlockattr_t *__attr;
|
| 3229 | + void *__data;
|
| 3230 | + }
|
| 3231 |
|
| 3232 | - struct pthread_rwlock_t
|
| 3233 | - {
|
| 3234 | - byte[__SIZEOF_PTHREAD_RWLOCK_T] __size;
|
| 3235 | - c_long __align;
|
| 3236 | - }
|
| 3237 | + struct pthread_rwlockattr_t
|
| 3238 | + {
|
| 3239 | + int __pshared;
|
| 3240 | + }
|
| 3241 |
|
| 3242 | - struct pthread_rwlockattr_t
|
| 3243 | - {
|
| 3244 | - byte[__SIZEOF_PTHREAD_RWLOCKATTR_T] __size;
|
| 3245 | - c_long __align;
|
| 3246 | + alias c_long pthread_t;
|
| 3247 | }
|
| 3248 | -
|
| 3249 | - alias c_ulong pthread_t;
|
| 3250 | -}
|
| 3251 | + }
|
| 3252 | else version (CRuntime_Musl)
|
| 3253 | {
|
| 3254 | version (D_LP64)
|
| 3255 | @@ -1300,17 +1435,37 @@ pthread_barrierattr_t
|
| 3256 |
|
| 3257 | version (CRuntime_Glibc)
|
| 3258 | {
|
| 3259 | - struct pthread_barrier_t
|
| 3260 | - {
|
| 3261 | - byte[__SIZEOF_PTHREAD_BARRIER_T] __size;
|
| 3262 | - c_long __align;
|
| 3263 | - }
|
| 3264 | + version (linux)
|
| 3265 | + {
|
| 3266 | + struct pthread_barrier_t
|
| 3267 | + {
|
| 3268 | + byte[__SIZEOF_PTHREAD_BARRIER_T] __size;
|
| 3269 | + c_long __align;
|
| 3270 | + }
|
| 3271 |
|
| 3272 | - struct pthread_barrierattr_t
|
| 3273 | - {
|
| 3274 | - byte[__SIZEOF_PTHREAD_BARRIERATTR_T] __size;
|
| 3275 | - int __align;
|
| 3276 | - }
|
| 3277 | + struct pthread_barrierattr_t
|
| 3278 | + {
|
| 3279 | + byte[__SIZEOF_PTHREAD_BARRIERATTR_T] __size;
|
| 3280 | + int __align;
|
| 3281 | + }
|
| 3282 | + }
|
| 3283 | + else version (Hurd)
|
| 3284 | + {
|
| 3285 | + struct pthread_barrier_t
|
| 3286 | + {
|
| 3287 | + pthread_spinlock_t __lock;
|
| 3288 | + __pthread *__queue;
|
| 3289 | + uint __pending;
|
| 3290 | + uint __count;
|
| 3291 | + pthread_barrierattr_t *__attr;
|
| 3292 | + void *__data;
|
| 3293 | + }
|
| 3294 | +
|
| 3295 | + struct pthread_barrierattr_t
|
| 3296 | + {
|
| 3297 | + int __pshared;
|
| 3298 | + }
|
| 3299 | + }
|
| 3300 | }
|
| 3301 | else version (FreeBSD)
|
| 3302 | {
|
| 3303 | diff --git a/libphobos/libdruntime/core/sys/posix/sys/un.d b/libphobos/libdruntime/core/sys/posix/sys/un.d
|
| 3304 | index 11e98a72a..0d4746ee3 100644
|
| 3305 | |
| 3306 | |
| 3307 | @@ -104,3 +104,12 @@ else version (Solaris)
|
| 3308 | byte[108] sun_path;
|
| 3309 | }
|
| 3310 | }
|
| 3311 | +else version (Hurd)
|
| 3312 | +{
|
| 3313 | + struct sockaddr_un
|
| 3314 | + {
|
| 3315 | + ubyte sun_len;
|
| 3316 | + sa_family_t sun_family;
|
| 3317 | + byte[108] sun_path;
|
| 3318 | + }
|
| 3319 | +}
|
| 3320 | diff --git a/libphobos/libdruntime/core/sys/posix/sys/utsname.d b/libphobos/libdruntime/core/sys/posix/sys/utsname.d
|
| 3321 | index 5de50aca4..507113b6f 100644
|
| 3322 | |
| 3323 | |
| 3324 | @@ -19,19 +19,36 @@ nothrow:
|
| 3325 |
|
| 3326 | version (CRuntime_Glibc)
|
| 3327 | {
|
| 3328 | - private enum utsNameLength = 65;
|
| 3329 | -
|
| 3330 | - struct utsname
|
| 3331 | + version(linux)
|
| 3332 | {
|
| 3333 | - char[utsNameLength] sysname = 0;
|
| 3334 | - char[utsNameLength] nodename = 0;
|
| 3335 | - char[utsNameLength] release = 0;
|
| 3336 | - char[utsNameLength] version_ = 0;
|
| 3337 | - // TODO Deprecate after version_ has been in an official release.
|
| 3338 | - alias update = version_;
|
| 3339 | - char[utsNameLength] machine = 0;
|
| 3340 | + private enum utsNameLength = 65;
|
| 3341 | + struct utsname
|
| 3342 | + {
|
| 3343 | + char[utsNameLength] sysname = 0;
|
| 3344 | + char[utsNameLength] nodename = 0;
|
| 3345 | + char[utsNameLength] release = 0;
|
| 3346 | + char[utsNameLength] version_ = 0;
|
| 3347 | + // TODO Deprecate after version_ has been in an official release.
|
| 3348 | + alias update = version_;
|
| 3349 | + char[utsNameLength] machine = 0;
|
| 3350 | +
|
| 3351 | + char[utsNameLength] __domainname = 0;
|
| 3352 | + }
|
| 3353 | + }
|
| 3354 |
|
| 3355 | - char[utsNameLength] __domainname = 0;
|
| 3356 | + else version(Hurd)
|
| 3357 | + {
|
| 3358 | + private enum utsNameLength = 1024;
|
| 3359 | + struct utsname
|
| 3360 | + {
|
| 3361 | + char[utsNameLength] sysname = 0;
|
| 3362 | + char[utsNameLength] nodename = 0;
|
| 3363 | + char[utsNameLength] release = 0;
|
| 3364 | + char[utsNameLength] version_ = 0;
|
| 3365 | + // TODO Deprecate after version_ has been in an official release.
|
| 3366 | + alias update = version_;
|
| 3367 | + char[utsNameLength] machine = 0;
|
| 3368 | + }
|
| 3369 | }
|
| 3370 |
|
| 3371 | int uname(utsname* __name);
|
| 3372 | diff --git a/libphobos/libdruntime/core/sys/posix/sys/wait.d b/libphobos/libdruntime/core/sys/posix/sys/wait.d
|
| 3373 | index f6b0674a3..e1a8fece1 100644
|
| 3374 | |
| 3375 | |
| 3376 | @@ -106,6 +106,15 @@ else version (Solaris)
|
| 3377 | enum WNOHANG = 64;
|
| 3378 | enum WUNTRACED = 4;
|
| 3379 | }
|
| 3380 | +else version (Hurd)
|
| 3381 | +{
|
| 3382 | + enum WNOHANG = 1;
|
| 3383 | + enum WUNTRACED = 2;
|
| 3384 | + private
|
| 3385 | + {
|
| 3386 | + enum __W_CONTINUED = 0xFFFF;
|
| 3387 | + }
|
| 3388 | +}
|
| 3389 | else
|
| 3390 | {
|
| 3391 | static assert(false, "Unsupported platform");
|
| 3392 | @@ -430,6 +439,20 @@ else version (Solaris)
|
| 3393 | P_CPUID, /* CPU identifier. */
|
| 3394 | P_PSETID, /* Processor set identifier */
|
| 3395 | }
|
| 3396 | +}
|
| 3397 | + else version (Hurd)
|
| 3398 | +{
|
| 3399 | + enum WEXITED = 16;
|
| 3400 | + enum WSTOPPED = WUNTRACED;
|
| 3401 | + enum WCONTINUED = 4;
|
| 3402 | + enum WNOWAIT = 8;
|
| 3403 | +
|
| 3404 | + enum idtype_t
|
| 3405 | + {
|
| 3406 | + P_ALL,
|
| 3407 | + P_PID,
|
| 3408 | + P_PGID
|
| 3409 | + }
|
| 3410 | }
|
| 3411 | else
|
| 3412 | {
|
| 3413 | diff --git a/libphobos/libdruntime/core/sys/posix/termios.d b/libphobos/libdruntime/core/sys/posix/termios.d
|
| 3414 | index e4a99e686..ecc736715 100644
|
| 3415 | |
| 3416 | |
| 3417 | @@ -831,6 +831,103 @@ else version (Solaris)
|
| 3418 | enum B460800 = 22;
|
| 3419 | enum B921600 = 23;
|
| 3420 | }
|
| 3421 | +else version (Hurd)
|
| 3422 | +{
|
| 3423 | + alias ubyte cc_t;
|
| 3424 | + alias uint speed_t;
|
| 3425 | + alias uint tcflag_t;
|
| 3426 | +
|
| 3427 | + enum NCCS = 20;
|
| 3428 | +
|
| 3429 | + struct termios
|
| 3430 | + {
|
| 3431 | + tcflag_t c_iflag;
|
| 3432 | + tcflag_t c_oflag;
|
| 3433 | + tcflag_t c_cflag;
|
| 3434 | + tcflag_t c_lflag;
|
| 3435 | + cc_t[NCCS] c_cc;
|
| 3436 | + speed_t c_ispeed;
|
| 3437 | + speed_t c_ospeed;
|
| 3438 | + }
|
| 3439 | +
|
| 3440 | + enum VEOF = 0;
|
| 3441 | + enum VEOL = 1;
|
| 3442 | + enum VERASE = 3;
|
| 3443 | + enum VINTR = 8;
|
| 3444 | + enum VKILL = 5;
|
| 3445 | + enum VMIN = 16;
|
| 3446 | + enum VQUIT = 9;
|
| 3447 | + enum VSTART = 12;
|
| 3448 | + enum VSTOP = 13;
|
| 3449 | + enum VSUSP = 10;
|
| 3450 | + enum VTIME = 17;
|
| 3451 | +
|
| 3452 | + enum BRKINT = 0x0000002;
|
| 3453 | + enum ICRNL = 0x0000100;
|
| 3454 | + enum IGNBRK = 0x0000001;
|
| 3455 | + enum IGNCR = 0x0000080;
|
| 3456 | + enum IGNPAR = 0x0000004;
|
| 3457 | + enum INLCR = 0x0000040;
|
| 3458 | + enum INPCK = 0x0000010;
|
| 3459 | + enum ISTRIP = 0x0000020;
|
| 3460 | + enum IXOFF = 0x0000400;
|
| 3461 | + enum IXON = 0x0000200;
|
| 3462 | + enum PARMRK = 0x0000008;
|
| 3463 | +
|
| 3464 | + enum OPOST = 0x0000001;
|
| 3465 | +
|
| 3466 | + enum B0 = 0;
|
| 3467 | + enum B50 = 50;
|
| 3468 | + enum B75 = 75;
|
| 3469 | + enum B110 = 110;
|
| 3470 | + enum B134 = 134;
|
| 3471 | + enum B150 = 150;
|
| 3472 | + enum B200 = 200;
|
| 3473 | + enum B300 = 300;
|
| 3474 | + enum B600 = 600;
|
| 3475 | + enum B1200 = 1200;
|
| 3476 | + enum B1800 = 1800;
|
| 3477 | + enum B2400 = 2400;
|
| 3478 | + enum B4800 = 4800;
|
| 3479 | + enum B9600 = 9600;
|
| 3480 | + enum B19200 = 19200;
|
| 3481 | + enum B38400 = 38400;
|
| 3482 | +
|
| 3483 | + enum CSIZE = 0x0000300;
|
| 3484 | + enum CS5 = 0x0000000;
|
| 3485 | + enum CS6 = 0x0000100;
|
| 3486 | + enum CS7 = 0x0000200;
|
| 3487 | + enum CS8 = 0x0000300;
|
| 3488 | + enum CSTOPB = 0x0000400;
|
| 3489 | + enum CREAD = 0x0000800;
|
| 3490 | + enum PARENB = 0x0001000;
|
| 3491 | + enum PARODD = 0x0002000;
|
| 3492 | + enum HUPCL = 0x0004000;
|
| 3493 | + enum CLOCAL = 0x0008000;
|
| 3494 | +
|
| 3495 | + enum ECHO = 0x00000008;
|
| 3496 | + enum ECHOE = 0x00000002;
|
| 3497 | + enum ECHOK = 0x00000004;
|
| 3498 | + enum ECHONL = 0x00000010;
|
| 3499 | + enum ICANON = 0x00000100;
|
| 3500 | + enum IEXTEN = 0x00000400;
|
| 3501 | + enum ISIG = 0x00000080;
|
| 3502 | + enum NOFLSH = 0x80000000;
|
| 3503 | + enum TOSTOP = 0x00400000;
|
| 3504 | +
|
| 3505 | + enum TCSANOW = 0;
|
| 3506 | + enum TCSADRAIN = 1;
|
| 3507 | + enum TCSAFLUSH = 2;
|
| 3508 | +
|
| 3509 | + enum TCIFLUSH = 0;
|
| 3510 | + enum TCOFLUSH = 1;
|
| 3511 | + enum TCIOFLUSH = 2;
|
| 3512 | +
|
| 3513 | + enum TCIOFF = 3;
|
| 3514 | + enum TCION = 4;
|
| 3515 | + enum TCOOFF = 1;
|
| 3516 | + enum TCOON = 2;
|
| 3517 | +}
|
| 3518 |
|
| 3519 | /*
|
| 3520 | speed_t cfgetispeed(const scope termios*);
|
| 3521 | diff --git a/libphobos/libdruntime/core/sys/posix/time.d b/libphobos/libdruntime/core/sys/posix/time.d
|
| 3522 | index f49764d19..662ad1c6c 100644
|
| 3523 | |
| 3524 | |
| 3525 | @@ -155,6 +155,10 @@ else version (Solaris)
|
| 3526 | {
|
| 3527 | enum CLOCK_MONOTONIC = 4;
|
| 3528 | }
|
| 3529 | +else version (Hurd)
|
| 3530 | +{
|
| 3531 | + enum CLOCK_MONOTONIC = 1;
|
| 3532 | +}
|
| 3533 | else
|
| 3534 | {
|
| 3535 | static assert(0);
|
| 3536 | @@ -254,6 +258,14 @@ else version (Solaris)
|
| 3537 |
|
| 3538 | alias timespec timestruc_t;
|
| 3539 | }
|
| 3540 | +else version (Hurd)
|
| 3541 | +{
|
| 3542 | + struct timespec
|
| 3543 | + {
|
| 3544 | + time_t tv_sec;
|
| 3545 | + c_long tv_nsec;
|
| 3546 | + }
|
| 3547 | +}
|
| 3548 | else
|
| 3549 | {
|
| 3550 | static assert(false, "Unsupported platform");
|
| 3551 | diff --git a/libphobos/libdruntime/core/thread/osthread.d b/libphobos/libdruntime/core/thread/osthread.d
|
| 3552 | index a9fcf9625..471c4cac2 100644
|
| 3553 | |
| 3554 | |
| 3555 | @@ -2154,6 +2154,14 @@ extern (C) void thread_init() @nogc nothrow
|
| 3556 | enum SIGRTMIN = SIGUSR1;
|
| 3557 | enum SIGRTMAX = 32;
|
| 3558 | }
|
| 3559 | + else version (Hurd)
|
| 3560 | + {
|
| 3561 | + // Hurd does not support SIGRTMIN or SIGRTMAX
|
| 3562 | + // Use SIGUSR1 for SIGRTMIN, SIGUSR2 for SIGRTMIN + 1
|
| 3563 | + // And use 32 for SIGRTMAX (32 is the max signal number on Hurd)
|
| 3564 | + enum SIGRTMIN = SIGUSR1;
|
| 3565 | + enum SIGRTMAX = 32;
|
| 3566 | + }
|
| 3567 |
|
| 3568 | if ( suspendSignalNumber == 0 )
|
| 3569 | {
|
| 3570 | diff --git a/libphobos/libdruntime/core/time.d b/libphobos/libdruntime/core/time.d
|
| 3571 | index c3192fc39..4cfaf8f30 100644
|
| 3572 | |
| 3573 | |
| 3574 | @@ -330,6 +330,17 @@ else version (Solaris) enum ClockType
|
| 3575 | second = 6,
|
| 3576 | threadCPUTime = 7,
|
| 3577 | }
|
| 3578 | +else version (Hurd) enum ClockType
|
| 3579 | +{
|
| 3580 | + normal = 0,
|
| 3581 | + coarse = 2,
|
| 3582 | + precise = 3,
|
| 3583 | + // processCPUTime = 4,
|
| 3584 | + raw = 5,
|
| 3585 | + second = 6,
|
| 3586 | + // threadCPUTime = 7,
|
| 3587 | +
|
| 3588 | +}
|
| 3589 | else
|
| 3590 | {
|
| 3591 | // It needs to be decided (and implemented in an appropriate version branch
|
| 3592 | @@ -429,6 +440,20 @@ version (Posix)
|
| 3593 | case second: assert(0);
|
| 3594 | }
|
| 3595 | }
|
| 3596 | + else version (Hurd)
|
| 3597 | + {
|
| 3598 | + import core.sys.hurd.time;
|
| 3599 | + with(ClockType) final switch (clockType)
|
| 3600 | + {
|
| 3601 | + case coarse: return CLOCK_MONOTONIC_COARSE;
|
| 3602 | + case normal: return CLOCK_MONOTONIC;
|
| 3603 | + case precise: return CLOCK_MONOTONIC;
|
| 3604 | + // case processCPUTime: return CLOCK_PROCESS_CPUTIME_ID;
|
| 3605 | + case raw: return CLOCK_MONOTONIC_RAW;
|
| 3606 | + // case threadCPUTime: return CLOCK_THREAD_CPUTIME_ID;
|
| 3607 | + case second: assert(0);
|
| 3608 | + }
|
| 3609 | + }
|
| 3610 | else
|
| 3611 | // It needs to be decided (and implemented in an appropriate
|
| 3612 | // version branch here) which clock types new platforms are going
|
| 3613 | diff --git a/libphobos/libdruntime/gcc/backtrace.d b/libphobos/libdruntime/gcc/backtrace.d
|
| 3614 | index db8ec4bcf..cc776570b 100644
|
| 3615 | |
| 3616 | |
| 3617 | @@ -408,6 +408,8 @@ private:
|
| 3618 | import core.sys.openbsd.dlfcn;
|
| 3619 | else version (Solaris)
|
| 3620 | import core.sys.solaris.dlfcn;
|
| 3621 | + else version (Hurd)
|
| 3622 | + import core.sys.hurd.dlfcn;
|
| 3623 | else version (Posix)
|
| 3624 | import core.sys.posix.dlfcn;
|
| 3625 |
|
| 3626 | diff --git a/libphobos/libdruntime/gcc/sections/elf.d b/libphobos/libdruntime/gcc/sections/elf.d
|
| 3627 | index a67dd4a42..748947afd 100644
|
| 3628 | |
| 3629 | |
| 3630 | @@ -82,6 +82,12 @@ else version (Solaris)
|
| 3631 | import core.sys.solaris.sys.elf;
|
| 3632 | import core.sys.solaris.sys.link;
|
| 3633 | }
|
| 3634 | +else version (Hurd)
|
| 3635 | +{
|
| 3636 | + import core.sys.hurd.dlfcn;
|
| 3637 | + import core.sys.hurd.elf;
|
| 3638 | + import core.sys.hurd.link;
|
| 3639 | +}
|
| 3640 | else
|
| 3641 | {
|
| 3642 | static assert(0, "unimplemented");
|
| 3643 | @@ -781,6 +787,8 @@ version (Shared)
|
| 3644 | strtab = cast(const(char)*)(info.dlpi_addr + dyn.d_un.d_ptr); // relocate
|
| 3645 | else version (Solaris)
|
| 3646 | strtab = cast(const(char)*)(info.dlpi_addr + dyn.d_un.d_ptr); // relocate
|
| 3647 | + else version (Hurd)
|
| 3648 | + strtab = cast(const(char)*)(dyn.d_un.d_ptr);
|
| 3649 | else
|
| 3650 | static assert(0, "unimplemented");
|
| 3651 | break;
|
| 3652 | @@ -916,6 +924,7 @@ bool findDSOInfoForAddr(in void* addr, dl_phdr_info* result=null) nothrow @nogc
|
| 3653 | else version (NetBSD) enum IterateManually = true;
|
| 3654 | else version (OpenBSD) enum IterateManually = true;
|
| 3655 | else version (Solaris) enum IterateManually = true;
|
| 3656 | + else version (Hurd) enum IterateManually = true;
|
| 3657 | else enum IterateManually = false;
|
| 3658 |
|
| 3659 | static if (IterateManually)
|
| 3660 | --
|
| 3661 | 2.52.0
|
| 3662 |
|
| 3663 | From 50c699d486cb9c365f5a27835eb154900f1a85e0 Mon Sep 17 00:00:00 2001
|
| 3664 | From: Yelninei <[email protected]>
|
| 3665 | Date: Sat, 11 Apr 2026 20:19:20 +0000
|
| 3666 | Subject: [PATCH 3/4] libphobos: Support for GNU/Hurd.
|
| 3667 |
|
| 3668 | ---
|
| 3669 | libphobos/configure.tgt | 3 +++
|
| 3670 | libphobos/libdruntime/Makefile.am | 10 ++++++++++
|
| 3671 | libphobos/libdruntime/config/common/threadasm.S | 2 +-
|
| 3672 | libphobos/libdruntime/config/x86/switchcontext.S | 8 ++++----
|
| 3673 | libphobos/m4/druntime/os.m4 | 5 +++++
|
| 3674 | 5 files changed, 23 insertions(+), 5 deletions(-)
|
| 3675 |
|
| 3676 | diff --git a/libphobos/configure.tgt b/libphobos/configure.tgt
|
| 3677 | index 715964444..5d0862a91 100644
|
| 3678 | |
| 3679 | |
| 3680 | @@ -76,6 +76,9 @@ case "${target}" in
|
| 3681 | x86_64-*-linux* | i?86-*-linux*)
|
| 3682 | LIBPHOBOS_SUPPORTED=yes
|
| 3683 | ;;
|
| 3684 | + x86_64-*-gnu* | i?86-*-gnu*)
|
| 3685 | + LIBPHOBOS_SUPPORTED=yes
|
| 3686 | + ;;
|
| 3687 | x86_64-*-netbsd* | i?86-*-netbsd*)
|
| 3688 | LIBPHOBOS_SUPPORTED=yes
|
| 3689 | ;;
|
| 3690 | diff --git a/libphobos/libdruntime/Makefile.am b/libphobos/libdruntime/Makefile.am
|
| 3691 | index f17d8beb9..275ba5f65 100644
|
| 3692 | |
| 3693 | |
| 3694 | @@ -38,6 +38,7 @@ ALL_DRUNTIME_INSTALL_DSOURCES = $(DRUNTIME_DSOURCES) \
|
| 3695 | $(DRUNTIME_DSOURCES_LINUX) $(DRUNTIME_DSOURCES_NETBSD) \
|
| 3696 | $(DRUNTIME_DSOURCES_OPENBSD) $(DRUNTIME_DSOURCES_POSIX) \
|
| 3697 | $(DRUNTIME_DSOURCES_SOLARIS) $(DRUNTIME_DSOURCES_WINDOWS) \
|
| 3698 | + $(DRUNTIME_DSOURCES_HURD) \
|
| 3699 | $(DRUNTIME_DSOURCES_GENERATED) $(DRUNTIME_DISOURCES) \
|
| 3700 | $(DRUNTIME_DSOURCES_ELF) $(DRUNTIME_DSOURCES_STDCXX)
|
| 3701 |
|
| 3702 | @@ -76,6 +77,9 @@ endif
|
| 3703 | if DRUNTIME_OS_SOLARIS
|
| 3704 | DRUNTIME_SOURCES_CONFIGURED += $(DRUNTIME_DSOURCES_SOLARIS)
|
| 3705 | endif
|
| 3706 | +if DRUNTIME_OS_HURD
|
| 3707 | + DRUNTIME_SOURCES_CONFIGURED += $(DRUNTIME_DSOURCES_HURD)
|
| 3708 | +endif
|
| 3709 | # CPU specific sources
|
| 3710 | if DRUNTIME_CPU_AARCH64
|
| 3711 | DRUNTIME_SOURCES_CONFIGURED += config/aarch64/switchcontext.S
|
| 3712 | @@ -355,6 +359,12 @@ DRUNTIME_DSOURCES_SOLARIS = core/sys/solaris/dlfcn.d \
|
| 3713 | core/sys/solaris/sys/procset.d core/sys/solaris/sys/types.d \
|
| 3714 | core/sys/solaris/time.d
|
| 3715 |
|
| 3716 | +DRUNTIME_DSOURCES_HURD = core/sys/hurd/config.d \
|
| 3717 | + core/sys/hurd/dlfcn.d core/sys/hurd/elf.d \
|
| 3718 | + core/sys/hurd/errno.d core/sys/hurd/execinfo.d \
|
| 3719 | + core/sys/hurd/link.d core/sys/hurd/sys/types.d \
|
| 3720 | + core/sys/hurd/time.d core/sys/hurd/unistd.d
|
| 3721 | +
|
| 3722 | DRUNTIME_DSOURCES_WINDOWS = core/sys/windows/accctrl.d \
|
| 3723 | core/sys/windows/aclapi.d core/sys/windows/aclui.d \
|
| 3724 | core/sys/windows/basetsd.d core/sys/windows/basetyps.d \
|
| 3725 | diff --git a/libphobos/libdruntime/config/common/threadasm.S b/libphobos/libdruntime/config/common/threadasm.S
|
| 3726 | index e8bf15d51..1524d77bd 100644
|
| 3727 | |
| 3728 | |
| 3729 | @@ -22,7 +22,7 @@ a copy of the GCC Runtime Library Exception along with this program;
|
| 3730 | see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
| 3731 | <http://www.gnu.org/licenses/>. */
|
| 3732 |
|
| 3733 | -#if (__linux__ || __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__) && __ELF__
|
| 3734 | +#if (__linux__ || __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__ || __GNU__) && __ELF__
|
| 3735 | /*
|
| 3736 | * Mark the resulting object file as not requiring execution permissions on
|
| 3737 | * stack memory. The absence of this section would mark the whole resulting
|
| 3738 | diff --git a/libphobos/libdruntime/config/x86/switchcontext.S b/libphobos/libdruntime/config/x86/switchcontext.S
|
| 3739 | index beb7c5451..7fc3bada8 100644
|
| 3740 | |
| 3741 | |
| 3742 | @@ -108,7 +108,7 @@ CSYM(fiber_switchContext):
|
| 3743 |
|
| 3744 | # endif /* defined(__ELF__) */
|
| 3745 |
|
| 3746 | -# if defined(__MACH__)
|
| 3747 | +# if defined(__APPLE__)
|
| 3748 |
|
| 3749 | # if defined(__i386__)
|
| 3750 |
|
| 3751 | @@ -177,7 +177,7 @@ LASFDE1:
|
| 3752 | .p2align 2,0
|
| 3753 | LEFDE1:
|
| 3754 |
|
| 3755 | -# endif /* defined(__MACH__) && defined(__i386__) */
|
| 3756 | +# endif /* defined(__APPLE__) && defined(__i386__) */
|
| 3757 |
|
| 3758 | # if defined(__x86_64__) && !defined(__ILP32__)
|
| 3759 |
|
| 3760 | @@ -247,8 +247,8 @@ LASFDE1:
|
| 3761 | .p2align 3,0
|
| 3762 | LEFDE1:
|
| 3763 |
|
| 3764 | -# endif /* defined(__MACH__) && defined(__x86_64__) && !defined(__ILP32__) */
|
| 3765 | +# endif /* defined(__APPLE__) && defined(__x86_64__) && !defined(__ILP32__) */
|
| 3766 |
|
| 3767 | -# endif /* defined (__MACH__) */
|
| 3768 | +# endif /* defined(__APPLE__) */
|
| 3769 |
|
| 3770 | #endif /* !defined(__CET__) */
|
| 3771 | diff --git a/libphobos/m4/druntime/os.m4 b/libphobos/m4/druntime/os.m4
|
| 3772 | index 15cde3b04..f907e0929 100644
|
| 3773 | |
| 3774 | |
| 3775 | @@ -89,6 +89,9 @@ AC_DEFUN([DRUNTIME_OS_SOURCES],
|
| 3776 | mingw*) druntime_target_os_parsed="mingw"
|
| 3777 | ;;
|
| 3778 | *solaris*) druntime_target_os_parsed="solaris"
|
| 3779 | + ;;
|
| 3780 | + gnu*) druntime_target_os_parsed="hurd"
|
| 3781 | + ;;
|
| 3782 | esac
|
| 3783 | AM_CONDITIONAL([DRUNTIME_OS_AIX],
|
| 3784 | [test "$druntime_target_os_parsed" = "aix"])
|
| 3785 | @@ -110,6 +113,8 @@ AC_DEFUN([DRUNTIME_OS_SOURCES],
|
| 3786 | [test "$druntime_target_os_parsed" = "mingw"])
|
| 3787 | AM_CONDITIONAL([DRUNTIME_OS_SOLARIS],
|
| 3788 | [test "$druntime_target_os_parsed" = "solaris"])
|
| 3789 | + AM_CONDITIONAL([DRUNTIME_OS_HURD],
|
| 3790 | + [test "$druntime_target_os_parsed" = "hurd"])
|
| 3791 |
|
| 3792 | druntime_target_posix="no"
|
| 3793 | case "$druntime_cv_target_os" in
|
| 3794 | --
|
| 3795 | 2.52.0
|
| 3796 |
|
| 3797 | From 5fe2b8d511b0d6cb920504b276764cd8ae4e5ca4 Mon Sep 17 00:00:00 2001
|
| 3798 | From: Yelninei <[email protected]>
|
| 3799 | Date: Sat, 11 Apr 2026 20:34:11 +0000
|
| 3800 | Subject: [PATCH 4/4] libphobos: regenerate autotools
|
| 3801 |
|
| 3802 | ---
|
| 3803 | libphobos/configure | 21 ++++-
|
| 3804 | libphobos/libdruntime/Makefile.in | 135 +++++++++++++++++++-----------
|
| 3805 | 2 files changed, 105 insertions(+), 51 deletions(-)
|
| 3806 |
|
| 3807 | diff --git a/libphobos/configure b/libphobos/configure
|
| 3808 | index 9b6a41879..f4de8b556 100755
|
| 3809 | |
| 3810 | |
| 3811 | @@ -666,6 +666,8 @@ DCFG_ARM_EABI_UNWINDER
|
| 3812 | DCFG_THREAD_MODEL
|
| 3813 | DRUNTIME_OS_POSIX_FALSE
|
| 3814 | DRUNTIME_OS_POSIX_TRUE
|
| 3815 | +DRUNTIME_OS_HURD_FALSE
|
| 3816 | +DRUNTIME_OS_HURD_TRUE
|
| 3817 | DRUNTIME_OS_SOLARIS_FALSE
|
| 3818 | DRUNTIME_OS_SOLARIS_TRUE
|
| 3819 | DRUNTIME_OS_MINGW_FALSE
|
| 3820 | @@ -11867,7 +11869,7 @@ else
|
| 3821 | lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
| 3822 | lt_status=$lt_dlunknown
|
| 3823 | cat > conftest.$ac_ext <<_LT_EOF
|
| 3824 | -#line 11870 "configure"
|
| 3825 | +#line 11872 "configure"
|
| 3826 | #include "confdefs.h"
|
| 3827 |
|
| 3828 | #if HAVE_DLFCN_H
|
| 3829 | @@ -11973,7 +11975,7 @@ else
|
| 3830 | lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
| 3831 | lt_status=$lt_dlunknown
|
| 3832 | cat > conftest.$ac_ext <<_LT_EOF
|
| 3833 | -#line 11976 "configure"
|
| 3834 | +#line 11978 "configure"
|
| 3835 | #include "confdefs.h"
|
| 3836 |
|
| 3837 | #if HAVE_DLFCN_H
|
| 3838 | @@ -14433,6 +14435,9 @@ fi
|
| 3839 | mingw*) druntime_target_os_parsed="mingw"
|
| 3840 | ;;
|
| 3841 | *solaris*) druntime_target_os_parsed="solaris"
|
| 3842 | + ;;
|
| 3843 | + gnu*) druntime_target_os_parsed="hurd"
|
| 3844 | + ;;
|
| 3845 | esac
|
| 3846 | if test "$druntime_target_os_parsed" = "aix"; then
|
| 3847 | DRUNTIME_OS_AIX_TRUE=
|
| 3848 | @@ -14514,6 +14519,14 @@ else
|
| 3849 | DRUNTIME_OS_SOLARIS_FALSE=
|
| 3850 | fi
|
| 3851 |
|
| 3852 | + if test "$druntime_target_os_parsed" = "hurd"; then
|
| 3853 | + DRUNTIME_OS_HURD_TRUE=
|
| 3854 | + DRUNTIME_OS_HURD_FALSE='#'
|
| 3855 | +else
|
| 3856 | + DRUNTIME_OS_HURD_TRUE='#'
|
| 3857 | + DRUNTIME_OS_HURD_FALSE=
|
| 3858 | +fi
|
| 3859 | +
|
| 3860 |
|
| 3861 | druntime_target_posix="no"
|
| 3862 | case "$druntime_cv_target_os" in
|
| 3863 | @@ -16074,6 +16087,10 @@ if test -z "${DRUNTIME_OS_SOLARIS_TRUE}" && test -z "${DRUNTIME_OS_SOLARIS_FALSE
|
| 3864 | as_fn_error $? "conditional \"DRUNTIME_OS_SOLARIS\" was never defined.
|
| 3865 | Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
| 3866 | fi
|
| 3867 | +if test -z "${DRUNTIME_OS_HURD_TRUE}" && test -z "${DRUNTIME_OS_HURD_FALSE}"; then
|
| 3868 | + as_fn_error $? "conditional \"DRUNTIME_OS_HURD\" was never defined.
|
| 3869 | +Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
| 3870 | +fi
|
| 3871 | if test -z "${DRUNTIME_OS_POSIX_TRUE}" && test -z "${DRUNTIME_OS_POSIX_FALSE}"; then
|
| 3872 | as_fn_error $? "conditional \"DRUNTIME_OS_POSIX\" was never defined.
|
| 3873 | Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
| 3874 | diff --git a/libphobos/libdruntime/Makefile.in b/libphobos/libdruntime/Makefile.in
|
| 3875 | index b6d90362f..813a94cc4 100644
|
| 3876 | |
| 3877 | |
| 3878 | @@ -121,16 +121,17 @@ target_triplet = @target@
|
| 3879 | @DRUNTIME_OS_MINGW_TRUE@ config/mingw/msvc.c
|
| 3880 |
|
| 3881 | @DRUNTIME_OS_SOLARIS_TRUE@am__append_10 = $(DRUNTIME_DSOURCES_SOLARIS)
|
| 3882 | +@DRUNTIME_OS_HURD_TRUE@am__append_11 = $(DRUNTIME_DSOURCES_HURD)
|
| 3883 | # CPU specific sources
|
| 3884 | -@DRUNTIME_CPU_AARCH64_TRUE@am__append_11 = config/aarch64/switchcontext.S
|
| 3885 | -@DRUNTIME_CPU_ARM_TRUE@am__append_12 = config/arm/switchcontext.S
|
| 3886 | -@DRUNTIME_CPU_LOONGARCH_TRUE@am__append_13 = config/loongarch/switchcontext.S
|
| 3887 | -@DRUNTIME_CPU_MIPS_TRUE@am__append_14 = config/mips/switchcontext.S
|
| 3888 | -@DRUNTIME_CPU_POWERPC_TRUE@am__append_15 = config/powerpc/switchcontext.S
|
| 3889 | -@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_TRUE@am__append_16 = config/mingw/switchcontext.S
|
| 3890 | -@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_FALSE@am__append_17 = config/x86/switchcontext.S
|
| 3891 | -@DRUNTIME_CPU_SYSTEMZ_TRUE@am__append_18 = config/systemz/get_tls_offset.S
|
| 3892 | -@DRUNTIME_CPU_S390_TRUE@am__append_19 = config/s390/get_tls_offset.S
|
| 3893 | +@DRUNTIME_CPU_AARCH64_TRUE@am__append_12 = config/aarch64/switchcontext.S
|
| 3894 | +@DRUNTIME_CPU_ARM_TRUE@am__append_13 = config/arm/switchcontext.S
|
| 3895 | +@DRUNTIME_CPU_LOONGARCH_TRUE@am__append_14 = config/loongarch/switchcontext.S
|
| 3896 | +@DRUNTIME_CPU_MIPS_TRUE@am__append_15 = config/mips/switchcontext.S
|
| 3897 | +@DRUNTIME_CPU_POWERPC_TRUE@am__append_16 = config/powerpc/switchcontext.S
|
| 3898 | +@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_TRUE@am__append_17 = config/mingw/switchcontext.S
|
| 3899 | +@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_FALSE@am__append_18 = config/x86/switchcontext.S
|
| 3900 | +@DRUNTIME_CPU_SYSTEMZ_TRUE@am__append_19 = config/systemz/get_tls_offset.S
|
| 3901 | +@DRUNTIME_CPU_S390_TRUE@am__append_20 = config/s390/get_tls_offset.S
|
| 3902 | subdir = libdruntime
|
| 3903 | ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
| 3904 | am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
|
| 3905 | @@ -485,52 +486,58 @@ am__objects_23 = core/sys/solaris/dlfcn.lo core/sys/solaris/elf.lo \
|
| 3906 | core/sys/solaris/sys/procset.lo core/sys/solaris/sys/types.lo \
|
| 3907 | core/sys/solaris/time.lo
|
| 3908 | @DRUNTIME_OS_SOLARIS_TRUE@am__objects_24 = $(am__objects_23)
|
| 3909 | -@DRUNTIME_CPU_AARCH64_TRUE@am__objects_25 = config/aarch64/libgdruntime_la-switchcontext.lo
|
| 3910 | -@DRUNTIME_CPU_ARM_TRUE@am__objects_26 = config/arm/libgdruntime_la-switchcontext.lo
|
| 3911 | -@DRUNTIME_CPU_LOONGARCH_TRUE@am__objects_27 = config/loongarch/libgdruntime_la-switchcontext.lo
|
| 3912 | -@DRUNTIME_CPU_MIPS_TRUE@am__objects_28 = config/mips/libgdruntime_la-switchcontext.lo
|
| 3913 | -@DRUNTIME_CPU_POWERPC_TRUE@am__objects_29 = config/powerpc/libgdruntime_la-switchcontext.lo
|
| 3914 | -@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_TRUE@am__objects_30 = config/mingw/libgdruntime_la-switchcontext.lo
|
| 3915 | -@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_FALSE@am__objects_31 = config/x86/libgdruntime_la-switchcontext.lo
|
| 3916 | -@DRUNTIME_CPU_SYSTEMZ_TRUE@am__objects_32 = config/systemz/libgdruntime_la-get_tls_offset.lo
|
| 3917 | -@DRUNTIME_CPU_S390_TRUE@am__objects_33 = config/s390/libgdruntime_la-get_tls_offset.lo
|
| 3918 | -am__objects_34 = $(am__objects_6) $(am__objects_8) $(am__objects_10) \
|
| 3919 | +am__objects_25 = core/sys/hurd/config.lo core/sys/hurd/dlfcn.lo \
|
| 3920 | + core/sys/hurd/elf.lo core/sys/hurd/errno.lo \
|
| 3921 | + core/sys/hurd/execinfo.lo core/sys/hurd/link.lo \
|
| 3922 | + core/sys/hurd/sys/types.lo core/sys/hurd/time.lo \
|
| 3923 | + core/sys/hurd/unistd.lo
|
| 3924 | +@DRUNTIME_OS_HURD_TRUE@am__objects_26 = $(am__objects_25)
|
| 3925 | +@DRUNTIME_CPU_AARCH64_TRUE@am__objects_27 = config/aarch64/libgdruntime_la-switchcontext.lo
|
| 3926 | +@DRUNTIME_CPU_ARM_TRUE@am__objects_28 = config/arm/libgdruntime_la-switchcontext.lo
|
| 3927 | +@DRUNTIME_CPU_LOONGARCH_TRUE@am__objects_29 = config/loongarch/libgdruntime_la-switchcontext.lo
|
| 3928 | +@DRUNTIME_CPU_MIPS_TRUE@am__objects_30 = config/mips/libgdruntime_la-switchcontext.lo
|
| 3929 | +@DRUNTIME_CPU_POWERPC_TRUE@am__objects_31 = config/powerpc/libgdruntime_la-switchcontext.lo
|
| 3930 | +@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_TRUE@am__objects_32 = config/mingw/libgdruntime_la-switchcontext.lo
|
| 3931 | +@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_FALSE@am__objects_33 = config/x86/libgdruntime_la-switchcontext.lo
|
| 3932 | +@DRUNTIME_CPU_SYSTEMZ_TRUE@am__objects_34 = config/systemz/libgdruntime_la-get_tls_offset.lo
|
| 3933 | +@DRUNTIME_CPU_S390_TRUE@am__objects_35 = config/s390/libgdruntime_la-get_tls_offset.lo
|
| 3934 | +am__objects_36 = $(am__objects_6) $(am__objects_8) $(am__objects_10) \
|
| 3935 | $(am__objects_12) $(am__objects_14) $(am__objects_16) \
|
| 3936 | $(am__objects_18) $(am__objects_20) $(am__objects_22) \
|
| 3937 | - $(am__objects_24) $(am__objects_25) $(am__objects_26) \
|
| 3938 | - $(am__objects_27) $(am__objects_28) $(am__objects_29) \
|
| 3939 | - $(am__objects_30) $(am__objects_31) $(am__objects_32) \
|
| 3940 | - $(am__objects_33)
|
| 3941 | -am__objects_35 = gcc/config.lo gcc/libbacktrace.lo
|
| 3942 | -am__objects_36 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
|
| 3943 | - $(am__objects_4) $(am__objects_34) $(am__objects_35)
|
| 3944 | -am_libgdruntime_la_OBJECTS = $(am__objects_36)
|
| 3945 | + $(am__objects_24) $(am__objects_26) $(am__objects_27) \
|
| 3946 | + $(am__objects_28) $(am__objects_29) $(am__objects_30) \
|
| 3947 | + $(am__objects_31) $(am__objects_32) $(am__objects_33) \
|
| 3948 | + $(am__objects_34) $(am__objects_35)
|
| 3949 | +am__objects_37 = gcc/config.lo gcc/libbacktrace.lo
|
| 3950 | +am__objects_38 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
|
| 3951 | + $(am__objects_4) $(am__objects_36) $(am__objects_37)
|
| 3952 | +am_libgdruntime_la_OBJECTS = $(am__objects_38)
|
| 3953 | libgdruntime_la_OBJECTS = $(am_libgdruntime_la_OBJECTS)
|
| 3954 | am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
| 3955 | -am__objects_37 = core/stdc/libgdruntime_convenience_la-errno_.lo \
|
| 3956 | +am__objects_39 = core/stdc/libgdruntime_convenience_la-errno_.lo \
|
| 3957 | etc/valgrind/libgdruntime_convenience_la-valgrind_.lo
|
| 3958 | -@DRUNTIME_OS_MINGW_TRUE@am__objects_38 = $(am__objects_21) \
|
| 3959 | +@DRUNTIME_OS_MINGW_TRUE@am__objects_40 = $(am__objects_21) \
|
| 3960 | @DRUNTIME_OS_MINGW_TRUE@ config/mingw/libgdruntime_convenience_la-msvc.lo
|
| 3961 | -@DRUNTIME_CPU_AARCH64_TRUE@am__objects_39 = config/aarch64/libgdruntime_convenience_la-switchcontext.lo
|
| 3962 | -@DRUNTIME_CPU_ARM_TRUE@am__objects_40 = config/arm/libgdruntime_convenience_la-switchcontext.lo
|
| 3963 | -@DRUNTIME_CPU_LOONGARCH_TRUE@am__objects_41 = config/loongarch/libgdruntime_convenience_la-switchcontext.lo
|
| 3964 | -@DRUNTIME_CPU_MIPS_TRUE@am__objects_42 = config/mips/libgdruntime_convenience_la-switchcontext.lo
|
| 3965 | -@DRUNTIME_CPU_POWERPC_TRUE@am__objects_43 = config/powerpc/libgdruntime_convenience_la-switchcontext.lo
|
| 3966 | -@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_TRUE@am__objects_44 = config/mingw/libgdruntime_convenience_la-switchcontext.lo
|
| 3967 | -@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_FALSE@am__objects_45 = config/x86/libgdruntime_convenience_la-switchcontext.lo
|
| 3968 | -@DRUNTIME_CPU_SYSTEMZ_TRUE@am__objects_46 = config/systemz/libgdruntime_convenience_la-get_tls_offset.lo
|
| 3969 | -@DRUNTIME_CPU_S390_TRUE@am__objects_47 = config/s390/libgdruntime_convenience_la-get_tls_offset.lo
|
| 3970 | -am__objects_48 = $(am__objects_6) $(am__objects_8) $(am__objects_10) \
|
| 3971 | +@DRUNTIME_CPU_AARCH64_TRUE@am__objects_41 = config/aarch64/libgdruntime_convenience_la-switchcontext.lo
|
| 3972 | +@DRUNTIME_CPU_ARM_TRUE@am__objects_42 = config/arm/libgdruntime_convenience_la-switchcontext.lo
|
| 3973 | +@DRUNTIME_CPU_LOONGARCH_TRUE@am__objects_43 = config/loongarch/libgdruntime_convenience_la-switchcontext.lo
|
| 3974 | +@DRUNTIME_CPU_MIPS_TRUE@am__objects_44 = config/mips/libgdruntime_convenience_la-switchcontext.lo
|
| 3975 | +@DRUNTIME_CPU_POWERPC_TRUE@am__objects_45 = config/powerpc/libgdruntime_convenience_la-switchcontext.lo
|
| 3976 | +@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_TRUE@am__objects_46 = config/mingw/libgdruntime_convenience_la-switchcontext.lo
|
| 3977 | +@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_FALSE@am__objects_47 = config/x86/libgdruntime_convenience_la-switchcontext.lo
|
| 3978 | +@DRUNTIME_CPU_SYSTEMZ_TRUE@am__objects_48 = config/systemz/libgdruntime_convenience_la-get_tls_offset.lo
|
| 3979 | +@DRUNTIME_CPU_S390_TRUE@am__objects_49 = config/s390/libgdruntime_convenience_la-get_tls_offset.lo
|
| 3980 | +am__objects_50 = $(am__objects_6) $(am__objects_8) $(am__objects_10) \
|
| 3981 | $(am__objects_12) $(am__objects_14) $(am__objects_16) \
|
| 3982 | - $(am__objects_18) $(am__objects_20) $(am__objects_38) \
|
| 3983 | - $(am__objects_24) $(am__objects_39) $(am__objects_40) \
|
| 3984 | - $(am__objects_41) $(am__objects_42) $(am__objects_43) \
|
| 3985 | - $(am__objects_44) $(am__objects_45) $(am__objects_46) \
|
| 3986 | - $(am__objects_47)
|
| 3987 | -am__objects_49 = $(am__objects_1) $(am__objects_37) $(am__objects_3) \
|
| 3988 | - $(am__objects_4) $(am__objects_48) $(am__objects_35)
|
| 3989 | -am__objects_50 = $(am__objects_49)
|
| 3990 | -am_libgdruntime_convenience_la_OBJECTS = $(am__objects_50)
|
| 3991 | + $(am__objects_18) $(am__objects_20) $(am__objects_40) \
|
| 3992 | + $(am__objects_24) $(am__objects_26) $(am__objects_41) \
|
| 3993 | + $(am__objects_42) $(am__objects_43) $(am__objects_44) \
|
| 3994 | + $(am__objects_45) $(am__objects_46) $(am__objects_47) \
|
| 3995 | + $(am__objects_48) $(am__objects_49)
|
| 3996 | +am__objects_51 = $(am__objects_1) $(am__objects_39) $(am__objects_3) \
|
| 3997 | + $(am__objects_4) $(am__objects_50) $(am__objects_37)
|
| 3998 | +am__objects_52 = $(am__objects_51)
|
| 3999 | +am_libgdruntime_convenience_la_OBJECTS = $(am__objects_52)
|
| 4000 | libgdruntime_convenience_la_OBJECTS = \
|
| 4001 | $(am_libgdruntime_convenience_la_OBJECTS)
|
| 4002 | AM_V_P = $(am__v_P_@AM_V@)
|
| 4003 | @@ -794,6 +801,7 @@ ALL_DRUNTIME_INSTALL_DSOURCES = $(DRUNTIME_DSOURCES) \
|
| 4004 | $(DRUNTIME_DSOURCES_LINUX) $(DRUNTIME_DSOURCES_NETBSD) \
|
| 4005 | $(DRUNTIME_DSOURCES_OPENBSD) $(DRUNTIME_DSOURCES_POSIX) \
|
| 4006 | $(DRUNTIME_DSOURCES_SOLARIS) $(DRUNTIME_DSOURCES_WINDOWS) \
|
| 4007 | + $(DRUNTIME_DSOURCES_HURD) \
|
| 4008 | $(DRUNTIME_DSOURCES_GENERATED) $(DRUNTIME_DISOURCES) \
|
| 4009 | $(DRUNTIME_DSOURCES_ELF) $(DRUNTIME_DSOURCES_STDCXX)
|
| 4010 |
|
| 4011 | @@ -805,7 +813,7 @@ DRUNTIME_SOURCES_CONFIGURED = $(am__append_1) $(am__append_2) \
|
| 4012 | $(am__append_9) $(am__append_10) $(am__append_11) \
|
| 4013 | $(am__append_12) $(am__append_13) $(am__append_14) \
|
| 4014 | $(am__append_15) $(am__append_16) $(am__append_17) \
|
| 4015 | - $(am__append_18) $(am__append_19)
|
| 4016 | + $(am__append_18) $(am__append_19) $(am__append_20)
|
| 4017 |
|
| 4018 | # Provide __start_minfo, __stop_minfo if linker doesn't.
|
| 4019 | @DRUNTIME_OS_MINFO_BRACKETING_FALSE@DRTSTUFF = gcc/drtbegin.o gcc/drtend.o
|
| 4020 | @@ -1032,6 +1040,12 @@ DRUNTIME_DSOURCES_SOLARIS = core/sys/solaris/dlfcn.d \
|
| 4021 | core/sys/solaris/sys/procset.d core/sys/solaris/sys/types.d \
|
| 4022 | core/sys/solaris/time.d
|
| 4023 |
|
| 4024 | +DRUNTIME_DSOURCES_HURD = core/sys/hurd/config.d \
|
| 4025 | + core/sys/hurd/dlfcn.d core/sys/hurd/elf.d \
|
| 4026 | + core/sys/hurd/errno.d core/sys/hurd/execinfo.d \
|
| 4027 | + core/sys/hurd/link.d core/sys/hurd/sys/types.d \
|
| 4028 | + core/sys/hurd/time.d core/sys/hurd/unistd.d
|
| 4029 | +
|
| 4030 | DRUNTIME_DSOURCES_WINDOWS = core/sys/windows/accctrl.d \
|
| 4031 | core/sys/windows/aclapi.d core/sys/windows/aclui.d \
|
| 4032 | core/sys/windows/basetsd.d core/sys/windows/basetyps.d \
|
| 4033 | @@ -1953,6 +1967,21 @@ core/sys/solaris/sys/priocntl.lo: \
|
| 4034 | core/sys/solaris/sys/procset.lo: core/sys/solaris/sys/$(am__dirstamp)
|
| 4035 | core/sys/solaris/sys/types.lo: core/sys/solaris/sys/$(am__dirstamp)
|
| 4036 | core/sys/solaris/time.lo: core/sys/solaris/$(am__dirstamp)
|
| 4037 | +core/sys/hurd/$(am__dirstamp):
|
| 4038 | + @$(MKDIR_P) core/sys/hurd
|
| 4039 | + @: > core/sys/hurd/$(am__dirstamp)
|
| 4040 | +core/sys/hurd/config.lo: core/sys/hurd/$(am__dirstamp)
|
| 4041 | +core/sys/hurd/dlfcn.lo: core/sys/hurd/$(am__dirstamp)
|
| 4042 | +core/sys/hurd/elf.lo: core/sys/hurd/$(am__dirstamp)
|
| 4043 | +core/sys/hurd/errno.lo: core/sys/hurd/$(am__dirstamp)
|
| 4044 | +core/sys/hurd/execinfo.lo: core/sys/hurd/$(am__dirstamp)
|
| 4045 | +core/sys/hurd/link.lo: core/sys/hurd/$(am__dirstamp)
|
| 4046 | +core/sys/hurd/sys/$(am__dirstamp):
|
| 4047 | + @$(MKDIR_P) core/sys/hurd/sys
|
| 4048 | + @: > core/sys/hurd/sys/$(am__dirstamp)
|
| 4049 | +core/sys/hurd/sys/types.lo: core/sys/hurd/sys/$(am__dirstamp)
|
| 4050 | +core/sys/hurd/time.lo: core/sys/hurd/$(am__dirstamp)
|
| 4051 | +core/sys/hurd/unistd.lo: core/sys/hurd/$(am__dirstamp)
|
| 4052 | config/aarch64/$(am__dirstamp):
|
| 4053 | @$(MKDIR_P) config/aarch64
|
| 4054 | @: > config/aarch64/$(am__dirstamp)
|
| 4055 | @@ -2100,6 +2129,10 @@ mostlyclean-compile:
|
| 4056 | -rm -f core/sys/freebsd/netinet/*.lo
|
| 4057 | -rm -f core/sys/freebsd/sys/*.$(OBJEXT)
|
| 4058 | -rm -f core/sys/freebsd/sys/*.lo
|
| 4059 | + -rm -f core/sys/hurd/*.$(OBJEXT)
|
| 4060 | + -rm -f core/sys/hurd/*.lo
|
| 4061 | + -rm -f core/sys/hurd/sys/*.$(OBJEXT)
|
| 4062 | + -rm -f core/sys/hurd/sys/*.lo
|
| 4063 | -rm -f core/sys/linux/*.$(OBJEXT)
|
| 4064 | -rm -f core/sys/linux/*.lo
|
| 4065 | -rm -f core/sys/linux/linux/*.$(OBJEXT)
|
| 4066 | @@ -2284,6 +2317,8 @@ clean-libtool:
|
| 4067 | -rm -rf core/sys/freebsd/net/.libs core/sys/freebsd/net/_libs
|
| 4068 | -rm -rf core/sys/freebsd/netinet/.libs core/sys/freebsd/netinet/_libs
|
| 4069 | -rm -rf core/sys/freebsd/sys/.libs core/sys/freebsd/sys/_libs
|
| 4070 | + -rm -rf core/sys/hurd/.libs core/sys/hurd/_libs
|
| 4071 | + -rm -rf core/sys/hurd/sys/.libs core/sys/hurd/sys/_libs
|
| 4072 | -rm -rf core/sys/linux/.libs core/sys/linux/_libs
|
| 4073 | -rm -rf core/sys/linux/linux/.libs core/sys/linux/linux/_libs
|
| 4074 | -rm -rf core/sys/linux/netinet/.libs core/sys/linux/netinet/_libs
|
| 4075 | @@ -2450,6 +2485,8 @@ distclean-generic:
|
| 4076 | -rm -f core/sys/freebsd/net/$(am__dirstamp)
|
| 4077 | -rm -f core/sys/freebsd/netinet/$(am__dirstamp)
|
| 4078 | -rm -f core/sys/freebsd/sys/$(am__dirstamp)
|
| 4079 | + -rm -f core/sys/hurd/$(am__dirstamp)
|
| 4080 | + -rm -f core/sys/hurd/sys/$(am__dirstamp)
|
| 4081 | -rm -f core/sys/linux/$(am__dirstamp)
|
| 4082 | -rm -f core/sys/linux/linux/$(am__dirstamp)
|
| 4083 | -rm -f core/sys/linux/netinet/$(am__dirstamp)
|
| 4084 | --
|
| 4085 | 2.52.0
|
| 4086 |
|