Import lang/ldc, the LLVM D Compiler.

ok benoit@

The LDC project aims to provide a portable D programming language
compiler with modern optimization and code generation capabilities.
The compiler uses the official DMD frontend to support the latest D2
version and relies on the LLVM Core libraries for code generation.
This commit is contained in:
bcallah 2021-11-21 13:51:47 +00:00
parent 85adeee887
commit 5fafc47f5a
18 changed files with 1361 additions and 0 deletions

71
lang/ldc/Makefile Normal file
View File

@ -0,0 +1,71 @@
# $OpenBSD: Makefile,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
# You must create a bootstrap for each supported arch.
# Can use GDC to create said bootstrap compiler.
ONLY_FOR_ARCHS = amd64
V = 1.28.0
COMMENT = LLVM D Compiler
DISTFILES = ldc-${V}-src.tar.gz:0 \
ldc-${V}-bootstrap.tar.gz:1
PKGNAME = ldc-${V}
CATEGORIES = lang
HOMEPAGE = https://wiki.dlang.org/LDC
MAINTAINER = Brian Callahan <bcallah@openbsd.org>
# LDC: BSD
# Runtime libraries: Boost Software License 1.0
# Misc: Apache 2.0 with LLVM exceptions
PERMIT_PACKAGE = Yes
WANTLIB += ${COMPILER_LIBCXX} c m z
MASTER_SITES0 = https://github.com/ldc-developers/ldc/releases/download/v${V}/
MASTER_SITES1 = https://github.com/ibara/ldc/releases/download/bootstrap-${V}/
# C++14
COMPILER = base-clang ports-gcc
MODULES = devel/cmake
BUILD_DEPENDS = devel/llvm
RUN_DEPENDS = devel/llvm
# COMPILE_D_MODULES_SEPARATELY=ON lets ldc compile with sane memory limits.
CONFIGURE_ARGS = -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
-DCOMPILE_D_MODULES_SEPARATELY=ON \
-DLDC_DYNAMIC_COMPILE=OFF \
-DLDC_WITH_LLD=OFF \
-DLLVM_CONFIG="${LOCALBASE}/bin/llvm-config"
# Use a bootstrap compiler, similar to DMD.
CONFIGURE_ENV = DMD="${WRKDIR}/ldc-${V}-bootstrap/${MACHINE_ARCH}/ldmd2"
WRKDIST = ${WRKDIR}/ldc-${V}-src
# I put a vanilla ldc2.conf in the bootstrap tarball.
# This fixes it up for the specifics for each arch.
post-patch:
sed -i 's#/usr/local/include/d#${WRKDIR}/ldc-${V}-bootstrap/d#g' \
${WRKDIR}/ldc-${V}-bootstrap/${MACHINE_ARCH}/ldc2.conf
sed -i 's#"/usr/local/lib",#"/usr/local/lib","${WRKDIR}/ldc-${V}-bootstrap/${MACHINE_ARCH}",#g' \
${WRKDIR}/ldc-${V}-bootstrap/${MACHINE_ARCH}/ldc2.conf
# Same trick as with flang:
# Replace the shared LLVM.so library with the static libraries.
# Fixes runtime warnings about symbol size mismatches.
# Revisit on occasion (maybe these warning go away someday?)
post-configure:
sed -i \
's,-lLLVM-11,`${LOCALBASE}/bin/llvm-config --libs all --link-static --ignore-libllvm` -lz,g' \
${WRKBUILD}/build.ninja
# Move the default ldc2.conf to its proper packaging location.
post-install:
${INSTALL_DATA_DIR} ${PREFIX}/share/examples/ldc
mv ${PREFIX}/etc/ldc2.conf ${PREFIX}/share/examples/ldc
rm -rf ${PREFIX}/etc
.include <bsd.port.mk>

4
lang/ldc/distinfo Normal file
View File

@ -0,0 +1,4 @@
SHA256 (ldc-1.28.0-bootstrap.tar.gz) = poUGzPKLeyBbrEH4Gqak/5OLWK5IQnePezNSt0MHxKA=
SHA256 (ldc-1.28.0-src.tar.gz) = F/7ou1Nby4zaCkWUdSZVXEbARfMCpzScyHEbJU5Uzwk=
SIZE (ldc-1.28.0-bootstrap.tar.gz) = 41093692
SIZE (ldc-1.28.0-src.tar.gz) = 7923347

View File

@ -0,0 +1,38 @@
$OpenBSD: patch-driver_linker-gcc_cpp,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Taken from ports LLVM.
Index: driver/linker-gcc.cpp
--- driver/linker-gcc.cpp.orig
+++ driver/linker-gcc.cpp
@@ -422,7 +422,6 @@ void ArgsBuilder::addCppStdlibLinkFlags(const llvm::Tr
break;
case llvm::Triple::Solaris:
case llvm::Triple::NetBSD:
- case llvm::Triple::OpenBSD:
case llvm::Triple::DragonFly:
args.push_back("-lstdc++");
break;
@@ -432,6 +431,7 @@ void ArgsBuilder::addCppStdlibLinkFlags(const llvm::Tr
case llvm::Triple::WatchOS:
case llvm::Triple::TvOS:
case llvm::Triple::FreeBSD:
+ case llvm::Triple::OpenBSD:
args.push_back("-lc++");
break;
default:
@@ -663,11 +663,13 @@ void ArgsBuilder::addDefaultPlatformLibs() {
args.push_back("-lrt");
args.push_back("-ldl");
// fallthrough
+ case llvm::Triple::OpenBSD:
+ args.push_back("-lc++abi");
+ // fallthrough
case llvm::Triple::Darwin:
case llvm::Triple::MacOSX:
case llvm::Triple::FreeBSD:
case llvm::Triple::NetBSD:
- case llvm::Triple::OpenBSD:
case llvm::Triple::DragonFly:
addSoname = true;
args.push_back("-lpthread");

View File

@ -0,0 +1,16 @@
$OpenBSD: patch-driver_targetmachine_cpp,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Taken from ports LLVM.
Index: driver/targetmachine.cpp
--- driver/targetmachine.cpp.orig
+++ driver/targetmachine.cpp
@@ -432,6 +432,8 @@ createTargetMachine(const std::string targetTriple, co
// these OSes.
// On Android, PIC is default as well.
relocModel = llvm::Reloc::PIC_;
+ } else if (triple.isOSOpenBSD()) {
+ relocModel = llvm::Reloc::PIC_;
} else {
// ARM for other than Darwin or Android defaults to static
switch (triple.getArch()) {

View File

@ -0,0 +1,26 @@
$OpenBSD: patch-runtime_CMakeLists_txt,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Set proper DFLAGS.
Make sure C parts are built as PIC.
Index: runtime/CMakeLists.txt
--- runtime/CMakeLists.txt.orig
+++ runtime/CMakeLists.txt
@@ -37,7 +37,7 @@ set(MULTILIB OFF
set(BUILD_LTO_LIBS OFF CACHE BOOL "Also build the runtime as LLVM bitcode libraries for LTO")
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/d CACHE PATH "Path to install D modules to")
set(BUILD_SHARED_LIBS AUTO CACHE STRING "Whether to build the runtime as a shared library (ON|OFF|BOTH)")
-set(D_FLAGS -w;-de;-dip1000;-preview=dtorfields CACHE STRING "Runtime D compiler flags, separated by ';'")
+set(D_FLAGS --relocation-model=pic;-w;-de;-dip1000;-preview=dtorfields CACHE STRING "Runtime D compiler flags, separated by ';'")
set(D_EXTRA_FLAGS "" CACHE STRING "Runtime extra D compiler flags, separated by ';'")
set(D_FLAGS_DEBUG -g;-link-defaultlib-debug;-d-debug CACHE STRING "Runtime D compiler flags (debug libraries), separated by ';'")
set(D_FLAGS_RELEASE -O3;-release CACHE STRING "Runtime D compiler flags (release libraries), separated by ';'")
@@ -620,7 +620,7 @@ function(set_common_library_properties target name out
# linker default on Ubuntu 16.10 and above. As we might be building on an
# older system (e.g. binary packages), we need to make sure the C parts are
# built as PIC as well.
- if("${TARGET_SYSTEM}" MATCHES "Linux")
+ if("${TARGET_SYSTEM}" MATCHES "Linux|OpenBSD")
set_target_properties(${target} PROPERTIES
POSITION_INDEPENDENT_CODE ON)
endif()

View File

@ -0,0 +1,26 @@
$OpenBSD: patch-runtime_druntime_src_core_sys_openbsd_sys_link_elf_d,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Fake it 'til you make it.
Index: runtime/druntime/src/core/sys/openbsd/sys/link_elf.d
--- runtime/druntime/src/core/sys/openbsd/sys/link_elf.d.orig
+++ runtime/druntime/src/core/sys/openbsd/sys/link_elf.d
@@ -10,6 +10,7 @@ version (OpenBSD):
extern (C) nothrow @system:
+import core.stdc.stdint : uint64_t;
import core.sys.posix.config;
import core.sys.posix.sys.types;
import core.sys.openbsd.sys.elf;
@@ -55,6 +56,10 @@ struct dl_phdr_info
char* dlpi_name;
ElfW!"Phdr"* dlpi_phdr;
ElfW!"Half" dlpi_phnum;
+ uint64_t dlpi_adds;
+ uint64_t dlpi_subs;
+ size_t dlpi_tls_modid;
+ void* dlpi_tls_data;
}

View File

@ -0,0 +1,21 @@
$OpenBSD: patch-runtime_druntime_src_core_sys_posix_sys_filio_d,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Index: runtime/druntime/src/core/sys/posix/sys/filio.d
--- runtime/druntime/src/core/sys/posix/sys/filio.d.orig
+++ runtime/druntime/src/core/sys/posix/sys/filio.d
@@ -34,3 +34,15 @@ version (Darwin)
enum uint FIOGETOWN = _IOR!(int)('f', 123); // get owner
enum uint FIODTYPE = _IOR!(int)('f', 122); // get d_type
}
+
+version (OpenBSD)
+{
+ // File-descriptor ioctl's
+ enum uint FIOCLEX = _IO('f', 1); // set close on exec on fd
+ enum uint FIONCLEX = _IO('f', 2); // remove close on exec
+ enum uint FIONREAD = _IOR!(int)('f', 127); // get # bytes to read
+ enum uint FIONBIO = _IOW!(int)('f', 126); // set/clear non-blocking i/o
+ enum uint FIOASYNC = _IOW!(int)('f', 125); // set/clear async i/o
+ enum uint FIOSETOWN = _IOW!(int)('f', 124); // set owner
+ enum uint FIOGETOWN = _IOR!(int)('f', 123); // get owner
+}

View File

@ -0,0 +1,65 @@
$OpenBSD: patch-runtime_druntime_src_core_sys_posix_sys_ioccom_d,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Index: runtime/druntime/src/core/sys/posix/sys/ioccom.d
--- runtime/druntime/src/core/sys/posix/sys/ioccom.d.orig
+++ runtime/druntime/src/core/sys/posix/sys/ioccom.d
@@ -137,3 +137,59 @@ else version (FreeBSD)
return _IOC(IOC_INOUT, cast(uint)g, cast(uint)n, T.sizeof);
}
}
+else version (OpenBSD)
+{
+ /* OpenBSD ioctl's encode the command in the lower 16-bits
+ * and the size of any in/out parameters in the lower 13 bits of the upper
+ * 16-bits of a 32 bit unsigned integer. The high 3 bits of the upper
+ * 16-bits encode the in/out status of the parameter.
+ */
+ enum uint IOCPARM_MASK = 0x1fff; // parameter length mask
+ uint IOCPARM_LEN(uint x) // to extract the encoded parameter length
+ {
+ return ((x >> 16) & IOCPARM_MASK);
+ }
+ uint IOCBASECMD(uint x) // to extract the encoded command
+ {
+ return (x & ~(IOCPARM_MASK << 16));
+ }
+ uint IOCGROUP(uint x) // to extract the encoded group
+ {
+ return ((x >> 8) & 0xff);
+ }
+
+ enum uint IOCPARM_MAX = (1 << 12); // max size of ioctl args
+
+ enum uint IOC_VOID = 0x20000000; // no parameters
+ enum uint IOC_OUT = 0x40000000; // copy parameters back
+ enum uint IOC_IN = 0x80000000; // copy parameters into
+ enum uint IOC_INOUT = (IOC_IN | IOC_OUT);
+ enum uint IOC_DIRMASK = 0xe0000000;
+
+ // encode the ioctl info into 32 bits
+ uint _IOC(uint inorout, uint group, uint num, size_t len)
+ {
+ return (inorout | ((len & IOCPARM_MASK) << 16) | (group << 8) | num);
+ }
+
+ // encode a command with no parameters
+ uint _IO(char g, int n)
+ {
+ return _IOC(IOC_VOID, cast(uint)g, cast(uint)n, cast(size_t)0);
+ }
+ // encode a command that returns info
+ uint _IOR(T)(char g, int n)
+ {
+ return _IOC(IOC_OUT, cast(uint)g, cast(uint)n, T.sizeof);
+ }
+ // encode a command that takes info
+ uint _IOW(T)(char g, int n)
+ {
+ return _IOC(IOC_IN, cast(uint)g, cast(uint)n, T.sizeof);
+ }
+ // encode a command that takes info and returns info
+ uint _IOWR(T)(char g, int n)
+ {
+ return _IOC(IOC_INOUT, cast(uint)g, cast(uint)n, T.sizeof);
+ }
+}

View File

@ -0,0 +1,26 @@
$OpenBSD: patch-runtime_druntime_src_core_sys_posix_sys_ioctl_d,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Index: runtime/druntime/src/core/sys/posix/sys/ioctl.d
--- runtime/druntime/src/core/sys/posix/sys/ioctl.d.orig
+++ runtime/druntime/src/core/sys/posix/sys/ioctl.d
@@ -375,6 +375,11 @@ else version (NetBSD)
}
else version (OpenBSD)
{
+ import core.sys.posix.termios; // termios
+ import core.sys.posix.sys.time; // timeval
+
+ public import core.sys.posix.sys.ttycom; // Terminal related ioctls
+
struct winsize
{
ushort ws_row;
@@ -382,6 +387,8 @@ else version (OpenBSD)
ushort ws_xpixel;
ushort ws_ypixel;
}
+
+ public import core.sys.posix.sys.filio; // File related ioctls
int ioctl(int, c_ulong, ...);
}

View File

@ -0,0 +1,15 @@
$OpenBSD: patch-runtime_druntime_src_core_sys_posix_sys_mman_d,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Fibers need mmap(2) MAP_STACK.
Index: runtime/druntime/src/core/sys/posix/sys/mman.d
--- runtime/druntime/src/core/sys/posix/sys/mman.d.orig
+++ runtime/druntime/src/core/sys/posix/sys/mman.d
@@ -460,6 +460,7 @@ else version (OpenBSD)
enum MAP_PRIVATE = 0x0002;
enum MAP_FIXED = 0x0010;
enum MAP_ANON = 0x1000;
+ enum MAP_STACK = 0x4000;
enum MAP_FAILED = cast(void*)-1;

View File

@ -0,0 +1,110 @@
$OpenBSD: patch-runtime_druntime_src_core_sys_posix_sys_ttycom_d,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Index: runtime/druntime/src/core/sys/posix/sys/ttycom.d
--- runtime/druntime/src/core/sys/posix/sys/ttycom.d.orig
+++ runtime/druntime/src/core/sys/posix/sys/ttycom.d
@@ -214,3 +214,104 @@ else version (FreeBSD)
enum uint NETGRAPHDISC = 6; // Netgraph tty node discipline
enum uint H4DISC = 7; // Netgraph Blutooth H4 discipline
}
+else version (OpenBSD)
+{
+ struct winsize {
+ ushort ws_row; // rows, in characters
+ ushort ws_col; // columns, in characters
+ ushort ws_xpixel; // horizontal size, pixels
+ ushort ws_ypixel; // vertical size, pixels
+ }
+
+ struct tstamps {
+ int ts_set; // TIOCM_CAR and/or TIOCM_CTS
+ int ts_clr;
+ }
+
+ // Serial/TTY ioctl's
+ // 0-2 compat
+ // 3-7 unused
+ // 8-10 compat
+ // 11-12 unused
+ enum uint TIOCEXCL = _IO('t', 13); // set exclusive use of tty
+ enum uint TIOCNXCL = _IO('t', 14); // reset exclusive use of tty
+ enum uint TIOCFLUSH = _IOW!(int)('t', 16); // flush buffers
+ // 17-18 compat
+ enum uint TIOCGETA = _IOR!(termios)('t', 19); // get termios struct
+ enum uint TIOCSETA = _IOW!(termios)('t', 20); // set termios struct
+ enum uint TIOCSETAW = _IOW!(termios)('t', 21); // drain output, set
+ enum uint TIOCSETAF = _IOW!(termios)('t', 22); // drn out, fls in, set
+ // 23-25 unused
+ enum uint TIOCGETD = _IOR!(int)('t', 26); // get line discipline
+ enum uint TIOCSETD = _IOW!(int)('t', 27); // set line discipline
+ enum uint TIOCSETVERAUTH = _IOW!(int)('t', 28); // set verified auth
+ enum uint TIOCCLRVERAUTH = _IO('t', 29); // clear verified auth
+ enum uint TIOCCHKVERAUTH = _IO('t', 30); // check verified auth
+ // 31-89 unused
+ enum uint TIOCSTSTAMP = _IOW!(tstamps)('t', 90); // timestamp reasons
+ enum uint TIOCGTSTAMP = _IOR!(timeval)('t', 91); // get timestamp
+ // 92-93 device flags
+ enum uint TIOCSFLAGS = _IOW!(int)('t', 92); // set device flags
+ enum uint TIOCGFLAGS = _IOR!(int)('t', 93); // get device flags
+ // 94-97 conflicts: tun and tap
+ enum uint TIOCDRAIN = _IO('t', 94); // wait till output drained
+ enum uint TIOCSIG = _IOW!(int)('t', 95); // pty: generate signal
+ enum uint TIOCEXT = _IOW!(int)('t', 96); // pty: external processing
+ enum uint TIOCSCTTY = _IO('t', 97); // become controlling tty
+ enum uint TIOCCONS = _IOW!(int)('t', 98); // become virtual console
+ enum uint TIOCGSID = _IOR!(int)('t', 99); // get session id
+ // 100 unused
+ enum uint TIOCSTAT = _IO('t', 101); // simulate ^T status message
+ enum uint TIOCUCNTL = _IOW!(int)('t', 102); // pty: set/clr usr cntl mode
+ enum uint UIOCCMD(n) = _IO('u', n); // usr cntl op "n"
+ enum uint TIOCSWINSZ = _IOW!(winsize)('t', 103); // set window size
+ enum uint TIOCGWINSZ = _IOR!(winsize)('t', 104); // get window size
+ enum uint TIOCREMOTE = _IOW!(int)('t', 105); // remote input editing
+ enum uint TIOCMGET = _IOR!(int)('t', 106); // get all modem bits
+ enum uint TIOCM_LE = 0x01; // line enable
+ enum uint TIOCM_DTR = 0x02; // data terminal ready
+ enum uint TIOCM_RTS = 0x04; // request to send
+ enum uint TIOCM_ST = 0x08; // secondary transmit
+ enum uint TIOCM_SR = 0x10; // secondary receive
+ enum uint TIOCM_CTS = 0x20; // clear to send
+ enum uint TIOCM_CAR = 0x40; // carrier detect
+ enum uint TIOCM_RNG = 0x80; // ring
+ enum uint TIOCM_DSR = 0x100; // data set ready
+ enum uint TIOCM_CD = TIOCM_CAR;
+ enum uint TIOCM_RI = TIOCM_RNG;
+ enum uint TIOCMBIC = _IOW!(int)('t', 107); // bic modem bits
+ enum uint TIOCMBIS = _IOW!(int)('t', 108); // bis modem bits
+ enum uint TIOCMSET = _IOW!(int)('t', 109); // set all modem bits
+ enum uint TIOCSTART = _IO('t', 110); // start output like ^Q
+ enum uint TIOCSTOP = _IO('t', 111); // stop output like ^S
+ enum uint TIOCPKT = _IOW!(int)('t', 112); // pty: set/clr packet mode
+ enum uint TIOCPKT_DATA = 0x00; // data packet
+ enum uint TIOCPKT_FLUSHREAD = 0x01; // flush packet
+ enum uint TIOCPKT_FLUSHWRITE = 0x02; // flush packet
+ enum uint TIOCPKT_STOP = 0x04; // stop output
+ enum uint TIOCPKT_START = 0x08; // start output
+ enum uint TIOCPKT_NOSTOP = 0x10; // no more ^S, ^Q
+ enum uint TIOCPKT_DOSTOP = 0x20; // now do ^S, ^Q
+ enum uint TIOCPKT_IOCTL = 0x40; // state change of pty driver
+ enum uint TIOCNOTTY = _IO('t', 113); // void tty association
+ // 114 unused
+ enum uint TIOCOUTQ = _IOR!(int)('t', 115); // output queue size
+ // 116-117 compat
+ enum uint TIOCSPGRP = _IOW!(int)('t', 118); // set pgrp of tty
+ enum uint TIOCGPGRP = _IOR!(int)('t', 119); // get pgrp of tty
+
+ enum uint TIOCCDTR = _IO('t', 120); // clear data terminal ready
+ enum uint TIOCSDTR = _IO('t', 121); // set data terminal ready
+ enum uint TIOCCBRK = _IO('t', 122); // clear break bit
+ enum uint TIOCSBRK = _IO('t', 123); // set break bit
+ // 124-127 compat
+
+ enum uint TTYDISC = 0; // termios tty line discipline
+ enum uint TABLDISC = 3; // tablet description
+ enum uint SLIPDISC = 4; // serial IP discipline
+ enum uint PPPDISC = 5; // PPP discipline
+ enum uint STRIPDISC = 6; // metricom wireless IP discipline
+ enum uint NMEADISC = 7; // NMEA0183 discipline
+ enum uint MSTSDISC = 8; // Meinberg time string discipline
+ enum uint ENDRUNDISC = 9; // Endrun time format discipline
+}

View File

@ -0,0 +1,22 @@
$OpenBSD: patch-runtime_druntime_src_core_thread_fiber_d,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Fibers need mmap(2) MAP_STACK.
Index: runtime/druntime/src/core/thread/fiber.d
--- runtime/druntime/src/core/thread/fiber.d.orig
+++ runtime/druntime/src/core/thread/fiber.d
@@ -1254,10 +1254,13 @@ class Fiber (private)
// Allocate more for the memory guard
sz += guardPageSize;
+ int mmap_flags = MAP_PRIVATE | MAP_ANON;
+ version (OpenBSD)
+ mmap_flags |= MAP_STACK;
m_pmem = mmap( null,
sz,
PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_ANON,
+ mmap_flags,
-1,
0 );
if ( m_pmem == MAP_FAILED )

View File

@ -0,0 +1,18 @@
$OpenBSD: patch-runtime_druntime_src_rt_dmain2_d,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Add OpenBSD.
Index: runtime/druntime/src/rt/dmain2.d
--- runtime/druntime/src/rt/dmain2.d.orig
+++ runtime/druntime/src/rt/dmain2.d
@@ -44,6 +44,10 @@ version (NetBSD)
{
import core.stdc.fenv;
}
+version (OpenBSD)
+{
+ import core.stdc.fenv;
+}
version (DragonFlyBSD)
{
import core.stdc.fenv;

View File

@ -0,0 +1,21 @@
$OpenBSD: patch-runtime_druntime_src_rt_sections_d,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Index: runtime/druntime/src/rt/sections.d
--- runtime/druntime/src/rt/sections.d.orig
+++ runtime/druntime/src/rt/sections.d
@@ -31,14 +31,7 @@ else version (FreeBSD)
else version (NetBSD)
public import rt.sections_elf_shared;
else version (OpenBSD)
-{
- /**
- * OpenBSD is missing support needed for elf_shared.
- * See the top of sections_solaris.d for more info.
- */
-
- public import rt.sections_solaris;
-}
+ public import rt.sections_elf_shared;
else version (DragonFlyBSD)
public import rt.sections_elf_shared;
else version (Solaris)

View File

@ -0,0 +1,91 @@
$OpenBSD: patch-runtime_druntime_src_rt_sections_elf_shared_d,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Index: runtime/druntime/src/rt/sections_elf_shared.d
--- runtime/druntime/src/rt/sections_elf_shared.d.orig
+++ runtime/druntime/src/rt/sections_elf_shared.d
@@ -23,6 +23,7 @@ version (CRuntime_Glibc) enum SharedELF = true;
else version (CRuntime_Musl) enum SharedELF = true;
else version (FreeBSD) enum SharedELF = true;
else version (NetBSD) enum SharedELF = true;
+else version (OpenBSD) enum SharedELF = true;
else version (DragonFlyBSD) enum SharedELF = true;
else version (CRuntime_UClibc) enum SharedELF = true;
else enum SharedELF = false;
@@ -78,6 +79,12 @@ else version (NetBSD)
import core.sys.netbsd.sys.elf;
import core.sys.netbsd.sys.link_elf;
}
+else version (OpenBSD)
+{
+ import core.sys.openbsd.dlfcn;
+ import core.sys.openbsd.sys.elf;
+ import core.sys.openbsd.sys.link_elf;
+}
else version (DragonFlyBSD)
{
import core.sys.dragonflybsd.dlfcn;
@@ -212,6 +219,7 @@ __gshared bool _isRuntimeInitialized;
version (FreeBSD) private __gshared void* dummy_ref;
version (DragonFlyBSD) private __gshared void* dummy_ref;
version (NetBSD) private __gshared void* dummy_ref;
+version (OpenBSD) private __gshared void* dummy_ref;
/****
* Gets called on program startup just before GC is initialized.
@@ -223,6 +231,7 @@ void initSections() nothrow @nogc
version (FreeBSD) dummy_ref = &_d_dso_registry;
version (DragonFlyBSD) dummy_ref = &_d_dso_registry;
version (NetBSD) dummy_ref = &_d_dso_registry;
+ version (OpenBSD) dummy_ref = &_d_dso_registry;
}
@@ -397,6 +406,7 @@ else (private)
version (FreeBSD) deprecated extern (C) __gshared void* _Dmodule_ref;
version (DragonFlyBSD) deprecated extern (C) __gshared void* _Dmodule_ref;
version (NetBSD) deprecated extern (C) __gshared void* _Dmodule_ref;
+version (OpenBSD) deprecated extern (C) __gshared void* _Dmodule_ref;
version (Shared)
{
@@ -933,6 +943,8 @@ version (Shared)
enum relocate = true;
else version (NetBSD)
enum relocate = true;
+ else version (OpenBSD)
+ enum relocate = true;
else version (DragonFlyBSD)
enum relocate = true;
else
@@ -1153,18 +1165,18 @@ version (LDC)
version (PPC)
{
extern(C) void* __tls_get_addr_opt(tls_index* ti) nothrow @nogc;
- alias __tls_get_addr = __tls_get_addr_opt;
+ alias __emutls_get_address = __tls_get_addr_opt;
}
else version (PPC64)
{
extern(C) void* __tls_get_addr_opt(tls_index* ti) nothrow @nogc;
- alias __tls_get_addr = __tls_get_addr_opt;
+ alias __emutls_get_address = __tls_get_addr_opt;
}
else
- extern(C) void* __tls_get_addr(tls_index* ti) nothrow @nogc;
+ extern(C) void* __emutls_get_address(tls_index* ti) nothrow @nogc;
}
else
-extern(C) void* __tls_get_addr(tls_index* ti) nothrow @nogc;
+extern(C) void* __emutls_get_address(tls_index* ti) nothrow @nogc;
/* The dynamic thread vector (DTV) pointers may point 0x8000 past the start of
* each TLS block. This is at least true for PowerPC and Mips platforms.
@@ -1234,7 +1246,7 @@ void[] getTLSRange(size_t mod, size_t sz) nothrow @nog
// base offset
auto ti = tls_index(mod, 0);
- return (__tls_get_addr(&ti)-TLS_DTV_OFFSET)[0 .. sz];
+ return (__emutls_get_address(&ti)-TLS_DTV_OFFSET)[0 .. sz];
}
}

View File

@ -0,0 +1,15 @@
$OpenBSD: patch-runtime_druntime_src_rt_sections_ldc_d,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
Add OpenBSD.
Index: runtime/druntime/src/rt/sections_ldc.d
--- runtime/druntime/src/rt/sections_ldc.d.orig
+++ runtime/druntime/src/rt/sections_ldc.d
@@ -30,6 +30,7 @@ else version (Darwin) {}
else version (FreeBSD) {}
else version (DragonFlyBSD) {}
else version (NetBSD) {}
+else version (OpenBSD) {}
else version (Windows) {}
else version (LDC):

4
lang/ldc/pkg/DESCR Normal file
View File

@ -0,0 +1,4 @@
The LDC project aims to provide a portable D programming language
compiler with modern optimization and code generation capabilities.
The compiler uses the official DMD frontend to support the latest D2
version and relies on the LLVM Core libraries for code generation.

772
lang/ldc/pkg/PLIST Normal file
View File

@ -0,0 +1,772 @@
@comment $OpenBSD: PLIST,v 1.1.1.1 2021/11/21 13:51:47 bcallah Exp $
@bin bin/ldc-build-runtime
@bin bin/ldc-profdata
@bin bin/ldc-prune-cache
@bin bin/ldc2
@bin bin/ldmd2
include/d/
include/d/core/
include/d/core/atomic.d
include/d/core/attribute.d
include/d/core/bitop.d
include/d/core/builtins.d
include/d/core/checkedint.d
include/d/core/cpuid.d
include/d/core/demangle.d
include/d/core/exception.d
include/d/core/gc/
include/d/core/gc/config.d
include/d/core/gc/gcinterface.d
include/d/core/gc/registry.d
include/d/core/internal/
include/d/core/internal/abort.d
include/d/core/internal/array/
include/d/core/internal/array/appending.d
include/d/core/internal/array/capacity.d
include/d/core/internal/array/casting.d
include/d/core/internal/array/comparison.d
include/d/core/internal/array/concatenation.d
include/d/core/internal/array/construction.d
include/d/core/internal/array/equality.d
include/d/core/internal/array/operations.d
include/d/core/internal/array/utils.d
include/d/core/internal/atomic.d
include/d/core/internal/attributes.d
include/d/core/internal/backtrace/
include/d/core/internal/backtrace/dwarf.d
include/d/core/internal/backtrace/elf.d
include/d/core/internal/backtrace/handler.d
include/d/core/internal/backtrace/libunwind.d
include/d/core/internal/backtrace/macho.d
include/d/core/internal/backtrace/unwind.d
include/d/core/internal/container/
include/d/core/internal/container/array.d
include/d/core/internal/container/common.d
include/d/core/internal/container/hashtab.d
include/d/core/internal/container/treap.d
include/d/core/internal/convert.d
include/d/core/internal/dassert.d
include/d/core/internal/destruction.d
include/d/core/internal/elf/
include/d/core/internal/elf/dl.d
include/d/core/internal/elf/io.d
include/d/core/internal/entrypoint.d
include/d/core/internal/execinfo.d
include/d/core/internal/gc/
include/d/core/internal/gc/bits.d
include/d/core/internal/gc/impl/
include/d/core/internal/gc/impl/conservative/
include/d/core/internal/gc/impl/conservative/gc.d
include/d/core/internal/gc/impl/manual/
include/d/core/internal/gc/impl/manual/gc.d
include/d/core/internal/gc/impl/proto/
include/d/core/internal/gc/impl/proto/gc.d
include/d/core/internal/gc/os.d
include/d/core/internal/gc/pooltable.d
include/d/core/internal/gc/proxy.d
include/d/core/internal/hash.d
include/d/core/internal/lifetime.d
include/d/core/internal/moving.d
include/d/core/internal/parseoptions.d
include/d/core/internal/postblit.d
include/d/core/internal/qsort.d
include/d/core/internal/spinlock.d
include/d/core/internal/string.d
include/d/core/internal/switch_.d
include/d/core/internal/traits.d
include/d/core/internal/utf.d
include/d/core/internal/util/
include/d/core/internal/util/array.d
include/d/core/internal/util/math.d
include/d/core/internal/vararg/
include/d/core/internal/vararg/aarch64.d
include/d/core/internal/vararg/sysv_x64.d
include/d/core/lifetime.d
include/d/core/math.d
include/d/core/memory.d
include/d/core/runtime.d
include/d/core/simd.d
include/d/core/stdc/
include/d/core/stdc/assert_.d
include/d/core/stdc/complex.d
include/d/core/stdc/config.d
include/d/core/stdc/ctype.d
include/d/core/stdc/errno.d
include/d/core/stdc/fenv.d
include/d/core/stdc/float_.d
include/d/core/stdc/inttypes.d
include/d/core/stdc/limits.d
include/d/core/stdc/locale.d
include/d/core/stdc/math.d
include/d/core/stdc/signal.d
include/d/core/stdc/stdarg.d
include/d/core/stdc/stddef.d
include/d/core/stdc/stdint.d
include/d/core/stdc/stdio.d
include/d/core/stdc/stdlib.d
include/d/core/stdc/string.d
include/d/core/stdc/tgmath.d
include/d/core/stdc/time.d
include/d/core/stdc/wchar_.d
include/d/core/stdc/wctype.d
include/d/core/stdcpp/
include/d/core/stdcpp/allocator.d
include/d/core/stdcpp/array.d
include/d/core/stdcpp/exception.d
include/d/core/stdcpp/memory.d
include/d/core/stdcpp/new_.d
include/d/core/stdcpp/string.d
include/d/core/stdcpp/string_view.d
include/d/core/stdcpp/type_traits.d
include/d/core/stdcpp/typeinfo.d
include/d/core/stdcpp/utility.d
include/d/core/stdcpp/vector.d
include/d/core/stdcpp/xutility.d
include/d/core/sync/
include/d/core/sync/barrier.d
include/d/core/sync/condition.d
include/d/core/sync/config.d
include/d/core/sync/event.d
include/d/core/sync/exception.d
include/d/core/sync/mutex.d
include/d/core/sync/rwmutex.d
include/d/core/sync/semaphore.d
include/d/core/sys/
include/d/core/sys/bionic/
include/d/core/sys/bionic/err.d
include/d/core/sys/bionic/fcntl.d
include/d/core/sys/bionic/stdlib.d
include/d/core/sys/bionic/string.d
include/d/core/sys/bionic/unistd.d
include/d/core/sys/darwin/
include/d/core/sys/darwin/crt_externs.d
include/d/core/sys/darwin/dlfcn.d
include/d/core/sys/darwin/err.d
include/d/core/sys/darwin/execinfo.d
include/d/core/sys/darwin/fcntl.d
include/d/core/sys/darwin/ifaddrs.d
include/d/core/sys/darwin/mach/
include/d/core/sys/darwin/mach/dyld.d
include/d/core/sys/darwin/mach/getsect.d
include/d/core/sys/darwin/mach/kern_return.d
include/d/core/sys/darwin/mach/loader.d
include/d/core/sys/darwin/mach/nlist.d
include/d/core/sys/darwin/mach/port.d
include/d/core/sys/darwin/mach/semaphore.d
include/d/core/sys/darwin/mach/stab.d
include/d/core/sys/darwin/mach/thread_act.d
include/d/core/sys/darwin/netinet/
include/d/core/sys/darwin/netinet/in_.d
include/d/core/sys/darwin/pthread.d
include/d/core/sys/darwin/stdlib.d
include/d/core/sys/darwin/string.d
include/d/core/sys/darwin/sys/
include/d/core/sys/darwin/sys/attr.d
include/d/core/sys/darwin/sys/cdefs.d
include/d/core/sys/darwin/sys/event.d
include/d/core/sys/darwin/sys/mman.d
include/d/core/sys/darwin/sys/sysctl.d
include/d/core/sys/dragonflybsd/
include/d/core/sys/dragonflybsd/dlfcn.d
include/d/core/sys/dragonflybsd/err.d
include/d/core/sys/dragonflybsd/execinfo.d
include/d/core/sys/dragonflybsd/netinet/
include/d/core/sys/dragonflybsd/netinet/in_.d
include/d/core/sys/dragonflybsd/pthread_np.d
include/d/core/sys/dragonflybsd/stdlib.d
include/d/core/sys/dragonflybsd/string.d
include/d/core/sys/dragonflybsd/sys/
include/d/core/sys/dragonflybsd/sys/_bitset.d
include/d/core/sys/dragonflybsd/sys/_cpuset.d
include/d/core/sys/dragonflybsd/sys/cdefs.d
include/d/core/sys/dragonflybsd/sys/elf.d
include/d/core/sys/dragonflybsd/sys/elf32.d
include/d/core/sys/dragonflybsd/sys/elf64.d
include/d/core/sys/dragonflybsd/sys/elf_common.d
include/d/core/sys/dragonflybsd/sys/event.d
include/d/core/sys/dragonflybsd/sys/link_elf.d
include/d/core/sys/dragonflybsd/sys/mman.d
include/d/core/sys/dragonflybsd/sys/socket.d
include/d/core/sys/dragonflybsd/sys/sysctl.d
include/d/core/sys/dragonflybsd/time.d
include/d/core/sys/freebsd/
include/d/core/sys/freebsd/config.d
include/d/core/sys/freebsd/dlfcn.d
include/d/core/sys/freebsd/err.d
include/d/core/sys/freebsd/execinfo.d
include/d/core/sys/freebsd/netinet/
include/d/core/sys/freebsd/netinet/in_.d
include/d/core/sys/freebsd/pthread_np.d
include/d/core/sys/freebsd/stdlib.d
include/d/core/sys/freebsd/string.d
include/d/core/sys/freebsd/sys/
include/d/core/sys/freebsd/sys/_bitset.d
include/d/core/sys/freebsd/sys/_cpuset.d
include/d/core/sys/freebsd/sys/cdefs.d
include/d/core/sys/freebsd/sys/elf.d
include/d/core/sys/freebsd/sys/elf32.d
include/d/core/sys/freebsd/sys/elf64.d
include/d/core/sys/freebsd/sys/elf_common.d
include/d/core/sys/freebsd/sys/event.d
include/d/core/sys/freebsd/sys/link_elf.d
include/d/core/sys/freebsd/sys/mman.d
include/d/core/sys/freebsd/sys/mount.d
include/d/core/sys/freebsd/sys/sysctl.d
include/d/core/sys/freebsd/time.d
include/d/core/sys/freebsd/unistd.d
include/d/core/sys/linux/
include/d/core/sys/linux/config.d
include/d/core/sys/linux/dlfcn.d
include/d/core/sys/linux/elf.d
include/d/core/sys/linux/epoll.d
include/d/core/sys/linux/err.d
include/d/core/sys/linux/errno.d
include/d/core/sys/linux/execinfo.d
include/d/core/sys/linux/fcntl.d
include/d/core/sys/linux/fs.d
include/d/core/sys/linux/ifaddrs.d
include/d/core/sys/linux/io_uring.d
include/d/core/sys/linux/link.d
include/d/core/sys/linux/netinet/
include/d/core/sys/linux/netinet/in_.d
include/d/core/sys/linux/netinet/tcp.d
include/d/core/sys/linux/sched.d
include/d/core/sys/linux/stdio.d
include/d/core/sys/linux/string.d
include/d/core/sys/linux/sys/
include/d/core/sys/linux/sys/auxv.d
include/d/core/sys/linux/sys/eventfd.d
include/d/core/sys/linux/sys/file.d
include/d/core/sys/linux/sys/inotify.d
include/d/core/sys/linux/sys/mman.d
include/d/core/sys/linux/sys/prctl.d
include/d/core/sys/linux/sys/procfs.d
include/d/core/sys/linux/sys/signalfd.d
include/d/core/sys/linux/sys/socket.d
include/d/core/sys/linux/sys/sysinfo.d
include/d/core/sys/linux/sys/time.d
include/d/core/sys/linux/sys/xattr.d
include/d/core/sys/linux/termios.d
include/d/core/sys/linux/time.d
include/d/core/sys/linux/timerfd.d
include/d/core/sys/linux/tipc.d
include/d/core/sys/linux/unistd.d
include/d/core/sys/netbsd/
include/d/core/sys/netbsd/dlfcn.d
include/d/core/sys/netbsd/err.d
include/d/core/sys/netbsd/execinfo.d
include/d/core/sys/netbsd/stdlib.d
include/d/core/sys/netbsd/string.d
include/d/core/sys/netbsd/sys/
include/d/core/sys/netbsd/sys/elf.d
include/d/core/sys/netbsd/sys/elf32.d
include/d/core/sys/netbsd/sys/elf64.d
include/d/core/sys/netbsd/sys/elf_common.d
include/d/core/sys/netbsd/sys/event.d
include/d/core/sys/netbsd/sys/featuretest.d
include/d/core/sys/netbsd/sys/link_elf.d
include/d/core/sys/netbsd/sys/mman.d
include/d/core/sys/netbsd/sys/sysctl.d
include/d/core/sys/netbsd/time.d
include/d/core/sys/openbsd/
include/d/core/sys/openbsd/dlfcn.d
include/d/core/sys/openbsd/err.d
include/d/core/sys/openbsd/execinfo.d
include/d/core/sys/openbsd/stdlib.d
include/d/core/sys/openbsd/string.d
include/d/core/sys/openbsd/sys/
include/d/core/sys/openbsd/sys/cdefs.d
include/d/core/sys/openbsd/sys/elf.d
include/d/core/sys/openbsd/sys/elf32.d
include/d/core/sys/openbsd/sys/elf64.d
include/d/core/sys/openbsd/sys/elf_common.d
include/d/core/sys/openbsd/sys/link_elf.d
include/d/core/sys/openbsd/sys/mman.d
include/d/core/sys/openbsd/sys/sysctl.d
include/d/core/sys/openbsd/time.d
include/d/core/sys/openbsd/unistd.d
include/d/core/sys/posix/
include/d/core/sys/posix/aio.d
include/d/core/sys/posix/arpa/
include/d/core/sys/posix/arpa/inet.d
include/d/core/sys/posix/config.d
include/d/core/sys/posix/dirent.d
include/d/core/sys/posix/dlfcn.d
include/d/core/sys/posix/fcntl.d
include/d/core/sys/posix/grp.d
include/d/core/sys/posix/iconv.d
include/d/core/sys/posix/inttypes.d
include/d/core/sys/posix/libgen.d
include/d/core/sys/posix/locale.d
include/d/core/sys/posix/mqueue.d
include/d/core/sys/posix/net/
include/d/core/sys/posix/net/if_.d
include/d/core/sys/posix/netdb.d
include/d/core/sys/posix/netinet/
include/d/core/sys/posix/netinet/in_.d
include/d/core/sys/posix/netinet/tcp.d
include/d/core/sys/posix/poll.d
include/d/core/sys/posix/pthread.d
include/d/core/sys/posix/pwd.d
include/d/core/sys/posix/sched.d
include/d/core/sys/posix/semaphore.d
include/d/core/sys/posix/setjmp.d
include/d/core/sys/posix/signal.d
include/d/core/sys/posix/spawn.d
include/d/core/sys/posix/stdc/
include/d/core/sys/posix/stdc/time.d
include/d/core/sys/posix/stdio.d
include/d/core/sys/posix/stdlib.d
include/d/core/sys/posix/string.d
include/d/core/sys/posix/strings.d
include/d/core/sys/posix/sys/
include/d/core/sys/posix/sys/filio.d
include/d/core/sys/posix/sys/ioccom.d
include/d/core/sys/posix/sys/ioctl.d
include/d/core/sys/posix/sys/ipc.d
include/d/core/sys/posix/sys/mman.d
include/d/core/sys/posix/sys/msg.d
include/d/core/sys/posix/sys/resource.d
include/d/core/sys/posix/sys/select.d
include/d/core/sys/posix/sys/shm.d
include/d/core/sys/posix/sys/socket.d
include/d/core/sys/posix/sys/stat.d
include/d/core/sys/posix/sys/statvfs.d
include/d/core/sys/posix/sys/time.d
include/d/core/sys/posix/sys/ttycom.d
include/d/core/sys/posix/sys/types.d
include/d/core/sys/posix/sys/uio.d
include/d/core/sys/posix/sys/un.d
include/d/core/sys/posix/sys/utsname.d
include/d/core/sys/posix/sys/wait.d
include/d/core/sys/posix/syslog.d
include/d/core/sys/posix/termios.d
include/d/core/sys/posix/time.d
include/d/core/sys/posix/ucontext.d
include/d/core/sys/posix/unistd.d
include/d/core/sys/posix/utime.d
include/d/core/sys/solaris/
include/d/core/sys/solaris/dlfcn.d
include/d/core/sys/solaris/elf.d
include/d/core/sys/solaris/err.d
include/d/core/sys/solaris/execinfo.d
include/d/core/sys/solaris/libelf.d
include/d/core/sys/solaris/link.d
include/d/core/sys/solaris/stdlib.d
include/d/core/sys/solaris/sys/
include/d/core/sys/solaris/sys/elf.d
include/d/core/sys/solaris/sys/elf_386.d
include/d/core/sys/solaris/sys/elf_SPARC.d
include/d/core/sys/solaris/sys/elf_amd64.d
include/d/core/sys/solaris/sys/elf_notes.d
include/d/core/sys/solaris/sys/elftypes.d
include/d/core/sys/solaris/sys/link.d
include/d/core/sys/solaris/sys/priocntl.d
include/d/core/sys/solaris/sys/procset.d
include/d/core/sys/solaris/sys/types.d
include/d/core/sys/solaris/time.d
include/d/core/sys/windows/
include/d/core/sys/windows/accctrl.d
include/d/core/sys/windows/aclapi.d
include/d/core/sys/windows/aclui.d
include/d/core/sys/windows/basetsd.d
include/d/core/sys/windows/basetyps.d
include/d/core/sys/windows/cderr.d
include/d/core/sys/windows/cguid.d
include/d/core/sys/windows/com.d
include/d/core/sys/windows/comcat.d
include/d/core/sys/windows/commctrl.d
include/d/core/sys/windows/commdlg.d
include/d/core/sys/windows/core.d
include/d/core/sys/windows/cpl.d
include/d/core/sys/windows/cplext.d
include/d/core/sys/windows/custcntl.d
include/d/core/sys/windows/dbghelp.d
include/d/core/sys/windows/dbghelp_types.d
include/d/core/sys/windows/dbt.d
include/d/core/sys/windows/dde.d
include/d/core/sys/windows/ddeml.d
include/d/core/sys/windows/dhcpcsdk.d
include/d/core/sys/windows/dlgs.d
include/d/core/sys/windows/dll.d
include/d/core/sys/windows/docobj.d
include/d/core/sys/windows/errorrep.d
include/d/core/sys/windows/exdisp.d
include/d/core/sys/windows/exdispid.d
include/d/core/sys/windows/httpext.d
include/d/core/sys/windows/idispids.d
include/d/core/sys/windows/imagehlp.d
include/d/core/sys/windows/imm.d
include/d/core/sys/windows/intshcut.d
include/d/core/sys/windows/ipexport.d
include/d/core/sys/windows/iphlpapi.d
include/d/core/sys/windows/ipifcons.d
include/d/core/sys/windows/iprtrmib.d
include/d/core/sys/windows/iptypes.d
include/d/core/sys/windows/isguids.d
include/d/core/sys/windows/lm.d
include/d/core/sys/windows/lmaccess.d
include/d/core/sys/windows/lmalert.d
include/d/core/sys/windows/lmapibuf.d
include/d/core/sys/windows/lmat.d
include/d/core/sys/windows/lmaudit.d
include/d/core/sys/windows/lmbrowsr.d
include/d/core/sys/windows/lmchdev.d
include/d/core/sys/windows/lmconfig.d
include/d/core/sys/windows/lmcons.d
include/d/core/sys/windows/lmerr.d
include/d/core/sys/windows/lmerrlog.d
include/d/core/sys/windows/lmmsg.d
include/d/core/sys/windows/lmremutl.d
include/d/core/sys/windows/lmrepl.d
include/d/core/sys/windows/lmserver.d
include/d/core/sys/windows/lmshare.d
include/d/core/sys/windows/lmsname.d
include/d/core/sys/windows/lmstats.d
include/d/core/sys/windows/lmsvc.d
include/d/core/sys/windows/lmuse.d
include/d/core/sys/windows/lmuseflg.d
include/d/core/sys/windows/lmwksta.d
include/d/core/sys/windows/lzexpand.d
include/d/core/sys/windows/mapi.d
include/d/core/sys/windows/mciavi.d
include/d/core/sys/windows/mcx.d
include/d/core/sys/windows/mgmtapi.d
include/d/core/sys/windows/mmsystem.d
include/d/core/sys/windows/msacm.d
include/d/core/sys/windows/mshtml.d
include/d/core/sys/windows/mswsock.d
include/d/core/sys/windows/nb30.d
include/d/core/sys/windows/nddeapi.d
include/d/core/sys/windows/nspapi.d
include/d/core/sys/windows/ntdef.d
include/d/core/sys/windows/ntdll.d
include/d/core/sys/windows/ntldap.d
include/d/core/sys/windows/ntsecapi.d
include/d/core/sys/windows/ntsecpkg.d
include/d/core/sys/windows/oaidl.d
include/d/core/sys/windows/objbase.d
include/d/core/sys/windows/objfwd.d
include/d/core/sys/windows/objidl.d
include/d/core/sys/windows/objsafe.d
include/d/core/sys/windows/ocidl.d
include/d/core/sys/windows/odbcinst.d
include/d/core/sys/windows/ole.d
include/d/core/sys/windows/ole2.d
include/d/core/sys/windows/ole2ver.d
include/d/core/sys/windows/oleacc.d
include/d/core/sys/windows/oleauto.d
include/d/core/sys/windows/olectl.d
include/d/core/sys/windows/olectlid.d
include/d/core/sys/windows/oledlg.d
include/d/core/sys/windows/oleidl.d
include/d/core/sys/windows/pbt.d
include/d/core/sys/windows/powrprof.d
include/d/core/sys/windows/prsht.d
include/d/core/sys/windows/psapi.d
include/d/core/sys/windows/rapi.d
include/d/core/sys/windows/ras.d
include/d/core/sys/windows/rasdlg.d
include/d/core/sys/windows/raserror.d
include/d/core/sys/windows/rassapi.d
include/d/core/sys/windows/reason.d
include/d/core/sys/windows/regstr.d
include/d/core/sys/windows/richedit.d
include/d/core/sys/windows/richole.d
include/d/core/sys/windows/rpc.d
include/d/core/sys/windows/rpcdce.d
include/d/core/sys/windows/rpcdce2.d
include/d/core/sys/windows/rpcdcep.d
include/d/core/sys/windows/rpcndr.d
include/d/core/sys/windows/rpcnsi.d
include/d/core/sys/windows/rpcnsip.d
include/d/core/sys/windows/rpcnterr.d
include/d/core/sys/windows/schannel.d
include/d/core/sys/windows/sdkddkver.d
include/d/core/sys/windows/secext.d
include/d/core/sys/windows/security.d
include/d/core/sys/windows/servprov.d
include/d/core/sys/windows/setupapi.d
include/d/core/sys/windows/shellapi.d
include/d/core/sys/windows/shldisp.d
include/d/core/sys/windows/shlguid.d
include/d/core/sys/windows/shlobj.d
include/d/core/sys/windows/shlwapi.d
include/d/core/sys/windows/snmp.d
include/d/core/sys/windows/sql.d
include/d/core/sys/windows/sqlext.d
include/d/core/sys/windows/sqltypes.d
include/d/core/sys/windows/sqlucode.d
include/d/core/sys/windows/sspi.d
include/d/core/sys/windows/stacktrace.d
include/d/core/sys/windows/stat.d
include/d/core/sys/windows/stdc/
include/d/core/sys/windows/stdc/malloc.d
include/d/core/sys/windows/stdc/time.d
include/d/core/sys/windows/subauth.d
include/d/core/sys/windows/threadaux.d
include/d/core/sys/windows/tlhelp32.d
include/d/core/sys/windows/tmschema.d
include/d/core/sys/windows/unknwn.d
include/d/core/sys/windows/uuid.d
include/d/core/sys/windows/vfw.d
include/d/core/sys/windows/w32api.d
include/d/core/sys/windows/winbase.d
include/d/core/sys/windows/winber.d
include/d/core/sys/windows/wincon.d
include/d/core/sys/windows/wincrypt.d
include/d/core/sys/windows/windef.d
include/d/core/sys/windows/windows.d
include/d/core/sys/windows/winerror.d
include/d/core/sys/windows/wingdi.d
include/d/core/sys/windows/winhttp.d
include/d/core/sys/windows/wininet.d
include/d/core/sys/windows/winioctl.d
include/d/core/sys/windows/winldap.d
include/d/core/sys/windows/winnetwk.d
include/d/core/sys/windows/winnls.d
include/d/core/sys/windows/winnt.d
include/d/core/sys/windows/winperf.d
include/d/core/sys/windows/winreg.d
include/d/core/sys/windows/winsock2.d
include/d/core/sys/windows/winspool.d
include/d/core/sys/windows/winsvc.d
include/d/core/sys/windows/winuser.d
include/d/core/sys/windows/winver.d
include/d/core/sys/windows/wtsapi32.d
include/d/core/sys/windows/wtypes.d
include/d/core/thread/
include/d/core/thread/context.d
include/d/core/thread/fiber.d
include/d/core/thread/osthread.d
include/d/core/thread/package.d
include/d/core/thread/threadbase.d
include/d/core/thread/threadgroup.d
include/d/core/thread/types.d
include/d/core/time.d
include/d/core/vararg.d
include/d/core/volatile.d
include/d/etc/
include/d/etc/c/
include/d/etc/c/curl.d
include/d/etc/c/odbc/
include/d/etc/c/odbc/sql.d
include/d/etc/c/odbc/sqlext.d
include/d/etc/c/odbc/sqltypes.d
include/d/etc/c/odbc/sqlucode.d
include/d/etc/c/sqlite3.d
include/d/etc/c/zlib/
include/d/etc/c/zlib.d
include/d/etc/linux/
include/d/etc/linux/memoryerror.d
include/d/ldc/
include/d/ldc/asan.d
include/d/ldc/attributes.d
include/d/ldc/dcompute.d
include/d/ldc/eh_msvc.d
include/d/ldc/gccbuiltins_aarch64.di
include/d/ldc/gccbuiltins_amdgcn.di
include/d/ldc/gccbuiltins_arm.di
include/d/ldc/gccbuiltins_mips.di
include/d/ldc/gccbuiltins_nvvm.di
include/d/ldc/gccbuiltins_ppc.di
include/d/ldc/gccbuiltins_s390.di
include/d/ldc/gccbuiltins_x86.di
include/d/ldc/intrinsics.di
include/d/ldc/libfuzzer.di
include/d/ldc/llvmasm.di
include/d/ldc/opencl.di
include/d/ldc/profile.di
include/d/ldc/sanitizer_common.d
include/d/ldc/sanitizers_optionally_linked.d
include/d/ldc/simd.di
include/d/object.d
include/d/std/
include/d/std/algorithm/
include/d/std/algorithm/comparison.d
include/d/std/algorithm/internal.d
include/d/std/algorithm/iteration.d
include/d/std/algorithm/mutation.d
include/d/std/algorithm/package.d
include/d/std/algorithm/searching.d
include/d/std/algorithm/setops.d
include/d/std/algorithm/sorting.d
include/d/std/array.d
include/d/std/ascii.d
include/d/std/base64.d
include/d/std/bigint.d
include/d/std/bitmanip.d
include/d/std/compiler.d
include/d/std/complex.d
include/d/std/concurrency.d
include/d/std/container/
include/d/std/container/array.d
include/d/std/container/binaryheap.d
include/d/std/container/dlist.d
include/d/std/container/package.d
include/d/std/container/rbtree.d
include/d/std/container/slist.d
include/d/std/container/util.d
include/d/std/conv.d
include/d/std/csv.d
include/d/std/datetime/
include/d/std/datetime/date.d
include/d/std/datetime/interval.d
include/d/std/datetime/package.d
include/d/std/datetime/stopwatch.d
include/d/std/datetime/systime.d
include/d/std/datetime/timezone.d
include/d/std/demangle.d
include/d/std/digest/
include/d/std/digest/crc.d
include/d/std/digest/digest.d
include/d/std/digest/hmac.d
include/d/std/digest/md.d
include/d/std/digest/murmurhash.d
include/d/std/digest/package.d
include/d/std/digest/ripemd.d
include/d/std/digest/sha.d
include/d/std/encoding.d
include/d/std/exception.d
include/d/std/experimental/
include/d/std/experimental/allocator/
include/d/std/experimental/allocator/building_blocks/
include/d/std/experimental/allocator/building_blocks/affix_allocator.d
include/d/std/experimental/allocator/building_blocks/aligned_block_list.d
include/d/std/experimental/allocator/building_blocks/allocator_list.d
include/d/std/experimental/allocator/building_blocks/ascending_page_allocator.d
include/d/std/experimental/allocator/building_blocks/bitmapped_block.d
include/d/std/experimental/allocator/building_blocks/bucketizer.d
include/d/std/experimental/allocator/building_blocks/fallback_allocator.d
include/d/std/experimental/allocator/building_blocks/free_list.d
include/d/std/experimental/allocator/building_blocks/free_tree.d
include/d/std/experimental/allocator/building_blocks/kernighan_ritchie.d
include/d/std/experimental/allocator/building_blocks/null_allocator.d
include/d/std/experimental/allocator/building_blocks/package.d
include/d/std/experimental/allocator/building_blocks/quantizer.d
include/d/std/experimental/allocator/building_blocks/region.d
include/d/std/experimental/allocator/building_blocks/scoped_allocator.d
include/d/std/experimental/allocator/building_blocks/segregator.d
include/d/std/experimental/allocator/building_blocks/stats_collector.d
include/d/std/experimental/allocator/common.d
include/d/std/experimental/allocator/gc_allocator.d
include/d/std/experimental/allocator/mallocator.d
include/d/std/experimental/allocator/mmap_allocator.d
include/d/std/experimental/allocator/package.d
include/d/std/experimental/allocator/showcase.d
include/d/std/experimental/allocator/typed.d
include/d/std/experimental/checkedint.d
include/d/std/experimental/logger/
include/d/std/experimental/logger/core.d
include/d/std/experimental/logger/filelogger.d
include/d/std/experimental/logger/multilogger.d
include/d/std/experimental/logger/nulllogger.d
include/d/std/experimental/logger/package.d
include/d/std/experimental/typecons.d
include/d/std/file.d
include/d/std/format/
include/d/std/format/internal/
include/d/std/format/internal/floats.d
include/d/std/format/internal/read.d
include/d/std/format/internal/write.d
include/d/std/format/package.d
include/d/std/format/read.d
include/d/std/format/spec.d
include/d/std/format/write.d
include/d/std/functional.d
include/d/std/getopt.d
include/d/std/internal/
include/d/std/internal/attributes.d
include/d/std/internal/cstring.d
include/d/std/internal/digest/
include/d/std/internal/digest/sha_SSSE3.d
include/d/std/internal/math/
include/d/std/internal/math/biguintarm.d
include/d/std/internal/math/biguintcore.d
include/d/std/internal/math/biguintnoasm.d
include/d/std/internal/math/biguintx86.d
include/d/std/internal/math/errorfunction.d
include/d/std/internal/math/gammafunction.d
include/d/std/internal/memory.d
include/d/std/internal/scopebuffer.d
include/d/std/internal/test/
include/d/std/internal/test/dummyrange.d
include/d/std/internal/test/range.d
include/d/std/internal/test/uda.d
include/d/std/internal/unicode_comp.d
include/d/std/internal/unicode_decomp.d
include/d/std/internal/unicode_grapheme.d
include/d/std/internal/unicode_norm.d
include/d/std/internal/unicode_tables.d
include/d/std/internal/windows/
include/d/std/internal/windows/advapi32.d
include/d/std/json.d
include/d/std/math/
include/d/std/math/algebraic.d
include/d/std/math/constants.d
include/d/std/math/exponential.d
include/d/std/math/hardware.d
include/d/std/math/operations.d
include/d/std/math/package.d
include/d/std/math/remainder.d
include/d/std/math/rounding.d
include/d/std/math/traits.d
include/d/std/math/trigonometry.d
include/d/std/mathspecial.d
include/d/std/meta.d
include/d/std/mmfile.d
include/d/std/net/
include/d/std/net/curl.d
include/d/std/net/isemail.d
include/d/std/numeric.d
include/d/std/outbuffer.d
include/d/std/package.d
include/d/std/parallelism.d
include/d/std/path.d
include/d/std/process.d
include/d/std/random.d
include/d/std/range/
include/d/std/range/interfaces.d
include/d/std/range/package.d
include/d/std/range/primitives.d
include/d/std/regex/
include/d/std/regex/internal/
include/d/std/regex/internal/backtracking.d
include/d/std/regex/internal/generator.d
include/d/std/regex/internal/ir.d
include/d/std/regex/internal/kickstart.d
include/d/std/regex/internal/parser.d
include/d/std/regex/internal/tests.d
include/d/std/regex/internal/tests2.d
include/d/std/regex/internal/thompson.d
include/d/std/regex/package.d
include/d/std/signals.d
include/d/std/socket.d
include/d/std/stdint.d
include/d/std/stdio.d
include/d/std/string.d
include/d/std/sumtype.d
include/d/std/system.d
include/d/std/traits.d
include/d/std/typecons.d
include/d/std/typetuple.d
include/d/std/uni/
include/d/std/uni/package.d
include/d/std/uri.d
include/d/std/utf.d
include/d/std/uuid.d
include/d/std/variant.d
include/d/std/windows/
include/d/std/windows/charset.d
include/d/std/windows/registry.d
include/d/std/windows/syserror.d
include/d/std/xml.d
include/d/std/zip.d
include/d/std/zlib.d
@static-lib lib/libdruntime-ldc-debug.a
@static-lib lib/libdruntime-ldc.a
@static-lib lib/libphobos2-ldc-debug.a
@static-lib lib/libphobos2-ldc.a
share/examples/ldc/
share/examples/ldc/ldc2.conf
@sample ${SYSCONFDIR}/ldc2.conf