View | Details | Raw Unified | Return to bug 176716 | Differences between
and this patch

Collapse All | Expand All

(-)devel/boehm-gc/Makefile (-21 / +79 lines)
Lines 1-54 Link Here
1
# New ports collection makefile for:	boehm-gc
1
# Created by: Mike McGaughey <mmcg@cs.monash.edu.au>
2
# Date created:		15 November 1996
3
# Whom:			Mike McGaughey <mmcg@cs.monash.edu.au>
4
#
5
# $FreeBSD$
2
# $FreeBSD$
6
#
7
3
8
PORTNAME=	boehm-gc
4
PORTNAME=	gc
9
PORTVERSION=	7.1
5
PORTVERSION=	7.2d
10
PORTREVISION=	0
6
PORTREVISION?=	0
11
CATEGORIES=	devel
7
CATEGORIES=	devel
12
MASTER_SITES=	http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/
8
MASTER_SITES=	http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/
13
DISTNAME=	gc-${PORTVERSION:S/.a/alpha/}
9
PKGNAMEPREFIX=	boehm-
10
.ifdef GC_VARIANT
11
PKGNAMESUFFIX=	-${GC_VARIANT}
12
.endif
14
13
15
MAINTAINER=	ports@FreeBSD.org
14
MAINTAINER=	ports@FreeBSD.org
16
COMMENT=	Garbage collection and memory leak detection for C and C++
15
COMMENT=	Garbage collection and memory leak detection for C and C++
17
16
17
LICENSE=	MIT
18
18
GNU_CONFIGURE=	yes
19
GNU_CONFIGURE=	yes
19
USE_GNOME=	gnomehack
20
USE_GNOME=	gnomehack
20
USE_LDCONFIG=	yes
21
USE_LDCONFIG=	yes
21
CONFIGURE_ARGS=	--enable-cplusplus --disable-static --disable-threads
22
CONFIGURE_ARGS=	--enable-cplusplus --disable-static
22
MAKE_JOBS_UNSAFE=	yes
23
MAKE_JOBS_UNSAFE=	yes
23
OPTIONS_DEFINE=	DEBUG
24
24
25
.include <bsd.port.pre.mk>
25
WRKSRC=		${WRKDIR}/${DISTNAME:C/[a-z]$//}
26
26
27
OPTIONS_DEFINE=		DEBUG PARALLEL_MARK
28
DEBUG_DESC=		Additional debugging support (see documentation)
29
PARALLEL_MARK_DESC=	Parallel-thread marking (faster for SMP)
30
31
.ifdef GC_VARIANT
32
INSTLIBS=		cord gc gccpp
33
OPTIONS_EXCLUDE+=	DOCS
34
PLIST=			${NONEXISTENT}
35
PLIST_FILES=		${INSTLIBS:S,^,lib/lib,g:S,$,-${GC_VARIANT}.so.${SOVER},g} \
36
			${INSTLIBS:S,^,lib/lib,g:S,$,-${GC_VARIANT}.so,g} \
37
			libdata/pkgconfig/bdw-gc-${GC_VARIANT}.pc
38
RUN_DEPENDS+=		${LOCALBASE}/include/gc/gc.h:${PORTSDIR}/devel/boehm-gc
39
SOVER=			1
40
. if ${GC_VARIANT} == "redirect"
41
CONFIGURE_ARGS+=	--disable-threads --enable-redirect-malloc
42
. endif
43
. if ${GC_VARIANT} == "threaded"
44
CONFIGURE_ARGS+=	--enable-threads=posix --disable-redirect-malloc
45
. endif
46
.else
47
CONFIGURE_ARGS+=	--disable-threads --disable-redirect-malloc
48
MAN3=			gc.3
49
PORTDOCS=		*
50
.endif
51
52
.include <bsd.port.options.mk>
53
27
.if ${PORT_OPTIONS:MDEBUG}
54
.if ${PORT_OPTIONS:MDEBUG}
28
CONFIGURE_ARGS+=	--enable-gc-debug
55
CONFIGURE_ARGS+=	--enable-gc-debug
29
PKGNAMESUFFIX:=		${PKGNAMESUFFIX}+fulldebug
56
PKGNAMESUFFIX:=		${PKGNAMESUFFIX}+fulldebug
30
.endif
57
.endif
31
58
32
MAN3=		gc.3
59
.if ! ${PORT_OPTIONS:MDOCS}
60
CONFIGURE_ARGS+=	--datarootdir=${WRKDIR}/doc
61
.endif
33
62
34
.if ${ARCH} == "ia64"
63
.if defined(GC_VARIANT) && ${GC_VARIANT} == "threaded"
35
BROKEN=	Does not compile on ia64
64
. if ${PORT_OPTIONS:MPARALLEL_MARK}
65
CONFIGURE_ARGS+=	--enable-parallel-mark
66
. endif
36
.endif
67
.endif
37
68
69
.include <bsd.port.pre.mk>
70
71
NOT_FOR_ARCHS=	ia64
72
73
.ifdef GC_VARIANT
38
post-patch:
74
post-patch:
75
	@${REINPLACE_CMD} -e \
76
		's,libgc\.la,libgc-${GC_VARIANT}.la,g ; \
77
		 s,libgccpp\.la,libgccpp-${GC_VARIANT}.la,g ; \
78
		 s,libcord\.la,libcord-${GC_VARIANT}.la,g' ${WRKSRC}/Makefile.in
79
	@${REINPLACE_CMD} -e \
80
		's,-lgc,-lgc-${GC_VARIANT},' ${WRKSRC}/bdw-gc.pc.in
81
82
do-install:
83
.for LIB in ${INSTLIBS}
84
	${INSTALL_DATA} ${WRKSRC}/.libs/lib${LIB}-${GC_VARIANT}.so.${SOVER} \
85
		${PREFIX}/lib/lib${LIB}-${GC_VARIANT}.so.${SOVER}
86
	${LN} -sf lib${LIB}-${GC_VARIANT}.so.${SOVER} \
87
		${PREFIX}/lib/lib${LIB}-${GC_VARIANT}.so
88
.endfor
89
	${INSTALL_DATA} ${WRKSRC}/bdw-gc.pc \
90
		${PREFIX}/libdata/pkgconfig/bdw-gc-${GC_VARIANT}.pc
91
92
.else # ! GC_VARIANT
93
post-patch:
39
	@${REINPLACE_CMD} -e "s|%%PREFIX%%|${PREFIX}|g" ${WRKSRC}/doc/gc.man
94
	@${REINPLACE_CMD} -e "s|%%PREFIX%%|${PREFIX}|g" ${WRKSRC}/doc/gc.man
95
	@${REINPLACE_CMD} \
96
		-e "s|(datadir)/@PACKAGE@|(datadir)/doc/@PACKAGE@|" \
97
		${WRKSRC}/Makefile.in
40
98
41
#
99
post-install:
100
	${INSTALL_MAN} ${WRKSRC}/doc/gc.man ${PREFIX}/man/man3/gc.3
101
102
.endif
103
42
# Get rid of .la and static library files
104
# Get rid of .la and static library files
43
#
44
post-configure:
105
post-configure:
45
	@${REINPLACE_CMD} -E -e \
106
	@${REINPLACE_CMD} -E -e \
46
	'/Install the pseudo-library/,/staticlibs=/s,^,#,' ${WRKSRC}/libtool
107
	'/Install the pseudo-library/,/staticlibs=/s,^,#,' ${WRKSRC}/libtool
47
108
48
post-install:
109
regression-test: build
49
	${INSTALL_MAN} ${WRKSRC}/doc/gc.man ${PREFIX}/man/man3/gc.3
50
51
test: build
52
	cd ${WRKSRC} && ${MAKE} check
110
	cd ${WRKSRC} && ${MAKE} check
53
111
54
.include <bsd.port.post.mk>
112
.include <bsd.port.post.mk>
(-)devel/boehm-gc/distinfo (-2 / +2 lines)
Lines 1-2 Link Here
1
SHA256 (gc-7.1.tar.gz) = e3cef6028fe3efe7de3bcf4107c880eae50b3ee79841450d885467c09bcebf30
1
SHA256 (gc-7.2d.tar.gz) = d9fe0ae8650d43746a48bfb394cab01a319f3809cee19f8ebd16aa985b511c5e
2
SIZE (gc-7.1.tar.gz) = 1077714
2
SIZE (gc-7.2d.tar.gz) = 1263064
(-)devel/boehm-gc/files/patch-Makefile.in (-11 lines)
Lines 1-11 Link Here
1
--- Makefile.in.orig	2009-10-20 01:25:20.000000000 +0400
2
+++ Makefile.in	2009-10-20 01:25:30.000000000 +0400
3
@@ -75,7 +75,7 @@
4
 srcdir = @srcdir@
5
 top_srcdir = @top_srcdir@
6
 VPATH = @srcdir@
7
-pkgdatadir = $(datadir)/@PACKAGE@
8
+pkgdatadir = $(datadir)/doc/@PACKAGE@
9
 pkglibdir = $(libdir)/@PACKAGE@
10
 pkgincludedir = $(includedir)/@PACKAGE@
11
 top_builddir = .
(-)devel/boehm-gc/files/patch-ab (-60 lines)
Lines 1-60 Link Here
1
--- doc/gc.man.orig	Mon Oct  8 10:23:01 2001
2
+++ doc/gc.man	Mon Oct  8 10:28:31 2001
3
@@ -9,7 +9,7 @@
4
 ... malloc(...) ...
5
 .br
6
 .sp
7
-cc ... gc.a
8
+cc ... -lgc
9
 .LP
10
 .SH DESCRIPTION
11
 .I GC_malloc
12
@@ -67,6 +67,48 @@
13
 This may temporarily write protect pages in the heap.  See the README file for more information on how this interacts with system calls that write to the heap.
14
 .LP
15
 Other facilities not discussed here include limited facilities to support incremental collection on machines without appropriate VM support, provisions for providing more explicit object layout information to the garbage collector, more direct support for ``weak'' pointers, support for ``abortable'' garbage collections during idle time, etc.
16
+.LP
17
+.SH "PORT INFORMATION"
18
+.LP
19
+In this (FreeBSD package) installation,
20
+.I gc.h
21
+and
22
+.I gc_cpp.h
23
+will probably be found in
24
+.I %%PREFIX%%/include,
25
+and the library in
26
+.I %%PREFIX%%/lib.
27
+.LP
28
+This library has been compiled as drop-in replacements
29
+for malloc and free (which is to say, all malloc
30
+calls will allocate garbage-collectable data).
31
+There is no need to include "gc.h" in your C files unless you want
32
+access to the debugging (and other) functions defined there,
33
+or unless you want to explicitly use
34
+.I GC_malloc_uncollectable
35
+for some allocations.
36
+Just link against them whenever you want either garbage
37
+collection or leak detection.
38
+.LP
39
+The C++ header file, "gc_cpp.h",
40
+.I is
41
+necessary for C++ programs, to obtain the appropriate
42
+definitions of the
43
+.I new
44
+and
45
+.I delete
46
+operators.
47
+The comments in both of these header files presently
48
+provide far better documentation
49
+for the package than this man page;
50
+look there for more information.
51
+.LP
52
+This library is compiled without (explicit) support
53
+for the experimental
54
+.I gc
55
+extension of
56
+.I g++.
57
+This may or may not make a difference.
58
 .LP
59
 .SH "SEE ALSO"
60
 The README and gc.h files in the distribution.  More detailed definitions of the functions exported by the collector are given there.  (The above list is not complete.)
(-)devel/boehm-gc/files/patch-configure (-7 / +17 lines)
Lines 1-12 Link Here
1
--- configure.orig	2009-12-19 14:02:54.000000000 +0300
1
--- configure.orig	2012-07-25 14:48:53.000000000 +0300
2
+++ configure	2009-12-19 14:04:13.000000000 +0300
2
+++ configure	2012-07-25 14:53:59.000000000 +0300
3
@@ -6161,6 +6161,9 @@
3
@@ -4965,6 +4965,9 @@
4
  sparc-*-netbsd*)
4
         { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&5
5
     machdep="mach_dep.lo sparc_netbsd_mach_dep.lo"
5
 $as_echo "$as_me: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&2;}
6
         $as_echo "#define GC_FREEBSD_THREADS 1" >>confdefs.h
7
+        if test "${enable_parallel_mark}" = yes; then
8
+          $as_echo "#define PARALLEL_MARK 1" >>confdefs.h
9
+        fi
10
 
11
         INCLUDES="$INCLUDES -pthread"
12
         ;;
13
@@ -5508,6 +5511,9 @@
14
  sparc*-*-openbsd*)
15
     machdep="mach_dep.lo sparc_mach_dep.lo"
6
     ;;
16
     ;;
7
+ sparc64-*-freebsd*)
17
+ sparc*-*-freebsd*)
8
+    machdep="mach_dep.lo sparc_mach_dep.lo"
18
+    machdep="mach_dep.lo sparc_mach_dep.lo"
9
+    ;;
19
+    ;;
10
  sparc-sun-solaris2.3)
20
  sparc-sun-solaris2.3)
11
     machdep="mach_dep.lo sparc_mach_dep.lo"
21
     machdep="mach_dep.lo sparc_mach_dep.lo"
12
     cat >>confdefs.h <<\_ACEOF
22
 
(-)devel/boehm-gc/files/patch-dbg_mlc.c (-77 lines)
Lines 1-77 Link Here
1
--- dbg_mlc.c.orig	2009-10-20 00:34:39.000000000 +0400
2
+++ dbg_mlc.c	2009-10-20 00:41:22.000000000 +0400
3
@@ -456,10 +456,34 @@
4
     GC_register_displacement((word)sizeof(oh) + offset);
5
 }
6
 
7
+#if defined(__FreeBSD__)
8
+#include <dlfcn.h>
9
+static void GC_caller_func_offset(ad, symp, offp)
10
+const GC_word ad;
11
+const char **symp;
12
+int *offp;
13
+{
14
+    Dl_info caller;
15
+    if (dladdr((const void *)ad, &caller) && caller.dli_sname != NULL) {
16
+      *symp = caller.dli_sname;
17
+      *offp = (const char *)ad - (const char *)caller.dli_saddr;
18
+    }
19
+}
20
+#else
21
+#define GC_caller_func(ad, symp, offp)
22
+#endif
23
+
24
 void * GC_debug_malloc(size_t lb, GC_EXTRA_PARAMS)
25
 {
26
     void * result = GC_malloc(lb + DEBUG_BYTES);
27
-    
28
+
29
+#ifdef GC_ADD_CALLER
30
+    if (s == NULL) {
31
+      GC_caller_func_offset(ra, &s, &i);
32
+      if (s == NULL)
33
+        s = "unknown";
34
+    }
35
+#endif
36
     if (result == 0) {
37
         GC_err_printf("GC_debug_malloc(%lu) returning NIL (",
38
         	      (unsigned long) lb);
39
@@ -764,6 +788,13 @@
40
     size_t old_sz;
41
     hdr * hhdr;
42
     
43
+#ifdef GC_ADD_CALLER
44
+    if (s == NULL) {
45
+      GC_caller_func_offset(ra, &s, &i);
46
+      if (s == NULL)
47
+        s = "unknown";
48
+    }
49
+#endif
50
     if (p == 0) return(GC_debug_malloc(lb, OPT_RA s, i));
51
     if (base == 0) {
52
         GC_err_printf("Attempt to reallocate invalid pointer %p\n", p);
53
@@ -1041,17 +1072,21 @@
54
 }
55
 
56
 #ifdef GC_ADD_CALLER
57
-# define RA GC_RETURN_ADDR,
58
+# ifdef GC_RETURN_ADDR_PARENT
59
+#  define RA GC_RETURN_ADDR_PARENT,
60
+# else
61
+#  define RA GC_RETURN_ADDR,
62
+# endif
63
 #else
64
 # define RA
65
 #endif
66
 
67
 void * GC_debug_malloc_replacement(size_t lb)
68
 {
69
-    return GC_debug_malloc(lb, RA "unknown", 0);
70
+    return GC_debug_malloc(lb, RA NULL, 0);
71
 }
72
 
73
 void * GC_debug_realloc_replacement(void *p, size_t lb)
74
 {
75
-    return GC_debug_realloc(p, lb, RA "unknown", 0);
76
+    return GC_debug_realloc(p, lb, RA NULL, 0);
77
 }
(-)devel/boehm-gc/files/patch-doc-gc.man (-60 lines)
Lines 1-60 Link Here
1
--- doc/gc.man.orig	Mon Oct  8 10:23:01 2001
2
+++ doc/gc.man	Mon Oct  8 10:28:31 2001
3
@@ -9,7 +9,7 @@
4
 ... malloc(...) ...
5
 .br
6
 .sp
7
-cc ... gc.a
8
+cc ... -lgc
9
 .LP
10
 .SH DESCRIPTION
11
 .I GC_malloc
12
@@ -67,6 +67,48 @@
13
 This may temporarily write protect pages in the heap.  See the README file for more information on how this interacts with system calls that write to the heap.
14
 .LP
15
 Other facilities not discussed here include limited facilities to support incremental collection on machines without appropriate VM support, provisions for providing more explicit object layout information to the garbage collector, more direct support for ``weak'' pointers, support for ``abortable'' garbage collections during idle time, etc.
16
+.LP
17
+.SH "PORT INFORMATION"
18
+.LP
19
+In this (FreeBSD package) installation,
20
+.I gc.h
21
+and
22
+.I gc_cpp.h
23
+will probably be found in
24
+.I %%PREFIX%%/include,
25
+and the library in
26
+.I %%PREFIX%%/lib.
27
+.LP
28
+This library has been compiled as drop-in replacements
29
+for malloc and free (which is to say, all malloc
30
+calls will allocate garbage-collectable data).
31
+There is no need to include "gc.h" in your C files unless you want
32
+access to the debugging (and other) functions defined there,
33
+or unless you want to explicitly use
34
+.I GC_malloc_uncollectable
35
+for some allocations.
36
+Just link against them whenever you want either garbage
37
+collection or leak detection.
38
+.LP
39
+The C++ header file, "gc_cpp.h",
40
+.I is
41
+necessary for C++ programs, to obtain the appropriate
42
+definitions of the
43
+.I new
44
+and
45
+.I delete
46
+operators.
47
+The comments in both of these header files presently
48
+provide far better documentation
49
+for the package than this man page;
50
+look there for more information.
51
+.LP
52
+This library is compiled without (explicit) support
53
+for the experimental
54
+.I gc
55
+extension of
56
+.I g++.
57
+This may or may not make a difference.
58
 .LP
59
 .SH "SEE ALSO"
60
 The README and gc.h files in the distribution.  More detailed definitions of the functions exported by the collector are given there.  (The above list is not complete.)
(-)devel/boehm-gc/files/patch-dyn_load.c (-15 lines)
Lines 1-15 Link Here
1
--- dyn_load.c.orig	Thu May  6 08:03:06 2004
2
+++ dyn_load.c	Sun Oct 31 01:53:01 2004
3
@@ -97,6 +97,12 @@
4
 #      else
5
 #        define ElfW(type) Elf64_##type
6
 #      endif
7
+#    elif defined(__FreeBSD__)
8
+#      if __ELF_WORD_SIZE == 32
9
+#        define ElfW(type) Elf32_##type
10
+#      else
11
+#        define ElfW(type) Elf64_##type
12
+#      endif
13
 #    else
14
 #      if !defined(ELF_CLASS) || ELF_CLASS == ELFCLASS32
15
 #        define ElfW(type) Elf32_##type
(-)devel/boehm-gc/files/patch-include-gc.h (-10 lines)
Lines 1-10 Link Here
1
--- include/gc.h.orig	Wed Jun  4 17:07:33 2003
2
+++ include/gc.h	Wed May 12 20:03:22 2004
3
@@ -487,6 +487,7 @@
4
     /* gcc knows how to retrieve return address, but we don't know */
5
     /* how to generate call stacks.				   */
6
 #   define GC_RETURN_ADDR (GC_word)__builtin_return_address(0)
7
+#   define GC_RETURN_ADDR_PARENT (GC_word)__builtin_return_address(1)
8
 # else
9
     /* Just pass 0 for gcc compatibility. */
10
 #   define GC_RETURN_ADDR 0
(-)devel/boehm-gc/files/patch-include-private-gcconfig.h (-44 / +30 lines)
Lines 1-42 Link Here
1
--- include/private/gcconfig.h.orig	2008-02-20 22:23:00.000000000 +0300
1
--- include/private/gcconfig.h.orig	2012-07-25 15:03:15.000000000 +0300
2
+++ include/private/gcconfig.h	2009-10-20 01:08:38.000000000 +0400
2
+++ include/private/gcconfig.h	2012-07-25 15:07:05.000000000 +0300
3
@@ -64,7 +64,7 @@
3
@@ -73,7 +73,8 @@
4
 /* Determine the machine type: */
4
 # if defined(__arm) || defined(__arm__) || defined(__thumb__)
5
 # if defined(__arm__) || defined(__thumb__)
6
 #    define ARM32
5
 #    define ARM32
7
-#    if !defined(LINUX) && !defined(NETBSD)
6
 #    if !defined(LINUX) && !defined(NETBSD) && !defined(OPENBSD) \
8
+#    if !defined(LINUX) && !defined(NETBSD) && !defined(FREEBSD)
7
-        && !defined(DARWIN) && !defined(_WIN32) && !defined(__CEGCC__)
8
+        && !defined(DARWIN) && !defined(_WIN32) && !defined(__CEGCC__) \
9
+        && !defined(FREEBSD)
9
 #      define NOSYS
10
 #      define NOSYS
10
 #      define mach_type_known
11
 #      define mach_type_known
11
 #    endif
12
 #    endif
12
@@ -334,10 +334,26 @@
13
@@ -359,10 +360,18 @@
13
 #    define X86_64
14
 #   define I386
14
 #    define mach_type_known
15
 #   define mach_type_known
15
 # endif
16
 # endif
16
+# if defined(__FreeBSD__) && defined(__amd64__)
17
-# if defined(FREEBSD) && defined(__x86_64__)
17
+#    define X86_64
18
+# if defined(FREEBSD) && defined(__amd64__)
18
+#    define mach_type_known
19
 #   define X86_64
19
+# endif
20
 #   define mach_type_known
20
+# if defined(__FreeBSD__) && defined(__ia64__)
21
+#    define IA64
22
+#    define mach_type_known
23
+# endif
24
 # if defined(FREEBSD) && defined(__sparc__)
25
 #    define SPARC
26
 #    define mach_type_known
27
 # endif
21
 # endif
28
+# if defined(FREEBSD) && defined(__powerpc__)
22
+# if defined(FREEBSD) && defined(__ia64__)
29
+#    define POWERPC
23
+#   define IA64
30
+#    define mach_type_known
24
+#   define mach_type_known
31
+# endif
25
+# endif
32
+# if defined(FREEBSD) && defined(__arm__)
26
+# if defined(FREEBSD) && defined(__arm__)
33
+#    define ARM32
27
+#   define ARM32
34
+#    define mach_type_known
28
+#   define mach_type_known
35
+# endif
29
+# endif
36
 # if defined(bsdi) && (defined(i386) || defined(__i386__))
30
 # if defined(__NetBSD__) && (defined(i386) || defined(__i386__))
37
 #    define I386
31
 #   define I386
38
 #    define BSDI
32
 #   define mach_type_known
39
@@ -1771,6 +1787,16 @@
33
@@ -1949,6 +1958,16 @@
40
 #     define OS_TYPE "MSWINCE"
34
 #     define OS_TYPE "MSWINCE"
41
 #     define DATAEND /* not needed */
35
 #     define DATAEND /* not needed */
42
 #   endif
36
 #   endif
Lines 46-63 Link Here
46
+#       ifdef __ELF__
40
+#       ifdef __ELF__
47
+#           define DYNAMIC_LOADING
41
+#           define DYNAMIC_LOADING
48
+#       endif
42
+#       endif
49
+#	define HEURISTIC2
43
+#      define HEURISTIC2
50
+	extern char etext[];
44
+       extern char etext[];
51
+#	define SEARCH_FOR_DATA_START
45
+#      define SEARCH_FOR_DATA_START
52
+#   endif
46
+#   endif
53
 #   ifdef NOSYS
47
 #   ifdef DARWIN
54
       /* __data_start is usually defined in the target linker script.  */
48
       /* iPhone */
55
       extern int __data_start[];
49
 #     define OS_TYPE "DARWIN"
56
@@ -1800,6 +1826,7 @@
57
 #     define OS_TYPE "MSWINCE"
58
 #     define DATAEND /* not needed */
59
 #   endif
60
+		   
61
 #   ifdef LINUX
62
 #     define OS_TYPE "LINUX"
63
 #     define LINUX_STACKBOTTOM
(-)devel/boehm-gc/files/patch-os_dep.c (-38 / +22 lines)
Lines 1-44 Link Here
1
--- os_dep.c.orig	2008-02-29 11:01:28.000000000 -0800
1
--- os_dep.c.orig	2012-07-25 15:08:26.000000000 +0300
2
+++ os_dep.c	2010-04-01 00:50:34.000000000 -0700
2
+++ os_dep.c	2012-07-25 15:16:54.000000000 +0300
3
@@ -816,7 +816,7 @@
3
@@ -843,7 +843,7 @@
4
     || defined(HURD) || defined(NETBSD)
4
     GC_INNER void GC_set_and_save_fault_handler(GC_fault_handler_t h)
5
 	static struct sigaction old_segv_act;
6
 #	if defined(_sigargs) /* !Irix6.x */ || defined(HPUX) \
7
-	|| defined(HURD) || defined(NETBSD)
8
+	|| defined(HURD) || defined(NETBSD) || defined(FREEBSD)
9
 	    static struct sigaction old_bus_act;
10
 #	endif
11
 #   else
12
@@ -826,7 +826,7 @@
13
     void GC_set_and_save_fault_handler(handler h)
14
     {
5
     {
15
 #	if defined(SUNOS5SIGS) || defined(IRIX5)  \
6
 #       if defined(SUNOS5SIGS) || defined(IRIX5) \
16
-        || defined(OSF1) || defined(HURD) || defined(NETBSD)
7
-           || defined(OSF1) || defined(HURD) || defined(NETBSD)
17
+        || defined(OSF1) || defined(HURD) || defined(NETBSD) || defined(FREEBSD)
8
+           || defined(OSF1) || defined(HURD) || defined(NETBSD) || defined(FREEBSD)
18
 	  struct sigaction	act;
9
           struct sigaction act;
19
 
10
 
20
 	  act.sa_handler	= h;
11
           act.sa_handler = h;
21
@@ -846,7 +846,7 @@
12
@@ -3072,8 +3072,15 @@
22
 #	  else
13
 #     ifndef SEGV_ACCERR
23
 	        (void) sigaction(SIGSEGV, &act, &old_segv_act);
14
 #       define SEGV_ACCERR 2
24
 #		if defined(IRIX5) && defined(_sigargs) /* Irix 5.x, not 6.x */ \
15
 #     endif
25
-		   || defined(HPUX) || defined(HURD) || defined(NETBSD)
16
-#     define CODE_OK (si -> si_code == BUS_PAGE_FAULT \
26
+		   || defined(HPUX) || defined(HURD) || defined(NETBSD) || defined(FREEBSD)
27
 		    /* Under Irix 5.x or HP/UX, we may get SIGBUS.	*/
28
 		    /* Pthreads doesn't exist under Irix 5.x, so we	*/
29
 		    /* don't have to worry in the threads case.		*/
30
@@ -2713,7 +2713,13 @@
31
 #   include <errno.h>
32
 #   if defined(FREEBSD)
33
 #     define SIG_OK TRUE
34
-#     define CODE_OK (code == BUS_PAGE_FAULT)
35
+#     if defined(POWERPC)
17
+#     if defined(POWERPC)
36
+#	define AIM	/* Pretend that we're AIM. */
18
+#      define AIM      /* Pretend that we're AIM. */
37
+#	include <machine/trap.h>
19
+#      include <machine/trap.h>
38
+#       define CODE_OK (code == EXC_DSI)
20
+#       define CODE_OK (si -> si_code == EXC_DSI \
21
+          || si -> si_code == SEGV_ACCERR)
39
+#     else
22
+#     else
40
+#       define CODE_OK (code == BUS_PAGE_FAULT)
23
+#       define CODE_OK (si -> si_code == BUS_PAGE_FAULT \
24
           || si -> si_code == SEGV_ACCERR)
41
+#     endif
25
+#     endif
42
 #   elif defined(OSF1)
26
 #   elif defined(OSF1)
43
 #     define SIG_OK (sig == SIGSEGV)
27
 #     define CODE_OK (si -> si_code == 2 /* experimentally determined */)
44
 #     define CODE_OK (code == 2 /* experimentally determined */)
28
 #   elif defined(IRIX5)
(-)devel/boehm-gc/pkg-plist (-36 / +1 lines)
Lines 1-4 Link Here
1
include/gc.h
1
include/gc.h
2
include/gc/cord.h
2
include/gc/gc.h
3
include/gc/gc.h
3
include/gc/gc_allocator.h
4
include/gc/gc_allocator.h
4
include/gc/gc_amiga_redirects.h
5
include/gc/gc_amiga_redirects.h
Lines 23-62 Link Here
23
lib/libgccpp.so
24
lib/libgccpp.so
24
lib/libgccpp.so.1
25
lib/libgccpp.so.1
25
libdata/pkgconfig/bdw-gc.pc
26
libdata/pkgconfig/bdw-gc.pc
26
share/doc/gc/README
27
share/doc/gc/README.DGUX386
28
share/doc/gc/README.Mac
29
share/doc/gc/README.MacOSX
30
share/doc/gc/README.OS2
31
share/doc/gc/README.amiga
32
share/doc/gc/README.arm.cross
33
share/doc/gc/README.autoconf
34
share/doc/gc/README.changes
35
share/doc/gc/README.contributors
36
share/doc/gc/README.cords
37
share/doc/gc/README.darwin
38
share/doc/gc/README.dj
39
share/doc/gc/README.environment
40
share/doc/gc/README.ews4800
41
share/doc/gc/README.hp
42
share/doc/gc/README.linux
43
share/doc/gc/README.macros
44
share/doc/gc/README.rs6000
45
share/doc/gc/README.sgi
46
share/doc/gc/README.solaris2
47
share/doc/gc/README.uts
48
share/doc/gc/README.win32
49
share/doc/gc/README.win64
50
share/doc/gc/barrett_diagram
51
share/doc/gc/debugging.html
52
share/doc/gc/gc.man
53
share/doc/gc/gcdescr.html
54
share/doc/gc/gcinterface.html
55
share/doc/gc/leak.html
56
share/doc/gc/overview.html
57
share/doc/gc/porting.html
58
share/doc/gc/scale.html
59
share/doc/gc/simple_example.html
60
share/doc/gc/tree.html
61
@dirrm share/doc/gc
62
@dirrm include/gc
27
@dirrm include/gc
(-)devel/boehm-gc-redirect/Makefile (-56 / +8 lines)
Lines 1-63 Link Here
1
# New ports collection makefile for:	boehm-gc-redirect
1
# Created by: stas
2
# Date created:		12/17/2009
3
# Whom:			stas
4
#
5
# $FreeBSD$
2
# $FreeBSD$
6
#
7
3
8
PORTNAME=	boehm-gc
4
PORTREVISION=	0
9
PORTVERSION=	7.1
10
CATEGORIES=	devel
11
MASTER_SITES=	http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/
12
PKGNAMESUFFIX=	-${GC_VARIANT}
13
DISTNAME=	gc-${PORTVERSION:S/.a/alpha/}
14
5
15
MAINTAINER=	ports@FreeBSD.org
6
COMMENT=	Garbage collection and memory leak detection for C and C++ with malloc redirection
16
COMMENT=	Garbage collection and memory leak detection for C and C++
17
7
18
RUN_DEPENDS=	${PREFIX}/include/gc/gc.h:${PORTSDIR}/devel/boehm-gc
8
LICENSE=	MIT
19
9
20
GNU_CONFIGURE=	yes
10
MASTERDIR=	${.CURDIR}/../boehm-gc
21
USE_LDCONFIG=	yes
11
DESCR=		${.CURDIR}/pkg-descr
22
CONFIGURE_ARGS=	--enable-cplusplus --disable-static --disable-threads \
12
23
		--enable-redirect-malloc
24
CONFIGURE_ENV=	CFLAGSS="${CFLAGS} LIBS="${LIBS}
25
MAKE_JOBS_UNSAFE=	yes
26
INSTLIBS=	cord gc gccpp
27
GC_VARIANT=	redirect
13
GC_VARIANT=	redirect
28
SOVER=	1
29
14
30
OPTIONS_DEFINE=	DEBUG
15
.include "${MASTERDIR}/Makefile"
31
32
PLIST_FILES=	${INSTLIBS:S,^,lib/lib,g:S,$,-${GC_VARIANT}.so.${SOVER},g} \
33
		${INSTLIBS:S,^,lib/lib,g:S,$,-${GC_VARIANT}.so,g}
34
35
.include <bsd.port.pre.mk>
36
37
.if ${ARCH} == "ia64"
38
BROKEN=	Does not compile on ia64
39
.endif
40
41
.if ${PORT_OPTIONS:MDEBUG}
42
CONFIGURE_ARGS+=	--enable-gc-debug
43
PKGNAMESUFFIX:=	${PKGNAMESUFFIX}+fulldebug
44
.endif
45
46
post-patch:
47
	${REINPLACE_CMD} -E -e 's,libgc\.la,libgc-${GC_VARIANT}.la,g' \
48
		-e 's,libgccpp\.la,libgccpp-${GC_VARIANT}.la,g' \
49
		-e 's,libcord\.la,libcord-${GC_VARIANT}.la,g' \
50
		${WRKSRC}/Makefile.in
51
52
do-install:
53
.for LIB in ${INSTLIBS}
54
	${INSTALL_DATA} ${WRKSRC}/.libs/lib${LIB}-${GC_VARIANT}.so.${SOVER} \
55
	    ${PREFIX}/lib/lib${LIB}-${GC_VARIANT}.so.${SOVER}
56
	@(cd ${PREFIX}/lib && ${LN} -s lib${LIB}-${GC_VARIANT}.so.${SOVER} \
57
	    lib${LIB}-${GC_VARIANT}.so)
58
.endfor
59
60
test: build
61
	cd ${WRKSRC} && ${MAKE} check
62
63
.include <bsd.port.post.mk>
(-)devel/boehm-gc-redirect/distinfo (-2 lines)
Lines 1-2 Link Here
1
SHA256 (gc-7.1.tar.gz) = e3cef6028fe3efe7de3bcf4107c880eae50b3ee79841450d885467c09bcebf30
2
SIZE (gc-7.1.tar.gz) = 1077714
(-)devel/boehm-gc-redirect/files/patch-include-private-gcconfig.h (-63 lines)
Lines 1-63 Link Here
1
--- include/private/gcconfig.h.orig	2008-02-20 22:23:00.000000000 +0300
2
+++ include/private/gcconfig.h	2009-10-20 01:08:38.000000000 +0400
3
@@ -64,7 +64,7 @@
4
 /* Determine the machine type: */
5
 # if defined(__arm__) || defined(__thumb__)
6
 #    define ARM32
7
-#    if !defined(LINUX) && !defined(NETBSD)
8
+#    if !defined(LINUX) && !defined(NETBSD) && !defined(FREEBSD)
9
 #      define NOSYS
10
 #      define mach_type_known
11
 #    endif
12
@@ -334,10 +334,26 @@
13
 #    define X86_64
14
 #    define mach_type_known
15
 # endif
16
+# if defined(__FreeBSD__) && defined(__amd64__)
17
+#    define X86_64
18
+#    define mach_type_known
19
+# endif
20
+# if defined(__FreeBSD__) && defined(__ia64__)
21
+#    define IA64
22
+#    define mach_type_known
23
+# endif
24
 # if defined(FREEBSD) && defined(__sparc__)
25
 #    define SPARC
26
 #    define mach_type_known
27
 # endif
28
+# if defined(FREEBSD) && defined(__powerpc__)
29
+#    define POWERPC
30
+#    define mach_type_known
31
+# endif
32
+# if defined(FREEBSD) && defined(__arm__)
33
+#    define ARM32
34
+#    define mach_type_known
35
+# endif
36
 # if defined(bsdi) && (defined(i386) || defined(__i386__))
37
 #    define I386
38
 #    define BSDI
39
@@ -1771,6 +1787,16 @@
40
 #     define OS_TYPE "MSWINCE"
41
 #     define DATAEND /* not needed */
42
 #   endif
43
+#   ifdef FREEBSD
44
+#   define ALIGNMENT 4
45
+#       define OS_TYPE "FREEBSD"
46
+#       ifdef __ELF__
47
+#           define DYNAMIC_LOADING
48
+#       endif
49
+#	define HEURISTIC2
50
+	extern char etext[];
51
+#	define SEARCH_FOR_DATA_START
52
+#   endif
53
 #   ifdef NOSYS
54
       /* __data_start is usually defined in the target linker script.  */
55
       extern int __data_start[];
56
@@ -1800,6 +1826,7 @@
57
 #     define OS_TYPE "MSWINCE"
58
 #     define DATAEND /* not needed */
59
 #   endif
60
+		   
61
 #   ifdef LINUX
62
 #     define OS_TYPE "LINUX"
63
 #     define LINUX_STACKBOTTOM
(-)devel/boehm-gc-redirect/files/patch-include-gc.h (-10 lines)
Lines 1-10 Link Here
1
--- include/gc.h.orig	Wed Jun  4 17:07:33 2003
2
+++ include/gc.h	Wed May 12 20:03:22 2004
3
@@ -487,6 +487,7 @@
4
     /* gcc knows how to retrieve return address, but we don't know */
5
     /* how to generate call stacks.				   */
6
 #   define GC_RETURN_ADDR (GC_word)__builtin_return_address(0)
7
+#   define GC_RETURN_ADDR_PARENT (GC_word)__builtin_return_address(1)
8
 # else
9
     /* Just pass 0 for gcc compatibility. */
10
 #   define GC_RETURN_ADDR 0
(-)devel/boehm-gc-redirect/files/patch-configure (-12 lines)
Lines 1-12 Link Here
1
--- configure.orig	2009-12-19 14:02:54.000000000 +0300
2
+++ configure	2009-12-19 14:04:13.000000000 +0300
3
@@ -6161,6 +6161,9 @@
4
  sparc-*-netbsd*)
5
     machdep="mach_dep.lo sparc_netbsd_mach_dep.lo"
6
     ;;
7
+ sparc64-*-freebsd*)
8
+    machdep="mach_dep.lo sparc_mach_dep.lo"
9
+    ;;
10
  sparc-sun-solaris2.3)
11
     machdep="mach_dep.lo sparc_mach_dep.lo"
12
     cat >>confdefs.h <<\_ACEOF
(-)devel/boehm-gc-redirect/files/patch-dbg_mlc.c (-77 lines)
Lines 1-77 Link Here
1
--- dbg_mlc.c.orig	2009-10-20 00:34:39.000000000 +0400
2
+++ dbg_mlc.c	2009-10-20 00:41:22.000000000 +0400
3
@@ -456,10 +456,34 @@
4
     GC_register_displacement((word)sizeof(oh) + offset);
5
 }
6
 
7
+#if defined(__FreeBSD__)
8
+#include <dlfcn.h>
9
+static void GC_caller_func_offset(ad, symp, offp)
10
+const GC_word ad;
11
+const char **symp;
12
+int *offp;
13
+{
14
+    Dl_info caller;
15
+    if (dladdr((const void *)ad, &caller) && caller.dli_sname != NULL) {
16
+      *symp = caller.dli_sname;
17
+      *offp = (const char *)ad - (const char *)caller.dli_saddr;
18
+    }
19
+}
20
+#else
21
+#define GC_caller_func(ad, symp, offp)
22
+#endif
23
+
24
 void * GC_debug_malloc(size_t lb, GC_EXTRA_PARAMS)
25
 {
26
     void * result = GC_malloc(lb + DEBUG_BYTES);
27
-    
28
+
29
+#ifdef GC_ADD_CALLER
30
+    if (s == NULL) {
31
+      GC_caller_func_offset(ra, &s, &i);
32
+      if (s == NULL)
33
+        s = "unknown";
34
+    }
35
+#endif
36
     if (result == 0) {
37
         GC_err_printf("GC_debug_malloc(%lu) returning NIL (",
38
         	      (unsigned long) lb);
39
@@ -764,6 +788,13 @@
40
     size_t old_sz;
41
     hdr * hhdr;
42
     
43
+#ifdef GC_ADD_CALLER
44
+    if (s == NULL) {
45
+      GC_caller_func_offset(ra, &s, &i);
46
+      if (s == NULL)
47
+        s = "unknown";
48
+    }
49
+#endif
50
     if (p == 0) return(GC_debug_malloc(lb, OPT_RA s, i));
51
     if (base == 0) {
52
         GC_err_printf("Attempt to reallocate invalid pointer %p\n", p);
53
@@ -1041,17 +1072,21 @@
54
 }
55
 
56
 #ifdef GC_ADD_CALLER
57
-# define RA GC_RETURN_ADDR,
58
+# ifdef GC_RETURN_ADDR_PARENT
59
+#  define RA GC_RETURN_ADDR_PARENT,
60
+# else
61
+#  define RA GC_RETURN_ADDR,
62
+# endif
63
 #else
64
 # define RA
65
 #endif
66
 
67
 void * GC_debug_malloc_replacement(size_t lb)
68
 {
69
-    return GC_debug_malloc(lb, RA "unknown", 0);
70
+    return GC_debug_malloc(lb, RA NULL, 0);
71
 }
72
 
73
 void * GC_debug_realloc_replacement(void *p, size_t lb)
74
 {
75
-    return GC_debug_realloc(p, lb, RA "unknown", 0);
76
+    return GC_debug_realloc(p, lb, RA NULL, 0);
77
 }
(-)devel/boehm-gc-redirect/files/patch-dyn_load.c (-15 lines)
Lines 1-15 Link Here
1
--- dyn_load.c.orig	Thu May  6 08:03:06 2004
2
+++ dyn_load.c	Sun Oct 31 01:53:01 2004
3
@@ -97,6 +97,12 @@
4
 #      else
5
 #        define ElfW(type) Elf64_##type
6
 #      endif
7
+#    elif defined(__FreeBSD__)
8
+#      if __ELF_WORD_SIZE == 32
9
+#        define ElfW(type) Elf32_##type
10
+#      else
11
+#        define ElfW(type) Elf64_##type
12
+#      endif
13
 #    else
14
 #      if !defined(ELF_CLASS) || ELF_CLASS == ELFCLASS32
15
 #        define ElfW(type) Elf32_##type

Return to bug 176716