configure.ac: Add stanza for *-*-gnu* threads configuration.
boehm-gc/ * configure.ac: Add stanza for *-*-gnu* threads configuration. * configure: Regenerate. * include/gc_config.h.in: Likewise. * dyn_load.c (_GNU_SOURCE): Define for __GNU__. * include/gc_config_macros.h (_REENTRANT, GC_PTHREADS): Define for GC_GNU_THREADS. * include/private/gcconfig.h (DATASTART): Don't define for I386 && HURD. (SIG_SUSPEND, SIG_THR_RESTART, SEARCH_FOR_DATA_START): Define for I386 && HURD. (UNIX_LIKE, REGISTER_LIBRARIES_EARLY): Define for HURD. * os_dep.c (GC_init_linux_data_start): Handle for HURD. * pthread_support.c (GC_thr_init): Add case for GC_GNU_THREADS. * specific.c: Use for GC_GNU_THREADS. * threadlibs.c: Add case for GC_GNU_THREADS. From-SVN: r193142
This commit is contained in:
parent
6c46750c83
commit
b260c71fa5
@ -1,3 +1,21 @@
|
||||
2012-11-04 Samuel Thibault <samuel.thibault@gnu.org>
|
||||
|
||||
* configure.ac: Add stanza for *-*-gnu* threads configuration.
|
||||
* configure: Regenerate.
|
||||
* include/gc_config.h.in: Likewise.
|
||||
* dyn_load.c (_GNU_SOURCE): Define for __GNU__.
|
||||
* include/gc_config_macros.h (_REENTRANT, GC_PTHREADS): Define for
|
||||
GC_GNU_THREADS.
|
||||
* include/private/gcconfig.h (DATASTART): Don't define for I386 &&
|
||||
HURD.
|
||||
(SIG_SUSPEND, SIG_THR_RESTART, SEARCH_FOR_DATA_START): Define for
|
||||
I386 && HURD.
|
||||
(UNIX_LIKE, REGISTER_LIBRARIES_EARLY): Define for HURD.
|
||||
* os_dep.c (GC_init_linux_data_start): Handle for HURD.
|
||||
* pthread_support.c (GC_thr_init): Add case for GC_GNU_THREADS.
|
||||
* specific.c: Use for GC_GNU_THREADS.
|
||||
* threadlibs.c: Add case for GC_GNU_THREADS.
|
||||
|
||||
2012-09-14 David Edelsohn <dje.gcc@gmail.com>
|
||||
|
||||
* configure: Regenerated.
|
||||
|
9
boehm-gc/configure
vendored
9
boehm-gc/configure
vendored
@ -14796,6 +14796,15 @@ $as_echo "$as_me: WARNING: \"Only HP-UX 11 POSIX threads are supported.\"" >&2;}
|
||||
$as_echo "#define USE_COMPILER_TLS 1" >>confdefs.h
|
||||
|
||||
;;
|
||||
*-*-gnu*)
|
||||
|
||||
$as_echo "#define GC_GNU_THREADS 1" >>confdefs.h
|
||||
|
||||
$as_echo "#define _REENTRANT 1" >>confdefs.h
|
||||
|
||||
$as_echo "#define THREAD_LOCAL_ALLOC 1" >>confdefs.h
|
||||
|
||||
;;
|
||||
*-*-freebsd*)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&5
|
||||
$as_echo "$as_me: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&2;}
|
||||
|
@ -175,6 +175,11 @@ case "$THREADS" in
|
||||
AC_DEFINE(THREAD_LOCAL_ALLOC)
|
||||
AC_DEFINE(USE_COMPILER_TLS, 1,[use tls for boehm])
|
||||
;;
|
||||
*-*-gnu*)
|
||||
AC_DEFINE(GC_GNU_THREADS,1,[support GNU threads])
|
||||
AC_DEFINE(_REENTRANT)
|
||||
AC_DEFINE(THREAD_LOCAL_ALLOC)
|
||||
;;
|
||||
*-*-freebsd*)
|
||||
AC_MSG_WARN("FreeBSD does not yet fully support threads with Boehm GC.")
|
||||
AC_DEFINE(GC_FREEBSD_THREADS,1,[support FreeBSD threads])
|
||||
|
@ -26,7 +26,8 @@
|
||||
* 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(__GLIBC__)) && !defined(_GNU_SOURCE)
|
||||
#if (defined(__linux__) || defined(__GLIBC__) || defined(__GNU__)) \
|
||||
&& !defined(_GNU_SOURCE)
|
||||
/* Can't test LINUX, since this must be define before other includes */
|
||||
# define _GNU_SOURCE
|
||||
#endif
|
||||
|
@ -33,6 +33,9 @@
|
||||
/* include support for gcj */
|
||||
#undef GC_GCJ_SUPPORT
|
||||
|
||||
/* support GNU threads */
|
||||
#undef GC_GNU_THREADS
|
||||
|
||||
/* enables support for HP/UX 11 pthreads */
|
||||
#undef GC_HPUX_THREADS
|
||||
|
||||
|
@ -6,7 +6,8 @@
|
||||
|| defined(GC_SOLARIS_PTHREADS) \
|
||||
|| defined(GC_HPUX_THREADS) \
|
||||
|| defined(GC_AIX_THREADS) \
|
||||
|| defined(GC_LINUX_THREADS))
|
||||
|| defined(GC_LINUX_THREADS) \
|
||||
|| defined(GC_GNU_THREADS))
|
||||
# define _REENTRANT
|
||||
/* Better late than never. This fails if system headers that */
|
||||
/* depend on this were previously included. */
|
||||
@ -18,6 +19,7 @@
|
||||
|
||||
# if defined(GC_SOLARIS_PTHREADS) || defined(GC_FREEBSD_THREADS) || \
|
||||
defined(GC_IRIX_THREADS) || defined(GC_LINUX_THREADS) || \
|
||||
defined(GC_GNU_THREADS) || \
|
||||
defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) || \
|
||||
defined(GC_DGUX386_THREADS) || defined(GC_DARWIN_THREADS) || \
|
||||
defined(GC_AIX_THREADS) || \
|
||||
|
@ -1316,8 +1316,9 @@
|
||||
# define OS_TYPE "HURD"
|
||||
# define STACK_GROWS_DOWN
|
||||
# define HEURISTIC2
|
||||
extern int __data_start[];
|
||||
# define DATASTART ( (ptr_t) (__data_start))
|
||||
# define SIG_SUSPEND SIGUSR1
|
||||
# define SIG_THR_RESTART SIGUSR2
|
||||
# define SEARCH_FOR_DATA_START
|
||||
extern int _end[];
|
||||
# define DATAEND ( (ptr_t) (_end))
|
||||
/* # define MPROTECT_VDB Not quite working yet? */
|
||||
@ -2169,7 +2170,8 @@
|
||||
# if defined(SVR4) || defined(LINUX) || defined(IRIX5) || defined(HPUX) \
|
||||
|| defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) \
|
||||
|| defined(DGUX) || defined(BSD) || defined(SUNOS4) \
|
||||
|| defined(_AIX) || defined(DARWIN) || defined(OSF1)
|
||||
|| defined(_AIX) || defined(DARWIN) || defined(OSF1) \
|
||||
|| defined(HURD)
|
||||
# define UNIX_LIKE /* Basic Unix-like system calls work. */
|
||||
# endif
|
||||
|
||||
@ -2225,7 +2227,7 @@
|
||||
# define CACHE_LINE_SIZE 32 /* Wild guess */
|
||||
# endif
|
||||
|
||||
# if defined(LINUX) || defined(__GLIBC__)
|
||||
# if defined(LINUX) || defined(HURD) || 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 */
|
||||
@ -2260,6 +2262,9 @@
|
||||
# if defined(GC_AIX_THREADS) && !defined(_AIX)
|
||||
--> inconsistent configuration
|
||||
# endif
|
||||
# if defined(GC_GNU_THREADS) && !defined(HURD)
|
||||
--> inconsistent configuration
|
||||
# endif
|
||||
# if defined(GC_WIN32_THREADS) && !defined(MSWIN32) && !defined(CYGWIN32)
|
||||
--> inconsistent configuration
|
||||
# endif
|
||||
|
@ -312,7 +312,7 @@ char *GC_parse_map_entry(char *buf_ptr, word *start, word *end,
|
||||
/* for recent Linux versions. This seems to be the easiest way to */
|
||||
/* cover all versions. */
|
||||
|
||||
# ifdef LINUX
|
||||
# if defined(LINUX) || defined(HURD)
|
||||
/* Some Linux distributions arrange to define __data_start. Some */
|
||||
/* define data_start as a weak symbol. The latter is technically */
|
||||
/* broken, since the user program may define data_start, in which */
|
||||
@ -331,7 +331,7 @@ char *GC_parse_map_entry(char *buf_ptr, word *start, word *end,
|
||||
{
|
||||
extern ptr_t GC_find_limit();
|
||||
|
||||
# ifdef LINUX
|
||||
# if defined(LINUX) || defined(HURD)
|
||||
/* Try the easy approaches first: */
|
||||
if ((ptr_t)__data_start != 0) {
|
||||
GC_data_start = (ptr_t)(__data_start);
|
||||
|
@ -884,7 +884,7 @@ void GC_thr_init()
|
||||
GC_nprocs = pthread_num_processors_np();
|
||||
# endif
|
||||
# if defined(GC_OSF1_THREADS) || defined(GC_AIX_THREADS) \
|
||||
|| defined(GC_SOLARIS_PTHREADS)
|
||||
|| defined(GC_SOLARIS_PTHREADS) || defined(GC_GNU_THREADS)
|
||||
GC_nprocs = sysconf(_SC_NPROCESSORS_ONLN);
|
||||
if (GC_nprocs <= 0) GC_nprocs = 1;
|
||||
# endif
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
#include "private/gc_priv.h" /* For GC_compare_and_exchange, GC_memory_barrier */
|
||||
|
||||
#if defined(GC_LINUX_THREADS)
|
||||
#if defined(GC_LINUX_THREADS) || defined(GC_GNU_THREADS)
|
||||
|
||||
#include "private/specific.h"
|
||||
|
||||
|
@ -12,7 +12,8 @@ int main()
|
||||
# endif
|
||||
# if defined(GC_LINUX_THREADS) || defined(GC_IRIX_THREADS) \
|
||||
|| defined(GC_SOLARIS_PTHREADS) \
|
||||
|| defined(GC_DARWIN_THREADS) || defined(GC_AIX_THREADS)
|
||||
|| defined(GC_DARWIN_THREADS) || defined(GC_AIX_THREADS) \
|
||||
|| defined(GC_GNU_THREADS)
|
||||
printf("-lpthread\n");
|
||||
# endif
|
||||
# if defined(GC_FREEBSD_THREADS)
|
||||
|
Loading…
Reference in New Issue
Block a user