Skip to content
This repository was archived by the owner on Feb 8, 2024. It is now read-only.

Commit 7dd054d

Browse files
committed
Add DragonFly support to ldc:druntime
1 parent 9f60973 commit 7dd054d

File tree

25 files changed

+716
-8
lines changed

25 files changed

+716
-8
lines changed

src/core/runtime.d

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,8 @@ extern (C) bool runModuleUnitTests()
407407
import core.sys.osx.execinfo;
408408
else version( FreeBSD )
409409
import core.sys.freebsd.execinfo;
410+
else version( DragonFlyBSD )
411+
import core.sys.dragonflybsd.execinfo;
410412
else version( Windows )
411413
import core.sys.windows.stacktrace;
412414
else version( Solaris )
@@ -489,6 +491,8 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null )
489491
import core.sys.osx.execinfo;
490492
else version( FreeBSD )
491493
import core.sys.freebsd.execinfo;
494+
else version( DragonFlyBSD )
495+
import core.sys.dragonflybsd.execinfo;
492496
else version( Windows )
493497
import core.sys.windows.stacktrace;
494498
else version( Solaris )
@@ -650,6 +654,18 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null )
650654
symEnd = eptr - buf.ptr;
651655
}
652656
}
657+
else version( DragonFlyBSD )
658+
{
659+
// format is: 0x00000000 <_D6module4funcAFZv+0x78> at module
660+
auto bptr = cast(char*) memchr( buf.ptr, '<', buf.length );
661+
auto eptr = cast(char*) memchr( buf.ptr, '+', buf.length );
662+
663+
if( bptr++ && eptr )
664+
{
665+
symBeg = bptr - buf.ptr;
666+
symEnd = eptr - buf.ptr;
667+
}
668+
}
653669
else version( Solaris )
654670
{
655671
// format is object'symbol+offset [pc]

src/core/stdc/config.d

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,8 @@ else version( DigitalMars )
116116
alias real c_long_double;
117117
else version( FreeBSD )
118118
alias real c_long_double;
119+
else version( DragonFlyBSD )
120+
alias real c_long_double;
119121
else version( Solaris )
120122
alias real c_long_double;
121123
else version( OSX )

src/core/stdc/errno.d

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,6 +1101,109 @@ else version( FreeBSD )
11011101
enum EPROTO = 92; /// Protocol error
11021102
enum ELAST = 92; /// Must be equal largest errno
11031103
}
1104+
else version( DragonFlyBSD )
1105+
{
1106+
enum EPERM = 1;
1107+
enum ENOENT = 2;
1108+
enum ESRCH = 3;
1109+
enum EINTR = 4;
1110+
enum EIO = 5;
1111+
enum ENXIO = 6;
1112+
enum E2BIG = 7;
1113+
enum ENOEXEC = 8;
1114+
enum EBADF = 9;
1115+
enum ECHILD = 10;
1116+
enum EDEADLK = 11;
1117+
enum ENOMEM = 12;
1118+
enum EACCES = 13;
1119+
enum EFAULT = 14;
1120+
enum ENOTBLK = 15;
1121+
enum EBUSY = 16;
1122+
enum EEXIST = 17;
1123+
enum EXDEV = 18;
1124+
enum ENODEV = 19;
1125+
enum ENOTDIR = 20;
1126+
enum EISDIR = 21;
1127+
enum EINVAL = 22;
1128+
enum ENFILE = 23;
1129+
enum EMFILE = 24;
1130+
enum ENOTTY = 25;
1131+
enum ETXTBSY = 26;
1132+
enum EFBIG = 27;
1133+
enum ENOSPC = 28;
1134+
enum ESPIPE = 29;
1135+
enum EROFS = 30;
1136+
enum EMLINK = 31;
1137+
enum EPIPE = 32;
1138+
enum EDOM = 33;
1139+
enum ERANGE = 34;
1140+
enum EAGAIN = 35;
1141+
enum EWOULDBLOCK = EAGAIN;
1142+
enum EINPROGRESS = 36;
1143+
enum EALREADY = 37;
1144+
enum ENOTSOCK = 38;
1145+
enum EDESTADDRREQ = 39;
1146+
enum EMSGSIZE = 40;
1147+
enum EPROTOTYPE = 41;
1148+
enum ENOPROTOOPT = 42;
1149+
enum EPROTONOSUPPORT = 43;
1150+
enum ENOTSUP = 45;
1151+
enum EOPNOTSUPP = ENOTSUP;
1152+
enum EPFNOSUPPORT = 46;
1153+
enum EAFNOSUPPORT = 47;
1154+
enum EADDRINUSE = 48;
1155+
enum EADDRNOTAVAIL = 49;
1156+
enum ENETDOWN = 50;
1157+
enum ENETUNREACH = 51;
1158+
enum ENETRESET = 52;
1159+
enum ECONNABORTED = 53;
1160+
enum ECONNRESET = 54;
1161+
enum ENOBUFS = 55;
1162+
enum EISCONN = 56;
1163+
enum ENOTCONN = 57;
1164+
enum ESHUTDOWN = 58;
1165+
enum ETOOMANYREFS = 59;
1166+
enum ETIMEDOUT = 60;
1167+
enum ECONNREFUSED = 61;
1168+
enum ELOOP = 62;
1169+
enum ENAMETOOLONG = 63;
1170+
enum EHOSTUNREACH = 65;
1171+
enum ENOTEMPTY = 66;
1172+
enum EPROCLIM = 67;
1173+
enum EUSERS = 68;
1174+
enum EDQUOT = 69;
1175+
enum ESTALE = 70;
1176+
enum EREMOTE = 71;
1177+
enum EBADRPC = 72;
1178+
enum ERPCMISMATCH = 73;
1179+
enum EPROGUNAVAIL = 74;
1180+
enum EPROGMISMATCH = 75;
1181+
enum EPROCUNAVAIL = 76;
1182+
enum ENOLCK = 77;
1183+
enum ENOSYS = 78;
1184+
enum EFTYPE = 79;
1185+
enum EAUTH = 80;
1186+
enum ENEEDAUTH = 81;
1187+
enum EIDRM = 82;
1188+
enum ENOMSG = 83;
1189+
enum EOVERFLOW = 84;
1190+
enum ECANCELED = 85;
1191+
enum EILSEQ = 86;
1192+
enum ENOATTR = 87;
1193+
enum EDOOFUS = 88;
1194+
enum EBADMSG = 89;
1195+
enum EMULTIHOP = 90;
1196+
enum ENOLINK = 91;
1197+
enum EPROTO = 92;
1198+
enum ENOMEDIUM = 93;
1199+
enum EUNUSED94 = 94;
1200+
enum EUNUSED95 = 95;
1201+
enum EUNUSED96 = 96;
1202+
enum EUNUSED97 = 97;
1203+
enum EUNUSED98 = 98;
1204+
enum EASYNC = 99;
1205+
enum ELAST = 99;
1206+
}
11041207
else version (Solaris)
11051208
{
11061209
enum EPERM = 1 /** Not super-user */;

src/core/stdc/fenv.d

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,24 @@ else version ( FreeBSD )
190190

191191
alias ushort fexcept_t;
192192
}
193+
else version ( DragonFlyBSD )
194+
{
195+
struct fenv_t
196+
{
197+
struct _x87
198+
{
199+
uint control;
200+
uint status;
201+
uint tag;
202+
uint[4] others;
203+
};
204+
_x87 x87;
205+
206+
uint mxcsr;
207+
}
208+
209+
alias uint fexcept_t;
210+
}
193211
else version( CRuntime_Bionic )
194212
{
195213
version(X86)
@@ -304,6 +322,12 @@ else version( FreeBSD )
304322
///
305323
enum FE_DFL_ENV = &__fe_dfl_env;
306324
}
325+
else version( DragonFlyBSD )
326+
{
327+
private extern const fenv_t __fe_dfl_env;
328+
///
329+
enum FE_DFL_ENV = &__fe_dfl_env;
330+
}
307331
else version( CRuntime_Bionic )
308332
{
309333
private extern const fenv_t __fe_dfl_env;

src/core/stdc/locale.d

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,23 @@ else version(FreeBSD)
126126
///
127127
enum LC_MESSAGES = 6;
128128
}
129+
else version(DragonFlyBSD)
130+
{
131+
///
132+
enum LC_ALL = 0;
133+
///
134+
enum LC_COLLATE = 1;
135+
///
136+
enum LC_CTYPE = 2;
137+
///
138+
enum LC_MONETARY = 3;
139+
///
140+
enum LC_NUMERIC = 4;
141+
///
142+
enum LC_TIME = 5;
143+
///
144+
enum LC_MESSAGES = 6;
145+
}
129146
else version(Solaris)
130147
{
131148
enum LC_CTYPE = 0;

0 commit comments

Comments
 (0)