From: tromey Date: Mon, 18 Sep 2006 18:45:08 +0000 (+0000) Subject: 2006-06-07 Petr Salinger X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=f5ba0cf6571d7aeaef1325e10d05b0ddce6afcad 2006-06-07 Petr Salinger * configure.ac: add support for GNU/kFreeBSD, accepted by upstream for gc 6.8. * dyn_load.c: Likewise. * include/gc.h: Likewise. * private/gcconfig.h: Likewise. * configure: Regenerate. * include/gc_config.h.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117033 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog index bf4f0cd1a6c..08b08e85ef7 100644 --- a/boehm-gc/ChangeLog +++ b/boehm-gc/ChangeLog @@ -1,3 +1,13 @@ +2006-06-07 Petr Salinger + + * configure.ac: add support for GNU/kFreeBSD, accepted by upstream + for gc 6.8. + * dyn_load.c: Likewise. + * include/gc.h: Likewise. + * private/gcconfig.h: Likewise. + * configure: Regenerate. + * include/gc_config.h.in: Regenerate. + 2006-09-14 Tom Tromey PR boehm-gc/29068. diff --git a/boehm-gc/configure b/boehm-gc/configure index 3f2f5d835f5..00b14305f95 100755 --- a/boehm-gc/configure +++ b/boehm-gc/configure @@ -5444,6 +5444,32 @@ _ACEOF { echo "$as_me:$LINENO: WARNING: \"Only HP-UX 11 POSIX threads are supported.\"" >&5 echo "$as_me: WARNING: \"Only HP-UX 11 POSIX threads are supported.\"" >&2;} ;; + *-*-kfreebsd*-gnu) + cat >>confdefs.h <<\_ACEOF +#define GC_FREEBSD_THREADS 1 +_ACEOF + + INCLUDES="$INCLUDES -pthread" + THREADDLLIBS=-pthread + cat >>confdefs.h <<\_ACEOF +#define _REENTRANT 1 +_ACEOF + + if test "${enable_parallel_mark}" = yes; then + cat >>confdefs.h <<\_ACEOF +#define PARALLEL_MARK 1 +_ACEOF + + fi + cat >>confdefs.h <<\_ACEOF +#define THREAD_LOCAL_ALLOC 1 +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define USE_COMPILER_TLS 1 +_ACEOF + + ;; *-*-freebsd*) { echo "$as_me:$LINENO: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&5 echo "$as_me: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&2;} diff --git a/boehm-gc/configure.ac b/boehm-gc/configure.ac index 807b7a1a758..45937dcf9b9 100644 --- a/boehm-gc/configure.ac +++ b/boehm-gc/configure.ac @@ -155,6 +155,17 @@ case "$THREADS" in *-*-hpux10*) AC_MSG_WARN("Only HP-UX 11 POSIX threads are supported.") ;; + *-*-kfreebsd*-gnu) + AC_DEFINE(GC_FREEBSD_THREADS) + INCLUDES="$INCLUDES -pthread" + THREADDLLIBS=-pthread + AC_DEFINE(_REENTRANT) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + AC_DEFINE(USE_COMPILER_TLS, 1,[use tls for boehm]) + ;; *-*-freebsd*) AC_MSG_WARN("FreeBSD does not yet fully support threads with Boehm GC.") AC_DEFINE(GC_FREEBSD_THREADS,1,[support FreeBSD threads]) diff --git a/boehm-gc/dyn_load.c b/boehm-gc/dyn_load.c index 3485474bee5..d82bad8efae 100644 --- a/boehm-gc/dyn_load.c +++ b/boehm-gc/dyn_load.c @@ -26,7 +26,7 @@ * None of this is safe with dlclose and incremental collection. * But then not much of anything is safe in the presence of dlclose. */ -#if defined(__linux__) && !defined(_GNU_SOURCE) +#if (defined(__linux__) || defined(__GLIBC__)) && !defined(_GNU_SOURCE) /* Can't test LINUX, since this must be define before other includes */ # define _GNU_SOURCE #endif @@ -392,7 +392,7 @@ GC_bool GC_register_main_static_data() /* For glibc 2.2.4+. Unfortunately, it doesn't work for older */ /* versions. Thanks to Jakub Jelinek for most of the code. */ -# if defined(LINUX) /* Are others OK here, too? */ \ +# if (defined(LINUX) || defined (__GLIBC__)) /* Are others OK here, too? */ \ && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \ || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) diff --git a/boehm-gc/include/gc.h b/boehm-gc/include/gc.h index 5ba1f4becfe..52ee8056ec4 100644 --- a/boehm-gc/include/gc.h +++ b/boehm-gc/include/gc.h @@ -499,7 +499,7 @@ GC_API GC_PTR GC_malloc_atomic_ignore_off_page GC_PROTO((size_t lb)); # define GC_RETURN_ADDR (GC_word)__return_address #endif -#ifdef __linux__ +#if defined(__linux__) || defined(__GLIBC__) # include # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ && !defined(__ia64__) diff --git a/boehm-gc/include/gc_config.h.in b/boehm-gc/include/gc_config.h.in index 5055b502459..41028c14eb1 100644 --- a/boehm-gc/include/gc_config.h.in +++ b/boehm-gc/include/gc_config.h.in @@ -166,6 +166,9 @@ /* define GC_local_malloc() & GC_local_malloc_atomic() */ #undef THREAD_LOCAL_ALLOC +/* use tls for boehm */ +#undef USE_COMPILER_TLS + /* use MMAP instead of sbrk to get new memory */ #undef USE_MMAP diff --git a/boehm-gc/include/private/gcconfig.h b/boehm-gc/include/private/gcconfig.h index c028e5dbf6c..d7d96b11b60 100644 --- a/boehm-gc/include/private/gcconfig.h +++ b/boehm-gc/include/private/gcconfig.h @@ -55,7 +55,7 @@ # endif /* And one for FreeBSD: */ -# if defined(__FreeBSD__) && !defined(FREEBSD) +# if ( defined(__FreeBSD__) || defined(__FreeBSD_kernel__) ) && !defined(FREEBSD) # define FREEBSD # endif @@ -1241,8 +1241,15 @@ # ifndef GC_FREEBSD_THREADS # define MPROTECT_VDB # endif -# define SIG_SUSPEND SIGUSR1 -# define SIG_THR_RESTART SIGUSR2 +# ifdef __GLIBC__ +# define SIG_SUSPEND (32+6) +# define SIG_THR_RESTART (32+5) + extern int _end[]; +# define DATAEND (_end) +# else +# define SIG_SUSPEND SIGUSR1 +# define SIG_THR_RESTART SIGUSR2 +# endif # define FREEBSD_STACKBOTTOM # ifdef __ELF__ # define DYNAMIC_LOADING @@ -1952,6 +1959,28 @@ # define PREFETCH_FOR_WRITE(x) __builtin_prefetch((x), 1) # endif # endif +# ifdef FREEBSD +# define OS_TYPE "FREEBSD" +# ifndef GC_FREEBSD_THREADS +# define MPROTECT_VDB +# endif +# ifdef __GLIBC__ +# define SIG_SUSPEND (32+6) +# define SIG_THR_RESTART (32+5) + extern int _end[]; +# define DATAEND (_end) +# else +# define SIG_SUSPEND SIGUSR1 +# define SIG_THR_RESTART SIGUSR2 +# endif +# define FREEBSD_STACKBOTTOM +# ifdef __ELF__ +# define DYNAMIC_LOADING +# endif + extern char etext[]; + extern char * GC_FreeBSDGetDataStart(); +# define DATASTART GC_FreeBSDGetDataStart(0x1000, &etext) +# endif # ifdef NETBSD # define OS_TYPE "NETBSD" # ifdef __ELF__ @@ -2023,7 +2052,7 @@ # define SUNOS5SIGS # endif -# if defined(FREEBSD) && (__FreeBSD__ >= 4) +# if defined(FREEBSD) && ((__FreeBSD__ >= 4) || (__FreeBSD_kernel__ >= 4)) # define SUNOS5SIGS # endif @@ -2086,7 +2115,7 @@ # define CACHE_LINE_SIZE 32 /* Wild guess */ # endif -# ifdef LINUX +# if defined(LINUX) || defined(__GLIBC__) # define REGISTER_LIBRARIES_EARLY /* We sometimes use dl_iterate_phdr, which may acquire an internal */ /* lock. This isn't safe after the world has stopped. So we must */ @@ -2167,7 +2196,7 @@ #if defined(SPARC) # define CAN_SAVE_CALL_ARGS #endif -#if (defined(I386) || defined(X86_64)) && defined(LINUX) +#if (defined(I386) || defined(X86_64)) && (defined(LINUX) || defined(__GLIBC__)) /* SAVE_CALL_CHAIN is supported if the code is compiled to save */ /* frame pointers by default, i.e. no -fomit-frame-pointer flag. */ # define CAN_SAVE_CALL_ARGS