Skip to content
This repository was archived by the owner on Oct 12, 2022. It is now read-only.
/ druntime Public archive
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions osmodel.mak
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ ifeq (,$(OS))
ifeq (OpenBSD,$(uname_S))
OS:=openbsd
endif
ifeq (NetBSD,$(uname_S))
OS:=netbsd
endif
ifeq (Solaris,$(uname_S))
OS:=solaris
endif
Expand Down
16 changes: 16 additions & 0 deletions src/core/runtime.d
Original file line number Diff line number Diff line change
Expand Up @@ -456,6 +456,8 @@ extern (C) bool runModuleUnitTests()
import core.sys.darwin.execinfo;
else version( FreeBSD )
import core.sys.freebsd.execinfo;
else version( NetBSD )
import core.sys.netbsd.execinfo;
else version( Windows )
import core.sys.windows.stacktrace;
else version( Solaris )
Expand Down Expand Up @@ -538,6 +540,8 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null )
import core.sys.darwin.execinfo;
else version( FreeBSD )
import core.sys.freebsd.execinfo;
else version( NetBSD )
import core.sys.netbsd.execinfo;
else version( Windows )
import core.sys.windows.stacktrace;
else version( Solaris )
Expand Down Expand Up @@ -735,6 +739,18 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null )
symEnd = eptr - buf.ptr;
}
}
else version( NetBSD )
{
// format is: 0x00000000 <_D6module4funcAFZv+0x78> at module
auto bptr = cast(char*) memchr( buf.ptr, '<', buf.length );
auto eptr = cast(char*) memchr( buf.ptr, '+', buf.length );

if( bptr++ && eptr )
{
symBeg = bptr - buf.ptr;
symEnd = eptr - buf.ptr;
}
}
else version( Solaris )
{
// format is object'symbol+offset [pc]
Expand Down
2 changes: 2 additions & 0 deletions src/core/stdc/config.d
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,8 @@ else version( DigitalMars )
alias real c_long_double;
else version( OpenBSD )
alias real c_long_double;
else version( NetBSD )
alias real c_long_double;
else version( Solaris )
alias real c_long_double;
else version( Darwin )
Expand Down
132 changes: 132 additions & 0 deletions src/core/stdc/errno.d
Original file line number Diff line number Diff line change
Expand Up @@ -1110,6 +1110,138 @@ else version( FreeBSD )
enum EPROTO = 92; /// Protocol error
enum ELAST = 92; /// Must be equal largest errno
}
else version (NetBSD)
{
// http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/errno.h
enum EPERM = 1;
enum ENOENT = 2;
enum ESRCH = 3;
enum EINTR = 4;
enum EIO = 5;
enum ENXIO = 6;
enum E2BIG = 7;
enum ENOEXEC = 8;
enum EBADF = 9;
enum ECHILD = 10;
enum EDEADLK = 11;
///
enum ENOMEM = 12;
enum EACCES = 13;
enum EFAULT = 14;
enum ENOTBLK = 15;
enum EBUSY = 16;
enum EEXIST = 17;
enum EXDEV = 18;
enum ENODEV = 19;
enum ENOTDIR = 20;
enum EISDIR = 21;
enum EINVAL = 22;
enum ENFILE = 23;
enum EMFILE = 24;
enum ENOTTY = 25;
enum ETXTBSY = 26;
enum EFBIG = 27;
enum ENOSPC = 28;
enum ESPIPE = 29;
enum EROFS = 30;
enum EMLINK = 31;
enum EPIPE = 32;
///
enum EDOM = 33;
enum ERANGE = 34;

///
enum EAGAIN = 35;
enum EWOULDBLOCK = EAGAIN;
enum EINPROGRESS = 36;
enum EALREADY = 37;

///
enum ENOTSOCK = 38;
enum EDESTADDRREQ = 39;
enum EMSGSIZE = 40;
enum EPROTOTYPE = 41;
enum ENOPROTOOPT = 42;
enum EPROTONOSUPPORT = 43;
enum ESOCKTNOSUPPORT = 44;
enum EOPNOTSUPP = 45;
enum EPFNOSUPPORT = 46;
enum EAFNOSUPPORT = 47;
enum EADDRINUSE = 48;
enum EADDRNOTAVAIL = 49;

///
enum ENETDOWN = 50;
enum ENETUNREACH = 51;
enum ENETRESET = 52;
enum ECONNABORTED = 53;
enum ECONNRESET = 54;
enum ENOBUFS = 55;
enum EISCONN = 56;
enum ENOTCONN = 57;
enum ESHUTDOWN = 58;
enum ETOOMANYREFS = 59;
enum ETIMEDOUT = 60;
enum ECONNREFUSED = 61;
enum ELOOP = 62;
enum ENAMETOOLONG = 63;

///
enum EHOSTDOWN = 64;
enum EHOSTUNREACH = 65;
enum ENOTEMPTY = 66;

///
enum EPROCLIM = 67;
enum EUSERS = 68;
enum EDQUOT = 69;

///
enum ESTALE = 70;
enum EREMOTE = 71;
enum EBADRPC = 72;
enum ERPCMISMATCH = 73;
enum EPROGUNAVAIL = 74;
enum EPROGMISMATCH = 75;
enum EPROCUNAVAIL = 76;

enum ENOLCK = 77;
enum ENOSYS = 78;

enum EFTYPE = 79;
enum EAUTH = 80;
enum ENEEDAUTH = 81;

///
enum EIDRM = 82;
enum ENOMSG = 83;
enum EOVERFLOW = 84;
///
enum EILSEQ = 85;

///
enum ENOTSUP = 86;

///
enum ECANCELED = 87;

///
enum EBADMSG = 88;

///
enum ENODATA = 89;
enum ENOSR = 90;
enum ENOSTR = 91;
enum ETIME = 92;

///
enum ENOATTR = 93;

///
enum EMULTIHOP = 94;
enum ENOLINK = 95;
enum EPROTO = 96;
}
else version( OpenBSD )
{
enum EPERM = 1; /// Operation not permitted
Expand Down
46 changes: 46 additions & 0 deletions src/core/stdc/fenv.d
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,46 @@ else version ( FreeBSD )

alias ushort fexcept_t;
}
else version ( NetBSD )
{
version(X86_64)
{
struct fenv_t
{
struct _x87
{
uint control; /* Control word register */
uint status; /* Status word register */
uint tag; /* Tag word register */
uint[4] others; /* EIP, Pointer Selector, etc */
};
_x87 x87;

uint mxcsr; /* Control and status register */
}
}
version(X86)
{
struct fenv_t
{
struct _x87
{
ushort control; /* Control word register */
ushort unused1;
ushort status; /* Status word register */
ushort unused2;
ushort tag; /* Tag word register */
ushort unused3;
uint[4] others; /* EIP, Pointer Selector, etc */
};
_x87 x87;
uint32_t mxcsr; /* Control and status register */
};

}

alias uint fexcept_t;
}
else version ( OpenBSD )
{
struct fenv_t
Expand Down Expand Up @@ -326,6 +366,12 @@ else version( FreeBSD )
///
enum FE_DFL_ENV = &__fe_dfl_env;
}
else version( NetBSD )
{
private extern const fenv_t __fe_dfl_env;
///
enum FE_DFL_ENV = &__fe_dfl_env;
}
else version( OpenBSD )
{
private extern const fenv_t __fe_dfl_env;
Expand Down
17 changes: 17 additions & 0 deletions src/core/stdc/locale.d
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,23 @@ else version(FreeBSD)
///
enum LC_MESSAGES = 6;
}
else version(NetBSD)
{
///
enum LC_ALL = 0;
///
enum LC_COLLATE = 1;
///
enum LC_CTYPE = 2;
///
enum LC_MONETARY = 3;
///
enum LC_NUMERIC = 4;
///
enum LC_TIME = 5;
///
enum LC_MESSAGES = 6;
}
else version(OpenBSD)
{
///
Expand Down
Loading