There are two PRs updating devel/boehm-gc and its variants; ports/175590 and ports/176011. The former makes devel/boehm-gc as a master port and others as slaves, and delete redundant files. The latter has patches brushed up. I've combined those two sets of patch. There is another PR open for devel/boehm-gc, ports/175233. The test code on that report no longer build aginst the new version. I don't know whether the problem was fixed. Fix: The patch follows: How-To-Repeat: N/A
- act.sa_handler = h; -@@ -846,7 +846,7 @@ - # else - (void) sigaction(SIGSEGV, &act, &old_segv_act); - # if defined(IRIX5) && defined(_sigargs) /* Irix 5.x, not 6.x */ \ -- || defined(HPUX) || defined(HURD) || defined(NETBSD) -+ || defined(HPUX) || defined(HURD) || defined(NETBSD) || defined(FREEBSD) - /* 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. */ -@@ -2713,7 +2713,13 @@ - # include <errno.h> - # if defined(FREEBSD) - # define SIG_OK TRUE --# define CODE_OK (code == BUS_PAGE_FAULT) -+# if defined(POWERPC) -+# define AIM /* Pretend that we're AIM. */ -+# include <machine/trap.h> -+# define CODE_OK (code == EXC_DSI) -+# else -+# define CODE_OK (code == BUS_PAGE_FAULT) -+# endif - # elif defined(OSF1) - # define SIG_OK (sig == SIGSEGV) - # define CODE_OK (code == 2 /* experimentally determined */) Index: devel/boehm-gc-redirect/files/patch-configure =================================================================== --- devel/boehm-gc-redirect/files/patch-configure (revision 313562) +++ devel/boehm-gc-redirect/files/patch-configure (working copy) @@ -1,12 +0,0 @@ ---- configure.orig 2009-12-19 14:02:54.000000000 +0300 -+++ configure 2009-12-19 14:04:13.000000000 +0300 -@@ -6161,6 +6161,9 @@ - sparc-*-netbsd*) - machdep="mach_dep.lo sparc_netbsd_mach_dep.lo" - ;; -+ sparc64-*-freebsd*) -+ machdep="mach_dep.lo sparc_mach_dep.lo" -+ ;; - sparc-sun-solaris2.3) - machdep="mach_dep.lo sparc_mach_dep.lo" - cat >>confdefs.h <<\_ACEOF Index: devel/boehm-gc-redirect/files/patch-dbg_mlc.c =================================================================== --- devel/boehm-gc-redirect/files/patch-dbg_mlc.c (revision 313562) +++ devel/boehm-gc-redirect/files/patch-dbg_mlc.c (working copy) @@ -1,77 +0,0 @@ ---- dbg_mlc.c.orig 2009-10-20 00:34:39.000000000 +0400 -+++ dbg_mlc.c 2009-10-20 00:41:22.000000000 +0400 -@@ -456,10 +456,34 @@ - GC_register_displacement((word)sizeof(oh) + offset); - } - -+#if defined(__FreeBSD__) -+#include <dlfcn.h> -+static void GC_caller_func_offset(ad, symp, offp) -+const GC_word ad; -+const char **symp; -+int *offp; -+{ -+ Dl_info caller; -+ if (dladdr((const void *)ad, &caller) && caller.dli_sname != NULL) { -+ *symp = caller.dli_sname; -+ *offp = (const char *)ad - (const char *)caller.dli_saddr; -+ } -+} -+#else -+#define GC_caller_func(ad, symp, offp) -+#endif -+ - void * GC_debug_malloc(size_t lb, GC_EXTRA_PARAMS) - { - void * result = GC_malloc(lb + DEBUG_BYTES); -- -+ -+#ifdef GC_ADD_CALLER -+ if (s == NULL) { -+ GC_caller_func_offset(ra, &s, &i); -+ if (s == NULL) -+ s = "unknown"; -+ } -+#endif - if (result == 0) { - GC_err_printf("GC_debug_malloc(%lu) returning NIL (", - (unsigned long) lb); -@@ -764,6 +788,13 @@ - size_t old_sz; - hdr * hhdr; - -+#ifdef GC_ADD_CALLER -+ if (s == NULL) { -+ GC_caller_func_offset(ra, &s, &i); -+ if (s == NULL) -+ s = "unknown"; -+ } -+#endif - if (p == 0) return(GC_debug_malloc(lb, OPT_RA s, i)); - if (base == 0) { - GC_err_printf("Attempt to reallocate invalid pointer %p\n", p); -@@ -1041,17 +1072,21 @@ - } - - #ifdef GC_ADD_CALLER --# define RA GC_RETURN_ADDR, -+# ifdef GC_RETURN_ADDR_PARENT -+# define RA GC_RETURN_ADDR_PARENT, -+# else -+# define RA GC_RETURN_ADDR, -+# endif - #else - # define RA - #endif - - void * GC_debug_malloc_replacement(size_t lb) - { -- return GC_debug_malloc(lb, RA "unknown", 0); -+ return GC_debug_malloc(lb, RA NULL, 0); - } - - void * GC_debug_realloc_replacement(void *p, size_t lb) - { -- return GC_debug_realloc(p, lb, RA "unknown", 0); -+ return GC_debug_realloc(p, lb, RA NULL, 0); - } Index: devel/boehm-gc-redirect/files/patch-dyn_load.c =================================================================== --- devel/boehm-gc-redirect/files/patch-dyn_load.c (revision 313562) +++ devel/boehm-gc-redirect/files/patch-dyn_load.c (working copy) @@ -1,15 +0,0 @@ ---- dyn_load.c.orig Thu May 6 08:03:06 2004 -+++ dyn_load.c Sun Oct 31 01:53:01 2004 -@@ -97,6 +97,12 @@ - # else - # define ElfW(type) Elf64_##type - # endif -+# elif defined(__FreeBSD__) -+# if __ELF_WORD_SIZE == 32 -+# define ElfW(type) Elf32_##type -+# else -+# define ElfW(type) Elf64_##type -+# endif - # else - # if !defined(ELF_CLASS) || ELF_CLASS == ELFCLASS32 - # define ElfW(type) Elf32_##type Index: devel/boehm-gc-redirect/files/patch-include-gc.h =================================================================== --- devel/boehm-gc-redirect/files/patch-include-gc.h (revision 313562) +++ devel/boehm-gc-redirect/files/patch-include-gc.h (working copy) @@ -1,10 +0,0 @@ ---- include/gc.h.orig Wed Jun 4 17:07:33 2003 -+++ include/gc.h Wed May 12 20:03:22 2004 -@@ -487,6 +487,7 @@ - /* gcc knows how to retrieve return address, but we don't know */ - /* how to generate call stacks. */ - # define GC_RETURN_ADDR (GC_word)__builtin_return_address(0) -+# define GC_RETURN_ADDR_PARENT (GC_word)__builtin_return_address(1) - # else - /* Just pass 0 for gcc compatibility. */ - # define GC_RETURN_ADDR 0 Index: devel/boehm-gc-redirect/files/patch-include-private-gcconfig.h =================================================================== --- devel/boehm-gc-redirect/files/patch-include-private-gcconfig.h (revision 313562) +++ devel/boehm-gc-redirect/files/patch-include-private-gcconfig.h (working copy) @@ -1,63 +0,0 @@ ---- include/private/gcconfig.h.orig 2008-02-20 22:23:00.000000000 +0300 -+++ include/private/gcconfig.h 2009-10-20 01:08:38.000000000 +0400 -@@ -64,7 +64,7 @@ - /* Determine the machine type: */ - # if defined(__arm__) || defined(__thumb__) - # define ARM32 --# if !defined(LINUX) && !defined(NETBSD) -+# if !defined(LINUX) && !defined(NETBSD) && !defined(FREEBSD) - # define NOSYS - # define mach_type_known - # endif -@@ -334,10 +334,26 @@ - # define X86_64 - # define mach_type_known - # endif -+# if defined(__FreeBSD__) && defined(__amd64__) -+# define X86_64 -+# define mach_type_known -+# endif -+# if defined(__FreeBSD__) && defined(__ia64__) -+# define IA64 -+# define mach_type_known -+# endif - # if defined(FREEBSD) && defined(__sparc__) - # define SPARC - # define mach_type_known - # endif -+# if defined(FREEBSD) && defined(__powerpc__) -+# define POWERPC -+# define mach_type_known -+# endif -+# if defined(FREEBSD) && defined(__arm__) -+# define ARM32 -+# define mach_type_known -+# endif - # if defined(bsdi) && (defined(i386) || defined(__i386__)) - # define I386 - # define BSDI -@@ -1771,6 +1787,16 @@ - # define OS_TYPE "MSWINCE" - # define DATAEND /* not needed */ - # endif -+# ifdef FREEBSD -+# define ALIGNMENT 4 -+# define OS_TYPE "FREEBSD" -+# ifdef __ELF__ -+# define DYNAMIC_LOADING -+# endif -+# define HEURISTIC2 -+ extern char etext[]; -+# define SEARCH_FOR_DATA_START -+# endif - # ifdef NOSYS - /* __data_start is usually defined in the target linker script. */ - extern int __data_start[]; -@@ -1800,6 +1826,7 @@ - # define OS_TYPE "MSWINCE" - # define DATAEND /* not needed */ - # endif -+ - # ifdef LINUX - # define OS_TYPE "LINUX" - # define LINUX_STACKBOTTOM Index: devel/boehm-gc-redirect/files/patch-os_dep.c =================================================================== --- devel/boehm-gc-redirect/files/patch-os_dep.c (revision 313562) +++ devel/boehm-gc-redirect/files/patch-os_dep.c (working copy) @@ -1,44 +0,0 @@ ---- os_dep.c.orig 2008-02-29 11:01:28.000000000 -0800 -+++ os_dep.c 2010-04-01 00:50:34.000000000 -0700 -@@ -816,7 +816,7 @@ - || defined(HURD) || defined(NETBSD) - static struct sigaction old_segv_act; - # if defined(_sigargs) /* !Irix6.x */ || defined(HPUX) \ -- || defined(HURD) || defined(NETBSD) -+ || defined(HURD) || defined(NETBSD) || defined(FREEBSD) - static struct sigaction old_bus_act; - # endif - # else -@@ -826,7 +826,7 @@ - void GC_set_and_save_fault_handler(handler h) - { - # if defined(SUNOS5SIGS) || defined(IRIX5) \ -- || defined(OSF1) || defined(HURD) || defined(NETBSD) -+ || defined(OSF1) || defined(HURD) || defined(NETBSD) || defined(FREEBSD) - struct sigaction act; - - act.sa_handler = h; -@@ -846,7 +846,7 @@ - # else - (void) sigaction(SIGSEGV, &act, &old_segv_act); - # if defined(IRIX5) && defined(_sigargs) /* Irix 5.x, not 6.x */ \ -- || defined(HPUX) || defined(HURD) || defined(NETBSD) -+ || defined(HPUX) || defined(HURD) || defined(NETBSD) || defined(FREEBSD) - /* 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. */ -@@ -2713,7 +2713,13 @@ - # include <errno.h> - # if defined(FREEBSD) - # define SIG_OK TRUE --# define CODE_OK (code == BUS_PAGE_FAULT) -+# if defined(POWERPC) -+# define AIM /* Pretend that we're AIM. */ -+# include <machine/trap.h> -+# define CODE_OK (code == EXC_DSI) -+# else -+# define CODE_OK (code == BUS_PAGE_FAULT) -+# endif - # elif defined(OSF1) - # define SIG_OK (sig == SIGSEGV) - # define CODE_OK (code == 2 /* experimentally determined */) Index: devel/boehm-gc-threaded/Makefile =================================================================== --- devel/boehm-gc-threaded/Makefile (revision 313503) +++ devel/boehm-gc-threaded/Makefile (working copy) @@ -1,73 +1,15 @@ -# New ports collection makefile for: boehm-gc-redirect -# Date created: 12/17/2009 -# Whom: stas -# +# Created by: stas # $FreeBSD$ -# -PORTNAME= boehm-gc -PORTVERSION= 7.1 -PORTREVISION= 1 -CATEGORIES= devel -MASTER_SITES= http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/ -PKGNAMESUFFIX= -${GC_VARIANT} -DISTNAME= gc-${PORTVERSION:S/.a/alpha/} +PORTREVISION= 0 -MAINTAINER= ports@FreeBSD.org -COMMENT= Garbage collection and memory leak detection for C and C++ +COMMENT= Garbage collection and memory leak detection for C and C++ with threading support -RUN_DEPENDS= ${PREFIX}/include/gc/gc.h:${PORTSDIR}/devel/boehm-gc +LICENSE= MIT -GNU_CONFIGURE= yes -USE_LDCONFIG= yes -CONFIGURE_ARGS= --enable-cplusplus --disable-static --enable-threads=posix \ - --enable-thread-local-alloc -CONFIGURE_ENV= CFLAGSS="${CFLAGS} LIBS="${LIBS} -MAKE_JOBS_UNSAFE= yes -INSTLIBS= cord gc gccpp +MASTERDIR= ${.CURDIR}/../boehm-gc +DESCR= ${.CURDIR}/pkg-descr + GC_VARIANT= threaded -SOVER= 1 -OPTIONS_DEFINE= PARALLEL_MARK DEBUG -PARALLEL_MARK_DESC= Parallel-thread marking (faster for SMP) - -PLIST_FILES= ${INSTLIBS:S,^,lib/lib,g:S,$,-${GC_VARIANT}.so.${SOVER},g} \ - ${INSTLIBS:S,^,lib/lib,g:S,$,-${GC_VARIANT}.so,g} \ - libdata/pkgconfig/bdw-gc-${GC_VARIANT}.pc - -.include <bsd.port.pre.mk> - -.if ${ARCH} == "ia64" -BROKEN= Does not compile on ia64 -.endif - -.if ${PORT_OPTIONS:MPARALLEL_MARK} -CONFIGURE_ARGS+= --enable-parallel-mark -.endif - -.if ${PORT_OPTIONS:MDEBUG} -CONFIGURE_ARGS+= --enable-gc-debug -PKGNAMESUFFIX:= ${PKGNAMESUFFIX}+fulldebug -.endif - -post-patch: - ${REINPLACE_CMD} -E -e 's,libgc\.la,libgc-${GC_VARIANT}.la,g' \ - -e 's,libgccpp\.la,libgccpp-${GC_VARIANT}.la,g' \ - -e 's,libcord\.la,libcord-${GC_VARIANT}.la,g' \ - ${WRKSRC}/Makefile.in - ${REINPLACE_CMD} -e 's,-lgc,-lgc-${GC_VARIANT},' ${WRKSRC}/bdw-gc.pc.in - -do-install: -.for LIB in ${INSTLIBS} - ${INSTALL_DATA} ${WRKSRC}/.libs/lib${LIB}-${GC_VARIANT}.so.${SOVER} \ - ${PREFIX}/lib/lib${LIB}-${GC_VARIANT}.so.${SOVER} - @(cd ${PREFIX}/lib && ${LN} -s lib${LIB}-${GC_VARIANT}.so.${SOVER} \ - lib${LIB}-${GC_VARIANT}.so) -.endfor - ${INSTALL_DATA} ${WRKSRC}/bdw-gc.pc \ - ${PREFIX}/libdata/pkgconfig/bdw-gc-${GC_VARIANT}.pc - -test: build - cd ${WRKSRC} && ${MAKE} check - -.include <bsd.port.post.mk> +.include "${MASTERDIR}/Makefile" Index: devel/boehm-gc-threaded/distinfo =================================================================== --- devel/boehm-gc-threaded/distinfo (revision 313562) +++ devel/boehm-gc-threaded/distinfo (working copy) @@ -1,2 +0,0 @@ -SHA256 (gc-7.1.tar.gz) = e3cef6028fe3efe7de3bcf4107c880eae50b3ee79841450d885467c09bcebf30 -SIZE (gc-7.1.tar.gz) = 1077714 Index: devel/boehm-gc-threaded/files/patch-dbg_mlc.c =================================================================== --- devel/boehm-gc-threaded/files/patch-dbg_mlc.c (revision 313562) +++ devel/boehm-gc-threaded/files/patch-dbg_mlc.c (working copy) @@ -1,77 +0,0 @@ ---- dbg_mlc.c.orig 2009-10-20 00:34:39.000000000 +0400 -+++ dbg_mlc.c 2009-10-20 00:41:22.000000000 +0400 -@@ -456,10 +456,34 @@ - GC_register_displacement((word)sizeof(oh) + offset); - } - -+#if defined(__FreeBSD__) -+#include <dlfcn.h> -+static void GC_caller_func_offset(ad, symp, offp) -+const GC_word ad; -+const char **symp; -+int *offp; -+{ -+ Dl_info caller; -+ if (dladdr((const void *)ad, &caller) && caller.dli_sname != NULL) { -+ *symp = caller.dli_sname; -+ *offp = (const char *)ad - (const char *)caller.dli_saddr; -+ } -+} -+#else -+#define GC_caller_func(ad, symp, offp) -+#endif -+ - void * GC_debug_malloc(size_t lb, GC_EXTRA_PARAMS) - { - void * result = GC_malloc(lb + DEBUG_BYTES); -- -+ -+#ifdef GC_ADD_CALLER -+ if (s == NULL) { -+ GC_caller_func_offset(ra, &s, &i); -+ if (s == NULL) -+ s = "unknown"; -+ } -+#endif - if (result == 0) { - GC_err_printf("GC_debug_malloc(%lu) returning NIL (", - (unsigned long) lb); -@@ -764,6 +788,13 @@ - size_t old_sz; - hdr * hhdr; - -+#ifdef GC_ADD_CALLER -+ if (s == NULL) { -+ GC_caller_func_offset(ra, &s, &i); -+ if (s == NULL) -+ s = "unknown"; -+ } -+#endif - if (p == 0) return(GC_debug_malloc(lb, OPT_RA s, i)); - if (base == 0) { - GC_err_printf("Attempt to reallocate invalid pointer %p\n", p); -@@ -1041,17 +1072,21 @@ - } - - #ifdef GC_ADD_CALLER --# define RA GC_RETURN_ADDR, -+# ifdef GC_RETURN_ADDR_PARENT -+# define RA GC_RETURN_ADDR_PARENT, -+# else -+# define RA GC_RETURN_ADDR, -+# endif - #else - # define RA - #endif - - void * GC_debug_malloc_replacement(size_t lb) - { -- return GC_debug_malloc(lb, RA "unknown", 0); -+ return GC_debug_malloc(lb, RA NULL, 0); - } - - void * GC_debug_realloc_replacement(void *p, size_t lb) - { -- return GC_debug_realloc(p, lb, RA "unknown", 0); -+ return GC_debug_realloc(p, lb, RA NULL, 0); - } Index: devel/boehm-gc-threaded/files/patch-dyn_load.c =================================================================== --- devel/boehm-gc-threaded/files/patch-dyn_load.c (revision 313562) +++ devel/boehm-gc-threaded/files/patch-dyn_load.c (working copy) @@ -1,15 +0,0 @@ ---- dyn_load.c.orig Thu May 6 08:03:06 2004 -+++ dyn_load.c Sun Oct 31 01:53:01 2004 -@@ -97,6 +97,12 @@ - # else - # define ElfW(type) Elf64_##type - # endif -+# elif defined(__FreeBSD__) -+# if __ELF_WORD_SIZE == 32 -+# define ElfW(type) Elf32_##type -+# else -+# define ElfW(type) Elf64_##type -+# endif - # else - # if !defined(ELF_CLASS) || ELF_CLASS == ELFCLASS32 - # define ElfW(type) Elf32_##type Index: devel/boehm-gc-threaded/files/patch-os_dep.c =================================================================== --- devel/boehm-gc-threaded/files/patch-os_dep.c (revision 313562) +++ devel/boehm-gc-threaded/files/patch-os_dep.c (working copy) @@ -1,44 +0,0 @@ ---- os_dep.c.orig 2008-02-29 11:01:28.000000000 -0800 -+++ os_dep.c 2010-04-01 00:50:34.000000000 -0700 -@@ -816,7 +816,7 @@ - || defined(HURD) || defined(NETBSD) - static struct sigaction old_segv_act; - # if defined(_sigargs) /* !Irix6.x */ || defined(HPUX) \ -- || defined(HURD) || defined(NETBSD) -+ || defined(HURD) || defined(NETBSD) || defined(FREEBSD) - static struct sigaction old_bus_act; - # endif - # else -@@ -826,7 +826,7 @@ - void GC_set_and_save_fault_handler(handler h) - { - # if defined(SUNOS5SIGS) || defined(IRIX5) \ -- || defined(OSF1) || defined(HURD) || defined(NETBSD) -+ || defined(OSF1) || defined(HURD) || defined(NETBSD) || defined(FREEBSD) - struct sigaction act; - - act.sa_handler = h; -@@ -846,7 +846,7 @@ - # else - (void) sigaction(SIGSEGV, &act, &old_segv_act); - # if defined(IRIX5) && defined(_sigargs) /* Irix 5.x, not 6.x */ \ -- || defined(HPUX) || defined(HURD) || defined(NETBSD) -+ || defined(HPUX) || defined(HURD) || defined(NETBSD) || defined(FREEBSD) - /* 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. */ -@@ -2713,7 +2713,13 @@ - # include <errno.h> - # if defined(FREEBSD) - # define SIG_OK TRUE --# define CODE_OK (code == BUS_PAGE_FAULT) -+# if defined(POWERPC) -+# define AIM /* Pretend that we're AIM. */ -+# include <machine/trap.h> -+# define CODE_OK (code == EXC_DSI) -+# else -+# define CODE_OK (code == BUS_PAGE_FAULT) -+# endif - # elif defined(OSF1) - # define SIG_OK (sig == SIGSEGV) - # define CODE_OK (code == 2 /* experimentally determined */) Index: devel/boehm-gc-threaded/files/patch-include-private-gcconfig.h =================================================================== --- devel/boehm-gc-threaded/files/patch-include-private-gcconfig.h (revision 313562) +++ devel/boehm-gc-threaded/files/patch-include-private-gcconfig.h (working copy) @@ -1,63 +0,0 @@ ---- include/private/gcconfig.h.orig 2008-02-20 22:23:00.000000000 +0300 -+++ include/private/gcconfig.h 2009-10-20 01:08:38.000000000 +0400 -@@ -64,7 +64,7 @@ - /* Determine the machine type: */ - # if defined(__arm__) || defined(__thumb__) - # define ARM32 --# if !defined(LINUX) && !defined(NETBSD) -+# if !defined(LINUX) && !defined(NETBSD) && !defined(FREEBSD) - # define NOSYS - # define mach_type_known - # endif -@@ -334,10 +334,26 @@ - # define X86_64 - # define mach_type_known - # endif -+# if defined(__FreeBSD__) && defined(__amd64__) -+# define X86_64 -+# define mach_type_known -+# endif -+# if defined(__FreeBSD__) && defined(__ia64__) -+# define IA64 -+# define mach_type_known -+# endif - # if defined(FREEBSD) && defined(__sparc__) - # define SPARC - # define mach_type_known - # endif -+# if defined(FREEBSD) && defined(__powerpc__) -+# define POWERPC -+# define mach_type_known -+# endif -+# if defined(FREEBSD) && defined(__arm__) -+# define ARM32 -+# define mach_type_known -+# endif - # if defined(bsdi) && (defined(i386) || defined(__i386__)) - # define I386 - # define BSDI -@@ -1771,6 +1787,16 @@ - # define OS_TYPE "MSWINCE" - # define DATAEND /* not needed */ - # endif -+# ifdef FREEBSD -+# define ALIGNMENT 4 -+# define OS_TYPE "FREEBSD" -+# ifdef __ELF__ -+# define DYNAMIC_LOADING -+# endif -+# define HEURISTIC2 -+ extern char etext[]; -+# define SEARCH_FOR_DATA_START -+# endif - # ifdef NOSYS - /* __data_start is usually defined in the target linker script. */ - extern int __data_start[]; -@@ -1800,6 +1826,7 @@ - # define OS_TYPE "MSWINCE" - # define DATAEND /* not needed */ - # endif -+ - # ifdef LINUX - # define OS_TYPE "LINUX" - # define LINUX_STACKBOTTOM Index: devel/boehm-gc-threaded/files/patch-include-gc.h =================================================================== --- devel/boehm-gc-threaded/files/patch-include-gc.h (revision 313562) +++ devel/boehm-gc-threaded/files/patch-include-gc.h (working copy) @@ -1,10 +0,0 @@ ---- include/gc.h.orig Wed Jun 4 17:07:33 2003 -+++ include/gc.h Wed May 12 20:03:22 2004 -@@ -487,6 +487,7 @@ - /* gcc knows how to retrieve return address, but we don't know */ - /* how to generate call stacks. */ - # define GC_RETURN_ADDR (GC_word)__builtin_return_address(0) -+# define GC_RETURN_ADDR_PARENT (GC_word)__builtin_return_address(1) - # else - /* Just pass 0 for gcc compatibility. */ - # define GC_RETURN_ADDR 0 Index: devel/boehm-gc-threaded/files/patch-configure =================================================================== --- devel/boehm-gc-threaded/files/patch-configure (revision 313562) +++ devel/boehm-gc-threaded/files/patch-configure (working copy) @@ -1,12 +0,0 @@ ---- configure.orig 2009-12-19 14:02:54.000000000 +0300 -+++ configure 2009-12-19 14:04:13.000000000 +0300 -@@ -6161,6 +6161,9 @@ - sparc-*-netbsd*) - machdep="mach_dep.lo sparc_netbsd_mach_dep.lo" - ;; -+ sparc64-*-freebsd*) -+ machdep="mach_dep.lo sparc_mach_dep.lo" -+ ;; - sparc-sun-solaris2.3) - machdep="mach_dep.lo sparc_mach_dep.lo" - cat >>confdefs.h <<\_ACEOF Index: devel/boehm-gc-threaded/files/patch-configure =================================================================== --- devel/boehm-gc-threaded/files/patch-configure (revision 313562) +++ devel/boehm-gc-threaded/files/patch-configure (working copy) @@ -1,12 +0,0 @@ ---- configure.orig 2009-12-19 14:02:54.000000000 +0300 -+++ configure 2009-12-19 14:04:13.000000000 +0300 -@@ -6161,6 +6161,9 @@ - sparc-*-netbsd*) - machdep="mach_dep.lo sparc_netbsd_mach_dep.lo" - ;; -+ sparc64-*-freebsd*) -+ machdep="mach_dep.lo sparc_mach_dep.lo" -+ ;; - sparc-sun-solaris2.3) - machdep="mach_dep.lo sparc_mach_dep.lo" - cat >>confdefs.h <<\_ACEOF Index: devel/boehm-gc-threaded/files/patch-dbg_mlc.c =================================================================== --- devel/boehm-gc-threaded/files/patch-dbg_mlc.c (revision 313562) +++ devel/boehm-gc-threaded/files/patch-dbg_mlc.c (working copy) @@ -1,77 +0,0 @@ ---- dbg_mlc.c.orig 2009-10-20 00:34:39.000000000 +0400 -+++ dbg_mlc.c 2009-10-20 00:41:22.000000000 +0400 -@@ -456,10 +456,34 @@ - GC_register_displacement((word)sizeof(oh) + offset); - } - -+#if defined(__FreeBSD__) -+#include <dlfcn.h> -+static void GC_caller_func_offset(ad, symp, offp) -+const GC_word ad; -+const char **symp; -+int *offp; -+{ -+ Dl_info caller; -+ if (dladdr((const void *)ad, &caller) && caller.dli_sname != NULL) { -+ *symp = caller.dli_sname; -+ *offp = (const char *)ad - (const char *)caller.dli_saddr; -+ } -+} -+#else -+#define GC_caller_func(ad, symp, offp) -+#endif -+ - void * GC_debug_malloc(size_t lb, GC_EXTRA_PARAMS) - { - void * result = GC_malloc(lb + DEBUG_BYTES); -- -+ -+#ifdef GC_ADD_CALLER -+ if (s == NULL) { -+ GC_caller_func_offset(ra, &s, &i); -+ if (s == NULL) -+ s = "unknown"; -+ } -+#endif - if (result == 0) { - GC_err_printf("GC_debug_malloc(%lu) returning NIL (", - (unsigned long) lb); -@@ -764,6 +788,13 @@ - size_t old_sz; - hdr * hhdr; - -+#ifdef GC_ADD_CALLER -+ if (s == NULL) { -+ GC_caller_func_offset(ra, &s, &i); -+ if (s == NULL) -+ s = "unknown"; -+ } -+#endif - if (p == 0) return(GC_debug_malloc(lb, OPT_RA s, i)); - if (base == 0) { - GC_err_printf("Attempt to reallocate invalid pointer %p\n", p); -@@ -1041,17 +1072,21 @@ - } - - #ifdef GC_ADD_CALLER --# define RA GC_RETURN_ADDR, -+# ifdef GC_RETURN_ADDR_PARENT -+# define RA GC_RETURN_ADDR_PARENT, -+# else -+# define RA GC_RETURN_ADDR, -+# endif - #else - # define RA - #endif - - void * GC_debug_malloc_replacement(size_t lb) - { -- return GC_debug_malloc(lb, RA "unknown", 0); -+ return GC_debug_malloc(lb, RA NULL, 0); - } - - void * GC_debug_realloc_replacement(void *p, size_t lb) - { -- return GC_debug_realloc(p, lb, RA "unknown", 0); -+ return GC_debug_realloc(p, lb, RA NULL, 0); - } Index: devel/boehm-gc-threaded/files/patch-dyn_load.c =================================================================== --- devel/boehm-gc-threaded/files/patch-dyn_load.c (revision 313562) +++ devel/boehm-gc-threaded/files/patch-dyn_load.c (working copy) @@ -1,15 +0,0 @@ ---- dyn_load.c.orig Thu May 6 08:03:06 2004 -+++ dyn_load.c Sun Oct 31 01:53:01 2004 -@@ -97,6 +97,12 @@ - # else - # define ElfW(type) Elf64_##type - # endif -+# elif defined(__FreeBSD__) -+# if __ELF_WORD_SIZE == 32 -+# define ElfW(type) Elf32_##type -+# else -+# define ElfW(type) Elf64_##type -+# endif - # else - # if !defined(ELF_CLASS) || ELF_CLASS == ELFCLASS32 - # define ElfW(type) Elf32_##type Index: devel/boehm-gc-threaded/files/patch-include-gc.h =================================================================== --- devel/boehm-gc-threaded/files/patch-include-gc.h (revision 313562) +++ devel/boehm-gc-threaded/files/patch-include-gc.h (working copy) @@ -1,10 +0,0 @@ ---- include/gc.h.orig Wed Jun 4 17:07:33 2003 -+++ include/gc.h Wed May 12 20:03:22 2004 -@@ -487,6 +487,7 @@ - /* gcc knows how to retrieve return address, but we don't know */ - /* how to generate call stacks. */ - # define GC_RETURN_ADDR (GC_word)__builtin_return_address(0) -+# define GC_RETURN_ADDR_PARENT (GC_word)__builtin_return_address(1) - # else - /* Just pass 0 for gcc compatibility. */ - # define GC_RETURN_ADDR 0 Index: devel/boehm-gc-threaded/files/patch-include-private-gcconfig.h =================================================================== --- devel/boehm-gc-threaded/files/patch-include-private-gcconfig.h (revision 313562) +++ devel/boehm-gc-threaded/files/patch-include-private-gcconfig.h (working copy) @@ -1,63 +0,0 @@ ---- include/private/gcconfig.h.orig 2008-02-20 22:23:00.000000000 +0300 -+++ include/private/gcconfig.h 2009-10-20 01:08:38.000000000 +0400 -@@ -64,7 +64,7 @@ - /* Determine the machine type: */ - # if defined(__arm__) || defined(__thumb__) - # define ARM32 --# if !defined(LINUX) && !defined(NETBSD) -+# if !defined(LINUX) && !defined(NETBSD) && !defined(FREEBSD) - # define NOSYS - # define mach_type_known - # endif -@@ -334,10 +334,26 @@ - # define X86_64 - # define mach_type_known - # endif -+# if defined(__FreeBSD__) && defined(__amd64__) -+# define X86_64 -+# define mach_type_known -+# endif -+# if defined(__FreeBSD__) && defined(__ia64__) -+# define IA64 -+# define mach_type_known -+# endif - # if defined(FREEBSD) && defined(__sparc__) - # define SPARC - # define mach_type_known - # endif -+# if defined(FREEBSD) && defined(__powerpc__) -+# define POWERPC -+# define mach_type_known -+# endif -+# if defined(FREEBSD) && defined(__arm__) -+# define ARM32 -+# define mach_type_known -+# endif - # if defined(bsdi) && (defined(i386) || defined(__i386__)) - # define I386 - # define BSDI -@@ -1771,6 +1787,16 @@ - # define OS_TYPE "MSWINCE" - # define DATAEND /* not needed */ - # endif -+# ifdef FREEBSD -+# define ALIGNMENT 4 -+# define OS_TYPE "FREEBSD" -+# ifdef __ELF__ -+# define DYNAMIC_LOADING -+# endif -+# define HEURISTIC2 -+ extern char etext[]; -+# define SEARCH_FOR_DATA_START -+# endif - # ifdef NOSYS - /* __data_start is usually defined in the target linker script. */ - extern int __data_start[]; -@@ -1800,6 +1826,7 @@ - # define OS_TYPE "MSWINCE" - # define DATAEND /* not needed */ - # endif -+ - # ifdef LINUX - # define OS_TYPE "LINUX" - # define LINUX_STACKBOTTOM Index: devel/boehm-gc-threaded/files/patch-os_dep.c =================================================================== --- devel/boehm-gc-threaded/files/patch-os_dep.c (revision 313562) +++ devel/boehm-gc-threaded/files/patch-os_dep.c (working copy) @@ -1,44 +0,0 @@ ---- os_dep.c.orig 2008-02-29 11:01:28.000000000 -0800 -+++ os_dep.c 2010-04-01 00:50:34.000000000 -0700 -@@ -816,7 +816,7 @@ - || defined(HURD) || defined(NETBSD) - static struct sigaction old_segv_act; - # if defined(_sigargs) /* !Irix6.x */ || defined(HPUX) \ -- || defined(HURD) || defined(NETBSD) -+ || defined(HURD) || defined(NETBSD) || defined(FREEBSD) - static struct sigaction old_bus_act; - # endif - # else -@@ -826,7 +826,7 @@ - void GC_set_and_save_fault_handler(handler h) - { - # if defined(SUNOS5SIGS) || defined(IRIX5) \ -- || defined(OSF1) || defined(HURD) || defined(NETBSD) -+ || defined(OSF1) || defined(HURD) || defined(NETBSD) || defined(FREEBSD) - struct sigaction act; - - act.sa_handler = h; -@@ -846,7 +846,7 @@ - # else - (void) sigaction(SIGSEGV, &act, &old_segv_act); - # if defined(IRIX5) && defined(_sigargs) /* Irix 5.x, not 6.x */ \ -- || defined(HPUX) || defined(HURD) || defined(NETBSD) -+ || defined(HPUX) || defined(HURD) || defined(NETBSD) || defined(FREEBSD) - /* 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. */ -@@ -2713,7 +2713,13 @@ - # include <errno.h> - # if defined(FREEBSD) - # define SIG_OK TRUE --# define CODE_OK (code == BUS_PAGE_FAULT) -+# if defined(POWERPC) -+# define AIM /* Pretend that we're AIM. */ -+# include <machine/trap.h> -+# define CODE_OK (code == EXC_DSI) -+# else -+# define CODE_OK (code == BUS_PAGE_FAULT) -+# endif - # elif defined(OSF1) - # define SIG_OK (sig == SIGSEGV) - # define CODE_OK (code == 2 /* experimentally determined */) --Multipart_Thu_Mar__7_14:58:00_2013-1--
Give another try. -- Hirohisa Yamaguch <umq@ueo.co.jp>
The last patch seems broken: there are multiple diffs for the same files (e.g. boehm-gc-redirect/files/patch-configure), and one diff against a non-existent file (boehm-gc/files/patch-doc-gc.man).
Vitaly Magerya <vmagerya@gmail.com> wrote: > The last patch seems broken: there are multiple diffs for the same files > (e.g. boehm-gc-redirect/files/patch-configure), and one diff against a > non-existent file (boehm-gc/files/patch-doc-gc.man). I made a mistake when I tried to reorder svn diff output. I intended to rename boehm-gc/files/patch-ab to boehm-gc/files/patch-doc-gc.man, this didn't work, too. Here I attach a fixed patch. Regards, -- Hirohisa Yamaguchi <umq@ueo.co.jp>
OK, as the submitter of ports/176011 I endorse this patch instead of the one in ports/176011, with a few exceptions: 1. Only the -threaded variant should have the PARALLEL_MARK option (it doesn't work for others). 2. DOCS option should be defined for devel/boehm-gc (it is currently excluded for others but not defined for this one). 3. The part that sets LICENSE to MIT is wrong; see README.QUICK or doc/README files: the license is similar to MIT, but not quite it (and some files appear to be under different licenses).
Vitaly Magerya <vmagerya@gmail.com> wrote: > OK, as the submitter of ports/176011 I endorse this patch instead > of the one in ports/176011, with a few exceptions: Thanks > 1. Only the -threaded variant should have the PARALLEL_MARK > option (it doesn't work for others). I know configure script does not run when both --enable-parallel-mark and --disable-threads are passed. I've added PARALLEL_MARK to share the same OPTIONSFILE among three ports. I agree that showing effective option only is better(patch updated). > 2. DOCS option should be defined for devel/boehm-gc (it is > currently excluded for others but not defined for this one). DOCS is one of pre-defined global options. We do not need to have it in OPTIONS_DEFINE each port. When NOPORTDOCS is not defined, DOCS will be defined. # see ports/Mk/bsd.options.mk > 3. The part that sets LICENSE to MIT is wrong; see README.QUICK > or doc/README files: the license is similar to MIT, but not quite > it (and some files appear to be under different licenses). I thought boehm-gc is X11-like license (wikipedia said so). Both MIT and X11 licenses are tagged as ``MIT'' in ports/Mk/bsd.license.db.mk. So, I marked it as ``MIT''. yes, libatomic_ops is GPLv2'ed. I've updated the patch, which is attached. Regards, -- Hirohisa Yamaguchi <umq@ueo.co.jp>
Hirohisa Yamaguchi <umq@ueo.co.jp> wrote: > I agree that showing effective option only is better(patch updated). Looks good. > DOCS is one of pre-defined global options. > We do not need to have it in OPTIONS_DEFINE each port. > When NOPORTDOCS is not defined, DOCS will be defined. > # see ports/Mk/bsd.options.mk Right, but it's not shown in the 'make config' dialog (or is it a problem on my end?). The rule of thumb I'm following is this: if the port has any other options, or if enabling DOCS pulls in new dependencies, show DOCS in the dialog. Otherwise leave it silent. This is a minor point though; I don't really mind the way it works now. > I thought boehm-gc is X11-like license (wikipedia said so). > [...] > yes, libatomic_ops is GPLv2'ed. The problem here (aside from libatomic_ops) is that the wording of the license in README matches neither MIT/Expat [1,2] nor MIT/X11 [3] licenses. For example, boehm-gc require you to add a notice about modified code if you want to redistribute modifications, which is something MIT/Expat doesn't require. [1] http://directory.fsf.org/wiki/License:Expat [2] http://opensource.org/licenses/MIT [3] http://directory.fsf.org/wiki/License:X11
State Changed From-To: open->open Clean up some stray text.
Vitaly Magerya <vmagerya@gmail.com> wrote: > The rule of thumb I'm following is this: > if the port has any other options, or if enabling DOCS pulls in > new dependencies, show DOCS in the dialog. Otherwise leave it > silent. I take your point. Now, it will be in the dialog when the option makes difference. > The problem here (aside from libatomic_ops) is that the wording > of the license in README matches neither MIT/Expat nor > MIT/X11 licenses. > > For example, boehm-gc require you to add a notice about modified > code if you want to redistribute modifications, which is something > MIT/Expat doesn't require. I've overlooked this point. make it have it dedicated name. LICENSE_FILE will be copied into ${PREFIX}/share/licenses/${UNIQUENAME}/ regardless PORTDOCS is installed or not. # Hope this patch will be the last :) Regards, -- Hirohisa Yamaguchi <umq@ueo.co.jp>
Hirohisa Yamaguchi <umq@ueo.co.jp> wrote: > # Hope this patch will be the last :) Yup, looks good to me.
update patch to follow changeset 314640 http://svnweb.freebsd.org/ports?view=revision&revision=314640 -- Hirohisa Yamaguchi umq@ueo.co.jp
Turns out that the latest patch has incomplete pkg-plist: all the files installed into share/doc/gc/ when DOCS option is set are missing.
Responsible Changed From-To: freebsd-ports-bugs->bsam Take.
State Changed From-To: open->closed Committed with some changes, thanks!