On 2007/07/04 19:37, Vlad Glagolev wrote:
> Update: added REGRESS_FLAGS to carefully pass the regression tests.

here's a version of the diff that doesn't eat CVS/*, but a certain
something is lacking on sparc64 in 'make regress' (and I'm sure the
build took 10x as long)

./.libs/libgc.so.1.2: undefined reference to `GC_clear_stack_inner'


Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/boehm-gc/Makefile,v
retrieving revision 1.33
diff -u -p -r1.33 Makefile
--- Makefile    28 Oct 2006 11:19:20 -0000      1.33
+++ Makefile    4 Jul 2007 16:48:03 -0000
@@ -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 <[EMAIL PROTECTED]>
 
-
 NOT_FOR_ARCHS= hppa powerpc vax
 
 PERMIT_PACKAGE_CDROM=  Yes
@@ -28,15 +30,16 @@ MAKE_ENV=   CP="cp" \
                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 @@ pre-configure:
 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 @@ post-install:
        ${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>
Index: distinfo
===================================================================
RCS file: /cvs/ports/devel/boehm-gc/distinfo,v
retrieving revision 1.6
diff -u -p -r1.6 distinfo
--- distinfo    5 Apr 2007 15:37:52 -0000       1.6
+++ distinfo    4 Jul 2007 16:48:03 -0000
@@ -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
Index: patches/patch-configure_in
===================================================================
RCS file: patches/patch-configure_in
diff -N patches/patch-configure_in
--- patches/patch-configure_in  15 Oct 2003 17:11:36 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -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"
-     ;;
Index: patches/patch-finalize_c
===================================================================
RCS file: patches/patch-finalize_c
diff -N patches/patch-finalize_c
--- patches/patch-finalize_c    11 Nov 2003 23:49:08 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -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;
- 
Index: patches/patch-include_gc_h
===================================================================
RCS file: patches/patch-include_gc_h
diff -N patches/patch-include_gc_h
--- patches/patch-include_gc_h  11 Nov 2003 23:49:08 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -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     */
Index: patches/patch-include_private_gcconfig_h
===================================================================
RCS file: /cvs/ports/devel/boehm-gc/patches/patch-include_private_gcconfig_h,v
retrieving revision 1.12
diff -u -p -r1.12 patch-include_private_gcconfig_h
--- patches/patch-include_private_gcconfig_h    15 Mar 2004 02:47:24 -0000      
1.12
+++ patches/patch-include_private_gcconfig_h    4 Jul 2007 16:48:03 -0000
@@ -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 @@ $OpenBSD: patch-include_private_gcconfig
  #    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 @@ $OpenBSD: patch-include_private_gcconfig
  # 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 @@ $OpenBSD: patch-include_private_gcconfig
 +#   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 @@ $OpenBSD: patch-include_private_gcconfig
  # 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
- #   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 @@
+@@ -955,9 +976,12 @@
  #   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 @@ $OpenBSD: patch-include_private_gcconfig
          || 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 */
- #   endif
--#   define STACKBOTTOM ((char*)0xf0000000) /* determined empirically */
- # endif
- 
- # ifdef S370
-@@ -1765,6 +1800,13 @@
+@@ -1764,6 +1799,14 @@
+ #     define OS_TYPE "MSWINCE"
+ #     define DATAEND /* not needed */
  #   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
Index: patches/patch-mach_dep_c
===================================================================
RCS file: /cvs/ports/devel/boehm-gc/patches/patch-mach_dep_c,v
retrieving revision 1.3
diff -u -p -r1.3 patch-mach_dep_c
--- patches/patch-mach_dep_c    15 Oct 2003 12:58:11 -0000      1.3
+++ patches/patch-mach_dep_c    4 Jul 2007 16:48:03 -0000
@@ -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
Index: patches/patch-misc_c
===================================================================
RCS file: /cvs/ports/devel/boehm-gc/patches/patch-misc_c,v
retrieving revision 1.5
diff -u -p -r1.5 patch-misc_c
--- patches/patch-misc_c        16 Oct 2003 04:11:15 -0000      1.5
+++ patches/patch-misc_c        4 Jul 2007 16:48:03 -0000
@@ -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) \
Index: patches/patch-os_dep_c
===================================================================
RCS file: /cvs/ports/devel/boehm-gc/patches/patch-os_dep_c,v
retrieving revision 1.5
diff -u -p -r1.5 patch-os_dep_c
--- patches/patch-os_dep_c      16 Oct 2003 04:11:15 -0000      1.5
+++ patches/patch-os_dep_c      4 Jul 2007 16:48:03 -0000
@@ -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()
-+  {
-+    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);
-+  }
-+  #else
 +  ptr_t GC_data_start;
 +
-+  void GC_init_openbsd_aout()
++  /* 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;
 +  }
-+  #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
Index: pkg/PFRAG.shared
===================================================================
RCS file: /cvs/ports/devel/boehm-gc/pkg/PFRAG.shared,v
retrieving revision 1.4
diff -u -p -r1.4 PFRAG.shared
--- pkg/PFRAG.shared    6 Jan 2006 14:42:59 -0000       1.4
+++ pkg/PFRAG.shared    4 Jul 2007 16:48:03 -0000
@@ -1,2 +1,3 @@
[EMAIL PROTECTED] $OpenBSD: PFRAG.shared,v 1.4 2006/01/06 14:42:59 bernd Exp $
[EMAIL PROTECTED] $OpenBSD$
[EMAIL PROTECTED] lib/libcord.so.${LIBcord_VERSION}
 @lib lib/libgc.so.${LIBgc_VERSION}
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/devel/boehm-gc/pkg/PLIST,v
retrieving revision 1.10
diff -u -p -r1.10 PLIST
--- pkg/PLIST   5 Sep 2005 11:41:56 -0000       1.10
+++ pkg/PLIST   4 Jul 2007 16:48:03 -0000
@@ -1,41 +1,39 @@
[EMAIL PROTECTED] $OpenBSD: PLIST,v 1.10 2005/09/05 11:41:56 espie Exp $
[EMAIL PROTECTED] $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.sgi
 share/gc/README.solaris2
 share/gc/README.uts
 share/gc/README.win32
+share/gc/README.win64
 share/gc/barrett_diagram
 share/gc/debugging.html
[EMAIL PROTECTED] 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

Reply via email to