$OpenBSD$
--- src/boehm-gc/dyn_load.c.orig	Mon Feb 13 18:14:20 2006
+++ src/boehm-gc/dyn_load.c	Mon Apr 10 07:56:56 2006
@@ -60,6 +60,7 @@
     !defined(HPUX) && !(defined(LINUX) && defined(__ELF__)) && \
     !defined(RS6000) && !defined(SCO_ELF) && !defined(DGUX) && \
     !(defined(FREEBSD) && defined(__ELF__)) && \
+    !(defined(OPENBSD) && (defined(__ELF__) || defined(M68K))) && \
     !(defined(NETBSD) && defined(__ELF__)) && !defined(HURD) && \
     !defined(DARWIN)
  --> We only know how to find data segments of dynamic libraries for the
@@ -90,9 +91,10 @@
 
 #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
     (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
+    (defined(OPENBSD) && defined(__ELF__)) || \
     (defined(NETBSD) && defined(__ELF__)) || defined(HURD)
 #   include <stddef.h>
-#   include <elf.h>
+/*#   include <elf.h> conflict*/
 #   include <link.h>
 #endif
 
@@ -290,6 +292,7 @@ void GC_register_dynamic_libraries()
 
 #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
     (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
+    (defined(OPENBSD) && defined(__ELF__)) || \
     (defined(NETBSD) && defined(__ELF__)) || defined(HURD)
 
 
@@ -480,6 +483,10 @@ GC_bool GC_register_main_static_data()
 #  ifndef PF_W
 #  define PF_W         2
 #  endif
+
+#elif defined(OPENBSD)
+/*conflict*/
+#  include <sys/exec_elf.h>
 #else
 #  include <elf.h>
 #endif
