diff -uNr ../devel/boehm-gc/CVS/Entries boehm-gc/CVS/Entries
--- ../devel/boehm-gc/CVS/Entries	Mon Jul  2 22:50:23 2007
+++ boehm-gc/CVS/Entries	Thu Jan  1 03:00:00 1970
@@ -1,4 +0,0 @@
-/Makefile/1.33/Sat Oct 28 11:19:20 2006//
-/distinfo/1.6/Thu Apr  5 15:37:52 2007//
-D/patches////
-D/pkg////
diff -uNr ../devel/boehm-gc/CVS/Repository boehm-gc/CVS/Repository
--- ../devel/boehm-gc/CVS/Repository	Sat Jun 30 12:20:05 2007
+++ boehm-gc/CVS/Repository	Thu Jan  1 03:00:00 1970
@@ -1 +0,0 @@
-ports/devel/boehm-gc
diff -uNr ../devel/boehm-gc/CVS/Root boehm-gc/CVS/Root
--- ../devel/boehm-gc/CVS/Root	Sat Jun 30 12:20:05 2007
+++ boehm-gc/CVS/Root	Thu Jan  1 03:00:00 1970
@@ -1 +0,0 @@
-anoncvs@anoncvs.openbsd.org:/cvs
diff -uNr ../devel/boehm-gc/Makefile boehm-gc/Makefile
--- ../devel/boehm-gc/Makefile	Sat Oct 28 15:19:20 2006
+++ boehm-gc/Makefile	Wed Jul  4 19:33:12 2007
@@ -3,19 +3,21 @@
 
 COMMENT=	"garbage collection and memory leak detection for C and C++"
 
-VERSION=	6.2
-DISTNAME=	gc${VERSION}
-PKGNAME=	boehm-gc-${VERSION}p1
-SHARED_LIBS +=	gc                   1.2      # .1.2
+VERSION=	7.0
+DISTNAME=	gc-${VERSION}
+PKGNAME=	boehm-gc-${VERSION}
 
+SHARED_LIBS +=	gc	1.2	# .1.2
+SHARED_LIBS +=  cord	1.3	# .1.3
+
 CATEGORIES=	devel
-MASTER_SITES=	${HOMEPAGE}gc_source/
 
+MASTER_SITES=	${HOMEPAGE:=gc_source/}
+
 HOMEPAGE=	http://www.hpl.hp.com/personal/Hans_Boehm/gc/
 
 MAINTAINER=	Todd T. Fries <todd@openbsd.org>
 
-
 NOT_FOR_ARCHS=	hppa powerpc vax
 
 PERMIT_PACKAGE_CDROM=	Yes
@@ -28,15 +30,16 @@
 		INSTALL_MAN="${INSTALL_MAN}"
 
 USE_LIBTOOL=	Yes
-CONFIGURE_STYLE=autoconf no-autoheader
-AUTOCONF_VERSION=2.54
-CONFIGURE_ARGS= ${CONFIGURE_SHARED} --enable-full-debug
 
+CONFIGURE_STYLE=gnu
+
+CONFIGURE_ARGS= ${CONFIGURE_SHARED} \
+		CFLAGS="-DSIG_SUSPEND=SIGUSR2" \
+		--enable-full-debug
+
 # XXX the below causes failures still
 #	--enable-redirect-malloc 
 
-WRKDIST=	${WRKDIR}/gc${VERSION}
-
 pre-configure:
 	@mv ${WRKSRC}/doc/gc.man ${WRKSRC}/doc/gc.man.in
 	@sed -e "s,@PREFIX@,${PREFIX},g" ${WRKSRC}/doc/gc.man.in > \
@@ -45,6 +48,7 @@
 aliases=	malloc malloc_atomic free realloc enable_incremental \
 		register_finalizer malloc_ignore_off_page \
 		malloc_atomic_ignore_off_page set_warn_proc
+
 post-install:
 	${INSTALL_DATA} ${WRKSRC}/doc/gc.man ${PREFIX}/man/man3/gc.3
 .for i in ${aliases}
@@ -54,6 +58,6 @@
 	${INSTALL_DATA} ${WRKSRC}/include/gc{,_{cpp,backptr,gcj,mark,typed}}.h ${PREFIX}/include
 	${INSTALL_DATA} ${WRKSRC}/include/private/gc{config,_{hdrs,locks,priv,pmark}}.h ${PREFIX}/include/private
 
-REGRESS_TARGET=	check-TESTS
+REGRESS_FLAGS=	LDFLAGS="-lpthread"
 
 .include <bsd.port.mk>
diff -uNr ../devel/boehm-gc/distinfo boehm-gc/distinfo
--- ../devel/boehm-gc/distinfo	Thu Apr  5 19:37:52 2007
+++ boehm-gc/distinfo	Wed Jul  4 16:07:30 2007
@@ -1,5 +1,5 @@
-MD5 (gc6.2.tar.gz) = FUkrFMp7mp4DUjhhHpzR4w==
-RMD160 (gc6.2.tar.gz) = hJlpAh5BaX3Hz9Z3Ngesc/C1Jb4=
-SHA1 (gc6.2.tar.gz) = 7xf49W6YU+9BgI/fXEx78vePH+w=
-SHA256 (gc6.2.tar.gz) = NE0b8RJeCPDB0gew995foGJ1sWczO1rMl6wVXQxY2fc=
-SIZE (gc6.2.tar.gz) = 750883
+MD5 (gc-7.0.tar.gz) = NkXM9fMuuyfZmyew0p6cOA==
+RMD160 (gc-7.0.tar.gz) = SRLiWQ3YISvr7rHjJQZ2LKMdAIg=
+SHA1 (gc-7.0.tar.gz) = ZX2EtwKlcvilENLChXim26rT/tI=
+SHA256 (gc-7.0.tar.gz) = 0grG6Tm4J3BDS3bk99wYpAmdUH609CpdOtdGJQwBHls=
+SIZE (gc-7.0.tar.gz) = 1072682
diff -uNr ../devel/boehm-gc/patches/CVS/Entries boehm-gc/patches/CVS/Entries
--- ../devel/boehm-gc/patches/CVS/Entries	Sat Jun 30 12:20:05 2007
+++ boehm-gc/patches/CVS/Entries	Thu Jan  1 03:00:00 1970
@@ -1,10 +0,0 @@
-/patch-configure_in/1.1/Wed Oct 15 17:11:36 2003//
-/patch-doc_gc_man/1.3/Mon Sep  5 11:41:56 2005//
-/patch-dyn_load_c/1.4/Thu Oct 16 04:11:15 2003//
-/patch-finalize_c/1.1/Tue Nov 11 23:49:08 2003//
-/patch-include_gc_h/1.1/Tue Nov 11 23:49:08 2003//
-/patch-include_private_gcconfig_h/1.12/Mon Mar 15 02:47:24 2004//
-/patch-mach_dep_c/1.3/Wed Oct 15 12:58:11 2003//
-/patch-misc_c/1.5/Thu Oct 16 04:11:15 2003//
-/patch-os_dep_c/1.5/Thu Oct 16 04:11:15 2003//
-D
diff -uNr ../devel/boehm-gc/patches/CVS/Repository boehm-gc/patches/CVS/Repository
--- ../devel/boehm-gc/patches/CVS/Repository	Sat Jun 30 12:20:05 2007
+++ boehm-gc/patches/CVS/Repository	Thu Jan  1 03:00:00 1970
@@ -1 +0,0 @@
-ports/devel/boehm-gc/patches
diff -uNr ../devel/boehm-gc/patches/CVS/Root boehm-gc/patches/CVS/Root
--- ../devel/boehm-gc/patches/CVS/Root	Sat Jun 30 12:20:05 2007
+++ boehm-gc/patches/CVS/Root	Thu Jan  1 03:00:00 1970
@@ -1 +0,0 @@
-anoncvs@anoncvs.openbsd.org:/cvs
diff -uNr ../devel/boehm-gc/patches/patch-configure_in boehm-gc/patches/patch-configure_in
--- ../devel/boehm-gc/patches/patch-configure_in	Wed Oct 15 21:11:36 2003
+++ boehm-gc/patches/patch-configure_in	Thu Jan  1 03:00:00 1970
@@ -1,32 +0,0 @@
-$OpenBSD: patch-configure_in,v 1.1 2003/10/15 17:11:36 todd Exp $
---- configure.in.orig	2003-10-15 06:16:18.000000000 -0500
-+++ configure.in	2003-10-15 06:17:19.000000000 -0500
-@@ -236,27 +236,13 @@ AC_SUBST(CXXINCLUDES)
- AC_MSG_CHECKING(whether to build shared libraries)
- AC_ENABLE_SHARED
- 
--case "$host" in
-- alpha-*-openbsd*)
--     enable_shared=no
--     AC_MSG_RESULT(no)
--     ;;
-- *)
--     AC_MSG_RESULT(yes)
--     ;;
--esac
-+AC_MSG_RESULT(yes)
- 
- # Configuration of machine-dependent code
- #
- AC_MSG_CHECKING(which machine-dependent code should be used) 
- machdep=
- case "$host" in
-- alpha-*-openbsd*)
--    machdep="alpha_mach_dep.lo"
--    if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then
--       AC_MSG_WARN(OpenBSD/Alpha without dlopen(). Shared library support is disabled)
--    fi
--    ;;
-  alpha*-*-linux*)
-     machdep="alpha_mach_dep.lo"
-     ;;
diff -uNr ../devel/boehm-gc/patches/patch-finalize_c boehm-gc/patches/patch-finalize_c
--- ../devel/boehm-gc/patches/patch-finalize_c	Wed Nov 12 02:49:08 2003
+++ boehm-gc/patches/patch-finalize_c	Thu Jan  1 03:00:00 1970
@@ -1,12 +0,0 @@
-$OpenBSD: patch-finalize_c,v 1.1 2003/11/11 23:49:08 espie Exp $
---- finalize.c.orig	2003-11-11 19:15:17.000000000 +0100
-+++ finalize.c	2003-11-11 19:15:29.000000000 +0100
-@@ -803,7 +803,7 @@ int GC_invoke_finalizers()
-     return count;
- }
- 
--void (* GC_finalizer_notifier)() = (void (*) GC_PROTO((void)))0;
-+void (* GC_finalizer_notifier) GC_PROTO((void)) = (void (*) GC_PROTO((void)))0;
- 
- static GC_word last_finalizer_notification = 0;
- 
diff -uNr ../devel/boehm-gc/patches/patch-include_gc_h boehm-gc/patches/patch-include_gc_h
--- ../devel/boehm-gc/patches/patch-include_gc_h	Wed Nov 12 02:49:08 2003
+++ boehm-gc/patches/patch-include_gc_h	Thu Jan  1 03:00:00 1970
@@ -1,12 +0,0 @@
-$OpenBSD: patch-include_gc_h,v 1.1 2003/11/11 23:49:08 espie Exp $
---- include/gc.h.orig	2003-11-11 19:12:31.000000000 +0100
-+++ include/gc.h	2003-11-11 19:15:50.000000000 +0100
-@@ -122,7 +122,7 @@ GC_API int GC_java_finalization;
- 			/* ordered finalization.  Default value is	*/
- 			/* determined by JAVA_FINALIZATION macro.	*/
- 
--GC_API void (* GC_finalizer_notifier)();
-+GC_API void (* GC_finalizer_notifier) GC_PROTO((void));
- 			/* Invoked by the collector when there are 	*/
- 			/* objects to be finalized.  Invoked at most	*/
- 			/* once per GC cycle.  Never invoked unless 	*/
diff -uNr ../devel/boehm-gc/patches/patch-include_private_gcconfig_h boehm-gc/patches/patch-include_private_gcconfig_h
--- ../devel/boehm-gc/patches/patch-include_private_gcconfig_h	Mon Mar 15 05:47:24 2004
+++ boehm-gc/patches/patch-include_private_gcconfig_h	Wed Jul  4 17:38:09 2007
@@ -1,8 +1,7 @@
-$OpenBSD: patch-include_private_gcconfig_h,v 1.12 2004/03/15 02:47:24 pvalchev Exp $
---- include/private/gcconfig.h.orig	2003-06-16 20:01:23.000000000 -0600
-+++ include/private/gcconfig.h	2004-03-14 14:19:44.000000000 -0700
-@@ -97,7 +97,7 @@
- #    define ARM32
+--- include/private/gcconfig.h.orig	Fri Jun 29 04:00:09 2007
++++ include/private/gcconfig.h	Wed Jul  4 17:29:16 2007
+@@ -99,7 +99,7 @@
+ #    define SH
  #    define mach_type_known
  # endif
 -# if defined(vax)
@@ -10,7 +9,7 @@
  #    define VAX
  #    ifdef ultrix
  #	define ULTRIX
-@@ -216,6 +216,10 @@
+@@ -219,6 +219,10 @@
  #    define I386
  #    define mach_type_known
  # endif
@@ -21,9 +20,9 @@
  # if defined(LINUX) && defined(__x86_64__)
  #    define X86_64
  #    define mach_type_known
-@@ -278,6 +282,16 @@
- #    define POWERPC
- #    define mach_type_known
+@@ -290,6 +294,16 @@
+ #   define MACOS
+ #   define mach_type_known
  # endif
 +# if defined(__OpenBSD__) && (defined(__powerpc__))
 +#   define POWERPC
@@ -35,10 +34,10 @@
 +#   define OPENBSD
 +#   define mach_type_known
 +# endif
- # if defined(__APPLE__) && defined(__MACH__) && defined(__i386__)
- #    define DARWIN
- #    define I386
-@@ -326,6 +340,10 @@
+ # if defined(macosx) || (defined(__APPLE__) && defined(__MACH__))
+ #   define DARWIN
+ #   if defined(__ppc__)  || defined(__ppc64__)
+@@ -358,6 +372,10 @@
      /* DGUX defined */
  #   define mach_type_known
  # endif
@@ -49,56 +48,59 @@
  # if defined(_WIN32_WCE)
      /* SH3, SH4, MIPS already defined for corresponding architectures */
  #   if defined(SH3) || defined(SH4)
-@@ -595,8 +613,8 @@
+@@ -647,14 +665,17 @@
+ #   define ALIGNMENT 2
  #   ifdef OPENBSD
  #	define OS_TYPE "OPENBSD"
- #	define HEURISTIC2
--	extern char etext[];
--#	define DATASTART ((ptr_t)(etext))
-+#	define DATASTART GC_data_start
-+#	define USE_GENERIC_PUSH_REGS
+-#	define HEURISTIC2
+-#	ifdef __ELF__
+-#	  define DATASTART GC_data_start
+-#	  define DYNAMIC_LOADING
+-#	else
+-	  extern char etext[];
+-#	  define DATASTART ((ptr_t)(etext))
+-#       endif
++//#	define HEURISTIC2
++//#	ifdef __ELF__
++//#	  define DATASTART GC_data_start
++//#	  define DYNAMIC_LOADING
++//#	else
++//	  extern char etext[];
++//#	  define DATASTART ((ptr_t)(etext))
++//#       endif
++#       define OPENBSD_STACKBOTTOM
++#       define DATASTART GC_data_start
++#       define HAVE_PUSH_REGS
  #   endif
  #   ifdef NETBSD
  #	define OS_TYPE "NETBSD"
-@@ -761,6 +779,14 @@
- #     define DATASTART GC_data_start
- #     define DYNAMIC_LOADING
+@@ -955,9 +976,12 @@
  #   endif
-+#   ifdef OPENBSD
-+#     define ALIGNMENT 4
-+#     define OS_TYPE "OPENBSD"
-+#     define HEURISTIC2
-+      extern char etext;
-+#     define DATASTART GC_data_start
-+#     define DYNAMIC_LOADING
-+#   endif
- #   ifdef NOSYS
- #     define ALIGNMENT 4
- #     define OS_TYPE "NOSYS"
-@@ -897,9 +923,9 @@
- #   endif
  #   ifdef OPENBSD
  #     define OS_TYPE "OPENBSD"
 -#     define STACKBOTTOM ((ptr_t) 0xf8000000)
 -      extern int etext[];
 -#     define DATASTART ((ptr_t)(etext))
-+#     define HEURISTIC2
++//#     define STACKBOTTOM ((ptr_t) 0xf8000000)
++//      extern int etext[];
++//#     define DATASTART ((ptr_t)(etext))
++#     define OPENBSD_STACKBOTTOM
 +#     define DATASTART GC_data_start
 +#     define DYNAMIC_LOADING
  #   endif
  #   ifdef NETBSD
  #     define OS_TYPE "NETBSD"
-@@ -1145,6 +1171,9 @@
+@@ -1203,6 +1227,9 @@
  #   endif
  #   ifdef OPENBSD
  #	define OS_TYPE "OPENBSD"
-+#	define HEURISTIC2
++#	define OPENBSD_STACKBOTTOM
 +#       define DATASTART GC_data_start
 +#       define DYNAMIC_LOADING
  #   endif
  #   ifdef FREEBSD
  #	define OS_TYPE "FREEBSD"
-@@ -1173,7 +1202,7 @@
+@@ -1238,7 +1265,7 @@
  #   ifdef BSDI
  #	define OS_TYPE "BSDI"
  #   endif
@@ -107,69 +109,67 @@
          || defined(THREE86BSD) || defined(BSDI)
  #	define HEURISTIC2
  	extern char etext[];
-@@ -1435,7 +1464,7 @@
- #   define MACH_TYPE "ALPHA"
- #   define ALIGNMENT 8
- #   define CPP_WORDSZ 64
--#   ifndef LINUX
-+#   if !defined(LINUX)
- #     define USE_GENERIC_PUSH_REGS
-       /* Gcc and probably the DEC/Compaq compiler spill pointers to preserved */
-       /* fp registers in some cases when the target is a 21264.  The assembly */
-@@ -1449,6 +1478,7 @@
- #	define ELFCLASS32 32
- #	define ELFCLASS64 64
- #	define ELF_CLASS ELFCLASS64
-+#   	define CPP_WORDSZ 64
- #       define DYNAMIC_LOADING
+@@ -1489,12 +1516,14 @@
  #   endif
  #   ifdef OPENBSD
-@@ -1456,9 +1486,8 @@
- #	define HEURISTIC2
+ #	define OS_TYPE "OPENBSD"
+-#	define HEURISTIC2
++//#	define HEURISTIC2
++#	define OPENBSD_STACKBOTTOM
  #   	ifdef __ELF__	/* since OpenBSD/Alpha 2.9 */
  #	   define DATASTART GC_data_start
 -#   	   define ELFCLASS32 32
 -#   	   define ELFCLASS64 64
++//#   	   define ELFCLASS32 32
++//#   	   define ELFCLASS64 64
  #   	   define ELF_CLASS ELFCLASS64
 +#	   define DYNAMIC_LOADING
  #       else		/* ECOFF, until OpenBSD/Alpha 2.7 */
  #   	   define DATASTART ((ptr_t) 0x140000000)
  #   	endif
-@@ -1614,16 +1643,22 @@
+@@ -1662,9 +1691,15 @@
+ #   define MACH_TYPE "M88K"
  #   define ALIGNMENT 4
- #   define ALIGN_DOUBLE
      extern int etext[];
 +#   ifdef OPENBSD
 +#	define OS_TYPE "OPENBSD"
-+#	define HEURISTIC2
++#	define OPENBSD_STACKBOTTOM
 +#       define DATASTART GC_data_start
 +#   endif
  #   ifdef CX_UX
  #	define OS_TYPE "CX_UX"
- #       define DATASTART ((((word)etext + 0x3fffff) & ~0x3fffff) + 0x10000)
+-#       define DATASTART ((((word)etext + 0x3fffff) & ~0x3fffff) + 0x10000)
++//#       define DATASTART ((((word)etext + 0x3fffff) & ~0x3fffff) + 0x10000)
 +#       define STACKBOTTOM ((char*)0xf0000000) /* determined empirically */
  #   endif
  #   ifdef  DGUX
  #	define OS_TYPE "DGUX"
- 	extern ptr_t GC_SysVGetDataStart();
- #       define DATASTART GC_SysVGetDataStart(0x10000, etext)
-+#       define STACKBOTTOM ((char*)0xf0000000) /* determined empirically */
+@@ -1764,6 +1799,14 @@
+ #     define OS_TYPE "MSWINCE"
+ #     define DATAEND /* not needed */
  #   endif
--#   define STACKBOTTOM ((char*)0xf0000000) /* determined empirically */
- # endif
- 
- # ifdef S370
-@@ -1765,6 +1800,13 @@
- #   endif
- #   define CACHE_LINE_SIZE 64
- #   define USE_GENERIC_PUSH_REGS
 +#   ifdef OPENBSD
++#     define ALIGNMENT 4
++#     define OS_TYPE "OPENBSD"
++#     define OPENBSD_STACKBOTTOM
++      extern char etext;
++#     define DATASTART GC_data_start
++#     define DYNAMIC_LOADING
++#   endif
+ #   ifdef NOSYS
+       /* __data_start is usually defined in the target linker script.  */
+       extern int __data_start[];
+@@ -1838,6 +1881,13 @@
+ #   define CPP_WORDSZ 64
+ #   ifndef HBLKSIZE
+ #     define HBLKSIZE 4096
++#   endif
++#   ifdef OPENBSD
 +#       define OS_TYPE "OPENBSD"
 +#       define DATASTART GC_data_start
 +#       define HEURISTIC2
 +#       define ELF_CLASS ELFCLASS64
 +#       define DYNAMIC_LOADING
-+#   endif
+ #   endif
+ #   define CACHE_LINE_SIZE 64
  #   ifdef LINUX
- #	define OS_TYPE "LINUX"
- #       define LINUX_STACKBOTTOM
diff -uNr ../devel/boehm-gc/patches/patch-mach_dep_c boehm-gc/patches/patch-mach_dep_c
--- ../devel/boehm-gc/patches/patch-mach_dep_c	Wed Oct 15 16:58:11 2003
+++ boehm-gc/patches/patch-mach_dep_c	Wed Jul  4 18:21:15 2007
@@ -1,12 +1,11 @@
-$OpenBSD: patch-mach_dep_c,v 1.3 2003/10/15 12:58:11 todd Exp $
---- mach_dep.c.orig	2003-06-06 04:50:30.000000000 +1000
-+++ mach_dep.c	2003-10-15 13:42:32.000000000 +1000
-@@ -456,7 +456,7 @@ ptr_t cold_gc_frame;
- /* the stack.	Return sp.						*/
- # ifdef SPARC
-     asm("	.seg 	\"text\"");
--#   if defined(SVR4) || defined(NETBSD)
-+#   if defined(SVR4) || defined(NETBSD) || defined(__ELF__)
-       asm("	.globl	GC_save_regs_in_stack");
-       asm("GC_save_regs_in_stack:");
-       asm("	.type GC_save_regs_in_stack,#function");
+--- mach_dep.c.orig	Mon Jul  2 21:07:21 2007
++++ mach_dep.c	Wed Jul  4 18:20:39 2007
+@@ -73,7 +73,7 @@
+ /* and should not be used on platforms that are either UNIX-like, or	*/
+ /* require thread support.						*/
+ 
+-#undef HAVE_PUSH_REGS
++#define HAVE_PUSH_REGS
+ 
+ #if defined(USE_ASM_PUSH_REGS)
+ #  define HAVE_PUSH_REGS
diff -uNr ../devel/boehm-gc/patches/patch-misc_c boehm-gc/patches/patch-misc_c
--- ../devel/boehm-gc/patches/patch-misc_c	Thu Oct 16 08:11:15 2003
+++ boehm-gc/patches/patch-misc_c	Sun Mar 25 18:43:06 2007
@@ -1,19 +1,14 @@
-$OpenBSD: patch-misc_c,v 1.5 2003/10/16 04:11:15 todd Exp $
---- misc.c.orig	2003-05-29 10:50:10.000000000 -0500
-+++ misc.c	2003-10-16 02:31:36.000000000 -0500
-@@ -635,7 +635,14 @@ void GC_init_inner()
+--- misc.c.orig	Sun Mar 25 15:09:57 2007
++++ misc.c	Sun Mar 25 15:15:00 2007
+@@ -664,7 +664,10 @@ void GC_init_inner()
  #   if defined(SEARCH_FOR_DATA_START)
  	GC_init_linux_data_start();
  #   endif
 -#   if (defined(NETBSD) || defined(OPENBSD)) && defined(__ELF__)
-+#   if defined(OPENBSD)
-+#     if defined(__ELF__)
-+	GC_init_openbsd_elf();
-+#     else
-+	GC_init_openbsd_aout();
-+#     endif
-+#   endif
++#if defined(OPENBSD)
++	GC_init_openbsd();
++#endif
 +#   if defined(NETBSD) && defined(__ELF__)
  	GC_init_netbsd_elf();
  #   endif
- #   if defined(GC_PTHREADS) || defined(GC_SOLARIS_THREADS)
+ #   if defined(GC_PTHREADS) || defined(GC_SOLARIS_THREADS) \
diff -uNr ../devel/boehm-gc/patches/patch-os_dep_c boehm-gc/patches/patch-os_dep_c
--- ../devel/boehm-gc/patches/patch-os_dep_c	Thu Oct 16 08:11:15 2003
+++ boehm-gc/patches/patch-os_dep_c	Wed Jul  4 16:25:15 2007
@@ -1,34 +1,72 @@
-$OpenBSD: patch-os_dep_c,v 1.5 2003/10/16 04:11:15 todd Exp $
---- os_dep.c.orig	2003-06-13 14:11:00.000000000 -0500
-+++ os_dep.c	2003-10-16 02:31:36.000000000 -0500
-@@ -391,6 +391,30 @@ static void *tiny_sbrk(ptrdiff_t increme
+--- os_dep.c.orig	Fri Jun 29 23:17:44 2007
++++ os_dep.c	Wed Jul  4 16:24:58 2007
+@@ -486,7 +486,7 @@
+ #define sbrk tiny_sbrk
+ # endif /* ECOS */
+ 
+-#if (defined(NETBSD) || defined(OPENBSD)) && defined(__ELF__)
++#if defined(NETBSD) && defined(__ELF__)
+   ptr_t GC_data_start;
+ 
+   void GC_init_netbsd_elf(void)
+@@ -499,6 +499,18 @@
    }
  #endif
  
 +#if defined(OPENBSD)
-+  #if defined(__ELF__)
 +  ptr_t GC_data_start;
 +
-+  void GC_init_openbsd_elf()
++  /* Use __progname as GC_data_start. This seems to work on i386. */
++  void GC_init_openbsd()
 +  {
-+    extern ptr_t GC_find_limit();
-+	/* This may need to be environ, without the underscore, for	*/
-+	/* some versions.						*/
-+    GC_data_start = GC_find_limit((ptr_t)&end, FALSE);
++    extern char **__progname;
++    GC_data_start = (ptr_t)&__progname;
 +  }
-+  #else
-+  ptr_t GC_data_start;
-+
-+  void GC_init_openbsd_aout()
-+  {
-+    extern ptr_t GC_find_limit();
-+	/* This may need to be environ, without the underscore, for	*/
-+	/* some versions.						*/
-+    GC_data_start = GC_find_limit((ptr_t)&end, FALSE);
-+  }
-+  #endif
 +#endif
 +
++
  # ifdef OS2
  
  # include <stddef.h>
+@@ -1095,13 +1107,30 @@
+ 
+ #endif /* FREEBSD_STACKBOTTOM */
+ 
++#ifdef OPENBSD_STACKBOTTOM
++
++/* Find the stack using pthread_stackseg_np() */
++
++# include <sys/signal.h>
++# include <pthread.h>
++# include <pthread_np.h>
++        
++  ptr_t GC_openbsd_stack_base(void)
++  {
++    stack_t stack;
++    pthread_stackseg_np(pthread_self(), &stack);
++    return stack.ss_sp;
++  }
++#endif /* OPENBSD_STACKBOTTOM */
++
++
+ #if !defined(BEOS) && !defined(AMIGA) && !defined(MSWIN32) \
+     && !defined(MSWINCE) && !defined(OS2) && !defined(NOSYS) && !defined(ECOS) \
+     && !defined(CYGWIN32)
+ 
+ ptr_t GC_get_main_stack_base(void)
+ {
+-#   if defined(HEURISTIC1) || defined(HEURISTIC2)
++#   if defined(HEURISTIC1) || defined(HEURISTIC2) || defined(OPENBSD_STACKBOTTOM)
+       word dummy;
+ #   endif
+     ptr_t result;
+@@ -1126,6 +1155,9 @@
+ #	endif
+ #	ifdef FREEBSD_STACKBOTTOM
+ 	   result = GC_freebsd_stack_base();
++#	endif
++#	ifdef OPENBSD_STACKBOTTOM
++	   result = GC_openbsd_stack_base();
+ #	endif
+ #	ifdef HEURISTIC2
+ #	    ifdef STACK_GROWS_DOWN
diff -uNr ../devel/boehm-gc/pkg/CVS/Entries boehm-gc/pkg/CVS/Entries
--- ../devel/boehm-gc/pkg/CVS/Entries	Sat Jun 30 12:20:05 2007
+++ boehm-gc/pkg/CVS/Entries	Thu Jan  1 03:00:00 1970
@@ -1,4 +0,0 @@
-/DESCR/1.4/Mon Dec 15 21:42:17 2003//
-/PFRAG.shared/1.4/Fri Jan  6 14:42:59 2006//
-/PLIST/1.10/Mon Sep  5 11:41:56 2005//
-D
diff -uNr ../devel/boehm-gc/pkg/CVS/Repository boehm-gc/pkg/CVS/Repository
--- ../devel/boehm-gc/pkg/CVS/Repository	Sat Jun 30 12:20:05 2007
+++ boehm-gc/pkg/CVS/Repository	Thu Jan  1 03:00:00 1970
@@ -1 +0,0 @@
-ports/devel/boehm-gc/pkg
diff -uNr ../devel/boehm-gc/pkg/CVS/Root boehm-gc/pkg/CVS/Root
--- ../devel/boehm-gc/pkg/CVS/Root	Sat Jun 30 12:20:05 2007
+++ boehm-gc/pkg/CVS/Root	Thu Jan  1 03:00:00 1970
@@ -1 +0,0 @@
-anoncvs@anoncvs.openbsd.org:/cvs
diff -uNr ../devel/boehm-gc/pkg/PFRAG.shared boehm-gc/pkg/PFRAG.shared
--- ../devel/boehm-gc/pkg/PFRAG.shared	Fri Jan  6 17:42:59 2006
+++ boehm-gc/pkg/PFRAG.shared	Wed Jul  4 18:23:53 2007
@@ -1,2 +1,3 @@
-@comment $OpenBSD: PFRAG.shared,v 1.4 2006/01/06 14:42:59 bernd Exp $
+@comment $OpenBSD$
+@lib lib/libcord.so.${LIBcord_VERSION}
 @lib lib/libgc.so.${LIBgc_VERSION}
diff -uNr ../devel/boehm-gc/pkg/PLIST boehm-gc/pkg/PLIST
--- ../devel/boehm-gc/pkg/PLIST	Mon Sep  5 15:41:56 2005
+++ boehm-gc/pkg/PLIST	Wed Jul  4 18:23:53 2007
@@ -1,41 +1,39 @@
-@comment $OpenBSD: PLIST,v 1.10 2005/09/05 11:41:56 espie Exp $
+@comment $OpenBSD$
 %%SHARED%%
 include/gc/
 include/gc.h
 include/gc/gc.h
-include/gc/gc_alloc.h
 include/gc/gc_allocator.h
 include/gc/gc_amiga_redirects.h
 include/gc/gc_backptr.h
 include/gc/gc_config_macros.h
 include/gc/gc_cpp.h
 include/gc/gc_gcj.h
-include/gc/gc_inl.h
 include/gc/gc_inline.h
-include/gc/gc_local_alloc.h
 include/gc/gc_mark.h
 include/gc/gc_pthread_redirects.h
+include/gc/gc_tiny_fl.h
 include/gc/gc_typed.h
 include/gc/leak_detector.h
 include/gc/new_gc_alloc.h
 include/gc/weakpointer.h
 include/gc_backptr.h
-include/gc_config_macros.h
 include/gc_cpp.h
 include/gc_gcj.h
-include/gc_local_alloc.h
 include/gc_mark.h
-include/gc_pthread_redirects.h
 include/gc_typed.h
-include/leak_detector.h
 include/private/
 include/private/gc_hdrs.h
 include/private/gc_locks.h
 include/private/gc_pmark.h
 include/private/gc_priv.h
 include/private/gcconfig.h
+lib/libcord.a
+lib/libcord.la
 lib/libgc.a
 lib/libgc.la
+lib/pkgconfig/
+lib/pkgconfig/bdw-gc.pc
 @man man/man3/GC_enable_incremental.3
 @man man/man3/GC_free.3
 @man man/man3/GC_malloc.3
@@ -70,11 +68,15 @@
 share/gc/README.solaris2
 share/gc/README.uts
 share/gc/README.win32
+share/gc/README.win64
 share/gc/barrett_diagram
 share/gc/debugging.html
-@comment share/gc/gc.man
+share/gc/gc.man
 share/gc/gcdescr.html
 share/gc/gcinterface.html
 share/gc/leak.html
+share/gc/overview.html
+share/gc/porting.html
 share/gc/scale.html
+share/gc/simple_example.html
 share/gc/tree.html
