$OpenBSD$

Index: runtime/druntime/src/core/sys/posix/stdlib.d
--- runtime/druntime/src/core/sys/posix/stdlib.d.orig
+++ runtime/druntime/src/core/sys/posix/stdlib.d
@@ -91,6 +91,10 @@ else version( FreeBSD )
 {
     int posix_memalign(void**, size_t, size_t);
 }
+else version (OpenBSD)
+{
+    int posix_memalign(void**, size_t, size_t);
+}
 else version( DragonFlyBSD )
 {
     int posix_memalign(void**, size_t, size_t);
@@ -129,6 +133,13 @@ else version( FreeBSD )
 
     void* valloc(size_t); // LEGACY non-standard
 }
+else version (OpenBSD)
+{
+    int setenv(in char*, in char*, int);
+    int unsetenv(in char*);
+
+    void* valloc(size_t); // LEGACY non-standard
+}
 else version( DragonFlyBSD )
 {
     int setenv(in char*, in char*, int);
@@ -170,6 +181,10 @@ else version( FreeBSD )
 {
     int rand_r(uint*);
 }
+else version (OpenBSD)
+{
+    int rand_r(uint*);
+}
 else version( DragonFlyBSD )
 {
     int rand_r(uint*);
@@ -352,6 +367,47 @@ else version( FreeBSD )
     char*  realpath(in char*, char*);
     ushort *seed48(ref ushort[3]);
     void   setkey(in char*);
+    char*  setstate(in char*);
+    void   srand48(c_long);
+    void   srandom(uint);
+    int    unlockpt(int);
+}
+else version (OpenBSD)
+{
+    //WNOHANG     (defined in core.sys.posix.sys.wait)
+    //WUNTRACED   (defined in core.sys.posix.sys.wait)
+    //WEXITSTATUS (defined in core.sys.posix.sys.wait)
+    //WIFEXITED   (defined in core.sys.posix.sys.wait)
+    //WIFSIGNALED (defined in core.sys.posix.sys.wait)
+    //WIFSTOPPED  (defined in core.sys.posix.sys.wait)
+    //WSTOPSIG    (defined in core.sys.posix.sys.wait)
+    //WTERMSIG    (defined in core.sys.posix.sys.wait)
+
+    c_long a64l(in char*);
+    double drand48();
+    //char*  ecvt(double, int, int *, int *); // LEGACY
+    double erand48(ref ushort[3]);
+    //char*  fcvt(double, int, int *, int *); // LEGACY
+    //char*  gcvt(double, int, char*); // LEGACY
+    int    getsubopt(char**, in char**, char**);
+    int    grantpt(int);
+    char*  initstate(uint, char*, size_t);
+    c_long jrand48(ref ushort[3]);
+    char*  l64a(c_long);
+    void   lcong48(ref ushort[7]);
+    c_long lrand48();
+    char*  mktemp(char*); // LEGACY
+    int    mkstemp(char*);
+    char*  mkdtemp(char*); // Defined in IEEE 1003.1, 2008 Edition
+    c_long mrand48();
+    c_long nrand48(ref ushort[3]);
+    int    posix_openpt(int);
+    char*  ptsname(int);
+    int    putenv(char*);
+    c_long random();
+    char*  realpath(in char*, char*);
+    ushort *seed48(ref ushort[3]);
+    // void   setkey(in char*); // not implemented
     char*  setstate(in char*);
     void   srand48(c_long);
     void   srandom(uint);
