missing ifaddrs.h header
use getexecpath(3)

Index: rts/System/Platform/Misc.cpp
--- rts/System/Platform/Misc.cpp.orig
+++ rts/System/Platform/Misc.cpp
@@ -33,6 +33,12 @@
 #elif defined( __FreeBSD__)
 	#include <sys/sysctl.h>
 
+#elif defined(__OpenBSD__)
+	#include <ifaddrs.h>
+	#include <sys/types.h>
+	#include <sys/sysctl.h>
+	#include <unistd.h>
+
 #else
 
 #endif
@@ -222,7 +228,15 @@ namespace Platform
 		if (sysctl(mib, sizeof(mib) / sizeof(mib[0]), buf, &cb, nullptr, 0) == 0)
 			procExeFilePath = buf;
 
+		#elif defined(__OpenBSD__)
+		char file[PATH_MAX];
 
+		if (getexecpath(file, sizeof(file)) != 0) {
+			error = "[OpenBSD] getexecpath(3) failed";
+		} else {
+			procExeFilePath = file;
+		}
+
 		#else
 		#error implement this
 		#endif
@@ -749,7 +763,7 @@ namespace Platform
 		return (GetMacType(macAddr, 0), macAddr);
 	}
 
-	#elif defined(__APPLE__)
+	#elif defined(__APPLE__) || defined(__OpenBSD__)
 
 	std::array<uint8_t, 6> GetRawMacAddr() {
 		// TODO: http://lists.freebsd.org/pipermail/freebsd-hackers/2004-June/007415.html
