--- Src/dynload.c.orig	Tue Sep 17 07:20:59 1996
+++ Src/dynload.c	Tue Nov 23 18:02:17 1999
@@ -37,12 +37,16 @@
 #include <dld.h>
 #endif
 
-#if defined(NETBSD1)	     
+#if defined(NETBSD1) || defined(OPENBSD)
 #include <sys/types.h>
 #include <nlist.h>
+#ifdef USE_DYNLOAD
 #include <link.h>
+#endif
+#if defined(NETBSD1)
 #define dlerror() "dlerror"  /* dlerror() isn't implemented in NetBSD 1.0 */
 #endif
+#endif
 
 #ifdef HPUX
 #include <dl.h>
@@ -53,7 +57,7 @@
 #ifdef USE_DYNLOAD
 static SCM list_of_files = NULL;
 
-#if defined(SUNOS4) || defined(SUNOS5) || defined(NETBSD1) || defined(FREEBSD) || defined(IRIX5) || defined(OSF1) ||defined(LINUX_ELF)
+#if defined(SUNOS4) || defined(SUNOS5) || defined(NETBSD1) || defined(OPENBSD) || defined(FREEBSD) || defined(IRIX5) || defined(OSF1) ||defined(LINUX_ELF)
 
 static void load_and_call(char *path, char *fct_name)
 {
@@ -224,7 +228,7 @@
   for (p = path, slash = p-1; *p; p++)		/* Find position of last '/' */
     if (*p == '/') slash = p;
 
-#if defined(NETBSD1) || defined(FREEBSD)
+#if defined(NETBSD1) || defined(OPENBSD) || defined(FREEBSD)
   sprintf(fct_name, "_STk_init_%s", slash + 1);
 #else
   sprintf(fct_name, "STk_init_%s", slash + 1);
