- Update to 6.3.

- Get to work on sparc. [1]
- Fix warnings from gc_cpp.h. [2]

Submitted by:	Hannes Mehnert <hannes@mehnert.org> [1], des [2]
This commit is contained in:
MANTANI Nobutaka 2004-11-08 16:33:05 +00:00
parent d3e93af03f
commit a4a7111fd8
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=121133
8 changed files with 135 additions and 39 deletions

View file

@ -6,8 +6,7 @@
#
PORTNAME= boehm-gc
PORTVERSION= 6.2
PORTREVISION= 2
PORTVERSION= 6.3
CATEGORIES= devel
MASTER_SITES= http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/
DISTNAME= gc${PORTVERSION:S/.a/alpha/}

View file

@ -1,2 +1,2 @@
MD5 (gc6.2.tar.gz) = 15492b14ca7b9a9e035238611e9cd1e3
SIZE (gc6.2.tar.gz) = 750883
MD5 (gc6.3.tar.gz) = 8b37ee18cbeb1dfd1866958e280db871
SIZE (gc6.3.tar.gz) = 772114

View file

@ -1,22 +1,15 @@
--- dyn_load.c.orig 2004-05-05 11:53:09.000000000 +0200
+++ dyn_load.c 2004-05-05 12:03:40.000000000 +0200
@@ -91,11 +91,19 @@
/* Newer versions of GNU/Linux define this macro. We
* define it similarly for any ELF systems that don't. */
# ifndef ElfW
+#ifdef __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
--- 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
# define ElfW(type) Elf64_##type
# endif
+#endif
# endif
#if defined(SUNOS5DL) && !defined(USE_PROC_FOR_LIBRARIES)
# if !defined(ELF_CLASS) || ELF_CLASS == ELFCLASS32
# define ElfW(type) Elf32_##type

View file

@ -1,27 +1,66 @@
--- include/private/gcconfig.h.orig Tue Jun 17 04:01:23 2003
+++ include/private/gcconfig.h Wed May 5 14:35:44 2004
@@ -306,6 +306,10 @@
# define I386
--- include/private/gcconfig.h.orig Thu May 6 08:10:54 2004
+++ include/private/gcconfig.h Sun Oct 31 02:55:05 2004
@@ -170,7 +170,7 @@
# define mach_type_known
# endif
# if defined(sparc) && defined(unix) && !defined(sun) && !defined(linux) \
- && !defined(__OpenBSD__) && !(__NetBSD__)
+ && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__FreeBSD__)
# define SPARC
# define DRSNX
# define mach_type_known
@@ -314,6 +314,14 @@
# define X86_64
# define mach_type_known
# endif
+# if defined(__FreeBSD__) && defined(__amd64__)
+# define X86_64
+# define mach_type_known
+# endif
+#endif
+# if defined(__FreeBSD__) && defined(__sparc__)
+# define SPARC
+# define mach_type_known
+#endif
# if defined(bsdi) && (defined(i386) || defined(__i386__))
# define I386
# define BSDI
@@ -1793,6 +1797,13 @@
__asm__ __volatile__ (" prefetch %0": : "m"(*(char *)(x)))
# define PREFETCH_FOR_WRITE(x) \
__asm__ __volatile__ (" prefetchw %0": : "m"(*(char *)(x)))
+# endif
@@ -938,6 +946,23 @@
# define DATASTART ((ptr_t)(etext))
# endif
# endif
+# ifdef FREEBSD
+# define OS_TYPE "FREEBSD"
+# define DYNAMIC_LOADING
+# define SIG_SUSPEND SIGUSR1
+# define SIG_THR_RESTART SIGUSR2
+# define FREEBSD_STACKBOTTOM
+# ifdef __ELF__
+# define DYNAMIC_LOADING
+# endif
+ extern char etext[];
+ extern char edata[];
+ extern char end[];
+# define NEED_FIND_LIMIT
+# define DATASTART ((ptr_t)(&etext))
+# define DATAEND (GC_find_limit (DATASTART, TRUE))
+# define DATASTART2 ((ptr_t)(&edata))
+# define DATAEND2 ((ptr_t)(&end))
+# endif
# endif
# ifdef I386
@@ -1860,6 +1885,15 @@
# endif
# ifdef NETBSD
# define OS_TYPE "NETBSD"
+# ifdef __ELF__
+# define DYNAMIC_LOADING
+# endif
+# define HEURISTIC2
+ extern char etext[];
+# define SEARCH_FOR_DATA_START
# endif
# endif
+# endif
+# ifdef FREEBSD
+# define OS_TYPE "FREEBSD"
# ifdef __ELF__
# define DYNAMIC_LOADING
# endif

View file

@ -0,0 +1,20 @@
--- include/gc_cpp.h.orig Thu Oct 14 12:19:56 2004
+++ include/gc_cpp.h Thu Oct 14 12:20:15 2004
@@ -276,7 +276,7 @@
else
return GC_MALLOC_UNCOLLECTABLE( size );}
-inline void* gc::operator new( size_t size, void *p ) {
+inline void* gc::operator new( size_t, void *p ) {
return p;}
inline void gc::operator delete( void* obj ) {
@@ -294,7 +294,7 @@
inline void* gc::operator new[]( size_t size, GCPlacement gcp ) {
return gc::operator new( size, gcp );}
-inline void* gc::operator new[]( size_t size, void *p ) {
+inline void* gc::operator new[]( size_t, void *p ) {
return p;}
inline void gc::operator delete[]( void* obj ) {

View file

@ -0,0 +1,11 @@
--- mach_dep.c.orig Tue Dec 2 09:04:34 2003
+++ mach_dep.c Sun Oct 31 02:13:04 2004
@@ -465,7 +465,7 @@
/* the stack. Return sp. */
# ifdef SPARC
asm(" .seg \"text\"");
-# if defined(SVR4) || defined(NETBSD)
+# if defined(SVR4) || defined(NETBSD) || defined(FREEBSD)
asm(" .globl GC_save_regs_in_stack");
asm("GC_save_regs_in_stack:");
asm(" .type GC_save_regs_in_stack,#function");

View file

@ -0,0 +1,33 @@
--- os_dep.c.orig Thu Jul 8 04:16:28 2004
+++ os_dep.c Sun Oct 31 02:13:04 2004
@@ -2372,7 +2372,7 @@
# endif
# ifdef FREEBSD
# define SIG_OK (sig == SIGBUS)
-# define CODE_OK (code == BUS_PAGE_FAULT)
+# define CODE_OK TRUE
# endif
# endif /* SUNOS4 || (FREEBSD && !SUNOS5SIGS) */
@@ -3943,7 +3943,11 @@
# if defined(OPENBSD) || defined(NETBSD)
# include <frame.h>
# else
-# include <sys/frame.h>
+# if defined(FREEBSD)
+# include <machine/frame.h>
+# else
+# include <sys/frame.h>
+# endif
# endif
# endif
# endif
@@ -3989,7 +3993,7 @@
#else /* No builtin backtrace; do it ourselves */
-#if (defined(OPENBSD) || defined(NETBSD)) && defined(SPARC)
+#if (defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD)) && defined(SPARC)
# define FR_SAVFP fr_fp
# define FR_SAVPC fr_pc
#else

View file

@ -59,6 +59,7 @@ share/doc/gc/gcdescr.html
share/doc/gc/gcinterface.html
share/doc/gc/leak.html
share/doc/gc/scale.html
share/doc/gc/simple_example.html
share/doc/gc/tree.html
@dirrm share/doc/gc
@dirrm include/gc