*** ./os_dep.c.orig	Wed Jul 27 20:33:34 2005
--- ./os_dep.c	Sat Dec 10 10:15:25 2005
***************
*** 393,398 ****
--- 393,420 ----
    }
  #endif
  
+ #if defined(OPENBSD)
+   #if defined(__ELF__)
+   ptr_t GC_data_start;
+ 
+   void GC_init_openbsd_elf()
+   {
+     extern ptr_t GC_find_limit();
+     GC_data_start = GC_find_limit((ptr_t)&end, FALSE);
+ //  fprintf(stderr,"GC_init_openbsd_elf::GC_find_limit: 0x%08x\n", GC_data_start ); fflush(stderr);
+   }
+   #else
+   ptr_t GC_data_start;
+ 
+   void GC_init_openbsd_aout()
+   {
+     extern ptr_t GC_find_limit();
+     GC_data_start = GC_find_limit((ptr_t)&end, FALSE);
+ //  fprintf(stderr,"GC_init_openbsd_aout::GC_find_limit: 0x%08x\n", GC_data_start ); fflush(stderr);
+   }
+   #endif
+ #endif
+ 
  # ifdef OS2
  
  # include <stddef.h>
***************
*** 691,700 ****
  #   endif
  
  #   if defined(SUNOS5SIGS) || defined(IRIX5) || defined(OSF1) \
!     || defined(HURD) || defined(NETBSD)
  	static struct sigaction old_segv_act;
  #	if defined(IRIX5) || defined(HPUX) \
! 	|| defined(HURD) || defined(NETBSD)
  	    static struct sigaction old_bus_act;
  #	endif
  #   else
--- 713,722 ----
  #   endif
  
  #   if defined(SUNOS5SIGS) || defined(IRIX5) || defined(OSF1) \
!     || defined(HURD) || defined(NETBSD) || defined(OPENBSD)
  	static struct sigaction old_segv_act;
  #	if defined(IRIX5) || defined(HPUX) \
! 	|| defined(HURD) || defined(NETBSD) || defined(OPENBSD)
  	    static struct sigaction old_bus_act;
  #	endif
  #   else
***************
*** 709,715 ****
  #   endif
      {
  #	if defined(SUNOS5SIGS) || defined(IRIX5)  \
!         || defined(OSF1) || defined(HURD) || defined(NETBSD)
  	  struct sigaction	act;
  
  	  act.sa_handler	= h;
--- 731,737 ----
  #   endif
      {
  #	if defined(SUNOS5SIGS) || defined(IRIX5)  \
!         || defined(OSF1) || defined(HURD) || defined(NETBSD) || defined(OPENBSD)
  	  struct sigaction	act;
  
  	  act.sa_handler	= h;
***************
*** 731,737 ****
  #	  else
  	        (void) sigaction(SIGSEGV, &act, &old_segv_act);
  #		if defined(IRIX5) \
! 		   || defined(HPUX) || defined(HURD) || defined(NETBSD)
  		    /* Under Irix 5.x or HP/UX, we may get SIGBUS.	*/
  		    /* Pthreads doesn't exist under Irix 5.x, so we	*/
  		    /* don't have to worry in the threads case.		*/
--- 753,759 ----
  #	  else
  	        (void) sigaction(SIGSEGV, &act, &old_segv_act);
  #		if defined(IRIX5) \
! 		   || defined(HPUX) || defined(HURD) || defined(NETBSD) || defined(OPENBSD)
  		    /* Under Irix 5.x or HP/UX, we may get SIGBUS.	*/
  		    /* Pthreads doesn't exist under Irix 5.x, so we	*/
  		    /* don't have to worry in the threads case.		*/
***************
*** 767,776 ****
      void GC_reset_fault_handler()
      {
  #       if defined(SUNOS5SIGS) || defined(IRIX5) \
! 	   || defined(OSF1) || defined(HURD) || defined(NETBSD)
  	  (void) sigaction(SIGSEGV, &old_segv_act, 0);
  #	  if defined(IRIX5) \
! 	     || defined(HPUX) || defined(HURD) || defined(NETBSD)
  	      (void) sigaction(SIGBUS, &old_bus_act, 0);
  #	  endif
  #       else
--- 789,798 ----
      void GC_reset_fault_handler()
      {
  #       if defined(SUNOS5SIGS) || defined(IRIX5) \
! 	   || defined(OSF1) || defined(HURD) || defined(NETBSD) || defined(OPENBSD)
  	  (void) sigaction(SIGSEGV, &old_segv_act, 0);
  #	  if defined(IRIX5) \
! 	     || defined(HPUX) || defined(HURD) || defined(NETBSD) || defined(OPENBSD)
  	      (void) sigaction(SIGBUS, &old_bus_act, 0);
  #	  endif
  #       else
