$OpenBSD$

Index: runtime/druntime/src/core/runtime.d
--- runtime/druntime/src/core/runtime.d.orig
+++ runtime/druntime/src/core/runtime.d
@@ -407,6 +407,8 @@ extern (C) bool runModuleUnitTests()
         import core.sys.osx.execinfo;
     else version( FreeBSD )
         import core.sys.freebsd.execinfo;
+    else version (OpenBSD)
+        import core.sys.openbsd.execinfo;
     else version( DragonFlyBSD )
         import core.sys.dragonflybsd.execinfo;
     else version( Windows )
@@ -491,6 +493,8 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = n
         import core.sys.osx.execinfo;
     else version( FreeBSD )
         import core.sys.freebsd.execinfo;
+    else version (OpenBSD)
+        import core.sys.openbsd.execinfo;
     else version( DragonFlyBSD )
         import core.sys.dragonflybsd.execinfo;
     else version( Windows )
@@ -643,6 +647,18 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = n
                     }
                 }
                 else version( FreeBSD )
+                {
+                    // 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( OpenBSD )
                 {
                     // format is: 0x00000000 <_D6module4funcAFZv+0x78> at module
                     auto bptr = cast(char*) memchr( buf.ptr, '<', buf.length );
