From a8b445d0f0693db9f4311a0536a3d1ffaba328d9 Mon Sep 17 00:00:00 2001 From: megacz Date: Fri, 30 Jan 2004 07:06:17 +0000 Subject: [PATCH] 2003/09/10 05:15:49 darcs-hash:20040130070617-2ba56-7b453d9261759d6bf8ecf4442e9a1148cbf1a096.gz --- upstream/gcc-3.3/patches/darwin.patch |29400 +++++++++++++++++++++++++++++++-- 1 file changed, 28301 insertions(+), 1099 deletions(-) diff --git a/upstream/gcc-3.3/patches/darwin.patch b/upstream/gcc-3.3/patches/darwin.patch index c90791d..bba7e71 100644 --- a/upstream/gcc-3.3/patches/darwin.patch +++ b/upstream/gcc-3.3/patches/darwin.patch @@ -1,1180 +1,28382 @@ ---- boehm-gc/Makefile.direct Mon Feb 11 20:37:53 2002 -+++ boehm-gc/Makefile.direct Mon Jun 16 01:19:56 2003 -@@ -441,7 +441,7 @@ - ./if_mach MIPS RISCOS $(AS) -o mach_dep.o $(srcdir)/mips_ultrix_mach_dep.s - ./if_mach MIPS ULTRIX $(AS) -o mach_dep.o $(srcdir)/mips_ultrix_mach_dep.s - ./if_mach RS6000 "" $(AS) -o mach_dep.o $(srcdir)/rs6000_mach_dep.s -- ./if_mach POWERPC MACOSX $(AS) -o mach_dep.o $(srcdir)/powerpc_macosx_mach_dep.s -+ ./if_mach POWERPC DARWIN $(AS) -o mach_dep.o $(srcdir)/powerpc_macosx_mach_dep.s - # ./if_mach ALPHA "" $(AS) -o mach_dep.o $(srcdir)/alpha_mach_dep.s - # alpha_mach_dep.s assumes that pointers are not saved in fp registers. - # Gcc on a 21264 can spill pointers to fp registers. Oops. -@@ -491,7 +491,7 @@ - ./if_mach SPARC DRSNX $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a $(CURSES) -lucb `./threadlibs` - ./if_mach HP_PA HPUX $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a $(CURSES) -ldld `./threadlibs` - ./if_mach RS6000 "" $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a -lcurses -- ./if_mach POWERPC MACOSX $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a -+ ./if_mach POWERPC DARWIN $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a - ./if_mach I386 LINUX $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a -lcurses `./threadlibs` - ./if_mach ALPHA LINUX $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a -lcurses `./threadlibs` - ./if_mach IA64 LINUX $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a -lcurses `./threadlibs` -diff -ur boehm-gc/Makefile.dist gcc-3.3+/boehm-gc/Makefile.dist ---- boehm-gc/Makefile.dist Fri Aug 17 11:30:44 2001 -+++ boehm-gc/Makefile.dist Mon Jun 16 01:19:56 2003 -@@ -415,7 +415,7 @@ - ./if_mach MIPS RISCOS $(AS) -o mach_dep.o $(srcdir)/mips_ultrix_mach_dep.s - ./if_mach MIPS ULTRIX $(AS) -o mach_dep.o $(srcdir)/mips_ultrix_mach_dep.s - ./if_mach RS6000 "" $(AS) -o mach_dep.o $(srcdir)/rs6000_mach_dep.s -- ./if_mach POWERPC MACOSX $(AS) -o mach_dep.o $(srcdir)/powerpc_macosx_mach_dep.s -+ ./if_mach POWERPC DARWIN $(AS) -o mach_dep.o $(srcdir)/powerpc_macosx_mach_dep.s - # ./if_mach ALPHA "" $(AS) -o mach_dep.o $(srcdir)/alpha_mach_dep.s - # alpha_mach_dep.s assumes that pointers are not saved in fp registers. - # Gcc on a 21264 can spill pointers to fp registers. Oops. -@@ -462,7 +462,7 @@ - ./if_mach SPARC DRSNX $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a $(CURSES) -lucb `./threadlibs` - ./if_mach HP_PA HPUX $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a $(CURSES) -ldld `./threadlibs` - ./if_mach RS6000 "" $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a -lcurses -- ./if_mach POWERPC MACOSX $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a -+ ./if_mach POWERPC DARWIN $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a - ./if_mach I386 LINUX $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a -lcurses `./threadlibs` - ./if_mach ALPHA LINUX $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a -lcurses `./threadlibs` - ./if_mach IA64 LINUX $(CC) $(CFLAGS) -o cord/de $(srcdir)/cord/de.c cord/cordbscs.o cord/cordxtra.o gc.a -lcurses `./threadlibs` -diff -ur boehm-gc/Makefile.dj gcc-3.3+/boehm-gc/Makefile.dj ---- boehm-gc/Makefile.dj Tue Oct 16 02:01:34 2001 -+++ boehm-gc/Makefile.dj Mon Jun 16 01:19:56 2003 -@@ -291,7 +291,7 @@ - ./if_mach MIPS RISCOS $(AS) -o mach_dep.o $(srcdir)/mips_ultrix_mach_dep.s - ./if_mach MIPS ULTRIX $(AS) -o mach_dep.o $(srcdir)/mips_ultrix_mach_dep.s - ./if_mach RS6000 "" $(AS) -o mach_dep.o $(srcdir)/rs6000_mach_dep.s -- ./if_mach POWERPC MACOSX $(AS) -o mach_dep.o $(srcdir)/powerpc_macosx_mach_dep.s -+ ./if_mach POWERPC DARWIN $(AS) -o mach_dep.o $(srcdir)/powerpc_macosx_mach_dep.s - ./if_mach ALPHA "" $(AS) -o mach_dep.o $(srcdir)/alpha_mach_dep.s - ./if_mach SPARC SUNOS5 $(AS) -o mach_dep.o $(srcdir)/sparc_mach_dep.s - ./if_mach SPARC SUNOS4 $(AS) -o mach_dep.o $(srcdir)/sparc_sunos4_mach_dep.s -diff -ur boehm-gc/configure gcc-3.3+/boehm-gc/configure ---- boehm-gc/configure Tue May 13 17:18:14 2003 -+++ boehm-gc/configure Mon Jun 16 01:19:56 2003 -@@ -2818,6 +2818,23 @@ - *-*-cygwin*) - THREADLIBS= - ;; -+ *-*-darwin*) -+ cat >> confdefs.h <<\EOF -+#define GC_DARWIN_THREADS 1 -+EOF +diff -Nur ../boehm-gc/CVS/Entries boehm-gc/CVS/Entries +--- ../boehm-gc/CVS/Entries Sat May 31 21:19:56 2003 ++++ boehm-gc/CVS/Entries Wed Dec 31 16:00:00 1969 +@@ -1,89 +0,0 @@ +-/BCC_MAKEFILE/1.2/Fri Sep 14 00:43:21 2001// +-/ChangeLog/1.15/Wed Jan 22 06:02:28 2003// +-/EMX_MAKEFILE/1.2/Fri Sep 14 00:43:22 2001// +-/MacProjects.sit.hqx/1.2/Fri Sep 14 00:43:22 2001// +-/Makefile.DLLs/1.2/Fri Sep 14 00:43:22 2001// +-/Makefile.am/1.8/Thu Oct 24 23:42:27 2002// +-/Makefile.direct/1.4/Thu Mar 14 07:28:09 2002// +-/Makefile.dist/1.2/Fri Sep 14 00:43:22 2001// +-/Makefile.dj/1.3/Tue Oct 23 03:47:12 2001// +-/Makefile.in/1.9/Wed Jan 22 06:02:28 2003// +-/NT_MAKEFILE/1.2/Fri Sep 14 00:43:23 2001// +-/NT_THREADS_MAKEFILE/1.3/Tue Oct 23 03:47:12 2001// +-/OS2_MAKEFILE/1.2/Fri Sep 14 00:43:23 2001// +-/PCR-Makefile/1.2/Fri Sep 14 00:43:23 2001// +-/SMakefile.amiga/1.2/Fri Sep 14 00:43:24 2001// +-/WCC_MAKEFILE/1.2/Fri Sep 14 00:43:24 2001// +-/allchblk.c/1.5/Sun Apr 21 00:58:58 2002// +-/alloc.c/1.3/Thu Mar 14 07:28:10 2002// +-/alpha_mach_dep.s/1.2/Fri Sep 14 00:43:25 2001// +-/backgraph.c/1.1.1.1/Thu Mar 14 03:39:41 2002// +-/callprocs/1.2/Fri Sep 14 00:43:25 2001// +-/config.guess/1.3/Thu Mar 14 07:28:10 2002// +-/config.sub/1.3/Thu Mar 14 07:28:10 2002// +-/configure.host/1.2/Fri Sep 14 00:43:26 2001// +-/configure.in/1.10/Fri Aug 2 10:04:37 2002// +-/dbg_mlc.c/1.5/Thu Aug 1 15:37:15 2002// +-/digimars.mak/1.2/Fri Sep 14 00:43:26 2001// +-/dyn_load.c/1.6/Sun Apr 21 00:58:58 2002// +-/finalize.c/1.4/Thu Mar 14 07:28:11 2002// +-/gc.mak/1.3/Tue Oct 23 03:47:14 2001// +-/gc_cpp.cc/1.2/Fri Sep 14 00:43:27 2001// +-/gc_cpp.cpp/1.2/Fri Sep 14 00:43:27 2001// +-/gc_dlopen.c/1.3/Tue Oct 23 03:47:14 2001// +-/gcj_mlc.c/1.3/Thu Mar 14 07:28:12 2002// +-/if_mach.c/1.2/Fri Sep 14 00:43:28 2001// +-/install-sh/1.2/Fri Sep 14 00:43:28 2001// +-/irix_threads.c/1.5/Fri Aug 2 10:04:37 2002// +-/mach_dep.c/1.5/Fri Aug 2 10:04:37 2002// +-/malloc.c/1.4/Thu Mar 14 07:28:13 2002// +-/mallocx.c/1.2/Fri Sep 14 00:43:29 2001// +-/mark.c/1.4/Thu Apr 4 07:13:13 2002// +-/mark_rts.c/1.4/Thu Mar 14 07:28:14 2002// +-/misc.c/1.6/Sun Apr 21 00:58:59 2002// +-/mkinstalldirs/1.2/Fri Sep 14 00:43:30 2001// +-/os_dep.c/1.7/Fri Aug 2 10:04:37 2002// +-/pc_excludes/1.2/Fri Sep 14 00:43:31 2001// +-/powerpc_macosx_mach_dep.s/1.2/Fri Sep 14 00:43:31 2001// +-/ptr_chck.c/1.2/Fri Sep 14 00:43:31 2001// +-/reclaim.c/1.5/Thu Apr 4 07:13:15 2002// +-/solaris_pthreads.c/1.4/Thu Mar 14 07:28:17 2002// +-/solaris_threads.c/1.5/Thu Mar 14 07:28:18 2002// +-/threadlibs.c/1.4/Thu Mar 14 07:28:19 2002// +-/typd_mlc.c/1.2/Fri Sep 14 00:43:33 2001// +-/version.h/1.4/Thu Mar 14 07:28:19 2002// +-/win32_threads.c/1.6/Thu Oct 24 23:42:27 2002// +-D/Mac_files//// +-D/cord//// +-D/doc//// +-D/include//// +-D/tests//// +-/AmigaOS.c/1.2/Mon May 26 19:48:52 2003// +-/MacOS.c/1.2/Mon May 26 19:48:52 2003// +-/add_gc_prefix.c/1.2/Mon May 26 19:48:52 2003// +-/blacklst.c/1.2/Mon May 26 19:48:52 2003// +-/checksums.c/1.2/Mon May 26 19:48:52 2003// +-/gcc_support.c/1.2/Mon May 26 19:48:52 2003// +-/gcname.c/1.2/Mon May 26 19:48:52 2003// +-/headers.c/1.2/Mon May 26 19:48:52 2003// +-/hpux_test_and_clear.s/1.2/Mon May 26 19:48:52 2003// +-/ia64_save_regs_in_stack.s/1.1.1.1/Mon May 26 19:48:52 2003// +-/if_not_there.c/1.2/Mon May 26 19:48:52 2003// +-/linux_threads.c/1.8/Sun Jun 1 04:17:20 2003// +-/ltconfig/1.3/Sun Jun 1 04:17:20 2003// +-/ltmain.sh/1.3/Sun Jun 1 04:17:20 2003// +-/mips_ultrix_mach_dep.s/1.2/Mon May 26 19:48:52 2003// +-/new_hblk.c/1.3/Mon May 26 19:48:52 2003// +-/obj_map.c/1.2/Mon May 26 19:48:52 2003// +-/pcr_interface.c/1.2/Mon May 26 19:48:52 2003// +-/real_malloc.c/1.2/Mon May 26 19:48:52 2003// +-/rs6000_mach_dep.s/1.3/Mon May 26 19:48:52 2003// +-/setjmp_t.c/1.2/Mon May 26 19:48:52 2003// +-/sparc_netbsd_mach_dep.s/1.2/Mon May 26 19:48:52 2003// +-/sparc_sunos4_mach_dep.s/1.2/Mon May 26 19:48:52 2003// +-/specific.c/1.4/Mon May 26 19:48:52 2003// +-/stubborn.c/1.2/Mon May 26 19:48:52 2003// +-/acinclude.m4/1.4/Sun Jun 1 04:19:55 2003// +-/aclocal.m4/1.3/Sun Jun 1 04:19:55 2003// +-/configure/1.11/Sun Jun 1 04:19:56 2003// +-/libtool.m4/1.2/Sun Jun 1 04:19:56 2003// +diff -Nur ../boehm-gc/CVS/Repository boehm-gc/CVS/Repository +--- ../boehm-gc/CVS/Repository Sun May 25 12:49:01 2003 ++++ boehm-gc/CVS/Repository Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-/cvs/root/gcc3/gcc3/boehm-gc +diff -Nur ../boehm-gc/CVS/Root boehm-gc/CVS/Root +--- ../boehm-gc/CVS/Root Sun May 25 12:49:01 2003 ++++ boehm-gc/CVS/Root Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root +diff -Nur ../boehm-gc/ChangeLog boehm-gc/ChangeLog +--- ../boehm-gc/ChangeLog Tue Jan 21 22:02:28 2003 ++++ boehm-gc/ChangeLog Tue May 13 17:08:56 2003 +@@ -1,3 +1,69 @@ ++2003-05-13 Release Manager + -+ cat >> confdefs.h <<\EOF -+#define THREAD_LOCAL_ALLOC 1 -+EOF ++ * GCC 3.3 Released. + -+ if test "${enable_parallel_mark}" = yes; then -+ cat >> confdefs.h <<\EOF -+#define PARALLEL_MARK 1 -+EOF ++2003-05-13 Release Manager + -+ fi ++ * GCC 3.3 Released. + -+ ;; - esac - ;; - win32) -diff -ur boehm-gc/configure.in gcc-3.3+/boehm-gc/configure.in ---- boehm-gc/configure.in Mon Apr 28 13:55:07 2003 -+++ boehm-gc/configure.in Mon Jun 16 01:19:56 2003 -@@ -111,6 +111,14 @@ - *-*-cygwin*) - THREADLIBS= - ;; -+ *-*-darwin*) -+ AC_DEFINE(GC_DARWIN_THREADS) -+ AC_DEFINE(THREAD_LOCAL_ALLOC) -+ if test "${enable_parallel_mark}" = yes; then -+ AC_DEFINE(PARALLEL_MARK) -+ fi -+ -+ ;; - esac - ;; - win32) -@@ -129,7 +137,12 @@ - esac - AC_SUBST(THREADLIBS) ++2003-05-13 Release Manager ++ ++ * GCC 3.3 Released. ++ ++2003-05-13 Release Manager ++ ++ * GCC 3.3 Released. ++ ++2003-04-28 Mohan Embar ++ ++ * configure.in: define GC_DLL under mingw if --enable-shared ++ * configure: rebuilt ++ * win32_threads.c: add #ifdef GC_DLL around DllMain ++ ++2003-04-09 Tom Tromey ++ ++ * include/private/gcconfig.h (LINUX_STACKBOTTOM): Define for ++ POWERPC. ++ (STACK_GRAN, HEURISTIC1): Don't define for POWERPC. ++ ++2003-03-04 Hans Boehm ++ * include/private/gcconfig.h (GC_data_start): declare when needed. ++ * include/private/gc_priv.h: Include gcconfig.h after ptr_t ++ declaration. ++ ++2003-03-03 Hans Boehm ++ * mark_rts.c (GC_cond_register_dynamic_libraries): add. ++ (GC_push_roots): explicitly mark free list headers, register ++ dynamic libraries only if !REGISTER_LIBRARIES_EARLY. ++ * alloc.c (GC_stopped_mark): Conditionally call ++ GC_cond_register_dynamic_libraries(). ++ (GC_collect_a_little_inner, GC_try_to_collect_inner): Check GC_dont_gc. ++ * dyn_load.c (GC_register_main_static_data): define. ++ (GC_register_dyn_libraries (Linux /proc, Linux ELF versions)): ++ no longer skip main data. Register main data for static executable. ++ * misc.c (GC_REGISTER_MAIN_STATIC_DATA): define. ++ (GC_init_inner): Make main data registration conditional. ++ * include/private/gc_priv.h (GC_register_main_static_data): declare. ++ * include/private/gcconfig.h (REGISTER_LIBRARIES_EARLY): define ++ for LINUX. ++ ++2003-02-20 Alexandre Oliva ++ ++ * configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to ++ config.status. ++ * configure: Rebuilt. ++ ++2003-02-11 Andreas Tobler ++ ++ * include/private/gcconfig.h: undefine MPROTECT_VDB for MACOSX ++ ++2003-01-27 Alexandre Oliva ++ ++ * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST. ++ Remove USE_LIBDIR conditional. ++ * Makefile.am (toolexecdir, toolexeclibdir): Don't override. ++ * Makefile.in, configure: Rebuilt. ++ + 2002-12-31 Tom Tromey --AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl") -+case "$host" in -+ *-*-darwin*) ;; -+ *) -+ AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl") -+ ;; -+esac - AC_SUBST(EXTRA_TEST_LIBS) + For PR libgcj/8933: +diff -Nur ../boehm-gc/Mac_files/CVS/Entries boehm-gc/Mac_files/CVS/Entries +--- ../boehm-gc/Mac_files/CVS/Entries Sun May 25 12:49:07 2003 ++++ boehm-gc/Mac_files/CVS/Entries Wed Dec 31 16:00:00 1969 +@@ -1,5 +0,0 @@ +-/MacOS_Test_config.h/1.2/Fri Sep 14 00:43:44 2001// +-/MacOS_config.h/1.2/Fri Sep 14 00:43:44 2001// +-/dataend.c/1.2/Fri Sep 14 00:43:44 2001// +-/datastart.c/1.2/Fri Sep 14 00:43:44 2001// +-D +diff -Nur ../boehm-gc/Mac_files/CVS/Repository boehm-gc/Mac_files/CVS/Repository +--- ../boehm-gc/Mac_files/CVS/Repository Sun May 25 12:49:07 2003 ++++ boehm-gc/Mac_files/CVS/Repository Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-/cvs/root/gcc3/gcc3/boehm-gc/Mac_files +diff -Nur ../boehm-gc/Mac_files/CVS/Root boehm-gc/Mac_files/CVS/Root +--- ../boehm-gc/Mac_files/CVS/Root Sun May 25 12:49:07 2003 ++++ boehm-gc/Mac_files/CVS/Root Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root +diff -Nur ../boehm-gc/Makefile.am boehm-gc/Makefile.am +--- ../boehm-gc/Makefile.am Mon May 26 13:08:40 2003 ++++ boehm-gc/Makefile.am Mon Jan 27 17:44:52 2003 +@@ -16,38 +16,22 @@ + MULTIDO = true + MULTICLEAN = true - target_all=libgcjgc.la -Only in boehm-gc: configure.in.orig -Only in boehm-gc: configure.orig -Only in boehm-gc: configure.rej -diff -ur boehm-gc/dyn_load.c gcc-3.3+/boehm-gc/dyn_load.c ---- boehm-gc/dyn_load.c Mon Mar 3 22:38:30 2003 -+++ boehm-gc/dyn_load.c Mon Jun 16 01:19:56 2003 -@@ -57,7 +57,8 @@ - !defined(HPUX) && !(defined(LINUX) && defined(__ELF__)) && \ - !defined(RS6000) && !defined(SCO_ELF) && \ - !(defined(FREEBSD) && defined(__ELF__)) && \ -- !(defined(NETBSD) && defined(__ELF__)) && !defined(HURD) -+ !(defined(NETBSD) && defined(__ELF__)) && !defined(HURD) && \ -+ !defined(DARWIN) - --> We only know how to find data segments of dynamic libraries for the - --> above. Additional SVR4 variants might not be too - --> hard to add. -@@ -1056,7 +1057,122 @@ - } - #endif /* RS6000 */ +-## Install a library built with a cross compiler in tooldir, not +-## libdir. +-if USE_LIBDIR +-toolexeclibdir = $(libdir)$(MULTISUBDIR) +-else +-toolexecdir = $(exec_prefix)/$(target_alias) +-toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR) +-endif +- + noinst_LTLIBRARIES = libgcjgc.la libgcjgc_convenience.la -+#ifdef DARWIN + GC_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \ + dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c irix_threads.c \ +-malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \ ++linux_threads.c malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \ + obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \ + solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c \ +-backgraph.c win32_threads.c \ +-pthread_support.c pthread_stop_world.c darwin_stop_world.c ++backgraph.c win32_threads.c -+#warning FIXME __private_extern__ support in gcc -+#define __private_extern__ -+#include -+#include -+ -+/*#define DARWIN_DEBUG*/ -+ -+const static struct { -+ const char *seg; -+ const char *sect; -+} GC_dyld_sections[] = { -+ { SEG_DATA, SECT_DATA }, -+ { SEG_DATA, SECT_BSS }, -+ { SEG_DATA, SECT_COMMON } -+}; -+ -+#ifdef DARWIN_DEBUG -+static const char *GC_dyld_name_for_hdr(struct mach_header *hdr) { -+ unsigned long i,c; -+ c = _dyld_image_count(); -+ for(i=0;isize == 0) continue; -+ start = slide + sec->addr; -+ end = start + sec->size; -+# ifdef DARWIN_DEBUG -+ GC_printf4("Adding section at %p-%p (%lu bytes) from image %s\n", -+ start,end,sec->size,GC_dyld_name_for_hdr(hdr)); -+# endif -+ GC_add_roots((char*)start,(char*)end); -+ } -+# ifdef DARWIN_DEBUG -+ GC_print_static_roots(); -+# endif -+} ++AM_CFLAGS = @GC_CFLAGS@ + + # Work around what appears to be a GNU make bug handling MAKEFLAGS + # values defined in terms of make variables, as is the case for CC and +diff -Nur ../boehm-gc/Makefile.am~ boehm-gc/Makefile.am~ +--- ../boehm-gc/Makefile.am~ Thu Oct 24 16:42:27 2002 ++++ boehm-gc/Makefile.am~ Wed Dec 31 16:00:00 1969 +@@ -1,159 +0,0 @@ +-## Process this file with automake to produce Makefile.in. +- +-## FIXME: `make dist' in this directory will not currently work. Many +-## files that should be in the distribution are not mentioned in this +-## Makefile.am. +- +-AUTOMAKE_OPTIONS = cygnus +- +-SUBDIRS = include +- +-# Multilib support variables. +-MULTISRCTOP = +-MULTIBUILDTOP = +-MULTIDIRS = +-MULTISUBDIR = +-MULTIDO = true +-MULTICLEAN = true +- +-## Install a library built with a cross compiler in tooldir, not +-## libdir. +-if USE_LIBDIR +-toolexeclibdir = $(libdir)$(MULTISUBDIR) +-else +-toolexecdir = $(exec_prefix)/$(target_alias) +-toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR) +-endif +- +-noinst_LTLIBRARIES = libgcjgc.la libgcjgc_convenience.la +- +-GC_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \ +-dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c irix_threads.c \ +-linux_threads.c malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \ +-obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \ +-solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c \ +-backgraph.c win32_threads.c +- +-EXTRA_GC_SOURCES = alpha_mach_dep.s \ +-mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \ +-rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \ +-sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s +- +-libgcjgc_la_SOURCES = $(GC_SOURCES) +-libgcjgc_convenience_la_SOURCES = $(GC_SOURCES) +-EXTRA_libgcjgc_la_SOURCES = $(EXTRA_GC_SOURCES) +-EXTRA_libgcjgc_convenience_la_SOURCES = $(EXTRA_GC_SOURCES) +- +-# Include THREADLIBS here to ensure that the correct versions of +-# linuxthread semaphore functions get linked: +-libgcjgc_la_LIBADD = @addobjs@ $(THREADLIBS) +-libgcjgc_la_DEPENDENCIES = @addobjs@ +-libgcjgc_la_LDFLAGS = -version-info 1:1:0 -rpath $(toolexeclibdir) +- +-libgcjgc_convenience_la_LIBADD = @addobjs@ +-libgcjgc_convenience_la_DEPENDENCIES = @addobjs@ +- +-AM_CXXFLAGS = @GC_CFLAGS@ +-AM_CFLAGS = @GC_CFLAGS@ +- +-check_PROGRAMS = gctest +-# The following hack produces a warning from automake, but we need it in order +-# to build a file from a subdirectory. FIXME. +-test.o: tests/test.c +- $(COMPILE) -c $(srcdir)/tests/test.c +-# Using $< in the above seems to fail with the HP/UX on Itanium make. +- +-gctest_OBJECTS = test.o +-gctest_LDADD = ./libgcjgc.la $(THREADLIBS) $(EXTRA_TEST_LIBS) +-gctest_LDFLAGS = -shared-libgcc +-TESTS_ENVIRONMENT = LD_LIBRARY_PATH=../../$(MULTIBUILDTOP)gcc +-TESTS = gctest +- +-## FIXME: relies on internal code generated by automake. +-all_objs = @addobjs@ $(libgcjgc_la_OBJECTS) +-$(all_objs) : include/private/gcconfig.h include/private/gc_priv.h \ +-include/private/gc_hdrs.h include/gc.h include/gc_gcj.h include/gc_mark.h +- +-## FIXME: we shouldn't have to do this, but automake forces us to. +-.s.lo: +-## We use -Wp,-P to strip #line directives. Irix `as' chokes on +-## these. +- $(LTCOMPILE) -Wp,-P -x assembler-with-cpp -c $< +- +-## We have our own definition of LTCOMPILE because we want to use our +-## CFLAGS, not those passed in from the top level make. +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) \ +- $(AM_CPPFLAGS) $(CPPFLAGS) \ +- $(AM_CFLAGS) $(MY_CFLAGS) $(GC_CFLAGS) +-LINK = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(MY_CFLAGS) $(LDFLAGS) -o $@ +- +-AM_CFLAGS = @GC_CFLAGS@ +- +-# Work around what appears to be a GNU make bug handling MAKEFLAGS +-# values defined in terms of make variables, as is the case for CC and +-# friends when we are called from the top level Makefile. +-AM_MAKEFLAGS = \ +- "AR_FLAGS=$(AR_FLAGS)" \ +- "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ +- "CFLAGS=$(CFLAGS)" \ +- "CXXFLAGS=$(CXXFLAGS)" \ +- "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ +- "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ +- "INSTALL=$(INSTALL)" \ +- "INSTALL_DATA=$(INSTALL_DATA)" \ +- "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ +- "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ +- "LDFLAGS=$(LDFLAGS)" \ +- "LIBCFLAGS=$(LIBCFLAGS)" \ +- "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ +- "MAKE=$(MAKE)" \ +- "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ +- "PICFLAG=$(PICFLAG)" \ +- "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ +- "SHELL=$(SHELL)" \ +- "EXPECT=$(EXPECT)" \ +- "RUNTEST=$(RUNTEST)" \ +- "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ +- "exec_prefix=$(exec_prefix)" \ +- "infodir=$(infodir)" \ +- "libdir=$(libdir)" \ +- "prefix=$(prefix)" \ +- "tooldir=$(tooldir)" \ +- "AR=$(AR)" \ +- "AS=$(AS)" \ +- "CC=$(CC)" \ +- "CXX=$(CXX)" \ +- "LD=$(LD)" \ +- "LIBCFLAGS=$(LIBCFLAGS)" \ +- "NM=$(NM)" \ +- "PICFLAG=$(PICFLAG)" \ +- "RANLIB=$(RANLIB)" \ +- "DESTDIR=$(DESTDIR)" +- +-CONFIG_STATUS_DEPENDENCIES = $(srcdir)/configure.host +- +-# Multilib support. +-.PHONY: all-multi mostlyclean-multi clean-multi distclean-multi \ +- maintainer-clean-multi +- +-all-am: all-multi +-install-am: install-multi +-mostlyclean-am: mostlyclean-multi +-clean-am: clean-multi +-distclean-am: distclean-multi +-maintainer-clean-am: maintainer-clean-multi +- +-all-multi: +- : $(MAKE) ; exec $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do +-install-multi: +- $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do +-mostlyclean-multi: +- $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean +-clean-multi: +- $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean +-distclean-multi: +- $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean +-maintainer-clean-multi: +- $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean +- +-MAKEOVERRIDES= +diff -Nur ../boehm-gc/Makefile.in boehm-gc/Makefile.in +--- ../boehm-gc/Makefile.in Mon May 26 13:08:48 2003 ++++ boehm-gc/Makefile.in Tue May 13 17:18:14 2003 +@@ -1,8 +1,6 @@ +-# Makefile.in generated by automake 1.6.3 from Makefile.am. +-# @configure_input@ ++# Makefile.in generated automatically by automake 1.4 from Makefile.am + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -12,7 +10,7 @@ + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + +-@SET_MAKE@ + -+/* This should never be called by a thread holding the lock */ -+static void GC_dyld_image_remove(struct mach_header* hdr, unsigned long slide) { -+ unsigned long start,end,i; -+ const struct section *sec; -+ for(i=0;isize == 0) continue; -+ start = slide + sec->addr; -+ end = start + sec->size; -+# ifdef DARWIN_DEBUG -+ GC_printf4("Removing section at %p-%p (%lu bytes) from image %s\n", -+ start,end,sec->size,GC_dyld_name_for_hdr(hdr)); -+# endif -+ GC_remove_roots((char*)start,(char*)end); -+ } -+# ifdef DARWIN_DEBUG -+ GC_print_static_roots(); -+# endif -+} + SHELL = @SHELL@ + + srcdir = @srcdir@ +@@ -33,9 +31,13 @@ + mandir = @mandir@ + includedir = @includedir@ + oldincludedir = /usr/include + -+void GC_register_dynamic_libraries() { -+ /* Currently does nothing. The callbacks are setup by GC_init_dyld() -+ The dyld library takes it from there. */ -+} ++DESTDIR = + -+/* The _dyld_* functions have an internal lock so no _dyld functions -+ can be called while the world is stopped without the risk of a deadlock. -+ Because of this we MUST setup callbacks BEFORE we ever stop the world. -+ This should be called BEFORE any thread in created and WITHOUT the -+ allocation lock held. */ -+ -+void GC_init_dyld() { -+ static unsigned long dummy; -+# ifdef DARWIN_DEBUG -+ GC_printf0("Forcing full bind of GC code...\n"); -+# endif + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ + -+ if(!_dyld_bind_fully_image_containing_address(&dummy)) -+ GC_abort("_dyld_bind_fully_image_containing_addres failed"); -+ -+# ifdef DARWIN_DEBUG -+ GC_printf0("Registering dyld callbacks...\n"); -+# endif + top_builddir = . + + ACLOCAL = @ACLOCAL@ +@@ -43,16 +45,12 @@ + AUTOMAKE = @AUTOMAKE@ + AUTOHEADER = @AUTOHEADER@ + +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd + INSTALL = @INSTALL@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) + INSTALL_DATA = @INSTALL_DATA@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_HEADER = $(INSTALL_DATA) + transform = @program_transform_name@ + -+ /* Apple's Documentation: -+ When you call _dyld_register_func_for_add_image, the dynamic linker runtime calls -+ the specified callback (func) once for each of the images that is currently loaded -+ into the program. When a new image is added to the program, your callback is called -+ again with the mach_header for the new image, and the virtual memory slide amount -+ of the new image. -+ -+ This WILL properly register existing and all future libraries -+ */ -+ -+ _dyld_register_func_for_add_image(GC_dyld_image_add); -+ _dyld_register_func_for_remove_image(GC_dyld_image_remove); -+} + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : +@@ -65,48 +63,38 @@ + host_triplet = @host@ + target_alias = @target_alias@ + target_triplet = @target@ +- +-EXEEXT = @EXEEXT@ +-OBJEXT = @OBJEXT@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-AMTAR = @AMTAR@ + AR = @AR@ + AS = @AS@ +-AWK = @AWK@ + CC = @CC@ + CPP = @CPP@ + CXX = @CXX@ + CXXCPP = @CXXCPP@ + CXXINCLUDES = @CXXINCLUDES@ +-DEPDIR = @DEPDIR@ + DLLTOOL = @DLLTOOL@ +-ECHO = @ECHO@ +-EGREP = @EGREP@ ++EXEEXT = @EXEEXT@ + EXTRA_TEST_LIBS = @EXTRA_TEST_LIBS@ +-F77 = @F77@ + GCJ = @GCJ@ + GCJFLAGS = @GCJFLAGS@ + GC_CFLAGS = @GC_CFLAGS@ + INCLUDES = @INCLUDES@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LIBTOOL = @LIBTOOL@ + LN_S = @LN_S@ + MAINT = @MAINT@ ++MAKEINFO = @MAKEINFO@ + MY_CFLAGS = @MY_CFLAGS@ + OBJDUMP = @OBJDUMP@ ++OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ + RANLIB = @RANLIB@ +-RC = @RC@ + STRIP = @STRIP@ + THREADLIBS = @THREADLIBS@ + VERSION = @VERSION@ + addobjs = @addobjs@ +-am__include = @am__include@ +-am__quote = @am__quote@ + gc_basedir = @gc_basedir@ +-install_sh = @install_sh@ + mkinstalldirs = @mkinstalldirs@ + target_all = @target_all@ ++toolexecdir = @toolexecdir@ ++toolexeclibdir = @toolexeclibdir@ + + AUTOMAKE_OPTIONS = cygnus + +@@ -120,32 +108,24 @@ + MULTIDO = true + MULTICLEAN = true + +-@USE_LIBDIR_TRUE@toolexeclibdir = $(libdir)$(MULTISUBDIR) +-@USE_LIBDIR_FALSE@toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR) +-@USE_LIBDIR_FALSE@toolexecdir = $(exec_prefix)/$(target_alias) +- + noinst_LTLIBRARIES = libgcjgc.la libgcjgc_convenience.la + + GC_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \ + dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c irix_threads.c \ +-malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \ ++linux_threads.c malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \ + obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \ + solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c \ +-backgraph.c win32_threads.c \ +-pthread_support.c pthread_stop_world.c darwin_stop_world.c +- ++backgraph.c win32_threads.c + +-EXTRA_GC_SOURCES = alpha_mach_dep.S \ +- mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_darwin_mach_dep.s \ +- rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \ +- sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s + ++EXTRA_GC_SOURCES = alpha_mach_dep.s \ ++mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \ ++rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \ ++sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s + +-@POWERPC_DARWIN_TRUE@asm_libgc_sources = powerpc_darwin_mach_dep.s +-@POWERPC_DARWIN_FALSE@asm_libgc_sources = + +-libgcjgc_la_SOURCES = $(GC_SOURCES) $(asm_libgc_sources) +-libgcjgc_convenience_la_SOURCES = $(GC_SOURCES) $(asm_libgc_sources) ++libgcjgc_la_SOURCES = $(GC_SOURCES) ++libgcjgc_convenience_la_SOURCES = $(GC_SOURCES) + EXTRA_libgcjgc_la_SOURCES = $(EXTRA_GC_SOURCES) + EXTRA_libgcjgc_convenience_la_SOURCES = $(EXTRA_GC_SOURCES) + +@@ -159,11 +139,12 @@ + libgcjgc_convenience_la_DEPENDENCIES = @addobjs@ + + AM_CXXFLAGS = @GC_CFLAGS@ + -+#define HAVE_REGISTER_MAIN_STATIC_DATA -+GC_bool GC_register_main_static_data() -+{ -+ /* Already done through dyld callbacks */ -+ return FALSE; -+} + AM_CFLAGS = @GC_CFLAGS@ + + check_PROGRAMS = gctest +- + # Using $< in the above seems to fail with the HP/UX on Itanium make. + -+#endif /* DARWIN */ + gctest_OBJECTS = test.o + gctest_LDADD = ./libgcjgc.la $(THREADLIBS) $(EXTRA_TEST_LIBS) + gctest_LDFLAGS = -shared-libgcc +@@ -223,127 +204,104 @@ + CONFIG_STATUS_DEPENDENCIES = $(srcdir)/configure.host - #else /* !DYNAMIC_LOADING */ + MAKEOVERRIDES = +-subdir = . + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(noinst_LTLIBRARIES) ++CONFIG_CLEAN_FILES = ++LTLIBRARIES = $(noinst_LTLIBRARIES) -diff -ur boehm-gc/gc_dlopen.c gcc-3.3+/boehm-gc/gc_dlopen.c ---- boehm-gc/gc_dlopen.c Tue Oct 16 02:01:35 2001 -+++ boehm-gc/gc_dlopen.c Mon Jun 16 01:19:56 2003 -@@ -24,7 +24,8 @@ +-am__objects_1 = allchblk.lo alloc.lo blacklst.lo checksums.lo dbg_mlc.lo \ +- dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo headers.lo \ +- irix_threads.lo malloc.lo mallocx.lo mark.lo mark_rts.lo \ +- misc.lo new_hblk.lo obj_map.lo os_dep.lo pcr_interface.lo \ +- ptr_chck.lo real_malloc.lo reclaim.lo solaris_pthreads.lo \ +- solaris_threads.lo specific.lo stubborn.lo typd_mlc.lo \ +- backgraph.lo win32_threads.lo pthread_support.lo \ +- pthread_stop_world.lo darwin_stop_world.lo +-@POWERPC_DARWIN_TRUE@am__objects_2 = powerpc_darwin_mach_dep.lo +-@POWERPC_DARWIN_FALSE@am__objects_2 = +-am_libgcjgc_la_OBJECTS = $(am__objects_1) $(am__objects_2) +-libgcjgc_la_OBJECTS = $(am_libgcjgc_la_OBJECTS) +-libgcjgc_convenience_la_LDFLAGS = +-am_libgcjgc_convenience_la_OBJECTS = $(am__objects_1) $(am__objects_2) +-libgcjgc_convenience_la_OBJECTS = $(am_libgcjgc_convenience_la_OBJECTS) +-check_PROGRAMS = gctest$(EXEEXT) +-gctest_DEPENDENCIES = ./libgcjgc.la - #include "private/gc_priv.h" +-DEFS = @DEFS@ +-DEFAULT_INCLUDES = -I. -I$(srcdir) ++DEFS = @DEFS@ -I. -I$(srcdir) + CPPFLAGS = @CPPFLAGS@ + LDFLAGS = @LDFLAGS@ + LIBS = @LIBS@ +-depcomp = +-am__depfiles_maybe = +-CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS) +-LTCCASCOMPILE = $(LIBTOOL) --mode=compile $(CCAS) $(AM_CCASFLAGS) \ +- $(CCASFLAGS) +-CCASFLAGS = @CCASFLAGS@ +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) ++libgcjgc_la_OBJECTS = allchblk.lo alloc.lo blacklst.lo checksums.lo \ ++dbg_mlc.lo dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo headers.lo \ ++irix_threads.lo linux_threads.lo malloc.lo mallocx.lo mark.lo \ ++mark_rts.lo misc.lo new_hblk.lo obj_map.lo os_dep.lo pcr_interface.lo \ ++ptr_chck.lo real_malloc.lo reclaim.lo solaris_pthreads.lo \ ++solaris_threads.lo specific.lo stubborn.lo typd_mlc.lo backgraph.lo \ ++win32_threads.lo ++libgcjgc_convenience_la_LDFLAGS = ++libgcjgc_convenience_la_OBJECTS = allchblk.lo alloc.lo blacklst.lo \ ++checksums.lo dbg_mlc.lo dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo \ ++headers.lo irix_threads.lo linux_threads.lo malloc.lo mallocx.lo \ ++mark.lo mark_rts.lo misc.lo new_hblk.lo obj_map.lo os_dep.lo \ ++pcr_interface.lo ptr_chck.lo real_malloc.lo reclaim.lo \ ++solaris_pthreads.lo solaris_threads.lo specific.lo stubborn.lo \ ++typd_mlc.lo backgraph.lo win32_threads.lo ++check_PROGRAMS = gctest$(EXEEXT) ++gctest_DEPENDENCIES = ./libgcjgc.la + CFLAGS = @CFLAGS@ +-DIST_SOURCES = $(libgcjgc_la_SOURCES) $(EXTRA_libgcjgc_la_SOURCES) \ +- $(libgcjgc_convenience_la_SOURCES) \ +- $(EXTRA_libgcjgc_convenience_la_SOURCES) +- +-RECURSIVE_TARGETS = info-recursive dvi-recursive \ +- uninstall-info-recursive all-recursive install-data-recursive \ +- install-exec-recursive installdirs-recursive install-recursive \ +- uninstall-recursive check-recursive installcheck-recursive +-SOURCES = $(libgcjgc_la_SOURCES) $(EXTRA_libgcjgc_la_SOURCES) $(libgcjgc_convenience_la_SOURCES) $(EXTRA_libgcjgc_convenience_la_SOURCES) ++COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++DIST_COMMON = ChangeLog Makefile.am Makefile.in acinclude.m4 aclocal.m4 \ ++config.guess config.sub configure configure.in install-sh ltconfig \ ++ltmain.sh mkinstalldirs ++ ++ ++DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) --# if defined(GC_PTHREADS) || defined(GC_SOLARIS_THREADS) -+# if (defined(GC_PTHREADS) && !defined(GC_DARWIN_THREADS)) \ -+ || defined(GC_SOLARIS_THREADS) +-all: all-recursive ++TAR = gtar ++GZIP_ENV = --best ++SOURCES = $(libgcjgc_la_SOURCES) $(EXTRA_libgcjgc_la_SOURCES) $(libgcjgc_convenience_la_SOURCES) $(EXTRA_libgcjgc_convenience_la_SOURCES) ++OBJECTS = $(libgcjgc_la_OBJECTS) $(libgcjgc_convenience_la_OBJECTS) - # if defined(dlopen) && !defined(GC_USE_LD_WRAP) - /* To support various threads pkgs, gc.h interposes on dlopen by */ -diff -ur boehm-gc/include/gc.h gcc-3.3+/boehm-gc/include/gc.h ---- boehm-gc/include/gc.h Mon Feb 11 20:37:56 2002 -+++ boehm-gc/include/gc.h Mon Jun 16 01:19:56 2003 -@@ -74,7 +74,8 @@ - - # if defined(GC_SOLARIS_PTHREADS) || defined(GC_FREEBSD_THREADS) || \ - defined(GC_IRIX_THREADS) || defined(GC_LINUX_THREADS) || \ -- defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) -+ defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) || \ -+ defined(GC_DARWIN_THREADS) - # define GC_PTHREADS - # endif ++all: all-redirect + .SUFFIXES: + .SUFFIXES: .S .c .lo .o .obj .s ++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ++ cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile ++ ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ cd $(top_builddir) \ ++ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status -@@ -419,6 +420,10 @@ - GC_API void GC_add_roots GC_PROTO((char * low_address, - char * high_address_plus_1)); +-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ +- configure.lineno +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --cygnus Makefile +-Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) ++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4 ++ cd $(srcdir) && $(ACLOCAL) -+/* Remove a root segment. Wizards only. */ -+GC_API void GC_remove_roots GC_PROTO((char * low_address, -+ char * high_address_plus_1)); -+ - /* Add a displacement to the set of those considered valid by the */ - /* collector. GC_register_displacement(n) means that if p was returned */ - /* by GC_malloc, then (char *)p + n will be considered to be a valid */ -@@ -920,7 +925,11 @@ - */ - # define GC_INIT() { GC_add_roots(DATASTART, DATAEND); } - # else --# define GC_INIT() -+# if defined(__APPLE__) && defined(__MACH__) -+# define GC_INIT() { GC_init(); } -+# else -+# define GC_INIT() -+# endif - # endif - #endif +-$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +-$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) ++$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) -diff -ur boehm-gc/include/gc_pthread_redirects.h gcc-3.3+/boehm-gc/include/gc_pthread_redirects.h ---- boehm-gc/include/gc_pthread_redirects.h Tue Oct 16 21:55:28 2001 -+++ boehm-gc/include/gc_pthread_redirects.h Mon Jun 16 01:19:56 2003 -@@ -52,15 +52,21 @@ - int GC_pthread_create(pthread_t *new_thread, - const pthread_attr_t *attr, - void *(*start_routine)(void *), void *arg); -+#ifndef GC_DARWIN_THREADS - int GC_pthread_sigmask(int how, const sigset_t *set, sigset_t *oset); -+#endif - int GC_pthread_join(pthread_t thread, void **retval); - int GC_pthread_detach(pthread_t thread); +-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4 +- cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) ++mostlyclean-noinstLTLIBRARIES: - # define pthread_create GC_pthread_create -+#ifndef GC_DARWIN_THREADS - # define pthread_sigmask GC_pthread_sigmask -+#endif - # define pthread_join GC_pthread_join - # define pthread_detach GC_pthread_detach -+#ifndef GC_DARWIN_THREADS - # define dlopen GC_dlopen -+#endif + clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) +- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ +- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test -z "$dir" && dir=.; \ +- echo "rm -f \"$${dir}/so_locations\""; \ +- rm -f "$${dir}/so_locations"; \ +- done +-libgcjgc.la: $(libgcjgc_la_OBJECTS) $(libgcjgc_la_DEPENDENCIES) +- $(LINK) $(libgcjgc_la_LDFLAGS) $(libgcjgc_la_OBJECTS) $(libgcjgc_la_LIBADD) $(LIBS) +-libgcjgc_convenience.la: $(libgcjgc_convenience_la_OBJECTS) $(libgcjgc_convenience_la_DEPENDENCIES) +- $(LINK) $(libgcjgc_convenience_la_LDFLAGS) $(libgcjgc_convenience_la_OBJECTS) $(libgcjgc_convenience_la_LIBADD) $(LIBS) - #endif /* GC_xxxxx_THREADS */ +-clean-checkPROGRAMS: +- @list='$(check_PROGRAMS)'; for p in $$list; do \ +- f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ +- echo " rm -f $$p $$f"; \ +- rm -f $$p $$f ; \ +- done +-gctest$(EXEEXT): $(gctest_OBJECTS) $(gctest_DEPENDENCIES) +- @rm -f gctest$(EXEEXT) +- $(LINK) $(gctest_LDFLAGS) $(gctest_OBJECTS) $(gctest_LDADD) $(LIBS) ++distclean-noinstLTLIBRARIES: -diff -ur boehm-gc/include/private/gc_locks.h gcc-3.3+/boehm-gc/include/private/gc_locks.h ---- boehm-gc/include/private/gc_locks.h Fri Sep 27 13:40:06 2002 -+++ boehm-gc/include/private/gc_locks.h Mon Jun 16 01:19:56 2003 -@@ -145,23 +145,24 @@ - # if defined(POWERPC) - inline static int GC_test_and_set(volatile unsigned int *addr) { - int oldval; -- int temp = 1; // locked value -+ int temp = 1; /* locked value */ +-mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++maintainer-clean-noinstLTLIBRARIES: - __asm__ __volatile__( -- "1:\tlwarx %0,0,%3\n" // load and reserve -- "\tcmpwi %0, 0\n" // if load is -- "\tbne 2f\n" // non-zero, return already set -- "\tstwcx. %2,0,%1\n" // else store conditional -- "\tbne- 1b\n" // retry if lost reservation -- "2:\t\n" // oldval is zero if we set -+ "1:\tlwarx %0,0,%3\n" /* load and reserve */ -+ "\tcmpwi %0, 0\n" /* if load is */ -+ "\tbne 2f\n" /* non-zero, return already set */ -+ "\tstwcx. %2,0,%1\n" /* else store conditional */ -+ "\tbne- 1b\n" /* retry if lost reservation */ -+ "\tsync\n" /* import barrier */ -+ "2:\t\n" /* oldval is zero if we set */ - : "=&r"(oldval), "=p"(addr) - : "r"(temp), "1"(addr) -- : "memory"); -- return (int)oldval; -+ : "cr0","memory"); -+ return oldval; - } - # define GC_TEST_AND_SET_DEFINED - inline static void GC_clear(volatile unsigned int *addr) { -- __asm__ __volatile__("eieio" ::: "memory"); -+ __asm__ __volatile__("eieio" : : : "memory"); - *(addr) = 0; - } - # define GC_CLEAR_DEFINED -@@ -323,6 +324,37 @@ - __asm__ __volatile__("" : : : "memory"); - } - # endif /* I386 */ +-distclean-compile: +- -rm -f *.tab.c ++.c.o: ++ $(COMPILE) -c $< + -+# if defined(POWERPC) -+# if !defined(GENERIC_COMPARE_AND_SWAP) -+ /* Returns TRUE if the comparison succeeded. */ -+ inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr, -+ GC_word old, GC_word new_val) -+ { -+ int result, dummy; -+ __asm__ __volatile__( -+ "1:\tlwarx %0,0,%5\n" -+ "\tcmpw %0,%4\n" -+ "\tbne 2f\n" -+ "\tstwcx. %3,0,%2\n" -+ "\tbne- 1b\n" -+ "\tsync\n" -+ "\tli %1, 1\n" -+ "\tb 3f\n" -+ "2:\tli %1, 0\n" -+ "3:\t\n" -+ : "=&r" (dummy), "=r" (result), "=p" (addr) -+ : "r" (new_val), "r" (old), "2"(addr) -+ : "cr0","memory"); -+ return (GC_bool) result; -+ } -+# endif /* !GENERIC_COMPARE_AND_SWAP */ -+ inline static void GC_memory_barrier() -+ { -+ __asm__ __volatile__("sync" : : : "memory"); -+ } -+# endif /* POWERPC */ ++# FIXME: We should only use cygpath when building on Windows, ++# and only if it is available. ++.c.obj: ++ $(COMPILE) -c `cygpath -w $<` + - # if defined(IA64) - # if !defined(GENERIC_COMPARE_AND_SWAP) - inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr, -Only in boehm-gc/include/private: gc_locks.h.orig -diff -ur boehm-gc/include/private/gc_priv.h gcc-3.3+/boehm-gc/include/private/gc_priv.h ---- boehm-gc/include/private/gc_priv.h Tue Mar 4 09:56:49 2003 -+++ boehm-gc/include/private/gc_priv.h Mon Jun 16 01:19:56 2003 -@@ -347,7 +347,8 @@ - # include - # define BCOPY_EXISTS - # endif --# if defined(MACOSX) -+# if defined(DARWIN) -+# include - # define BCOPY_EXISTS - # endif ++.s.o: ++ $(COMPILE) -c $< -@@ -379,7 +380,8 @@ - + GC_page_size) \ - + GC_page_size-1) - # else --# if defined(NEXT) || defined(MACOSX) || defined(DOS4GW) || \ -+/* FIXME: Darwin mmap works properly in 6.2alpha4, backport the mmap code */ -+# if defined(NEXT) || defined(DOS4GW) || defined(DARWIN) || \ - (defined(AMIGA) && !defined(GC_AMIGA_FASTALLOC)) || \ - (defined(SUNOS5) && !defined(USE_MMAP)) - # define GET_MEM(bytes) HBLKPTR((size_t) \ -@@ -1452,6 +1454,7 @@ - /* Set all mark bits associated with */ - /* a free list. */ - void GC_add_roots_inner GC_PROTO((char * b, char * e, GC_bool tmp)); -+void GC_remove_roots_inner GC_PROTO((char * b, char * e)); - GC_bool GC_is_static_root GC_PROTO((ptr_t p)); - /* Is the address p in one of the registered static */ - /* root sections? */ -diff -ur boehm-gc/include/private/gcconfig.h gcc-3.3+/boehm-gc/include/private/gcconfig.h ---- boehm-gc/include/private/gcconfig.h Wed Apr 9 17:08:01 2003 -+++ boehm-gc/include/private/gcconfig.h Mon Jun 16 01:19:56 2003 -@@ -244,12 +244,12 @@ - # endif - # if defined(macosx) || \ - defined(__APPLE__) && defined(__MACH__) && defined(__ppc__) --# define MACOSX -+# define DARWIN - # define POWERPC - # define mach_type_known - # endif - # if defined(__APPLE__) && defined(__MACH__) && defined(__i386__) --# define MACOSX -+# define DARWIN - # define I386 - --> Not really supported, but at least we recognize it. - # endif -@@ -676,16 +676,34 @@ - extern int _end[]; - # define DATAEND (_end) - # endif --# ifdef MACOSX -+# ifdef DARWIN - /* There are reasons to suspect this may not be reliable. */ - # define ALIGNMENT 4 --# define OS_TYPE "MACOSX" -+# define OS_TYPE "DARWIN" -+# define DYNAMIC_LOADING -+ /* XXX: see get_end(3), get_etext() and get_end() should not be used */ - # define DATASTART ((ptr_t) get_etext()) - # define STACKBOTTOM ((ptr_t) 0xc0000000) --# define DATAEND /* not needed */ --# undef MPROTECT_VDB -+# define DATAEND ((ptr_t) get_end()) -+/* -+/* -+MMAP support in this version of the collector is broken. It works properly -+in 6.2alpha4. FIXME backport the MMAP changes. -+# define USE_MMAP -+# define USE_MMAP_ANON -+*/ -+/* # define MPROTECT_VDB -- There is some evidence that this breaks -+ * on some minor versions of DARWIN, i.e. 10.2.3. In theory, -+ * it should be OK */ - # include - # define GETPAGESIZE() getpagesize() -+# if defined(USE_PPC_PREFETCH) && defined(__GNUC__) -+ /* The performance impact of prefetches is untested */ -+# define PREFETCH(x) \ -+ __asm__ __volatile__ ("dcbt 0,%0" : : "r" ((const void *) (x))) -+# define PREFETCH_FOR_WRITE(x) \ -+ __asm__ __volatile__ ("dcbtst 0,%0" : : "r" ((const void *) (x))) -+# endif - # endif - # ifdef NETBSD - # define ALIGNMENT 4 -@@ -1743,7 +1761,7 @@ + .S.o: +- $(CCASCOMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++ $(COMPILE) -c $< - # if defined(SVR4) || defined(LINUX) || defined(IRIX) || defined(HPUX) \ - || defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) \ -- || defined(BSD) || defined(_AIX) || defined(MACOSX) || defined(OSF1) -+ || defined(BSD) || defined(_AIX) || defined(DARWIN) || defined(OSF1) - # define UNIX_LIKE /* Basic Unix-like system calls work. */ - # endif +-.S.obj: +- $(CCASCOMPILE) -c `cygpath -w $<` ++mostlyclean-compile: ++ -rm -f *.o core *.core ++ -rm -f *.$(OBJEXT) -@@ -1848,7 +1866,7 @@ - # define THREADS - # endif +-.S.lo: +- $(LTCCASCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++clean-compile: --# if defined(HP_PA) || defined(M88K) || defined(POWERPC) && !defined(MACOSX) \ -+# if defined(HP_PA) || defined(M88K) || defined(POWERPC) && !defined(DARWIN) \ - || defined(LINT) || defined(MSWINCE) \ - || (defined(I386) && defined(__LCC__)) - /* Use setjmp based hack to mark from callee-save registers. */ -Only in boehm-gc/include/private: gcconfig.h.orig -diff -ur boehm-gc/linux_threads.c gcc-3.3+/boehm-gc/linux_threads.c ---- boehm-gc/linux_threads.c Fri Mar 29 14:52:12 2002 -+++ boehm-gc/linux_threads.c Mon Jun 16 01:19:56 2003 -@@ -57,11 +57,15 @@ +-.c.o: +- $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++distclean-compile: ++ -rm -f *.tab.c - # include "private/gc_priv.h" +-.c.obj: +- $(COMPILE) -c `cygpath -w $<` ++maintainer-clean-compile: --# if defined(GC_HPUX_THREADS) && !defined(USE_PTHREAD_SPECIFIC) \ -+# if defined(GC_HPUX_THREADS) && !defined(USE_PTHREAD_IFIC) \ - && !defined(USE_HPUX_TLS) - # define USE_HPUX_TLS - # endif + .c.lo: +- $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++ $(LIBTOOL) --mode=compile $(COMPILE) -c $< -+#if defined(GC_DARWIN_THREADS) -+# define USE_PTHREAD_SPECIFIC -+#endif -+ - # ifdef THREAD_LOCAL_ALLOC - # if !defined(USE_PTHREAD_SPECIFIC) && !defined(USE_HPUX_TLS) - # include "private/specific.h" -@@ -87,12 +91,22 @@ - # include - # include - # include --# include - # include - # include - # include - # include - -+#if !defined(GC_DARWIN_THREADS) -+/* We have our own simple semaphore implementation of darwin */ -+# include -+#endif /* !GC_DARWIN_THREADS */ -+ -+#if defined(GC_DARWIN_THREADS) -+# include -+# include -+# include -+#endif /* GC_DARWIN_THREADS */ -+ - #ifndef __GNUC__ - # define __inline__ - #endif -@@ -104,11 +118,91 @@ - # define WRAP_FUNC(f) GC_##f - # define REAL_FUNC(f) f - # undef pthread_create -+# if !defined(GC_DARWIN_THREADS) - # undef pthread_sigmask -+# endif - # undef pthread_join - # undef pthread_detach - #endif +-.s.o: +- $(CCASCOMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< +- +-.s.obj: +- $(CCASCOMPILE) -c `cygpath -w $<` ++.S.lo: ++ $(LIBTOOL) --mode=compile $(COMPILE) -c $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -352,8 +310,27 @@ + -rm -rf .libs _libs -+#if defined(GC_DARWIN_THREADS) + distclean-libtool: +- -rm -f libtool +-uninstall-info-am: + -+/* -+ This is a very simple semaphore implementation for darwin. It -+ is implemented in terms of pthreads calls so it isn't async signal -+ safe. This isn't a problem because signals aren't used in to -+ suspend threads on darwin. -+*/ -+ -+typedef struct { -+ pthread_mutex_t mutex; -+ pthread_cond_t cond; -+ int value; -+} sem_t; -+ -+static int sem_init(sem_t *sem, int pshared, int value) { -+ int ret; -+ if(pshared) -+ GC_abort("sem_init with pshared set"); -+ sem->value = value; -+ -+ ret = pthread_mutex_init(&sem->mutex,NULL); -+ if(ret < 0) return -1; -+ ret = pthread_cond_init(&sem->cond,NULL); -+ if(ret < 0) return -1; -+ return 0; -+} ++maintainer-clean-libtool: + -+static int sem_post(sem_t *sem) { -+ if(pthread_mutex_lock(&sem->mutex) < 0) -+ return -1; -+ sem->value++; -+ if(pthread_cond_signal(&sem->cond) < 0) { -+ pthread_mutex_unlock(&sem->mutex); -+ return -1; -+ } -+ if(pthread_mutex_unlock(&sem->mutex) < 0) -+ return -1; -+ return 0; -+} ++libgcjgc.la: $(libgcjgc_la_OBJECTS) $(libgcjgc_la_DEPENDENCIES) ++ $(LINK) $(libgcjgc_la_LDFLAGS) $(libgcjgc_la_OBJECTS) $(libgcjgc_la_LIBADD) $(LIBS) + -+static int sem_wait(sem_t *sem) { -+ if(pthread_mutex_lock(&sem->mutex) < 0) -+ return -1; -+ while(sem->value == 0) { -+ pthread_cond_wait(&sem->cond,&sem->mutex); -+ } -+ sem->value--; -+ if(pthread_mutex_unlock(&sem->mutex) < 0) -+ return -1; -+ return 0; -+} ++libgcjgc_convenience.la: $(libgcjgc_convenience_la_OBJECTS) $(libgcjgc_convenience_la_DEPENDENCIES) ++ $(LINK) $(libgcjgc_convenience_la_LDFLAGS) $(libgcjgc_convenience_la_OBJECTS) $(libgcjgc_convenience_la_LIBADD) $(LIBS) + -+static int sem_destroy(sem_t *sem) { -+ int ret; -+ ret = pthread_cond_destroy(&sem->cond); -+ if(ret < 0) return -1; -+ ret = pthread_mutex_destroy(&sem->mutex); -+ if(ret < 0) return -1; -+ return 0; -+} ++mostlyclean-checkPROGRAMS: + -+#ifdef POWERPC -+/* From "Inside Mac OS X - Mach-O Runtime Architecture" published by Apple -+ Page 49: -+ "The space beneath the stack pointer, where a new stack frame would normally -+ be allocated, is called the red zone. This area as shown in Figure 3-2 may -+ be used for any purpose as long as a new stack frame does not need to be -+ added to the stack." -+ -+ Page 50: "If a leaf procedure's red zone usage would exceed 224 bytes, then -+ it must set up a stack frame just like routines that call other routines." -+*/ -+#define DARWIN_PPC_RED_ZONE 224 -+#endif POWERPC ++clean-checkPROGRAMS: ++ -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) + -+#endif /* !GC_DARWIN_THREADS */ ++distclean-checkPROGRAMS: + ++maintainer-clean-checkPROGRAMS: ++ ++gctest$(EXEEXT): $(gctest_OBJECTS) $(gctest_DEPENDENCIES) ++ @rm -f gctest$(EXEEXT) ++ $(LINK) $(gctest_LDFLAGS) $(gctest_OBJECTS) $(gctest_LDADD) $(LIBS) - void GC_thr_init(); + # This directory's subdirectories are mostly independent; you can cd + # into them and run `make' without going through this Makefile. +@@ -361,8 +338,13 @@ + # (1) if the variable is set in `config.status', edit `config.status' + # (which will cause the Makefiles to be regenerated when you run `make'); + # (2) otherwise, pass the desired values on the `make' command line. +-$(RECURSIVE_TARGETS): +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++ ++@SET_MAKE@ ++ ++all-recursive install-data-recursive install-exec-recursive \ ++installdirs-recursive install-recursive uninstall-recursive install-info-recursive \ ++check-recursive installcheck-recursive info-recursive dvi-recursive: ++ @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -382,18 +364,13 @@ -@@ -143,6 +237,9 @@ - /* guaranteed to be dead, but we may */ - /* not yet have registered the join.) */ - pthread_t id; -+#ifdef GC_DARWIN_THREADS -+ mach_port_t mach_thread; -+#endif - short flags; - # define FINISHED 1 /* Thread has exited. */ - # define DETACHED 2 /* Thread is intended to be detached. */ -@@ -160,7 +257,9 @@ - ptr_t backing_store_end; - ptr_t backing_store_ptr; - # endif -+#ifndef GC_DARWIN_THREADS - int signal; -+#endif - void * status; /* The value returned from the thread. */ - /* Used only to avoid premature */ - /* reclamation of any data it might */ -@@ -447,6 +546,7 @@ - * pointer(s) and acknowledge. - */ + mostlyclean-recursive clean-recursive distclean-recursive \ + maintainer-clean-recursive: +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++ @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ +- case "$@" in \ +- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ +- *) list='$(SUBDIRS)' ;; \ +- esac; \ +- rev=''; for subdir in $$list; do \ +- if test "$$subdir" = "."; then :; else \ +- rev="$$subdir $$rev"; \ +- fi; \ ++ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ ++ rev="$$subdir $$rev"; \ ++ test "$$subdir" = "." && dot_seen=yes; \ + done; \ +- rev="$$rev ."; \ ++ test "$$dot_seen" = "no" && rev=". $$rev"; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ +@@ -410,186 +387,211 @@ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done -+#if !defined(GC_DARWIN_THREADS) - #ifndef SIG_THR_RESTART - # if defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) - # define SIG_THR_RESTART _SIGRTMIN + 5 -@@ -454,8 +554,11 @@ - # define SIG_THR_RESTART SIGXCPU - # endif - #endif -+#endif +-ETAGS = etags +-ETAGSFLAGS = +- + tags: TAGS -+#if !defined(GC_DARWIN_THREADS) - sem_t GC_suspend_ack_sem; -+#endif /* !GC_DARWIN_THREADS */ +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ ++ID: $(HEADERS) $(SOURCES) $(LISP) ++ list='$(SOURCES) $(HEADERS)'; \ ++ unique=`for i in $$list; do echo $$i; done | \ ++ awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- mkid -fID $$unique ++ here=`pwd` && cd $(srcdir) \ ++ && mkid -f$$here/ID $$unique $(LISP) - #if 0 - /* -@@ -571,6 +674,7 @@ +-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) ++TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ +- if test "$$subdir" = .; then :; else \ ++ if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ +- fi; \ ++ fi; \ + done; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ ++ list='$(SOURCES) $(HEADERS)'; \ ++ unique=`for i in $$list; do echo $$i; done | \ ++ awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here ++ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ++ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ++ ++mostlyclean-tags: ++ ++clean-tags: - #endif /* !PARALLEL_MARK */ + distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH ++ -rm -f TAGS ID ++ ++maintainer-clean-tags: -+#if !defined(GC_DARWIN_THREADS) - void GC_suspend_handler(int sig) - { - int dummy; -@@ -633,7 +737,9 @@ - GC_printf1("Continuing 0x%x\n", my_thread); - #endif - } -+#endif /* !GC_DARWIN_THREADS */ ++distdir = $(PACKAGE)-$(VERSION) ++top_distdir = $(distdir) ++ ++# This target untars the dist file and tries a VPATH configuration. Then ++# it guarantees that the distribution is self-contained by making another ++# tarfile. ++distcheck: dist ++ -rm -rf $(distdir) ++ GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz ++ mkdir $(distdir)/=build ++ mkdir $(distdir)/=inst ++ dc_install_base=`cd $(distdir)/=inst && pwd`; \ ++ cd $(distdir)/=build \ ++ && ../configure --srcdir=.. --prefix=$$dc_install_base \ ++ && $(MAKE) $(AM_MAKEFLAGS) \ ++ && $(MAKE) $(AM_MAKEFLAGS) dvi \ ++ && $(MAKE) $(AM_MAKEFLAGS) check \ ++ && $(MAKE) $(AM_MAKEFLAGS) install \ ++ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ ++ && $(MAKE) $(AM_MAKEFLAGS) dist ++ -rm -rf $(distdir) ++ @banner="$(distdir).tar.gz is ready for distribution"; \ ++ dashes=`echo "$$banner" | sed s/./=/g`; \ ++ echo "$$dashes"; \ ++ echo "$$banner"; \ ++ echo "$$dashes" ++dist: distdir ++ -chmod -R a+r $(distdir) ++ GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) ++ -rm -rf $(distdir) ++dist-all: distdir ++ -chmod -R a+r $(distdir) ++ GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) ++ -rm -rf $(distdir) ++distdir: $(DISTFILES) ++ -rm -rf $(distdir) ++ mkdir $(distdir) ++ -chmod 777 $(distdir) ++ @for file in $(DISTFILES); do \ ++ if test -f $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ cp -pr $$d/$$file $(distdir)/$$file; \ ++ else \ ++ test -f $(distdir)/$$file \ ++ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ++ || cp -p $$d/$$file $(distdir)/$$file || :; \ ++ fi; \ ++ done ++ for subdir in $(SUBDIRS); do \ ++ if test "$$subdir" = .; then :; else \ ++ test -d $(distdir)/$$subdir \ ++ || mkdir $(distdir)/$$subdir \ ++ || exit 1; \ ++ chmod 777 $(distdir)/$$subdir; \ ++ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ ++ || exit 1; \ ++ fi; \ ++ done + check-TESTS: $(TESTS) +- @failed=0; all=0; xfail=0; xpass=0; \ ++ @failed=0; all=0; \ + srcdir=$(srcdir); export srcdir; \ +- list='$(TESTS)'; \ +- if test -n "$$list"; then \ +- for tst in $$list; do \ +- if test -f ./$$tst; then dir=./; \ +- elif test -f $$tst; then dir=; \ +- else dir="$(srcdir)/"; fi; \ +- if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ +- all=`expr $$all + 1`; \ +- case " $(XFAIL_TESTS) " in \ +- *" $$tst "*) \ +- xpass=`expr $$xpass + 1`; \ +- failed=`expr $$failed + 1`; \ +- echo "XPASS: $$tst"; \ +- ;; \ +- *) \ +- echo "PASS: $$tst"; \ +- ;; \ +- esac; \ +- elif test $$? -ne 77; then \ +- all=`expr $$all + 1`; \ +- case " $(XFAIL_TESTS) " in \ +- *" $$tst "*) \ +- xfail=`expr $$xfail + 1`; \ +- echo "XFAIL: $$tst"; \ +- ;; \ +- *) \ +- failed=`expr $$failed + 1`; \ +- echo "FAIL: $$tst"; \ +- ;; \ +- esac; \ +- fi; \ +- done; \ +- if test "$$failed" -eq 0; then \ +- if test "$$xfail" -eq 0; then \ +- banner="All $$all tests passed"; \ +- else \ +- banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ +- fi; \ +- else \ +- if test "$$xpass" -eq 0; then \ +- banner="$$failed of $$all tests failed"; \ +- else \ +- banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ +- fi; \ ++ for tst in $(TESTS); do \ ++ if test -f $$tst; then dir=.; \ ++ else dir="$(srcdir)"; fi; \ ++ if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ ++ all=`expr $$all + 1`; \ ++ echo "PASS: $$tst"; \ ++ elif test $$? -ne 77; then \ ++ all=`expr $$all + 1`; \ ++ failed=`expr $$failed + 1`; \ ++ echo "FAIL: $$tst"; \ + fi; \ +- dashes=`echo "$$banner" | sed s/./=/g`; \ +- echo "$$dashes"; \ +- echo "$$banner"; \ +- echo "$$dashes"; \ +- test "$$failed" -eq 0; \ +- else :; fi ++ done; \ ++ if test "$$failed" -eq 0; then \ ++ banner="All $$all tests passed"; \ ++ else \ ++ banner="$$failed of $$all tests failed"; \ ++ fi; \ ++ dashes=`echo "$$banner" | sed s/./=/g`; \ ++ echo "$$dashes"; \ ++ echo "$$banner"; \ ++ echo "$$dashes"; \ ++ test "$$failed" -eq 0 ++info-am: ++info: info-recursive ++dvi-am: ++dvi: dvi-recursive + check-am: $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS + check: check-recursive ++installcheck-am: ++installcheck: installcheck-recursive ++install-info-am: ++install-info: install-info-recursive ++install-exec-am: ++install-exec: install-exec-recursive ++ ++install-data-am: ++install-data: install-data-recursive ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++install: install-recursive ++uninstall-am: ++uninstall: uninstall-recursive + all-am: Makefile $(LTLIBRARIES) ++all-redirect: all-recursive ++install-strip: ++ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install + installdirs: installdirs-recursive + installdirs-am: -+#if !defined(GC_DARWIN_THREADS) - void GC_restart_handler(int sig) - { - GC_thread me; -@@ -660,6 +766,7 @@ - GC_printf1("In GC_restart_handler for 0x%x\n", pthread_self()); - #endif - } -+#endif /* !GC_DARWIN_THREADS */ - - /* Defining INSTALL_LOOPING_SEGV_HANDLER causes SIGSEGV and SIGBUS to */ - /* result in an infinite loop in a signal handler. This can be very */ -@@ -807,6 +914,16 @@ - register GC_thread p; - register int n_live_threads = 0; - register int result; -+# if defined(GC_DARWIN_THREADS) -+ kern_return_t kern_result; -+# if defined(POWERPC) -+ struct ppc_thread_state thread_state; -+ thread_state_flavor_t flavor = PPC_THREAD_STATE; -+ mach_msg_type_number_t thread_state_count = PPC_THREAD_STATE_COUNT; -+# else -+# error FIXME for non-ppc OS X +-install: install-recursive +-install-exec: install-exec-recursive +-install-data: install-data-recursive +-uninstall: uninstall-recursive + +-installcheck: installcheck-recursive +-install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + mostlyclean-generic: + + clean-generic: + + distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) ++ -rm -f config.cache config.log stamp-h stamp-h[0-9]* + + maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-recursive +- +-clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ +- clean-noinstLTLIBRARIES mostlyclean-am +- +-distclean: distclean-recursive +- -rm -f $(am__CONFIG_DISTCLEAN_FILES) +-distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags +- +-dvi: dvi-recursive +- +-dvi-am: +- +-info: info-recursive ++mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ++ mostlyclean-libtool mostlyclean-checkPROGRAMS \ ++ mostlyclean-tags mostlyclean-generic + +-info-am: ++mostlyclean: mostlyclean-recursive + +-install-data-am: ++clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ++ clean-checkPROGRAMS clean-tags clean-generic \ ++ mostlyclean-am + +-install-exec-am: ++clean: clean-recursive + +-install-info: ++distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ++ distclean-libtool distclean-checkPROGRAMS \ ++ distclean-tags distclean-generic clean-am ++ -rm -f libtool + +-install-man: ++distclean: distclean-recursive ++ -rm -f config.status + +-installcheck-am: ++maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ++ maintainer-clean-compile maintainer-clean-libtool \ ++ maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ++ maintainer-clean-generic distclean-am ++ @echo "This command is intended for maintainers to use;" ++ @echo "it deletes files that may require special tools to rebuild." + + maintainer-clean: maintainer-clean-recursive +- -rm -f $(am__CONFIG_DISTCLEAN_FILES) +- -rm -rf autom4te.cache +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-recursive +- +-mostlyclean-am: mostlyclean-compile mostlyclean-generic \ +- mostlyclean-libtool ++ -rm -f config.status + +-uninstall-am: +- +-uninstall-info: uninstall-info-recursive +- +-.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-TESTS check-am \ +- clean clean-checkPROGRAMS clean-generic clean-libtool \ +- clean-noinstLTLIBRARIES clean-recursive distclean \ +- distclean-compile distclean-generic distclean-libtool \ +- distclean-recursive distclean-tags dvi dvi-am dvi-recursive \ +- info info-am info-recursive install install-am install-data \ +- install-data-am install-data-recursive install-exec \ +- install-exec-am install-exec-recursive install-info \ +- install-info-am install-man install-recursive install-strip \ +- installcheck installcheck-am installdirs installdirs-am \ +- installdirs-recursive maintainer-clean maintainer-clean-generic \ +- maintainer-clean-recursive mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ +- tags tags-recursive uninstall uninstall-am uninstall-info-am \ +- uninstall-info-recursive uninstall-recursive ++.PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ++clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ++mostlyclean-compile distclean-compile clean-compile \ ++maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ++clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ++distclean-checkPROGRAMS clean-checkPROGRAMS \ ++maintainer-clean-checkPROGRAMS install-data-recursive \ ++uninstall-data-recursive install-exec-recursive \ ++uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ ++all-recursive check-recursive installcheck-recursive info-recursive \ ++dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ ++maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ ++distclean-tags clean-tags maintainer-clean-tags distdir check-TESTS \ ++info-am info dvi-am dvi check check-am installcheck-am installcheck \ ++install-info-am install-info install-exec-am install-exec \ ++install-data-am install-data install-am install uninstall-am uninstall \ ++all-redirect all-am all installdirs-am installdirs mostlyclean-generic \ ++distclean-generic clean-generic maintainer-clean-generic clean \ ++mostlyclean distclean maintainer-clean + + # The following hack produces a warning from automake, but we need it in order + # to build a file from a subdirectory. FIXME. +@@ -624,6 +626,7 @@ + $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean + maintainer-clean-multi: + $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean ++ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: +diff -Nur ../boehm-gc/allchblk.c boehm-gc/allchblk.c +--- ../boehm-gc/allchblk.c Mon May 26 12:48:52 2003 ++++ boehm-gc/allchblk.c Mon Apr 8 17:39:15 2002 +@@ -47,16 +47,12 @@ + struct hblk * GC_hblkfreelist[N_HBLK_FLS+1] = { 0 }; + + #ifndef USE_MUNMAP +- + word GC_free_bytes[N_HBLK_FLS+1] = { 0 }; + /* Number of free bytes on each list. */ + + /* Is bytes + the number of free bytes on lists n .. N_HBLK_FLS */ + /* > GC_max_large_allocd_bytes? */ +-# ifdef __GNUC__ +- __inline__ +-# endif +- static GC_bool GC_enough_large_bytes_left(bytes,n) ++ GC_bool GC_enough_large_bytes_left(bytes,n) + word bytes; + int n; + { +@@ -587,11 +583,11 @@ + if (!GC_use_entire_heap + && size_avail != size_needed + && USED_HEAP_SIZE >= GC_requested_heapsize +- && !TRUE_INCREMENTAL && GC_should_collect()) { ++ && !GC_incremental && GC_should_collect()) { + # ifdef USE_MUNMAP + continue; + # else +- /* If we have enough large blocks left to cover any */ ++ /* If we enough large blocks left to cover any */ + /* previous request for large blocks, we go ahead */ + /* and split. Assuming a steady state, that should */ + /* be safe. It means that we can use the full */ +@@ -599,12 +595,6 @@ + if (!GC_enough_large_bytes_left(GC_large_allocd_bytes, n)) { + continue; + } +- /* If we are deallocating lots of memory from */ +- /* finalizers, fail and collect sooner rather */ +- /* than later. */ +- if (GC_finalizer_mem_freed > (GC_heapsize >> 4)) { +- continue; +- } + # endif /* !USE_MUNMAP */ + } + /* If the next heap block is obviously better, go on. */ +diff -Nur ../boehm-gc/alloc.c boehm-gc/alloc.c +--- ../boehm-gc/alloc.c Mon May 26 12:48:52 2003 ++++ boehm-gc/alloc.c Mon Mar 3 22:38:30 2003 +@@ -72,13 +72,6 @@ + GC_bool GC_need_full_gc = FALSE; + /* Need full GC do to heap growth. */ + +-#ifdef THREADS +- GC_bool GC_world_stopped = FALSE; +-# define IF_THREADS(x) x +-#else +-# define IF_THREADS(x) +-#endif +- + word GC_used_heap_size_after_full = 0; + + char * GC_copyright[] = +@@ -126,6 +119,7 @@ + unsigned long time_diff; + + if ((count++ & 3) != 0) return(0); ++#ifndef NO_CLOCK + GET_TIME(current_time); + time_diff = MS_TIME_DIFF(current_time,GC_start_time); + if (time_diff >= GC_time_limit) { +@@ -138,6 +132,7 @@ + # endif + return(1); + } ++#endif + return(0); + } + #endif /* !SMALL_CONFIG */ +@@ -165,7 +160,7 @@ + + (GC_large_free_bytes >> 2) + /* use a bit more of large empty heap */ + + total_root_size); +- if (TRUE_INCREMENTAL) { ++ if (GC_incremental) { + return scan_size / (2 * GC_free_space_divisor); + } else { + return scan_size / GC_free_space_divisor; +@@ -187,8 +182,7 @@ + /* managed object should not alter result, assuming the client */ + /* is playing by the rules. */ + result = (signed_word)GC_words_allocd +- - (signed_word)GC_mem_freed +- + (signed_word)GC_finalizer_mem_freed - expl_managed; ++ - (signed_word)GC_mem_freed - expl_managed; + if (result > (signed_word)GC_words_allocd) { + result = GC_words_allocd; + /* probably client bug or unfortunate scheduling */ +@@ -256,6 +250,7 @@ + + if (GC_should_collect()) { + if (!GC_incremental) { ++ GC_notify_full_gc(); + GC_gcollect_inner(); + n_partial_gcs = 0; + return; +@@ -307,14 +302,10 @@ + /* + * Stop the world garbage collection. Assumes lock held, signals disabled. + * If stop_func is not GC_never_stop_func, then abort if stop_func returns TRUE. +- * Return TRUE if we successfully completed the collection. + */ + GC_bool GC_try_to_collect_inner(stop_func) + GC_stop_func stop_func; + { +-# ifdef CONDPRINT +- CLOCK_TYPE start_time, current_time; +-# endif + if (GC_dont_gc) return FALSE; + if (GC_incremental && GC_collection_in_progress()) { + # ifdef CONDPRINT +@@ -329,10 +320,8 @@ + GC_collect_a_little_inner(1); + } + } +- if (stop_func == GC_never_stop_func) GC_notify_full_gc(); + # ifdef CONDPRINT + if (GC_print_stats) { +- if (GC_print_stats) GET_TIME(start_time); + GC_printf2( + "Initiating full world-stop collection %lu after %ld allocd bytes\n", + (unsigned long) GC_gc_no+1, +@@ -371,13 +360,6 @@ + return(FALSE); + } + GC_finish_collection(); +-# if defined(CONDPRINT) +- if (GC_print_stats) { +- GET_TIME(current_time); +- GC_printf1("Complete collection took %lu msecs\n", +- MS_TIME_DIFF(current_time,start_time)); +- } +-# endif + return(TRUE); + } + +@@ -448,7 +430,6 @@ + result = (int)GC_collection_in_progress(); + UNLOCK(); + ENABLE_SIGNALS(); +- if (!result && GC_debugging_started) GC_print_all_smashed(); + return(result); + } + +@@ -467,17 +448,16 @@ + CLOCK_TYPE start_time, current_time; + # endif + ++# if defined(REGISTER_LIBRARIES_EARLY) ++ GC_cond_register_dynamic_libraries(); ++# endif ++ STOP_WORLD(); + # ifdef PRINTTIMES + GET_TIME(start_time); + # endif + # if defined(CONDPRINT) && !defined(PRINTTIMES) + if (GC_print_stats) GET_TIME(start_time); + # endif +-# if defined(REGISTER_LIBRARIES_EARLY) +- GC_cond_register_dynamic_libraries(); +-# endif +- STOP_WORLD(); +- IF_THREADS(GC_world_stopped = TRUE); + # ifdef CONDPRINT + if (GC_print_stats) { + GC_printf1("--> Marking for collection %lu ", +@@ -508,7 +488,6 @@ + } + # endif + GC_deficit = i; /* Give the mutator a chance. */ +- IF_THREADS(GC_world_stopped = FALSE); + START_WORLD(); + return(FALSE); + } +@@ -542,8 +521,6 @@ + (*GC_check_heap)(); + } + +- IF_THREADS(GC_world_stopped = FALSE); +- START_WORLD(); + # ifdef PRINTTIMES + GET_TIME(current_time); + GC_printf1("World-stopped marking took %lu msecs\n", +@@ -557,6 +534,7 @@ + } + # endif + # endif ++ START_WORLD(); + return(TRUE); + } + +@@ -633,7 +611,6 @@ + GC_print_address_map(); + } + # endif +- COND_DUMP; + if (GC_find_leak) { + /* Mark all objects on the free list. All objects should be */ + /* marked when we're done. */ +@@ -730,7 +707,6 @@ + GC_words_allocd = 0; + GC_words_wasted = 0; + GC_mem_freed = 0; +- GC_finalizer_mem_freed = 0; + + # ifdef USE_MUNMAP + GC_unmap_old(); +@@ -754,7 +730,6 @@ + int result; + DCL_LOCK_STATE; + +- if (GC_debugging_started) GC_print_all_smashed(); + GC_INVOKE_FINALIZERS(); + DISABLE_SIGNALS(); + LOCK(); +@@ -766,17 +741,14 @@ + EXIT_GC(); + UNLOCK(); + ENABLE_SIGNALS(); +- if(result) { +- if (GC_debugging_started) GC_print_all_smashed(); +- GC_INVOKE_FINALIZERS(); +- } ++ if(result) GC_INVOKE_FINALIZERS(); + return(result); + } + + void GC_gcollect GC_PROTO(()) + { ++ GC_notify_full_gc(); + (void)GC_try_to_collect(GC_never_stop_func); +- if (GC_have_errors) GC_print_all_errors(); + } + + word GC_n_heap_sects = 0; /* Number of sections currently in heap. */ +@@ -978,6 +950,7 @@ + { + if (!GC_incremental && !GC_dont_gc && + (GC_dont_expand && GC_words_allocd > 0 || GC_should_collect())) { ++ GC_notify_full_gc(); + GC_gcollect_inner(); + } else { + word blocks_to_get = GC_heapsize/(HBLKSIZE*GC_free_space_divisor) +@@ -1002,6 +975,7 @@ + && !GC_expand_hp_inner(needed_blocks)) { + if (GC_fail_count++ < GC_max_retries) { + WARN("Out of Memory! Trying to continue ...\n", 0); ++ GC_notify_full_gc(); + GC_gcollect_inner(); + } else { + # if !defined(AMIGA) || !defined(GC_AMIGA_FASTALLOC) +@@ -1031,38 +1005,29 @@ + word sz; + int kind; + { +- ptr_t * flh = &(GC_obj_kinds[kind].ok_freelist[sz]); +- GC_bool tried_minor = FALSE; ++ register ptr_t * flh = &(GC_obj_kinds[kind].ok_freelist[sz]); + + if (sz == 0) return(0); + + while (*flh == 0) { + ENTER_GC(); + /* Do our share of marking work */ +- if(TRUE_INCREMENTAL) GC_collect_a_little_inner(1); ++ if(GC_incremental && !GC_dont_gc) GC_collect_a_little_inner(1); + /* Sweep blocks for objects of this size */ +- GC_continue_reclaim(sz, kind); ++ GC_continue_reclaim(sz, kind); + EXIT_GC(); + if (*flh == 0) { + GC_new_hblk(sz, kind); + } + if (*flh == 0) { + ENTER_GC(); +- if (GC_incremental && GC_time_limit == GC_TIME_UNLIMITED +- && ! tried_minor ) { +- GC_collect_a_little_inner(1); +- tried_minor = TRUE; +- } else { +- if (!GC_collect_or_expand((word)1,FALSE)) { ++ if (!GC_collect_or_expand((word)1,FALSE)) { + EXIT_GC(); + return(0); +- } + } + EXIT_GC(); + } + } +- /* Successful allocation; reset failure count. */ +- GC_fail_count = 0; + + return(*flh); + } +diff -Nur ../boehm-gc/alpha_mach_dep.s boehm-gc/alpha_mach_dep.s +--- ../boehm-gc/alpha_mach_dep.s Mon May 26 12:48:52 2003 ++++ boehm-gc/alpha_mach_dep.s Fri Aug 17 11:30:45 2001 +@@ -1,4 +1,3 @@ +- # $Id: darwin.patch,v 1.3 2003/09/10 04:15:49 megacz Exp $ + .arch ev6 + + .text +diff -Nur ../boehm-gc/autom4te.cache/output.0 boehm-gc/autom4te.cache/output.0 +--- ../boehm-gc/autom4te.cache/output.0 Mon May 26 13:14:22 2003 ++++ boehm-gc/autom4te.cache/output.0 Wed Dec 31 16:00:00 1969 +@@ -1,5049 +0,0 @@ +-@%:@! /bin/sh +-@%:@ Guess values for system-dependent variables and create Makefiles. +-@%:@ Generated by GNU Autoconf 2.57. +-@%:@ +-@%:@ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +-@%:@ Free Software Foundation, Inc. +-@%:@ This configure script is free software; the Free Software Foundation +-@%:@ gives unlimited permission to copy, distribute and modify it. +-## --------------------- ## +-## M4sh Initialization. ## +-## --------------------- ## +- +-# Be Bourne compatible +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which +- # is contrary to our usage. Disable this feature. +- alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix +-fi +- +-# Support unset when possible. +-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +- as_unset=unset +-else +- as_unset=false +-fi +- +- +-# Work around bugs in pre-3.0 UWIN ksh. +-$as_unset ENV MAIL MAILPATH +-PS1='$ ' +-PS2='> ' +-PS4='+ ' +- +-# NLS nuisances. +-for as_var in \ +- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ +- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ +- LC_TELEPHONE LC_TIME +-do +- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then +- eval $as_var=C; export $as_var +- else +- $as_unset $as_var +- fi +-done +- +-# Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +- as_basename=basename +-else +- as_basename=false +-fi +- +- +-# Name of the executable. +-as_me=`$as_basename "$0" || +-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ +- X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- +- +-# PATH needs CR, and LINENO needs CR and PATH. +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits +- +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh +-fi +- +- +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- case $0 in +- *[\\/]* ) as_myself=$0 ;; +- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done +- +- ;; +- esac +- # We did not find ourselves, most probably we were run as `sh COMMAND' +- # in which case we are not to be found in the path. +- if test "x$as_myself" = x; then +- as_myself=$0 +- fi +- if test ! -f "$as_myself"; then +- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in +- /*) +- if ("$as_dir/$as_base" -c ' +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac +- +- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO +- # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. +- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | +- sed ' +- N +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, +- t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, +- ' >$as_me.lineno && +- chmod +x $as_me.lineno || +- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 +- { (exit 1); exit 1; }; } +- +- # Don't try to exec as it changes $[0], causing all sort of problems +- # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensible to this). +- . ./$as_me.lineno +- # Exit status is that of the last command. +- exit +-} +- +- +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +-esac +- +-if expr a : '\(a\)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-rm -f conf$$ conf$$.exe conf$$.file +-echo >conf$$.file +-if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links +- as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi +-elif ln conf$$.file conf$$ 2>/dev/null; then +- as_ln_s=ln +-else +- as_ln_s='cp -p' +-fi +-rm -f conf$$ conf$$.exe conf$$.file +- +-if mkdir -p . 2>/dev/null; then +- as_mkdir_p=: +-else +- as_mkdir_p=false +-fi +- +-as_executable_p="test -f" +- +-# Sed expression to map a string onto a valid CPP name. +-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +- +-# Sed expression to map a string onto a valid variable name. +-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +- +- +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- +- +-# Name of the host. +-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +-# so uname gets run too. +-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` +- +-exec 6>&1 +- +-# +-# Initializations. +-# +-ac_default_prefix=/usr/local +-ac_config_libobj_dir=. +-cross_compiling=no +-subdirs= +-MFLAGS= +-MAKEFLAGS= +-SHELL=${CONFIG_SHELL-/bin/sh} +- +-# Maximum number of lines to put in a shell here document. +-# This variable seems obsolete. It should probably be removed, and +-# only ac_max_sed_lines should be used. +-: ${ac_max_here_lines=38} +- +-# Identity of this package. +-PACKAGE_NAME= +-PACKAGE_TARNAME= +-PACKAGE_VERSION= +-PACKAGE_STRING= +-PACKAGE_BUGREPORT= +- +-ac_unique_file="gcj_mlc.c" +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS gc_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os mkinstalldirs INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO SET_MAKE CC CXX AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GC_CFLAGS LN_S STRIP ac_ct_STRIP LIBTOOL CXXCPP CPPFLAGS THREADLIBS POWERPC_DARWIN_TRUE POWERPC_DARWIN_FALSE EXTRA_TEST_LIBS target_all INCLUDES CXXINCLUDES addobjs MY_CFLAGS USE_LIBDIR_TRUE USE_LIBDIR_FALSE LIB@&t@OBJS LTLIBOBJS' +-ac_subst_files='' +- +-# Initialize some variables set by options. +-ac_init_help= +-ac_init_version=false +-# The variables have the same names as the options, with +-# dashes changed to underlines. +-cache_file=/dev/null +-exec_prefix=NONE +-no_create= +-no_recursion= +-prefix=NONE +-program_prefix=NONE +-program_suffix=NONE +-program_transform_name=s,x,x, +-silent= +-site= +-srcdir= +-verbose= +-x_includes=NONE +-x_libraries=NONE +- +-# Installation directory options. +-# These are left unexpanded so users can "make install exec_prefix=/foo" +-# and all the variables that are supposed to be based on exec_prefix +-# by default will actually change. +-# Use braces instead of parens because sh, perl, etc. also accept them. +-bindir='${exec_prefix}/bin' +-sbindir='${exec_prefix}/sbin' +-libexecdir='${exec_prefix}/libexec' +-datadir='${prefix}/share' +-sysconfdir='${prefix}/etc' +-sharedstatedir='${prefix}/com' +-localstatedir='${prefix}/var' +-libdir='${exec_prefix}/lib' +-includedir='${prefix}/include' +-oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' +- +-ac_prev= +-for ac_option +-do +- # If the previous option needs an argument, assign it. +- if test -n "$ac_prev"; then +- eval "$ac_prev=\$ac_option" +- ac_prev= +- continue +- fi +- +- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` +- +- # Accept the important Cygnus configure options, so we can diagnose typos. +- +- case $ac_option in +- +- -bindir | --bindir | --bindi | --bind | --bin | --bi) +- ac_prev=bindir ;; +- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) +- bindir=$ac_optarg ;; +- +- -build | --build | --buil | --bui | --bu) +- ac_prev=build_alias ;; +- -build=* | --build=* | --buil=* | --bui=* | --bu=*) +- build_alias=$ac_optarg ;; +- +- -cache-file | --cache-file | --cache-fil | --cache-fi \ +- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) +- ac_prev=cache_file ;; +- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ +- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) +- cache_file=$ac_optarg ;; +- +- --config-cache | -C) +- cache_file=config.cache ;; +- +- -datadir | --datadir | --datadi | --datad | --data | --dat | --da) +- ac_prev=datadir ;; +- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ +- | --da=*) +- datadir=$ac_optarg ;; +- +- -disable-* | --disable-*) +- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` +- # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid feature name: $ac_feature" >&2 +- { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- eval "enable_$ac_feature=no" ;; +- +- -enable-* | --enable-*) +- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` +- # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid feature name: $ac_feature" >&2 +- { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "enable_$ac_feature='$ac_optarg'" ;; +- +- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ +- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ +- | --exec | --exe | --ex) +- ac_prev=exec_prefix ;; +- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ +- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ +- | --exec=* | --exe=* | --ex=*) +- exec_prefix=$ac_optarg ;; +- +- -gas | --gas | --ga | --g) +- # Obsolete; use --with-gas. +- with_gas=yes ;; +- +- -help | --help | --hel | --he | -h) +- ac_init_help=long ;; +- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) +- ac_init_help=recursive ;; +- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) +- ac_init_help=short ;; +- +- -host | --host | --hos | --ho) +- ac_prev=host_alias ;; +- -host=* | --host=* | --hos=* | --ho=*) +- host_alias=$ac_optarg ;; +- +- -includedir | --includedir | --includedi | --included | --include \ +- | --includ | --inclu | --incl | --inc) +- ac_prev=includedir ;; +- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ +- | --includ=* | --inclu=* | --incl=* | --inc=*) +- includedir=$ac_optarg ;; +- +- -infodir | --infodir | --infodi | --infod | --info | --inf) +- ac_prev=infodir ;; +- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) +- infodir=$ac_optarg ;; +- +- -libdir | --libdir | --libdi | --libd) +- ac_prev=libdir ;; +- -libdir=* | --libdir=* | --libdi=* | --libd=*) +- libdir=$ac_optarg ;; +- +- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ +- | --libexe | --libex | --libe) +- ac_prev=libexecdir ;; +- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ +- | --libexe=* | --libex=* | --libe=*) +- libexecdir=$ac_optarg ;; +- +- -localstatedir | --localstatedir | --localstatedi | --localstated \ +- | --localstate | --localstat | --localsta | --localst \ +- | --locals | --local | --loca | --loc | --lo) +- ac_prev=localstatedir ;; +- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ +- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ +- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) +- localstatedir=$ac_optarg ;; +- +- -mandir | --mandir | --mandi | --mand | --man | --ma | --m) +- ac_prev=mandir ;; +- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) +- mandir=$ac_optarg ;; +- +- -nfp | --nfp | --nf) +- # Obsolete; use --without-fp. +- with_fp=no ;; +- +- -no-create | --no-create | --no-creat | --no-crea | --no-cre \ +- | --no-cr | --no-c | -n) +- no_create=yes ;; +- +- -no-recursion | --no-recursion | --no-recursio | --no-recursi \ +- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) +- no_recursion=yes ;; +- +- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ +- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ +- | --oldin | --oldi | --old | --ol | --o) +- ac_prev=oldincludedir ;; +- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ +- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ +- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) +- oldincludedir=$ac_optarg ;; +- +- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) +- ac_prev=prefix ;; +- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) +- prefix=$ac_optarg ;; +- +- -program-prefix | --program-prefix | --program-prefi | --program-pref \ +- | --program-pre | --program-pr | --program-p) +- ac_prev=program_prefix ;; +- -program-prefix=* | --program-prefix=* | --program-prefi=* \ +- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) +- program_prefix=$ac_optarg ;; +- +- -program-suffix | --program-suffix | --program-suffi | --program-suff \ +- | --program-suf | --program-su | --program-s) +- ac_prev=program_suffix ;; +- -program-suffix=* | --program-suffix=* | --program-suffi=* \ +- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) +- program_suffix=$ac_optarg ;; +- +- -program-transform-name | --program-transform-name \ +- | --program-transform-nam | --program-transform-na \ +- | --program-transform-n | --program-transform- \ +- | --program-transform | --program-transfor \ +- | --program-transfo | --program-transf \ +- | --program-trans | --program-tran \ +- | --progr-tra | --program-tr | --program-t) +- ac_prev=program_transform_name ;; +- -program-transform-name=* | --program-transform-name=* \ +- | --program-transform-nam=* | --program-transform-na=* \ +- | --program-transform-n=* | --program-transform-=* \ +- | --program-transform=* | --program-transfor=* \ +- | --program-transfo=* | --program-transf=* \ +- | --program-trans=* | --program-tran=* \ +- | --progr-tra=* | --program-tr=* | --program-t=*) +- program_transform_name=$ac_optarg ;; +- +- -q | -quiet | --quiet | --quie | --qui | --qu | --q \ +- | -silent | --silent | --silen | --sile | --sil) +- silent=yes ;; +- +- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) +- ac_prev=sbindir ;; +- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ +- | --sbi=* | --sb=*) +- sbindir=$ac_optarg ;; +- +- -sharedstatedir | --sharedstatedir | --sharedstatedi \ +- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ +- | --sharedst | --shareds | --shared | --share | --shar \ +- | --sha | --sh) +- ac_prev=sharedstatedir ;; +- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ +- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ +- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ +- | --sha=* | --sh=*) +- sharedstatedir=$ac_optarg ;; +- +- -site | --site | --sit) +- ac_prev=site ;; +- -site=* | --site=* | --sit=*) +- site=$ac_optarg ;; +- +- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) +- ac_prev=srcdir ;; +- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) +- srcdir=$ac_optarg ;; +- +- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ +- | --syscon | --sysco | --sysc | --sys | --sy) +- ac_prev=sysconfdir ;; +- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ +- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) +- sysconfdir=$ac_optarg ;; +- +- -target | --target | --targe | --targ | --tar | --ta | --t) +- ac_prev=target_alias ;; +- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) +- target_alias=$ac_optarg ;; +- +- -v | -verbose | --verbose | --verbos | --verbo | --verb) +- verbose=yes ;; +- +- -version | --version | --versio | --versi | --vers | -V) +- ac_init_version=: ;; +- +- -with-* | --with-*) +- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` +- # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid package name: $ac_package" >&2 +- { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package| sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "with_$ac_package='$ac_optarg'" ;; +- +- -without-* | --without-*) +- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` +- # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid package name: $ac_package" >&2 +- { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package | sed 's/-/_/g'` +- eval "with_$ac_package=no" ;; +- +- --x) +- # Obsolete; use --with-x. +- with_x=yes ;; +- +- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ +- | --x-incl | --x-inc | --x-in | --x-i) +- ac_prev=x_includes ;; +- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ +- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) +- x_includes=$ac_optarg ;; +- +- -x-libraries | --x-libraries | --x-librarie | --x-librari \ +- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) +- ac_prev=x_libraries ;; +- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ +- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) +- x_libraries=$ac_optarg ;; +- +- -*) { echo "$as_me: error: unrecognized option: $ac_option +-Try \`$0 --help' for more information." >&2 +- { (exit 1); exit 1; }; } +- ;; +- +- *=*) +- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` +- # Reject names that are not valid shell variable names. +- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 +- { (exit 1); exit 1; }; } +- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` +- eval "$ac_envvar='$ac_optarg'" +- export $ac_envvar ;; +- +- *) +- # FIXME: should be removed in autoconf 3.0. +- echo "$as_me: WARNING: you should use --build, --host, --target" >&2 +- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && +- echo "$as_me: WARNING: invalid host type: $ac_option" >&2 +- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} +- ;; +- +- esac +-done +- +-if test -n "$ac_prev"; then +- ac_option=--`echo $ac_prev | sed 's/_/-/g'` +- { echo "$as_me: error: missing argument to $ac_option" >&2 +- { (exit 1); exit 1; }; } +-fi +- +-# Be sure to have absolute paths. +-for ac_var in exec_prefix prefix +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\\/$]* | ?:[\\/]* | NONE | '' ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# Be sure to have absolute paths. +-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\\/$]* | ?:[\\/]* ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# There might be people who depend on the old broken behavior: `$host' +-# used to hold the argument of --host etc. +-# FIXME: To remove some day. +-build=$build_alias +-host=$host_alias +-target=$target_alias +- +-# FIXME: To remove some day. +-if test "x$host_alias" != x; then +- if test "x$build_alias" = x; then +- cross_compiling=maybe +- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. +- If a cross compiler is detected then cross compile mode will be used." >&2 +- elif test "x$build_alias" != "x$host_alias"; then +- cross_compiling=yes +- fi +-fi +- +-ac_tool_prefix= +-test -n "$host_alias" && ac_tool_prefix=$host_alias- +- +-test "$silent" = yes && exec 6>/dev/null +- +- +-# Find the source files, if location was not specified. +-if test -z "$srcdir"; then +- ac_srcdir_defaulted=yes +- # Try the directory containing this script, then its parent. +- ac_confdir=`(dirname "$0") 2>/dev/null || +-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$0" : 'X\(//\)[^/]' \| \ +- X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$0" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- srcdir=$ac_confdir +- if test ! -r $srcdir/$ac_unique_file; then +- srcdir=.. +- fi +-else +- ac_srcdir_defaulted=no +-fi +-if test ! -r $srcdir/$ac_unique_file; then +- if test "$ac_srcdir_defaulted" = yes; then +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +- { (exit 1); exit 1; }; } +- else +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +- { (exit 1); exit 1; }; } +- fi +-fi +-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || +- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +- { (exit 1); exit 1; }; } +-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +-ac_env_build_alias_set=${build_alias+set} +-ac_env_build_alias_value=$build_alias +-ac_cv_env_build_alias_set=${build_alias+set} +-ac_cv_env_build_alias_value=$build_alias +-ac_env_host_alias_set=${host_alias+set} +-ac_env_host_alias_value=$host_alias +-ac_cv_env_host_alias_set=${host_alias+set} +-ac_cv_env_host_alias_value=$host_alias +-ac_env_target_alias_set=${target_alias+set} +-ac_env_target_alias_value=$target_alias +-ac_cv_env_target_alias_set=${target_alias+set} +-ac_cv_env_target_alias_value=$target_alias +-ac_env_CXXCPP_set=${CXXCPP+set} +-ac_env_CXXCPP_value=$CXXCPP +-ac_cv_env_CXXCPP_set=${CXXCPP+set} +-ac_cv_env_CXXCPP_value=$CXXCPP +-ac_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_env_CPPFLAGS_value=$CPPFLAGS +-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_cv_env_CPPFLAGS_value=$CPPFLAGS +- +-# +-# Report the --help message. +-# +-if test "$ac_init_help" = "long"; then +- # Omit some internal or obsolete options to make the list less imposing. +- # This message is too long to be a string in the A/UX 3.1 sh. +- cat <<_ACEOF +-\`configure' configures this package to adapt to many kinds of systems. +- +-Usage: $0 [OPTION]... [VAR=VALUE]... +- +-To assign environment variables (e.g., CC, CFLAGS...), specify them as +-VAR=VALUE. See below for descriptions of some of the useful variables. +- +-Defaults for the options are specified in brackets. +- +-Configuration: +- -h, --help display this help and exit +- --help=short display options specific to this package +- --help=recursive display the short help of all the included packages +- -V, --version display version information and exit +- -q, --quiet, --silent do not print \`checking...' messages +- --cache-file=FILE cache test results in FILE [disabled] +- -C, --config-cache alias for \`--cache-file=config.cache' +- -n, --no-create do not create output files +- --srcdir=DIR find the sources in DIR [configure dir or \`..'] +- +-_ACEOF +- +- cat <<_ACEOF +-Installation directories: +- --prefix=PREFIX install architecture-independent files in PREFIX +- [$ac_default_prefix] +- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX +- [PREFIX] +- +-By default, \`make install' will install all the files in +-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +-an installation prefix other than \`$ac_default_prefix' using \`--prefix', +-for instance \`--prefix=\$HOME'. +- +-For better control, use the options below. +- +-Fine tuning of the installation directories: +- --bindir=DIR user executables [EPREFIX/bin] +- --sbindir=DIR system admin executables [EPREFIX/sbin] +- --libexecdir=DIR program executables [EPREFIX/libexec] +- --datadir=DIR read-only architecture-independent data [PREFIX/share] +- --sysconfdir=DIR read-only single-machine data [PREFIX/etc] +- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] +- --localstatedir=DIR modifiable single-machine data [PREFIX/var] +- --libdir=DIR object code libraries [EPREFIX/lib] +- --includedir=DIR C header files [PREFIX/include] +- --oldincludedir=DIR C header files for non-gcc [/usr/include] +- --infodir=DIR info documentation [PREFIX/info] +- --mandir=DIR man documentation [PREFIX/man] +-_ACEOF +- +- cat <<\_ACEOF +- +-Program names: +- --program-prefix=PREFIX prepend PREFIX to installed program names +- --program-suffix=SUFFIX append SUFFIX to installed program names +- --program-transform-name=PROGRAM run sed PROGRAM on installed program names +- +-System types: +- --build=BUILD configure for building on BUILD [guessed] +- --host=HOST cross-compile to build programs to run on HOST [BUILD] +- --target=TARGET configure for building compilers for TARGET [HOST] +-_ACEOF +-fi +- +-if test -n "$ac_init_help"; then +- +- cat <<\_ACEOF +- +-Optional Features: +- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) +- --enable-FEATURE[=ARG] include FEATURE [ARG=yes] +- --enable-multilib build many library versions (default) +- --enable-maintainer-mode enable make rules and dependencies not useful +- (and sometimes confusing) to the casual installer +- --enable-shared=PKGS build shared libraries default=yes +- --enable-static=PKGS build static libraries default=yes +- --enable-fast-install=PKGS optimize for fast installation default=yes +- --disable-libtool-lock avoid locking (might break parallel builds) +- --enable-parallel-mark parallelize marking and free list construction +- --enable-shared=PKGS build shared libraries default=no +- --enable-full-debug include full support for pointer backtracing etc. +- +-Optional Packages: +- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] +- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) +- --with-gnu-ld assume the C compiler uses GNU ld default=no +- --with-pic try to use only PIC/non-PIC objects default=use both +- --with-target-subdir=SUBDIR +- configuring with a cross compiler +- --with-cross-host=HOST configuring with a cross compiler +- --with-ecos enable runtime eCos target support +- +-Some influential environment variables: +- CXXCPP C++ preprocessor +- CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have +- headers in a nonstandard directory +- +-Use these variables to override the choices made by `configure' or to help +-it to find libraries and programs with nonstandard names/locations. +- +-_ACEOF +-fi +- +-if test "$ac_init_help" = "recursive"; then +- # If there are subdirs, report their specific --help. +- ac_popdir=`pwd` +- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue +- test -d $ac_dir || continue +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +-# absolute. +-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` +- +- cd $ac_dir +- # Check for guested configure; otherwise get Cygnus style configure. +- if test -f $ac_srcdir/configure.gnu; then +- echo +- $SHELL $ac_srcdir/configure.gnu --help=recursive +- elif test -f $ac_srcdir/configure; then +- echo +- $SHELL $ac_srcdir/configure --help=recursive +- elif test -f $ac_srcdir/configure.ac || +- test -f $ac_srcdir/configure.in; then +- echo +- $ac_configure --help +- else +- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 +- fi +- cd $ac_popdir +- done +-fi +- +-test -n "$ac_init_help" && exit 0 +-if $ac_init_version; then +- cat <<\_ACEOF +- +-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +-Free Software Foundation, Inc. +-This configure script is free software; the Free Software Foundation +-gives unlimited permission to copy, distribute and modify it. +-_ACEOF +- exit 0 +-fi +-exec 5>config.log +-cat >&5 <<_ACEOF +-This file contains any messages produced by compilers while +-running configure, to aid debugging if configure makes a mistake. +- +-It was created by $as_me, which was +-generated by GNU Autoconf 2.57. Invocation command line was +- +- $ $0 $@ +- +-_ACEOF +-{ +-cat <<_ASUNAME +-@%:@@%:@ --------- @%:@@%:@ +-@%:@@%:@ Platform. @%:@@%:@ +-@%:@@%:@ --------- @%:@@%:@ +- +-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +-uname -m = `(uname -m) 2>/dev/null || echo unknown` +-uname -r = `(uname -r) 2>/dev/null || echo unknown` +-uname -s = `(uname -s) 2>/dev/null || echo unknown` +-uname -v = `(uname -v) 2>/dev/null || echo unknown` +- +-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` +- +-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +-hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` +- +-_ASUNAME +- +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- echo "PATH: $as_dir" +-done +- +-} >&5 +- +-cat >&5 <<_ACEOF +- +- +-@%:@@%:@ ----------- @%:@@%:@ +-@%:@@%:@ Core tests. @%:@@%:@ +-@%:@@%:@ ----------- @%:@@%:@ +- +-_ACEOF +- +- +-# Keep a trace of the command line. +-# Strip out --no-create and --no-recursion so they do not pile up. +-# Strip out --silent because we don't want to record it for future runs. +-# Also quote any args containing shell meta-characters. +-# Make two passes to allow for proper duplicate-argument suppression. +-ac_configure_args= +-ac_configure_args0= +-ac_configure_args1= +-ac_sep= +-ac_must_keep_next=false +-for ac_pass in 1 2 +-do +- for ac_arg +- do +- case $ac_arg in +- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; +- -q | -quiet | --quiet | --quie | --qui | --qu | --q \ +- | -silent | --silent | --silen | --sile | --sil) +- continue ;; +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; +- esac +- case $ac_pass in +- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; +- 2) +- ac_configure_args1="$ac_configure_args1 '$ac_arg'" +- if test $ac_must_keep_next = true; then +- ac_must_keep_next=false # Got value, back to normal. +- else +- case $ac_arg in +- *=* | --config-cache | -C | -disable-* | --disable-* \ +- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ +- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ +- | -with-* | --with-* | -without-* | --without-* | --x) +- case "$ac_configure_args0 " in +- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; +- esac +- ;; +- -* ) ac_must_keep_next=true ;; +- esac +- fi +- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" +- # Get rid of the leading space. +- ac_sep=" " +- ;; +- esac +- done +-done +-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } +- +-# When interrupted or exit'd, cleanup temporary files, and complete +-# config.log. We remove comments because anyway the quotes in there +-# would cause problems or look ugly. +-# WARNING: Be sure not to use single quotes in there, as some shells, +-# such as our DU 5.0 friend, will then `close' the trap. +-trap 'exit_status=$? +- # Save into config.log some information that might help in debugging. +- { +- echo +- +- cat <<\_ASBOX +-@%:@@%:@ ---------------- @%:@@%:@ +-@%:@@%:@ Cache variables. @%:@@%:@ +-@%:@@%:@ ---------------- @%:@@%:@ +-_ASBOX +- echo +- # The following way of writing the cache mishandles newlines in values, +-{ +- (set) 2>&1 | +- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in +- *ac_space=\ *) +- sed -n \ +- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" +- ;; +- *) +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" +- ;; +- esac; +-} +- echo +- +- cat <<\_ASBOX +-@%:@@%:@ ----------------- @%:@@%:@ +-@%:@@%:@ Output variables. @%:@@%:@ +-@%:@@%:@ ----------------- @%:@@%:@ +-_ASBOX +- echo +- for ac_var in $ac_subst_vars +- do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" +- done | sort +- echo +- +- if test -n "$ac_subst_files"; then +- cat <<\_ASBOX +-@%:@@%:@ ------------- @%:@@%:@ +-@%:@@%:@ Output files. @%:@@%:@ +-@%:@@%:@ ------------- @%:@@%:@ +-_ASBOX +- echo +- for ac_var in $ac_subst_files +- do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" +- done | sort +- echo +- fi +- +- if test -s confdefs.h; then +- cat <<\_ASBOX +-@%:@@%:@ ----------- @%:@@%:@ +-@%:@@%:@ confdefs.h. @%:@@%:@ +-@%:@@%:@ ----------- @%:@@%:@ +-_ASBOX +- echo +- sed "/^$/d" confdefs.h | sort +- echo +- fi +- test "$ac_signal" != 0 && +- echo "$as_me: caught signal $ac_signal" +- echo "$as_me: exit $exit_status" +- } >&5 +- rm -f core core.* *.core && +- rm -rf conftest* confdefs* conf$$* $ac_clean_files && +- exit $exit_status +- ' 0 +-for ac_signal in 1 2 13 15; do +- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +-done +-ac_signal=0 +- +-# confdefs.h avoids OS command line length limits that DEFS can exceed. +-rm -rf conftest* confdefs.h +-# AIX cpp loses on an empty file, so make sure it contains at least a newline. +-echo >confdefs.h +- +-# Predefined preprocessor variables. +- +-cat >>confdefs.h <<_ACEOF +-@%:@define PACKAGE_NAME "$PACKAGE_NAME" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-@%:@define PACKAGE_STRING "$PACKAGE_STRING" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +-_ACEOF +- +- +-# Let the site file select an alternate cache file if it wants to. +-# Prefer explicitly selected file to automatically selected ones. +-if test -z "$CONFIG_SITE"; then +- if test "x$prefix" != xNONE; then +- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" +- else +- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +- fi +-fi +-for ac_site_file in $CONFIG_SITE; do +- if test -r "$ac_site_file"; then +- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +-echo "$as_me: loading site script $ac_site_file" >&6;} +- sed 's/^/| /' "$ac_site_file" >&5 +- . "$ac_site_file" +- fi +-done +- +-if test -r "$cache_file"; then +- # Some versions of bash will fail to source /dev/null (special +- # files actually), so we avoid doing that. +- if test -f "$cache_file"; then +- { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +-echo "$as_me: loading cache $cache_file" >&6;} +- case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; +- esac +- fi +-else +- { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +-echo "$as_me: creating cache $cache_file" >&6;} +- >$cache_file +-fi +- +-# Check that the precious variables saved in the cache have kept the same +-# value. +-ac_cache_corrupted=false +-for ac_var in `(set) 2>&1 | +- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do +- eval ac_old_set=\$ac_cv_env_${ac_var}_set +- eval ac_new_set=\$ac_env_${ac_var}_set +- eval ac_old_val="\$ac_cv_env_${ac_var}_value" +- eval ac_new_val="\$ac_env_${ac_var}_value" +- case $ac_old_set,$ac_new_set in +- set,) +- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} +- ac_cache_corrupted=: ;; +- ,set) +- { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} +- ac_cache_corrupted=: ;; +- ,);; +- *) +- if test "x$ac_old_val" != "x$ac_new_val"; then +- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} +- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +-echo "$as_me: former value: $ac_old_val" >&2;} +- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +-echo "$as_me: current value: $ac_new_val" >&2;} +- ac_cache_corrupted=: +- fi;; +- esac +- # Pass precious variables to config.status. +- if test "$ac_new_set" = set; then +- case $ac_new_val in +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; +- *) ac_arg=$ac_var=$ac_new_val ;; +- esac +- case " $ac_configure_args " in +- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. +- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; +- esac +- fi +-done +-if $ac_cache_corrupted; then +- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +-echo "$as_me: error: changes in the environment can compromise the build" >&2;} +- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +-# This works around the fact that libtool configuration may change LD +-# for this particular configuration, but some shells, instead of +-# keeping the changes in LD private, export them just because LD is +-# exported. +-ORIGINAL_LD_FOR_MULTILIBS=$LD +- +-ac_aux_dir= +-for ac_dir in . $srcdir/.; do +- if test -f $ac_dir/install-sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install-sh -c" +- break +- elif test -f $ac_dir/install.sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install.sh -c" +- break +- elif test -f $ac_dir/shtool; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/shtool install -c" +- break +- fi +-done +-if test -z "$ac_aux_dir"; then +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in . $srcdir/." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in . $srcdir/." >&2;} +- { (exit 1); exit 1; }; } +-fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. +- +- +-# Make sure we can run config.sub. +-$ac_config_sub sun4 >/dev/null 2>&1 || +- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +-echo "$as_me: error: cannot run $ac_config_sub" >&2;} +- { (exit 1); exit 1; }; } +- +-echo "$as_me:$LINENO: checking build system type" >&5 +-echo $ECHO_N "checking build system type... $ECHO_C" >&6 +-if test "${ac_cv_build+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_build_alias=$build_alias +-test -z "$ac_cv_build_alias" && +- ac_cv_build_alias=`$ac_config_guess` +-test -z "$ac_cv_build_alias" && +- { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +-echo "$as_me: error: cannot guess build type; you must specify one" >&2;} +- { (exit 1); exit 1; }; } +-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} +- { (exit 1); exit 1; }; } +- +-fi +-echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +-echo "${ECHO_T}$ac_cv_build" >&6 +-build=$ac_cv_build +-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +- +- +-echo "$as_me:$LINENO: checking host system type" >&5 +-echo $ECHO_N "checking host system type... $ECHO_C" >&6 +-if test "${ac_cv_host+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_host_alias=$host_alias +-test -z "$ac_cv_host_alias" && +- ac_cv_host_alias=$ac_cv_build_alias +-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} +- { (exit 1); exit 1; }; } +- +-fi +-echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +-echo "${ECHO_T}$ac_cv_host" >&6 +-host=$ac_cv_host +-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +- +- +-# Find a good install program. We prefer a C program (faster), +-# so one script is as good as another. But avoid the broken or +-# incompatible versions: +-# SysV /etc/install, /usr/sbin/install +-# SunOS /usr/etc/install +-# IRIX /sbin/install +-# AIX /bin/install +-# AmigaOS /C/install, which installs bootblocks on floppy discs +-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +-# AFS /usr/afsws/bin/install, which mishandles nonexistent args +-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +-# ./install, which can be erroneously created by make from ./install.sh. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +-if test -z "$INSTALL"; then +-if test "${ac_cv_path_install+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- # Account for people who put trailing slashes in PATH elements. +-case $as_dir/ in +- ./ | .// | /cC/* | \ +- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ +- /usr/ucb/* ) ;; +- *) +- # OSF1 and SCO ODT 3.0 have their own names for install. +- # Don't use installbsd from OSF since it installs stuff as root +- # by default. +- for ac_prog in ginstall scoinst install; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then +- if test $ac_prog = install && +- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # AIX install. It has an incompatible calling convention. +- : +- elif test $ac_prog = install && +- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # program-specific install script used by HP pwplus--don't use. +- : +- else +- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" +- break 3 +- fi +- fi +- done +- done +- ;; +-esac +-done +- +- +-fi +- if test "${ac_cv_path_install+set}" = set; then +- INSTALL=$ac_cv_path_install +- else +- # As a last resort, use the slow shell script. We don't cache a +- # path for INSTALL within a source directory, because that will +- # break other packages using the cache if that directory is +- # removed, or if the path is relative. +- INSTALL=$ac_install_sh +- fi +-fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 +- +-# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +-# It thinks the first close brace ends the variable substitution. +-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' +- +-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' +- +-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +- +-echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +-# Just in case +-sleep 1 +-echo timestamp > conftestfile +-# Do `set' in a subshell so we don't clobber the current shell's +-# arguments. Must try -L first in case configure is actually a +-# symlink; some systems play weird games with the mod time of symlinks +-# (eg FreeBSD returns the mod time of the symlink's containing +-# directory). +-if ( +- set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` +- if test "$*" = "X"; then +- # -L didn't work. +- set X `ls -t $srcdir/configure conftestfile` +- fi +- if test "$*" != "X $srcdir/configure conftestfile" \ +- && test "$*" != "X conftestfile $srcdir/configure"; then +- +- # If neither matched, then we have a broken ls. This can happen +- # if, for instance, CONFIG_SHELL is bash and it inherits a +- # broken ls alias from the environment. This has actually +- # happened. Such a system could not be considered "sane". +- { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +-alias in your environment" >&5 +-echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +-alias in your environment" >&2;} +- { (exit 1); exit 1; }; } +- fi +- +- test "$2" = conftestfile +- ) +-then +- # Ok. +- : +-else +- { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +-Check your system clock" >&5 +-echo "$as_me: error: newly created file is older than distributed files! +-Check your system clock" >&2;} +- { (exit 1); exit 1; }; } +-fi +-rm -f conftest* +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +-test "$program_prefix" != NONE && +- program_transform_name="s,^,$program_prefix,;$program_transform_name" +-# Use a double $ so make ignores it. +-test "$program_suffix" != NONE && +- program_transform_name="s,\$,$program_suffix,;$program_transform_name" +-# Double any \ or $. echo might interpret backslashes. +-# By default was `s,x,x', remove it if useless. +-cat <<\_ACEOF >conftest.sed +-s/[\\$]/&&/g;s/;s,x,x,$// +-_ACEOF +-program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +-rm conftest.sed +- +-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.make <<\_ACEOF +-all: +- @echo 'ac_maketemp="$(MAKE)"' +-_ACEOF +-# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +-if test -n "$ac_maketemp"; then +- eval ac_cv_prog_make_${ac_make}_set=yes +-else +- eval ac_cv_prog_make_${ac_make}_set=no +-fi +-rm -f conftest.make +-fi +-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +- SET_MAKE= +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +- SET_MAKE="MAKE=${MAKE-make}" +-fi +- +- +-# Check whether --enable-multilib or --disable-multilib was given. +-if test "${enable_multilib+set}" = set; then +- enableval="$enable_multilib" +- case "${enableval}" in +- yes) multilib=yes ;; +- no) multilib=no ;; +- *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for multilib option" >&5 +-echo "$as_me: error: bad value ${enableval} for multilib option" >&2;} +- { (exit 1); exit 1; }; } ;; +- esac +-else +- multilib=yes +-fi; +- +-if test "${srcdir}" = "."; then +- if test "${with_target_subdir}" != "." -a -n "${with_target_subdir}"; then +- gc_basedir="${srcdir}/${with_multisrctop}../." +- else +- gc_basedir="${srcdir}/${with_multisrctop}." +- fi +-else +- gc_basedir="${srcdir}/." +-fi +- +-ac_aux_dir= +-for ac_dir in $gc_basedir/.. $srcdir/$gc_basedir/..; do +- if test -f $ac_dir/install-sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install-sh -c" +- break +- elif test -f $ac_dir/install.sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install.sh -c" +- break +- elif test -f $ac_dir/shtool; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/shtool install -c" +- break +- fi +-done +-if test -z "$ac_aux_dir"; then +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $gc_basedir/.. $srcdir/$gc_basedir/.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in $gc_basedir/.. $srcdir/$gc_basedir/.." >&2;} +- { (exit 1); exit 1; }; } +-fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. +- +-if :; then :; else +- # This overrides the previous occurrence for automake, but not for +- # autoconf, which is exactly what we want. +- ac_aux_dir= +-for ac_dir in .. $srcdir/..; do +- if test -f $ac_dir/install-sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install-sh -c" +- break +- elif test -f $ac_dir/install.sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install.sh -c" +- break +- elif test -f $ac_dir/shtool; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/shtool install -c" +- break +- fi +-done +-if test -z "$ac_aux_dir"; then +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in .. $srcdir/.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in .. $srcdir/.." >&2;} +- { (exit 1); exit 1; }; } +-fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. +- +-fi +- +-echo "$as_me:$LINENO: checking target system type" >&5 +-echo $ECHO_N "checking target system type... $ECHO_C" >&6 +-if test "${ac_cv_target+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_target_alias=$target_alias +-test "x$ac_cv_target_alias" = "x" && +- ac_cv_target_alias=$ac_cv_host_alias +-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} +- { (exit 1); exit 1; }; } +- +-fi +-echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +-echo "${ECHO_T}$ac_cv_target" >&6 +-target=$ac_cv_target +-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +- +- +-# The aliases save the names the user supplied, while $host etc. +-# will get canonicalized. +-test -n "$target_alias" && +- test "$program_prefix$program_suffix$program_transform_name" = \ +- NONENONEs,x,x, && +- program_prefix=${target_alias}- +- +-# This works around an automake problem. +-mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs" +- +- +- +-PACKAGE=gc +- +-VERSION=6.0 +- +-if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then +- { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +-echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +- +- +-missing_dir=`cd $ac_aux_dir && pwd` +-echo "$as_me:$LINENO: checking for working aclocal" >&5 +-echo $ECHO_N "checking for working aclocal... $ECHO_C" >&6 +-# Run test in a subshell; some versions of sh will print an error if +-# an executable is not found, even if stderr is redirected. +-# Redirect stdin to placate older versions of autoconf. Sigh. +-if (aclocal --version) < /dev/null > /dev/null 2>&1; then +- ACLOCAL=aclocal +- echo "$as_me:$LINENO: result: found" >&5 +-echo "${ECHO_T}found" >&6 +-else +- ACLOCAL="$missing_dir/missing aclocal" +- echo "$as_me:$LINENO: result: missing" >&5 +-echo "${ECHO_T}missing" >&6 +-fi +- +-echo "$as_me:$LINENO: checking for working autoconf" >&5 +-echo $ECHO_N "checking for working autoconf... $ECHO_C" >&6 +-# Run test in a subshell; some versions of sh will print an error if +-# an executable is not found, even if stderr is redirected. +-# Redirect stdin to placate older versions of autoconf. Sigh. +-if (autoconf --version) < /dev/null > /dev/null 2>&1; then +- AUTOCONF=autoconf +- echo "$as_me:$LINENO: result: found" >&5 +-echo "${ECHO_T}found" >&6 +-else +- AUTOCONF="$missing_dir/missing autoconf" +- echo "$as_me:$LINENO: result: missing" >&5 +-echo "${ECHO_T}missing" >&6 +-fi +- +-echo "$as_me:$LINENO: checking for working automake" >&5 +-echo $ECHO_N "checking for working automake... $ECHO_C" >&6 +-# Run test in a subshell; some versions of sh will print an error if +-# an executable is not found, even if stderr is redirected. +-# Redirect stdin to placate older versions of autoconf. Sigh. +-if (automake --version) < /dev/null > /dev/null 2>&1; then +- AUTOMAKE=automake +- echo "$as_me:$LINENO: result: found" >&5 +-echo "${ECHO_T}found" >&6 +-else +- AUTOMAKE="$missing_dir/missing automake" +- echo "$as_me:$LINENO: result: missing" >&5 +-echo "${ECHO_T}missing" >&6 +-fi +- +-echo "$as_me:$LINENO: checking for working autoheader" >&5 +-echo $ECHO_N "checking for working autoheader... $ECHO_C" >&6 +-# Run test in a subshell; some versions of sh will print an error if +-# an executable is not found, even if stderr is redirected. +-# Redirect stdin to placate older versions of autoconf. Sigh. +-if (autoheader --version) < /dev/null > /dev/null 2>&1; then +- AUTOHEADER=autoheader +- echo "$as_me:$LINENO: result: found" >&5 +-echo "${ECHO_T}found" >&6 +-else +- AUTOHEADER="$missing_dir/missing autoheader" +- echo "$as_me:$LINENO: result: missing" >&5 +-echo "${ECHO_T}missing" >&6 +-fi +- +-echo "$as_me:$LINENO: checking for working makeinfo" >&5 +-echo $ECHO_N "checking for working makeinfo... $ECHO_C" >&6 +-# Run test in a subshell; some versions of sh will print an error if +-# an executable is not found, even if stderr is redirected. +-# Redirect stdin to placate older versions of autoconf. Sigh. +-if (makeinfo --version) < /dev/null > /dev/null 2>&1; then +- MAKEINFO=makeinfo +- echo "$as_me:$LINENO: result: found" >&5 +-echo "${ECHO_T}found" >&6 +-else +- MAKEINFO="$missing_dir/missing makeinfo" +- echo "$as_me:$LINENO: result: missing" >&5 +-echo "${ECHO_T}missing" >&6 +-fi +- +- +- +-# FIXME: We temporarily define our own version of AC_PROG_CC. This is +-# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We +-# are probably using a cross compiler, which will not be able to fully +-# link an executable. This should really be fixed in autoconf +-# itself. +- +- +- +- +-# Extract the first word of "gcc", so it can be a program name with args. +-set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$CC"; then +- ac_cv_prog_CC="$CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_CC="gcc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-CC=$ac_cv_prog_CC +-if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-if test -z "$CC"; then +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$CC"; then +- ac_cv_prog_CC="$CC" # Let the user override the test. +-else +- ac_prog_rejected=no +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then +- ac_prog_rejected=yes +- continue +- fi +- ac_cv_prog_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-if test $ac_prog_rejected = yes; then +- # We found a bogon in the path, so make sure we never use it. +- set dummy $ac_cv_prog_CC +- shift +- if test $@%:@ != 0; then +- # We chose a different compiler from the bogus one. +- # However, it has the same basename, so the bogon will be chosen +- # first if we set CC to just the basename; use the full file name. +- shift +- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" +- fi +-fi +-fi +-fi +-CC=$ac_cv_prog_CC +-if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable cc found in \$PATH" >&5 +-echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-AC_PROG_CC_GNU +- +-if test $ac_cv_c_compiler_gnu = yes; then +- GCC=yes +- ac_test_CFLAGS="${CFLAGS+set}" +- ac_save_CFLAGS="$CFLAGS" +- CFLAGS= +- AC_PROG_CC_G +- if test "$ac_test_CFLAGS" = set; then +- CFLAGS="$ac_save_CFLAGS" +- elif test $ac_cv_prog_cc_g = yes; then +- CFLAGS="-g -O2" +- else +- CFLAGS="-O2" +- fi +-else +- GCC= +- test "${CFLAGS+set}" = set || CFLAGS="-g" +-fi +- +- +-# Likewise for AC_PROG_CXX. +- +- +- +-for ac_prog in $CCC c++ g++ gcc CC cxx cc++ +-do +- # Extract the first word of "$ac_prog", so it can be a program name with args. +-set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_CXX+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$CXX"; then +- ac_cv_prog_CXX="$CXX" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_CXX="$ac_prog" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-CXX=$ac_cv_prog_CXX +-if test -n "$CXX"; then +- echo "$as_me:$LINENO: result: $CXX" >&5 +-echo "${ECHO_T}$CXX" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- test -n "$CXX" && break +-done +-test -n "$CXX" || CXX="gcc" +- +-test -z "$CXX" && { { echo "$as_me:$LINENO: error: no acceptable c++ found in \$PATH" >&5 +-echo "$as_me: error: no acceptable c++ found in \$PATH" >&2;} +- { (exit 1); exit 1; }; } +- +-AC_PROG_CXX_GNU +- +-if test $ac_cv_cxx_compiler_gnu = yes; then +- GXX=yes +- ac_test_CXXFLAGS="${CXXFLAGS+set}" +- ac_save_CXXFLAGS="$CXXFLAGS" +- CXXFLAGS= +- AC_PROG_CXX_G +- if test "$ac_test_CXXFLAGS" = set; then +- CXXFLAGS="$ac_save_CXXFLAGS" +- elif test $ac_cv_prog_cxx_g = yes; then +- CXXFLAGS="-g -O2" +- else +- CXXFLAGS="-O2" +- fi +-else +- GXX= +- test "${CXXFLAGS+set}" = set || CXXFLAGS="-g" +-fi +- +- +-# AC_CHECK_TOOL does AC_REQUIRE (AC_CANONICAL_BUILD). If we don't +-# run it explicitly here, it will be run implicitly before +-# NEWLIB_CONFIGURE, which doesn't work because that means that it will +-# be run before AC_CANONICAL_HOST. +- +- +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +-set dummy ${ac_tool_prefix}as; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_AS+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$AS"; then +- ac_cv_prog_AS="$AS" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_AS="${ac_tool_prefix}as" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-AS=$ac_cv_prog_AS +-if test -n "$AS"; then +- echo "$as_me:$LINENO: result: $AS" >&5 +-echo "${ECHO_T}$AS" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_AS"; then +- ac_ct_AS=$AS +- # Extract the first word of "as", so it can be a program name with args. +-set dummy as; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_AS+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_AS"; then +- ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_AS="as" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_AS=$ac_cv_prog_ac_ct_AS +-if test -n "$ac_ct_AS"; then +- echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 +-echo "${ECHO_T}$ac_ct_AS" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- AS=$ac_ct_AS +-else +- AS="$ac_cv_prog_AS" +-fi +- +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +-set dummy ${ac_tool_prefix}ar; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_AR+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$AR"; then +- ac_cv_prog_AR="$AR" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_AR="${ac_tool_prefix}ar" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-AR=$ac_cv_prog_AR +-if test -n "$AR"; then +- echo "$as_me:$LINENO: result: $AR" >&5 +-echo "${ECHO_T}$AR" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_AR"; then +- ac_ct_AR=$AR +- # Extract the first word of "ar", so it can be a program name with args. +-set dummy ar; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_AR"; then +- ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_AR="ar" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_AR=$ac_cv_prog_ac_ct_AR +-if test -n "$ac_ct_AR"; then +- echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +-echo "${ECHO_T}$ac_ct_AR" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- AR=$ac_ct_AR +-else +- AR="$ac_cv_prog_AR" +-fi +- +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +-set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$RANLIB"; then +- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-RANLIB=$ac_cv_prog_RANLIB +-if test -n "$RANLIB"; then +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_RANLIB"; then +- ac_ct_RANLIB=$RANLIB +- # Extract the first word of "ranlib", so it can be a program name with args. +-set dummy ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_RANLIB"; then +- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_RANLIB="ranlib" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +-fi +-fi +-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +-if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- RANLIB=$ac_ct_RANLIB +-else +- RANLIB="$ac_cv_prog_RANLIB" +-fi +- +- +-# Find a good install program. We prefer a C program (faster), +-# so one script is as good as another. But avoid the broken or +-# incompatible versions: +-# SysV /etc/install, /usr/sbin/install +-# SunOS /usr/etc/install +-# IRIX /sbin/install +-# AIX /bin/install +-# AmigaOS /C/install, which installs bootblocks on floppy discs +-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +-# AFS /usr/afsws/bin/install, which mishandles nonexistent args +-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +-# ./install, which can be erroneously created by make from ./install.sh. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +-if test -z "$INSTALL"; then +-if test "${ac_cv_path_install+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- # Account for people who put trailing slashes in PATH elements. +-case $as_dir/ in +- ./ | .// | /cC/* | \ +- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ +- /usr/ucb/* ) ;; +- *) +- # OSF1 and SCO ODT 3.0 have their own names for install. +- # Don't use installbsd from OSF since it installs stuff as root +- # by default. +- for ac_prog in ginstall scoinst install; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then +- if test $ac_prog = install && +- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # AIX install. It has an incompatible calling convention. +- : +- elif test $ac_prog = install && +- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # program-specific install script used by HP pwplus--don't use. +- : +- else +- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" +- break 3 +- fi +- fi +- done +- done +- ;; +-esac +-done +- +- +-fi +- if test "${ac_cv_path_install+set}" = set; then +- INSTALL=$ac_cv_path_install +- else +- # As a last resort, use the slow shell script. We don't cache a +- # path for INSTALL within a source directory, because that will +- # break other packages using the cache if that directory is +- # removed, or if the path is relative. +- INSTALL=$ac_install_sh +- fi +-fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 +- +-# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +-# It thinks the first close brace ends the variable substitution. +-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' +- +-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' +- +-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +- +- +-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 +- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +-if test "${enable_maintainer_mode+set}" = set; then +- enableval="$enable_maintainer_mode" +- USE_MAINTAINER_MODE=$enableval +-else +- USE_MAINTAINER_MODE=no +-fi; +- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 +- +- +-if test $USE_MAINTAINER_MODE = yes; then +- MAINTAINER_MODE_TRUE= +- MAINTAINER_MODE_FALSE='#' +-else +- MAINTAINER_MODE_TRUE='#' +- MAINTAINER_MODE_FALSE= +-fi +- MAINT=$MAINTAINER_MODE_TRUE +- +- +- +-# We need AC_EXEEXT to keep automake happy in cygnus mode. However, +-# at least currently, we never actually build a program, so we never +-# need to use $(EXEEXT). Moreover, the test for EXEEXT normally +-# fails, because we are probably configuring with a cross compiler +-# which can't create executables. So we include AC_EXEEXT to keep +-# automake happy, but we don't execute it, since we don't care about +-# the result. +-if false; then +- # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands +- # to nothing, so nothing would remain between `then' and `fi' if it +- # were not for the `:' below. +- : +- +-fi +- +-. ${srcdir}/configure.host +- +-case ${gc_basedir} in +-/* | A-Za-z:/\\*) gc_flagbasedir=${gc_basedir} ;; +-*) gc_flagbasedir='$(top_builddir)/'${gc_basedir} ;; +-esac +- +-gc_cflags="${gc_cflags} -I"'$(top_builddir)'"/./targ-include -I${gc_flagbasedir}/libc/include" +-case "${host}" in +- *-*-cygwin32*) +- gc_cflags="${gc_cflags} -I${gc_flagbasedir}/../winsup/include" +- ;; +-esac +- +- +-GC_CFLAGS=${gc_cflags} +- +- +- +-# Check whether --enable-shared or --disable-shared was given. +-if test "${enable_shared+set}" = set; then +- enableval="$enable_shared" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_shared=yes ;; +-no) enable_shared=no ;; +-*) +- enable_shared=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac +-else +- enable_shared=yes +-fi; +-# Check whether --enable-static or --disable-static was given. +-if test "${enable_static+set}" = set; then +- enableval="$enable_static" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_static=yes ;; +-no) enable_static=no ;; +-*) +- enable_static=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_static=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac +-else +- enable_static=yes +-fi; +-# Check whether --enable-fast-install or --disable-fast-install was given. +-if test "${enable_fast_install+set}" = set; then +- enableval="$enable_fast_install" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_fast_install=yes ;; +-no) enable_fast_install=no ;; +-*) +- enable_fast_install=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_fast_install=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac +-else +- enable_fast_install=yes +-fi; +- +-# Check whether --with-gnu-ld or --without-gnu-ld was given. +-if test "${with_gnu_ld+set}" = set; then +- withval="$with_gnu_ld" +- test "$withval" = no || with_gnu_ld=yes +-else +- with_gnu_ld=no +-fi; +-ac_prog=ld +-if test "$GCC" = yes; then +- # Check if gcc -print-prog-name=ld gives a path. +- echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [\\/]* | [A-Za-z]:[\\/]*) +- re_direlt='/[^/][^/]*/\.\./' +- # Canonicalize the path of ld +- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` +- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD="$ac_prog" +- ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown +- ;; +- esac +-elif test "$with_gnu_ld" = yes; then +- echo "$as_me:$LINENO: checking for GNU ld" >&5 +-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +-else +- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +-fi +-if test "${lt_cv_path_LD+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -z "$LD"; then +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" +- for ac_dir in $PATH; do +- test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +- lt_cv_path_LD="$ac_dir/$ac_prog" +- # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some GNU ld's only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then +- test "$with_gnu_ld" != no && break +- else +- test "$with_gnu_ld" != yes && break +- fi +- fi +- done +- IFS="$ac_save_ifs" +-else +- lt_cv_path_LD="$LD" # Let the user override the test with a path. +-fi +-fi +- +-LD="$lt_cv_path_LD" +-if test -n "$LD"; then +- echo "$as_me:$LINENO: result: $LD" >&5 +-echo "${ECHO_T}$LD" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} +- { (exit 1); exit 1; }; } +-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +-if test "${lt_cv_prog_gnu_ld+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- # I'd rather use --version here, but apparently some GNU ld's only accept -v. +-if $LD -v 2>&1 &5; then +- lt_cv_prog_gnu_ld=yes +-else +- lt_cv_prog_gnu_ld=no +-fi +-fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +-with_gnu_ld=$lt_cv_prog_gnu_ld +- +- +-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +-if test "${lt_cv_ld_reload_flag+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_cv_ld_reload_flag='-r' +-fi +-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +-reload_flag=$lt_cv_ld_reload_flag +-test -n "$reload_flag" && reload_flag=" $reload_flag" +- +-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +-if test "${lt_cv_path_NM+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$NM"; then +- # Let the user override the test. +- lt_cv_path_NM="$NM" +-else +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" +- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do +- test -z "$ac_dir" && ac_dir=. +- tmp_nm=$ac_dir/${ac_tool_prefix}nm +- if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then +- # Check to see if the nm accepts a BSD-compat flag. +- # Adding the `sed 1q' prevents false positives on HP-UX, which says: +- # nm: unknown option "B" ignored +- # Tru64's nm complains that /dev/null is an invalid object file +- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then +- lt_cv_path_NM="$tmp_nm -B" +- break +- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then +- lt_cv_path_NM="$tmp_nm -p" +- break +- else +- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but +- continue # so that we can try to find one that supports BSD flags +- fi +- fi +- done +- IFS="$ac_save_ifs" +- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +-fi +-fi +- +-NM="$lt_cv_path_NM" +-echo "$as_me:$LINENO: result: $NM" >&5 +-echo "${ECHO_T}$NM" >&6 +- +-echo "$as_me:$LINENO: checking whether ln -s works" >&5 +-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +-LN_S=$as_ln_s +-if test "$LN_S" = "ln -s"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +-else +- echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +-echo "${ECHO_T}no, using $LN_S" >&6 +-fi +- +-echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 +-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 +-if test "${lt_cv_deplibs_check_method+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_cv_file_magic_cmd='$MAGIC_CMD' +-lt_cv_file_magic_test_file= +-lt_cv_deplibs_check_method='unknown' +-# Need to set the preceding variable on all platforms that support +-# interlibrary dependencies. +-# 'none' -- dependencies not supported. +-# `unknown' -- same as none, but documents that we really don't know. +-# 'pass_all' -- all dependencies passed with no checks. +-# 'test_compile' -- check by making test program. +-# 'file_magic [regex]' -- check by looking for files in library path +-# which responds to the $file_magic_cmd with a given egrep regex. +-# If you have `file' or equivalent on your system and you're not sure +-# whether `pass_all' will *always* work, you probably want this one. +- +-case $host_os in +-aix*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-beos*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-bsdi4*) +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' +- lt_cv_file_magic_cmd='/usr/bin/file -L' +- lt_cv_file_magic_test_file=/shlib/libc.so +- ;; +- +-cygwin* | mingw* |pw32*) +- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' +- lt_cv_file_magic_cmd='$OBJDUMP -f' +- ;; +- +-darwin* | rhapsody*) +- lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' +- lt_cv_file_magic_cmd='/usr/bin/file -L' +- case "$host_os" in +- rhapsody* | darwin1.012) +- lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System' +- ;; +- *) # Darwin 1.3 on +- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' +- ;; +- esac +- ;; +- +-freebsd* ) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- case $host_cpu in +- i*86 ) +- # Not sure whether the presence of OpenBSD here was a mistake. +- # Let's accept both of them until this is cleared up. +- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +- ;; +- esac +- else +- lt_cv_deplibs_check_method=pass_all +- fi +- ;; +- +-gnu*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-hpux10.20*|hpux11*) +- case $host_cpu in +- hppa*) +- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libc.sl +- ;; +- ia64*) +- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so +- ;; +- esac +- ;; +- +-irix5* | irix6*) +- case $host_os in +- irix5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" +- ;; +- *) +- case $LD in +- *-32|*"-32 ") libmagic=32-bit;; +- *-n32|*"-n32 ") libmagic=N32;; +- *-64|*"-64 ") libmagic=64-bit;; +- *) libmagic=never-match;; +- esac +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" +- ;; +- esac +- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-# This must be Linux ELF. +-linux-gnu*) +- case $host_cpu in +- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; +- esac +- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` +- ;; +- +-netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' +- fi +- ;; +- +-newsos6) +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libnls.so +- ;; +- +-osf3* | osf4* | osf5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' +- lt_cv_file_magic_test_file=/shlib/libc.so +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sco3.2v5*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-solaris*) +- lt_cv_deplibs_check_method=pass_all +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- +-sysv5uw[78]* | sysv4*uw2*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- case $host_vendor in +- ncr) +- lt_cv_deplibs_check_method=pass_all +- ;; +- motorola) +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` +- ;; +- esac +- ;; +-esac +- +-fi +-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +-file_magic_cmd=$lt_cv_file_magic_cmd +-deplibs_check_method=$lt_cv_deplibs_check_method +- +- +- +- +-# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +- +-# Only perform the check for file, if the check method requires it +-case $deplibs_check_method in +-file_magic*) +- if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- case $MAGIC_CMD in +- /*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +- ?:/*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. +- ;; +- *) +- ac_save_MAGIC_CMD="$MAGIC_CMD" +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +- ac_dummy="/usr/bin:$PATH" +- for ac_dir in $ac_dummy; do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/${ac_tool_prefix}file; then +- lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- egrep "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 +- +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org +- +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$ac_save_ifs" +- MAGIC_CMD="$ac_save_MAGIC_CMD" +- ;; +-esac +-fi +- +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-if test -z "$lt_cv_path_MAGIC_CMD"; then +- if test -n "$ac_tool_prefix"; then +- echo "$as_me:$LINENO: checking for file" >&5 +-echo $ECHO_N "checking for file... $ECHO_C" >&6 +-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- case $MAGIC_CMD in +- /*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +- ?:/*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. +- ;; +- *) +- ac_save_MAGIC_CMD="$MAGIC_CMD" +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +- ac_dummy="/usr/bin:$PATH" +- for ac_dir in $ac_dummy; do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/file; then +- lt_cv_path_MAGIC_CMD="$ac_dir/file" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- egrep "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 +- +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org +- +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$ac_save_ifs" +- MAGIC_CMD="$ac_save_MAGIC_CMD" +- ;; +-esac +-fi +- +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- else +- MAGIC_CMD=: +- fi +-fi +- +- fi +- ;; +-esac +- +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +-set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$RANLIB"; then +- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-RANLIB=$ac_cv_prog_RANLIB +-if test -n "$RANLIB"; then +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_RANLIB"; then +- ac_ct_RANLIB=$RANLIB +- # Extract the first word of "ranlib", so it can be a program name with args. +-set dummy ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_RANLIB"; then +- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_RANLIB="ranlib" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +-fi +-fi +-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +-if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- RANLIB=$ac_ct_RANLIB +-else +- RANLIB="$ac_cv_prog_RANLIB" +-fi +- +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +-set dummy ${ac_tool_prefix}strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_STRIP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$STRIP"; then +- ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_STRIP="${ac_tool_prefix}strip" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-STRIP=$ac_cv_prog_STRIP +-if test -n "$STRIP"; then +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_STRIP"; then +- ac_ct_STRIP=$STRIP +- # Extract the first word of "strip", so it can be a program name with args. +-set dummy strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_STRIP"; then +- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_STRIP="strip" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +-fi +-fi +-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +-if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- STRIP=$ac_ct_STRIP +-else +- STRIP="$ac_cv_prog_STRIP" +-fi +- +- +-# Check for any special flags to pass to ltconfig. +-libtool_flags="--cache-file=$cache_file" +-test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" +-test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" +-test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install" +-test "$GCC" = yes && libtool_flags="$libtool_flags --with-gcc" +-test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" +- +- +-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +-if test "${enable_libtool_lock+set}" = set; then +- enableval="$enable_libtool_lock" +- +-fi; +-test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock" +-test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" +- +- +-# Check whether --with-pic or --without-pic was given. +-if test "${with_pic+set}" = set; then +- withval="$with_pic" +- pic_mode="$withval" +-else +- pic_mode=default +-fi; +-test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic" +-test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic" +- +-# Some flags need to be propagated to the compiler or linker for good +-# libtool support. +-case $host in +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '#line __oline__ "configure"' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -32" +- ;; +- *N32*) +- LD="${LD-ld} -n32" +- ;; +- *64-bit*) +- LD="${LD-ld} -64" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- +-ia64-*-hpux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- case "`/usr/bin/file conftest.o`" in +- *ELF-32*) +- HPUX_IA64_MODE="32" +- ;; +- *ELF-64*) +- HPUX_IA64_MODE="64" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- +-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- case "`/usr/bin/file conftest.o`" in +- *32-bit*) +- case $host in +- x86_64-*linux*) +- LD="${LD-ld} -m elf_i386" +- ;; +- ppc64-*linux*) +- LD="${LD-ld} -m elf32ppclinux" +- ;; +- s390x-*linux*) +- LD="${LD-ld} -m elf_s390" +- ;; +- sparc64-*linux*) +- LD="${LD-ld} -m elf32_sparc" +- ;; +- esac +- ;; +- *64-bit*) +- case $host in +- x86_64-*linux*) +- LD="${LD-ld} -m elf_x86_64" +- ;; +- ppc*-*linux*|powerpc*-*linux*) +- LD="${LD-ld} -m elf64ppc" +- ;; +- s390*-*linux*) +- LD="${LD-ld} -m elf64_s390" +- ;; +- sparc*-*linux*) +- LD="${LD-ld} -m elf64_sparc" +- ;; +- esac +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- +-*-*-sco3.2v5*) +- # On SCO OpenServer 5, we need -belf to get full-featured binaries. +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -belf" +- echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +-if test "${lt_cv_cc_needs_belf+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +- +- ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- lt_cv_cc_needs_belf=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-lt_cv_cc_needs_belf=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +- ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +-fi +-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 +- if test x"$lt_cv_cc_needs_belf" != x"yes"; then +- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +- CFLAGS="$SAVE_CFLAGS" +- fi +- ;; +- +- +-esac +- +- +-# Save cache, so that ltconfig can load it +-cat >confcache <<\_ACEOF +-# This file is a shell script that caches the results of configure +-# tests run on this system so they can be shared between configure +-# scripts and configure runs, see configure's option --config-cache. +-# It is not useful on other systems. If it contains results you don't +-# want to keep, you may remove or edit it. +-# +-# config.status only pays attention to the cache file if you give it +-# the --recheck option to rerun configure. +-# +-# `ac_cv_env_foo' variables (set or unset) will be overridden when +-# loading this file, other *unset* `ac_cv_foo' will be assigned the +-# following values. +- +-_ACEOF +- +-# The following way of writing the cache mishandles newlines in values, +-# but we know of no workaround that is simple, portable, and efficient. +-# So, don't put newlines in cache variables' values. +-# Ultrix sh set writes to stderr and can't be redirected directly, +-# and sets the high bit in the cache file unless we assign to the vars. +-{ +- (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) +- # `set' does not quote correctly, so add quotes (double-quote +- # substitution turns \\\\ into \\, and sed turns \\ into \). +- sed -n \ +- "s/'/'\\\\''/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" +- ;; +- *) +- # `set' quotes correctly as required by POSIX, so do not add quotes. +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" +- ;; +- esac; +-} | +- sed ' +- t clear +- : clear +- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ +- t end +- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ +- : end' >>confcache +-if diff $cache_file confcache >/dev/null 2>&1; then :; else +- if test -w $cache_file; then +- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" +- cat confcache >$cache_file +- else +- echo "not updating unwritable cache $cache_file" +- fi +-fi +-rm -f confcache +- +-# Actually configure libtool. ac_aux_dir is where install-sh is found. +-AR="$AR" LTCC="$CC" CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ +-MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ +-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \ +-AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \ +-objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \ +-deplibs_check_method="$deplibs_check_method" file_magic_cmd="$file_magic_cmd" \ +-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \ +-$libtool_flags --no-verify --build="$build" $ac_aux_dir/ltmain.sh $host \ +-|| { { echo "$as_me:$LINENO: error: libtool configure failed" >&5 +-echo "$as_me: error: libtool configure failed" >&2;} +- { (exit 1); exit 1; }; } +- +-# Reload cache, that may have been modified by ltconfig +-if test -r "$cache_file"; then +- # Some versions of bash will fail to source /dev/null (special +- # files actually), so we avoid doing that. +- if test -f "$cache_file"; then +- { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +-echo "$as_me: loading cache $cache_file" >&6;} +- case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; +- esac +- fi +-else +- { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +-echo "$as_me: creating cache $cache_file" >&6;} +- >$cache_file +-fi +- +- +-# This can be used to rebuild libtool when needed +-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh $ac_aux_dir/ltcf-c.sh" +- +-# Always use our own libtool. +-LIBTOOL='$(SHELL) $(top_builddir)/libtool' +- +-# Redirect the config.log output again, so that the ltconfig log is not +-# clobbered by the next message. +-exec 5>>./config.log +- +-ac_ext=cc +-ac_cpp='$CXXCPP $CPPFLAGS' +-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +-echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +-echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +-if test -z "$CXXCPP"; then +- if test "${ac_cv_prog_CXXCPP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- # Double quotes because CXXCPP needs to be expanded +- for CXXCPP in "$CXX -E" "/lib/cpp" +- do +- ac_preproc_ok=false +-for ac_cxx_preproc_warn_flag in '' yes +-do +- # Use a header file that comes with gcc, so configuring glibc +- # with a fresh cross-compiler works. +- # Prefer to if __STDC__ is defined, since +- # exists even on freestanding compilers. +- # On the NeXT, cc -E runs the code through the compiler's parser, +- # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-@%:@ifdef __STDC__ +-@%:@ include +-@%:@else +-@%:@ include +-@%:@endif +- Syntax error +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_cxx_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- # Broken: fails on valid input. +-continue +-fi +-rm -f conftest.err conftest.$ac_ext +- +- # OK, works on sane cases. Now check whether non-existent headers +- # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-@%:@include +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_cxx_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- # Broken: success on invalid input. +-continue +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- # Passes both tests. +-ac_preproc_ok=: +-break +-fi +-rm -f conftest.err conftest.$ac_ext +- +-done +-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then +- break +-fi +- +- done +- ac_cv_prog_CXXCPP=$CXXCPP +- +-fi +- CXXCPP=$ac_cv_prog_CXXCPP +-else +- ac_cv_prog_CXXCPP=$CXXCPP +-fi +-echo "$as_me:$LINENO: result: $CXXCPP" >&5 +-echo "${ECHO_T}$CXXCPP" >&6 +-ac_preproc_ok=false +-for ac_cxx_preproc_warn_flag in '' yes +-do +- # Use a header file that comes with gcc, so configuring glibc +- # with a fresh cross-compiler works. +- # Prefer to if __STDC__ is defined, since +- # exists even on freestanding compilers. +- # On the NeXT, cc -E runs the code through the compiler's parser, +- # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-@%:@ifdef __STDC__ +-@%:@ include +-@%:@else +-@%:@ include +-@%:@endif +- Syntax error +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_cxx_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- # Broken: fails on valid input. +-continue +-fi +-rm -f conftest.err conftest.$ac_ext +- +- # OK, works on sane cases. Now check whether non-existent headers +- # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-@%:@include +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_cxx_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- # Broken: success on invalid input. +-continue +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- # Passes both tests. +-ac_preproc_ok=: +-break +-fi +-rm -f conftest.err conftest.$ac_ext +- +-done +-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then +- : +-else +- { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +-See \`config.log' for more details." >&5 +-echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +- +- +-LIBTOOL_DEPS=$LIBTOOL_DEPS" $ac_aux_dir/ltcf-cxx.sh" +-lt_save_CC="$CC" +-lt_save_CFLAGS="$CFLAGS" +-AR="$AR" LTCC="$CC" CC="$CXX" CXX="$CXX" CFLAGS="$CXXFLAGS" CPPFLAGS="$CPPFLAGS" \ +-MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \ +-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \ +-AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \ +-objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \ +-deplibs_check_method="$deplibs_check_method" \ +-file_magic_cmd="$file_magic_cmd" \ +-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig -o libtool $libtool_flags \ +---build="$build" --add-tag=CXX $ac_aux_dir/ltcf-cxx.sh $host \ +-|| { { echo "$as_me:$LINENO: error: libtool tag configuration failed" >&5 +-echo "$as_me: error: libtool tag configuration failed" >&2;} +- { (exit 1); exit 1; }; } +-CC="$lt_save_CC" +-CFLAGS="$lt_save_CFLAGS" +- +-# Redirect the config.log output again, so that the ltconfig log is not +-# clobbered by the next message. +-exec 5>>./config.log +- +- +- +- +- +- +- +- +-# Check whether --with-target-subdir or --without-target-subdir was given. +-if test "${with_target_subdir+set}" = set; then +- withval="$with_target_subdir" +- +-fi; +- +-# Check whether --with-cross-host or --without-cross-host was given. +-if test "${with_cross_host+set}" = set; then +- withval="$with_cross_host" +- +-fi; +- +-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 +- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +-if test "${enable_maintainer_mode+set}" = set; then +- enableval="$enable_maintainer_mode" +- USE_MAINTAINER_MODE=$enableval +-else +- USE_MAINTAINER_MODE=no +-fi; +- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 +- +- +-if test $USE_MAINTAINER_MODE = yes; then +- MAINTAINER_MODE_TRUE= +- MAINTAINER_MODE_FALSE='#' +-else +- MAINTAINER_MODE_TRUE='#' +- MAINTAINER_MODE_FALSE= +-fi +- MAINT=$MAINTAINER_MODE_TRUE +- +- +-# automake wants to see AC_EXEEXT. But we don't need it. And having +-# it is actually a problem, because the compiler we're passed can't +-# necessarily do a full link. So we fool automake here. +-if false; then +- # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands +- # to nothing, so nothing would remain between `then' and `fi' if it +- # were not for the `:' below. +- : +- +-fi +- +-echo "$as_me:$LINENO: checking for thread model used by GCC" >&5 +-echo $ECHO_N "checking for thread model used by GCC... $ECHO_C" >&6 +-THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` +-if test -z "$THREADS"; then +- THREADS=no +-fi +-echo "$as_me:$LINENO: result: $THREADS" >&5 +-echo "${ECHO_T}$THREADS" >&6 +- +-# Check whether --enable-parallel-mark or --disable-parallel-mark was given. +-if test "${enable_parallel_mark+set}" = set; then +- enableval="$enable_parallel_mark" +- case "$THREADS" in +- no | none | single) +- { { echo "$as_me:$LINENO: error: Parallel mark requires --enable-threads=x spec" >&5 +-echo "$as_me: error: Parallel mark requires --enable-threads=x spec" >&2;} +- { (exit 1); exit 1; }; } +- ;; +- esac +- +-fi; +- +-INCLUDES=-I${srcdir}/include +-THREADLIBS= +-case "$THREADS" in +- no | none | single) +- THREADS=none +- ;; +- posix | pthreads) +- THREADS=posix +- THREADLIBS=-lpthread +- case "$host" in +- x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* ) +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_LINUX_THREADS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define _REENTRANT 1 +-_ACEOF +- +- if test "${enable_parallel_mark}"; then +- cat >>confdefs.h <<\_ACEOF +-@%:@define PARALLEL_MARK 1 +-_ACEOF +- +- fi +- cat >>confdefs.h <<\_ACEOF +-@%:@define THREAD_LOCAL_ALLOC 1 +-_ACEOF +- +- ;; +- *-*-linux*) +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_LINUX_THREADS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define _REENTRANT 1 +-_ACEOF +- +- ;; +- *-*-hpux*) +- { echo "$as_me:$LINENO: WARNING: \"Only HP/UX 11 threads are supported.\"" >&5 +-echo "$as_me: WARNING: \"Only HP/UX 11 threads are supported.\"" >&2;} +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_HPUX_THREADS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define _POSIX_C_SOURCE 199506L +-_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 +- +- THREADLIBS="-lpthread -lrt" +- ;; +- *-*-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;} +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_FREEBSD_THREADS 1 +-_ACEOF +- +- INCLUDES="$INCLUDES -pthread" +- THREADLIBS=-pthread +- ;; +- *-*-solaris*) +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_SOLARIS_THREADS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_SOLARIS_PTHREADS 1 +-_ACEOF +- +- ;; +- *-*-irix*) +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_IRIX_THREADS 1 +-_ACEOF +- +- ;; +- *-*-cygwin*) +- THREADLIBS= +- ;; +- esac +- ;; +- *-*-darwin*) +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_DARWIN_THREADS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define THREAD_LOCAL_ALLOC 1 +-_ACEOF +- +- if test "${enable_parallel_mark}" = yes; then +- cat >>confdefs.h <<\_ACEOF +-@%:@define PARALLEL_MARK 1 +-_ACEOF +- +- fi +- ;; +- win32) +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_WIN32_THREADS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define NO_GETENV 1 +-_ACEOF +- +- ;; +- decosf1 | irix | mach | os2 | solaris | dce | vxworks) +- { { echo "$as_me:$LINENO: error: thread package $THREADS not yet supported" >&5 +-echo "$as_me: error: thread package $THREADS not yet supported" >&2;} +- { (exit 1); exit 1; }; } +- ;; +- *) +- { { echo "$as_me:$LINENO: error: $THREADS is an unknown thread package" >&5 +-echo "$as_me: error: $THREADS is an unknown thread package" >&2;} +- { (exit 1); exit 1; }; } +- ;; +-esac +- +- +-case "$host" in +- powerpc-*-darwin*) +- powerpc_darwin=true +- ;; +-esac +- +- +-if test x$powerpc_darwin = xtrue; then +- POWERPC_DARWIN_TRUE= +- POWERPC_DARWIN_FALSE='#' +-else +- POWERPC_DARWIN_TRUE='#' +- POWERPC_DARWIN_FALSE= +-fi +- +-# We never want libdl on darwin. It is a fake libdl that just ends up making +-# dyld calls anyway +-case "$host" in +- *-*-darwin*) ;; +- *) +- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +-if test "${ac_cv_lib_dl_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dl_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_lib_dl_dlopen=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +-if test $ac_cv_lib_dl_dlopen = yes; then +- EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl" +-fi +- +- ;; +-esac +- +- +- +-target_all=libgcjgc.la +- +- +- +-TARGET_ECOS="no" +- +-# Check whether --with-ecos or --without-ecos was given. +-if test "${with_ecos+set}" = set; then +- withval="$with_ecos" +- TARGET_ECOS="$with_ecos" +- +-fi; +- +-addobjs= +-CXXINCLUDES= +-case "$TARGET_ECOS" in +- no) +- ;; +- *) +- cat >>confdefs.h <<\_ACEOF +-@%:@define ECOS 1 +-_ACEOF +- +- CXXINCLUDES="-I${TARGET_ECOS}/include" +- addobjs="$addobjs ecos.lo" +- ;; +-esac +- +- +- +- +- +-machdep= +-case "$host" in +- alpha*-*-openbsd*) +- machdep="alpha_mach_dep.lo" +- if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then +- { echo "$as_me:$LINENO: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&5 +-echo "$as_me: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&2;} +- # Check whether --enable-shared or --disable-shared was given. +-if test "${enable_shared+set}" = set; then +- enableval="$enable_shared" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_shared=yes ;; +-no) enable_shared=no ;; +-*) +- enable_shared=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac +-else +- enable_shared=no +-fi; +- fi +- ;; +- alpha*-*-*) +- machdep="alpha_mach_dep.lo" +- ;; +- i?86-*-solaris2.[89]*) +- cat >>confdefs.h <<\_ACEOF +-@%:@define SOLARIS25_PROC_VDB_BUG_FIXED 1 +-_ACEOF +- +- ;; +- mipstx39-*-elf*) +- machdep="mips_ultrix_mach_dep.lo" +- cat >>confdefs.h <<\_ACEOF +-@%:@define STACKBASE __stackbase +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define DATASTART_IS_ETEXT 1 +-_ACEOF +- +- ;; +- mips-dec-ultrix*) +- machdep="mips_ultrix_mach-dep.lo" +- ;; +- mips*-*-linux*) +- ;; +- mips-*-*) +- machdep="mips_sgi_mach_dep.lo" +- cat >>confdefs.h <<\_ACEOF +-@%:@define NO_EXECUTE_PERMISSION 1 +-_ACEOF +- +- ;; +- sparc-sun-solaris2.3*) +- machdep="sparc_mach_dep.lo" +- cat >>confdefs.h <<\_ACEOF +-@%:@define SUNOS53_SHARED_LIB 1 +-_ACEOF +- +- ;; +- sparc-sun-solaris2.*) +- machdep="sparc_mach_dep.lo" +- ;; +- ia64-*-*) +- machdep="mach_dep.lo ia64_save_regs_in_stack.lo" +- ;; +-esac +-if test x"$machdep" = x; then +- machdep="mach_dep.lo" +-fi +-addobjs="$addobjs $machdep" +- +- +-case "$host" in +- sparc-sun-solaris2*) +- if test "$GCC" = yes; then +- new_CFLAGS= +- for i in $CFLAGS; do +- case "$i" in +- -O*) +- ;; +- *) +- new_CFLAGS="$new_CFLAGS $i" +- ;; +- esac +- done +- CFLAGS="$new_CFLAGS" +- fi +- ;; +-esac +- +-MY_CFLAGS="$CFLAGS" +- +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define SILENT 1 +-_ACEOF +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define NO_SIGNALS 1 +-_ACEOF +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define NO_EXECUTE_PERMISSION 1 +-_ACEOF +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define ALL_INTERIOR_POINTERS 1 +-_ACEOF +- +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define JAVA_FINALIZATION 1 +-_ACEOF +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define GC_GCJ_SUPPORT 1 +-_ACEOF +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define ATOMIC_UNCOLLECTABLE 1 +-_ACEOF +- +- +-if test -n "${with_cross_host}"; then +- cat >>confdefs.h <<\_ACEOF +-@%:@define NO_SIGSET 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define NO_DEBUGGING 1 +-_ACEOF +- +-fi +- +-# Check whether --enable-full-debug or --disable-full-debug was given. +-if test "${enable_full_debug+set}" = set; then +- enableval="$enable_full_debug" +- if test "$enable_full_debug" = "yes"; then +- { echo "$as_me:$LINENO: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&5 +-echo "$as_me: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&2;} +- cat >>confdefs.h <<\_ACEOF +-@%:@define KEEP_BACK_PTRS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define DBG_HDRS_ALL 1 +-_ACEOF +- +- case $host in +- ia64-*-linux* ) +- cat >>confdefs.h <<\_ACEOF +-@%:@define MAKE_BACK_GRAPH 1 +-_ACEOF +- +- ;; +- x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* ) +- cat >>confdefs.h <<\_ACEOF +-@%:@define MAKE_BACK_GRAPH 1 +-_ACEOF +- +- { echo "$as_me:$LINENO: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&5 +-echo "$as_me: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&2;} +- cat >>confdefs.h <<\_ACEOF +-@%:@define SAVE_CALL_COUNT 8 +-_ACEOF +- +- ;; +- esac +- fi +-fi; +- +- +- +-if test -z "$with_cross_host"; then +- USE_LIBDIR_TRUE= +- USE_LIBDIR_FALSE='#' +-else +- USE_LIBDIR_TRUE='#' +- USE_LIBDIR_FALSE= +-fi +- +-if test "${multilib}" = "yes"; then +- multilib_arg="--enable-multilib" +-else +- multilib_arg= +-fi +- +- ac_config_files="$ac_config_files Makefile include/Makefile" +- ac_config_commands="$ac_config_commands default" +-cat >confcache <<\_ACEOF +-# This file is a shell script that caches the results of configure +-# tests run on this system so they can be shared between configure +-# scripts and configure runs, see configure's option --config-cache. +-# It is not useful on other systems. If it contains results you don't +-# want to keep, you may remove or edit it. +-# +-# config.status only pays attention to the cache file if you give it +-# the --recheck option to rerun configure. +-# +-# `ac_cv_env_foo' variables (set or unset) will be overridden when +-# loading this file, other *unset* `ac_cv_foo' will be assigned the +-# following values. +- +-_ACEOF +- +-# The following way of writing the cache mishandles newlines in values, +-# but we know of no workaround that is simple, portable, and efficient. +-# So, don't put newlines in cache variables' values. +-# Ultrix sh set writes to stderr and can't be redirected directly, +-# and sets the high bit in the cache file unless we assign to the vars. +-{ +- (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) +- # `set' does not quote correctly, so add quotes (double-quote +- # substitution turns \\\\ into \\, and sed turns \\ into \). +- sed -n \ +- "s/'/'\\\\''/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" +- ;; +- *) +- # `set' quotes correctly as required by POSIX, so do not add quotes. +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" +- ;; +- esac; +-} | +- sed ' +- t clear +- : clear +- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ +- t end +- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ +- : end' >>confcache +-if diff $cache_file confcache >/dev/null 2>&1; then :; else +- if test -w $cache_file; then +- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" +- cat confcache >$cache_file +- else +- echo "not updating unwritable cache $cache_file" +- fi +-fi +-rm -f confcache +- +-test "x$prefix" = xNONE && prefix=$ac_default_prefix +-# Let make expand exec_prefix. +-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' +- +-# VPATH may cause trouble with some makes, so we remove $(srcdir), +-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +-# trailing colons and then remove the whole line if VPATH becomes empty +-# (actually we leave an empty line to preserve line numbers). +-if test "x$srcdir" = x.; then +- ac_vpsub='/^[ ]*VPATH[ ]*=/{ +-s/:*\$(srcdir):*/:/; +-s/:*\${srcdir}:*/:/; +-s/:*@srcdir@:*/:/; +-s/^\([^=]*=[ ]*\):*/\1/; +-s/:*$//; +-s/^[^=]*=[ ]*$//; +-}' +-fi +- +-# Transform confdefs.h into DEFS. +-# Protect against shell expansion while executing Makefile rules. +-# Protect against Makefile macro expansion. +-# +-# If the first sed substitution is executed (which looks for macros that +-# take arguments), then we branch to the quote section. Otherwise, +-# look for a macro that doesn't take arguments. +-cat >confdef2opt.sed <<\_ACEOF +-t clear +-: clear +-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +-t quote +-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +-t quote +-d +-: quote +-s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +-s,\[,\\&,g +-s,\],\\&,g +-s,\$,$$,g +-p +-_ACEOF +-# We use echo to avoid assuming a particular line-breaking character. +-# The extra dot is to prevent the shell from consuming trailing +-# line-breaks from the sub-command output. A line-break within +-# single-quotes doesn't work because, if this script is created in a +-# platform that uses two characters for line-breaks (e.g., DOS), tr +-# would break. +-ac_LF_and_DOT=`echo; echo .` +-DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +-rm -f confdef2opt.sed +- +- +-ac_libobjs= +-ac_ltlibobjs= +-for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue +- # 1. Remove the extension, and $U if already installed. +- ac_i=`echo "$ac_i" | +- sed 's/\$U\././;s/\.o$//;s/\.obj$//'` +- # 2. Add them. +- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" +- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +-done +-LIB@&t@OBJS=$ac_libobjs +- +-LTLIBOBJS=$ac_ltlibobjs +- +- +- +-: ${CONFIG_STATUS=./config.status} +-ac_clean_files_save=$ac_clean_files +-ac_clean_files="$ac_clean_files $CONFIG_STATUS" +-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +-echo "$as_me: creating $CONFIG_STATUS" >&6;} +-cat >$CONFIG_STATUS <<_ACEOF +-#! $SHELL +-# Generated by $as_me. +-# Run this file to recreate the current configuration. +-# Compiler output produced by configure, useful for debugging +-# configure, is in config.log if it exists. +- +-debug=false +-ac_cs_recheck=false +-ac_cs_silent=false +-SHELL=\${CONFIG_SHELL-$SHELL} +-_ACEOF +- +-cat >>$CONFIG_STATUS <<\_ACEOF +-## --------------------- ## +-## M4sh Initialization. ## +-## --------------------- ## +- +-# Be Bourne compatible +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which +- # is contrary to our usage. Disable this feature. +- alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix +-fi +- +-# Support unset when possible. +-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +- as_unset=unset +-else +- as_unset=false +-fi +- +- +-# Work around bugs in pre-3.0 UWIN ksh. +-$as_unset ENV MAIL MAILPATH +-PS1='$ ' +-PS2='> ' +-PS4='+ ' +- +-# NLS nuisances. +-for as_var in \ +- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ +- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ +- LC_TELEPHONE LC_TIME +-do +- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then +- eval $as_var=C; export $as_var +- else +- $as_unset $as_var +- fi +-done +- +-# Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +- as_basename=basename +-else +- as_basename=false +-fi +- +- +-# Name of the executable. +-as_me=`$as_basename "$0" || +-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ +- X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- +- +-# PATH needs CR, and LINENO needs CR and PATH. +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits +- +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh +-fi +- +- +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- case $0 in +- *[\\/]* ) as_myself=$0 ;; +- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done +- +- ;; +- esac +- # We did not find ourselves, most probably we were run as `sh COMMAND' +- # in which case we are not to be found in the path. +- if test "x$as_myself" = x; then +- as_myself=$0 +- fi +- if test ! -f "$as_myself"; then +- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in +- /*) +- if ("$as_dir/$as_base" -c ' +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac +- +- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO +- # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. +- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | +- sed ' +- N +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, +- t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, +- ' >$as_me.lineno && +- chmod +x $as_me.lineno || +- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} +- { (exit 1); exit 1; }; } +- +- # Don't try to exec as it changes $[0], causing all sort of problems +- # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensible to this). +- . ./$as_me.lineno +- # Exit status is that of the last command. +- exit +-} +- +- +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +-esac +- +-if expr a : '\(a\)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-rm -f conf$$ conf$$.exe conf$$.file +-echo >conf$$.file +-if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links +- as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi +-elif ln conf$$.file conf$$ 2>/dev/null; then +- as_ln_s=ln +-else +- as_ln_s='cp -p' +-fi +-rm -f conf$$ conf$$.exe conf$$.file +- +-if mkdir -p . 2>/dev/null; then +- as_mkdir_p=: +-else +- as_mkdir_p=false +-fi +- +-as_executable_p="test -f" +- +-# Sed expression to map a string onto a valid CPP name. +-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +- +-# Sed expression to map a string onto a valid variable name. +-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +- +- +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- +-exec 6>&1 +- +-# Open the log real soon, to keep \$[0] and so on meaningful, and to +-# report actual input values of CONFIG_FILES etc. instead of their +-# values after options handling. Logging --version etc. is OK. +-exec 5>>config.log +-{ +- echo +- sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +-@%:@@%:@ Running $as_me. @%:@@%:@ +-_ASBOX +-} >&5 +-cat >&5 <<_CSEOF +- +-This file was extended by $as_me, which was +-generated by GNU Autoconf 2.57. Invocation command line was +- +- CONFIG_FILES = $CONFIG_FILES +- CONFIG_HEADERS = $CONFIG_HEADERS +- CONFIG_LINKS = $CONFIG_LINKS +- CONFIG_COMMANDS = $CONFIG_COMMANDS +- $ $0 $@ +- +-_CSEOF +-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +-echo >&5 +-_ACEOF +- +-# Files that config.status was made for. +-if test -n "$ac_config_files"; then +- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_headers"; then +- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_links"; then +- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_commands"; then +- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +-fi +- +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-ac_cs_usage="\ +-\`$as_me' instantiates files from templates according to the +-current configuration. +- +-Usage: $0 [OPTIONS] [FILE]... +- +- -h, --help print this help, then exit +- -V, --version print version number, then exit +- -q, --quiet do not print progress messages +- -d, --debug don't remove temporary files +- --recheck update $as_me by reconfiguring in the same conditions +- --file=FILE[:TEMPLATE] +- instantiate the configuration file FILE +- +-Configuration files: +-$config_files +- +-Configuration commands: +-$config_commands +- +-Report bugs to ." +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +-ac_cs_version="\\ +-config.status +-configured by $0, generated by GNU Autoconf 2.57, +- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +- +-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +-Free Software Foundation, Inc. +-This config.status script is free software; the Free Software Foundation +-gives unlimited permission to copy, distribute and modify it." +-srcdir=$srcdir +-INSTALL="$INSTALL" +-_ACEOF +- +-cat >>$CONFIG_STATUS <<\_ACEOF +-# If no file are specified by the user, then we need to provide default +-# value. By we need to know if files were specified by the user. +-ac_need_defaults=: +-while test $# != 0 +-do +- case $1 in +- --*=*) +- ac_option=`expr "x$1" : 'x\([^=]*\)='` +- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` +- ac_shift=: +- ;; +- -*) +- ac_option=$1 +- ac_optarg=$2 +- ac_shift=shift +- ;; +- *) # This is not an option, so the user has probably given explicit +- # arguments. +- ac_option=$1 +- ac_need_defaults=false;; +- esac +- +- case $ac_option in +- # Handling of the options. +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) +- ac_cs_recheck=: ;; +- --version | --vers* | -V ) +- echo "$ac_cs_version"; exit 0 ;; +- --he | --h) +- # Conflict between --help and --header +- { { echo "$as_me:$LINENO: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; };; +- --help | --hel | -h ) +- echo "$ac_cs_usage"; exit 0 ;; +- --debug | --d* | -d ) +- debug=: ;; +- --file | --fil | --fi | --f ) +- $ac_shift +- CONFIG_FILES="$CONFIG_FILES $ac_optarg" +- ac_need_defaults=false;; +- --header | --heade | --head | --hea ) +- $ac_shift +- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" +- ac_need_defaults=false;; +- -q | -quiet | --quiet | --quie | --qui | --qu | --q \ +- | -silent | --silent | --silen | --sile | --sil | --si | --s) +- ac_cs_silent=: ;; +- +- # This is an error. +- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; } ;; +- +- *) ac_config_targets="$ac_config_targets $1" ;; +- +- esac +- shift +-done +- +-ac_configure_extra_args= +- +-if $ac_cs_silent; then +- exec 6>/dev/null +- ac_configure_extra_args="$ac_configure_extra_args --silent" +-fi +- +-_ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +-if \$ac_cs_recheck; then +- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 +- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +-fi +- +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +-# +-# INIT-COMMANDS section. +-# +- +-srcdir=${srcdir} +-host=${host} +-target=${target} +-with_multisubdir=${with_multisubdir} +-ac_configure_args="${multilib_arg} ${ac_configure_args}" +-CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +-gc_basedir=${gc_basedir} +-CC="${CC}" +-DEFS="$DEFS" +- +- +-_ACEOF +- +- +- +-cat >>$CONFIG_STATUS <<\_ACEOF +-for ac_config_target in $ac_config_targets +-do +- case "$ac_config_target" in +- # Handling of arguments. +- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; +- "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; +- "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; +- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +-echo "$as_me: error: invalid argument: $ac_config_target" >&2;} +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# If the user did not use the arguments to specify the items to instantiate, +-# then the envvar interface is used. Set only those that are not. +-# We use the long form for the default assignment because of an extremely +-# bizarre bug on SunOS 4.1.3. +-if $ac_need_defaults; then +- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +-fi +- +-# Have a temporary directory for convenience. Make it in the build tree +-# simply because there is no reason to put it here, and in addition, +-# creating and moving files from /tmp can sometimes cause problems. +-# Create a temporary directory, and hook for its removal unless debugging. +-$debug || +-{ +- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 +- trap '{ (exit 1); exit 1; }' 1 2 13 15 +-} +- +-# Create a (secure) tmp directory for tmp files. +- +-{ +- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && +- test -n "$tmp" && test -d "$tmp" +-} || +-{ +- tmp=./confstat$$-$RANDOM +- (umask 077 && mkdir $tmp) +-} || +-{ +- echo "$me: cannot create a temporary directory in ." >&2 +- { (exit 1); exit 1; } +-} +- +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +- +-# +-# CONFIG_FILES section. +-# +- +-# No need to generate the scripts if there are no CONFIG_FILES. +-# This happens for instance when ./config.status config.h +-if test -n "\$CONFIG_FILES"; then +- # Protect against being on the right side of a sed subst in config.status. +- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; +- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +-s,@SHELL@,$SHELL,;t t +-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +-s,@exec_prefix@,$exec_prefix,;t t +-s,@prefix@,$prefix,;t t +-s,@program_transform_name@,$program_transform_name,;t t +-s,@bindir@,$bindir,;t t +-s,@sbindir@,$sbindir,;t t +-s,@libexecdir@,$libexecdir,;t t +-s,@datadir@,$datadir,;t t +-s,@sysconfdir@,$sysconfdir,;t t +-s,@sharedstatedir@,$sharedstatedir,;t t +-s,@localstatedir@,$localstatedir,;t t +-s,@libdir@,$libdir,;t t +-s,@includedir@,$includedir,;t t +-s,@oldincludedir@,$oldincludedir,;t t +-s,@infodir@,$infodir,;t t +-s,@mandir@,$mandir,;t t +-s,@build_alias@,$build_alias,;t t +-s,@host_alias@,$host_alias,;t t +-s,@target_alias@,$target_alias,;t t +-s,@DEFS@,$DEFS,;t t +-s,@ECHO_C@,$ECHO_C,;t t +-s,@ECHO_N@,$ECHO_N,;t t +-s,@ECHO_T@,$ECHO_T,;t t +-s,@LIBS@,$LIBS,;t t +-s,@gc_basedir@,$gc_basedir,;t t +-s,@build@,$build,;t t +-s,@build_cpu@,$build_cpu,;t t +-s,@build_vendor@,$build_vendor,;t t +-s,@build_os@,$build_os,;t t +-s,@host@,$host,;t t +-s,@host_cpu@,$host_cpu,;t t +-s,@host_vendor@,$host_vendor,;t t +-s,@host_os@,$host_os,;t t +-s,@target@,$target,;t t +-s,@target_cpu@,$target_cpu,;t t +-s,@target_vendor@,$target_vendor,;t t +-s,@target_os@,$target_os,;t t +-s,@mkinstalldirs@,$mkinstalldirs,;t t +-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +-s,@INSTALL_DATA@,$INSTALL_DATA,;t t +-s,@PACKAGE@,$PACKAGE,;t t +-s,@VERSION@,$VERSION,;t t +-s,@ACLOCAL@,$ACLOCAL,;t t +-s,@AUTOCONF@,$AUTOCONF,;t t +-s,@AUTOMAKE@,$AUTOMAKE,;t t +-s,@AUTOHEADER@,$AUTOHEADER,;t t +-s,@MAKEINFO@,$MAKEINFO,;t t +-s,@SET_MAKE@,$SET_MAKE,;t t +-s,@CC@,$CC,;t t +-s,@CXX@,$CXX,;t t +-s,@AS@,$AS,;t t +-s,@ac_ct_AS@,$ac_ct_AS,;t t +-s,@AR@,$AR,;t t +-s,@ac_ct_AR@,$ac_ct_AR,;t t +-s,@RANLIB@,$RANLIB,;t t +-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +-s,@MAINT@,$MAINT,;t t +-s,@GC_CFLAGS@,$GC_CFLAGS,;t t +-s,@LN_S@,$LN_S,;t t +-s,@STRIP@,$STRIP,;t t +-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +-s,@LIBTOOL@,$LIBTOOL,;t t +-s,@CXXCPP@,$CXXCPP,;t t +-s,@CPPFLAGS@,$CPPFLAGS,;t t +-s,@THREADLIBS@,$THREADLIBS,;t t +-s,@POWERPC_DARWIN_TRUE@,$POWERPC_DARWIN_TRUE,;t t +-s,@POWERPC_DARWIN_FALSE@,$POWERPC_DARWIN_FALSE,;t t +-s,@EXTRA_TEST_LIBS@,$EXTRA_TEST_LIBS,;t t +-s,@target_all@,$target_all,;t t +-s,@INCLUDES@,$INCLUDES,;t t +-s,@CXXINCLUDES@,$CXXINCLUDES,;t t +-s,@addobjs@,$addobjs,;t t +-s,@MY_CFLAGS@,$MY_CFLAGS,;t t +-s,@USE_LIBDIR_TRUE@,$USE_LIBDIR_TRUE,;t t +-s,@USE_LIBDIR_FALSE@,$USE_LIBDIR_FALSE,;t t +-s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t +-s,@LTLIBOBJS@,$LTLIBOBJS,;t t +-CEOF +- +-_ACEOF +- +- cat >>$CONFIG_STATUS <<\_ACEOF +- # Split the substitutions into bite-sized pieces for seds with +- # small command number limits, like on Digital OSF/1 and HP-UX. +- ac_max_sed_lines=48 +- ac_sed_frag=1 # Number of current file. +- ac_beg=1 # First line for current file. +- ac_end=$ac_max_sed_lines # Line after last line for current file. +- ac_more_lines=: +- ac_sed_cmds= +- while $ac_more_lines; do +- if test $ac_beg -gt 1; then +- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- else +- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- fi +- if test ! -s $tmp/subs.frag; then +- ac_more_lines=false +- else +- # The purpose of the label and of the branching condition is to +- # speed up the sed processing (if there are no `@' at all, there +- # is no need to browse any of the substitutions). +- # These are the two extra sed commands mentioned above. +- (echo ':t +- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" +- else +- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" +- fi +- ac_sed_frag=`expr $ac_sed_frag + 1` +- ac_beg=$ac_end +- ac_end=`expr $ac_end + $ac_max_sed_lines` +- fi +- done +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds=cat +- fi +-fi # test -n "$CONFIG_FILES" +- +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; +- esac +- +- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. +- ac_dir=`(dirname "$ac_file") 2>/dev/null || +-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } +- +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +-# absolute. +-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` +- +- +- case $INSTALL in +- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; +- *) ac_INSTALL=$ac_top_builddir$INSTALL ;; +- esac +- +- if test x"$ac_file" != x-; then +- { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- rm -f "$ac_file" +- fi +- # Let's still pretend it is `configure' which instantiates (i.e., don't +- # use $as_me), people would be surprised to read: +- # /* config.h. Generated by config.status. */ +- if test x"$ac_file" = x-; then +- configure_input= +- else +- configure_input="$ac_file. " +- fi +- configure_input=$configure_input"Generated from `echo $ac_file_in | +- sed 's,.*/,,'` by configure." +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- echo $f;; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo $f +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo $srcdir/$f +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +-_ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +- sed "$ac_vpsub +-$extrasub +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +-:t +-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +-s,@configure_input@,$configure_input,;t t +-s,@srcdir@,$ac_srcdir,;t t +-s,@abs_srcdir@,$ac_abs_srcdir,;t t +-s,@top_srcdir@,$ac_top_srcdir,;t t +-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +-s,@builddir@,$ac_builddir,;t t +-s,@abs_builddir@,$ac_abs_builddir,;t t +-s,@top_builddir@,$ac_top_builddir,;t t +-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +-s,@INSTALL@,$ac_INSTALL,;t t +-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out +- rm -f $tmp/stdin +- if test x"$ac_file" != x-; then +- mv $tmp/out $ac_file +- else +- cat $tmp/out +- rm -f $tmp/out +- fi +- +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-# +-# CONFIG_COMMANDS section. +-# +-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue +- ac_dest=`echo "$ac_file" | sed 's,:.*,,'` +- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_dir=`(dirname "$ac_dest") 2>/dev/null || +-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_dest" : 'X\(//\)[^/]' \| \ +- X"$ac_dest" : 'X\(//\)$' \| \ +- X"$ac_dest" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_dest" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +-# absolute. +-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` +- +- +- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +-echo "$as_me: executing $ac_dest commands" >&6;} +- case $ac_dest in +- default ) +-echo "$DEFS" > boehm-cflags +- +-if test -n "$CONFIG_FILES"; then +- LD="${ORIGINAL_LD_FOR_MULTILIBS}" +- ac_file=Makefile . ${gc_basedir}/../config-ml.in +-fi ;; +- esac +-done +-_ACEOF +- +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-{ (exit 0); exit 0; } +-_ACEOF +-chmod +x $CONFIG_STATUS +-ac_clean_files=$ac_clean_files_save +- +- +-# configure is writing to config.log, and then calls config.status. +-# config.status does its own redirection, appending to config.log. +-# Unfortunately, on DOS this fails, as config.log is still kept open +-# by configure, so config.status won't be able to write to it; its +-# output is simply discarded. So we exec the FD to /dev/null, +-# effectively closing config.log, so it can be properly (re)opened and +-# appended to by config.status. When coming back to configure, we +-# need to make the FD available again. +-if test "$no_create" != yes; then +- ac_cs_success=: +- ac_config_status_args= +- test "$silent" = yes && +- ac_config_status_args="$ac_config_status_args --quiet" +- exec 5>/dev/null +- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false +- exec 5>>config.log +- # Use ||, not &&, to avoid exiting from the if with $? = 1, which +- # would make configure fail if this is the last instruction. +- $ac_cs_success || { (exit 1); exit 1; } +-fi +- +diff -Nur ../boehm-gc/autom4te.cache/output.1 boehm-gc/autom4te.cache/output.1 +--- ../boehm-gc/autom4te.cache/output.1 Sat May 31 15:09:31 2003 ++++ boehm-gc/autom4te.cache/output.1 Wed Dec 31 16:00:00 1969 +@@ -1,9496 +0,0 @@ +-@%:@! /bin/sh +-@%:@ Guess values for system-dependent variables and create Makefiles. +-@%:@ Generated by GNU Autoconf 2.54. +-@%:@ +-@%:@ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +-@%:@ Free Software Foundation, Inc. +-@%:@ This configure script is free software; the Free Software Foundation +-@%:@ gives unlimited permission to copy, distribute and modify it. +-## --------------------- ## +-## M4sh Initialization. ## +-## --------------------- ## +- +-# Be Bourne compatible +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which +- # is contrary to our usage. Disable this feature. +- alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix +-fi +- +-# Support unset when possible. +-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +- as_unset=unset +-else +- as_unset=false +-fi +- +- +-# Work around bugs in pre-3.0 UWIN ksh. +-$as_unset ENV MAIL MAILPATH +-PS1='$ ' +-PS2='> ' +-PS4='+ ' +- +-# NLS nuisances. +-for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME +-do +- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then +- eval $as_var=C; export $as_var +- else +- $as_unset $as_var +- fi +-done +- +-# Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +- as_basename=basename +-else +- as_basename=false +-fi +- +- +-# Name of the executable. +-as_me=`$as_basename "$0" || +-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ +- X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- +- +-# PATH needs CR, and LINENO needs CR and PATH. +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits +- +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conftest.sh +- echo "exit 0" >>conftest.sh +- chmod +x conftest.sh +- if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conftest.sh +-fi +- +- +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- case $0 in +- *[\\/]* ) as_myself=$0 ;; +- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done +- +- ;; +- esac +- # We did not find ourselves, most probably we were run as `sh COMMAND' +- # in which case we are not to be found in the path. +- if test "x$as_myself" = x; then +- as_myself=$0 +- fi +- if test ! -f "$as_myself"; then +- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in +- /*) +- if ("$as_dir/$as_base" -c ' +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac +- +- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO +- # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. +- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | +- sed ' +- N +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, +- t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, +- ' >$as_me.lineno && +- chmod +x $as_me.lineno || +- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 +- { (exit 1); exit 1; }; } +- +- # Don't try to exec as it changes $[0], causing all sort of problems +- # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensible to this). +- . ./$as_me.lineno +- # Exit status is that of the last command. +- exit +-} +- +- +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +-esac +- +-if expr a : '\(a\)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-rm -f conf$$ conf$$.exe conf$$.file +-echo >conf$$.file +-if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links +- as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi +-elif ln conf$$.file conf$$ 2>/dev/null; then +- as_ln_s=ln +-else +- as_ln_s='cp -p' +-fi +-rm -f conf$$ conf$$.exe conf$$.file +- +-if mkdir -p . 2>/dev/null; then +- as_mkdir_p=: +-else +- as_mkdir_p=false +-fi +- +-as_executable_p="test -f" +- +-# Sed expression to map a string onto a valid CPP name. +-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +- +-# Sed expression to map a string onto a valid variable name. +-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +- +- +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- +- +-# Find the correct PATH separator. Usually this is `:', but +-# DJGPP uses `;' like DOS. +-if test "X${PATH_SEPARATOR+set}" != Xset; then +- UNAME=${UNAME-`uname 2>/dev/null`} +- case X$UNAME in +- *-DOS) lt_cv_sys_path_separator=';' ;; +- *) lt_cv_sys_path_separator=':' ;; +- esac +- PATH_SEPARATOR=$lt_cv_sys_path_separator +-fi +- +- +-# Check that we are running under the correct shell. +-SHELL=${CONFIG_SHELL-/bin/sh} +- +-case X$ECHO in +-X*--fallback-echo) +- # Remove one level of quotation (which was required for Make). +- ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` +- ;; +-esac +- +-echo=${ECHO-echo} +-if test "X$1" = X--no-reexec; then +- # Discard the --no-reexec flag, and continue. +- shift +-elif test "X$1" = X--fallback-echo; then +- # Avoid inline document here, it may be left over +- : +-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then +- # Yippee, $echo works! +- : +-else +- # Restart under the correct shell. +- exec $SHELL "$0" --no-reexec ${1+"$@"} +-fi +- +-if test "X$1" = X--fallback-echo; then +- # used as fallback echo +- shift +- cat </dev/null && +- echo_test_string="`eval $cmd`" && +- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null +- then +- break +- fi +- done +-fi +- +-if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- : +-else +- # The Solaris, AIX, and Digital Unix default echo programs unquote +- # backslashes. This makes it impossible to quote backslashes using +- # echo "$something" | sed 's/\\/\\\\/g' +- # +- # So, first we look for a working echo in the user's PATH. +- +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for dir in $PATH /usr/ucb; do +- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && +- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- echo="$dir/echo" +- break +- fi +- done +- IFS="$save_ifs" +- +- if test "X$echo" = Xecho; then +- # We didn't find a better echo, so look for alternatives. +- if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # This shell has a builtin print -r that does the trick. +- echo='print -r' +- elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && +- test "X$CONFIG_SHELL" != X/bin/ksh; then +- # If we have ksh, try running configure again with it. +- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +- export ORIGINAL_CONFIG_SHELL +- CONFIG_SHELL=/bin/ksh +- export CONFIG_SHELL +- exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} +- else +- # Try using printf. +- echo='printf %s\n' +- if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # Cool, printf works +- : +- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL +- export CONFIG_SHELL +- SHELL="$CONFIG_SHELL" +- export SHELL +- echo="$CONFIG_SHELL $0 --fallback-echo" +- elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- echo="$CONFIG_SHELL $0 --fallback-echo" +- else +- # maybe with a smaller string... +- prev=: +- +- for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do +- if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null +- then +- break +- fi +- prev="$cmd" +- done +- +- if test "$prev" != 'sed 50q "$0"'; then +- echo_test_string=`eval $prev` +- export echo_test_string +- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} +- else +- # Oops. We lost completely, so just stick with echo. +- echo=echo +- fi +- fi +- fi +- fi +-fi +-fi +- +-# Copy echo and quote the copy suitably for passing to libtool from +-# the Makefile, instead of quoting the original, which is used later. +-ECHO=$echo +-if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then +- ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +-fi +- +- +- +-# Name of the host. +-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +-# so uname gets run too. +-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` +- +-exec 6>&1 +- +-# +-# Initializations. +-# +-ac_default_prefix=/usr/local +-ac_config_libobj_dir=. +-cross_compiling=no +-subdirs= +-MFLAGS= +-MAKEFLAGS= +-SHELL=${CONFIG_SHELL-/bin/sh} +- +-# Maximum number of lines to put in a shell here document. +-# This variable seems obsolete. It should probably be removed, and +-# only ac_max_sed_lines should be used. +-: ${ac_max_here_lines=38} +- +-# Identity of this package. +-PACKAGE_NAME= +-PACKAGE_TARNAME= +-PACKAGE_VERSION= +-PACKAGE_STRING= +-PACKAGE_BUGREPORT= +- +-ac_unique_file="gcj_mlc.c" +-# Factoring default headers for most tests. +-ac_includes_default="\ +-#include +-#if HAVE_SYS_TYPES_H +-# include +-#endif +-#if HAVE_SYS_STAT_H +-# include +-#endif +-#if STDC_HEADERS +-# include +-# include +-#else +-# if HAVE_STDLIB_H +-# include +-# endif +-#endif +-#if HAVE_STRING_H +-# if !STDC_HEADERS && HAVE_MEMORY_H +-# include +-# endif +-# include +-#endif +-#if HAVE_STRINGS_H +-# include +-#endif +-#if HAVE_INTTYPES_H +-# include +-#else +-# if HAVE_STDINT_H +-# include +-# endif +-#endif +-#if HAVE_UNISTD_H +-# include +-#endif" +- +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS gc_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os mkinstalldirs INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GC_CFLAGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE LN_S ECHO CPP EGREP LIBTOOL THREADLIBS POWERPC_DARWIN_TRUE POWERPC_DARWIN_FALSE EXTRA_TEST_LIBS target_all CXX INCLUDES CXXINCLUDES addobjs MY_CFLAGS USE_LIBDIR_TRUE USE_LIBDIR_FALSE LIB@&t@OBJS LTLIBOBJS' +-ac_subst_files='' +- +-# Initialize some variables set by options. +-ac_init_help= +-ac_init_version=false +-# The variables have the same names as the options, with +-# dashes changed to underlines. +-cache_file=/dev/null +-exec_prefix=NONE +-no_create= +-no_recursion= +-prefix=NONE +-program_prefix=NONE +-program_suffix=NONE +-program_transform_name=s,x,x, +-silent= +-site= +-srcdir= +-verbose= +-x_includes=NONE +-x_libraries=NONE +- +-# Installation directory options. +-# These are left unexpanded so users can "make install exec_prefix=/foo" +-# and all the variables that are supposed to be based on exec_prefix +-# by default will actually change. +-# Use braces instead of parens because sh, perl, etc. also accept them. +-bindir='${exec_prefix}/bin' +-sbindir='${exec_prefix}/sbin' +-libexecdir='${exec_prefix}/libexec' +-datadir='${prefix}/share' +-sysconfdir='${prefix}/etc' +-sharedstatedir='${prefix}/com' +-localstatedir='${prefix}/var' +-libdir='${exec_prefix}/lib' +-includedir='${prefix}/include' +-oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' +- +-ac_prev= +-for ac_option +-do +- # If the previous option needs an argument, assign it. +- if test -n "$ac_prev"; then +- eval "$ac_prev=\$ac_option" +- ac_prev= +- continue +- fi +- +- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` +- +- # Accept the important Cygnus configure options, so we can diagnose typos. +- +- case $ac_option in +- +- -bindir | --bindir | --bindi | --bind | --bin | --bi) +- ac_prev=bindir ;; +- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) +- bindir=$ac_optarg ;; +- +- -build | --build | --buil | --bui | --bu) +- ac_prev=build_alias ;; +- -build=* | --build=* | --buil=* | --bui=* | --bu=*) +- build_alias=$ac_optarg ;; +- +- -cache-file | --cache-file | --cache-fil | --cache-fi \ +- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) +- ac_prev=cache_file ;; +- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ +- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) +- cache_file=$ac_optarg ;; +- +- --config-cache | -C) +- cache_file=config.cache ;; +- +- -datadir | --datadir | --datadi | --datad | --data | --dat | --da) +- ac_prev=datadir ;; +- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ +- | --da=*) +- datadir=$ac_optarg ;; +- +- -disable-* | --disable-*) +- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` +- # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid feature name: $ac_feature" >&2 +- { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- eval "enable_$ac_feature=no" ;; +- +- -enable-* | --enable-*) +- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` +- # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid feature name: $ac_feature" >&2 +- { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "enable_$ac_feature='$ac_optarg'" ;; +- +- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ +- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ +- | --exec | --exe | --ex) +- ac_prev=exec_prefix ;; +- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ +- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ +- | --exec=* | --exe=* | --ex=*) +- exec_prefix=$ac_optarg ;; +- +- -gas | --gas | --ga | --g) +- # Obsolete; use --with-gas. +- with_gas=yes ;; +- +- -help | --help | --hel | --he | -h) +- ac_init_help=long ;; +- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) +- ac_init_help=recursive ;; +- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) +- ac_init_help=short ;; +- +- -host | --host | --hos | --ho) +- ac_prev=host_alias ;; +- -host=* | --host=* | --hos=* | --ho=*) +- host_alias=$ac_optarg ;; +- +- -includedir | --includedir | --includedi | --included | --include \ +- | --includ | --inclu | --incl | --inc) +- ac_prev=includedir ;; +- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ +- | --includ=* | --inclu=* | --incl=* | --inc=*) +- includedir=$ac_optarg ;; +- +- -infodir | --infodir | --infodi | --infod | --info | --inf) +- ac_prev=infodir ;; +- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) +- infodir=$ac_optarg ;; +- +- -libdir | --libdir | --libdi | --libd) +- ac_prev=libdir ;; +- -libdir=* | --libdir=* | --libdi=* | --libd=*) +- libdir=$ac_optarg ;; +- +- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ +- | --libexe | --libex | --libe) +- ac_prev=libexecdir ;; +- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ +- | --libexe=* | --libex=* | --libe=*) +- libexecdir=$ac_optarg ;; +- +- -localstatedir | --localstatedir | --localstatedi | --localstated \ +- | --localstate | --localstat | --localsta | --localst \ +- | --locals | --local | --loca | --loc | --lo) +- ac_prev=localstatedir ;; +- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ +- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ +- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) +- localstatedir=$ac_optarg ;; +- +- -mandir | --mandir | --mandi | --mand | --man | --ma | --m) +- ac_prev=mandir ;; +- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) +- mandir=$ac_optarg ;; +- +- -nfp | --nfp | --nf) +- # Obsolete; use --without-fp. +- with_fp=no ;; +- +- -no-create | --no-create | --no-creat | --no-crea | --no-cre \ +- | --no-cr | --no-c | -n) +- no_create=yes ;; +- +- -no-recursion | --no-recursion | --no-recursio | --no-recursi \ +- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) +- no_recursion=yes ;; +- +- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ +- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ +- | --oldin | --oldi | --old | --ol | --o) +- ac_prev=oldincludedir ;; +- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ +- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ +- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) +- oldincludedir=$ac_optarg ;; +- +- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) +- ac_prev=prefix ;; +- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) +- prefix=$ac_optarg ;; +- +- -program-prefix | --program-prefix | --program-prefi | --program-pref \ +- | --program-pre | --program-pr | --program-p) +- ac_prev=program_prefix ;; +- -program-prefix=* | --program-prefix=* | --program-prefi=* \ +- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) +- program_prefix=$ac_optarg ;; +- +- -program-suffix | --program-suffix | --program-suffi | --program-suff \ +- | --program-suf | --program-su | --program-s) +- ac_prev=program_suffix ;; +- -program-suffix=* | --program-suffix=* | --program-suffi=* \ +- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) +- program_suffix=$ac_optarg ;; +- +- -program-transform-name | --program-transform-name \ +- | --program-transform-nam | --program-transform-na \ +- | --program-transform-n | --program-transform- \ +- | --program-transform | --program-transfor \ +- | --program-transfo | --program-transf \ +- | --program-trans | --program-tran \ +- | --progr-tra | --program-tr | --program-t) +- ac_prev=program_transform_name ;; +- -program-transform-name=* | --program-transform-name=* \ +- | --program-transform-nam=* | --program-transform-na=* \ +- | --program-transform-n=* | --program-transform-=* \ +- | --program-transform=* | --program-transfor=* \ +- | --program-transfo=* | --program-transf=* \ +- | --program-trans=* | --program-tran=* \ +- | --progr-tra=* | --program-tr=* | --program-t=*) +- program_transform_name=$ac_optarg ;; +- +- -q | -quiet | --quiet | --quie | --qui | --qu | --q \ +- | -silent | --silent | --silen | --sile | --sil) +- silent=yes ;; +- +- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) +- ac_prev=sbindir ;; +- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ +- | --sbi=* | --sb=*) +- sbindir=$ac_optarg ;; +- +- -sharedstatedir | --sharedstatedir | --sharedstatedi \ +- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ +- | --sharedst | --shareds | --shared | --share | --shar \ +- | --sha | --sh) +- ac_prev=sharedstatedir ;; +- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ +- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ +- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ +- | --sha=* | --sh=*) +- sharedstatedir=$ac_optarg ;; +- +- -site | --site | --sit) +- ac_prev=site ;; +- -site=* | --site=* | --sit=*) +- site=$ac_optarg ;; +- +- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) +- ac_prev=srcdir ;; +- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) +- srcdir=$ac_optarg ;; +- +- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ +- | --syscon | --sysco | --sysc | --sys | --sy) +- ac_prev=sysconfdir ;; +- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ +- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) +- sysconfdir=$ac_optarg ;; +- +- -target | --target | --targe | --targ | --tar | --ta | --t) +- ac_prev=target_alias ;; +- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) +- target_alias=$ac_optarg ;; +- +- -v | -verbose | --verbose | --verbos | --verbo | --verb) +- verbose=yes ;; +- +- -version | --version | --versio | --versi | --vers | -V) +- ac_init_version=: ;; +- +- -with-* | --with-*) +- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` +- # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid package name: $ac_package" >&2 +- { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package| sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "with_$ac_package='$ac_optarg'" ;; +- +- -without-* | --without-*) +- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` +- # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid package name: $ac_package" >&2 +- { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package | sed 's/-/_/g'` +- eval "with_$ac_package=no" ;; +- +- --x) +- # Obsolete; use --with-x. +- with_x=yes ;; +- +- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ +- | --x-incl | --x-inc | --x-in | --x-i) +- ac_prev=x_includes ;; +- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ +- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) +- x_includes=$ac_optarg ;; +- +- -x-libraries | --x-libraries | --x-librarie | --x-librari \ +- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) +- ac_prev=x_libraries ;; +- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ +- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) +- x_libraries=$ac_optarg ;; +- +- -*) { echo "$as_me: error: unrecognized option: $ac_option +-Try \`$0 --help' for more information." >&2 +- { (exit 1); exit 1; }; } +- ;; +- +- *=*) +- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` +- # Reject names that are not valid shell variable names. +- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && +- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 +- { (exit 1); exit 1; }; } +- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` +- eval "$ac_envvar='$ac_optarg'" +- export $ac_envvar ;; +- +- *) +- # FIXME: should be removed in autoconf 3.0. +- echo "$as_me: WARNING: you should use --build, --host, --target" >&2 +- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && +- echo "$as_me: WARNING: invalid host type: $ac_option" >&2 +- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} +- ;; +- +- esac +-done +- +-if test -n "$ac_prev"; then +- ac_option=--`echo $ac_prev | sed 's/_/-/g'` +- { echo "$as_me: error: missing argument to $ac_option" >&2 +- { (exit 1); exit 1; }; } +-fi +- +-# Be sure to have absolute paths. +-for ac_var in exec_prefix prefix +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\\/$]* | ?:[\\/]* | NONE | '' ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# Be sure to have absolute paths. +-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\\/$]* | ?:[\\/]* ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# There might be people who depend on the old broken behavior: `$host' +-# used to hold the argument of --host etc. +-# FIXME: To remove some day. +-build=$build_alias +-host=$host_alias +-target=$target_alias +- +-# FIXME: To remove some day. +-if test "x$host_alias" != x; then +- if test "x$build_alias" = x; then +- cross_compiling=maybe +- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. +- If a cross compiler is detected then cross compile mode will be used." >&2 +- elif test "x$build_alias" != "x$host_alias"; then +- cross_compiling=yes +- fi +-fi +- +-ac_tool_prefix= +-test -n "$host_alias" && ac_tool_prefix=$host_alias- +- +-test "$silent" = yes && exec 6>/dev/null +- +- +-# Find the source files, if location was not specified. +-if test -z "$srcdir"; then +- ac_srcdir_defaulted=yes +- # Try the directory containing this script, then its parent. +- ac_confdir=`(dirname "$0") 2>/dev/null || +-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$0" : 'X\(//\)[^/]' \| \ +- X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$0" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- srcdir=$ac_confdir +- if test ! -r $srcdir/$ac_unique_file; then +- srcdir=.. +- fi +-else +- ac_srcdir_defaulted=no +-fi +-if test ! -r $srcdir/$ac_unique_file; then +- if test "$ac_srcdir_defaulted" = yes; then +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +- { (exit 1); exit 1; }; } +- else +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +- { (exit 1); exit 1; }; } +- fi +-fi +-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || +- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +- { (exit 1); exit 1; }; } +-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +-ac_env_build_alias_set=${build_alias+set} +-ac_env_build_alias_value=$build_alias +-ac_cv_env_build_alias_set=${build_alias+set} +-ac_cv_env_build_alias_value=$build_alias +-ac_env_host_alias_set=${host_alias+set} +-ac_env_host_alias_value=$host_alias +-ac_cv_env_host_alias_set=${host_alias+set} +-ac_cv_env_host_alias_value=$host_alias +-ac_env_target_alias_set=${target_alias+set} +-ac_env_target_alias_value=$target_alias +-ac_cv_env_target_alias_set=${target_alias+set} +-ac_cv_env_target_alias_value=$target_alias +-ac_env_CC_set=${CC+set} +-ac_env_CC_value=$CC +-ac_cv_env_CC_set=${CC+set} +-ac_cv_env_CC_value=$CC +-ac_env_CFLAGS_set=${CFLAGS+set} +-ac_env_CFLAGS_value=$CFLAGS +-ac_cv_env_CFLAGS_set=${CFLAGS+set} +-ac_cv_env_CFLAGS_value=$CFLAGS +-ac_env_LDFLAGS_set=${LDFLAGS+set} +-ac_env_LDFLAGS_value=$LDFLAGS +-ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +-ac_cv_env_LDFLAGS_value=$LDFLAGS +-ac_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_env_CPPFLAGS_value=$CPPFLAGS +-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_cv_env_CPPFLAGS_value=$CPPFLAGS +-ac_env_CPP_set=${CPP+set} +-ac_env_CPP_value=$CPP +-ac_cv_env_CPP_set=${CPP+set} +-ac_cv_env_CPP_value=$CPP +- +-# +-# Report the --help message. +-# +-if test "$ac_init_help" = "long"; then +- # Omit some internal or obsolete options to make the list less imposing. +- # This message is too long to be a string in the A/UX 3.1 sh. +- cat <<_ACEOF +-\`configure' configures this package to adapt to many kinds of systems. +- +-Usage: $0 [OPTION]... [VAR=VALUE]... +- +-To assign environment variables (e.g., CC, CFLAGS...), specify them as +-VAR=VALUE. See below for descriptions of some of the useful variables. +- +-Defaults for the options are specified in brackets. +- +-Configuration: +- -h, --help display this help and exit +- --help=short display options specific to this package +- --help=recursive display the short help of all the included packages +- -V, --version display version information and exit +- -q, --quiet, --silent do not print \`checking...' messages +- --cache-file=FILE cache test results in FILE [disabled] +- -C, --config-cache alias for \`--cache-file=config.cache' +- -n, --no-create do not create output files +- --srcdir=DIR find the sources in DIR [configure dir or \`..'] +- +-_ACEOF +- +- cat <<_ACEOF +-Installation directories: +- --prefix=PREFIX install architecture-independent files in PREFIX +- [$ac_default_prefix] +- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX +- [PREFIX] +- +-By default, \`make install' will install all the files in +-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +-an installation prefix other than \`$ac_default_prefix' using \`--prefix', +-for instance \`--prefix=\$HOME'. +- +-For better control, use the options below. +- +-Fine tuning of the installation directories: +- --bindir=DIR user executables [EPREFIX/bin] +- --sbindir=DIR system admin executables [EPREFIX/sbin] +- --libexecdir=DIR program executables [EPREFIX/libexec] +- --datadir=DIR read-only architecture-independent data [PREFIX/share] +- --sysconfdir=DIR read-only single-machine data [PREFIX/etc] +- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] +- --localstatedir=DIR modifiable single-machine data [PREFIX/var] +- --libdir=DIR object code libraries [EPREFIX/lib] +- --includedir=DIR C header files [PREFIX/include] +- --oldincludedir=DIR C header files for non-gcc [/usr/include] +- --infodir=DIR info documentation [PREFIX/info] +- --mandir=DIR man documentation [PREFIX/man] +-_ACEOF +- +- cat <<\_ACEOF +- +-Program names: +- --program-prefix=PREFIX prepend PREFIX to installed program names +- --program-suffix=SUFFIX append SUFFIX to installed program names +- --program-transform-name=PROGRAM run sed PROGRAM on installed program names +- +-System types: +- --build=BUILD configure for building on BUILD [guessed] +- --host=HOST cross-compile to build programs to run on HOST [BUILD] +- --target=TARGET configure for building compilers for TARGET [HOST] +-_ACEOF +-fi +- +-if test -n "$ac_init_help"; then +- +- cat <<\_ACEOF +- +-Optional Features: +- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) +- --enable-FEATURE[=ARG] include FEATURE [ARG=yes] +- --enable-multilib build many library versions (default) +- --enable-maintainer-mode enable make rules and dependencies not useful +- (and sometimes confusing) to the casual installer +- --enable-shared=PKGS build shared libraries default=yes +- --enable-static=PKGS build static libraries default=yes +- --enable-fast-install=PKGS optimize for fast installation default=yes +- --disable-dependency-tracking Speeds up one-time builds +- --enable-dependency-tracking Do not reject slow dependency extractors +- --disable-libtool-lock avoid locking (might break parallel builds) +- --enable-parallel-mark parallelize marking and free list construction +- --enable-shared=PKGS build shared libraries default=no +- --enable-full-debug include full support for pointer backtracing etc. +- +-Optional Packages: +- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] +- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) +- --with-gnu-ld assume the C compiler uses GNU ld default=no +- --with-pic try to use only PIC/non-PIC objects default=use both +- --with-target-subdir=SUBDIR +- configuring with a cross compiler +- --with-cross-host=HOST configuring with a cross compiler +- --with-ecos enable runtime eCos target support +- +-Some influential environment variables: +- CC C compiler command +- CFLAGS C compiler flags +- LDFLAGS linker flags, e.g. -L if you have libraries in a +- nonstandard directory +- CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have +- headers in a nonstandard directory +- CPP C preprocessor +- +-Use these variables to override the choices made by `configure' or to help +-it to find libraries and programs with nonstandard names/locations. +- +-_ACEOF +-fi +- +-if test "$ac_init_help" = "recursive"; then +- # If there are subdirs, report their specific --help. +- ac_popdir=`pwd` +- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue +- test -d $ac_dir || continue +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +-# absolute. +-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` +- +- cd $ac_dir +- # Check for guested configure; otherwise get Cygnus style configure. +- if test -f $ac_srcdir/configure.gnu; then +- echo +- $SHELL $ac_srcdir/configure.gnu --help=recursive +- elif test -f $ac_srcdir/configure; then +- echo +- $SHELL $ac_srcdir/configure --help=recursive +- elif test -f $ac_srcdir/configure.ac || +- test -f $ac_srcdir/configure.in; then +- echo +- $ac_configure --help +- else +- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 +- fi +- cd $ac_popdir +- done +-fi +- +-test -n "$ac_init_help" && exit 0 +-if $ac_init_version; then +- cat <<\_ACEOF +- +-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +-Free Software Foundation, Inc. +-This configure script is free software; the Free Software Foundation +-gives unlimited permission to copy, distribute and modify it. +-_ACEOF +- exit 0 +-fi +-exec 5>config.log +-cat >&5 <<_ACEOF +-This file contains any messages produced by compilers while +-running configure, to aid debugging if configure makes a mistake. +- +-It was created by $as_me, which was +-generated by GNU Autoconf 2.54. Invocation command line was +- +- $ $0 $@ +- +-_ACEOF +-{ +-cat <<_ASUNAME +-@%:@@%:@ --------- @%:@@%:@ +-@%:@@%:@ Platform. @%:@@%:@ +-@%:@@%:@ --------- @%:@@%:@ +- +-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +-uname -m = `(uname -m) 2>/dev/null || echo unknown` +-uname -r = `(uname -r) 2>/dev/null || echo unknown` +-uname -s = `(uname -s) 2>/dev/null || echo unknown` +-uname -v = `(uname -v) 2>/dev/null || echo unknown` +- +-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` +- +-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +-hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` +- +-_ASUNAME +- +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- echo "PATH: $as_dir" +-done +- +-} >&5 +- +-cat >&5 <<_ACEOF +- +- +-@%:@@%:@ ----------- @%:@@%:@ +-@%:@@%:@ Core tests. @%:@@%:@ +-@%:@@%:@ ----------- @%:@@%:@ +- +-_ACEOF +- +- +-# Keep a trace of the command line. +-# Strip out --no-create and --no-recursion so they do not pile up. +-# Also quote any args containing shell meta-characters. +-ac_configure_args= +-ac_sep= +-for ac_arg +-do +- case $ac_arg in +- -no-create | --no-create | --no-creat | --no-crea | --no-cre \ +- | --no-cr | --no-c | -n ) continue ;; +- -no-recursion | --no-recursion | --no-recursio | --no-recursi \ +- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) +- continue ;; +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; +- esac +- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" +- # Get rid of the leading space. +- ac_sep=" " +-done +- +-# When interrupted or exit'd, cleanup temporary files, and complete +-# config.log. We remove comments because anyway the quotes in there +-# would cause problems or look ugly. +-# WARNING: Be sure not to use single quotes in there, as some shells, +-# such as our DU 5.0 friend, will then `close' the trap. +-trap 'exit_status=$? +- # Save into config.log some information that might help in debugging. +- { +- echo +- +- cat <<\_ASBOX +-@%:@@%:@ ---------------- @%:@@%:@ +-@%:@@%:@ Cache variables. @%:@@%:@ +-@%:@@%:@ ---------------- @%:@@%:@ +-_ASBOX +- echo +- # The following way of writing the cache mishandles newlines in values, +-{ +- (set) 2>&1 | +- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in +- *ac_space=\ *) +- sed -n \ +- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" +- ;; +- *) +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" +- ;; +- esac; +-} +- echo +- +- cat <<\_ASBOX +-@%:@@%:@ ----------------- @%:@@%:@ +-@%:@@%:@ Output variables. @%:@@%:@ +-@%:@@%:@ ----------------- @%:@@%:@ +-_ASBOX +- echo +- for ac_var in $ac_subst_vars +- do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" +- done | sort +- echo +- +- if test -n "$ac_subst_files"; then +- cat <<\_ASBOX +-@%:@@%:@ ------------- @%:@@%:@ +-@%:@@%:@ Output files. @%:@@%:@ +-@%:@@%:@ ------------- @%:@@%:@ +-_ASBOX +- echo +- for ac_var in $ac_subst_files +- do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" +- done | sort +- echo +- fi +- +- if test -s confdefs.h; then +- cat <<\_ASBOX +-@%:@@%:@ ----------- @%:@@%:@ +-@%:@@%:@ confdefs.h. @%:@@%:@ +-@%:@@%:@ ----------- @%:@@%:@ +-_ASBOX +- echo +- sed "/^$/d" confdefs.h | sort +- echo +- fi +- test "$ac_signal" != 0 && +- echo "$as_me: caught signal $ac_signal" +- echo "$as_me: exit $exit_status" +- } >&5 +- rm -f core core.* *.core && +- rm -rf conftest* confdefs* conf$$* $ac_clean_files && +- exit $exit_status +- ' 0 +-for ac_signal in 1 2 13 15; do +- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +-done +-ac_signal=0 +- +-# confdefs.h avoids OS command line length limits that DEFS can exceed. +-rm -rf conftest* confdefs.h +-# AIX cpp loses on an empty file, so make sure it contains at least a newline. +-echo >confdefs.h +- +-# Predefined preprocessor variables. +- +-cat >>confdefs.h <<_ACEOF +-@%:@define PACKAGE_NAME "$PACKAGE_NAME" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-@%:@define PACKAGE_STRING "$PACKAGE_STRING" +-_ACEOF +- +- +-cat >>confdefs.h <<_ACEOF +-@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +-_ACEOF +- +- +-# Let the site file select an alternate cache file if it wants to. +-# Prefer explicitly selected file to automatically selected ones. +-if test -z "$CONFIG_SITE"; then +- if test "x$prefix" != xNONE; then +- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" +- else +- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +- fi +-fi +-for ac_site_file in $CONFIG_SITE; do +- if test -r "$ac_site_file"; then +- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +-echo "$as_me: loading site script $ac_site_file" >&6;} +- sed 's/^/| /' "$ac_site_file" >&5 +- . "$ac_site_file" +- fi +-done +- +-if test -r "$cache_file"; then +- # Some versions of bash will fail to source /dev/null (special +- # files actually), so we avoid doing that. +- if test -f "$cache_file"; then +- { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +-echo "$as_me: loading cache $cache_file" >&6;} +- case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; +- esac +- fi +-else +- { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +-echo "$as_me: creating cache $cache_file" >&6;} +- >$cache_file +-fi +- +-# Check that the precious variables saved in the cache have kept the same +-# value. +-ac_cache_corrupted=false +-for ac_var in `(set) 2>&1 | +- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do +- eval ac_old_set=\$ac_cv_env_${ac_var}_set +- eval ac_new_set=\$ac_env_${ac_var}_set +- eval ac_old_val="\$ac_cv_env_${ac_var}_value" +- eval ac_new_val="\$ac_env_${ac_var}_value" +- case $ac_old_set,$ac_new_set in +- set,) +- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} +- ac_cache_corrupted=: ;; +- ,set) +- { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} +- ac_cache_corrupted=: ;; +- ,);; +- *) +- if test "x$ac_old_val" != "x$ac_new_val"; then +- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} +- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +-echo "$as_me: former value: $ac_old_val" >&2;} +- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +-echo "$as_me: current value: $ac_new_val" >&2;} +- ac_cache_corrupted=: +- fi;; +- esac +- # Pass precious variables to config.status. +- if test "$ac_new_set" = set; then +- case $ac_new_val in +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; +- *) ac_arg=$ac_var=$ac_new_val ;; +- esac +- case " $ac_configure_args " in +- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. +- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; +- esac +- fi +-done +-if $ac_cache_corrupted; then +- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +-echo "$as_me: error: changes in the environment can compromise the build" >&2;} +- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +-# This works around the fact that libtool configuration may change LD +-# for this particular configuration, but some shells, instead of +-# keeping the changes in LD private, export them just because LD is +-# exported. +-ORIGINAL_LD_FOR_MULTILIBS=$LD +- +-ac_aux_dir= +-for ac_dir in . $srcdir/.; do +- if test -f $ac_dir/install-sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install-sh -c" +- break +- elif test -f $ac_dir/install.sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install.sh -c" +- break +- elif test -f $ac_dir/shtool; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/shtool install -c" +- break +- fi +-done +-if test -z "$ac_aux_dir"; then +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in . $srcdir/." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in . $srcdir/." >&2;} +- { (exit 1); exit 1; }; } +-fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. +- +- +-# Make sure we can run config.sub. +-$ac_config_sub sun4 >/dev/null 2>&1 || +- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +-echo "$as_me: error: cannot run $ac_config_sub" >&2;} +- { (exit 1); exit 1; }; } +- +-echo "$as_me:$LINENO: checking build system type" >&5 +-echo $ECHO_N "checking build system type... $ECHO_C" >&6 +-if test "${ac_cv_build+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_build_alias=$build_alias +-test -z "$ac_cv_build_alias" && +- ac_cv_build_alias=`$ac_config_guess` +-test -z "$ac_cv_build_alias" && +- { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +-echo "$as_me: error: cannot guess build type; you must specify one" >&2;} +- { (exit 1); exit 1; }; } +-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} +- { (exit 1); exit 1; }; } +- +-fi +-echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +-echo "${ECHO_T}$ac_cv_build" >&6 +-build=$ac_cv_build +-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +- +- +-echo "$as_me:$LINENO: checking host system type" >&5 +-echo $ECHO_N "checking host system type... $ECHO_C" >&6 +-if test "${ac_cv_host+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_host_alias=$host_alias +-test -z "$ac_cv_host_alias" && +- ac_cv_host_alias=$ac_cv_build_alias +-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} +- { (exit 1); exit 1; }; } +- +-fi +-echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +-echo "${ECHO_T}$ac_cv_host" >&6 +-host=$ac_cv_host +-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +- +- +-am__api_version="1.6" +-# Find a good install program. We prefer a C program (faster), +-# so one script is as good as another. But avoid the broken or +-# incompatible versions: +-# SysV /etc/install, /usr/sbin/install +-# SunOS /usr/etc/install +-# IRIX /sbin/install +-# AIX /bin/install +-# AmigaOS /C/install, which installs bootblocks on floppy discs +-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +-# AFS /usr/afsws/bin/install, which mishandles nonexistent args +-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +-# ./install, which can be erroneously created by make from ./install.sh. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +-if test -z "$INSTALL"; then +-if test "${ac_cv_path_install+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- # Account for people who put trailing slashes in PATH elements. +-case $as_dir/ in +- ./ | .// | /cC/* | \ +- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ +- /usr/ucb/* ) ;; +- *) +- # OSF1 and SCO ODT 3.0 have their own names for install. +- # Don't use installbsd from OSF since it installs stuff as root +- # by default. +- for ac_prog in ginstall scoinst install; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then +- if test $ac_prog = install && +- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # AIX install. It has an incompatible calling convention. +- : +- elif test $ac_prog = install && +- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # program-specific install script used by HP pwplus--don't use. +- : +- else +- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" +- break 3 +- fi +- fi +- done +- done +- ;; +-esac +-done +- +- +-fi +- if test "${ac_cv_path_install+set}" = set; then +- INSTALL=$ac_cv_path_install +- else +- # As a last resort, use the slow shell script. We don't cache a +- # path for INSTALL within a source directory, because that will +- # break other packages using the cache if that directory is +- # removed, or if the path is relative. +- INSTALL=$ac_install_sh +- fi +-fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 +- +-# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +-# It thinks the first close brace ends the variable substitution. +-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' +- +-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' +- +-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +- +-echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +-# Just in case +-sleep 1 +-echo timestamp > conftest.file +-# Do `set' in a subshell so we don't clobber the current shell's +-# arguments. Must try -L first in case configure is actually a +-# symlink; some systems play weird games with the mod time of symlinks +-# (eg FreeBSD returns the mod time of the symlink's containing +-# directory). +-if ( +- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` +- if test "$*" = "X"; then +- # -L didn't work. +- set X `ls -t $srcdir/configure conftest.file` +- fi +- rm -f conftest.file +- if test "$*" != "X $srcdir/configure conftest.file" \ +- && test "$*" != "X conftest.file $srcdir/configure"; then +- +- # If neither matched, then we have a broken ls. This can happen +- # if, for instance, CONFIG_SHELL is bash and it inherits a +- # broken ls alias from the environment. This has actually +- # happened. Such a system could not be considered "sane". +- { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +-alias in your environment" >&5 +-echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +-alias in your environment" >&2;} +- { (exit 1); exit 1; }; } +- fi +- +- test "$2" = conftest.file +- ) +-then +- # Ok. +- : +-else +- { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +-Check your system clock" >&5 +-echo "$as_me: error: newly created file is older than distributed files! +-Check your system clock" >&2;} +- { (exit 1); exit 1; }; } +-fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +-test "$program_prefix" != NONE && +- program_transform_name="s,^,$program_prefix,;$program_transform_name" +-# Use a double $ so make ignores it. +-test "$program_suffix" != NONE && +- program_transform_name="s,\$,$program_suffix,;$program_transform_name" +-# Double any \ or $. echo might interpret backslashes. +-# By default was `s,x,x', remove it if useless. +-cat <<\_ACEOF >conftest.sed +-s/[\\$]/&&/g;s/;s,x,x,$// +-_ACEOF +-program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +-rm conftest.sed +- +- +-# expand $ac_aux_dir to an absolute path +-am_aux_dir=`cd $ac_aux_dir && pwd` +- +-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +-# Use eval to expand $SHELL +-if eval "$MISSING --run true"; then +- am_missing_run="$MISSING --run " +-else +- am_missing_run= +- { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +-echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +-fi +- +-for ac_prog in gawk mawk nawk awk +-do +- # Extract the first word of "$ac_prog", so it can be a program name with args. +-set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_AWK+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$AWK"; then +- ac_cv_prog_AWK="$AWK" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_AWK="$ac_prog" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-AWK=$ac_cv_prog_AWK +-if test -n "$AWK"; then +- echo "$as_me:$LINENO: result: $AWK" >&5 +-echo "${ECHO_T}$AWK" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- test -n "$AWK" && break +-done +- +-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \${MAKE}" >&5 +-echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.make <<\_ACEOF +-all: +- @echo 'ac_maketemp="${MAKE}"' +-_ACEOF +-# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +-if test -n "$ac_maketemp"; then +- eval ac_cv_prog_make_${ac_make}_set=yes +-else +- eval ac_cv_prog_make_${ac_make}_set=no +-fi +-rm -f conftest.make +-fi +-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +- SET_MAKE= +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +- SET_MAKE="MAKE=${MAKE-make}" +-fi +- +- +-# Check whether --enable-multilib or --disable-multilib was given. +-if test "${enable_multilib+set}" = set; then +- enableval="$enable_multilib" +- case "${enableval}" in +- yes) multilib=yes ;; +- no) multilib=no ;; +- *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for multilib option" >&5 +-echo "$as_me: error: bad value ${enableval} for multilib option" >&2;} +- { (exit 1); exit 1; }; } ;; +- esac +-else +- multilib=yes +-fi; +- +-if test "${srcdir}" = "."; then +- if test "${with_target_subdir}" != "." -a -n "${with_target_subdir}"; then +- gc_basedir="${srcdir}/${with_multisrctop}../." +- else +- gc_basedir="${srcdir}/${with_multisrctop}." +- fi +-else +- gc_basedir="${srcdir}/." +-fi +- +-ac_aux_dir= +-for ac_dir in $gc_basedir/.. $srcdir/$gc_basedir/..; do +- if test -f $ac_dir/install-sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install-sh -c" +- break +- elif test -f $ac_dir/install.sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install.sh -c" +- break +- elif test -f $ac_dir/shtool; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/shtool install -c" +- break +- fi +-done +-if test -z "$ac_aux_dir"; then +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $gc_basedir/.. $srcdir/$gc_basedir/.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in $gc_basedir/.. $srcdir/$gc_basedir/.." >&2;} +- { (exit 1); exit 1; }; } +-fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. +- +-if :; then :; else +- # This overrides the previous occurrence for automake, but not for +- # autoconf, which is exactly what we want. +- ac_aux_dir= +-for ac_dir in .. $srcdir/..; do +- if test -f $ac_dir/install-sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install-sh -c" +- break +- elif test -f $ac_dir/install.sh; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install.sh -c" +- break +- elif test -f $ac_dir/shtool; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/shtool install -c" +- break +- fi +-done +-if test -z "$ac_aux_dir"; then +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in .. $srcdir/.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in .. $srcdir/.." >&2;} +- { (exit 1); exit 1; }; } +-fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. +- +-fi +- +-echo "$as_me:$LINENO: checking target system type" >&5 +-echo $ECHO_N "checking target system type... $ECHO_C" >&6 +-if test "${ac_cv_target+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_target_alias=$target_alias +-test "x$ac_cv_target_alias" = "x" && +- ac_cv_target_alias=$ac_cv_host_alias +-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} +- { (exit 1); exit 1; }; } +- +-fi +-echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +-echo "${ECHO_T}$ac_cv_target" >&6 +-target=$ac_cv_target +-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +- +- +-# The aliases save the names the user supplied, while $host etc. +-# will get canonicalized. +-test -n "$target_alias" && +- test "$program_prefix$program_suffix$program_transform_name" = \ +- NONENONEs,x,x, && +- program_prefix=${target_alias}- +- +-# This works around an automake problem. +-mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs" +- +- +- # test to see if srcdir already configured +-if test "`cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +-echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-# Define the identity of the package. +- PACKAGE=gc +- VERSION=6.1a1 +- +- +-# Some tools Automake needs. +- +-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} +- +- +-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} +- +- +-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} +- +- +-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} +- +- +-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} +- +- +-AMTAR=${AMTAR-"${am_missing_run}tar"} +- +-install_sh=${install_sh-"$am_aux_dir/install-sh"} +- +-# Installed binaries are usually stripped using `strip' when the user +-# run `make install-strip'. However `strip' might not be the right +-# tool to use in cross-compilation environments, therefore Automake +-# will honor the `STRIP' environment variable to overrule this program. +-if test "$cross_compiling" != no; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +-set dummy ${ac_tool_prefix}strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_STRIP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$STRIP"; then +- ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_STRIP="${ac_tool_prefix}strip" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-STRIP=$ac_cv_prog_STRIP +-if test -n "$STRIP"; then +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_STRIP"; then +- ac_ct_STRIP=$STRIP +- # Extract the first word of "strip", so it can be a program name with args. +-set dummy strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_STRIP"; then +- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_STRIP="strip" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +-fi +-fi +-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +-if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- STRIP=$ac_ct_STRIP +-else +- STRIP="$ac_cv_prog_STRIP" +-fi +- +-fi +-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +- +-# We need awk for the "check" target. The system "awk" is bad on +-# some platforms. +- +- +- +- +-# AC_CHECK_TOOL does AC_REQUIRE (AC_CANONICAL_BUILD). If we don't +-# run it explicitly here, it will be run implicitly before +-# NEWLIB_CONFIGURE, which doesn't work because that means that it will +-# be run before AC_CANONICAL_HOST. +- +- +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +-set dummy ${ac_tool_prefix}as; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_AS+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$AS"; then +- ac_cv_prog_AS="$AS" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_AS="${ac_tool_prefix}as" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-AS=$ac_cv_prog_AS +-if test -n "$AS"; then +- echo "$as_me:$LINENO: result: $AS" >&5 +-echo "${ECHO_T}$AS" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_AS"; then +- ac_ct_AS=$AS +- # Extract the first word of "as", so it can be a program name with args. +-set dummy as; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_AS+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_AS"; then +- ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_AS="as" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_AS=$ac_cv_prog_ac_ct_AS +-if test -n "$ac_ct_AS"; then +- echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 +-echo "${ECHO_T}$ac_ct_AS" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- AS=$ac_ct_AS +-else +- AS="$ac_cv_prog_AS" +-fi +- +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +-set dummy ${ac_tool_prefix}ar; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_AR+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$AR"; then +- ac_cv_prog_AR="$AR" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_AR="${ac_tool_prefix}ar" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-AR=$ac_cv_prog_AR +-if test -n "$AR"; then +- echo "$as_me:$LINENO: result: $AR" >&5 +-echo "${ECHO_T}$AR" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_AR"; then +- ac_ct_AR=$AR +- # Extract the first word of "ar", so it can be a program name with args. +-set dummy ar; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_AR"; then +- ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_AR="ar" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_AR=$ac_cv_prog_ac_ct_AR +-if test -n "$ac_ct_AR"; then +- echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +-echo "${ECHO_T}$ac_ct_AR" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- AR=$ac_ct_AR +-else +- AR="$ac_cv_prog_AR" +-fi +- +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +-set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$RANLIB"; then +- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-RANLIB=$ac_cv_prog_RANLIB +-if test -n "$RANLIB"; then +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_RANLIB"; then +- ac_ct_RANLIB=$RANLIB +- # Extract the first word of "ranlib", so it can be a program name with args. +-set dummy ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_RANLIB"; then +- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_RANLIB="ranlib" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +-fi +-fi +-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +-if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- RANLIB=$ac_ct_RANLIB +-else +- RANLIB="$ac_cv_prog_RANLIB" +-fi +- +- +-# Find a good install program. We prefer a C program (faster), +-# so one script is as good as another. But avoid the broken or +-# incompatible versions: +-# SysV /etc/install, /usr/sbin/install +-# SunOS /usr/etc/install +-# IRIX /sbin/install +-# AIX /bin/install +-# AmigaOS /C/install, which installs bootblocks on floppy discs +-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +-# AFS /usr/afsws/bin/install, which mishandles nonexistent args +-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +-# ./install, which can be erroneously created by make from ./install.sh. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +-if test -z "$INSTALL"; then +-if test "${ac_cv_path_install+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- # Account for people who put trailing slashes in PATH elements. +-case $as_dir/ in +- ./ | .// | /cC/* | \ +- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ +- /usr/ucb/* ) ;; +- *) +- # OSF1 and SCO ODT 3.0 have their own names for install. +- # Don't use installbsd from OSF since it installs stuff as root +- # by default. +- for ac_prog in ginstall scoinst install; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then +- if test $ac_prog = install && +- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # AIX install. It has an incompatible calling convention. +- : +- elif test $ac_prog = install && +- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # program-specific install script used by HP pwplus--don't use. +- : +- else +- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" +- break 3 +- fi +- fi +- done +- done +- ;; +-esac +-done +- +- +-fi +- if test "${ac_cv_path_install+set}" = set; then +- INSTALL=$ac_cv_path_install +- else +- # As a last resort, use the slow shell script. We don't cache a +- # path for INSTALL within a source directory, because that will +- # break other packages using the cache if that directory is +- # removed, or if the path is relative. +- INSTALL=$ac_install_sh +- fi +-fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 +- +-# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +-# It thinks the first close brace ends the variable substitution. +-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' +- +-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' +- +-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +- +- +-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 +- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +-if test "${enable_maintainer_mode+set}" = set; then +- enableval="$enable_maintainer_mode" +- USE_MAINTAINER_MODE=$enableval +-else +- USE_MAINTAINER_MODE=no +-fi; +- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 +- +- +-if test $USE_MAINTAINER_MODE = yes; then +- MAINTAINER_MODE_TRUE= +- MAINTAINER_MODE_FALSE='#' +-else +- MAINTAINER_MODE_TRUE='#' +- MAINTAINER_MODE_FALSE= +-fi +- +- MAINT=$MAINTAINER_MODE_TRUE +- +- +- +-# We need AC_EXEEXT to keep automake happy in cygnus mode. However, +-# at least currently, we never actually build a program, so we never +-# need to use $(EXEEXT). Moreover, the test for EXEEXT normally +-# fails, because we are probably configuring with a cross compiler +-# which can't create executables. So we include AC_EXEEXT to keep +-# automake happy, but we don't execute it, since we don't care about +-# the result. +-if false; then +- # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands +- # to nothing, so nothing would remain between `then' and `fi' if it +- # were not for the `:' below. +- : +- +-fi +- +-. ${srcdir}/configure.host +- +-case ${gc_basedir} in +-/* | A-Za-z:/\\*) gc_flagbasedir=${gc_basedir} ;; +-*) gc_flagbasedir='$(top_builddir)/'${gc_basedir} ;; +-esac +- +-gc_cflags="${gc_cflags} -I"'$(top_builddir)'"/./targ-include -I${gc_flagbasedir}/libc/include" +-case "${host}" in +- *-*-cygwin32*) +- gc_cflags="${gc_cflags} -I${gc_flagbasedir}/../winsup/include" +- ;; +-esac +- +- +-GC_CFLAGS=${gc_cflags} +- +- +- +-# Check whether --enable-shared or --disable-shared was given. +-if test "${enable_shared+set}" = set; then +- enableval="$enable_shared" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_shared=yes ;; +-no) enable_shared=no ;; +-*) +- enable_shared=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac +-else +- enable_shared=yes +-fi; +-# Check whether --enable-static or --disable-static was given. +-if test "${enable_static+set}" = set; then +- enableval="$enable_static" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_static=yes ;; +-no) enable_static=no ;; +-*) +- enable_static=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_static=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac +-else +- enable_static=yes +-fi; +-# Check whether --enable-fast-install or --disable-fast-install was given. +-if test "${enable_fast_install+set}" = set; then +- enableval="$enable_fast_install" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_fast_install=yes ;; +-no) enable_fast_install=no ;; +-*) +- enable_fast_install=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_fast_install=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac +-else +- enable_fast_install=yes +-fi; +-rm -f .deps 2>/dev/null +-mkdir .deps 2>/dev/null +-if test -d .deps; then +- DEPDIR=.deps +-else +- # MS-DOS does not allow filenames that begin with a dot. +- DEPDIR=_deps +-fi +-rmdir .deps 2>/dev/null +- +- +- ac_config_commands="$ac_config_commands depfiles" +- +- +-am_make=${MAKE-make} +-cat > confinc << 'END' +-doit: +- @echo done +-END +-# If we don't find an include directive, just comment out the code. +-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +-am__include="#" +-am__quote= +-_am_result=none +-# First try GNU make style include. +-echo "include confinc" > confmf +-# We grep out `Entering directory' and `Leaving directory' +-# messages which can occur if `w' ends up in MAKEFLAGS. +-# In particular we don't look at `^make:' because GNU make might +-# be invoked under some other name (usually "gmake"), in which +-# case it prints its new name instead of `make'. +-if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then +- am__include=include +- am__quote= +- _am_result=GNU +-fi +-# Now try BSD make style include. +-if test "$am__include" = "#"; then +- echo '.include "confinc"' > confmf +- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then +- am__include=.include +- am__quote="\"" +- _am_result=BSD +- fi +-fi +- +- +-echo "$as_me:$LINENO: result: $_am_result" >&5 +-echo "${ECHO_T}$_am_result" >&6 +-rm -f confinc confmf +- +-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +-if test "${enable_dependency_tracking+set}" = set; then +- enableval="$enable_dependency_tracking" +- +-fi; +-if test "x$enable_dependency_tracking" != xno; then +- am_depcomp="$ac_aux_dir/depcomp" +- AMDEPBACKSLASH='\' +-fi +- +- +-if test "x$enable_dependency_tracking" != xno; then +- AMDEP_TRUE= +- AMDEP_FALSE='#' +-else +- AMDEP_TRUE='#' +- AMDEP_FALSE= +-fi +- +- +- +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +-set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$CC"; then +- ac_cv_prog_CC="$CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_CC="${ac_tool_prefix}gcc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-CC=$ac_cv_prog_CC +-if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "gcc", so it can be a program name with args. +-set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="gcc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi +- +-if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +-set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$CC"; then +- ac_cv_prog_CC="$CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_CC="${ac_tool_prefix}cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-CC=$ac_cv_prog_CC +-if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi +- +-fi +-if test -z "$CC"; then +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$CC"; then +- ac_cv_prog_CC="$CC" # Let the user override the test. +-else +- ac_prog_rejected=no +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then +- ac_prog_rejected=yes +- continue +- fi +- ac_cv_prog_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-if test $ac_prog_rejected = yes; then +- # We found a bogon in the path, so make sure we never use it. +- set dummy $ac_cv_prog_CC +- shift +- if test $@%:@ != 0; then +- # We chose a different compiler from the bogus one. +- # However, it has the same basename, so the bogon will be chosen +- # first if we set CC to just the basename; use the full file name. +- shift +- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" +- fi +-fi +-fi +-fi +-CC=$ac_cv_prog_CC +-if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- for ac_prog in cl +- do +- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +-set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$CC"; then +- ac_cv_prog_CC="$CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_CC="$ac_tool_prefix$ac_prog" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-CC=$ac_cv_prog_CC +-if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- test -n "$CC" && break +- done +-fi +-if test -z "$CC"; then +- ac_ct_CC=$CC +- for ac_prog in cl +-do +- # Extract the first word of "$ac_prog", so it can be a program name with args. +-set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="$ac_prog" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- test -n "$ac_ct_CC" && break +-done +- +- CC=$ac_ct_CC +-fi +- +-fi +- +- +-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 +-echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} +- { (exit 1); exit 1; }; } +- +-# Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C compiler version" >&5 +-ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +- +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-ac_clean_files_save=$ac_clean_files +-ac_clean_files="$ac_clean_files a.out a.exe" +-# Try to create an executable without -o first, disregard a.out. +-# It will help us diagnose broken compilers, and finding out an intuition +-# of exeext. +-echo "$as_me:$LINENO: checking for C compiler default output" >&5 +-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 +- (eval $ac_link_default) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- # Find the output, starting from the most likely. This scheme is +-# not robust to junk in `.', hence go to wildcards (a.*) only as a last +-# resort. +- +-# Be careful to initialize this variable, since it used to be cached. +-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +-ac_cv_exeext= +-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.*; do +- test -f "$ac_file" || continue +- case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; +- a.out ) # We found the default executable, but exeext='' is most +- # certainly right. +- break;; +- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- # FIXME: I believe we export ac_cv_exeext for Libtool --akim. +- export ac_cv_exeext +- break;; +- * ) break;; +- esac +-done +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +-check \`config.log' for details." >&5 +-echo "$as_me: error: C compiler cannot create executables +-check \`config.log' for details." >&2;} +- { (exit 77); exit 77; }; } +-fi +- +-ac_exeext=$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_file" >&5 +-echo "${ECHO_T}$ac_file" >&6 +- +-# Check the compiler produces executables we can run. If not, either +-# the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +-# If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then +- if { ac_try='./$ac_file' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- cross_compiling=no +- else +- if test "$cross_compiling" = maybe; then +- cross_compiling=yes +- else +- { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +-If you meant to cross compile, use \`--host'." >&5 +-echo "$as_me: error: cannot run C compiled programs. +-If you meant to cross compile, use \`--host'." >&2;} +- { (exit 1); exit 1; }; } +- fi +- fi +-fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +- +-rm -f a.out a.exe conftest$ac_cv_exeext +-ac_clean_files=$ac_clean_files_save +-# Check the compiler produces executables we can run. If not, either +-# the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $cross_compiling" >&5 +-echo "${ECHO_T}$cross_compiling" >&6 +- +-echo "$as_me:$LINENO: checking for suffix of executables" >&5 +-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- # If both `conftest.exe' and `conftest' are `present' (well, observable) +-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +-# work properly (i.e., refer to `conftest.exe'), while it won't with +-# `rm'. +-for ac_file in conftest.exe conftest conftest.*; do +- test -f "$ac_file" || continue +- case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; +- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- export ac_cv_exeext +- break;; +- * ) break;; +- esac +-done +-else +- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 +-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-rm -f conftest$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +-echo "${ECHO_T}$ac_cv_exeext" >&6 +- +-rm -f conftest.$ac_ext +-EXEEXT=$ac_cv_exeext +-ac_exeext=$EXEEXT +-echo "$as_me:$LINENO: checking for suffix of object files" >&5 +-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +-if test "${ac_cv_objext+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.o conftest.obj +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do +- case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; +- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` +- break;; +- esac +-done +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 +-echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-rm -f conftest.$ac_cv_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +-echo "${ECHO_T}$ac_cv_objext" >&6 +-OBJEXT=$ac_cv_objext +-ac_objext=$OBJEXT +-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +-if test "${ac_cv_c_compiler_gnu+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-int +-main () +-{ +-#ifndef __GNUC__ +- choke me +-#endif +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_compiler_gnu=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_compiler_gnu=no +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-ac_cv_c_compiler_gnu=$ac_compiler_gnu +- +-fi +-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +-GCC=`test $ac_compiler_gnu = yes && echo yes` +-ac_test_CFLAGS=${CFLAGS+set} +-ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_g+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_g=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_prog_cc_g=no +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +-if test "$ac_test_CFLAGS" = set; then +- CFLAGS=$ac_save_CFLAGS +-elif test $ac_cv_prog_cc_g = yes; then +- if test "$GCC" = yes; then +- CFLAGS="-g -O2" +- else +- CFLAGS="-g" +- fi +-else +- if test "$GCC" = yes; then +- CFLAGS="-O2" +- else +- CFLAGS= +- fi +-fi +-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_prog_cc_stdc=no +-ac_save_CC=$CC +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +-#include +-#include +-#include +-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +-struct buf { int x; }; +-FILE * (*rcsopen) (struct buf *, struct stat *, int); +-static char *e (p, i) +- char **p; +- int i; +-{ +- return p[i]; +-} +-static char *f (char * (*g) (char **, int), char **p, ...) +-{ +- char *s; +- va_list v; +- va_start (v,p); +- s = g (p, va_arg (v,int)); +- va_end (v); +- return s; +-} +-int test (int i, double x); +-struct s1 {int (*f) (int a);}; +-struct s2 {int (*f) (double a);}; +-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +-int argc; +-char **argv; +-int +-main () +-{ +-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; +- ; +- return 0; +-} +-_ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +-do +- CC="$ac_save_CC $ac_arg" +- rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext +-done +-rm -f conftest.$ac_ext conftest.$ac_objext +-CC=$ac_save_CC +- +-fi +- +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:$LINENO: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; +- *) +- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; +-esac +- +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. +-cat >conftest.$ac_ext <<_ACEOF +-@%:@ifndef __cplusplus +- choke me +-@%:@endif +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- ''\ +- '#include ' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-@%:@include +-$ac_declaration +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-continue +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_declaration +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h +-fi +- +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +-depcc="$CC" am_compiler_list= +- +-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +- # We make a subdir and do the tests there. Otherwise we can end up +- # making bogus files that we don't know about and never remove. For +- # instance it was reported that on HP-UX the gcc test will end up +- # making a dummy file named `D' -- because `-MD' means `put the output +- # in D'. +- mkdir conftest.dir +- # Copy depcomp to subdir because otherwise we won't find it if we're +- # using a relative directory. +- cp "$am_depcomp" conftest.dir +- cd conftest.dir +- +- am_cv_CC_dependencies_compiler_type=none +- if test "$am_compiler_list" = ""; then +- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` +- fi +- for depmode in $am_compiler_list; do +- # We need to recreate these files for each test, as the compiler may +- # overwrite some of them when testing with obscure command lines. +- # This happens at least with the AIX C compiler. +- echo '#include "conftest.h"' > conftest.c +- echo 'int i;' > conftest.h +- echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf +- +- case $depmode in +- nosideeffect) +- # after this tag, mechanisms are not by side-effect, so they'll +- # only be used when explicitly requested +- if test "x$enable_dependency_tracking" = xyes; then +- continue +- else +- break +- fi +- ;; +- none) break ;; +- esac +- # We check with `-c' and `-o' for the sake of the "dashmstdout" +- # mode. It turns out that the SunPro C++ compiler does not properly +- # handle `-M -o', and we need to detect this. +- if depmode=$depmode \ +- source=conftest.c object=conftest.o \ +- depfile=conftest.Po tmpdepfile=conftest.TPo \ +- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && +- grep conftest.h conftest.Po > /dev/null 2>&1 && +- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- am_cv_CC_dependencies_compiler_type=$depmode +- break +- fi +- done +- +- cd .. +- rm -rf conftest.dir +-else +- am_cv_CC_dependencies_compiler_type=none +-fi +- +-fi +-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type +- +- +-# Find the correct PATH separator. Usually this is `:', but +-# DJGPP uses `;' like DOS. +-if test "X${PATH_SEPARATOR+set}" != Xset; then +- UNAME=${UNAME-`uname 2>/dev/null`} +- case X$UNAME in +- *-DOS) lt_cv_sys_path_separator=';' ;; +- *) lt_cv_sys_path_separator=':' ;; +- esac +- PATH_SEPARATOR=$lt_cv_sys_path_separator +-fi +- +- +-# Check whether --with-gnu-ld or --without-gnu-ld was given. +-if test "${with_gnu_ld+set}" = set; then +- withval="$with_gnu_ld" +- test "$withval" = no || with_gnu_ld=yes +-else +- with_gnu_ld=no +-fi; +-ac_prog=ld +-if test "$GCC" = yes; then +- # Check if gcc -print-prog-name=ld gives a path. +- echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [\\/]* | [A-Za-z]:[\\/]*) +- re_direlt='/[^/][^/]*/\.\./' +- # Canonicalize the path of ld +- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` +- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD="$ac_prog" +- ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown +- ;; +- esac +-elif test "$with_gnu_ld" = yes; then +- echo "$as_me:$LINENO: checking for GNU ld" >&5 +-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +-else +- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +-fi +-if test "${lt_cv_path_LD+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -z "$LD"; then +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH; do +- test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +- lt_cv_path_LD="$ac_dir/$ac_prog" +- # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some GNU ld's only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then +- test "$with_gnu_ld" != no && break +- else +- test "$with_gnu_ld" != yes && break +- fi +- fi +- done +- IFS="$ac_save_ifs" +-else +- lt_cv_path_LD="$LD" # Let the user override the test with a path. +-fi +-fi +- +-LD="$lt_cv_path_LD" +-if test -n "$LD"; then +- echo "$as_me:$LINENO: result: $LD" >&5 +-echo "${ECHO_T}$LD" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} +- { (exit 1); exit 1; }; } +-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +-if test "${lt_cv_prog_gnu_ld+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- # I'd rather use --version here, but apparently some GNU ld's only accept -v. +-if $LD -v 2>&1 &5; then +- lt_cv_prog_gnu_ld=yes +-else +- lt_cv_prog_gnu_ld=no +-fi +-fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +-with_gnu_ld=$lt_cv_prog_gnu_ld +- +- +-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +-if test "${lt_cv_ld_reload_flag+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_cv_ld_reload_flag='-r' +-fi +-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +-reload_flag=$lt_cv_ld_reload_flag +-test -n "$reload_flag" && reload_flag=" $reload_flag" +- +-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +-if test "${lt_cv_path_NM+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$NM"; then +- # Let the user override the test. +- lt_cv_path_NM="$NM" +-else +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do +- test -z "$ac_dir" && ac_dir=. +- tmp_nm=$ac_dir/${ac_tool_prefix}nm +- if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then +- # Check to see if the nm accepts a BSD-compat flag. +- # Adding the `sed 1q' prevents false positives on HP-UX, which says: +- # nm: unknown option "B" ignored +- # Tru64's nm complains that /dev/null is an invalid object file +- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then +- lt_cv_path_NM="$tmp_nm -B" +- break +- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then +- lt_cv_path_NM="$tmp_nm -p" +- break +- else +- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but +- continue # so that we can try to find one that supports BSD flags +- fi +- fi +- done +- IFS="$ac_save_ifs" +- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +-fi +-fi +- +-NM="$lt_cv_path_NM" +-echo "$as_me:$LINENO: result: $NM" >&5 +-echo "${ECHO_T}$NM" >&6 +- +-echo "$as_me:$LINENO: checking whether ln -s works" >&5 +-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +-LN_S=$as_ln_s +-if test "$LN_S" = "ln -s"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +-else +- echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +-echo "${ECHO_T}no, using $LN_S" >&6 +-fi +- +-echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 +-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 +-if test "${lt_cv_deplibs_check_method+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_cv_file_magic_cmd='$MAGIC_CMD' +-lt_cv_file_magic_test_file= +-lt_cv_deplibs_check_method='unknown' +-# Need to set the preceding variable on all platforms that support +-# interlibrary dependencies. +-# 'none' -- dependencies not supported. +-# `unknown' -- same as none, but documents that we really don't know. +-# 'pass_all' -- all dependencies passed with no checks. +-# 'test_compile' -- check by making test program. +-# 'file_magic [[regex]]' -- check by looking for files in library path +-# which responds to the $file_magic_cmd with a given egrep regex. +-# If you have `file' or equivalent on your system and you're not sure +-# whether `pass_all' will *always* work, you probably want this one. +- +-case $host_os in +-aix4* | aix5*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-beos*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-bsdi4*) +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' +- lt_cv_file_magic_cmd='/usr/bin/file -L' +- lt_cv_file_magic_test_file=/shlib/libc.so +- ;; +- +-cygwin* | mingw* | pw32*) +- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' +- lt_cv_file_magic_cmd='$OBJDUMP -f' +- ;; +- +-darwin* | rhapsody*) +- lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' +- lt_cv_file_magic_cmd='/usr/bin/file -L' +- case "$host_os" in +- rhapsody* | darwin1.[012]) +- lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System' +- ;; +- *) # Darwin 1.3 on +- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' +- ;; +- esac +- ;; +- +-freebsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- case $host_cpu in +- i*86 ) +- # Not sure whether the presence of OpenBSD here was a mistake. +- # Let's accept both of them until this is cleared up. +- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +- ;; +- esac +- else +- lt_cv_deplibs_check_method=pass_all +- fi +- ;; +- +-gnu*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-hpux10.20*|hpux11*) +- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libc.sl +- ;; +- +-irix5* | irix6*) +- case $host_os in +- irix5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" +- ;; +- *) +- case $LD in +- *-32|*"-32 ") libmagic=32-bit;; +- *-n32|*"-n32 ") libmagic=N32;; +- *-64|*"-64 ") libmagic=64-bit;; +- *) libmagic=never-match;; +- esac +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" +- ;; +- esac +- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-# This must be Linux ELF. +-linux-gnu*) +- case $host_cpu in +- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; +- esac +- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` +- ;; +- +-netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' +- fi +- ;; +- +-newos6*) +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libnls.so +- ;; +- +-openbsd*) +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' +- else +- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' +- fi +- ;; +- +-osf3* | osf4* | osf5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' +- lt_cv_file_magic_test_file=/shlib/libc.so +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sco3.2v5*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-solaris*) +- lt_cv_deplibs_check_method=pass_all +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- +-sysv5uw[78]* | sysv4*uw2*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- case $host_vendor in +- motorola) +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` +- ;; +- ncr) +- lt_cv_deplibs_check_method=pass_all +- ;; +- sequent) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' +- ;; +- sni) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- esac +- ;; +-esac +- +-fi +-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +-file_magic_cmd=$lt_cv_file_magic_cmd +-deplibs_check_method=$lt_cv_deplibs_check_method +- +- +- +- +- +- +- +-# Check for command to grab the raw symbol name followed by C symbol from nm. +-echo "$as_me:$LINENO: checking command to parse $NM output" >&5 +-echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 +-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +-# These are sane defaults that work on at least a few old systems. +-# [They come from Ultrix. What could be older than Ultrix?!! ;)] +- +-# Character class describing NM global symbol codes. +-symcode='[BCDEGRST]' +- +-# Regexp to match symbols that can be accessed directly from C. +-sympat='\([_A-Za-z][_A-Za-z0-9]*\)' +- +-# Transform the above into a raw symbol and a C symbol. +-symxfrm='\1 \2\3 \3' +- +-# Transform an extracted symbol line into a proper C declaration +-lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" +- +-# Transform an extracted symbol line into symbol name and symbol address +-lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- +-# Define system-specific variables. +-case $host_os in +-aix*) +- symcode='[BCDT]' +- ;; +-cygwin* | mingw* | pw32*) +- symcode='[ABCDGISTW]' +- ;; +-hpux*) # Its linker distinguishes data from code symbols +- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- ;; +-irix*) +- symcode='[BCDEGRST]' +- ;; +-solaris* | sysv5*) +- symcode='[BDT]' +- ;; +-sysv4) +- symcode='[DFNSTU]' +- ;; +-esac +- +-# Handle CRLF in mingw tool chain +-opt_cr= +-case $host_os in +-mingw*) +- opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp +- ;; +-esac +- +-# If we're using GNU nm, then use its standard symbol codes. +-if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then +- symcode='[ABCDGISTW]' +-fi +- +-# Try without a prefix undercore, then with it. +-for ac_symprfx in "" "_"; do +- +- # Write the raw and C identifiers. +-lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" +- +- # Check to see that the pipe works correctly. +- pipe_works=no +- rm -f conftest* +- cat > conftest.$ac_ext <&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- # Now try to grab the symbols. +- nlist=conftest.nm +- if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 +- (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s "$nlist"; then +- # Try sorting and uniquifying the output. +- if sort "$nlist" | uniq > "$nlist"T; then +- mv -f "$nlist"T "$nlist" +- else +- rm -f "$nlist"T +- fi +- +- # Make sure that we snagged all the symbols we need. +- if egrep ' nm_test_var$' "$nlist" >/dev/null; then +- if egrep ' nm_test_func$' "$nlist" >/dev/null; then +- cat < conftest.$ac_ext +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-EOF +- # Now generate the symbol file. +- eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' +- +- cat <> conftest.$ac_ext +-#if defined (__STDC__) && __STDC__ +-# define lt_ptr void * +-#else +-# define lt_ptr char * +-# define const +-#endif +- +-/* The mapping between symbol names and symbols. */ +-const struct { +- const char *name; +- lt_ptr address; +-} +-lt_preloaded_symbols[] = +-{ +-EOF +- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext +- cat <<\EOF >> conftest.$ac_ext +- {0, (lt_ptr) 0} +-}; +- +-#ifdef __cplusplus +-} +-#endif +-EOF +- # Now try linking the two files. +- mv conftest.$ac_objext conftstm.$ac_objext +- save_LIBS="$LIBS" +- save_CFLAGS="$CFLAGS" +- LIBS="conftstm.$ac_objext" +- CFLAGS="$CFLAGS$no_builtin_flag" +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest; then +- pipe_works=yes +- fi +- LIBS="$save_LIBS" +- CFLAGS="$save_CFLAGS" +- else +- echo "cannot find nm_test_func in $nlist" >&5 +- fi +- else +- echo "cannot find nm_test_var in $nlist" >&5 +- fi +- else +- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 +- fi +- else +- echo "$progname: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- fi +- rm -f conftest* conftst* +- +- # Do not use the global_symbol_pipe unless it works. +- if test "$pipe_works" = yes; then +- break +- else +- lt_cv_sys_global_symbol_pipe= +- fi +-done +- +-fi +- +-global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +-if test -z "$lt_cv_sys_global_symbol_pipe"; then +- global_symbol_to_cdecl= +- global_symbol_to_c_name_address= +-else +- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" +- global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +-fi +-if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +-then +- echo "$as_me:$LINENO: result: failed" >&5 +-echo "${ECHO_T}failed" >&6 +-else +- echo "$as_me:$LINENO: result: ok" >&5 +-echo "${ECHO_T}ok" >&6 +-fi +- +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +-# On Suns, sometimes $CPP names a directory. +-if test -n "$CPP" && test -d "$CPP"; then +- CPP= +-fi +-if test -z "$CPP"; then +- if test "${ac_cv_prog_CPP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- # Double quotes because CPP needs to be expanded +- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" +- do +- ac_preproc_ok=false +-for ac_c_preproc_warn_flag in '' yes +-do +- # Use a header file that comes with gcc, so configuring glibc +- # with a fresh cross-compiler works. +- # On the NeXT, cc -E runs the code through the compiler's parser, +- # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-@%:@include +- Syntax error +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- : +-else +- echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- # Broken: fails on valid input. +-continue +-fi +-rm -f conftest.err conftest.$ac_ext +- +- # OK, works on sane cases. Now check whether non-existent headers +- # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-@%:@include +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- # Broken: success on invalid input. +-continue +-else +- echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- # Passes both tests. +-ac_preproc_ok=: +-break +-fi +-rm -f conftest.err conftest.$ac_ext +- +-done +-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then +- break +-fi +- +- done +- ac_cv_prog_CPP=$CPP +- +-fi +- CPP=$ac_cv_prog_CPP +-else +- ac_cv_prog_CPP=$CPP +-fi +-echo "$as_me:$LINENO: result: $CPP" >&5 +-echo "${ECHO_T}$CPP" >&6 +-ac_preproc_ok=false +-for ac_c_preproc_warn_flag in '' yes +-do +- # Use a header file that comes with gcc, so configuring glibc +- # with a fresh cross-compiler works. +- # On the NeXT, cc -E runs the code through the compiler's parser, +- # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-@%:@include +- Syntax error +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- : +-else +- echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- # Broken: fails on valid input. +-continue +-fi +-rm -f conftest.err conftest.$ac_ext +- +- # OK, works on sane cases. Now check whether non-existent headers +- # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-@%:@include +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- # Broken: success on invalid input. +-continue +-else +- echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- # Passes both tests. +-ac_preproc_ok=: +-break +-fi +-rm -f conftest.err conftest.$ac_ext +- +-done +-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then +- : +-else +- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 +-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +- +-echo "$as_me:$LINENO: checking for egrep" >&5 +-echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +-if test "${ac_cv_prog_egrep+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if echo a | (grep -E '(a|b)') >/dev/null 2>&1 +- then ac_cv_prog_egrep='grep -E' +- else ac_cv_prog_egrep='egrep' +- fi +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +-echo "${ECHO_T}$ac_cv_prog_egrep" >&6 +- EGREP=$ac_cv_prog_egrep +- +- +-echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +-if test "${ac_cv_header_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +-#include +-#include +-#include +- +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_cv_header_stdc=yes +-else +- echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- ac_cv_header_stdc=no +-fi +-rm -f conftest.err conftest.$ac_ext +- +-if test $ac_cv_header_stdc = yes; then +- # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "memchr" >/dev/null 2>&1; then +- : +-else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* +- +-fi +- +-if test $ac_cv_header_stdc = yes; then +- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "free" >/dev/null 2>&1; then +- : +-else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* +- +-fi +- +-if test $ac_cv_header_stdc = yes; then +- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +- if test "$cross_compiling" = yes; then +- : +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-#include +-#if ((' ' & 0x0FF) == 0x020) +-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +-#else +-# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ +- || ('j' <= (c) && (c) <= 'r') \ +- || ('s' <= (c) && (c) <= 'z')) +-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +-#endif +- +-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +-int +-main () +-{ +- int i; +- for (i = 0; i < 256; i++) +- if (XOR (islower (i), ISLOWER (i)) +- || toupper (i) != TOUPPER (i)) +- exit(2); +- exit (0); +-} +-_ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-( exit $ac_status ) +-ac_cv_header_stdc=no +-fi +-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi +-fi +-fi +-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +-echo "${ECHO_T}$ac_cv_header_stdc" >&6 +-if test $ac_cv_header_stdc = yes; then +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define STDC_HEADERS 1 +-_ACEOF +- +-fi +- +-# On IRIX 5.3, sys/types and inttypes.h are conflicting. +- +- +- +- +- +- +- +- +- +-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ +- inttypes.h stdint.h unistd.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +- +-@%:@include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- eval "$as_ac_Header=yes" +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-eval "$as_ac_Header=no" +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF +- +-fi +- +-done +- +- +- +-for ac_header in dlfcn.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +-else +- # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-$ac_includes_default +-@%:@include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_header_compiler=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_header_compiler=no +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 +- +-# Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-@%:@include <$ac_header> +-_ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_header_preproc=yes +-else +- echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- ac_header_preproc=no +-fi +-rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc in +- yes:no ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +- no:yes ) +- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +-esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- eval "$as_ac_Header=$ac_header_preproc" +-fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +- +-fi +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <<_ACEOF +-@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF +- +-fi +- +-done +- +- +- +- +- +-# Only perform the check for file, if the check method requires it +-case $deplibs_check_method in +-file_magic*) +- if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- case $MAGIC_CMD in +- /*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +- ?:/*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. +- ;; +- *) +- ac_save_MAGIC_CMD="$MAGIC_CMD" +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +- ac_dummy="/usr/bin:$PATH" +- for ac_dir in $ac_dummy; do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/${ac_tool_prefix}file; then +- lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- egrep "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 +- +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org +- +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$ac_save_ifs" +- MAGIC_CMD="$ac_save_MAGIC_CMD" +- ;; +-esac +-fi +- +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-if test -z "$lt_cv_path_MAGIC_CMD"; then +- if test -n "$ac_tool_prefix"; then +- echo "$as_me:$LINENO: checking for file" >&5 +-echo $ECHO_N "checking for file... $ECHO_C" >&6 +-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- case $MAGIC_CMD in +- /*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +- ?:/*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. +- ;; +- *) +- ac_save_MAGIC_CMD="$MAGIC_CMD" +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +- ac_dummy="/usr/bin:$PATH" +- for ac_dir in $ac_dummy; do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/file; then +- lt_cv_path_MAGIC_CMD="$ac_dir/file" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- egrep "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 +- +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org +- +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$ac_save_ifs" +- MAGIC_CMD="$ac_save_MAGIC_CMD" +- ;; +-esac +-fi +- +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- else +- MAGIC_CMD=: +- fi +-fi +- +- fi +- ;; +-esac +- +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +-set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$RANLIB"; then +- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-RANLIB=$ac_cv_prog_RANLIB +-if test -n "$RANLIB"; then +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_RANLIB"; then +- ac_ct_RANLIB=$RANLIB +- # Extract the first word of "ranlib", so it can be a program name with args. +-set dummy ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_RANLIB"; then +- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_RANLIB="ranlib" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +-fi +-fi +-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +-if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- RANLIB=$ac_ct_RANLIB +-else +- RANLIB="$ac_cv_prog_RANLIB" +-fi +- +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +-set dummy ${ac_tool_prefix}strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_STRIP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$STRIP"; then +- ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_STRIP="${ac_tool_prefix}strip" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-STRIP=$ac_cv_prog_STRIP +-if test -n "$STRIP"; then +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_STRIP"; then +- ac_ct_STRIP=$STRIP +- # Extract the first word of "strip", so it can be a program name with args. +-set dummy strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_STRIP"; then +- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_STRIP="strip" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +-fi +-fi +-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +-if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +- STRIP=$ac_ct_STRIP +-else +- STRIP="$ac_cv_prog_STRIP" +-fi +- +- +-enable_dlopen=no +-enable_win32_dll=no +- +-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +-if test "${enable_libtool_lock+set}" = set; then +- enableval="$enable_libtool_lock" +- +-fi; +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +- +-# Some flags need to be propagated to the compiler or linker for good +-# libtool support. +-case $host in +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '#line __oline__ "configure"' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -32" +- ;; +- *N32*) +- LD="${LD-ld} -n32" +- ;; +- *64-bit*) +- LD="${LD-ld} -64" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- +-*-*-sco3.2v5*) +- # On SCO OpenServer 5, we need -belf to get full-featured binaries. +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -belf" +- echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +-if test "${lt_cv_cc_needs_belf+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +- +- ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- lt_cv_cc_needs_belf=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-lt_cv_cc_needs_belf=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +- ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +-fi +-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 +- if test x"$lt_cv_cc_needs_belf" != x"yes"; then +- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +- CFLAGS="$SAVE_CFLAGS" +- fi +- ;; +- +- +-esac +- +-# Sed substitution that helps us do robust quoting. It backslashifies +-# metacharacters that are still active within double-quoted strings. +-Xsed='sed -e s/^X//' +-sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' +- +-# Same as above, but do not quote variable references. +-double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' +- +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +- +-# Constants: +-rm="rm -f" +- +-# Global variables: +-default_ofile=libtool +-can_build_shared=yes +- +-# All known linkers require a `.a' archive for static linking (except M$VC, +-# which needs '.lib'). +-libext=a +-ltmain="$ac_aux_dir/ltmain.sh" +-ofile="$default_ofile" +-with_gnu_ld="$lt_cv_prog_gnu_ld" +-need_locks="$enable_libtool_lock" +- +-old_CC="$CC" +-old_CFLAGS="$CFLAGS" +- +-# Set sane defaults for various variables +-test -z "$AR" && AR=ar +-test -z "$AR_FLAGS" && AR_FLAGS=cru +-test -z "$AS" && AS=as +-test -z "$CC" && CC=cc +-test -z "$DLLTOOL" && DLLTOOL=dlltool +-test -z "$LD" && LD=ld +-test -z "$LN_S" && LN_S="ln -s" +-test -z "$MAGIC_CMD" && MAGIC_CMD=file +-test -z "$NM" && NM=nm +-test -z "$OBJDUMP" && OBJDUMP=objdump +-test -z "$RANLIB" && RANLIB=: +-test -z "$STRIP" && STRIP=: +-test -z "$ac_objext" && ac_objext=o +- +-if test x"$host" != x"$build"; then +- ac_tool_prefix=${host_alias}- +-else +- ac_tool_prefix= +-fi +- +-# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +-case $host_os in +-linux-gnu*) ;; +-linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +-esac +- +-case $host_os in +-aix3*) +- # AIX sometimes has problems with the GCC collect2 program. For some +- # reason, if we set the COLLECT_NAMES environment variable, the problems +- # vanish in a puff of smoke. +- if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +- fi +- ;; +-esac +- +-# Determine commands to create old-style static archives. +-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +-old_postinstall_cmds='chmod 644 $oldlib' +-old_postuninstall_cmds= +- +-if test -n "$RANLIB"; then +- case $host_os in +- openbsd*) +- old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" +- ;; +- *) +- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +- ;; +- esac +- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +-fi +- +-# Allow CC to be a program name with arguments. +-set dummy $CC +-compiler="$2" +- +-echo "$as_me:$LINENO: checking for objdir" >&5 +-echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +-rm -f .libs 2>/dev/null +-mkdir .libs 2>/dev/null +-if test -d .libs; then +- objdir=.libs +-else +- # MS-DOS does not allow filenames that begin with a dot. +- objdir=_libs +-fi +-rmdir .libs 2>/dev/null +-echo "$as_me:$LINENO: result: $objdir" >&5 +-echo "${ECHO_T}$objdir" >&6 +- +- +- +-# Check whether --with-pic or --without-pic was given. +-if test "${with_pic+set}" = set; then +- withval="$with_pic" +- pic_mode="$withval" +-else +- pic_mode=default +-fi; +-test -z "$pic_mode" && pic_mode=default +- +-# We assume here that the value for lt_cv_prog_cc_pic will not be cached +-# in isolation, and that seeing it set (from the cache) indicates that +-# the associated values are set (in the cache) correctly too. +-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +-if test "${lt_cv_prog_cc_pic+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_cv_prog_cc_pic= +- lt_cv_prog_cc_shlib= +- lt_cv_prog_cc_wl= +- lt_cv_prog_cc_static= +- lt_cv_prog_cc_no_builtin= +- lt_cv_prog_cc_can_build_shared=$can_build_shared +- +- if test "$GCC" = yes; then +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-static' +- +- case $host_os in +- aix*) +- # Below there is a dirty hack to force normal static linking with -ldl +- # The problem is because libdl dynamically linked with both libc and +- # libC (AIX C++ library), which obviously doesn't included in libraries +- # list by gcc. This cause undefined symbols with -static flags. +- # This hack allows C programs to be linked with "-static -ldl", but +- # not sure about C++ programs. +- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" +- ;; +- amigaos*) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' +- ;; +- beos* | irix5* | irix6* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- lt_cv_prog_cc_pic='-fno-common' +- ;; +- cygwin* | mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; +- sysv4*MP*) +- if test -d /usr/nec; then +- lt_cv_prog_cc_pic=-Kconform_pic +- fi +- ;; +- *) +- lt_cv_prog_cc_pic='-fPIC' +- ;; +- esac +- else +- # PORTME Check for PIC flags for the system compiler. +- case $host_os in +- aix3* | aix4* | aix5*) +- lt_cv_prog_cc_wl='-Wl,' +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_cv_prog_cc_static='-Bstatic' +- else +- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- +- hpux9* | hpux10* | hpux11*) +- # Is there a better lt_cv_prog_cc_static that works with the bundled CC? +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" +- lt_cv_prog_cc_pic='+Z' +- ;; +- +- irix5* | irix6*) +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- # PIC (with -KPIC) is the default. +- ;; +- +- cygwin* | mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; +- +- newsos6) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- ;; +- +- osf3* | osf4* | osf5*) +- # All OSF/1 code is PIC. +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- ;; +- +- sco3.2v5*) +- lt_cv_prog_cc_pic='-Kpic' +- lt_cv_prog_cc_static='-dn' +- lt_cv_prog_cc_shlib='-belf' +- ;; +- +- solaris*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Wl,' +- ;; +- +- sunos4*) +- lt_cv_prog_cc_pic='-PIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Qoption ld ' +- ;; +- +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- if test "x$host_vendor" = xsni; then +- lt_cv_prog_cc_wl='-LD' +- else +- lt_cv_prog_cc_wl='-Wl,' +- fi +- ;; +- +- uts4*) +- lt_cv_prog_cc_pic='-pic' +- lt_cv_prog_cc_static='-Bstatic' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec ;then +- lt_cv_prog_cc_pic='-Kconform_pic' +- lt_cv_prog_cc_static='-Bstatic' +- fi +- ;; +- +- *) +- lt_cv_prog_cc_can_build_shared=no +- ;; +- esac +- fi +- +-fi +- +-if test -z "$lt_cv_prog_cc_pic"; then +- echo "$as_me:$LINENO: result: none" >&5 +-echo "${ECHO_T}none" >&6 +-else +- echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5 +-echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 +- +- # Check to make sure the pic_flag actually works. +- echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 +-echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 +- if test "${lt_cv_prog_cc_pic_works+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- case $host_os in +- hpux9* | hpux10* | hpux11*) +- # On HP-UX, both CC and GCC only warn that PIC is supported... then +- # they create non-PIC objects. So, if there were any warnings, we +- # assume that PIC is not supported. +- if test -s conftest.err; then +- lt_cv_prog_cc_pic_works=no +- else +- lt_cv_prog_cc_pic_works=yes +- fi +- ;; +- *) +- lt_cv_prog_cc_pic_works=yes +- ;; +- esac +- +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +- lt_cv_prog_cc_pic_works=no +- +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- CFLAGS="$save_CFLAGS" +- +-fi +- +- +- if test "X$lt_cv_prog_cc_pic_works" = Xno; then +- lt_cv_prog_cc_pic= +- lt_cv_prog_cc_can_build_shared=no +- else +- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" +- fi +- +- echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5 +-echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 +-fi +- +-# Check for any special shared library compilation flags. +-if test -n "$lt_cv_prog_cc_shlib"; then +- { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 +-echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} +- if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : +- else +- { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +-echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} +- lt_cv_prog_cc_can_build_shared=no +- fi +-fi +- +-echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 +-echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 +-if test "${lt_cv_prog_cc_static_works+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_cv_prog_cc_static_works=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- lt_cv_prog_cc_static_works=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +- LDFLAGS="$save_LDFLAGS" +- +-fi +- +- +-# Belt *and* braces to stop my trousers falling down: +-test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +-echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5 +-echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 +- +-pic_flag="$lt_cv_prog_cc_pic" +-special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +-wl="$lt_cv_prog_cc_wl" +-link_static_flag="$lt_cv_prog_cc_static" +-no_builtin_flag="$lt_cv_prog_cc_no_builtin" +-can_build_shared="$lt_cv_prog_cc_can_build_shared" +- +- +-# Check to see if options -o and -c are simultaneously supported by compiler +-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +-if test "${lt_cv_compiler_c_o+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +-$rm -r conftest 2>/dev/null +-mkdir conftest +-cd conftest +-echo "int some_variable = 0;" > conftest.$ac_ext +-mkdir out +-# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +-# that will create temporary files in the current directory regardless of +-# the output directory. Thus, making CWD read-only will cause this test +-# to fail, enabling locking or at least warning the user not to do parallel +-# builds. +-chmod -w . +-save_CFLAGS="$CFLAGS" +-CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +-compiler_c_o=no +-if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s out/conftest.err; then +- lt_cv_compiler_c_o=no +- else +- lt_cv_compiler_c_o=yes +- fi +-else +- # Append any errors to the config.log. +- cat out/conftest.err 1>&5 +- lt_cv_compiler_c_o=no +-fi +-CFLAGS="$save_CFLAGS" +-chmod u+w . +-$rm conftest* out/* +-rmdir out +-cd .. +-rmdir conftest +-$rm -r conftest 2>/dev/null +- +-fi +- +-compiler_c_o=$lt_cv_compiler_c_o +-echo "$as_me:$LINENO: result: $compiler_c_o" >&5 +-echo "${ECHO_T}$compiler_c_o" >&6 +- +-if test x"$compiler_c_o" = x"yes"; then +- # Check to see if we can write to a .lo +- echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 +- if test "${lt_cv_compiler_o_lo+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +- lt_cv_compiler_o_lo=no +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -c -o conftest.lo" +- save_objext="$ac_objext" +- ac_objext=lo +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-int +-main () +-{ +-int some_variable = 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- lt_cv_compiler_o_lo=no +- else +- lt_cv_compiler_o_lo=yes +- fi +- +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- ac_objext="$save_objext" +- CFLAGS="$save_CFLAGS" +- +-fi +- +- compiler_o_lo=$lt_cv_compiler_o_lo +- echo "$as_me:$LINENO: result: $compiler_o_lo" >&5 +-echo "${ECHO_T}$compiler_o_lo" >&6 +-else +- compiler_o_lo=no +-fi +- +-# Check to see if we can do hard links to lock some files if needed +-hard_links="nottested" +-if test "$compiler_c_o" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 +- hard_links=yes +- $rm conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- echo "$as_me:$LINENO: result: $hard_links" >&5 +-echo "${ECHO_T}$hard_links" >&6 +- if test "$hard_links" = no; then +- { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} +- need_locks=warn +- fi +-else +- need_locks=no +-fi +- +-if test "$GCC" = yes; then +- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler +- echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +- echo "int some_variable = 0;" > conftest.$ac_ext +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" +- compiler_rtti_exceptions=no +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-int +-main () +-{ +-int some_variable = 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- compiler_rtti_exceptions=no +- else +- compiler_rtti_exceptions=yes +- fi +- +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- CFLAGS="$save_CFLAGS" +- echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5 +-echo "${ECHO_T}$compiler_rtti_exceptions" >&6 +- +- if test "$compiler_rtti_exceptions" = "yes"; then +- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' +- else +- no_builtin_flag=' -fno-builtin' +- fi +-fi +- +-# See if the linker supports building shared libraries. +-echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 +- +-allow_undefined_flag= +-no_undefined_flag= +-need_lib_prefix=unknown +-need_version=unknown +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-archive_cmds= +-archive_expsym_cmds= +-old_archive_from_new_cmds= +-old_archive_from_expsyms_cmds= +-export_dynamic_flag_spec= +-whole_archive_flag_spec= +-thread_safe_flag_spec= +-hardcode_into_libs=no +-hardcode_libdir_flag_spec= +-hardcode_libdir_separator= +-hardcode_direct=no +-hardcode_minus_L=no +-hardcode_shlibpath_var=unsupported +-runpath_var= +-link_all_deplibs=unknown +-always_export_symbols=no +-export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +-# include_expsyms should be a list of space-separated symbols to be *always* +-# included in the symbol list +-include_expsyms= +-# exclude_expsyms can be an egrep regular expression of symbols to exclude +-# it will be wrapped by ` (' and `)$', so one must not match beginning or +-# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +-# as well as any symbol that contains `d'. +-exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +-# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +-# platforms (ab)use it in PIC code, but their linkers get confused if +-# the symbol is explicitly referenced. Since portable code cannot +-# rely on this symbol name, it's probably fine to never include it in +-# preloaded symbol tables. +-extract_expsyms_cmds= +- +-case $host_os in +-cygwin* | mingw* | pw32*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- if test "$GCC" != yes; then +- with_gnu_ld=no +- fi +- ;; +-openbsd*) +- with_gnu_ld=no +- ;; +-esac +- +-ld_shlibs=yes +-if test "$with_gnu_ld" = yes; then +- # If archive_cmds runs LD, not CC, wlarc should be empty +- wlarc='${wl}' +- +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix3* | aix4* | aix5*) +- # On AIX, the GNU linker is very broken +- # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. +- ld_shlibs=no +- cat <&2 +- +-*** Warning: the GNU linker, at least up to release 2.9.1, is reported +-*** to be unable to reliably create shared libraries on AIX. +-*** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to modify your PATH +-*** so that a non-GNU linker is found, and then restart. +- +-EOF +- ;; +- +- amigaos*) +- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- +- # Samuel A. Falvo II reports +- # that the semantics of dynamic libraries on AmigaOS, at least up +- # to version 4, is to share data among multiple programs linked +- # with the same dynamic library. Since this doesn't match the +- # behavior of shared libraries on other platforms, we can use +- # them. +- ld_shlibs=no +- ;; +- +- beos*) +- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- allow_undefined_flag=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- ld_shlibs=no +- fi +- ;; +- +- cygwin* | mingw* | pw32*) +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec='-L$libdir' +- allow_undefined_flag=unsupported +- always_export_symbols=yes +- +- extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ +- sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ +- test -f $output_objdir/impgen.exe || (cd $output_objdir && \ +- if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ +- else $CC -o impgen impgen.c ; fi)~ +- $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' +- +- old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' +- +- # cygwin and mingw dlls have different entry points and sets of symbols +- # to exclude. +- # FIXME: what about values for MSVC? +- dll_entry=__cygwin_dll_entry@12 +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ +- case $host_os in +- mingw*) +- # mingw values +- dll_entry=_DllMainCRTStartup@12 +- dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ +- ;; +- esac +- +- # mingw and cygwin differ, and it's simplest to just exclude the union +- # of the two symbol sets. +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 +- +- # recent cygwin and mingw systems supply a stub DllMain which the user +- # can override, but on older systems we have to supply one (in ltdll.c) +- if test "x$lt_cv_need_dllmain" = "xyes"; then +- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " +- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ +- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' +- else +- ltdll_obj= +- ltdll_cmds= +- fi +- +- # Extract the symbol export list from an `--export-all' def file, +- # then regenerate the def file from the symbol export list, so that +- # the compiled dll only exports the symbol export list. +- # Be careful not to strip the DATA tag left be newer dlltools. +- export_symbols_cmds="$ltdll_cmds"' +- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ +- sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' +- +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is. +- # If DATA tags from a recent dlltool are present, honour them! +- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname-def; +- else +- echo EXPORTS > $output_objdir/$soname-def; +- _lt_hint=1; +- cat $export_symbols | while read symbol; do +- set dummy \$symbol; +- case \$# in +- 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; +- *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; +- esac; +- _lt_hint=`expr 1 + \$_lt_hint`; +- done; +- fi~ +- '"$ltdll_cmds"' +- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ +- $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ +- $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' +- ;; +- +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= +- else +- archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- fi +- ;; +- +- solaris* | sysv5*) +- if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then +- ld_shlibs=no +- cat <&2 +- +-*** Warning: The releases 2.8.* of the GNU linker cannot reliably +-*** create shared libraries on Solaris systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.9.1 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-EOF +- elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- ld_shlibs=no +- fi +- ;; +- +- sunos4*) +- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- wlarc= +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; +- +- *) +- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- ld_shlibs=no +- fi +- ;; +- esac +- +- if test "$ld_shlibs" = yes; then +- runpath_var=LD_RUN_PATH +- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' +- export_dynamic_flag_spec='${wl}--export-dynamic' +- case $host_os in +- cygwin* | mingw* | pw32*) +- # dlltool doesn't understand --whole-archive et. al. +- whole_archive_flag_spec= +- ;; +- *) +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then +- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- whole_archive_flag_spec= +- fi +- ;; +- esac +- fi +-else +- # PORTME fill in a description of your system's linker (not GNU ld) +- case $host_os in +- aix3*) +- allow_undefined_flag=unsupported +- always_export_symbols=yes +- archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' +- # Note: this linker hardcodes the directories in LIBPATH if there +- # are no directories specified by -L. +- hardcode_minus_L=yes +- if test "$GCC" = yes && test -z "$link_static_flag"; then +- # Neither direct hardcoding nor static linking is supported with a +- # broken collect2. +- hardcode_direct=unsupported +- fi +- ;; +- +- aix4* | aix5*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- aix_use_runtimelinking=no +- +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[23]|aix4.[23].*|aix5*) +- for ld_flag in $LDFLAGS; do +- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +- aix_use_runtimelinking=yes +- break +- fi +- done +- esac +- +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi +- +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. +- +- hardcode_direct=yes +- archive_cmds='' +- hardcode_libdir_separator=':' +- if test "$GCC" = yes; then +- case $host_os in aix4.[012]|aix4.[012].*) +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && \ +- strings "$collect2name" | grep resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- hardcode_direct=yes +- else +- # We have old collect2 +- hardcode_direct=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- hardcode_minus_L=yes +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_libdir_separator= +- fi +- esac +- +- shared_flag='-shared' +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- shared_flag='${wl}-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi +- +- # It seems that -bexpall can do strange things, so it is better to +- # generate a list of symbols to export. +- always_export_symbols=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag='-berok' +- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' +- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' +- allow_undefined_flag="-z nodefs" +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" +- else +- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag='${wl}-berok' +- # This is a bit strange, but is similar to how AIX traditionally builds +- # it's shared libraries. +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' +- fi +- fi +- ;; +- +- amigaos*) +- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- # see comment about different semantics on the GNU ld section +- ld_shlibs=no +- ;; +- +- cygwin* | mingw* | pw32*) +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec=' ' +- allow_undefined_flag=unsupported +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # FIXME: Setting linknames here is a bad hack. +- archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' +- # The linker will automatically build a .lib file if we build a DLL. +- old_archive_from_new_cmds='true' +- # FIXME: Should let the user specify the lib program. +- old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' +- fix_srcfile_path='`cygpath -w "$srcfile"`' +- ;; +- +- darwin* | rhapsody*) +- case "$host_os" in +- rhapsody* | darwin1.[012]) +- allow_undefined_flag='-undefined suppress' +- ;; +- *) # Darwin 1.3 on +- allow_undefined_flag='-flat_namespace -undefined suppress' +- ;; +- esac +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' +- # We need to add '_' to the symbols in $export_symbols first +- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- whole_archive_flag_spec='-all_load $convenience' +- ;; +- +- freebsd1*) +- ld_shlibs=no +- ;; +- +- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +- # support. Future versions do this automatically, but an explicit c++rt0.o +- # does not break anything, and helps significantly (at the cost of a little +- # extra space). +- freebsd2.2*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; +- +- # Unfortunately, older versions of FreeBSD 2 do not have this feature. +- freebsd2*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=yes +- hardcode_shlibpath_var=no +- ;; +- +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd*) +- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; +- +- hpux9* | hpux10* | hpux11*) +- case $host_os in +- hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; +- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; +- esac +- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_direct=yes +- hardcode_minus_L=yes # Not in the search PATH, but as the default +- # location of the library. +- export_dynamic_flag_spec='${wl}-E' +- ;; +- +- irix5* | irix6*) +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- link_all_deplibs=yes +- ;; +- +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +- else +- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +- fi +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; +- +- newsos6) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_shlibpath_var=no +- ;; +- +- openbsd*) +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- export_dynamic_flag_spec='${wl}-E' +- else +- case "$host_os" in +- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- ;; +- *) +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- ;; +- +- os2*) +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- allow_undefined_flag=unsupported +- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +- old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +- ;; +- +- osf3*) +- if test "$GCC" = yes; then +- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- ;; +- +- osf4* | osf5*) # as osf3* with the addition of -msym flag +- if test "$GCC" = yes; then +- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- else +- allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ +- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' +- +- #Both c and cxx compiler support -rpath directly +- hardcode_libdir_flag_spec='-rpath $libdir' +- fi +- hardcode_libdir_separator=: +- ;; +- +- sco3.2v5*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- export_dynamic_flag_spec='${wl}-Bexport' +- ;; +- +- solaris*) +- # gcc --version < 3.0 without binutils cannot create self contained +- # shared libraries reliably, requiring libgcc.a to resolve some of +- # the object symbols generated in some cases. Libraries that use +- # assert need libgcc.a to resolve __eprintf, for example. Linking +- # a copy of libgcc.a into every shared library to guarantee resolving +- # such symbols causes other problems: According to Tim Van Holder +- # , C++ libraries end up with a separate +- # (to the application) exception stack for one thing. +- no_undefined_flag=' -z defs' +- if test "$GCC" = yes; then +- case `$CC --version 2>/dev/null` in +- [12].*) +- cat <&2 +- +-*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +-*** create self contained shared libraries on Solaris systems, without +-*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +-*** -no-undefined support, which will at least allow you to build shared +-*** libraries. However, you may find that when you link such libraries +-*** into an application without using GCC, you have to manually add +-*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +-*** upgrade to a newer version of GCC. Another option is to rebuild your +-*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. +- +-EOF +- no_undefined_flag= +- ;; +- esac +- fi +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_shlibpath_var=no +- case $host_os in +- solaris2.[0-5] | solaris2.[0-5].*) ;; +- *) # Supported since Solaris 2.6 (maybe 2.5.1?) +- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; +- esac +- link_all_deplibs=yes +- ;; +- +- sunos4*) +- if test "x$host_vendor" = xsequent; then +- # Use $CC to link under sequent, because it throws in some extra .o +- # files that make .init and .fini sections work. +- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +- fi +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_direct=yes +- hardcode_minus_L=yes +- hardcode_shlibpath_var=no +- ;; +- +- sysv4) +- if test "x$host_vendor" = xsno; then +- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes # is this really true??? +- else +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=no #Motorola manual says yes, but my tests say they lie +- fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var=no +- ;; +- +- sysv4.3*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- export_dynamic_flag_spec='-Bexport' +- ;; +- +- sysv5*) +- no_undefined_flag=' -z text' +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- hardcode_libdir_flag_spec= +- hardcode_shlibpath_var=no +- runpath_var='LD_RUN_PATH' +- ;; +- +- uts4*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; +- +- dgux*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec; then +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- ld_shlibs=yes +- fi +- ;; +- +- sysv4.2uw2*) +- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=no +- hardcode_shlibpath_var=no +- hardcode_runpath_var=yes +- runpath_var=LD_RUN_PATH +- ;; +- +- sysv5uw7* | unixware7*) +- no_undefined_flag='${wl}-z ${wl}text' +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var=no +- ;; +- +- *) +- ld_shlibs=no +- ;; +- esac +-fi +-echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +-echo "${ECHO_T}$ld_shlibs" >&6 +-test "$ld_shlibs" = no && can_build_shared=no +- +-# Check hardcoding attributes. +-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +-hardcode_action= +-if test -n "$hardcode_libdir_flag_spec" || \ +- test -n "$runpath_var"; then +- +- # We can hardcode non-existant directories. +- if test "$hardcode_direct" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$hardcode_shlibpath_var" != no && +- test "$hardcode_minus_L" != no; then +- # Linking always hardcodes the temporary library directory. +- hardcode_action=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- hardcode_action=immediate +- fi +-else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- hardcode_action=unsupported +-fi +-echo "$as_me:$LINENO: result: $hardcode_action" >&5 +-echo "${ECHO_T}$hardcode_action" >&6 +- +-striplib= +-old_striplib= +-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-reload_cmds='$LD$reload_flag -o $output$reload_objs' +-test -z "$deplibs_check_method" && deplibs_check_method=unknown +- +-# PORTME Fill in your ld.so characteristics +-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +- +-case $host_os in +-aix3*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix $libname.a' +- shlibpath_var=LIBPATH +- +- # AIX has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}.so$major' +- ;; +- +-aix4* | aix5*) +- version_type=linux +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- else +- # With GCC up to 2.95.x, collect2 would create an import file +- # for dependence libraries. The import file would start with +- # the line `#! .'. This would cause the generated library to +- # depend on `.', always an invalid library. This was fixed in +- # development snapshots of GCC prior to 3.0. +- case $host_os in +- aix4 | aix4.[01] | aix4.[01].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then +- : +- else +- can_build_shared=no +- fi +- ;; +- esac +- # AIX (on Power*) has no versioning support, so currently we can +- # not hardcode correct soname into executable. Probably we can +- # add versioning support to collect2, so additional links can +- # be useful in future. +- if test "$aix_use_runtimelinking" = yes; then +- # If using run time linking (on AIX 4.2 or later) use lib.so +- # instead of lib.a to let people know that these are not +- # typical AIX shared libraries. +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- else +- # We preserve .a as extension for shared libraries through AIX4.2 +- # and later when we are not doing run time linking. +- library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}.so$major' +- fi +- shlibpath_var=LIBPATH +- fi +- ;; +- +-amigaos*) +- library_names_spec='$libname.ixlibrary $libname.a' +- # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' +- ;; +- +-beos*) +- library_names_spec='${libname}.so' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; +- +-bsdi4*) +- version_type=linux +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" +- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- export_dynamic_flag_spec=-rdynamic +- # the default ld.so.conf also contains /usr/contrib/lib and +- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow +- # libtool to hard-code these into programs +- ;; +- +-cygwin* | mingw* | pw32*) +- version_type=windows +- need_version=no +- need_lib_prefix=no +- case $GCC,$host_os in +- yes,cygwin*) +- library_names_spec='$libname.dll.a' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' +- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog .libs/$dlname \$dldir/$dlname' +- postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $rm \$dlpath' +- ;; +- yes,mingw*) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` +- ;; +- yes,pw32*) +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' +- ;; +- *) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' +- ;; +- esac +- dynamic_linker='Win32 ld.exe' +- # FIXME: first we should search . and the directory the executable is in +- shlibpath_var=PATH +- ;; +- +-darwin* | rhapsody*) +- dynamic_linker="$host_os dyld" +- version_type=darwin +- need_lib_prefix=no +- need_version=no +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' +- soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- ;; +- +-freebsd1*) +- dynamic_linker=no +- ;; +- +-freebsd*) +- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' +- need_version=no +- need_lib_prefix=no +- ;; +- freebsd-*) +- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' +- need_version=yes +- ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2*) +- shlibpath_overrides_runpath=yes +- ;; +- *) +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- esac +- ;; +- +-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- ;; +- +-hpux9* | hpux10* | hpux11*) +- # Give a soname corresponding to the major version so that dld.sl refuses to +- # link against other versions. +- dynamic_linker="$host_os dld.sl" +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' +- soname_spec='${libname}${release}.sl$major' +- # HP-UX runs *really* slowly unless shared libraries are mode 555. +- postinstall_cmds='chmod 555 $lib' +- ;; +- +-irix5* | irix6*) +- version_type=irix +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' +- case $host_os in +- irix5*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; +- *) libsuff= shlibsuff= libmagic=never-match;; +- esac +- ;; +- esac +- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" +- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" +- ;; +- +-# No shared lib support for Linux oldld, aout, or coff. +-linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) +- dynamic_linker=no +- ;; +- +-# This must be Linux ELF. +-linux-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- # This implies no fast_install, which is unacceptable. +- # Some rework will be needed to allow for fast_install +- # before this can be enabled. +- hardcode_into_libs=yes +- +- # We used to test for /lib/ld.so.1 and disable shared libraries on +- # powerpc, because MkLinux only supported shared libraries with the +- # GNU dynamic linker. Since this was broken with cross compilers, +- # most powerpc-linux boxes support dynamic linking these days and +- # people can always --disable-shared, the test was removed, and we +- # assume the GNU/Linux dynamic linker is in use. +- dynamic_linker='GNU/Linux ld.so' +- ;; +- +-netbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' +- soname_spec='${libname}${release}.so$major' +- dynamic_linker='NetBSD ld.elf_so' +- fi +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- +-newsos6) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-openbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case "$host_os" in +- openbsd2.[89] | openbsd2.[89].*) +- shlibpath_overrides_runpath=no +- ;; +- *) +- shlibpath_overrides_runpath=yes +- ;; +- esac +- else +- shlibpath_overrides_runpath=yes +- fi +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-os2*) +- libname_spec='$name' +- need_lib_prefix=no +- library_names_spec='$libname.dll $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; +- +-osf3* | osf4* | osf5*) +- version_type=osf +- need_version=no +- soname_spec='${libname}${release}.so' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" +- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +- ;; +- +-sco3.2v5*) +- version_type=osf +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-solaris*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; +- +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; +- +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no +- ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' +- ;; +- esac +- ;; +- +-uts4*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-dgux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux +- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' +- soname_spec='$libname.so.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; +- +-*) +- dynamic_linker=no +- ;; +-esac +-echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +-echo "${ECHO_T}$dynamic_linker" >&6 +-test "$dynamic_linker" = no && can_build_shared=no +- +-# Report the final consequences. +-echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $can_build_shared" >&5 +-echo "${ECHO_T}$can_build_shared" >&6 +- +-echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +-test "$can_build_shared" = "no" && enable_shared=no +- +-# On AIX, shared libraries and static libraries use the same namespace, and +-# are all built from PIC. +-case "$host_os" in +-aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; +- +-aix4*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +-esac +-echo "$as_me:$LINENO: result: $enable_shared" >&5 +-echo "${ECHO_T}$enable_shared" >&6 +- +-echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +-# Make sure either enable_shared or enable_static is yes. +-test "$enable_shared" = yes || enable_static=yes +-echo "$as_me:$LINENO: result: $enable_static" >&5 +-echo "${ECHO_T}$enable_static" >&6 +- +-if test "$hardcode_action" = relink; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless +-fi +- +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi +- +-if test "x$enable_dlopen" != xyes; then +- enable_dlopen=unknown +- enable_dlopen_self=unknown +- enable_dlopen_self_static=unknown +-else +- lt_cv_dlopen=no +- lt_cv_dlopen_libs= +- +- case $host_os in +- beos*) +- lt_cv_dlopen="load_add_on" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ;; +- +- cygwin* | mingw* | pw32*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; +- +- *) +- echo "$as_me:$LINENO: checking for shl_load" >&5 +-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +-if test "${ac_cv_func_shl_load+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char shl_load (); below. */ +-#include +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shl_load (); +-char (*f) (); +- +-int +-main () +-{ +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_shl_load) || defined (__stub___shl_load) +-choke me +-#else +-f = shl_load; +-#endif +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_shl_load=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_func_shl_load=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +-if test $ac_cv_func_shl_load = yes; then +- lt_cv_dlopen="shl_load" +-else +- echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +-if test "${ac_cv_lib_dld_shl_load+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shl_load (); +-int +-main () +-{ +-shl_load (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dld_shl_load=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_dld_shl_load=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +-if test $ac_cv_lib_dld_shl_load = yes; then +- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +-else +- echo "$as_me:$LINENO: checking for dlopen" >&5 +-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +-if test "${ac_cv_func_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char dlopen (); below. */ +-#include +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-char (*f) (); +- +-int +-main () +-{ +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_dlopen) || defined (__stub___dlopen) +-choke me +-#else +-f = dlopen; +-#endif +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_func_dlopen=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +-if test $ac_cv_func_dlopen = yes; then +- lt_cv_dlopen="dlopen" +-else +- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +-if test "${ac_cv_lib_dl_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dl_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_dl_dlopen=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +-if test $ac_cv_lib_dl_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +-else +- echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +-if test "${ac_cv_lib_svld_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsvld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_svld_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_svld_dlopen=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +-if test $ac_cv_lib_svld_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +-else +- echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +-if test "${ac_cv_lib_dld_dld_link+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dld_link (); +-int +-main () +-{ +-dld_link (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dld_dld_link=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_dld_dld_link=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +-if test $ac_cv_lib_dld_dld_link = yes; then +- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +-fi +- +- +-fi +- +- +-fi +- +- +-fi +- +- +-fi +- +- +-fi +- +- ;; +- esac +- +- if test "x$lt_cv_dlopen" != xno; then +- enable_dlopen=yes +- else +- enable_dlopen=no +- fi +- +- case $lt_cv_dlopen in +- dlopen) +- save_CPPFLAGS="$CPPFLAGS" +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" +- +- save_LDFLAGS="$LDFLAGS" +- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" +- +- save_LIBS="$LIBS" +- LIBS="$lt_cv_dlopen_libs $LIBS" +- +- echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +-if test "${lt_cv_dlopen_self+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then : +- lt_cv_dlopen_self=cross +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif +- +-#include +- +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif +- +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif +- +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif +- +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; +- +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } +- +- exit (status); +-} +-EOF +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; +- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; +- x$lt_unknown|x*) lt_cv_dlopen_self=no ;; +- esac +- else : +- # compilation failed +- lt_cv_dlopen_self=no +- fi +-fi +-rm -fr conftest* +- +- +-fi +-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self" >&6 +- +- if test "x$lt_cv_dlopen_self" = xyes; then +- LDFLAGS="$LDFLAGS $link_static_flag" +- echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +-if test "${lt_cv_dlopen_self_static+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then : +- lt_cv_dlopen_self_static=cross +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif +- +-#include +- +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif +- +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif +- +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif +- +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; +- +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } +- +- exit (status); +-} +-EOF +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; +- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; +- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; +- esac +- else : +- # compilation failed +- lt_cv_dlopen_self_static=no +- fi +-fi +-rm -fr conftest* +- +- +-fi +-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 +- fi +- +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac +- +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; +- esac +- +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac +-fi +- +- +-if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $archive_cmds in +- *'~'*) +- # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 +- if test "${lt_cv_archive_cmds_need_lc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- $rm conftest* +- echo 'static int dummy;' > conftest.$ac_ext +- +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$lt_cv_prog_cc_wl +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- save_allow_undefined_flag=$allow_undefined_flag +- allow_undefined_flag= +- if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 +- (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +- then +- lt_cv_archive_cmds_need_lc=no +- else +- lt_cv_archive_cmds_need_lc=yes +- fi +- allow_undefined_flag=$save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +-fi +- +- echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 +-echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 +- ;; +- esac +-fi +-need_lc=${lt_cv_archive_cmds_need_lc-yes} +- +-# The second clause should only fire when bootstrapping the +-# libtool distribution, otherwise you forgot to ship ltmain.sh +-# with your package, and you will get complaints that there are +-# no rules to generate ltmain.sh. +-if test -f "$ltmain"; then +- : +-else +- # If there is no Makefile yet, we rely on a make rule to execute +- # `config.status --recheck' to rerun these tests and create the +- # libtool script then. +- test -f Makefile && make "$ltmain" +-fi +- +-if test -f "$ltmain"; then +- trap "$rm \"${ofile}T\"; exit 1" 1 2 15 +- $rm -f "${ofile}T" +- +- echo creating $ofile +- +- # Now quote all the things that may contain metacharacters while being +- # careful not to overquote the AC_SUBSTed values. We take copies of the +- # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS \ +- AR AR_FLAGS CC LD LN_S NM SHELL \ +- reload_flag reload_cmds wl \ +- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ +- thread_safe_flag_spec whole_archive_flag_spec libname_spec \ +- library_names_spec soname_spec \ +- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ +- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ +- postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ +- old_striplib striplib file_magic_cmd export_symbols_cmds \ +- deplibs_check_method allow_undefined_flag no_undefined_flag \ +- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ +- global_symbol_to_c_name_address \ +- hardcode_libdir_flag_spec hardcode_libdir_separator \ +- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ +- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do +- +- case $var in +- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ +- old_postinstall_cmds | old_postuninstall_cmds | \ +- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ +- extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ +- postinstall_cmds | postuninstall_cmds | \ +- finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) +- # Double-quote double-evaled strings. +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" +- ;; +- *) +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" +- ;; +- esac +- done +- +- cat <<__EOF__ > "${ofile}T" +-#! $SHELL +- +-# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +-# NOTE: Changes made to this file will be lost: look at ltmain.sh. +-# +-# Copyright (C) 1996-2000 Free Software Foundation, Inc. +-# Originally by Gordon Matzigkeit , 1996 +-# +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2 of the License, or +-# (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, but +-# WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +-# General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +-# +-# As a special exception to the GNU General Public License, if you +-# distribute this file as part of a program that contains a +-# configuration script generated by Autoconf, you may include it under +-# the same distribution terms that you use for the rest of that program. +- +-# Sed that helps us avoid accidentally triggering echo(1) options like -n. +-Xsed="sed -e s/^X//" +- +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi +- +-# ### BEGIN LIBTOOL CONFIG +- +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +- +-# Shell to use when invoking shell scripts. +-SHELL=$lt_SHELL +- +-# Whether or not to build shared libraries. +-build_libtool_libs=$enable_shared +- +-# Whether or not to build static libraries. +-build_old_libs=$enable_static +- +-# Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$need_lc +- +-# Whether or not to optimize for fast installation. +-fast_install=$enable_fast_install +- +-# The host system. +-host_alias=$host_alias +-host=$host +- +-# An echo program that does not interpret backslashes. +-echo=$lt_echo +- +-# The archiver. +-AR=$lt_AR +-AR_FLAGS=$lt_AR_FLAGS +- +-# The default C compiler. +-CC=$lt_CC +- +-# Is the compiler the GNU C compiler? +-with_gcc=$GCC +- +-# The linker used to build libraries. +-LD=$lt_LD +- +-# Whether we need hard or soft links. +-LN_S=$lt_LN_S +- +-# A BSD-compatible nm program. +-NM=$lt_NM +- +-# A symbol stripping program +-STRIP=$STRIP +- +-# Used to examine libraries when file_magic_cmd begins "file" +-MAGIC_CMD=$MAGIC_CMD +- +-# Used on cygwin: DLL creation program. +-DLLTOOL="$DLLTOOL" +- +-# Used on cygwin: object dumper. +-OBJDUMP="$OBJDUMP" +- +-# Used on cygwin: assembler. +-AS="$AS" +- +-# The name of the directory that contains temporary libtool files. +-objdir=$objdir +- +-# How to create reloadable object files. +-reload_flag=$lt_reload_flag +-reload_cmds=$lt_reload_cmds +- +-# How to pass a linker flag through the compiler. +-wl=$lt_wl +- +-# Object file suffix (normally "o"). +-objext="$ac_objext" +- +-# Old archive suffix (normally "a"). +-libext="$libext" +- +-# Executable file suffix (normally ""). +-exeext="$exeext" +- +-# Additional compiler flags for building library objects. +-pic_flag=$lt_pic_flag +-pic_mode=$pic_mode +- +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_compiler_c_o +- +-# Can we write directly to a .lo ? +-compiler_o_lo=$lt_compiler_o_lo +- +-# Must we lock files when doing compilation ? +-need_locks=$lt_need_locks +- +-# Do we need the lib prefix for modules? +-need_lib_prefix=$need_lib_prefix +- +-# Do we need a version for libraries? +-need_version=$need_version +- +-# Whether dlopen is supported. +-dlopen_support=$enable_dlopen +- +-# Whether dlopen of programs is supported. +-dlopen_self=$enable_dlopen_self +- +-# Whether dlopen of statically linked programs is supported. +-dlopen_self_static=$enable_dlopen_self_static +- +-# Compiler flag to prevent dynamic linking. +-link_static_flag=$lt_link_static_flag +- +-# Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_no_builtin_flag +- +-# Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec +- +-# Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_whole_archive_flag_spec +- +-# Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_thread_safe_flag_spec +- +-# Library versioning type. +-version_type=$version_type +- +-# Format of library name prefix. +-libname_spec=$lt_libname_spec +- +-# List of archive names. First name is the real one, the rest are links. +-# The last name is the one that the linker finds with -lNAME. +-library_names_spec=$lt_library_names_spec +- +-# The coded name of the library, if different from the real name. +-soname_spec=$lt_soname_spec +- +-# Commands used to build and install an old-style archive. +-RANLIB=$lt_RANLIB +-old_archive_cmds=$lt_old_archive_cmds +-old_postinstall_cmds=$lt_old_postinstall_cmds +-old_postuninstall_cmds=$lt_old_postuninstall_cmds +- +-# Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds +- +-# Create a temporary old-style archive to link instead of a shared archive. +-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds +- +-# Commands used to build and install a shared archive. +-archive_cmds=$lt_archive_cmds +-archive_expsym_cmds=$lt_archive_expsym_cmds +-postinstall_cmds=$lt_postinstall_cmds +-postuninstall_cmds=$lt_postuninstall_cmds +- +-# Commands to strip libraries. +-old_striplib=$lt_old_striplib +-striplib=$lt_striplib +- +-# Method to check whether dependent libraries are shared objects. +-deplibs_check_method=$lt_deplibs_check_method +- +-# Command to use when deplibs_check_method == file_magic. +-file_magic_cmd=$lt_file_magic_cmd +- +-# Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_allow_undefined_flag +- +-# Flag that forces no undefined symbols. +-no_undefined_flag=$lt_no_undefined_flag +- +-# Commands used to finish a libtool library installation in a directory. +-finish_cmds=$lt_finish_cmds +- +-# Same as above, but a single script fragment to be evaled but not shown. +-finish_eval=$lt_finish_eval +- +-# Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_global_symbol_pipe +- +-# Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_global_symbol_to_cdecl +- +-# Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address +- +-# This is the shared library runtime path variable. +-runpath_var=$runpath_var +- +-# This is the shared library path variable. +-shlibpath_var=$shlibpath_var +- +-# Is shlibpath searched before the hard-coded library search path? +-shlibpath_overrides_runpath=$shlibpath_overrides_runpath +- +-# How to hardcode a shared library path into an executable. +-hardcode_action=$hardcode_action +- +-# Whether we should hardcode library paths into libraries. +-hardcode_into_libs=$hardcode_into_libs +- +-# Flag to hardcode \$libdir into a binary during linking. +-# This must work even if \$libdir does not exist. +-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec +- +-# Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_hardcode_libdir_separator +- +-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +-# resulting binary. +-hardcode_direct=$hardcode_direct +- +-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +-# resulting binary. +-hardcode_minus_L=$hardcode_minus_L +- +-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +-# the resulting binary. +-hardcode_shlibpath_var=$hardcode_shlibpath_var +- +-# Variables whose values should be saved in libtool wrapper scripts and +-# restored at relink time. +-variables_saved_for_relink="$variables_saved_for_relink" +- +-# Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$link_all_deplibs +- +-# Compile-time system search path for libraries +-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec +- +-# Run-time system search path for libraries +-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec +- +-# Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path" +- +-# Set to yes if exported symbols are required. +-always_export_symbols=$always_export_symbols +- +-# The commands to list exported symbols. +-export_symbols_cmds=$lt_export_symbols_cmds +- +-# The commands to extract the exported symbol list from a shared archive. +-extract_expsyms_cmds=$lt_extract_expsyms_cmds +- +-# Symbols that should not be listed in the preloaded symbols. +-exclude_expsyms=$lt_exclude_expsyms +- +-# Symbols that must always be exported. +-include_expsyms=$lt_include_expsyms +- +-# ### END LIBTOOL CONFIG +- +-__EOF__ +- +- case $host_os in +- aix3*) +- cat <<\EOF >> "${ofile}T" +- +-# AIX sometimes has problems with the GCC collect2 program. For some +-# reason, if we set the COLLECT_NAMES environment variable, the problems +-# vanish in a puff of smoke. +-if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +-fi +-EOF +- ;; +- esac +- +- case $host_os in +- cygwin* | mingw* | pw32* | os2*) +- cat <<'EOF' >> "${ofile}T" +- # This is a source program that is used to create dlls on Windows +- # Don't remove nor modify the starting and closing comments +-# /* ltdll.c starts here */ +-# #define WIN32_LEAN_AND_MEAN +-# #include +-# #undef WIN32_LEAN_AND_MEAN +-# #include +-# +-# #ifndef __CYGWIN__ +-# # ifdef __CYGWIN32__ +-# # define __CYGWIN__ __CYGWIN32__ +-# # endif +-# #endif +-# +-# #ifdef __cplusplus +-# extern "C" { +-# #endif +-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +-# #ifdef __cplusplus +-# } +-# #endif +-# +-# #ifdef __CYGWIN__ +-# #include +-# DECLARE_CYGWIN_DLL( DllMain ); +-# #endif +-# HINSTANCE __hDllInstance_base; +-# +-# BOOL APIENTRY +-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +-# { +-# __hDllInstance_base = hInst; +-# return TRUE; +-# } +-# /* ltdll.c ends here */ +- # This is a source program that is used to create import libraries +- # on Windows for dlls which lack them. Don't remove nor modify the +- # starting and closing comments +-# /* impgen.c starts here */ +-# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +-# +-# This file is part of GNU libtool. +-# +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 2 of the License, or +-# (at your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +-# */ +-# +-# #include /* for printf() */ +-# #include /* for open(), lseek(), read() */ +-# #include /* for O_RDONLY, O_BINARY */ +-# #include /* for strdup() */ +-# +-# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +-# #ifndef O_BINARY +-# #define O_BINARY 0 +-# #endif +-# +-# static unsigned int +-# pe_get16 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[2]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 2); +-# return b[0] + (b[1]<<8); +-# } +-# +-# static unsigned int +-# pe_get32 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[4]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 4); +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# static unsigned int +-# pe_as32 (ptr) +-# void *ptr; +-# { +-# unsigned char *b = ptr; +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# int +-# main (argc, argv) +-# int argc; +-# char *argv[]; +-# { +-# int dll; +-# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +-# unsigned long export_rva, export_size, nsections, secptr, expptr; +-# unsigned long name_rvas, nexp; +-# unsigned char *expdata, *erva; +-# char *filename, *dll_name; +-# +-# filename = argv[1]; +-# +-# dll = open(filename, O_RDONLY|O_BINARY); +-# if (dll < 1) +-# return 1; +-# +-# dll_name = filename; +-# +-# for (i=0; filename[i]; i++) +-# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +-# dll_name = filename + i +1; +-# +-# pe_header_offset = pe_get32 (dll, 0x3c); +-# opthdr_ofs = pe_header_offset + 4 + 20; +-# num_entries = pe_get32 (dll, opthdr_ofs + 92); +-# +-# if (num_entries < 1) /* no exports */ +-# return 1; +-# +-# export_rva = pe_get32 (dll, opthdr_ofs + 96); +-# export_size = pe_get32 (dll, opthdr_ofs + 100); +-# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +-# secptr = (pe_header_offset + 4 + 20 + +-# pe_get16 (dll, pe_header_offset + 4 + 16)); +-# +-# expptr = 0; +-# for (i = 0; i < nsections; i++) +-# { +-# char sname[8]; +-# unsigned long secptr1 = secptr + 40 * i; +-# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +-# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +-# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +-# lseek(dll, secptr1, SEEK_SET); +-# read(dll, sname, 8); +-# if (vaddr <= export_rva && vaddr+vsize > export_rva) +-# { +-# expptr = fptr + (export_rva - vaddr); +-# if (export_rva + export_size > vaddr + vsize) +-# export_size = vsize - (export_rva - vaddr); +-# break; +-# } +-# } +-# +-# expdata = (unsigned char*)malloc(export_size); +-# lseek (dll, expptr, SEEK_SET); +-# read (dll, expdata, export_size); +-# erva = expdata - export_rva; +-# +-# nexp = pe_as32 (expdata+24); +-# name_rvas = pe_as32 (expdata+32); +-# +-# printf ("EXPORTS\n"); +-# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) +- +- mv -f "${ofile}T" "$ofile" || \ +- (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") +- chmod +x "$ofile" +-fi +- +- +- +- +- +-# This can be used to rebuild libtool when needed +-LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" +- +-# Always use our own libtool. +-LIBTOOL='$(SHELL) $(top_builddir)/libtool' +- +-# Prevent multiple expansion +- +- +- +- +-# Check whether --with-target-subdir or --without-target-subdir was given. +-if test "${with_target_subdir+set}" = set; then +- withval="$with_target_subdir" +- +-fi; +- +-# Check whether --with-cross-host or --without-cross-host was given. +-if test "${with_cross_host+set}" = set; then +- withval="$with_cross_host" +- +-fi; +- +-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 +- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +-if test "${enable_maintainer_mode+set}" = set; then +- enableval="$enable_maintainer_mode" +- USE_MAINTAINER_MODE=$enableval +-else +- USE_MAINTAINER_MODE=no +-fi; +- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 +- +- +-if test $USE_MAINTAINER_MODE = yes; then +- MAINTAINER_MODE_TRUE= +- MAINTAINER_MODE_FALSE='#' +-else +- MAINTAINER_MODE_TRUE='#' +- MAINTAINER_MODE_FALSE= +-fi +- +- MAINT=$MAINTAINER_MODE_TRUE +- +- +-# automake wants to see AC_EXEEXT. But we don't need it. And having +-# it is actually a problem, because the compiler we're passed can't +-# necessarily do a full link. So we fool automake here. +-if false; then +- # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands +- # to nothing, so nothing would remain between `then' and `fi' if it +- # were not for the `:' below. +- : +- +-fi +- +-echo "$as_me:$LINENO: checking for thread model used by GCC" >&5 +-echo $ECHO_N "checking for thread model used by GCC... $ECHO_C" >&6 +-THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` +-if test -z "$THREADS"; then +- THREADS=no +-fi +-echo "$as_me:$LINENO: result: $THREADS" >&5 +-echo "${ECHO_T}$THREADS" >&6 +- +-# Check whether --enable-parallel-mark or --disable-parallel-mark was given. +-if test "${enable_parallel_mark+set}" = set; then +- enableval="$enable_parallel_mark" +- case "$THREADS" in +- no | none | single) +- { { echo "$as_me:$LINENO: error: Parallel mark requires --enable-threads=x spec" >&5 +-echo "$as_me: error: Parallel mark requires --enable-threads=x spec" >&2;} +- { (exit 1); exit 1; }; } +- ;; +- esac +- +-fi; +- +-INCLUDES=-I${srcdir}/include +-THREADLIBS= +-case "$THREADS" in +- no | none | single) +- THREADS=none +- ;; +- posix | pthreads) +- THREADS=posix +- THREADLIBS=-lpthread +- case "$host" in +- x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* ) +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_LINUX_THREADS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define _REENTRANT 1 +-_ACEOF +- +- if test "${enable_parallel_mark}"; then +- cat >>confdefs.h <<\_ACEOF +-@%:@define PARALLEL_MARK 1 +-_ACEOF +- +- fi +- cat >>confdefs.h <<\_ACEOF +-@%:@define THREAD_LOCAL_ALLOC 1 +-_ACEOF +- +- ;; +- *-*-linux*) +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_LINUX_THREADS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define _REENTRANT 1 +-_ACEOF +- +- ;; +- *-*-hpux*) +- { echo "$as_me:$LINENO: WARNING: \"Only HP/UX 11 threads are supported.\"" >&5 +-echo "$as_me: WARNING: \"Only HP/UX 11 threads are supported.\"" >&2;} +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_HPUX_THREADS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define _POSIX_C_SOURCE 199506L +-_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 +- +- THREADLIBS="-lpthread -lrt" +- ;; +- *-*-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;} +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_FREEBSD_THREADS 1 +-_ACEOF +- +- INCLUDES="$INCLUDES -pthread" +- THREADLIBS=-pthread +- ;; +- *-*-solaris*) +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_SOLARIS_THREADS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_SOLARIS_PTHREADS 1 +-_ACEOF +- +- ;; +- *-*-irix*) +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_IRIX_THREADS 1 +-_ACEOF +- +- ;; +- *-*-cygwin*) +- THREADLIBS= +- ;; +- *-*-darwin*) +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_DARWIN_THREADS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define THREAD_LOCAL_ALLOC 1 +-_ACEOF +- +- if test "${enable_parallel_mark}" = yes; then +- cat >>confdefs.h <<\_ACEOF +-@%:@define PARALLEL_MARK 1 +-_ACEOF +- +- fi +- ;; +- esac +- ;; +- win32) +- cat >>confdefs.h <<\_ACEOF +-@%:@define GC_WIN32_THREADS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define NO_GETENV 1 +-_ACEOF +- +- ;; +- decosf1 | irix | mach | os2 | solaris | dce | vxworks) +- { { echo "$as_me:$LINENO: error: thread package $THREADS not yet supported" >&5 +-echo "$as_me: error: thread package $THREADS not yet supported" >&2;} +- { (exit 1); exit 1; }; } +- ;; +- *) +- { { echo "$as_me:$LINENO: error: $THREADS is an unknown thread package" >&5 +-echo "$as_me: error: $THREADS is an unknown thread package" >&2;} +- { (exit 1); exit 1; }; } +- ;; +-esac +- +- +-case "$host" in +- powerpc-*-darwin*) +- powerpc_darwin=true +- ;; +-esac +- +- +-if test x$powerpc_darwin = xtrue; then +- POWERPC_DARWIN_TRUE= +- POWERPC_DARWIN_FALSE='#' +-else +- POWERPC_DARWIN_TRUE='#' +- POWERPC_DARWIN_FALSE= +-fi +- +- +-# We never want libdl on darwin. It is a fake libdl that just ends up making +-# dyld calls anyway +-case "$host" in +- *-*-darwin*) ;; +- *) +- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +-if test "${ac_cv_lib_dl_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" +-#include "confdefs.h" +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dl_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_dl_dlopen=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +-if test $ac_cv_lib_dl_dlopen = yes; then +- EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl" +-fi +- +- ;; +-esac +- +- +- +-target_all=libgcjgc.la +- +- +- +-TARGET_ECOS="no" +- +-# Check whether --with-ecos or --without-ecos was given. +-if test "${with_ecos+set}" = set; then +- withval="$with_ecos" +- TARGET_ECOS="$with_ecos" +- +-fi; +- +-addobjs= +-CXXINCLUDES= +-case "$TARGET_ECOS" in +- no) +- ;; +- *) +- cat >>confdefs.h <<\_ACEOF +-@%:@define ECOS 1 +-_ACEOF +- +- CXXINCLUDES="-I${TARGET_ECOS}/include" +- addobjs="$addobjs ecos.lo" +- ;; +-esac +- +- +- +- +- +-machdep= +-case "$host" in +- alpha*-*-openbsd*) +- machdep="alpha_mach_dep.lo" +- if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then +- { echo "$as_me:$LINENO: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&5 +-echo "$as_me: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&2;} +- # Check whether --enable-shared or --disable-shared was given. +-if test "${enable_shared+set}" = set; then +- enableval="$enable_shared" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_shared=yes ;; +-no) enable_shared=no ;; +-*) +- enable_shared=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac +-else +- enable_shared=no +-fi; +- fi +- ;; +- alpha*-*-*) +- machdep="alpha_mach_dep.lo" +- ;; +- i?86-*-solaris2.[89]*) +- cat >>confdefs.h <<\_ACEOF +-@%:@define SOLARIS25_PROC_VDB_BUG_FIXED 1 +-_ACEOF +- +- ;; +- mipstx39-*-elf*) +- machdep="mips_ultrix_mach_dep.lo" +- cat >>confdefs.h <<\_ACEOF +-@%:@define STACKBASE __stackbase +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define DATASTART_IS_ETEXT 1 +-_ACEOF +- +- ;; +- mips-dec-ultrix*) +- machdep="mips_ultrix_mach-dep.lo" +- ;; +- mips*-*-linux*) +- ;; +- mips-*-*) +- machdep="mips_sgi_mach_dep.lo" +- cat >>confdefs.h <<\_ACEOF +-@%:@define NO_EXECUTE_PERMISSION 1 +-_ACEOF +- +- ;; +- sparc-sun-solaris2.3*) +- machdep="sparc_mach_dep.lo" +- cat >>confdefs.h <<\_ACEOF +-@%:@define SUNOS53_SHARED_LIB 1 +-_ACEOF +- +- ;; +- sparc-sun-solaris2.*) +- machdep="sparc_mach_dep.lo" +- ;; +- ia64-*-*) +- machdep="mach_dep.lo ia64_save_regs_in_stack.lo" +- ;; +-esac +-if test x"$machdep" = x; then +- machdep="mach_dep.lo" +-fi +-addobjs="$addobjs $machdep" +- +- +-case "$host" in +- sparc-sun-solaris2*) +- if test "$GCC" = yes; then +- new_CFLAGS= +- for i in $CFLAGS; do +- case "$i" in +- -O*) +- ;; +- *) +- new_CFLAGS="$new_CFLAGS $i" +- ;; +- esac +- done +- CFLAGS="$new_CFLAGS" +- fi +- ;; +-esac +- +-MY_CFLAGS="$CFLAGS" +- +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define SILENT 1 +-_ACEOF +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define NO_SIGNALS 1 +-_ACEOF +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define NO_EXECUTE_PERMISSION 1 +-_ACEOF +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define ALL_INTERIOR_POINTERS 1 +-_ACEOF +- +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define JAVA_FINALIZATION 1 +-_ACEOF +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define GC_GCJ_SUPPORT 1 +-_ACEOF +- +-cat >>confdefs.h <<\_ACEOF +-@%:@define ATOMIC_UNCOLLECTABLE 1 +-_ACEOF +- +- +-if test -n "${with_cross_host}"; then +- cat >>confdefs.h <<\_ACEOF +-@%:@define NO_SIGSET 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define NO_DEBUGGING 1 +-_ACEOF +- +-fi +- +-# Check whether --enable-full-debug or --disable-full-debug was given. +-if test "${enable_full_debug+set}" = set; then +- enableval="$enable_full_debug" +- if test "$enable_full_debug" = "yes"; then +- { echo "$as_me:$LINENO: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&5 +-echo "$as_me: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&2;} +- cat >>confdefs.h <<\_ACEOF +-@%:@define KEEP_BACK_PTRS 1 +-_ACEOF +- +- cat >>confdefs.h <<\_ACEOF +-@%:@define DBG_HDRS_ALL 1 +-_ACEOF +- +- case $host in +- ia64-*-linux* ) +- cat >>confdefs.h <<\_ACEOF +-@%:@define MAKE_BACK_GRAPH 1 +-_ACEOF +- +- ;; +- x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* ) +- cat >>confdefs.h <<\_ACEOF +-@%:@define MAKE_BACK_GRAPH 1 +-_ACEOF +- +- { echo "$as_me:$LINENO: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&5 +-echo "$as_me: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&2;} +- cat >>confdefs.h <<\_ACEOF +-@%:@define SAVE_CALL_COUNT 8 +-_ACEOF +- +- ;; +- esac +- fi +-fi; +- +- +- +-if test -z "$with_cross_host"; then +- USE_LIBDIR_TRUE= +- USE_LIBDIR_FALSE='#' +-else +- USE_LIBDIR_TRUE='#' +- USE_LIBDIR_FALSE= +-fi +- +- +-if test "${multilib}" = "yes"; then +- multilib_arg="--enable-multilib" +-else +- multilib_arg= +-fi +- +- ac_config_files="$ac_config_files Makefile include/Makefile" +- ac_config_commands="$ac_config_commands default" +-cat >confcache <<\_ACEOF +-# This file is a shell script that caches the results of configure +-# tests run on this system so they can be shared between configure +-# scripts and configure runs, see configure's option --config-cache. +-# It is not useful on other systems. If it contains results you don't +-# want to keep, you may remove or edit it. +-# +-# config.status only pays attention to the cache file if you give it +-# the --recheck option to rerun configure. +-# +-# `ac_cv_env_foo' variables (set or unset) will be overridden when +-# loading this file, other *unset* `ac_cv_foo' will be assigned the +-# following values. +- +-_ACEOF +- +-# The following way of writing the cache mishandles newlines in values, +-# but we know of no workaround that is simple, portable, and efficient. +-# So, don't put newlines in cache variables' values. +-# Ultrix sh set writes to stderr and can't be redirected directly, +-# and sets the high bit in the cache file unless we assign to the vars. +-{ +- (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) +- # `set' does not quote correctly, so add quotes (double-quote +- # substitution turns \\\\ into \\, and sed turns \\ into \). +- sed -n \ +- "s/'/'\\\\''/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" +- ;; +- *) +- # `set' quotes correctly as required by POSIX, so do not add quotes. +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" +- ;; +- esac; +-} | +- sed ' +- t clear +- : clear +- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ +- t end +- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ +- : end' >>confcache +-if cmp -s $cache_file confcache; then :; else +- if test -w $cache_file; then +- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" +- cat confcache >$cache_file +- else +- echo "not updating unwritable cache $cache_file" +- fi +-fi +-rm -f confcache +- +-test "x$prefix" = xNONE && prefix=$ac_default_prefix +-# Let make expand exec_prefix. +-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' +- +-# VPATH may cause trouble with some makes, so we remove $(srcdir), +-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +-# trailing colons and then remove the whole line if VPATH becomes empty +-# (actually we leave an empty line to preserve line numbers). +-if test "x$srcdir" = x.; then +- ac_vpsub='/^[ ]*VPATH[ ]*=/{ +-s/:*\$(srcdir):*/:/; +-s/:*\${srcdir}:*/:/; +-s/:*@srcdir@:*/:/; +-s/^\([^=]*=[ ]*\):*/\1/; +-s/:*$//; +-s/^[^=]*=[ ]*$//; +-}' +-fi +- +-# Transform confdefs.h into DEFS. +-# Protect against shell expansion while executing Makefile rules. +-# Protect against Makefile macro expansion. +-# +-# If the first sed substitution is executed (which looks for macros that +-# take arguments), then we branch to the quote section. Otherwise, +-# look for a macro that doesn't take arguments. +-cat >confdef2opt.sed <<\_ACEOF +-t clear +-: clear +-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +-t quote +-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +-t quote +-d +-: quote +-s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +-s,\[,\\&,g +-s,\],\\&,g +-s,\$,$$,g +-p +-_ACEOF +-# We use echo to avoid assuming a particular line-breaking character. +-# The extra dot is to prevent the shell from consuming trailing +-# line-breaks from the sub-command output. A line-break within +-# single-quotes doesn't work because, if this script is created in a +-# platform that uses two characters for line-breaks (e.g., DOS), tr +-# would break. +-ac_LF_and_DOT=`echo; echo .` +-DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +-rm -f confdef2opt.sed +- +- +-ac_libobjs= +-ac_ltlibobjs= +-for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue +- # 1. Remove the extension, and $U if already installed. +- ac_i=`echo "$ac_i" | +- sed 's/\$U\././;s/\.o$//;s/\.obj$//'` +- # 2. Add them. +- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" +- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +-done +-LIB@&t@OBJS=$ac_libobjs +- +-LTLIBOBJS=$ac_ltlibobjs +- +- +-if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"AMDEP\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${POWERPC_DARWIN_TRUE}" && test -z "${POWERPC_DARWIN_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"POWERPC_DARWIN\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"POWERPC_DARWIN\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +-if test -z "${USE_LIBDIR_TRUE}" && test -z "${USE_LIBDIR_FALSE}"; then +- { { echo "$as_me:$LINENO: error: conditional \"USE_LIBDIR\" was never defined. +-Usually this means the macro was only invoked conditionally." >&5 +-echo "$as_me: error: conditional \"USE_LIBDIR\" was never defined. +-Usually this means the macro was only invoked conditionally." >&2;} +- { (exit 1); exit 1; }; } +-fi +- +-: ${CONFIG_STATUS=./config.status} +-ac_clean_files_save=$ac_clean_files +-ac_clean_files="$ac_clean_files $CONFIG_STATUS" +-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +-echo "$as_me: creating $CONFIG_STATUS" >&6;} +-cat >$CONFIG_STATUS <<_ACEOF +-#! $SHELL +-# Generated by $as_me. +-# Run this file to recreate the current configuration. +-# Compiler output produced by configure, useful for debugging +-# configure, is in config.log if it exists. +- +-debug=false +-SHELL=\${CONFIG_SHELL-$SHELL} +-_ACEOF +- +-cat >>$CONFIG_STATUS <<\_ACEOF +-## --------------------- ## +-## M4sh Initialization. ## +-## --------------------- ## +- +-# Be Bourne compatible +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which +- # is contrary to our usage. Disable this feature. +- alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix +-fi +- +-# Support unset when possible. +-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +- as_unset=unset +-else +- as_unset=false +-fi +- +- +-# Work around bugs in pre-3.0 UWIN ksh. +-$as_unset ENV MAIL MAILPATH +-PS1='$ ' +-PS2='> ' +-PS4='+ ' +- +-# NLS nuisances. +-for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME +-do +- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then +- eval $as_var=C; export $as_var +- else +- $as_unset $as_var +- fi +-done +- +-# Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +- as_basename=basename +-else +- as_basename=false +-fi +- +- +-# Name of the executable. +-as_me=`$as_basename "$0" || +-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ +- X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- +- +-# PATH needs CR, and LINENO needs CR and PATH. +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits +- +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conftest.sh +- echo "exit 0" >>conftest.sh +- chmod +x conftest.sh +- if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conftest.sh +-fi +- +- +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- case $0 in +- *[\\/]* ) as_myself=$0 ;; +- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done +- +- ;; +- esac +- # We did not find ourselves, most probably we were run as `sh COMMAND' +- # in which case we are not to be found in the path. +- if test "x$as_myself" = x; then +- as_myself=$0 +- fi +- if test ! -f "$as_myself"; then +- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in +- /*) +- if ("$as_dir/$as_base" -c ' +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac +- +- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO +- # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. +- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | +- sed ' +- N +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, +- t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, +- ' >$as_me.lineno && +- chmod +x $as_me.lineno || +- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} +- { (exit 1); exit 1; }; } +- +- # Don't try to exec as it changes $[0], causing all sort of problems +- # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensible to this). +- . ./$as_me.lineno +- # Exit status is that of the last command. +- exit +-} +- +- +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +-esac +- +-if expr a : '\(a\)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-rm -f conf$$ conf$$.exe conf$$.file +-echo >conf$$.file +-if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links +- as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi +-elif ln conf$$.file conf$$ 2>/dev/null; then +- as_ln_s=ln +-else +- as_ln_s='cp -p' +-fi +-rm -f conf$$ conf$$.exe conf$$.file +- +-if mkdir -p . 2>/dev/null; then +- as_mkdir_p=: +-else +- as_mkdir_p=false +-fi +- +-as_executable_p="test -f" +- +-# Sed expression to map a string onto a valid CPP name. +-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +- +-# Sed expression to map a string onto a valid variable name. +-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +- +- +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- +-exec 6>&1 +- +-# Open the log real soon, to keep \$[0] and so on meaningful, and to +-# report actual input values of CONFIG_FILES etc. instead of their +-# values after options handling. Logging --version etc. is OK. +-exec 5>>config.log +-{ +- echo +- sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +-@%:@@%:@ Running $as_me. @%:@@%:@ +-_ASBOX +-} >&5 +-cat >&5 <<_CSEOF +- +-This file was extended by $as_me, which was +-generated by GNU Autoconf 2.54. Invocation command line was +- +- CONFIG_FILES = $CONFIG_FILES +- CONFIG_HEADERS = $CONFIG_HEADERS +- CONFIG_LINKS = $CONFIG_LINKS +- CONFIG_COMMANDS = $CONFIG_COMMANDS +- $ $0 $@ +- +-_CSEOF +-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +-echo >&5 +-_ACEOF +- +-# Files that config.status was made for. +-if test -n "$ac_config_files"; then +- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_headers"; then +- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_links"; then +- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_commands"; then +- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +-fi +- +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-ac_cs_usage="\ +-\`$as_me' instantiates files from templates according to the +-current configuration. +- +-Usage: $0 [OPTIONS] [FILE]... +- +- -h, --help print this help, then exit +- -V, --version print version number, then exit +- -d, --debug don't remove temporary files +- --recheck update $as_me by reconfiguring in the same conditions +- --file=FILE[:TEMPLATE] +- instantiate the configuration file FILE +- +-Configuration files: +-$config_files +- +-Configuration commands: +-$config_commands +- +-Report bugs to ." +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +-ac_cs_version="\\ +-config.status +-configured by $0, generated by GNU Autoconf 2.54, +- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +- +-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +-Free Software Foundation, Inc. +-This config.status script is free software; the Free Software Foundation +-gives unlimited permission to copy, distribute and modify it." +-srcdir=$srcdir +-INSTALL="$INSTALL" +-_ACEOF +- +-cat >>$CONFIG_STATUS <<\_ACEOF +-# If no file are specified by the user, then we need to provide default +-# value. By we need to know if files were specified by the user. +-ac_need_defaults=: +-while test $# != 0 +-do +- case $1 in +- --*=*) +- ac_option=`expr "x$1" : 'x\([^=]*\)='` +- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` +- ac_shift=: +- ;; +- -*) +- ac_option=$1 +- ac_optarg=$2 +- ac_shift=shift +- ;; +- *) # This is not an option, so the user has probably given explicit +- # arguments. +- ac_option=$1 +- ac_need_defaults=false;; +- esac +- +- case $ac_option in +- # Handling of the options. +-_ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) +- echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" +- exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- --version | --vers* | -V ) +- echo "$ac_cs_version"; exit 0 ;; +- --he | --h) +- # Conflict between --help and --header +- { { echo "$as_me:$LINENO: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; };; +- --help | --hel | -h ) +- echo "$ac_cs_usage"; exit 0 ;; +- --debug | --d* | -d ) +- debug=: ;; +- --file | --fil | --fi | --f ) +- $ac_shift +- CONFIG_FILES="$CONFIG_FILES $ac_optarg" +- ac_need_defaults=false;; +- --header | --heade | --head | --hea ) +- $ac_shift +- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" +- ac_need_defaults=false;; +- +- # This is an error. +- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; } ;; +- +- *) ac_config_targets="$ac_config_targets $1" ;; +- +- esac +- shift +-done +- +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +-# +-# INIT-COMMANDS section. +-# +- +-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" +-srcdir=${srcdir} +-host=${host} +-target=${target} +-with_multisubdir=${with_multisubdir} +-ac_configure_args="${multilib_arg} ${ac_configure_args}" +-CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +-gc_basedir=${gc_basedir} +-CC="${CC}" +-DEFS="$DEFS" +- +- +-_ACEOF +- +- +- +-cat >>$CONFIG_STATUS <<\_ACEOF +-for ac_config_target in $ac_config_targets +-do +- case "$ac_config_target" in +- # Handling of arguments. +- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; +- "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; +- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; +- "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; +- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +-echo "$as_me: error: invalid argument: $ac_config_target" >&2;} +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# If the user did not use the arguments to specify the items to instantiate, +-# then the envvar interface is used. Set only those that are not. +-# We use the long form for the default assignment because of an extremely +-# bizarre bug on SunOS 4.1.3. +-if $ac_need_defaults; then +- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +-fi +- +-# Create a temporary directory, and hook for its removal unless debugging. +-$debug || +-{ +- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 +- trap '{ (exit 1); exit 1; }' 1 2 13 15 +-} +- +-# Create a (secure) tmp directory for tmp files. +-: ${TMPDIR=/tmp} +-{ +- tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && +- test -n "$tmp" && test -d "$tmp" +-} || +-{ +- tmp=$TMPDIR/cs$$-$RANDOM +- (umask 077 && mkdir $tmp) +-} || +-{ +- echo "$me: cannot create a temporary directory in $TMPDIR" >&2 +- { (exit 1); exit 1; } +-} +- +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +- +-# +-# CONFIG_FILES section. +-# +- +-# No need to generate the scripts if there are no CONFIG_FILES. +-# This happens for instance when ./config.status config.h +-if test -n "\$CONFIG_FILES"; then +- # Protect against being on the right side of a sed subst in config.status. +- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; +- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +-s,@SHELL@,$SHELL,;t t +-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +-s,@exec_prefix@,$exec_prefix,;t t +-s,@prefix@,$prefix,;t t +-s,@program_transform_name@,$program_transform_name,;t t +-s,@bindir@,$bindir,;t t +-s,@sbindir@,$sbindir,;t t +-s,@libexecdir@,$libexecdir,;t t +-s,@datadir@,$datadir,;t t +-s,@sysconfdir@,$sysconfdir,;t t +-s,@sharedstatedir@,$sharedstatedir,;t t +-s,@localstatedir@,$localstatedir,;t t +-s,@libdir@,$libdir,;t t +-s,@includedir@,$includedir,;t t +-s,@oldincludedir@,$oldincludedir,;t t +-s,@infodir@,$infodir,;t t +-s,@mandir@,$mandir,;t t +-s,@build_alias@,$build_alias,;t t +-s,@host_alias@,$host_alias,;t t +-s,@target_alias@,$target_alias,;t t +-s,@DEFS@,$DEFS,;t t +-s,@ECHO_C@,$ECHO_C,;t t +-s,@ECHO_N@,$ECHO_N,;t t +-s,@ECHO_T@,$ECHO_T,;t t +-s,@LIBS@,$LIBS,;t t +-s,@gc_basedir@,$gc_basedir,;t t +-s,@build@,$build,;t t +-s,@build_cpu@,$build_cpu,;t t +-s,@build_vendor@,$build_vendor,;t t +-s,@build_os@,$build_os,;t t +-s,@host@,$host,;t t +-s,@host_cpu@,$host_cpu,;t t +-s,@host_vendor@,$host_vendor,;t t +-s,@host_os@,$host_os,;t t +-s,@target@,$target,;t t +-s,@target_cpu@,$target_cpu,;t t +-s,@target_vendor@,$target_vendor,;t t +-s,@target_os@,$target_os,;t t +-s,@mkinstalldirs@,$mkinstalldirs,;t t +-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +-s,@INSTALL_DATA@,$INSTALL_DATA,;t t +-s,@PACKAGE@,$PACKAGE,;t t +-s,@VERSION@,$VERSION,;t t +-s,@ACLOCAL@,$ACLOCAL,;t t +-s,@AUTOCONF@,$AUTOCONF,;t t +-s,@AUTOMAKE@,$AUTOMAKE,;t t +-s,@AUTOHEADER@,$AUTOHEADER,;t t +-s,@MAKEINFO@,$MAKEINFO,;t t +-s,@AMTAR@,$AMTAR,;t t +-s,@install_sh@,$install_sh,;t t +-s,@STRIP@,$STRIP,;t t +-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +-s,@AWK@,$AWK,;t t +-s,@SET_MAKE@,$SET_MAKE,;t t +-s,@AS@,$AS,;t t +-s,@ac_ct_AS@,$ac_ct_AS,;t t +-s,@AR@,$AR,;t t +-s,@ac_ct_AR@,$ac_ct_AR,;t t +-s,@RANLIB@,$RANLIB,;t t +-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +-s,@MAINT@,$MAINT,;t t +-s,@GC_CFLAGS@,$GC_CFLAGS,;t t +-s,@CC@,$CC,;t t +-s,@CFLAGS@,$CFLAGS,;t t +-s,@LDFLAGS@,$LDFLAGS,;t t +-s,@CPPFLAGS@,$CPPFLAGS,;t t +-s,@ac_ct_CC@,$ac_ct_CC,;t t +-s,@EXEEXT@,$EXEEXT,;t t +-s,@OBJEXT@,$OBJEXT,;t t +-s,@DEPDIR@,$DEPDIR,;t t +-s,@am__include@,$am__include,;t t +-s,@am__quote@,$am__quote,;t t +-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +-s,@CCDEPMODE@,$CCDEPMODE,;t t +-s,@LN_S@,$LN_S,;t t +-s,@ECHO@,$ECHO,;t t +-s,@CPP@,$CPP,;t t +-s,@EGREP@,$EGREP,;t t +-s,@LIBTOOL@,$LIBTOOL,;t t +-s,@THREADLIBS@,$THREADLIBS,;t t +-s,@POWERPC_DARWIN_TRUE@,$POWERPC_DARWIN_TRUE,;t t +-s,@POWERPC_DARWIN_FALSE@,$POWERPC_DARWIN_FALSE,;t t +-s,@EXTRA_TEST_LIBS@,$EXTRA_TEST_LIBS,;t t +-s,@target_all@,$target_all,;t t +-s,@CXX@,$CXX,;t t +-s,@INCLUDES@,$INCLUDES,;t t +-s,@CXXINCLUDES@,$CXXINCLUDES,;t t +-s,@addobjs@,$addobjs,;t t +-s,@MY_CFLAGS@,$MY_CFLAGS,;t t +-s,@USE_LIBDIR_TRUE@,$USE_LIBDIR_TRUE,;t t +-s,@USE_LIBDIR_FALSE@,$USE_LIBDIR_FALSE,;t t +-s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t +-s,@LTLIBOBJS@,$LTLIBOBJS,;t t +-CEOF +- +-_ACEOF +- +- cat >>$CONFIG_STATUS <<\_ACEOF +- # Split the substitutions into bite-sized pieces for seds with +- # small command number limits, like on Digital OSF/1 and HP-UX. +- ac_max_sed_lines=48 +- ac_sed_frag=1 # Number of current file. +- ac_beg=1 # First line for current file. +- ac_end=$ac_max_sed_lines # Line after last line for current file. +- ac_more_lines=: +- ac_sed_cmds= +- while $ac_more_lines; do +- if test $ac_beg -gt 1; then +- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- else +- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- fi +- if test ! -s $tmp/subs.frag; then +- ac_more_lines=false +- else +- # The purpose of the label and of the branching condition is to +- # speed up the sed processing (if there are no `@' at all, there +- # is no need to browse any of the substitutions). +- # These are the two extra sed commands mentioned above. +- (echo ':t +- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" +- else +- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" +- fi +- ac_sed_frag=`expr $ac_sed_frag + 1` +- ac_beg=$ac_end +- ac_end=`expr $ac_end + $ac_max_sed_lines` +- fi +- done +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds=cat +- fi +-fi # test -n "$CONFIG_FILES" +- +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; +- esac +- +- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. +- ac_dir=`(dirname "$ac_file") 2>/dev/null || +-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } +- +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +-# absolute. +-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` +- +- +- case $INSTALL in +- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; +- *) ac_INSTALL=$ac_top_builddir$INSTALL ;; +- esac +- +- if test x"$ac_file" != x-; then +- { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- rm -f "$ac_file" +- fi +- # Let's still pretend it is `configure' which instantiates (i.e., don't +- # use $as_me), people would be surprised to read: +- # /* config.h. Generated by config.status. */ +- if test x"$ac_file" = x-; then +- configure_input= +- else +- configure_input="$ac_file. " +- fi +- configure_input=$configure_input"Generated from `echo $ac_file_in | +- sed 's,.*/,,'` by configure." +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- echo $f;; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo $f +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo $srcdir/$f +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +-_ACEOF +-cat >>$CONFIG_STATUS <<_ACEOF +- sed "$ac_vpsub +-$extrasub +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +-:t +-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +-s,@configure_input@,$configure_input,;t t +-s,@srcdir@,$ac_srcdir,;t t +-s,@abs_srcdir@,$ac_abs_srcdir,;t t +-s,@top_srcdir@,$ac_top_srcdir,;t t +-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +-s,@builddir@,$ac_builddir,;t t +-s,@abs_builddir@,$ac_abs_builddir,;t t +-s,@top_builddir@,$ac_top_builddir,;t t +-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +-s,@INSTALL@,$ac_INSTALL,;t t +-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out +- rm -f $tmp/stdin +- if test x"$ac_file" != x-; then +- mv $tmp/out $ac_file +- else +- cat $tmp/out +- rm -f $tmp/out +- fi +- +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-# +-# CONFIG_COMMANDS section. +-# +-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue +- ac_dest=`echo "$ac_file" | sed 's,:.*,,'` +- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_dir=`(dirname "$ac_dest") 2>/dev/null || +-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_dest" : 'X\(//\)[^/]' \| \ +- X"$ac_dest" : 'X\(//\)$' \| \ +- X"$ac_dest" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_dest" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +-# absolute. +-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` +- +- +- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +-echo "$as_me: executing $ac_dest commands" >&6;} +- case $ac_dest in +- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do +- # Strip MF so we end up with the name of the file. +- mf=`echo "$mf" | sed -e 's/:.*$//'` +- if (sed 1q $mf | fgrep 'generated by automake') > /dev/null 2>&1; then +- dirpart=`(dirname "$mf") 2>/dev/null || +-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$mf" : 'X\(//\)[^/]' \| \ +- X"$mf" : 'X\(//\)$' \| \ +- X"$mf" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$mf" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- else +- continue +- fi +- grep '^DEP_FILES *= *[^ @%:@]' < "$mf" > /dev/null || continue +- # Extract the definition of DEP_FILES from the Makefile without +- # running `make'. +- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` +- test -z "$DEPDIR" && continue +- # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n -e '/^U = / s///p' < "$mf"` +- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" +- # We invoke sed twice because it is the simplest approach to +- # changing $(DEPDIR) to its actual value in the expansion. +- for file in `sed -n -e ' +- /^DEP_FILES = .*\\\\$/ { +- s/^DEP_FILES = // +- :loop +- s/\\\\$// +- p +- n +- /\\\\$/ b loop +- p +- } +- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ +- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do +- # Make sure the directory exists. +- test -f "$dirpart/$file" && continue +- fdir=`(dirname "$file") 2>/dev/null || +-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$file" : 'X\(//\)[^/]' \| \ +- X"$file" : 'X\(//\)$' \| \ +- X"$file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p $dirpart/$fdir +- else +- as_dir=$dirpart/$fdir +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} +- { (exit 1); exit 1; }; }; } +- +- # echo "creating $dirpart/$file" +- echo '# dummy' > "$dirpart/$file" +- done +-done +- ;; +- default ) +-echo "$DEFS" > boehm-cflags +- +-if test -n "$CONFIG_FILES"; then +- LD="${ORIGINAL_LD_FOR_MULTILIBS}" +- ac_file=Makefile . ${gc_basedir}/../config-ml.in +-fi ;; +- esac +-done +-_ACEOF +- +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-{ (exit 0); exit 0; } +-_ACEOF +-chmod +x $CONFIG_STATUS +-ac_clean_files=$ac_clean_files_save +- +- +-# configure is writing to config.log, and then calls config.status. +-# config.status does its own redirection, appending to config.log. +-# Unfortunately, on DOS this fails, as config.log is still kept open +-# by configure, so config.status won't be able to write to it; its +-# output is simply discarded. So we exec the FD to /dev/null, +-# effectively closing config.log, so it can be properly (re)opened and +-# appended to by config.status. When coming back to configure, we +-# need to make the FD available again. +-if test "$no_create" != yes; then +- ac_cs_success=: +- exec 5>/dev/null +- $SHELL $CONFIG_STATUS || ac_cs_success=false +- exec 5>>config.log +- # Use ||, not &&, to avoid exiting from the if with $? = 1, which +- # would make configure fail if this is the last instruction. +- $ac_cs_success || { (exit 1); exit 1; } +-fi +- +diff -Nur ../boehm-gc/autom4te.cache/requests boehm-gc/autom4te.cache/requests +--- ../boehm-gc/autom4te.cache/requests Sat May 31 15:09:32 2003 ++++ boehm-gc/autom4te.cache/requests Wed Dec 31 16:00:00 1969 +@@ -1,198 +0,0 @@ +-# This file was created by autom4te-2.54. +-# It contains the lists of macros which have been traced. +-# It can be safely removed. +- +-@request = ( +- bless( [ +- '0', +- 0, +- [ +- '/sw/share/autoconf' +- ], +- [ +- '/sw/share/autoconf/autoconf/autoconf.m4f', +- 'aclocal.m4', +- 'configure.in' +- ], +- { +- 'm4_pattern_forbid' => 1, +- 'AC_C_VOLATILE' => 1, +- 'AC_TYPE_OFF_T' => 1, +- 'AC_FUNC_CLOSEDIR_VOID' => 1, +- 'AC_REPLACE_FNMATCH' => 1, +- 'AC_PROG_LIBTOOL' => 1, +- 'AC_FUNC_STAT' => 1, +- 'AC_FUNC_WAIT3' => 1, +- 'AC_HEADER_TIME' => 1, +- 'AC_FUNC_LSTAT' => 1, +- 'AC_STRUCT_TM' => 1, +- 'AM_AUTOMAKE_VERSION' => 1, +- 'AC_FUNC_GETMNTENT' => 1, +- 'AC_TYPE_MODE_T' => 1, +- 'AC_FUNC_STRTOD' => 1, +- 'AC_CHECK_HEADERS' => 1, +- 'AC_FUNC_STRNLEN' => 1, +- 'AC_PROG_CXX' => 1, +- 'AC_PATH_X' => 1, +- 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1, +- 'AC_PROG_AWK' => 1, +- 'AC_HEADER_STDC' => 1, +- 'AC_HEADER_MAJOR' => 1, +- 'AC_FUNC_ERROR_AT_LINE' => 1, +- 'AC_PROG_GCC_TRADITIONAL' => 1, +- 'AC_LIBSOURCE' => 1, +- 'AC_FUNC_MBRTOWC' => 1, +- 'AC_STRUCT_ST_BLOCKS' => 1, +- 'AC_TYPE_SIGNAL' => 1, +- 'AC_TYPE_UID_T' => 1, +- 'AC_CONFIG_AUX_DIR' => 1, +- 'AC_PROG_MAKE_SET' => 1, +- 'm4_pattern_allow' => 1, +- 'AC_DEFINE_TRACE_LITERAL' => 1, +- 'AC_FUNC_STRERROR_R' => 1, +- 'AC_PROG_CC' => 1, +- 'AC_FUNC_FORK' => 1, +- 'AC_DECL_SYS_SIGLIST' => 1, +- 'AC_FUNC_STRCOLL' => 1, +- 'AC_FUNC_VPRINTF' => 1, +- 'AC_PROG_YACC' => 1, +- 'AC_INIT' => 1, +- 'AC_STRUCT_TIMEZONE' => 1, +- 'AC_FUNC_CHOWN' => 1, +- 'AC_SUBST' => 1, +- 'AC_FUNC_ALLOCA' => 1, +- 'AC_CANONICAL_HOST' => 1, +- 'AC_FUNC_GETPGRP' => 1, +- 'AC_PROG_RANLIB' => 1, +- 'AM_INIT_AUTOMAKE' => 1, +- 'AC_FUNC_SETPGRP' => 1, +- 'AC_CONFIG_SUBDIRS' => 1, +- 'AC_FUNC_MMAP' => 1, +- 'AC_FUNC_REALLOC' => 1, +- 'AC_TYPE_SIZE_T' => 1, +- 'AC_CHECK_TYPES' => 1, +- 'AC_CHECK_MEMBERS' => 1, +- 'AM_MAINTAINER_MODE' => 1, +- 'AC_FUNC_UTIME_NULL' => 1, +- 'AC_FUNC_SELECT_ARGTYPES' => 1, +- 'AC_FUNC_STRFTIME' => 1, +- 'AC_HEADER_STAT' => 1, +- 'AC_C_INLINE' => 1, +- 'AC_PROG_CPP' => 1, +- 'AC_TYPE_PID_T' => 1, +- 'AC_PROG_LEX' => 1, +- 'AC_C_CONST' => 1, +- 'AC_CONFIG_FILES' => 1, +- 'include' => 1, +- 'AC_FUNC_SETVBUF_REVERSED' => 1, +- 'AC_PROG_INSTALL' => 1, +- 'AM_GNU_GETTEXT' => 1, +- 'AC_CHECK_LIB' => 1, +- 'AC_FUNC_OBSTACK' => 1, +- 'AC_FUNC_MALLOC' => 1, +- 'AC_FUNC_GETGROUPS' => 1, +- 'AC_FUNC_GETLOADAVG' => 1, +- 'AH_OUTPUT' => 1, +- 'AC_FUNC_FSEEKO' => 1, +- 'AM_PROG_CC_C_O' => 1, +- 'AC_FUNC_MKTIME' => 1, +- 'AC_CANONICAL_SYSTEM' => 1, +- 'AM_CONDITIONAL' => 1, +- 'AC_CONFIG_HEADERS' => 1, +- 'AC_HEADER_SYS_WAIT' => 1, +- 'AC_PROG_LN_S' => 1, +- 'AC_FUNC_MEMCMP' => 1, +- 'm4_include' => 1, +- 'AC_HEADER_DIRENT' => 1, +- 'AC_CHECK_FUNCS' => 1 +- } +- ], 'Request' ), +- bless( [ +- '1', +- 1, +- [ +- '/sw/share/autoconf-2.54' +- ], +- [ +- '--reload-state=/sw/share/autoconf-2.54/autoconf/autoconf.m4f', +- 'aclocal.m4', +- 'configure.in' +- ], +- { +- 'm4_pattern_forbid' => 1, +- 'AC_TYPE_OFF_T' => 1, +- 'AC_PROG_LIBTOOL' => 1, +- 'AC_FUNC_STAT' => 1, +- 'AC_HEADER_TIME' => 1, +- 'AC_FUNC_WAIT3' => 1, +- 'AC_STRUCT_TM' => 1, +- 'AC_FUNC_LSTAT' => 1, +- 'AC_TYPE_MODE_T' => 1, +- 'AC_FUNC_STRTOD' => 1, +- 'AC_CHECK_HEADERS' => 1, +- 'AC_PROG_CXX' => 1, +- 'AC_PATH_X' => 1, +- 'AC_PROG_AWK' => 1, +- 'AC_HEADER_STDC' => 1, +- 'AC_HEADER_MAJOR' => 1, +- 'AC_FUNC_ERROR_AT_LINE' => 1, +- 'AC_PROG_GCC_TRADITIONAL' => 1, +- 'AC_LIBSOURCE' => 1, +- 'AC_STRUCT_ST_BLOCKS' => 1, +- 'AC_TYPE_SIGNAL' => 1, +- 'AC_TYPE_UID_T' => 1, +- 'AC_PROG_MAKE_SET' => 1, +- 'm4_pattern_allow' => 1, +- 'AC_DEFINE_TRACE_LITERAL' => 1, +- 'AM_PROG_LIBTOOL' => 1, +- 'AC_FUNC_STRERROR_R' => 1, +- 'AC_PROG_CC' => 1, +- 'AC_FUNC_FORK' => 1, +- 'AC_DECL_SYS_SIGLIST' => 1, +- 'AC_FUNC_STRCOLL' => 1, +- 'AC_FUNC_VPRINTF' => 1, +- 'AC_PROG_YACC' => 1, +- 'AC_STRUCT_TIMEZONE' => 1, +- 'AC_FUNC_CHOWN' => 1, +- 'AC_SUBST' => 1, +- 'AC_FUNC_ALLOCA' => 1, +- 'AC_FUNC_GETPGRP' => 1, +- 'AC_PROG_RANLIB' => 1, +- 'AC_FUNC_SETPGRP' => 1, +- 'AC_FUNC_MMAP' => 1, +- 'AC_TYPE_SIZE_T' => 1, +- 'AC_CHECK_TYPES' => 1, +- 'AC_FUNC_UTIME_NULL' => 1, +- 'AC_FUNC_STRFTIME' => 1, +- 'AC_HEADER_STAT' => 1, +- 'AC_C_INLINE' => 1, +- 'AC_PROG_CPP' => 1, +- 'AC_C_CONST' => 1, +- 'AC_PROG_LEX' => 1, +- 'AC_TYPE_PID_T' => 1, +- 'AC_CONFIG_FILES' => 1, +- 'include' => 1, +- 'AC_FUNC_SETVBUF_REVERSED' => 1, +- 'AC_FUNC_FNMATCH' => 1, +- 'AC_PROG_INSTALL' => 1, +- 'AM_GNU_GETTEXT' => 1, +- 'AC_FUNC_OBSTACK' => 1, +- 'AC_CHECK_LIB' => 1, +- 'AC_FUNC_MALLOC' => 1, +- 'AC_FUNC_GETGROUPS' => 1, +- 'AC_FUNC_GETLOADAVG' => 1, +- 'AH_OUTPUT' => 1, +- 'AC_FUNC_FSEEKO' => 1, +- 'AC_FUNC_MKTIME' => 1, +- 'AM_CONDITIONAL' => 1, +- 'AC_CONFIG_HEADERS' => 1, +- 'AC_HEADER_SYS_WAIT' => 1, +- 'AC_PROG_LN_S' => 1, +- 'AC_FUNC_MEMCMP' => 1, +- 'm4_include' => 1, +- 'AC_HEADER_DIRENT' => 1, +- 'AC_CHECK_FUNCS' => 1 +- } +- ], 'Request' ) +- ); +- +diff -Nur ../boehm-gc/autom4te.cache/traces.0 boehm-gc/autom4te.cache/traces.0 +--- ../boehm-gc/autom4te.cache/traces.0 Mon May 26 13:14:22 2003 ++++ boehm-gc/autom4te.cache/traces.0 Wed Dec 31 16:00:00 1969 +@@ -1,185 +0,0 @@ +-m4trace:configure.in:16: -1- AC_INIT([gcj_mlc.c]) +-m4trace:configure.in:16: -1- m4_pattern_forbid([^_?A[CHUM]_]) +-m4trace:configure.in:16: -1- m4_pattern_forbid([_AC_]) +-m4trace:configure.in:16: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +-m4trace:configure.in:16: -1- m4_pattern_allow([^AS_FLAGS$]) +-m4trace:configure.in:16: -1- m4_pattern_forbid([^_?m4_]) +-m4trace:configure.in:16: -1- m4_pattern_forbid([^dnl$]) +-m4trace:configure.in:16: -1- m4_pattern_forbid([^_?AS_]) +-m4trace:configure.in:16: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) +-m4trace:configure.in:16: -1- AC_SUBST([PATH_SEPARATOR]) +-m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +-m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +-m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +-m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +-m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +-m4trace:configure.in:16: -1- AC_SUBST([exec_prefix], [NONE]) +-m4trace:configure.in:16: -1- AC_SUBST([prefix], [NONE]) +-m4trace:configure.in:16: -1- AC_SUBST([program_transform_name], [s,x,x,]) +-m4trace:configure.in:16: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +-m4trace:configure.in:16: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +-m4trace:configure.in:16: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +-m4trace:configure.in:16: -1- AC_SUBST([datadir], ['${prefix}/share']) +-m4trace:configure.in:16: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +-m4trace:configure.in:16: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +-m4trace:configure.in:16: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +-m4trace:configure.in:16: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +-m4trace:configure.in:16: -1- AC_SUBST([includedir], ['${prefix}/include']) +-m4trace:configure.in:16: -1- AC_SUBST([oldincludedir], ['/usr/include']) +-m4trace:configure.in:16: -1- AC_SUBST([infodir], ['${prefix}/info']) +-m4trace:configure.in:16: -1- AC_SUBST([mandir], ['${prefix}/man']) +-m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +-m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +-#undef PACKAGE_NAME]) +-m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +-m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +-#undef PACKAGE_TARNAME]) +-m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +-m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +-#undef PACKAGE_VERSION]) +-m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +-m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +-#undef PACKAGE_STRING]) +-m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +-m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +-#undef PACKAGE_BUGREPORT]) +-m4trace:configure.in:16: -1- AC_SUBST([build_alias]) +-m4trace:configure.in:16: -1- AC_SUBST([host_alias]) +-m4trace:configure.in:16: -1- AC_SUBST([target_alias]) +-m4trace:configure.in:16: -1- AC_SUBST([DEFS]) +-m4trace:configure.in:16: -1- AC_SUBST([ECHO_C]) +-m4trace:configure.in:16: -1- AC_SUBST([ECHO_N]) +-m4trace:configure.in:16: -1- AC_SUBST([ECHO_T]) +-m4trace:configure.in:16: -1- AC_SUBST([LIBS]) +-m4trace:configure.in:25: -1- AC_CONFIG_AUX_DIR([.]) +-m4trace:configure.in:27: -1- AC_SUBST([gc_basedir]) +-m4trace:configure.in:27: -1- AC_CONFIG_AUX_DIR([$gc_basedir/..]) +-m4trace:configure.in:27: -1- AC_CONFIG_AUX_DIR([..]) +-m4trace:configure.in:27: -1- AC_CANONICAL_SYSTEM +-m4trace:configure.in:27: -1- AC_CANONICAL_HOST +-m4trace:configure.in:27: -1- AC_SUBST([build], [$ac_cv_build]) +-m4trace:configure.in:27: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([host], [$ac_cv_host]) +-m4trace:configure.in:27: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([target], [$ac_cv_target]) +-m4trace:configure.in:27: -1- AC_SUBST([target_cpu], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([target_vendor], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([target_os], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([mkinstalldirs]) +-m4trace:configure.in:27: -1- AM_INIT_AUTOMAKE([gc], [6.0], [no-define]) +-m4trace:configure.in:27: -1- AC_PROG_INSTALL +-m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM]) +-m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT]) +-m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA]) +-m4trace:configure.in:27: -1- AC_SUBST([PACKAGE]) +-m4trace:configure.in:27: -1- AC_SUBST([VERSION]) +-m4trace:configure.in:27: -2- AC_DEFINE_TRACE_LITERAL([PACKAGE]) +-m4trace:configure.in:27: -2- AH_OUTPUT([PACKAGE], [/* Name of package */ +-#undef PACKAGE]) +-m4trace:configure.in:27: -2- AC_DEFINE_TRACE_LITERAL([VERSION]) +-m4trace:configure.in:27: -2- AH_OUTPUT([VERSION], [/* Version number of package */ +-#undef VERSION]) +-m4trace:configure.in:27: -1- AC_SUBST([ACLOCAL]) +-m4trace:configure.in:27: -1- AC_SUBST([AUTOCONF]) +-m4trace:configure.in:27: -1- AC_SUBST([AUTOMAKE]) +-m4trace:configure.in:27: -1- AC_SUBST([AUTOHEADER]) +-m4trace:configure.in:27: -1- AC_SUBST([MAKEINFO]) +-m4trace:configure.in:27: -1- AC_PROG_MAKE_SET +-m4trace:configure.in:27: -1- AC_SUBST([SET_MAKE]) +-m4trace:configure.in:27: -1- AC_SUBST([CC]) +-m4trace:configure.in:27: -1- AC_SUBST([CC]) +-m4trace:configure.in:27: -1- AC_SUBST([CXX]) +-m4trace:configure.in:27: -1- AC_SUBST([AS]) +-m4trace:configure.in:27: -1- AC_SUBST([ac_ct_AS]) +-m4trace:configure.in:27: -1- AC_SUBST([AR]) +-m4trace:configure.in:27: -1- AC_SUBST([ac_ct_AR]) +-m4trace:configure.in:27: -1- AC_SUBST([RANLIB]) +-m4trace:configure.in:27: -1- AC_SUBST([ac_ct_RANLIB]) +-m4trace:configure.in:27: -1- AC_PROG_INSTALL +-m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM]) +-m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT]) +-m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA]) +-m4trace:configure.in:27: -1- AM_MAINTAINER_MODE +-m4trace:configure.in:27: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) +-m4trace:configure.in:27: -1- AC_SUBST([MAINTAINER_MODE_TRUE]) +-m4trace:configure.in:27: -1- AC_SUBST([MAINTAINER_MODE_FALSE]) +-m4trace:configure.in:27: -1- AC_SUBST([MAINT]) +-m4trace:configure.in:27: -1- AC_SUBST([GC_CFLAGS]) +-m4trace:configure.in:29: -1- AC_PROG_LIBTOOL +-m4trace:configure.in:29: -1- AC_PROG_LN_S +-m4trace:configure.in:29: -1- AC_SUBST([LN_S], [$as_ln_s]) +-m4trace:configure.in:29: -1- AC_SUBST([RANLIB]) +-m4trace:configure.in:29: -1- AC_SUBST([ac_ct_RANLIB]) +-m4trace:configure.in:29: -1- AC_SUBST([STRIP]) +-m4trace:configure.in:29: -1- AC_SUBST([ac_ct_STRIP]) +-m4trace:configure.in:29: -1- AC_SUBST([LIBTOOL]) +-m4trace:configure.in:29: -1- AC_SUBST([CXXCPP]) +-m4trace:configure.in:29: -1- AC_SUBST([CPPFLAGS]) +-m4trace:configure.in:29: -1- AC_SUBST([CXXCPP]) +-m4trace:configure.in:38: -1- AM_MAINTAINER_MODE +-m4trace:configure.in:38: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) +-m4trace:configure.in:38: -1- AC_SUBST([MAINTAINER_MODE_TRUE]) +-m4trace:configure.in:38: -1- AC_SUBST([MAINTAINER_MODE_FALSE]) +-m4trace:configure.in:38: -1- AC_SUBST([MAINT]) +-m4trace:configure.in:77: -1- AC_DEFINE_TRACE_LITERAL([GC_LINUX_THREADS]) +-m4trace:configure.in:78: -1- AC_DEFINE_TRACE_LITERAL([_REENTRANT]) +-m4trace:configure.in:80: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK]) +-m4trace:configure.in:82: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC]) +-m4trace:configure.in:85: -1- AC_DEFINE_TRACE_LITERAL([GC_LINUX_THREADS]) +-m4trace:configure.in:86: -1- AC_DEFINE_TRACE_LITERAL([_REENTRANT]) +-m4trace:configure.in:90: -1- AC_DEFINE_TRACE_LITERAL([GC_HPUX_THREADS]) +-m4trace:configure.in:91: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_C_SOURCE]) +-m4trace:configure.in:93: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK]) +-m4trace:configure.in:95: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC]) +-m4trace:configure.in:100: -1- AC_DEFINE_TRACE_LITERAL([GC_FREEBSD_THREADS]) +-m4trace:configure.in:105: -1- AC_DEFINE_TRACE_LITERAL([GC_SOLARIS_THREADS]) +-m4trace:configure.in:106: -1- AC_DEFINE_TRACE_LITERAL([GC_SOLARIS_PTHREADS]) +-m4trace:configure.in:109: -1- AC_DEFINE_TRACE_LITERAL([GC_IRIX_THREADS]) +-m4trace:configure.in:117: -1- AC_DEFINE_TRACE_LITERAL([GC_DARWIN_THREADS]) +-m4trace:configure.in:118: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC]) +-m4trace:configure.in:120: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK]) +-m4trace:configure.in:124: -1- AC_DEFINE_TRACE_LITERAL([GC_WIN32_THREADS]) +-m4trace:configure.in:125: -1- AC_DEFINE_TRACE_LITERAL([NO_GETENV]) +-m4trace:configure.in:134: -1- AC_SUBST([THREADLIBS]) +-m4trace:configure.in:141: -1- AM_CONDITIONAL([POWERPC_DARWIN], [test x$powerpc_darwin = xtrue]) +-m4trace:configure.in:141: -1- AC_SUBST([POWERPC_DARWIN_TRUE]) +-m4trace:configure.in:141: -1- AC_SUBST([POWERPC_DARWIN_FALSE]) +-m4trace:configure.in:148: -1- AC_CHECK_LIB([dl], [dlopen], [EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl"]) +-m4trace:configure.in:152: -1- AC_SUBST([EXTRA_TEST_LIBS]) +-m4trace:configure.in:155: -1- AC_SUBST([target_all]) +-m4trace:configure.in:156: -1- AC_SUBST([target_alias]) +-m4trace:configure.in:174: -1- AC_DEFINE_TRACE_LITERAL([ECOS]) +-m4trace:configure.in:179: -1- AC_SUBST([CXX]) +-m4trace:configure.in:181: -1- AC_SUBST([INCLUDES]) +-m4trace:configure.in:182: -1- AC_SUBST([CXXINCLUDES]) +-m4trace:configure.in:197: -1- AC_DEFINE_TRACE_LITERAL([SOLARIS25_PROC_VDB_BUG_FIXED]) +-m4trace:configure.in:201: -1- AC_DEFINE_TRACE_LITERAL([STACKBASE]) +-m4trace:configure.in:202: -1- AC_DEFINE_TRACE_LITERAL([DATASTART_IS_ETEXT]) +-m4trace:configure.in:211: -1- AC_DEFINE_TRACE_LITERAL([NO_EXECUTE_PERMISSION]) +-m4trace:configure.in:215: -1- AC_DEFINE_TRACE_LITERAL([SUNOS53_SHARED_LIB]) +-m4trace:configure.in:228: -1- AC_SUBST([addobjs]) +-m4trace:configure.in:252: -1- AC_SUBST([MY_CFLAGS]) +-m4trace:configure.in:256: -1- AC_DEFINE_TRACE_LITERAL([SILENT]) +-m4trace:configure.in:257: -1- AC_DEFINE_TRACE_LITERAL([NO_SIGNALS]) +-m4trace:configure.in:258: -1- AC_DEFINE_TRACE_LITERAL([NO_EXECUTE_PERMISSION]) +-m4trace:configure.in:259: -1- AC_DEFINE_TRACE_LITERAL([ALL_INTERIOR_POINTERS]) +-m4trace:configure.in:262: -1- AC_DEFINE_TRACE_LITERAL([JAVA_FINALIZATION]) +-m4trace:configure.in:263: -1- AC_DEFINE_TRACE_LITERAL([GC_GCJ_SUPPORT]) +-m4trace:configure.in:264: -1- AC_DEFINE_TRACE_LITERAL([ATOMIC_UNCOLLECTABLE]) +-m4trace:configure.in:270: -1- AC_DEFINE_TRACE_LITERAL([NO_SIGSET]) +-m4trace:configure.in:271: -1- AC_DEFINE_TRACE_LITERAL([NO_DEBUGGING]) +-m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([KEEP_BACK_PTRS]) +-m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([DBG_HDRS_ALL]) +-m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([MAKE_BACK_GRAPH]) +-m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([MAKE_BACK_GRAPH]) +-m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([SAVE_CALL_COUNT]) +-m4trace:configure.in:292: -1- AM_CONDITIONAL([USE_LIBDIR], [test -z "$with_cross_host"]) +-m4trace:configure.in:292: -1- AC_SUBST([USE_LIBDIR_TRUE]) +-m4trace:configure.in:292: -1- AC_SUBST([USE_LIBDIR_FALSE]) +-m4trace:configure.in:317: -1- AC_CONFIG_FILES([Makefile include/Makefile]) +-m4trace:configure.in:317: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +-m4trace:configure.in:317: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +diff -Nur ../boehm-gc/autom4te.cache/traces.1 boehm-gc/autom4te.cache/traces.1 +--- ../boehm-gc/autom4te.cache/traces.1 Sat May 31 15:09:31 2003 ++++ boehm-gc/autom4te.cache/traces.1 Wed Dec 31 16:00:00 1969 +@@ -1,250 +0,0 @@ +-m4trace:aclocal.m4:166: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +-m4trace:configure.in:16: -1- m4_pattern_forbid([^_?A[CHUM]_]) +-m4trace:configure.in:16: -1- m4_pattern_forbid([_AC_]) +-m4trace:configure.in:16: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +-m4trace:configure.in:16: -1- m4_pattern_allow([^AS_FLAGS$]) +-m4trace:configure.in:16: -1- m4_pattern_forbid([^_?m4_]) +-m4trace:configure.in:16: -1- m4_pattern_forbid([^dnl$]) +-m4trace:configure.in:16: -1- m4_pattern_forbid([^_?AS_]) +-m4trace:configure.in:16: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) +-m4trace:configure.in:16: -1- AC_SUBST([PATH_SEPARATOR]) +-m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +-m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +-m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +-m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +-m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +-m4trace:configure.in:16: -1- AC_SUBST([exec_prefix], [NONE]) +-m4trace:configure.in:16: -1- AC_SUBST([prefix], [NONE]) +-m4trace:configure.in:16: -1- AC_SUBST([program_transform_name], [s,x,x,]) +-m4trace:configure.in:16: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +-m4trace:configure.in:16: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +-m4trace:configure.in:16: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +-m4trace:configure.in:16: -1- AC_SUBST([datadir], ['${prefix}/share']) +-m4trace:configure.in:16: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +-m4trace:configure.in:16: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +-m4trace:configure.in:16: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +-m4trace:configure.in:16: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +-m4trace:configure.in:16: -1- AC_SUBST([includedir], ['${prefix}/include']) +-m4trace:configure.in:16: -1- AC_SUBST([oldincludedir], ['/usr/include']) +-m4trace:configure.in:16: -1- AC_SUBST([infodir], ['${prefix}/info']) +-m4trace:configure.in:16: -1- AC_SUBST([mandir], ['${prefix}/man']) +-m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +-m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +-#undef PACKAGE_NAME]) +-m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +-m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +-#undef PACKAGE_TARNAME]) +-m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +-m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +-#undef PACKAGE_VERSION]) +-m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +-m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +-#undef PACKAGE_STRING]) +-m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +-m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +-#undef PACKAGE_BUGREPORT]) +-m4trace:configure.in:16: -1- AC_SUBST([build_alias]) +-m4trace:configure.in:16: -1- AC_SUBST([host_alias]) +-m4trace:configure.in:16: -1- AC_SUBST([target_alias]) +-m4trace:configure.in:16: -1- AC_SUBST([DEFS]) +-m4trace:configure.in:16: -1- AC_SUBST([ECHO_C]) +-m4trace:configure.in:16: -1- AC_SUBST([ECHO_N]) +-m4trace:configure.in:16: -1- AC_SUBST([ECHO_T]) +-m4trace:configure.in:16: -1- AC_SUBST([LIBS]) +-m4trace:configure.in:27: -1- AC_SUBST([gc_basedir]) +-m4trace:configure.in:27: -1- AC_SUBST([build], [$ac_cv_build]) +-m4trace:configure.in:27: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([host], [$ac_cv_host]) +-m4trace:configure.in:27: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([target], [$ac_cv_target]) +-m4trace:configure.in:27: -1- AC_SUBST([target_cpu], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([target_vendor], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([target_os], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) +-m4trace:configure.in:27: -1- AC_SUBST([mkinstalldirs]) +-m4trace:configure.in:27: -1- AC_PROG_INSTALL +-m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM]) +-m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT]) +-m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA]) +-m4trace:configure.in:27: -1- AC_SUBST([PACKAGE], [gc]) +-m4trace:configure.in:27: -1- AC_SUBST([VERSION], [6.1a1]) +-m4trace:configure.in:27: -1- AC_SUBST([ACLOCAL]) +-m4trace:configure.in:27: -1- AC_SUBST([AUTOCONF]) +-m4trace:configure.in:27: -1- AC_SUBST([AUTOMAKE]) +-m4trace:configure.in:27: -1- AC_SUBST([AUTOHEADER]) +-m4trace:configure.in:27: -1- AC_SUBST([MAKEINFO]) +-m4trace:configure.in:27: -1- AC_SUBST([AMTAR]) +-m4trace:configure.in:27: -1- AC_SUBST([install_sh]) +-m4trace:configure.in:27: -1- AC_SUBST([STRIP]) +-m4trace:configure.in:27: -1- AC_SUBST([ac_ct_STRIP]) +-m4trace:configure.in:27: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) +-m4trace:configure.in:27: -1- AC_PROG_AWK +-m4trace:configure.in:27: -1- AC_SUBST([AWK]) +-m4trace:configure.in:27: -1- AC_PROG_MAKE_SET +-m4trace:configure.in:27: -1- AC_SUBST([SET_MAKE]) +-m4trace:configure.in:27: -1- AC_SUBST([AS]) +-m4trace:configure.in:27: -1- AC_SUBST([ac_ct_AS]) +-m4trace:configure.in:27: -1- AC_SUBST([AR]) +-m4trace:configure.in:27: -1- AC_SUBST([ac_ct_AR]) +-m4trace:configure.in:27: -1- AC_SUBST([RANLIB]) +-m4trace:configure.in:27: -1- AC_SUBST([ac_ct_RANLIB]) +-m4trace:configure.in:27: -1- AC_PROG_INSTALL +-m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM]) +-m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT]) +-m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA]) +-m4trace:configure.in:27: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) +-m4trace:configure.in:27: -1- AC_SUBST([MAINTAINER_MODE_TRUE]) +-m4trace:configure.in:27: -1- AC_SUBST([MAINTAINER_MODE_FALSE]) +-m4trace:configure.in:27: -1- AC_SUBST([MAINT]) +-m4trace:configure.in:27: -1- AC_SUBST([GC_CFLAGS]) +-m4trace:configure.in:29: -1- AM_PROG_LIBTOOL +-m4trace:configure.in:29: -1- AC_PROG_LIBTOOL +-m4trace:configure.in:29: -1- AC_PROG_CC +-m4trace:configure.in:29: -1- AC_SUBST([CC]) +-m4trace:configure.in:29: -1- AC_SUBST([CFLAGS]) +-m4trace:configure.in:29: -1- AC_SUBST([LDFLAGS]) +-m4trace:configure.in:29: -1- AC_SUBST([CPPFLAGS]) +-m4trace:configure.in:29: -1- AC_SUBST([CC]) +-m4trace:configure.in:29: -1- AC_SUBST([ac_ct_CC]) +-m4trace:configure.in:29: -1- AC_SUBST([CC]) +-m4trace:configure.in:29: -1- AC_SUBST([ac_ct_CC]) +-m4trace:configure.in:29: -1- AC_SUBST([CC]) +-m4trace:configure.in:29: -1- AC_SUBST([CC]) +-m4trace:configure.in:29: -1- AC_SUBST([ac_ct_CC]) +-m4trace:configure.in:29: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +-m4trace:configure.in:29: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +-m4trace:configure.in:29: -1- AC_SUBST([DEPDIR]) +-m4trace:configure.in:29: -1- AC_SUBST([am__include]) +-m4trace:configure.in:29: -1- AC_SUBST([am__quote]) +-m4trace:configure.in:29: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +-m4trace:configure.in:29: -1- AC_SUBST([AMDEP_TRUE]) +-m4trace:configure.in:29: -1- AC_SUBST([AMDEP_FALSE]) +-m4trace:configure.in:29: -1- AC_SUBST([AMDEPBACKSLASH]) +-m4trace:configure.in:29: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +-m4trace:configure.in:29: -1- AC_PROG_LN_S +-m4trace:configure.in:29: -1- AC_SUBST([LN_S], [$as_ln_s]) +-m4trace:configure.in:29: -1- AC_SUBST([ECHO]) +-m4trace:configure.in:29: -1- AC_SUBST([RANLIB]) +-m4trace:configure.in:29: -1- AC_SUBST([ac_ct_RANLIB]) +-m4trace:configure.in:29: -1- AC_SUBST([STRIP]) +-m4trace:configure.in:29: -1- AC_SUBST([ac_ct_STRIP]) +-m4trace:configure.in:29: -1- AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], [AC_CHECK_FUNC([dlopen], +- [lt_cv_dlopen="dlopen"], +- [AC_CHECK_LIB([dl], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], +- [AC_CHECK_LIB([svld], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], +- [AC_CHECK_LIB([dld], [dld_link], +- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) +- ]) +- ]) +- ]) +- ]) +-m4trace:configure.in:29: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], +- [AC_CHECK_LIB([dld], [dld_link], +- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) +- ]) +- ]) +-m4trace:configure.in:29: -1- AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], +- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) +- ]) +-m4trace:configure.in:29: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) +-m4trace:configure.in:29: -1- AC_CHECK_HEADERS([dlfcn.h]) +-m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ +-#undef HAVE_DLFCN_H]) +-m4trace:configure.in:29: -1- AC_HEADER_STDC +-m4trace:configure.in:29: -1- AC_PROG_CPP +-m4trace:configure.in:29: -1- AC_SUBST([CPP]) +-m4trace:configure.in:29: -1- AC_SUBST([CPPFLAGS]) +-m4trace:configure.in:29: -1- AC_SUBST([CPP]) +-m4trace:configure.in:29: -1- AC_SUBST([EGREP]) +-m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +-m4trace:configure.in:29: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +-#undef STDC_HEADERS]) +-m4trace:configure.in:29: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ +- inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default]) +-m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +-#undef HAVE_SYS_TYPES_H]) +-m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +-#undef HAVE_SYS_STAT_H]) +-m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +-#undef HAVE_STDLIB_H]) +-m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +-#undef HAVE_STRING_H]) +-m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +-#undef HAVE_MEMORY_H]) +-m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +-#undef HAVE_STRINGS_H]) +-m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +-#undef HAVE_INTTYPES_H]) +-m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +-#undef HAVE_STDINT_H]) +-m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +-#undef HAVE_UNISTD_H]) +-m4trace:configure.in:29: -1- AC_SUBST([LIBTOOL]) +-m4trace:configure.in:38: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) +-m4trace:configure.in:38: -1- AC_SUBST([MAINTAINER_MODE_TRUE]) +-m4trace:configure.in:38: -1- AC_SUBST([MAINTAINER_MODE_FALSE]) +-m4trace:configure.in:38: -1- AC_SUBST([MAINT]) +-m4trace:configure.in:77: -1- AC_DEFINE_TRACE_LITERAL([GC_LINUX_THREADS]) +-m4trace:configure.in:78: -1- AC_DEFINE_TRACE_LITERAL([_REENTRANT]) +-m4trace:configure.in:80: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK]) +-m4trace:configure.in:82: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC]) +-m4trace:configure.in:85: -1- AC_DEFINE_TRACE_LITERAL([GC_LINUX_THREADS]) +-m4trace:configure.in:86: -1- AC_DEFINE_TRACE_LITERAL([_REENTRANT]) +-m4trace:configure.in:90: -1- AC_DEFINE_TRACE_LITERAL([GC_HPUX_THREADS]) +-m4trace:configure.in:91: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_C_SOURCE]) +-m4trace:configure.in:93: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK]) +-m4trace:configure.in:95: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC]) +-m4trace:configure.in:100: -1- AC_DEFINE_TRACE_LITERAL([GC_FREEBSD_THREADS]) +-m4trace:configure.in:105: -1- AC_DEFINE_TRACE_LITERAL([GC_SOLARIS_THREADS]) +-m4trace:configure.in:106: -1- AC_DEFINE_TRACE_LITERAL([GC_SOLARIS_PTHREADS]) +-m4trace:configure.in:109: -1- AC_DEFINE_TRACE_LITERAL([GC_IRIX_THREADS]) +-m4trace:configure.in:115: -1- AC_DEFINE_TRACE_LITERAL([GC_DARWIN_THREADS]) +-m4trace:configure.in:116: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC]) +-m4trace:configure.in:118: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK]) +-m4trace:configure.in:124: -1- AC_DEFINE_TRACE_LITERAL([GC_WIN32_THREADS]) +-m4trace:configure.in:125: -1- AC_DEFINE_TRACE_LITERAL([NO_GETENV]) +-m4trace:configure.in:134: -1- AC_SUBST([THREADLIBS]) +-m4trace:configure.in:141: -1- AM_CONDITIONAL([POWERPC_DARWIN], [test x$powerpc_darwin = xtrue]) +-m4trace:configure.in:141: -1- AC_SUBST([POWERPC_DARWIN_TRUE]) +-m4trace:configure.in:141: -1- AC_SUBST([POWERPC_DARWIN_FALSE]) +-m4trace:configure.in:148: -1- AC_CHECK_LIB([dl], [dlopen], [EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl"]) +-m4trace:configure.in:152: -1- AC_SUBST([EXTRA_TEST_LIBS]) +-m4trace:configure.in:155: -1- AC_SUBST([target_all]) +-m4trace:configure.in:156: -1- AC_SUBST([target_alias]) +-m4trace:configure.in:174: -1- AC_DEFINE_TRACE_LITERAL([ECOS]) +-m4trace:configure.in:179: -1- AC_SUBST([CXX]) +-m4trace:configure.in:181: -1- AC_SUBST([INCLUDES]) +-m4trace:configure.in:182: -1- AC_SUBST([CXXINCLUDES]) +-m4trace:configure.in:197: -1- AC_DEFINE_TRACE_LITERAL([SOLARIS25_PROC_VDB_BUG_FIXED]) +-m4trace:configure.in:201: -1- AC_DEFINE_TRACE_LITERAL([STACKBASE]) +-m4trace:configure.in:202: -1- AC_DEFINE_TRACE_LITERAL([DATASTART_IS_ETEXT]) +-m4trace:configure.in:211: -1- AC_DEFINE_TRACE_LITERAL([NO_EXECUTE_PERMISSION]) +-m4trace:configure.in:215: -1- AC_DEFINE_TRACE_LITERAL([SUNOS53_SHARED_LIB]) +-m4trace:configure.in:228: -1- AC_SUBST([addobjs]) +-m4trace:configure.in:252: -1- AC_SUBST([MY_CFLAGS]) +-m4trace:configure.in:256: -1- AC_DEFINE_TRACE_LITERAL([SILENT]) +-m4trace:configure.in:257: -1- AC_DEFINE_TRACE_LITERAL([NO_SIGNALS]) +-m4trace:configure.in:258: -1- AC_DEFINE_TRACE_LITERAL([NO_EXECUTE_PERMISSION]) +-m4trace:configure.in:259: -1- AC_DEFINE_TRACE_LITERAL([ALL_INTERIOR_POINTERS]) +-m4trace:configure.in:262: -1- AC_DEFINE_TRACE_LITERAL([JAVA_FINALIZATION]) +-m4trace:configure.in:263: -1- AC_DEFINE_TRACE_LITERAL([GC_GCJ_SUPPORT]) +-m4trace:configure.in:264: -1- AC_DEFINE_TRACE_LITERAL([ATOMIC_UNCOLLECTABLE]) +-m4trace:configure.in:270: -1- AC_DEFINE_TRACE_LITERAL([NO_SIGSET]) +-m4trace:configure.in:271: -1- AC_DEFINE_TRACE_LITERAL([NO_DEBUGGING]) +-m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([KEEP_BACK_PTRS]) +-m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([DBG_HDRS_ALL]) +-m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([MAKE_BACK_GRAPH]) +-m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([MAKE_BACK_GRAPH]) +-m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([SAVE_CALL_COUNT]) +-m4trace:configure.in:292: -1- AM_CONDITIONAL([USE_LIBDIR], [test -z "$with_cross_host"]) +-m4trace:configure.in:292: -1- AC_SUBST([USE_LIBDIR_TRUE]) +-m4trace:configure.in:292: -1- AC_SUBST([USE_LIBDIR_FALSE]) +-m4trace:configure.in:317: -1- AC_CONFIG_FILES([Makefile include/Makefile]) +-m4trace:configure.in:317: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +-m4trace:configure.in:317: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +diff -Nur ../boehm-gc/backgraph.c boehm-gc/backgraph.c +--- ../boehm-gc/backgraph.c Mon May 26 12:48:52 2003 ++++ boehm-gc/backgraph.c Wed Jan 30 18:48:45 2002 +@@ -307,7 +307,6 @@ + } + while (currentp < (word *)(p + gc_descr)) { + word current = *currentp++; +- FIXUP_POINTER(current); + if (current >= (word)GC_least_plausible_heap_addr && + current <= (word)GC_greatest_plausible_heap_addr) { + ptr_t target = GC_base((GC_PTR)current); +diff -Nur ../boehm-gc/configure boehm-gc/configure +--- ../boehm-gc/configure Sat May 31 21:21:37 2003 ++++ boehm-gc/configure Tue May 13 17:18:14 2003 +@@ -61,6 +61,7 @@ + program_transform_name=s,x,x, + silent= + site= ++sitefile= + srcdir= + target=NONE + verbose= +@@ -175,6 +176,7 @@ + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages ++ --site-file=FILE use FILE as the site file + --version print the version of autoconf that created configure + Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX +@@ -345,6 +347,11 @@ + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + ++ -site-file | --site-file | --site-fil | --site-fi | --site-f) ++ ac_prev=sitefile ;; ++ -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*) ++ sitefile="$ac_optarg" ;; ++ + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) +@@ -510,12 +517,16 @@ + srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + + # Prefer explicitly selected file to automatically selected ones. +-if test -z "$CONFIG_SITE"; then +- if test "x$prefix" != xNONE; then +- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" +- else +- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" ++if test -z "$sitefile"; then ++ if test -z "$CONFIG_SITE"; then ++ if test "x$prefix" != xNONE; then ++ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" ++ else ++ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" ++ fi + fi ++else ++ CONFIG_SITE="$sitefile" + fi + for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then +@@ -593,7 +604,7 @@ + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" + # ./install, which can be erroneously created by make from ./install.sh. + echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +-echo "configure:597: checking for a BSD compatible install" >&5 ++echo "configure:608: checking for a BSD compatible install" >&5 + if test -z "$INSTALL"; then + if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +@@ -646,7 +657,7 @@ + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 +-echo "configure:650: checking whether build environment is sane" >&5 ++echo "configure:661: checking whether build environment is sane" >&5 + # Just in case + sleep 1 + echo timestamp > conftestfile +@@ -703,7 +714,7 @@ + test "$program_transform_name" = "" && program_transform_name="s,x,x," + + echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +-echo "configure:707: checking whether ${MAKE-make} sets \${MAKE}" >&5 ++echo "configure:718: checking whether ${MAKE-make} sets \${MAKE}" >&5 + set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +@@ -736,12 +747,12 @@ + fi + + echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 +-echo "configure:740: checking for Cygwin environment" >&5 ++echo "configure:751: checking for Cygwin environment" >&5 + if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_cygwin=yes + else +@@ -769,19 +780,19 @@ + CYGWIN= + test "$ac_cv_cygwin" = yes && CYGWIN=yes + echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 +-echo "configure:773: checking for mingw32 environment" >&5 ++echo "configure:784: checking for mingw32 environment" >&5 + if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_mingw32=yes + else +@@ -892,7 +903,7 @@ + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 +-echo "configure:896: checking host system type" >&5 ++echo "configure:907: checking host system type" >&5 + + host_alias=$host + case "$host_alias" in +@@ -913,7 +924,7 @@ + echo "$ac_t""$host" 1>&6 + + echo $ac_n "checking target system type""... $ac_c" 1>&6 +-echo "configure:917: checking target system type" >&5 ++echo "configure:928: checking target system type" >&5 + + target_alias=$target + case "$target_alias" in +@@ -931,7 +942,7 @@ + echo "$ac_t""$target" 1>&6 + + echo $ac_n "checking build system type""... $ac_c" 1>&6 +-echo "configure:935: checking build system type" >&5 ++echo "configure:946: checking build system type" >&5 + + build_alias=$build + case "$build_alias" in +@@ -971,7 +982,7 @@ + + missing_dir=`cd $ac_aux_dir && pwd` + echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 +-echo "configure:975: checking for working aclocal" >&5 ++echo "configure:986: checking for working aclocal" >&5 + # Run test in a subshell; some versions of sh will print an error if + # an executable is not found, even if stderr is redirected. + # Redirect stdin to placate older versions of autoconf. Sigh. +@@ -984,7 +995,7 @@ + fi + + echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 +-echo "configure:988: checking for working autoconf" >&5 ++echo "configure:999: checking for working autoconf" >&5 + # Run test in a subshell; some versions of sh will print an error if + # an executable is not found, even if stderr is redirected. + # Redirect stdin to placate older versions of autoconf. Sigh. +@@ -997,7 +1008,7 @@ + fi + + echo $ac_n "checking for working automake""... $ac_c" 1>&6 +-echo "configure:1001: checking for working automake" >&5 ++echo "configure:1012: checking for working automake" >&5 + # Run test in a subshell; some versions of sh will print an error if + # an executable is not found, even if stderr is redirected. + # Redirect stdin to placate older versions of autoconf. Sigh. +@@ -1010,7 +1021,7 @@ + fi + + echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 +-echo "configure:1014: checking for working autoheader" >&5 ++echo "configure:1025: checking for working autoheader" >&5 + # Run test in a subshell; some versions of sh will print an error if + # an executable is not found, even if stderr is redirected. + # Redirect stdin to placate older versions of autoconf. Sigh. +@@ -1023,7 +1034,7 @@ + fi + + echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 +-echo "configure:1027: checking for working makeinfo" >&5 ++echo "configure:1038: checking for working makeinfo" >&5 + # Run test in a subshell; some versions of sh will print an error if + # an executable is not found, even if stderr is redirected. + # Redirect stdin to placate older versions of autoconf. Sigh. +@@ -1049,7 +1060,7 @@ + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:1053: checking for $ac_word" >&5 ++echo "configure:1064: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1079,7 +1090,7 @@ + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:1083: checking for $ac_word" >&5 ++echo "configure:1094: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1128,7 +1139,7 @@ + fi + + echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +-echo "configure:1132: checking whether we are using GNU C" >&5 ++echo "configure:1143: checking whether we are using GNU C" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1137,7 +1148,7 @@ + yes; + #endif + EOF +-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1141: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ++if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1152: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes + else + ac_cv_prog_gcc=no +@@ -1152,7 +1163,7 @@ + ac_save_CFLAGS="$CFLAGS" + CFLAGS= + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +-echo "configure:1156: checking whether ${CC-cc} accepts -g" >&5 ++echo "configure:1167: checking whether ${CC-cc} accepts -g" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1189,7 +1200,7 @@ + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:1193: checking for $ac_word" >&5 ++echo "configure:1204: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1222,7 +1233,7 @@ + test -z "$CXX" && { echo "configure: error: no acceptable c++ found in \$PATH" 1>&2; exit 1; } + + echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 +-echo "configure:1226: checking whether we are using GNU C++" >&5 ++echo "configure:1237: checking whether we are using GNU C++" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1231,7 +1242,7 @@ + yes; + #endif + EOF +-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ++if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1246: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gxx=yes + else + ac_cv_prog_gxx=no +@@ -1246,7 +1257,7 @@ + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS= + echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 +-echo "configure:1250: checking whether ${CXX-g++} accepts -g" >&5 ++echo "configure:1261: checking whether ${CXX-g++} accepts -g" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1279,7 +1290,7 @@ + # NEWLIB_CONFIGURE, which doesn't work because that means that it will + # be run before AC_CANONICAL_HOST. + echo $ac_n "checking build system type""... $ac_c" 1>&6 +-echo "configure:1283: checking build system type" >&5 ++echo "configure:1294: checking build system type" >&5 + + build_alias=$build + case "$build_alias" in +@@ -1300,7 +1311,7 @@ + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. + set dummy ${ac_tool_prefix}as; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:1304: checking for $ac_word" >&5 ++echo "configure:1315: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1332,7 +1343,7 @@ + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. + set dummy ${ac_tool_prefix}ar; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:1336: checking for $ac_word" >&5 ++echo "configure:1347: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1364,7 +1375,7 @@ + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. + set dummy ${ac_tool_prefix}ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:1368: checking for $ac_word" >&5 ++echo "configure:1379: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1396,7 +1407,7 @@ + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:1400: checking for $ac_word" >&5 ++echo "configure:1411: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1441,7 +1452,7 @@ + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" + # ./install, which can be erroneously created by make from ./install.sh. + echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +-echo "configure:1445: checking for a BSD compatible install" >&5 ++echo "configure:1456: checking for a BSD compatible install" >&5 + if test -z "$INSTALL"; then + if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +@@ -1495,7 +1506,7 @@ + + + echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 +-echo "configure:1499: checking whether to enable maintainer-specific portions of Makefiles" >&5 ++echo "configure:1510: checking whether to enable maintainer-specific portions of Makefiles" >&5 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. + if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" +@@ -1533,7 +1544,7 @@ + + + echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 +-echo "configure:1537: checking for executable suffix" >&5 ++echo "configure:1548: checking for executable suffix" >&5 + if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1543,10 +1554,10 @@ + rm -f conftest* + echo 'int main () { return 0; }' > conftest.$ac_ext + ac_cv_exeext= +- if { (eval echo configure:1547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then ++ if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + for file in conftest.*; do + case $file in +- *.c | *.o | *.obj) ;; ++ *.c | *.o | *.obj | *.ilk | *.pdb) ;; + *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; + esac + done +@@ -1665,7 +1676,7 @@ + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 +-echo "configure:1669: checking for ld used by GCC" >&5 ++echo "configure:1680: checking for ld used by GCC" >&5 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw +@@ -1695,10 +1706,10 @@ + esac + elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 +-echo "configure:1699: checking for GNU ld" >&5 ++echo "configure:1710: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 +-echo "configure:1702: checking for non-GNU ld" >&5 ++echo "configure:1713: checking for non-GNU ld" >&5 + fi + if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +@@ -1733,7 +1744,7 @@ + fi + test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } + echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 +-echo "configure:1737: checking if the linker ($LD) is GNU ld" >&5 ++echo "configure:1748: checking if the linker ($LD) is GNU ld" >&5 + if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1750,7 +1761,7 @@ + + + echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 +-echo "configure:1754: checking for $LD option to reload object files" >&5 ++echo "configure:1765: checking for $LD option to reload object files" >&5 + if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1762,7 +1773,7 @@ + test -n "$reload_flag" && reload_flag=" $reload_flag" + + echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 +-echo "configure:1766: checking for BSD-compatible nm" >&5 ++echo "configure:1777: checking for BSD-compatible nm" >&5 + if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1800,7 +1811,7 @@ + echo "$ac_t""$NM" 1>&6 + + echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 +-echo "configure:1804: checking whether ln -s works" >&5 ++echo "configure:1815: checking whether ln -s works" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1821,7 +1832,7 @@ + fi + + echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 +-echo "configure:1825: checking how to recognise dependant libraries" >&5 ++echo "configure:1836: checking how to recognise dependant libraries" >&5 + if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -1994,13 +2005,13 @@ + deplibs_check_method=$lt_cv_deplibs_check_method + + echo $ac_n "checking for object suffix""... $ac_c" 1>&6 +-echo "configure:1998: checking for object suffix" >&5 ++echo "configure:2009: checking for object suffix" >&5 + if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + rm -f conftest* + echo 'int i = 1;' > conftest.$ac_ext +-if { (eval echo configure:2004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:2015: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + for ac_file in conftest.*; do + case $ac_file in + *.c) ;; +@@ -2024,7 +2035,7 @@ + file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 +-echo "configure:2028: checking for ${ac_tool_prefix}file" >&5 ++echo "configure:2039: checking for ${ac_tool_prefix}file" >&5 + if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2086,7 +2097,7 @@ + if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo $ac_n "checking for file""... $ac_c" 1>&6 +-echo "configure:2090: checking for file" >&5 ++echo "configure:2101: checking for file" >&5 + if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2157,7 +2168,7 @@ + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. + set dummy ${ac_tool_prefix}ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:2161: checking for $ac_word" >&5 ++echo "configure:2172: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2189,7 +2200,7 @@ + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:2193: checking for $ac_word" >&5 ++echo "configure:2204: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2224,7 +2235,7 @@ + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. + set dummy ${ac_tool_prefix}strip; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:2228: checking for $ac_word" >&5 ++echo "configure:2239: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2256,7 +2267,7 @@ + # Extract the first word of "strip", so it can be a program name with args. + set dummy strip; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +-echo "configure:2260: checking for $ac_word" >&5 ++echo "configure:2271: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2323,8 +2334,21 @@ + case $host in + *-*-irix6*) + # Find out which ABI we are using. +- echo '#line 2327 "configure"' > conftest.$ac_ext +- if { (eval echo configure:2328: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ echo '#line 2338 "configure"' > conftest.$ac_ext ++ if { (eval echo configure:2339: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -melf32bsmip" ++ ;; ++ *N32*) ++ LD="${LD-ld} -melf32bmipn32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -melf64bmip" ++ ;; ++ esac ++ else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" +@@ -2336,6 +2360,7 @@ + LD="${LD-ld} -64" + ;; + esac ++ fi + fi + rm -rf conftest* + ;; +@@ -2343,7 +2368,7 @@ + ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext +- if { (eval echo configure:2347: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ if { (eval echo configure:2372: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + case "`/usr/bin/file conftest.o`" in + *ELF-32*) + HPUX_IA64_MODE="32" +@@ -2359,7 +2384,7 @@ + x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext +- if { (eval echo configure:2363: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ if { (eval echo configure:2388: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + case $host in +@@ -2403,7 +2428,7 @@ + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 +-echo "configure:2407: checking whether the C compiler needs -belf" >&5 ++echo "configure:2432: checking whether the C compiler needs -belf" >&5 + if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2416,14 +2441,14 @@ + cross_compiling=$ac_cv_prog_cc_cross + + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++if { (eval echo configure:2452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + lt_cv_cc_needs_belf=yes + else +@@ -2453,7 +2478,7 @@ + esac + + echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 +-echo "configure:2457: checking how to run the C++ preprocessor" >&5 ++echo "configure:2482: checking how to run the C++ preprocessor" >&5 + if test -z "$CXXCPP"; then + if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +@@ -2466,12 +2491,12 @@ + cross_compiling=$ac_cv_prog_cxx_cross + CXXCPP="${CXX-g++} -E" + cat > conftest.$ac_ext < + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +-{ (eval echo configure:2475: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++{ (eval echo configure:2500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + : +@@ -2618,7 +2643,7 @@ + + + echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 +-echo "configure:2622: checking whether to enable maintainer-specific portions of Makefiles" >&5 ++echo "configure:2647: checking whether to enable maintainer-specific portions of Makefiles" >&5 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. + if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" +@@ -2651,7 +2676,7 @@ + + + echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 +-echo "configure:2655: checking for executable suffix" >&5 ++echo "configure:2680: checking for executable suffix" >&5 + if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +@@ -2661,10 +2686,10 @@ + rm -f conftest* + echo 'int main () { return 0; }' > conftest.$ac_ext + ac_cv_exeext= +- if { (eval echo configure:2665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then ++ if { (eval echo configure:2690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + for file in conftest.*; do + case $file in +- *.c | *.o | *.obj) ;; ++ *.c | *.o | *.obj | *.ilk | *.pdb) ;; + *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; + esac + done +@@ -2684,7 +2709,7 @@ + fi + + echo $ac_n "checking for thread model used by GCC""... $ac_c" 1>&6 +-echo "configure:2688: checking for thread model used by GCC" >&5 ++echo "configure:2713: checking for thread model used by GCC" >&5 + THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` + if test -z "$THREADS"; then + THREADS=no +@@ -2793,22 +2818,6 @@ + *-*-cygwin*) + THREADLIBS= + ;; +- *-*-darwin*) +- cat >> confdefs.h <<\EOF +-#define GC_DARWIN_THREADS 1 +-EOF +- +- cat >> confdefs.h <<\EOF +-#define THREAD_LOCAL_ALLOC 1 +-EOF +- +- if test "${enable_parallel_mark}" = yes; then +- cat >> confdefs.h <<\EOF +-#define PARALLEL_MARK 1 +-EOF +- +- fi +- ;; + esac + ;; + win32) +@@ -2820,6 +2829,12 @@ + #define NO_GETENV 1 + EOF + ++ if test $enable_shared = yes; then ++ cat >> confdefs.h <<\EOF ++#define GC_DLL 1 ++EOF ++ ++ fi + ;; + decosf1 | irix | mach | os2 | solaris | dce | vxworks) + { echo "configure: error: thread package $THREADS not yet supported" 1>&2; exit 1; } +@@ -2830,28 +2845,8 @@ + esac + + +-case "$host" in +- powerpc-*-darwin*) +- powerpc_darwin=true +- ;; +-esac +- +- +-if test x$powerpc_darwin = xtrue; then +- POWERPC_DARWIN_TRUE= +- POWERPC_DARWIN_FALSE='#' +-else +- POWERPC_DARWIN_TRUE='#' +- POWERPC_DARWIN_FALSE= +-fi +- +-# We never want libdl on darwin. It is a fake libdl that just ends up making +-# dyld calls anyway +-case "$host" in +- *-*-darwin*) ;; +- *) +- echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +-echo "configure:2855: checking for dlopen in -ldl" >&5 ++echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 ++echo "configure:2850: checking for dlopen in -ldl" >&5 + ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +@@ -2859,7 +2854,7 @@ + ac_save_LIBS="$LIBS" + LIBS="-ldl $LIBS" + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++if { (eval echo configure:2869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" + else +@@ -2890,9 +2885,6 @@ + echo "$ac_t""no" 1>&6 + fi + +- ;; +-esac +- + + + target_all=libgcjgc.la +@@ -3108,15 +3100,17 @@ + fi + + +- +- +-if test -z "$with_cross_host"; then +- USE_LIBDIR_TRUE= +- USE_LIBDIR_FALSE='#' ++if test -n "$with_cross_host" && ++ test x"$with_cross_host" != x"no"; then ++ toolexecdir='$(exec_prefix)/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/lib' + else +- USE_LIBDIR_TRUE='#' +- USE_LIBDIR_FALSE= ++ toolexecdir='$(libdir)/gcc-lib/$(target_alias)' ++ toolexeclibdir='$(libdir)' + fi ++toolexeclibdir=$toolexeclibdir/`$CC -print-multi-os-directory` ++ ++ + + if test "${multilib}" = "yes"; then + multilib_arg="--enable-multilib" +@@ -3313,16 +3307,14 @@ + s%@LIBTOOL@%$LIBTOOL%g + s%@CXXCPP@%$CXXCPP%g + s%@THREADLIBS@%$THREADLIBS%g +-s%@POWERPC_DARWIN_TRUE@%$POWERPC_DARWIN_TRUE%g +-s%@POWERPC_DARWIN_FALSE@%$POWERPC_DARWIN_FALSE%g + s%@EXTRA_TEST_LIBS@%$EXTRA_TEST_LIBS%g + s%@target_all@%$target_all%g + s%@INCLUDES@%$INCLUDES%g + s%@CXXINCLUDES@%$CXXINCLUDES%g + s%@addobjs@%$addobjs%g + s%@MY_CFLAGS@%$MY_CFLAGS%g +-s%@USE_LIBDIR_TRUE@%$USE_LIBDIR_TRUE%g +-s%@USE_LIBDIR_FALSE@%$USE_LIBDIR_FALSE%g ++s%@toolexecdir@%$toolexecdir%g ++s%@toolexeclibdir@%$toolexeclibdir%g + + CEOF + EOF +@@ -3331,7 +3323,7 @@ + + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. +-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. ++ac_max_sed_cmds=60 # Maximum number of lines to put in a sed script. + ac_file=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_cmds # Line after last line for current file. +@@ -3433,6 +3425,7 @@ + CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + gc_basedir=${gc_basedir} + CC="${CC}" ++ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}" + DEFS="$DEFS" + + EOF +diff -Nur ../boehm-gc/configure.in boehm-gc/configure.in +--- ../boehm-gc/configure.in Mon May 26 13:33:22 2003 ++++ boehm-gc/configure.in Mon Apr 28 13:55:07 2003 +@@ -1,4 +1,4 @@ +-# Copyright (c) 1999, 2000, 2001, 2002 by Red Hat, Inc. All rights reserved. ++# Copyright (c) 1999, 2000, 2001, 2002, 2003 by Red Hat, Inc. All rights reserved. + # + # THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + # OR IMPLIED. ANY USE IS AT YOUR OWN RISK. +@@ -111,18 +111,14 @@ + *-*-cygwin*) + THREADLIBS= + ;; +- *-*-darwin*) +- AC_DEFINE(GC_DARWIN_THREADS) +- AC_DEFINE(THREAD_LOCAL_ALLOC) +- if test "${enable_parallel_mark}" = yes; then +- AC_DEFINE(PARALLEL_MARK) +- fi +- ;; + esac + ;; + win32) + AC_DEFINE(GC_WIN32_THREADS) + AC_DEFINE(NO_GETENV) ++ if test $enable_shared = yes; then ++ AC_DEFINE(GC_DLL) ++ fi + ;; + decosf1 | irix | mach | os2 | solaris | dce | vxworks) + AC_MSG_ERROR(thread package $THREADS not yet supported) +@@ -133,22 +129,7 @@ + esac + AC_SUBST(THREADLIBS) + +-case "$host" in +- powerpc-*-darwin*) +- powerpc_darwin=true +- ;; +-esac +-AM_CONDITIONAL(POWERPC_DARWIN,test x$powerpc_darwin = xtrue) +- +-# We never want libdl on darwin. It is a fake libdl that just ends up making +-# dyld calls anyway +-case "$host" in +- *-*-darwin*) ;; +- *) +- AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl") +- ;; +-esac +- ++AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl") + AC_SUBST(EXTRA_TEST_LIBS) + + target_all=libgcjgc.la +@@ -289,7 +270,17 @@ + esac ] + fi) + +-AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host") ++if test -n "$with_cross_host" && ++ test x"$with_cross_host" != x"no"; then ++ toolexecdir='$(exec_prefix)/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/lib' ++else ++ toolexecdir='$(libdir)/gcc-lib/$(target_alias)' ++ toolexeclibdir='$(libdir)' ++fi ++toolexeclibdir=$toolexeclibdir/`$CC -print-multi-os-directory` ++AC_SUBST(toolexecdir) ++AC_SUBST(toolexeclibdir) + + if test "${multilib}" = "yes"; then + multilib_arg="--enable-multilib" +@@ -313,5 +304,6 @@ + CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + gc_basedir=${gc_basedir} + CC="${CC}" ++ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}" + DEFS="$DEFS" + ) +diff -Nur ../boehm-gc/configure.in~ boehm-gc/configure.in~ +--- ../boehm-gc/configure.in~ Mon May 26 13:33:22 2003 ++++ boehm-gc/configure.in~ Wed Dec 31 16:00:00 1969 +@@ -1,317 +0,0 @@ +-# Copyright (c) 1999, 2000, 2001, 2002 by Red Hat, Inc. All rights reserved. +-# +-# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED +-# OR IMPLIED. ANY USE IS AT YOUR OWN RISK. +-# +-# Permission is hereby granted to use or copy this program +-# for any purpose, provided the above notices are retained on all copies. +-# Permission to modify the code and to distribute modified code is granted, +-# provided the above notices are retained, and a notice that the code was +-# modified is included with the above copyright notice. +-# +-# Original author: Tom Tromey +- +-dnl Process this file with autoconf to produce configure. +- +-AC_INIT(gcj_mlc.c) +- +-# This works around the fact that libtool configuration may change LD +-# for this particular configuration, but some shells, instead of +-# keeping the changes in LD private, export them just because LD is +-# exported. +-ORIGINAL_LD_FOR_MULTILIBS=$LD +- +-dnl Can't be done in GC_CONFIGURE because that confuses automake. +-AC_CONFIG_AUX_DIR(.) +- +-GC_CONFIGURE(.) +- +-AM_PROG_LIBTOOL +- +-dnl We use these options to decide which functions to include. +-AC_ARG_WITH(target-subdir, +-[ --with-target-subdir=SUBDIR +- configuring with a cross compiler]) +-AC_ARG_WITH(cross-host, +-[ --with-cross-host=HOST configuring with a cross compiler]) +- +-AM_MAINTAINER_MODE +-# automake wants to see AC_EXEEXT. But we don't need it. And having +-# it is actually a problem, because the compiler we're passed can't +-# necessarily do a full link. So we fool automake here. +-if false; then +- # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands +- # to nothing, so nothing would remain between `then' and `fi' if it +- # were not for the `:' below. +- : +- AC_EXEEXT +-fi +- +-AC_MSG_CHECKING([for thread model used by GCC]) +-THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` +-if test -z "$THREADS"; then +- THREADS=no +-fi +-AC_MSG_RESULT([$THREADS]) +- +-AC_ARG_ENABLE(parallel-mark, +-[ --enable-parallel-mark parallelize marking and free list construction], +- [case "$THREADS" in +- no | none | single) +- AC_MSG_ERROR([Parallel mark requires --enable-threads=x spec]) +- ;; +- esac] +-) +- +-INCLUDES=-I${srcdir}/include +-THREADLIBS= +-case "$THREADS" in +- no | none | single) +- THREADS=none +- ;; +- posix | pthreads) +- THREADS=posix +- THREADLIBS=-lpthread +- case "$host" in +- x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* ) +- AC_DEFINE(GC_LINUX_THREADS) +- AC_DEFINE(_REENTRANT) +- if test "${enable_parallel_mark}"; then +- AC_DEFINE(PARALLEL_MARK) +- fi +- AC_DEFINE(THREAD_LOCAL_ALLOC) +- ;; +- *-*-linux*) +- AC_DEFINE(GC_LINUX_THREADS) +- AC_DEFINE(_REENTRANT) +- ;; +- *-*-hpux*) +- AC_MSG_WARN("Only HP/UX 11 threads are supported.") +- AC_DEFINE(GC_HPUX_THREADS) +- AC_DEFINE(_POSIX_C_SOURCE,199506L) +- if test "${enable_parallel_mark}" = yes; then +- AC_DEFINE(PARALLEL_MARK) +- fi +- AC_DEFINE(THREAD_LOCAL_ALLOC) +- THREADLIBS="-lpthread -lrt" +- ;; +- *-*-freebsd*) +- AC_MSG_WARN("FreeBSD does not yet fully support threads with Boehm GC.") +- AC_DEFINE(GC_FREEBSD_THREADS) +- INCLUDES="$INCLUDES -pthread" +- THREADLIBS=-pthread +- ;; +- *-*-solaris*) +- AC_DEFINE(GC_SOLARIS_THREADS) +- AC_DEFINE(GC_SOLARIS_PTHREADS) +- ;; +- *-*-irix*) +- AC_DEFINE(GC_IRIX_THREADS) +- ;; +- *-*-cygwin*) +- THREADLIBS= +- ;; +- esac +- ;; +- *-*-darwin*) +- AC_DEFINE(GC_DARWIN_THREADS) +- AC_DEFINE(THREAD_LOCAL_ALLOC) +- if test "${enable_parallel_mark}" = yes; then +- AC_DEFINE(PARALLEL_MARK) +- fi +- ;; +- win32) +- AC_DEFINE(GC_WIN32_THREADS) +- AC_DEFINE(NO_GETENV) +- ;; +- decosf1 | irix | mach | os2 | solaris | dce | vxworks) +- AC_MSG_ERROR(thread package $THREADS not yet supported) +- ;; +- *) +- AC_MSG_ERROR($THREADS is an unknown thread package) +- ;; +-esac +-AC_SUBST(THREADLIBS) +- +-case "$host" in +- powerpc-*-darwin*) +- powerpc_darwin=true +- ;; +-esac +-AM_CONDITIONAL(POWERPC_DARWIN,test x$powerpc_darwin = xtrue) +- +-# We never want libdl on darwin. It is a fake libdl that just ends up making +-# dyld calls anyway +-case "$host" in +- *-*-darwin*) ;; +- *) +- AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl") +- ;; +-esac +- +-AC_SUBST(EXTRA_TEST_LIBS) +- +-target_all=libgcjgc.la +-AC_SUBST(target_all) +-AC_SUBST(target_alias) +- +-dnl If the target is an eCos system, use the appropriate eCos +-dnl I/O routines. +-dnl FIXME: this should not be a local option but a global target +-dnl system; at present there is no eCos target. +-TARGET_ECOS="no" +-AC_ARG_WITH(ecos, +-[ --with-ecos enable runtime eCos target support], +-TARGET_ECOS="$with_ecos" +-) +- +-addobjs= +-CXXINCLUDES= +-case "$TARGET_ECOS" in +- no) +- ;; +- *) +- AC_DEFINE(ECOS) +- CXXINCLUDES="-I${TARGET_ECOS}/include" +- addobjs="$addobjs ecos.lo" +- ;; +-esac +-AC_SUBST(CXX) +- +-AC_SUBST(INCLUDES) +-AC_SUBST(CXXINCLUDES) +- +-machdep= +-case "$host" in +- alpha*-*-openbsd*) +- machdep="alpha_mach_dep.lo" +- if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then +- AC_MSG_WARN(OpenBSD/Alpha without dlopen(). Shared library support is disabled) +- AM_DISABLE_SHARED +- fi +- ;; +- alpha*-*-*) +- machdep="alpha_mach_dep.lo" +- ;; +- i?86-*-solaris2.[[89]]*) +- AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED) +- ;; +- mipstx39-*-elf*) +- machdep="mips_ultrix_mach_dep.lo" +- AC_DEFINE(STACKBASE, __stackbase) +- AC_DEFINE(DATASTART_IS_ETEXT) +- ;; +- mips-dec-ultrix*) +- machdep="mips_ultrix_mach-dep.lo" +- ;; +- mips*-*-linux*) +- ;; +- mips-*-*) +- machdep="mips_sgi_mach_dep.lo" +- AC_DEFINE(NO_EXECUTE_PERMISSION) +- ;; +- sparc-sun-solaris2.3*) +- machdep="sparc_mach_dep.lo" +- AC_DEFINE(SUNOS53_SHARED_LIB) +- ;; +- sparc-sun-solaris2.*) +- machdep="sparc_mach_dep.lo" +- ;; +- ia64-*-*) +- machdep="mach_dep.lo ia64_save_regs_in_stack.lo" +- ;; +-esac +-if test x"$machdep" = x; then +- machdep="mach_dep.lo" +-fi +-addobjs="$addobjs $machdep" +-AC_SUBST(addobjs) +- +-dnl As of 4.13a2, the collector will not properly work on Solaris when +-dnl built with gcc and -O. So we remove -O in the appropriate case. +-case "$host" in +- sparc-sun-solaris2*) +- if test "$GCC" = yes; then +- new_CFLAGS= +- for i in $CFLAGS; do +- case "$i" in +- -O*) +- ;; +- *) +- new_CFLAGS="$new_CFLAGS $i" +- ;; +- esac +- done +- CFLAGS="$new_CFLAGS" +- fi +- ;; +-esac +- +-dnl We need to override the top-level CFLAGS. This is how we do it. +-MY_CFLAGS="$CFLAGS" +-AC_SUBST(MY_CFLAGS) +- +-dnl Include defines that have become de facto standard. +-dnl ALL_INTERIOR_POINTERS can be overridden in startup code. +-AC_DEFINE(SILENT) +-AC_DEFINE(NO_SIGNALS) +-AC_DEFINE(NO_EXECUTE_PERMISSION) +-AC_DEFINE(ALL_INTERIOR_POINTERS) +- +-dnl By default, make the library as general as possible. +-AC_DEFINE(JAVA_FINALIZATION) +-AC_DEFINE(GC_GCJ_SUPPORT) +-AC_DEFINE(ATOMIC_UNCOLLECTABLE) +- +-dnl This is something of a hack. When cross-compiling we turn off +-dnl some functionality. These is only correct when targetting an +-dnl embedded system. FIXME. +-if test -n "${with_cross_host}"; then +- AC_DEFINE(NO_SIGSET) +- AC_DEFINE(NO_DEBUGGING) +-fi +- +-AC_ARG_ENABLE(full-debug, +-[ --enable-full-debug include full support for pointer backtracing etc.], +-[ if test "$enable_full_debug" = "yes"; then +- AC_MSG_WARN("Must define GC_DEBUG and use debug alloc. in clients.") +- AC_DEFINE(KEEP_BACK_PTRS) +- AC_DEFINE(DBG_HDRS_ALL) +- case $host in +- ia64-*-linux* ) +- AC_DEFINE(MAKE_BACK_GRAPH) +- ;; +- x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* ) +- AC_DEFINE(MAKE_BACK_GRAPH) +- AC_MSG_WARN("Client must not use -fomit-frame-pointer.") +- AC_DEFINE(SAVE_CALL_COUNT, 8) +- ;; +- esac ] +- fi) +- +-AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host") +- +-if test "${multilib}" = "yes"; then +- multilib_arg="--enable-multilib" +-else +- multilib_arg= +-fi +- +-AC_OUTPUT(Makefile include/Makefile, [ +-dnl Put all the -D options in a file. +-echo "$DEFS" > boehm-cflags +- +-if test -n "$CONFIG_FILES"; then +- LD="${ORIGINAL_LD_FOR_MULTILIBS}" +- ac_file=Makefile . ${gc_basedir}/../config-ml.in +-fi], +-srcdir=${srcdir} +-host=${host} +-target=${target} +-with_multisubdir=${with_multisubdir} +-ac_configure_args="${multilib_arg} ${ac_configure_args}" +-CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +-gc_basedir=${gc_basedir} +-CC="${CC}" +-DEFS="$DEFS" +-) +diff -Nur ../boehm-gc/cord/CVS/Entries boehm-gc/cord/CVS/Entries +--- ../boehm-gc/cord/CVS/Entries Mon May 26 12:46:21 2003 ++++ boehm-gc/cord/CVS/Entries Wed Dec 31 16:00:00 1969 +@@ -1,11 +0,0 @@ +-/cordbscs.c/1.2/Fri Sep 14 00:43:44 2001// +-/cordprnt.c/1.2/Fri Sep 14 00:43:45 2001// +-/cordtest.c/1.2/Fri Sep 14 00:43:45 2001// +-/cordxtra.c/1.2/Fri Sep 14 00:43:45 2001// +-/de.c/1.2/Fri Sep 14 00:43:45 2001// +-/de_cmds.h/1.2/Fri Sep 14 00:43:45 2001// +-/de_win.ICO/1.2/Fri Sep 14 00:43:45 2001/-kb/ +-/de_win.RC/1.2/Fri Sep 14 00:43:45 2001// +-/de_win.c/1.2/Fri Sep 14 00:43:45 2001// +-/de_win.h/1.2/Fri Sep 14 00:43:46 2001// +-D/private//// +diff -Nur ../boehm-gc/cord/CVS/Repository boehm-gc/cord/CVS/Repository +--- ../boehm-gc/cord/CVS/Repository Sun May 25 12:49:07 2003 ++++ boehm-gc/cord/CVS/Repository Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-/cvs/root/gcc3/gcc3/boehm-gc/cord +diff -Nur ../boehm-gc/cord/CVS/Root boehm-gc/cord/CVS/Root +--- ../boehm-gc/cord/CVS/Root Sun May 25 12:49:07 2003 ++++ boehm-gc/cord/CVS/Root Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root +diff -Nur ../boehm-gc/cord/private/CVS/Entries boehm-gc/cord/private/CVS/Entries +--- ../boehm-gc/cord/private/CVS/Entries Sun May 25 12:49:08 2003 ++++ boehm-gc/cord/private/CVS/Entries Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-D +diff -Nur ../boehm-gc/cord/private/CVS/Repository boehm-gc/cord/private/CVS/Repository +--- ../boehm-gc/cord/private/CVS/Repository Sun May 25 12:49:08 2003 ++++ boehm-gc/cord/private/CVS/Repository Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-/cvs/root/gcc3/gcc3/boehm-gc/cord/private +diff -Nur ../boehm-gc/cord/private/CVS/Root boehm-gc/cord/private/CVS/Root +--- ../boehm-gc/cord/private/CVS/Root Sun May 25 12:49:08 2003 ++++ boehm-gc/cord/private/CVS/Root Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root +diff -Nur ../boehm-gc/darwin_stop_world.c boehm-gc/darwin_stop_world.c +--- ../boehm-gc/darwin_stop_world.c Sun Jun 1 14:17:58 2003 ++++ boehm-gc/darwin_stop_world.c Wed Dec 31 16:00:00 1969 +@@ -1,200 +0,0 @@ +-#include "private/pthread_support.h" +- +-# if defined(GC_DARWIN_THREADS) +- +-#define DEBUG_THREADS 0 +- +-/* From "Inside Mac OS X - Mach-O Runtime Architecture" published by Apple +- Page 49: +- "The space beneath the stack pointer, where a new stack frame would normally +- be allocated, is called the red zone. This area as shown in Figure 3-2 may +- be used for any purpose as long as a new stack frame does not need to be +- added to the stack." +- +- Page 50: "If a leaf procedure's red zone usage would exceed 224 bytes, then +- it must set up a stack frame just like routines that call other routines." +-*/ +-#define PPC_RED_ZONE_SIZE 224 +- +-void GC_push_all_stacks() { +- int i; +- kern_return_t r; +- GC_thread p; +- pthread_t me; +- ptr_t lo, hi; +-# if defined(POWERPC) +- ppc_thread_state_t state; +-# else +-# error FIXME for non-ppc OS X +-# endif +- mach_msg_type_number_t thread_state_count = MACHINE_THREAD_STATE_COUNT; +- +- me = pthread_self(); +- if (!GC_thr_initialized) GC_thr_init(); +- +- for(i=0;inext) { +- if(p -> flags & FINISHED) continue; +- if(pthread_equal(p->id,me)) { +- lo = GC_approx_sp(); +- } else { +- /* Get the thread state (registers, etc) */ +- r = thread_get_state( +- p->stop_info.mach_thread, +- MACHINE_THREAD_STATE, +- (natural_t*)&state, +- &thread_state_count); +- if(r != KERN_SUCCESS) ABORT("thread_get_state failed"); +- +- #ifdef POWERPC +- lo = (void*)(state.r1 - PPC_RED_ZONE_SIZE); +- +- GC_push_one(state.r0); +- GC_push_one(state.r2); +- GC_push_one(state.r3); +- GC_push_one(state.r4); +- GC_push_one(state.r5); +- GC_push_one(state.r6); +- GC_push_one(state.r7); +- GC_push_one(state.r8); +- GC_push_one(state.r9); +- GC_push_one(state.r10); +- GC_push_one(state.r11); +- GC_push_one(state.r12); +- GC_push_one(state.r13); +- GC_push_one(state.r14); +- GC_push_one(state.r15); +- GC_push_one(state.r16); +- GC_push_one(state.r17); +- GC_push_one(state.r18); +- GC_push_one(state.r19); +- GC_push_one(state.r20); +- GC_push_one(state.r21); +- GC_push_one(state.r22); +- GC_push_one(state.r23); +- GC_push_one(state.r24); +- GC_push_one(state.r25); +- GC_push_one(state.r26); +- GC_push_one(state.r27); +- GC_push_one(state.r28); +- GC_push_one(state.r29); +- GC_push_one(state.r30); +- GC_push_one(state.r31); +- #else +- # error FIXME for non-PPC darwin +- #endif /* !POWERPC */ +- } /* p != me */ +- if(p->flags & MAIN_THREAD) +- hi = GC_stackbottom; +- else +- hi = p->stack_end; +- #if DEBUG_THREADS +- GC_printf3("Darwin: Stack for thread 0x%lx = [%lx,%lx)\n", +- (unsigned long) p -> id, +- (unsigned long) lo, +- (unsigned long) hi +- ); +- #endif +- GC_push_all_stack(lo,hi); +- } /* for(p=GC_threads[i]...) */ +- } /* for(i=0;i next) { +- if (p -> id == my_thread) continue; +- if (p -> flags & FINISHED) continue; +- if (p -> thread_blocked) /* Will wait */ continue; +- +- #if DEBUG_THREADS +- GC_printf1("Suspending thread 0x%lx\n", p -> id); +- #endif +- +- /* Suspend the thread */ +- kern_result = thread_suspend(p->stop_info.mach_thread); +- if(kern_result != KERN_SUCCESS) ABORT("thread_suspend failed"); +- } +- } +- +-# ifdef MPROTECT_VDB +- if(GC_incremental) { +- extern void GC_mprotect_stop(); +- GC_mprotect_stop(); +- } +-# endif +- +-# ifdef PARALLEL_MARK +- GC_release_mark_lock(); +-# endif +- #if DEBUG_THREADS +- GC_printf1("World stopped from 0x%lx\n", pthread_self()); +- #endif +-} +- +-/* Caller holds allocation lock, and has held it continuously since */ +-/* the world stopped. */ +-void GC_start_world() +-{ +- pthread_t my_thread = pthread_self(); +- int i; +- GC_thread p; +- kern_return_t kern_result; +- +-# if DEBUG_THREADS +- GC_printf0("World starting\n"); +-# endif +- +-# ifdef MPROTECT_VDB +- if(GC_incremental) { +- extern void GC_mprotect_resume(); +- GC_mprotect_resume(); +- } +-# endif +- +- for (i = 0; i < THREAD_TABLE_SZ; i++) { +- for (p = GC_threads[i]; p != 0; p = p -> next) { +- if (p -> id == my_thread) continue; +- if (p -> flags & FINISHED) continue; +- if (p -> thread_blocked) continue; +- +- #if DEBUG_THREADS +- GC_printf1("Resuming 0x%lx\n", p -> id); +- #endif +- +- /* Resume the thread */ +- kern_result = thread_resume(p->stop_info.mach_thread); +- if(kern_result != KERN_SUCCESS) ABORT("thread_resume failed"); +- } +- } +- #if DEBUG_THREADS +- GC_printf0("World started\n"); +- #endif +-} +- +-void GC_stop_init() { +- +-} +- +-#endif +diff -Nur ../boehm-gc/dbg_mlc.c boehm-gc/dbg_mlc.c +--- ../boehm-gc/dbg_mlc.c Mon May 26 12:48:52 2003 ++++ boehm-gc/dbg_mlc.c Tue Feb 12 21:38:39 2002 +@@ -60,7 +60,7 @@ + # include + + # if defined(LINUX) || defined(SUNOS4) || defined(SUNOS5) \ +- || defined(HPUX) || defined(IRIX5) || defined(OSF1) ++ || defined(HPUX) || defined(IRIX) || defined(OSF1) + # define RANDOM() random() + # else + # define RANDOM() (long)rand() +@@ -228,8 +228,6 @@ + + #endif /* KEEP_BACK_PTRS */ + +-# define CROSSES_HBLK(p, sz) \ +- (((word)(p + sizeof(oh) + sz - 1) ^ (word)p) >= HBLKSIZE) + /* Store debugging info into p. Return displaced pointer. */ + /* Assumes we don't hold allocation lock. */ + ptr_t GC_store_debug_info(p, sz, string, integer) +@@ -245,8 +243,6 @@ + /* But that's expensive. And this way things should only appear */ + /* inconsistent while we're in the handler. */ + LOCK(); +- GC_ASSERT(GC_size(p) >= sizeof(oh) + sz); +- GC_ASSERT(!(SMALL_OBJ(sz) && CROSSES_HBLK(p, sz))); + # ifdef KEEP_BACK_PTRS + ((oh *)p) -> oh_back_ptr = HIDE_BACK_PTR(NOT_MARKED); + # endif +@@ -279,8 +275,6 @@ + /* There is some argument that we should disable signals here. */ + /* But that's expensive. And this way things should only appear */ + /* inconsistent while we're in the handler. */ +- GC_ASSERT(GC_size(p) >= sizeof(oh) + sz); +- GC_ASSERT(!(SMALL_OBJ(sz) && CROSSES_HBLK(p, sz))); + # ifdef KEEP_BACK_PTRS + ((oh *)p) -> oh_back_ptr = HIDE_BACK_PTR(NOT_MARKED); + # endif +@@ -330,11 +324,10 @@ + { + register oh * ohdr = (oh *)GC_base(p); + +- GC_ASSERT(!I_HOLD_LOCK()); + GC_err_printf1("0x%lx (", ((unsigned long)ohdr + sizeof(oh))); + GC_err_puts(ohdr -> oh_string); + # ifdef SHORT_DBG_HDRS +- GC_err_printf1(":%ld)\n", (unsigned long)(ohdr -> oh_int)); ++ GC_err_printf1(":%ld, sz=%ld)\n", (unsigned long)(ohdr -> oh_int)); + # else + GC_err_printf2(":%ld, sz=%ld)\n", (unsigned long)(ohdr -> oh_int), + (unsigned long)(ohdr -> oh_sz)); +@@ -349,7 +342,6 @@ + ptr_t p; + # endif + { +- GC_ASSERT(!I_HOLD_LOCK()); + if (GC_HAS_DEBUG_INFO(p)) { + GC_print_obj(p); + } else { +@@ -363,7 +355,6 @@ + { + register oh * ohdr = (oh *)GC_base(p); + +- GC_ASSERT(!I_HOLD_LOCK()); + GC_err_printf2("0x%lx in object at 0x%lx(", (unsigned long)clobbered_addr, + (unsigned long)p); + if (clobbered_addr <= (ptr_t)(&(ohdr -> oh_sz)) +@@ -385,18 +376,14 @@ + + void GC_check_heap_proc GC_PROTO((void)); + +-void GC_print_all_smashed_proc GC_PROTO((void)); +- + void GC_do_nothing() {} + + void GC_start_debugging() + { + # ifndef SHORT_DBG_HDRS + GC_check_heap = GC_check_heap_proc; +- GC_print_all_smashed = GC_print_all_smashed_proc; + # else + GC_check_heap = GC_do_nothing; +- GC_print_all_smashed = GC_do_nothing; + # endif + GC_print_heap_obj = GC_debug_print_heap_obj_proc; + GC_debugging_started = TRUE; +@@ -442,62 +429,6 @@ + return (GC_store_debug_info(result, (word)lb, s, (word)i)); + } + +-# ifdef __STDC__ +- GC_PTR GC_debug_malloc_ignore_off_page(size_t lb, GC_EXTRA_PARAMS) +-# else +- GC_PTR GC_debug_malloc_ignore_off_page(lb, s, i) +- size_t lb; +- char * s; +- int i; +-# ifdef GC_ADD_CALLER +- --> GC_ADD_CALLER not implemented for K&R C +-# endif +-# endif +-{ +- GC_PTR result = GC_malloc_ignore_off_page(lb + DEBUG_BYTES); +- +- if (result == 0) { +- GC_err_printf1("GC_debug_malloc_ignore_off_page(%ld) returning NIL (", +- (unsigned long) lb); +- GC_err_puts(s); +- GC_err_printf1(":%ld)\n", (unsigned long)i); +- return(0); +- } +- if (!GC_debugging_started) { +- GC_start_debugging(); +- } +- ADD_CALL_CHAIN(result, ra); +- return (GC_store_debug_info(result, (word)lb, s, (word)i)); +-} +- +-# ifdef __STDC__ +- GC_PTR GC_debug_malloc_atomic_ignore_off_page(size_t lb, GC_EXTRA_PARAMS) +-# else +- GC_PTR GC_debug_malloc_atomic_ignore_off_page(lb, s, i) +- size_t lb; +- char * s; +- int i; +-# ifdef GC_ADD_CALLER +- --> GC_ADD_CALLER not implemented for K&R C +-# endif +-# endif +-{ +- GC_PTR result = GC_malloc_atomic_ignore_off_page(lb + DEBUG_BYTES); +- +- if (result == 0) { +- GC_err_printf1("GC_debug_malloc_atomic_ignore_off_page(%ld)" +- " returning NIL (", (unsigned long) lb); +- GC_err_puts(s); +- GC_err_printf1(":%ld)\n", (unsigned long)i); +- return(0); +- } +- if (!GC_debugging_started) { +- GC_start_debugging(); +- } +- ADD_CALL_CHAIN(result, ra); +- return (GC_store_debug_info(result, (word)lb, s, (word)i)); +-} +- + # ifdef DBG_HDRS_ALL + /* + * An allocation function for internal use. +@@ -516,7 +447,7 @@ + (unsigned long) lb); + return(0); + } +- ADD_CALL_CHAIN(result, GC_RETURN_ADDR); ++ ADD_CALL_CHAIN(result, ra); + return (GC_store_debug_info_inner(result, (word)lb, "INTERNAL", (word)0)); + } + +@@ -530,7 +461,7 @@ + (unsigned long) lb); + return(0); + } +- ADD_CALL_CHAIN(result, GC_RETURN_ADDR); ++ ADD_CALL_CHAIN(result, ra); + return (GC_store_debug_info_inner(result, (word)lb, "INTERNAL", (word)0)); + } + # endif +@@ -661,7 +592,7 @@ + int i; + # endif + { +- GC_PTR result = GC_malloc_uncollectable(lb + UNCOLLECTABLE_DEBUG_BYTES); ++ GC_PTR result = GC_malloc_uncollectable(lb + DEBUG_BYTES); + + if (result == 0) { + GC_err_printf1("GC_debug_malloc_uncollectable(%ld) returning NIL (", +@@ -687,8 +618,7 @@ + int i; + # endif + { +- GC_PTR result = +- GC_malloc_atomic_uncollectable(lb + UNCOLLECTABLE_DEBUG_BYTES); ++ GC_PTR result = GC_malloc_atomic_uncollectable(lb + DEBUG_BYTES); + + if (result == 0) { + GC_err_printf1( +@@ -844,45 +774,6 @@ + } + + #ifndef SHORT_DBG_HDRS +- +-/* List of smashed objects. We defer printing these, since we can't */ +-/* always print them nicely with the allocation lock held. */ +-/* We put them here instead of in GC_arrays, since it may be useful to */ +-/* be able to look at them with the debugger. */ +-#define MAX_SMASHED 20 +-ptr_t GC_smashed[MAX_SMASHED]; +-unsigned GC_n_smashed = 0; +- +-# if defined(__STDC__) || defined(__cplusplus) +- void GC_add_smashed(ptr_t smashed) +-# else +- void GC_add_smashed(smashed) +- ptr_t smashed; +-#endif +-{ +- GC_ASSERT(GC_is_marked(GC_base(smashed))); +- GC_smashed[GC_n_smashed] = smashed; +- if (GC_n_smashed < MAX_SMASHED - 1) ++GC_n_smashed; +- /* In case of overflow, we keep the first MAX_SMASHED-1 */ +- /* entries plus the last one. */ +- GC_have_errors = TRUE; +-} +- +-/* Print all objects on the list. Clear the list. */ +-void GC_print_all_smashed_proc () +-{ +- unsigned i; +- +- GC_ASSERT(!I_HOLD_LOCK()); +- if (GC_n_smashed == 0) return; +- GC_err_printf0("GC_check_heap_block: found smashed heap objects:\n"); +- for (i = 0; i < GC_n_smashed; ++i) { +- GC_print_smashed_obj(GC_base(GC_smashed[i]), GC_smashed[i]); +- GC_smashed[i] = 0; +- } +- GC_n_smashed = 0; +-} +- + /* Check all marked objects in the given block for validity */ + /*ARGSUSED*/ + # if defined(__STDC__) || defined(__cplusplus) +@@ -911,7 +802,11 @@ + && GC_HAS_DEBUG_INFO((ptr_t)p)) { + ptr_t clobbered = GC_check_annotated_obj((oh *)p); + +- if (clobbered != 0) GC_add_smashed(clobbered); ++ if (clobbered != 0) { ++ GC_err_printf0( ++ "GC_check_heap_block: found smashed location at "); ++ GC_print_smashed_obj((ptr_t)p, clobbered); ++ } + } + word_no += sz; + p += sz; +@@ -924,11 +819,9 @@ + void GC_check_heap_proc() + { + # ifndef SMALL_CONFIG +-# ifdef ALIGN_DOUBLE +- GC_STATIC_ASSERT((sizeof(oh) & (2 * sizeof(word) - 1)) == 0); +-# else +- GC_STATIC_ASSERT((sizeof(oh) & (sizeof(word) - 1)) == 0); +-# endif ++ if (sizeof(oh) & (2 * sizeof(word) - 1) != 0) { ++ ABORT("Alignment problem: object header has inappropriate size\n"); ++ } + # endif + GC_apply_to_all_blocks(GC_check_heap_block, (word)0); + } +@@ -949,12 +842,12 @@ + # endif + { + struct closure * result = +-# ifdef DBG_HDRS_ALL +- (struct closure *) GC_debug_malloc(sizeof (struct closure), +- GC_EXTRAS); +-# else +- (struct closure *) GC_malloc(sizeof (struct closure)); +-# endif ++# ifdef DBG_HDRS_ALL ++ (struct closure *) GC_debug_malloc(sizeof (struct closure), ++ GC_EXTRAS); ++# else ++ (struct closure *) GC_malloc(sizeof (struct closure)); ++# endif + + result -> cl_fn = fn; + result -> cl_data = data; +@@ -1015,7 +908,7 @@ + ptr_t base = GC_base(obj); + if (0 == base || (ptr_t)obj - base != sizeof(oh)) { + GC_err_printf1( +- "GC_debug_register_finalizer called with non-base-pointer 0x%lx\n", ++ "GC_register_finalizer called with non-base-pointer 0x%lx\n", + obj); + } + if (0 == fn) { +@@ -1047,7 +940,7 @@ + ptr_t base = GC_base(obj); + if (0 == base || (ptr_t)obj - base != sizeof(oh)) { + GC_err_printf1( +- "GC_debug_register_finalizer_no_order called with non-base-pointer 0x%lx\n", ++ "GC_register_finalizer_no_order called with non-base-pointer 0x%lx\n", + obj); + } + if (0 == fn) { +@@ -1080,7 +973,7 @@ + ptr_t base = GC_base(obj); + if (0 == base || (ptr_t)obj - base != sizeof(oh)) { + GC_err_printf1( +- "GC_debug_register_finalizer_ignore_self called with non-base-pointer 0x%lx\n", ++ "GC_register_finalizer_ignore_self called with non-base-pointer 0x%lx\n", + obj); + } + if (0 == fn) { +diff -Nur ../boehm-gc/doc/CVS/Entries boehm-gc/doc/CVS/Entries +--- ../boehm-gc/doc/CVS/Entries Sun May 25 12:49:09 2003 ++++ boehm-gc/doc/CVS/Entries Wed Dec 31 16:00:00 1969 +@@ -1,26 +0,0 @@ +-/README/1.4/Thu Mar 14 07:28:30 2002// +-/README.Mac/1.2/Fri Sep 14 00:43:47 2001// +-/README.MacOSX/1.2/Fri Sep 14 00:43:47 2001// +-/README.OS2/1.2/Fri Sep 14 00:43:47 2001// +-/README.amiga/1.2/Fri Sep 14 00:43:47 2001// +-/README.autoconf/1.2/Fri Sep 14 00:43:47 2001// +-/README.changes/1.4/Thu Mar 14 07:28:30 2002// +-/README.contributors/1.2/Fri Sep 14 00:43:48 2001// +-/README.cords/1.2/Fri Sep 14 00:43:48 2001// +-/README.dj/1.2/Fri Sep 14 00:43:48 2001// +-/README.environment/1.4/Sun Apr 21 00:59:00 2002// +-/README.ews4800/1.1.1.1/Thu Mar 14 03:40:19 2002// +-/README.hp/1.2/Fri Sep 14 00:43:48 2001// +-/README.linux/1.2/Fri Sep 14 00:43:48 2001// +-/README.macros/1.2/Fri Sep 14 00:43:48 2001// +-/README.rs6000/1.2/Fri Sep 14 00:43:48 2001// +-/README.sgi/1.2/Fri Sep 14 00:43:49 2001// +-/README.solaris2/1.2/Fri Sep 14 00:43:49 2001// +-/README.uts/1.2/Fri Sep 14 00:43:49 2001// +-/README.win32/1.3/Thu Mar 14 07:28:30 2002// +-/barrett_diagram/1.2/Fri Sep 14 00:43:49 2001// +-/debugging.html/1.3/Thu Mar 14 07:28:30 2002// +-/gc.man/1.2/Fri Sep 14 00:43:49 2001// +-/gcdescr.html/1.2/Fri Sep 14 00:43:49 2001// +-/tree.html/1.2/Fri Sep 14 00:43:49 2001// +-D +diff -Nur ../boehm-gc/doc/CVS/Repository boehm-gc/doc/CVS/Repository +--- ../boehm-gc/doc/CVS/Repository Sun May 25 12:49:08 2003 ++++ boehm-gc/doc/CVS/Repository Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-/cvs/root/gcc3/gcc3/boehm-gc/doc +diff -Nur ../boehm-gc/doc/CVS/Root boehm-gc/doc/CVS/Root +--- ../boehm-gc/doc/CVS/Root Sun May 25 12:49:08 2003 ++++ boehm-gc/doc/CVS/Root Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root +diff -Nur ../boehm-gc/dyn_load.c boehm-gc/dyn_load.c +--- ../boehm-gc/dyn_load.c Mon May 26 12:48:52 2003 ++++ boehm-gc/dyn_load.c Mon Mar 3 22:38:30 2003 +@@ -55,10 +55,9 @@ + !defined(MSWIN32) && !defined(MSWINCE) && \ + !(defined(ALPHA) && defined(OSF1)) && \ + !defined(HPUX) && !(defined(LINUX) && defined(__ELF__)) && \ +- !defined(RS6000) && !defined(SCO_ELF) && !defined(DGUX) && \ ++ !defined(RS6000) && !defined(SCO_ELF) && \ + !(defined(FREEBSD) && defined(__ELF__)) && \ +- !(defined(NETBSD) && defined(__ELF__)) && !defined(HURD) && \ +- !defined(DARWIN) ++ !(defined(NETBSD) && defined(__ELF__)) && !defined(HURD) + --> We only know how to find data segments of dynamic libraries for the + --> above. Additional SVR4 variants might not be too + --> hard to add. +@@ -81,7 +80,7 @@ + #endif + + #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \ +- (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \ ++ (defined(FREEBSD) && defined(__ELF__)) || \ + (defined(NETBSD) && defined(__ELF__)) || defined(HURD) + # include + # include +@@ -265,7 +264,7 @@ + # endif /* SUNOS */ + + #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \ +- (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \ ++ (defined(FREEBSD) && defined(__ELF__)) || \ + (defined(NETBSD) && defined(__ELF__)) || defined(HURD) + + +@@ -283,23 +282,56 @@ + /* Repeatedly read until buffer is filled, or EOF is encountered */ + /* Defined in os_dep.c. */ + +-char *GC_parse_map_entry(char *buf_ptr, word *start, word *end, +- char *prot_buf, unsigned int *maj_dev); +-word GC_apply_to_maps(word (*fn)(char *)); +- /* From os_dep.c */ ++static char *parse_map_entry(char *buf_ptr, word *start, word *end, ++ char *prot_buf, unsigned int *maj_dev); + +-word GC_register_map_entries(char *maps) ++void GC_register_dynamic_libraries() + { ++ int f; ++ int result; + char prot_buf[5]; +- char *buf_ptr = maps; ++ int maps_size; ++ char maps_temp[32768]; ++ char *maps_buf; ++ char *buf_ptr; + int count; + word start, end; +- unsigned int maj_dev; ++ unsigned int maj_dev, min_dev; + word least_ha, greatest_ha; + unsigned i; + word datastart = (word)(DATASTART); + +- /* Compute heap bounds. FIXME: Should be done by add_to_heap? */ ++ /* Read /proc/self/maps */ ++ /* Note that we may not allocate, and thus can't use stdio. */ ++ f = open("/proc/self/maps", O_RDONLY); ++ if (-1 == f) ABORT("Couldn't open /proc/self/maps"); ++ /* stat() doesn't work for /proc/self/maps, so we have to ++ read it to find out how large it is... */ ++ maps_size = 0; ++ do { ++ result = GC_repeat_read(f, maps_temp, sizeof(maps_temp)); ++ if (result <= 0) ABORT("Couldn't read /proc/self/maps"); ++ maps_size += result; ++ } while (result == sizeof(maps_temp)); ++ ++ if (maps_size > sizeof(maps_temp)) { ++ /* If larger than our buffer, close and re-read it. */ ++ close(f); ++ f = open("/proc/self/maps", O_RDONLY); ++ if (-1 == f) ABORT("Couldn't open /proc/self/maps"); ++ maps_buf = alloca(maps_size); ++ if (NULL == maps_buf) ABORT("/proc/self/maps alloca failed"); ++ result = GC_repeat_read(f, maps_buf, maps_size); ++ if (result <= 0) ABORT("Couldn't read /proc/self/maps"); ++ } else { ++ /* Otherwise use the fixed size buffer */ ++ maps_buf = maps_temp; ++ } ++ ++ close(f); ++ maps_buf[result] = '\0'; ++ buf_ptr = maps_buf; ++ /* Compute heap bounds. Should be done by add_to_heap? */ + least_ha = (word)(-1); + greatest_ha = 0; + for (i = 0; i < GC_n_heap_sects; ++i) { +@@ -310,10 +342,11 @@ + } + if (greatest_ha < (word)GC_scratch_last_end_ptr) + greatest_ha = (word)GC_scratch_last_end_ptr; +- + for (;;) { +- buf_ptr = GC_parse_map_entry(buf_ptr, &start, &end, prot_buf, &maj_dev); +- if (buf_ptr == NULL) return 1; ++ ++ buf_ptr = parse_map_entry(buf_ptr, &start, &end, prot_buf, &maj_dev); ++ if (buf_ptr == NULL) return; ++ + if (prot_buf[1] == 'w') { + /* This is a writable mapping. Add it to */ + /* the root set unless it is already otherwise */ +@@ -325,7 +358,16 @@ + # ifdef THREADS + if (GC_segment_is_thread_stack(start, end)) continue; + # endif +- /* We no longer exclude the main data segment. */ ++ /* The rest of this assumes that there is no mapping */ ++ /* spanning the beginning of the data segment, or extending */ ++ /* beyond the entire heap at both ends. */ ++ /* Empirically these assumptions hold. */ ++ ++ if (start < (word)DATAEND && end > (word)DATAEND) { ++ /* Rld may use space at the end of the main data */ ++ /* segment. Thus we add that in. */ ++ start = (word)DATAEND; ++ } + if (start < least_ha && end > least_ha) { + end = least_ha; + } +@@ -335,14 +377,7 @@ + if (start >= least_ha && end <= greatest_ha) continue; + GC_add_roots_inner((char *)start, (char *)end, TRUE); + } +- } +- return 1; +-} +- +-void GC_register_dynamic_libraries() +-{ +- if (!GC_apply_to_maps(GC_register_map_entries)) +- ABORT("Failed to read /proc for library registration."); ++ } + } + + /* We now take care of the main data segment ourselves: */ +@@ -352,6 +387,60 @@ + } + + # define HAVE_REGISTER_MAIN_STATIC_DATA ++// ++// parse_map_entry parses an entry from /proc/self/maps so we can ++// locate all writable data segments that belong to shared libraries. ++// The format of one of these entries and the fields we care about ++// is as follows: ++// XXXXXXXX-XXXXXXXX r-xp 00000000 30:05 260537 name of mapping...\n ++// ^^^^^^^^ ^^^^^^^^ ^^^^ ^^ ++// start end prot maj_dev ++// 0 9 18 32 ++// ++// The parser is called with a pointer to the entry and the return value ++// is either NULL or is advanced to the next entry(the byte after the ++// trailing '\n'.) ++// ++#define OFFSET_MAP_START 0 ++#define OFFSET_MAP_END 9 ++#define OFFSET_MAP_PROT 18 ++#define OFFSET_MAP_MAJDEV 32 ++ ++static char *parse_map_entry(char *buf_ptr, word *start, word *end, ++ char *prot_buf, unsigned int *maj_dev) ++{ ++ int i; ++ unsigned int val; ++ char *tok; ++ ++ if (buf_ptr == NULL || *buf_ptr == '\0') { ++ return NULL; ++ } ++ ++ memcpy(prot_buf, buf_ptr+OFFSET_MAP_PROT, 4); // do the protections first ++ prot_buf[4] = '\0'; ++ ++ if (prot_buf[1] == 'w') { // we can skip all of this if it's not writable ++ ++ tok = buf_ptr; ++ buf_ptr[OFFSET_MAP_START+8] = '\0'; ++ *start = strtoul(tok, NULL, 16); ++ ++ tok = buf_ptr+OFFSET_MAP_END; ++ buf_ptr[OFFSET_MAP_END+8] = '\0'; ++ *end = strtoul(tok, NULL, 16); ++ ++ buf_ptr += OFFSET_MAP_MAJDEV; ++ tok = buf_ptr; ++ while (*buf_ptr != ':') buf_ptr++; ++ *buf_ptr++ = '\0'; ++ *maj_dev = strtoul(tok, NULL, 16); ++ } ++ ++ while (*buf_ptr && *buf_ptr++ != '\n'); ++ ++ return buf_ptr; ++} + + #endif /* USE_PROC_FOR_LIBRARIES */ + +@@ -419,7 +508,6 @@ + GC_add_roots_inner(DATASTART2, (char *)(DATAEND2), TRUE); + # endif + } +- + return TRUE; + } else { + return FALSE; +@@ -542,7 +630,6 @@ + /* The type is a lie, since the real type doesn't make sense here, */ + /* and we only test for NULL. */ + +- + /* We use /proc to track down all parts of the address space that are */ + /* mapped by the process, and throw out regions we know we shouldn't */ + /* worry about. This may also work under other SVR4 variants. */ +@@ -969,122 +1056,7 @@ + } + #endif /* RS6000 */ + +-#ifdef DARWIN +- +-#include +-#include +- +-/*#define DARWIN_DEBUG*/ +- +-const static struct { +- const char *seg; +- const char *sect; +-} GC_dyld_sections[] = { +- { SEG_DATA, SECT_DATA }, +- { SEG_DATA, SECT_BSS }, +- { SEG_DATA, SECT_COMMON } +-}; +- +-#ifdef DARWIN_DEBUG +-static const char *GC_dyld_name_for_hdr(struct mach_header *hdr) { +- unsigned long i,c; +- c = _dyld_image_count(); +- for(i=0;isize == 0) continue; +- start = slide + sec->addr; +- end = start + sec->size; +-# ifdef DARWIN_DEBUG +- GC_printf4("Adding section at %p-%p (%lu bytes) from image %s\n", +- start,end,sec->size,GC_dyld_name_for_hdr(hdr)); +-# endif +- GC_add_roots((char*)start,(char*)end); +- } +-# ifdef DARWIN_DEBUG +- GC_print_static_roots(); +-# endif +-} +- +-/* This should never be called by a thread holding the lock */ +-static void GC_dyld_image_remove(struct mach_header* hdr, unsigned long slide) { +- unsigned long start,end,i; +- const struct section *sec; +- for(i=0;isize == 0) continue; +- start = slide + sec->addr; +- end = start + sec->size; +-# ifdef DARWIN_DEBUG +- GC_printf4("Removing section at %p-%p (%lu bytes) from image %s\n", +- start,end,sec->size,GC_dyld_name_for_hdr(hdr)); +-# endif +- GC_remove_roots((char*)start,(char*)end); +- } +-# ifdef DARWIN_DEBUG +- GC_print_static_roots(); +-# endif +-} +- +-void GC_register_dynamic_libraries() { +- /* Currently does nothing. The callbacks are setup by GC_init_dyld() +- The dyld library takes it from there. */ +-} +- +-/* The _dyld_* functions have an internal lock so no _dyld functions +- can be called while the world is stopped without the risk of a deadlock. +- Because of this we MUST setup callbacks BEFORE we ever stop the world. +- This should be called BEFORE any thread in created and WITHOUT the +- allocation lock held. */ +- +-void GC_init_dyld() { +- static GC_bool initialized = FALSE; +- +- if(initialized) return; +- +-# ifdef DARWIN_DEBUG +- GC_printf0("Forcing full bind of GC code...\n"); +-# endif +- if(!_dyld_bind_fully_image_containing_address((unsigned long*)GC_malloc)) +- GC_abort("_dyld_bind_fully_image_containing_addres failed"); +- +-# ifdef DARWIN_DEBUG +- GC_printf0("Registering dyld callbacks...\n"); +-# endif +- +- /* Apple's Documentation: +- When you call _dyld_register_func_for_add_image, the dynamic linker runtime +- calls the specified callback (func) once for each of the images that is +- currently loaded into the program. When a new image is added to the program, +- your callback is called again with the mach_header for the new image, and the virtual memory slide amount of the new image. +- +- This WILL properly register existing and all future libraries +- */ +- +- _dyld_register_func_for_add_image(GC_dyld_image_add); +- _dyld_register_func_for_remove_image(GC_dyld_image_remove); +- initialized = TRUE; +-} +- +-#define HAVE_REGISTER_MAIN_STATIC_DATA +-GC_bool GC_register_main_static_data() +-{ +- /* Already done through dyld callbacks */ +- return FALSE; +-} + +-#endif /* DARWIN */ + + #else /* !DYNAMIC_LOADING */ + +diff -Nur ../boehm-gc/finalize.c boehm-gc/finalize.c +--- ../boehm-gc/finalize.c Mon May 26 12:48:52 2003 ++++ boehm-gc/finalize.c Mon Feb 11 20:37:53 2002 +@@ -207,8 +207,7 @@ + UNLOCK(); + ENABLE_SIGNALS(); + # endif +- new_dl = (struct disappearing_link *) +- GC_oom_fn(sizeof(struct disappearing_link)); ++ new_dl = GC_oom_fn(sizeof(struct disappearing_link)); + if (0 == new_dl) { + GC_finalization_failures++; + return(0); +@@ -434,8 +433,7 @@ + UNLOCK(); + ENABLE_SIGNALS(); + # endif +- new_fo = (struct finalizable_object *) +- GC_oom_fn(sizeof(struct finalizable_object)); ++ new_fo = GC_oom_fn(sizeof(struct finalizable_object)); + if (0 == new_fo) { + GC_finalization_failures++; + return; +@@ -761,9 +759,8 @@ + /* Should be called without allocation lock. */ + int GC_invoke_finalizers() + { +- struct finalizable_object * curr_fo; +- int count = 0; +- word mem_freed_before; ++ register struct finalizable_object * curr_fo; ++ register int count = 0; + DCL_LOCK_STATE; + + while (GC_finalize_now != 0) { +@@ -771,9 +768,6 @@ + DISABLE_SIGNALS(); + LOCK(); + # endif +- if (count == 0) { +- mem_freed_before = GC_mem_freed; +- } + curr_fo = GC_finalize_now; + # ifdef THREADS + if (curr_fo != 0) GC_finalize_now = fo_next(curr_fo); +@@ -795,11 +789,6 @@ + GC_free((GC_PTR)curr_fo); + # endif + } +- if (count != 0 && mem_freed_before != GC_mem_freed) { +- LOCK(); +- GC_finalizer_mem_freed += (GC_mem_freed - mem_freed_before); +- UNLOCK(); +- } + return count; + } + +@@ -812,9 +801,7 @@ + if (GC_finalize_now == 0) return; + if (!GC_finalize_on_demand) { + (void) GC_invoke_finalizers(); +-# ifndef THREADS +- GC_ASSERT(GC_finalize_now == 0); +-# endif /* Otherwise GC can run concurrently and add more */ ++ GC_ASSERT(GC_finalize_now == 0); + return; + } + if (GC_finalizer_notifier != (void (*) GC_PROTO((void)))0 +@@ -852,17 +839,3 @@ + return(result); + } + +-#if !defined(NO_DEBUGGING) +- +-void GC_print_finalization_stats() +-{ +- struct finalizable_object *fo = GC_finalize_now; +- size_t ready = 0; +- +- GC_printf2("%lu finalization table entries; %lu disappearing links\n", +- GC_fo_entries, GC_dl_entries); +- for (; 0 != fo; fo = fo_next(fo)) ++ready; +- GC_printf1("%lu objects are eligible for immediate finalization\n", ready); +-} +- +-#endif /* NO_DEBUGGING */ +diff -Nur ../boehm-gc/gc_dlopen.c boehm-gc/gc_dlopen.c +--- ../boehm-gc/gc_dlopen.c Mon May 26 12:48:52 2003 ++++ boehm-gc/gc_dlopen.c Tue Oct 16 02:01:35 2001 +@@ -19,14 +19,12 @@ + /* + * This used to be in dyn_load.c. It was extracted into a separate file + * to avoid having to link against libdl.{a,so} if the client doesn't call +- * dlopen. Of course this fails if the collector is in a dynamic +- * library. -HB ++ * dlopen. -HB + */ + + #include "private/gc_priv.h" + +-# if (defined(GC_PTHREADS) && !defined(GC_DARWIN_THREADS)) \ +- || defined(GC_SOLARIS_THREADS) ++# if defined(GC_PTHREADS) || defined(GC_SOLARIS_THREADS) + + # if defined(dlopen) && !defined(GC_USE_LD_WRAP) + /* To support various threads pkgs, gc.h interposes on dlopen by */ +@@ -46,14 +44,19 @@ + /* calls in either a multithreaded environment, or if the library */ + /* initialization code allocates substantial amounts of GC'ed memory. */ + /* But I don't know of a better solution. */ +- static void disable_gc_for_dlopen() ++ /* This can still deadlock if the client explicitly starts a GC */ ++ /* during the dlopen. He shouldn't do that. */ ++ static GC_bool disable_gc_for_dlopen() + { ++ GC_bool result; + LOCK(); ++ result = GC_dont_gc; + while (GC_incremental && GC_collection_in_progress()) { + GC_collect_a_little_inner(1000); + } +- ++GC_dont_gc; ++ GC_dont_gc = TRUE; + UNLOCK(); ++ return(result); + } + + /* Redefine dlopen to guarantee mutual exclusion with */ +@@ -71,9 +74,10 @@ + #endif + { + void * result; ++ GC_bool dont_gc_save; + + # ifndef USE_PROC_FOR_LIBRARIES +- disable_gc_for_dlopen(); ++ dont_gc_save = disable_gc_for_dlopen(); + # endif + # ifdef GC_USE_LD_WRAP + result = (void *)__real_dlopen(path, mode); +@@ -81,7 +85,7 @@ + result = dlopen(path, mode); + # endif + # ifndef USE_PROC_FOR_LIBRARIES +- GC_enable(); /* undoes disable_gc_for_dlopen */ ++ GC_dont_gc = dont_gc_save; + # endif + return(result); + } +diff -Nur ../boehm-gc/gcj_mlc.c boehm-gc/gcj_mlc.c +--- ../boehm-gc/gcj_mlc.c Mon May 26 12:48:52 2003 ++++ boehm-gc/gcj_mlc.c Mon Feb 11 20:37:53 2002 +@@ -157,7 +157,6 @@ + GC_words_allocd += lw; + } + *(void **)op = ptr_to_struct_containing_descr; +- GC_ASSERT(((void **)op)[1] == 0); + UNLOCK(); + } else { + LOCK(); +diff -Nur ../boehm-gc/if_mach.c boehm-gc/if_mach.c +--- ../boehm-gc/if_mach.c Mon May 26 12:48:52 2003 ++++ boehm-gc/if_mach.c Fri Aug 17 11:30:45 2001 +@@ -14,7 +14,7 @@ + if (strcmp(MACH_TYPE, argv[1]) != 0) return(0); + if (strcmp(OS_TYPE, "") != 0 && strcmp(argv[2], "") != 0 + && strcmp(OS_TYPE, argv[2]) != 0) return(0); +- fprintf(stderr, "^^^^Starting command^^^^\n"); ++ printf("^^^^Starting command^^^^\n"); + fflush(stdout); + execvp(argv[3], argv+3); + perror("Couldn't execute"); +diff -Nur ../boehm-gc/include/CVS/Entries boehm-gc/include/CVS/Entries +--- ../boehm-gc/include/CVS/Entries Sat May 31 21:17:20 2003 ++++ boehm-gc/include/CVS/Entries Wed Dec 31 16:00:00 1969 +@@ -1,21 +0,0 @@ +-/Makefile.am/1.1.1.2/Tue Jan 21 20:40:57 2003// +-/Makefile.in/1.1.1.4/Tue Jan 21 20:40:57 2003// +-/gc.h/1.5/Thu Mar 14 07:28:32 2002// +-/gc_cpp.h/1.2/Fri Sep 14 00:43:53 2001// +-/gc_local_alloc.h/1.2/Fri Sep 14 00:43:54 2001// +-/gc_mark.h/1.2/Fri Sep 14 00:43:54 2001// +-/gc_pthread_redirects.h/1.3/Tue Oct 23 03:47:26 2001// +-/gc_typed.h/1.2/Fri Sep 14 00:43:54 2001// +-/new_gc_alloc.h/1.3/Tue Oct 23 03:47:26 2001// +-D/private//// +-/cord.h/1.2/Mon May 26 20:28:19 2003// +-/ec.h/1.2/Mon May 26 20:28:19 2003// +-/gc_alloc.h/1.2/Mon May 26 20:28:19 2003// +-/gc_amiga_redirects.h/1.2/Mon May 26 20:28:19 2003// +-/gc_backptr.h/1.2/Mon May 26 20:28:19 2003// +-/gc_gcj.h/1.3/Mon May 26 20:28:19 2003// +-/gc_inl.h/1.2/Mon May 26 20:28:19 2003// +-/gc_inline.h/1.2/Mon May 26 20:28:19 2003// +-/javaxfc.h/1.2/Mon May 26 20:28:19 2003// +-/leak_detector.h/1.3/Mon May 26 20:28:19 2003// +-/weakpointer.h/1.2/Mon May 26 20:28:19 2003// +diff -Nur ../boehm-gc/include/CVS/Repository boehm-gc/include/CVS/Repository +--- ../boehm-gc/include/CVS/Repository Sun May 25 12:49:09 2003 ++++ boehm-gc/include/CVS/Repository Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-/cvs/root/gcc3/gcc3/boehm-gc/include +diff -Nur ../boehm-gc/include/CVS/Root boehm-gc/include/CVS/Root +--- ../boehm-gc/include/CVS/Root Sun May 25 12:49:09 2003 ++++ boehm-gc/include/CVS/Root Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root +diff -Nur ../boehm-gc/include/Makefile.in boehm-gc/include/Makefile.in +--- ../boehm-gc/include/Makefile.in Mon May 26 13:08:48 2003 ++++ boehm-gc/include/Makefile.in Tue Dec 31 09:52:45 2002 +@@ -1,8 +1,6 @@ +-# Makefile.in generated by automake 1.6.3 from Makefile.am. +-# @configure_input@ ++# Makefile.in generated automatically by automake 1.4 from Makefile.am + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -12,7 +10,7 @@ + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + +-@SET_MAKE@ ++ + SHELL = @SHELL@ + + srcdir = @srcdir@ +@@ -33,9 +31,13 @@ + mandir = @mandir@ + includedir = @includedir@ + oldincludedir = /usr/include ++ ++DESTDIR = ++ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ ++ + top_builddir = .. + + ACLOCAL = @ACLOCAL@ +@@ -43,16 +45,12 @@ + AUTOMAKE = @AUTOMAKE@ + AUTOHEADER = @AUTOHEADER@ + +-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd + INSTALL = @INSTALL@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) + INSTALL_DATA = @INSTALL_DATA@ +-install_sh_DATA = $(install_sh) -c -m 644 +-install_sh_PROGRAM = $(install_sh) -c +-install_sh_SCRIPT = $(install_sh) -c + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +-INSTALL_HEADER = $(INSTALL_DATA) + transform = @program_transform_name@ ++ + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : +@@ -65,190 +63,171 @@ + host_triplet = @host@ + target_alias = @target_alias@ + target_triplet = @target@ +- +-EXEEXT = @EXEEXT@ +-OBJEXT = @OBJEXT@ +-PATH_SEPARATOR = @PATH_SEPARATOR@ +-AMTAR = @AMTAR@ + AR = @AR@ + AS = @AS@ +-AWK = @AWK@ + CC = @CC@ + CPP = @CPP@ + CXX = @CXX@ + CXXCPP = @CXXCPP@ + CXXINCLUDES = @CXXINCLUDES@ +-DEPDIR = @DEPDIR@ + DLLTOOL = @DLLTOOL@ +-ECHO = @ECHO@ +-EGREP = @EGREP@ ++EXEEXT = @EXEEXT@ + EXTRA_TEST_LIBS = @EXTRA_TEST_LIBS@ +-F77 = @F77@ + GCJ = @GCJ@ + GCJFLAGS = @GCJFLAGS@ + GC_CFLAGS = @GC_CFLAGS@ + INCLUDES = @INCLUDES@ +-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LIBTOOL = @LIBTOOL@ + LN_S = @LN_S@ + MAINT = @MAINT@ ++MAKEINFO = @MAKEINFO@ + MY_CFLAGS = @MY_CFLAGS@ + OBJDUMP = @OBJDUMP@ ++OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ + RANLIB = @RANLIB@ +-RC = @RC@ + STRIP = @STRIP@ + THREADLIBS = @THREADLIBS@ + VERSION = @VERSION@ + addobjs = @addobjs@ +-am__include = @am__include@ +-am__quote = @am__quote@ + gc_basedir = @gc_basedir@ +-install_sh = @install_sh@ + mkinstalldirs = @mkinstalldirs@ + target_all = @target_all@ ++ + AUTOMAKE_OPTIONS = foreign + + noinst_HEADERS = gc.h gc_backptr.h gc_local_alloc.h \ + gc_pthread_redirects.h gc_cpp.h + +-subdir = include +-CONFIG_CLEAN_FILES = +-depcomp = +-am__depfiles_maybe = +-DIST_SOURCES = +-HEADERS = $(noinst_HEADERS) ++CONFIG_CLEAN_FILES = ++HEADERS = $(noinst_HEADERS) + +-all: all-am ++DIST_COMMON = Makefile.am Makefile.in + +-.SUFFIXES: +-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --cygnus include/Makefile +-Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +-mostlyclean-libtool: +- -rm -f *.lo ++DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +-clean-libtool: +- -rm -rf .libs _libs ++TAR = gtar ++GZIP_ENV = --best ++all: all-redirect ++.SUFFIXES: ++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ++ cd $(top_srcdir) && $(AUTOMAKE) --cygnus include/Makefile + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ cd $(top_builddir) \ ++ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +-ETAGS = etags +-ETAGSFLAGS = + + tags: TAGS + +-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ ++ID: $(HEADERS) $(SOURCES) $(LISP) ++ list='$(SOURCES) $(HEADERS)'; \ ++ unique=`for i in $$list; do echo $$i; done | \ ++ awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- mkid -fID $$unique ++ here=`pwd` && cd $(srcdir) \ ++ && mkid -f$$here/ID $$unique $(LISP) + +-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +- $(TAGS_FILES) $(LISP) ++TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ +- unique=`for i in $$list; do \ +- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +- done | \ +- $(AWK) ' { files[$$0] = 1; } \ ++ list='$(SOURCES) $(HEADERS)'; \ ++ unique=`for i in $$list; do echo $$i; done | \ ++ awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- +-GTAGS: +- here=`$(am__cd) $(top_builddir) && pwd` \ +- && cd $(top_srcdir) \ +- && gtags -i $(GTAGS_ARGS) $$here ++ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ++ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ++ ++mostlyclean-tags: ++ ++clean-tags: + + distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +-check-am: +-check: check-am +-all-am: Makefile $(HEADERS) ++ -rm -f TAGS ID + +-installdirs: ++maintainer-clean-tags: + +-install: install-am ++distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ++ ++subdir = include ++ ++distdir: $(DISTFILES) ++ @for file in $(DISTFILES); do \ ++ if test -f $$file; then d=.; else d=$(srcdir); fi; \ ++ if test -d $$d/$$file; then \ ++ cp -pr $$d/$$file $(distdir)/$$file; \ ++ else \ ++ test -f $(distdir)/$$file \ ++ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ++ || cp -p $$d/$$file $(distdir)/$$file || :; \ ++ fi; \ ++ done ++info-am: ++info: info-am ++dvi-am: ++dvi: dvi-am ++check-am: ++check: check-am ++installcheck-am: ++installcheck: installcheck-am ++install-info-am: ++install-info: install-info-am ++install-exec-am: + install-exec: install-exec-am ++ ++install-data-am: + install-data: install-data-am +-uninstall: uninstall-am + + install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +- +-installcheck: installcheck-am ++install: install-am ++uninstall-am: ++uninstall: uninstall-am ++all-am: Makefile $(HEADERS) ++all-redirect: all-am + install-strip: +- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- INSTALL_STRIP_FLAG=-s \ +- `test -z '$(STRIP)' || \ +- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install ++installdirs: ++ ++ + mostlyclean-generic: + + clean-generic: + + distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) ++ -rm -f config.cache config.log stamp-h stamp-h[0-9]* + + maintainer-clean-generic: +- @echo "This command is intended for maintainers to use" +- @echo "it deletes files that may require special tools to rebuild." +-clean: clean-am +- +-clean-am: clean-generic clean-libtool mostlyclean-am +- +-distclean: distclean-am +- +-distclean-am: clean-am distclean-generic distclean-libtool \ +- distclean-tags +- +-dvi: dvi-am ++mostlyclean-am: mostlyclean-tags mostlyclean-generic + +-dvi-am: +- +-info: info-am +- +-info-am: ++mostlyclean: mostlyclean-am + +-install-data-am: ++clean-am: clean-tags clean-generic mostlyclean-am + +-install-exec-am: ++clean: clean-am + +-install-info: ++distclean-am: distclean-tags distclean-generic clean-am ++ -rm -f libtool + +-install-man: ++distclean: distclean-am + +-installcheck-am: ++maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \ ++ distclean-am ++ @echo "This command is intended for maintainers to use;" ++ @echo "it deletes files that may require special tools to rebuild." + + maintainer-clean: maintainer-clean-am + +-maintainer-clean-am: distclean-am maintainer-clean-generic +- +-mostlyclean: mostlyclean-am +- +-mostlyclean-am: mostlyclean-generic mostlyclean-libtool +- +-uninstall-am: ++.PHONY: tags mostlyclean-tags distclean-tags clean-tags \ ++maintainer-clean-tags distdir info-am info dvi-am dvi check check-am \ ++installcheck-am installcheck install-info-am install-info \ ++install-exec-am install-exec install-data-am install-data install-am \ ++install uninstall-am uninstall all-redirect all-am all installdirs \ ++mostlyclean-generic distclean-generic clean-generic \ ++maintainer-clean-generic clean mostlyclean distclean maintainer-clean + +-.PHONY: GTAGS all all-am check check-am clean clean-generic \ +- clean-libtool distclean distclean-generic distclean-libtool \ +- distclean-tags dvi dvi-am info info-am install install-am \ +- install-data install-data-am install-exec install-exec-am \ +- install-info install-info-am install-man install-strip \ +- installcheck installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-generic \ +- mostlyclean-libtool tags uninstall uninstall-am \ +- uninstall-info-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur ../boehm-gc/include/gc.h boehm-gc/include/gc.h +--- ../boehm-gc/include/gc.h Mon May 26 13:28:19 2003 ++++ boehm-gc/include/gc.h Mon Feb 11 20:37:56 2002 +@@ -30,7 +30,91 @@ + + # define _GC_H + +-# include "gc_config_macros.h" ++/* ++ * Some tests for old macros. These violate our namespace rules and will ++ * disappear shortly. Use the GC_ names. ++ */ ++#if defined(SOLARIS_THREADS) || defined(_SOLARIS_THREADS) ++# define GC_SOLARIS_THREADS ++#endif ++#if defined(_SOLARIS_PTHREADS) ++# define GC_SOLARIS_PTHREADS ++#endif ++#if defined(IRIX_THREADS) ++# define GC_IRIX_THREADS ++#endif ++#if defined(HPUX_THREADS) ++# define GC_HPUX_THREADS ++#endif ++#if defined(OSF1_THREADS) ++# define GC_OSF1_THREADS ++#endif ++#if defined(LINUX_THREADS) ++# define GC_LINUX_THREADS ++#endif ++#if defined(WIN32_THREADS) ++# define GC_WIN32_THREADS ++#endif ++#if defined(USE_LD_WRAP) ++# define GC_USE_LD_WRAP ++#endif ++ ++#if !defined(_REENTRANT) && (defined(GC_SOLARIS_THREADS) \ ++ || defined(GC_SOLARIS_PTHREADS) \ ++ || defined(GC_HPUX_THREADS) \ ++ || defined(GC_LINUX_THREADS)) ++# define _REENTRANT ++ /* Better late than never. This fails if system headers that */ ++ /* depend on this were previously included. */ ++#endif ++ ++#if defined(GC_SOLARIS_PTHREADS) && !defined(GC_SOLARIS_THREADS) ++# define GC_SOLARIS_THREADS ++#endif ++ ++# if defined(GC_SOLARIS_PTHREADS) || defined(GC_FREEBSD_THREADS) || \ ++ defined(GC_IRIX_THREADS) || defined(GC_LINUX_THREADS) || \ ++ defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) ++# define GC_PTHREADS ++# endif ++ ++# define __GC ++# include ++# ifdef _WIN32_WCE ++/* Yet more kluges for WinCE */ ++# include /* size_t is defined here */ ++ typedef long ptrdiff_t; /* ptrdiff_t is not defined */ ++# endif ++ ++#if defined(__MINGW32__) &&defined(_DLL) && !defined(GC_NOT_DLL) ++# ifdef GC_BUILD ++# define GC_API __declspec(dllexport) ++# else ++# define GC_API __declspec(dllimport) ++# endif ++#endif ++ ++#if (defined(__DMC__) || defined(_MSC_VER)) \ ++ && (defined(_DLL) && !defined(GC_NOT_DLL) \ ++ || defined(GC_DLL)) ++# ifdef GC_BUILD ++# define GC_API extern __declspec(dllexport) ++# else ++# define GC_API __declspec(dllimport) ++# endif ++#endif ++ ++#if defined(__WATCOMC__) && defined(GC_DLL) ++# ifdef GC_BUILD ++# define GC_API extern __declspec(dllexport) ++# else ++# define GC_API extern __declspec(dllimport) ++# endif ++#endif ++ ++#ifndef GC_API ++#define GC_API extern ++#endif + + # if defined(__STDC__) || defined(__cplusplus) + # define GC_PROTO(args) args +@@ -70,7 +154,7 @@ + /* Env variable GC_NPROC is set to > 1, or */ + /* GC_NPROC is not set and this is an MP. */ + /* If GC_parallel is set, incremental */ +- /* collection is only partially functional, */ ++ /* collection is aonly partially functional, */ + /* and may not be desirable. */ + + +@@ -131,14 +215,8 @@ + /* thread, which will call GC_invoke_finalizers */ + /* in response. */ + +-GC_API int GC_dont_gc; /* != 0 ==> Dont collect. In versions 7.2a1+, */ +- /* this overrides explicit GC_gcollect() calls. */ +- /* Used as a counter, so that nested enabling */ +- /* and disabling work correctly. Should */ +- /* normally be updated with GC_enable() and */ +- /* GC_disable() calls. */ +- /* Direct assignment to GC_dont_gc is */ +- /* deprecated. */ ++GC_API int GC_dont_gc; /* Dont collect unless explicitly requested, e.g. */ ++ /* because it's not safe. */ + + GC_API int GC_dont_expand; + /* Dont expand heap unless explicitly requested */ +@@ -218,6 +296,15 @@ + /* Interferes with blacklisting. */ + /* Wizards only. */ + ++/* Public procedures */ ++ ++/* Initialize the collector. This is only required when using thread-local ++ * allocation, since unlike the regular allocation routines, GC_local_malloc ++ * is not self-initializing. If you use GC_local_malloc you should arrange ++ * to call this somehow (e.g. from a constructor) before doing any allocation. ++ */ ++GC_API void GC_init GC_PROTO((void)); ++ + GC_API unsigned long GC_time_limit; + /* If incremental collection is enabled, */ + /* We try to terminate collections */ +@@ -229,18 +316,9 @@ + /* enabled. */ + # define GC_TIME_UNLIMITED 999999 + /* Setting GC_time_limit to this value */ +- /* will disable the "pause time exceeded"*/ ++ /* will disable the "pause time exceeded */ + /* tests. */ + +-/* Public procedures */ +- +-/* Initialize the collector. This is only required when using thread-local +- * allocation, since unlike the regular allocation routines, GC_local_malloc +- * is not self-initializing. If you use GC_local_malloc you should arrange +- * to call this somehow (e.g. from a constructor) before doing any allocation. +- */ +-GC_API void GC_init GC_PROTO((void)); +- + /* + * general purpose allocation routines, with roughly malloc calling conv. + * The atomic versions promise that no relevant pointers are contained +@@ -341,21 +419,17 @@ + GC_API void GC_add_roots GC_PROTO((char * low_address, + char * high_address_plus_1)); + +-/* Remove a root segment. Wizards only. */ +-GC_API void GC_remove_roots GC_PROTO((char * low_address, +- char * high_address_plus_1)); +- + /* Add a displacement to the set of those considered valid by the */ + /* collector. GC_register_displacement(n) means that if p was returned */ + /* by GC_malloc, then (char *)p + n will be considered to be a valid */ +-/* pointer to p. N must be small and less than the size of p. */ ++/* pointer to n. N must be small and less than the size of p. */ + /* (All pointers to the interior of objects from the stack are */ + /* considered valid in any case. This applies to heap objects and */ + /* static data.) */ + /* Preferably, this should be called before any other GC procedures. */ + /* Calling it later adds to the probability of excess memory */ + /* retention. */ +-/* This is a no-op if the collector has recognition of */ ++/* This is a no-op if the collector was compiled with recognition of */ + /* arbitrary interior pointers enabled, which is now the default. */ + GC_API void GC_register_displacement GC_PROTO((GC_word n)); + +@@ -390,18 +464,9 @@ + GC_API size_t GC_get_bytes_since_gc GC_PROTO((void)); + + /* Return the total number of bytes allocated in this process. */ +-/* Never decreases, except due to wrapping. */ ++/* Never decreases. */ + GC_API size_t GC_get_total_bytes GC_PROTO((void)); + +-/* Disable garbage collection. Even GC_gcollect calls will be */ +-/* ineffective. */ +-GC_API void GC_disable GC_PROTO((void)); +- +-/* Reenable garbage collection. GC_diable() and GC_enable() calls */ +-/* nest. Garbage collection is enabled if the number of calls to both */ +-/* both functions is equal. */ +-GC_API void GC_enable GC_PROTO((void)); +- + /* Enable incremental/generational collection. */ + /* Not advisable unless dirty bits are */ + /* available or most heap objects are */ +@@ -409,11 +474,7 @@ + /* Don't use in leak finding mode. */ + /* Ignored if GC_dont_gc is true. */ + /* Only the generational piece of this is */ +-/* functional if GC_parallel is TRUE */ +-/* or if GC_time_limit is GC_TIME_UNLIMITED. */ +-/* Causes GC_local_gcj_malloc() to revert to */ +-/* locked allocation. Must be called */ +-/* before any GC_local_gcj_malloc() calls. */ ++/* functional if GC_parallel is TRUE. */ + GC_API void GC_enable_incremental GC_PROTO((void)); + + /* Does incremental mode write-protect pages? Returns zero or */ +@@ -457,42 +518,6 @@ + # define GC_RETURN_ADDR (GC_word)__return_address + #endif + +-#ifdef __linux__ +-# include +-# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ +- && !defined(__ia64__) +-# define GC_HAVE_BUILTIN_BACKTRACE +-# define GC_CAN_SAVE_CALL_STACKS +-# endif +-# if defined(__i386__) || defined(__x86_64__) +-# define GC_CAN_SAVE_CALL_STACKS +-# endif +-#endif +- +-#if defined(__sparc__) +-# define GC_CAN_SAVE_CALL_STACKS +-#endif +- +-/* If we're on an a platform on which we can't save call stacks, but */ +-/* gcc is normally used, we go ahead and define GC_ADD_CALLER. */ +-/* We make this decision independent of whether gcc is actually being */ +-/* used, in order to keep the interface consistent, and allow mixing */ +-/* of compilers. */ +-/* This may also be desirable if it is possible but expensive to */ +-/* retrieve the call chain. */ +-#if (defined(__linux__) || defined(__NetBSD__) || defined(__OpenBSD__) \ +- || defined(__FreeBSD__)) & !defined(GC_CAN_SAVE_CALL_STACKS) +-# define GC_ADD_CALLER +-# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) +- /* 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) +-# else +- /* Just pass 0 for gcc compatibility. */ +-# define GC_RETURN_ADDR 0 +-# endif +-#endif +- + #ifdef GC_ADD_CALLER + # define GC_EXTRAS GC_RETURN_ADDR, __FILE__, __LINE__ + # define GC_EXTRA_PARAMS GC_word ra, GC_CONST char * s, int i +@@ -511,42 +536,18 @@ + GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS)); + GC_API GC_PTR GC_debug_malloc_stubborn + GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS)); +-GC_API GC_PTR GC_debug_malloc_ignore_off_page +- GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS)); +-GC_API GC_PTR GC_debug_malloc_atomic_ignore_off_page +- GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS)); + GC_API void GC_debug_free GC_PROTO((GC_PTR object_addr)); + GC_API GC_PTR GC_debug_realloc + GC_PROTO((GC_PTR old_object, size_t new_size_in_bytes, + GC_EXTRA_PARAMS)); ++ + GC_API void GC_debug_change_stubborn GC_PROTO((GC_PTR)); + GC_API void GC_debug_end_stubborn_change GC_PROTO((GC_PTR)); +- +-/* Routines that allocate objects with debug information (like the */ +-/* above), but just fill in dummy file and line number information. */ +-/* Thus they can serve as drop-in malloc/realloc replacements. This */ +-/* can be useful for two reasons: */ +-/* 1) It allows the collector to be built with DBG_HDRS_ALL defined */ +-/* even if some allocation calls come from 3rd party libraries */ +-/* that can't be recompiled. */ +-/* 2) On some platforms, the file and line information is redundant, */ +-/* since it can be reconstructed from a stack trace. On such */ +-/* platforms it may be more convenient not to recompile, e.g. for */ +-/* leak detection. This can be accomplished by instructing the */ +-/* linker to replace malloc/realloc with these. */ +-GC_API GC_PTR GC_debug_malloc_replacement GC_PROTO((size_t size_in_bytes)); +-GC_API GC_PTR GC_debug_realloc_replacement +- GC_PROTO((GC_PTR object_addr, size_t size_in_bytes)); +- + # ifdef GC_DEBUG + # define GC_MALLOC(sz) GC_debug_malloc(sz, GC_EXTRAS) + # define GC_MALLOC_ATOMIC(sz) GC_debug_malloc_atomic(sz, GC_EXTRAS) +-# define GC_MALLOC_UNCOLLECTABLE(sz) \ +- GC_debug_malloc_uncollectable(sz, GC_EXTRAS) +-# define GC_MALLOC_IGNORE_OFF_PAGE(sz) \ +- GC_debug_malloc_ignore_off_page(sz, GC_EXTRAS) +-# define GC_MALLOC_ATOMIC_IGNORE_OFF_PAGE(sz) \ +- GC_debug_malloc_atomic_ignore_off_page(sz, GC_EXTRAS) ++# define GC_MALLOC_UNCOLLECTABLE(sz) GC_debug_malloc_uncollectable(sz, \ ++ GC_EXTRAS) + # define GC_REALLOC(old, sz) GC_debug_realloc(old, sz, GC_EXTRAS) + # define GC_FREE(p) GC_debug_free(p) + # define GC_REGISTER_FINALIZER(p, f, d, of, od) \ +@@ -565,10 +566,6 @@ + # define GC_MALLOC(sz) GC_malloc(sz) + # define GC_MALLOC_ATOMIC(sz) GC_malloc_atomic(sz) + # define GC_MALLOC_UNCOLLECTABLE(sz) GC_malloc_uncollectable(sz) +-# define GC_MALLOC_IGNORE_OFF_PAGE(sz) \ +- GC_malloc_ignore_off_page(sz) +-# define GC_MALLOC_ATOMIC_IGNORE_OFF_PAGE(sz) \ +- GC_malloc_atomic_ignore_off_page(sz) + # define GC_REALLOC(old, sz) GC_realloc(old, sz) + # define GC_FREE(p) GC_free(p) + # define GC_REGISTER_FINALIZER(p, f, d, of, od) \ +@@ -647,8 +644,7 @@ + /* itself. There is a stylistic argument that this is wrong, */ + /* but it's unavoidable for C++, since the compiler may */ + /* silently introduce these. It's also benign in that specific */ +-/* case. And it helps if finalizable objects are split to */ +-/* avoid cycles. */ ++/* case. */ + /* Note that cd will still be viewed as accessible, even if it */ + /* refers to the object itself. */ + GC_API void GC_register_finalizer_ignore_self +@@ -721,6 +717,11 @@ + /* Undoes a registration by either of the above two */ + /* routines. */ + ++/* Auxiliary fns to make finalization work correctly with displaced */ ++/* pointers introduced by the debugging allocators. */ ++GC_API GC_PTR GC_make_closure GC_PROTO((GC_finalization_proc fn, GC_PTR data)); ++GC_API void GC_debug_invoke_finalizer GC_PROTO((GC_PTR obj, GC_PTR data)); ++ + /* Returns !=0 if GC_invoke_finalizers has something to do. */ + GC_API int GC_should_invoke_finalizers GC_PROTO((void)); + +@@ -737,10 +738,6 @@ + typedef void (*GC_warn_proc) GC_PROTO((char *msg, GC_word arg)); + GC_API GC_warn_proc GC_set_warn_proc GC_PROTO((GC_warn_proc p)); + /* Returns old warning procedure. */ +- +-GC_API GC_word GC_set_free_space_divisor GC_PROTO((GC_word value)); +- /* Set free_space_divisor. See above for definition. */ +- /* Returns old value. */ + + /* The following is intended to be used by a higher level */ + /* (e.g. Java-like) finalization facility. It is expected */ +@@ -878,16 +875,12 @@ + + #if defined(GC_WIN32_THREADS) + # include +-# include + + /* + * All threads must be created using GC_CreateThread, so that they will be +- * recorded in the thread table. For backwards compatibility, this is not +- * technically true if the GC is built as a dynamic library, since it can +- * and does then use DllMain to keep track of thread creations. But new code +- * should be built to call GC_CreateThread. ++ * recorded in the thread table. + */ +- GC_API HANDLE GC_CreateThread( ++ HANDLE WINAPI GC_CreateThread( + LPSECURITY_ATTRIBUTES lpThreadAttributes, + DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, + LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ); +@@ -921,18 +914,13 @@ + # define GC_INIT() { extern end, etext; \ + GC_noop(&end, &etext); } + #else +-# if defined(__CYGWIN32__) && defined(GC_DLL) || defined (_AIX) ++# if (defined(__CYGWIN32__) && defined(GC_USE_DLL)) || defined (_AIX) + /* +- * Similarly gnu-win32 DLLs need explicit initialization from +- * the main program, as does AIX. ++ * Similarly gnu-win32 DLLs need explicit initialization + */ + # define GC_INIT() { GC_add_roots(DATASTART, DATAEND); } + # else +-# if defined(__APPLE__) && defined(__MACH__) +-# define GC_INIT() { GC_init(); } +-# else +-# define GC_INIT() +-# endif ++# define GC_INIT() + # endif + #endif + +diff -Nur ../boehm-gc/include/gc_allocator.h boehm-gc/include/gc_allocator.h +--- ../boehm-gc/include/gc_allocator.h Mon May 26 13:28:19 2003 ++++ boehm-gc/include/gc_allocator.h Wed Dec 31 16:00:00 1969 +@@ -1,232 +0,0 @@ +-/* +- * Copyright (c) 1996-1997 +- * Silicon Graphics Computer Systems, Inc. +- * +- * Permission to use, copy, modify, distribute and sell this software +- * and its documentation for any purpose is hereby granted without fee, +- * provided that the above copyright notice appear in all copies and +- * that both that copyright notice and this permission notice appear +- * in supporting documentation. Silicon Graphics makes no +- * representations about the suitability of this software for any +- * purpose. It is provided "as is" without express or implied warranty. +- * +- * Copyright (c) 2002 +- * Hewlett-Packard Company +- * +- * Permission to use, copy, modify, distribute and sell this software +- * and its documentation for any purpose is hereby granted without fee, +- * provided that the above copyright notice appear in all copies and +- * that both that copyright notice and this permission notice appear +- * in supporting documentation. Hewlett-Packard Company makes no +- * representations about the suitability of this software for any +- * purpose. It is provided "as is" without express or implied warranty. +- */ +- +-/* +- * This implements standard-conforming allocators that interact with +- * the garbage collector. Gc_alloctor allocates garbage-collectable +- * objects of type T. Traceable_allocator allocates objects that +- * are not temselves garbage collected, but are scanned by the +- * collector for pointers to collectable objects. Traceable_alloc +- * should be used for explicitly managed STL containers that may +- * point to collectable objects. +- * +- * This code was derived from an earlier version of the GNU C++ standard +- * library, which itself was derived from the SGI STL implementation. +- */ +- +-#include "gc.h" // For size_t +- +-/* First some helpers to allow us to dispatch on whether or not a type +- * is known to be pointerfree. +- * These are private, except that the client may invoke the +- * GC_DECLARE_PTRFREE macro. +- */ +- +-struct GC_true_type {}; +-struct GC_false_type {}; +- +-template +-struct GC_type_traits { +- GC_false_type GC_is_ptr_free; +-}; +- +-# define GC_DECLARE_PTRFREE(T) \ +-template<> struct GC_type_traits { GC_true_type GC_is_ptr_free; } +- +-GC_DECLARE_PTRFREE(signed char); +-GC_DECLARE_PTRFREE(unsigned char); +-GC_DECLARE_PTRFREE(signed short); +-GC_DECLARE_PTRFREE(unsigned short); +-GC_DECLARE_PTRFREE(signed int); +-GC_DECLARE_PTRFREE(unsigned int); +-GC_DECLARE_PTRFREE(signed long); +-GC_DECLARE_PTRFREE(unsigned long); +-GC_DECLARE_PTRFREE(float); +-GC_DECLARE_PTRFREE(double); +-/* The client may want to add others. */ +- +-// In the following GC_Tp is GC_true_type iff we are allocating a +-// pointerfree object. +-template +-inline void * GC_selective_alloc(size_t n, GC_Tp) { +- return GC_MALLOC(n); +-} +- +-template <> +-inline void * GC_selective_alloc(size_t n, GC_true_type) { +- return GC_MALLOC_ATOMIC(n); +-} +- +-/* Now the public gc_allocator class: +- */ +-template +-class gc_allocator { +-public: +- typedef size_t size_type; +- typedef ptrdiff_t difference_type; +- typedef GC_Tp* pointer; +- typedef const GC_Tp* const_pointer; +- typedef GC_Tp& reference; +- typedef const GC_Tp& const_reference; +- typedef GC_Tp value_type; +- +- template struct rebind { +- typedef gc_allocator other; +- }; +- +- gc_allocator() {} +-# ifndef _MSC_VER +- // I'm not sure why this is needed here in addition to the following. +- // The standard specifies it for the standard allocator, but VC++ rejects +- // it. -HB +- gc_allocator(const gc_allocator&) throw() {} +-# endif +- template gc_allocator(const gc_allocator&) throw() {} +- ~gc_allocator() throw() {} +- +- pointer address(reference GC_x) const { return &GC_x; } +- const_pointer address(const_reference GC_x) const { return &GC_x; } +- +- // GC_n is permitted to be 0. The C++ standard says nothing about what +- // the return value is when GC_n == 0. +- GC_Tp* allocate(size_type GC_n, const void* = 0) { +- GC_type_traits traits; +- return static_cast +- (GC_selective_alloc(GC_n * sizeof(GC_Tp), +- traits.GC_is_ptr_free)); +- } +- +- // __p is not permitted to be a null pointer. +- void deallocate(pointer __p, size_type GC_n) +- { GC_FREE(__p); } +- +- size_type max_size() const throw() +- { return size_t(-1) / sizeof(GC_Tp); } +- +- void construct(pointer __p, const GC_Tp& __val) { new(__p) GC_Tp(__val); } +- void destroy(pointer __p) { __p->~GC_Tp(); } +-}; +- +-template<> +-class gc_allocator { +- typedef size_t size_type; +- typedef ptrdiff_t difference_type; +- typedef void* pointer; +- typedef const void* const_pointer; +- typedef void value_type; +- +- template struct rebind { +- typedef gc_allocator other; +- }; +-}; +- +- +-template +-inline bool operator==(const gc_allocator&, const gc_allocator&) +-{ +- return true; +-} +- +-template +-inline bool operator!=(const gc_allocator&, const gc_allocator&) +-{ +- return false; +-} +- +-/* +- * And the public traceable_allocator class. +- */ +- +-// Note that we currently don't specialize the pointer-free case, since a +-// pointer-free traceable container doesn't make that much sense, +-// though it could become an issue due to abstraction boundaries. +-template +-class traceable_allocator { +-public: +- typedef size_t size_type; +- typedef ptrdiff_t difference_type; +- typedef GC_Tp* pointer; +- typedef const GC_Tp* const_pointer; +- typedef GC_Tp& reference; +- typedef const GC_Tp& const_reference; +- typedef GC_Tp value_type; +- +- template struct rebind { +- typedef traceable_allocator other; +- }; +- +- traceable_allocator() throw() {} +-# ifndef _MSC_VER +- traceable_allocator(const traceable_allocator&) throw() {} +-# endif +- template traceable_allocator +- (const traceable_allocator&) throw() {} +- ~traceable_allocator() throw() {} +- +- pointer address(reference GC_x) const { return &GC_x; } +- const_pointer address(const_reference GC_x) const { return &GC_x; } +- +- // GC_n is permitted to be 0. The C++ standard says nothing about what +- // the return value is when GC_n == 0. +- GC_Tp* allocate(size_type GC_n, const void* = 0) { +- return static_cast(GC_MALLOC_UNCOLLECTABLE(GC_n * sizeof(GC_Tp))); +- } +- +- // __p is not permitted to be a null pointer. +- void deallocate(pointer __p, size_type GC_n) +- { GC_FREE(__p); } +- +- size_type max_size() const throw() +- { return size_t(-1) / sizeof(GC_Tp); } +- +- void construct(pointer __p, const GC_Tp& __val) { new(__p) GC_Tp(__val); } +- void destroy(pointer __p) { __p->~GC_Tp(); } +-}; +- +-template<> +-class traceable_allocator { +- typedef size_t size_type; +- typedef ptrdiff_t difference_type; +- typedef void* pointer; +- typedef const void* const_pointer; +- typedef void value_type; +- +- template struct rebind { +- typedef traceable_allocator other; +- }; +-}; +- +- +-template +-inline bool operator==(const traceable_allocator&, const traceable_allocator&) +-{ +- return true; +-} +- +-template +-inline bool operator!=(const traceable_allocator&, const traceable_allocator&) +-{ +- return false; +-} +- +diff -Nur ../boehm-gc/include/gc_config_macros.h boehm-gc/include/gc_config_macros.h +--- ../boehm-gc/include/gc_config_macros.h Mon May 26 13:28:19 2003 ++++ boehm-gc/include/gc_config_macros.h Wed Dec 31 16:00:00 1969 +@@ -1,142 +0,0 @@ +-/* +- * This should never be included directly. It is included only from gc.h. +- * We separate it only to make gc.h more suitable as documentation. +- * +- * Some tests for old macros. These violate our namespace rules and will +- * disappear shortly. Use the GC_ names. +- */ +-#if defined(SOLARIS_THREADS) || defined(_SOLARIS_THREADS) +-# define GC_SOLARIS_THREADS +-#endif +-#if defined(_SOLARIS_PTHREADS) +-# define GC_SOLARIS_PTHREADS +-#endif +-#if defined(IRIX_THREADS) +-# define GC_IRIX_THREADS +-#endif +-#if defined(DGUX_THREADS) +-# if !defined(GC_DGUX386_THREADS) +-# define GC_DGUX386_THREADS +-# endif +-#endif +-#if defined(HPUX_THREADS) +-# define GC_HPUX_THREADS +-#endif +-#if defined(OSF1_THREADS) +-# define GC_OSF1_THREADS +-#endif +-#if defined(LINUX_THREADS) +-# define GC_LINUX_THREADS +-#endif +-#if defined(WIN32_THREADS) +-# define GC_WIN32_THREADS +-#endif +-#if defined(USE_LD_WRAP) +-# define GC_USE_LD_WRAP +-#endif +- +-#if !defined(_REENTRANT) && (defined(GC_SOLARIS_THREADS) \ +- || defined(GC_SOLARIS_PTHREADS) \ +- || defined(GC_HPUX_THREADS) \ +- || defined(GC_LINUX_THREADS)) +-# define _REENTRANT +- /* Better late than never. This fails if system headers that */ +- /* depend on this were previously included. */ +-#endif +- +-#if defined(GC_DGUX386_THREADS) && !defined(_POSIX4A_DRAFT10_SOURCE) +-# define _POSIX4A_DRAFT10_SOURCE 1 +-#endif +- +-# if defined(GC_SOLARIS_PTHREADS) || defined(GC_FREEBSD_THREADS) || \ +- defined(GC_IRIX_THREADS) || defined(GC_LINUX_THREADS) || \ +- defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) || \ +- defined(GC_DGUX386_THREADS) || defined(GC_DARWIN_THREADS) || \ +- (defined(GC_WIN32_THREADS) && defined(__CYGWIN32__)) +-# define GC_PTHREADS +-# endif +- +-#if defined(GC_THREADS) && !defined(GC_PTHREADS) +-# if defined(__linux__) +-# define GC_LINUX_THREADS +-# define GC_PTHREADS +-# endif +-# if !defined(LINUX) && (defined(_PA_RISC1_1) || defined(_PA_RISC2_0) \ +- || defined(hppa) || defined(__HPPA)) +-# define GC_HPUX_THREADS +-# define GC_PTHREADS +-# endif +-# if !defined(__linux__) && (defined(__alpha) || defined(__alpha__)) +-# define GC_OSF1_THREADS +-# define GC_PTHREADS +-# endif +-# if defined(__mips) && !defined(__linux__) +-# define GC_IRIX_THREADS +-# define GC_PTHREADS +-# endif +-# if defined(__sparc) && !defined(__linux__) +-# define GC_SOLARIS_PTHREADS +-# define GC_PTHREADS +-# endif +-# if defined(__APPLE__) && defined(__MACH__) && defined(__ppc__) +-# define GC_DARWIN_THREADS +-# define GC_PTHREADS +-# endif +-# if !defined(GC_PTHREADS) && defined(__FreeBSD__) +-# define GC_FREEBSD_THREADS +-# define GC_PTHREADS +-# endif +-# if defined(DGUX) && (defined(i386) || defined(__i386__)) +-# define GC_DGUX386_THREADS +-# define GC_PTHREADS +-# endif +-#endif /* GC_THREADS */ +- +-#if defined(GC_THREADS) && !defined(GC_PTHREADS) && defined(MSWIN32) +-# define GC_WIN32_THREADS +-#endif +- +-#if defined(GC_SOLARIS_PTHREADS) && !defined(GC_SOLARIS_THREADS) +-# define GC_SOLARIS_THREADS +-#endif +- +-# define __GC +-# include +-# ifdef _WIN32_WCE +-/* Yet more kluges for WinCE */ +-# include /* size_t is defined here */ +- typedef long ptrdiff_t; /* ptrdiff_t is not defined */ +-# endif +- +-#if defined(_DLL) && !defined(GC_NOT_DLL) && !defined(GC_DLL) +-# define GC_DLL +-#endif +- +-#if defined(__MINGW32__) && defined(GC_DLL) +-# ifdef GC_BUILD +-# define GC_API __declspec(dllexport) +-# else +-# define GC_API __declspec(dllimport) +-# endif +-#endif +- +-#if (defined(__DMC__) || defined(_MSC_VER)) && defined(GC_DLL) +-# ifdef GC_BUILD +-# define GC_API extern __declspec(dllexport) +-# else +-# define GC_API __declspec(dllimport) +-# endif +-#endif +- +-#if defined(__WATCOMC__) && defined(GC_DLL) +-# ifdef GC_BUILD +-# define GC_API extern __declspec(dllexport) +-# else +-# define GC_API extern __declspec(dllimport) +-# endif +-#endif +- +-#ifndef GC_API +-#define GC_API extern +-#endif +- +diff -Nur ../boehm-gc/include/gc_cpp.h boehm-gc/include/gc_cpp.h +--- ../boehm-gc/include/gc_cpp.h Mon May 26 13:28:19 2003 ++++ boehm-gc/include/gc_cpp.h Fri Aug 17 18:04:43 2001 +@@ -134,9 +134,7 @@ + #include "gc.h" + + #ifndef THINK_CPLUS +-# define GC_cdecl +-#else +-# define GC_cdecl _cdecl ++#define _cdecl + #endif + + #if ! defined( GC_NO_OPERATOR_NEW_ARRAY ) \ +@@ -161,22 +159,12 @@ + class gc {public: + inline void* operator new( size_t size ); + inline void* operator new( size_t size, GCPlacement gcp ); +- inline void* operator new( size_t size, void *p ); +- /* Must be redefined here, since the other overloadings */ +- /* hide the global definition. */ + inline void operator delete( void* obj ); +-# ifndef __BORLANDC__ /* Confuses the Borland compiler. */ +- inline void operator delete( void*, void* ); +-# endif + + #ifdef GC_OPERATOR_NEW_ARRAY + inline void* operator new[]( size_t size ); + inline void* operator new[]( size_t size, GCPlacement gcp ); +- inline void* operator new[]( size_t size, void *p ); + inline void operator delete[]( void* obj ); +-# ifndef __BORLANDC__ +- inline void gc::operator delete[]( void*, void* ); +-# endif + #endif /* GC_OPERATOR_NEW_ARRAY */ + }; + /* +@@ -188,7 +176,7 @@ + inline gc_cleanup(); + inline virtual ~gc_cleanup(); + private: +- inline static void GC_cdecl cleanup( void* obj, void* clientData );}; ++ inline static void _cdecl cleanup( void* obj, void* clientData );}; + /* + Instances of classes derived from "gc_cleanup" will be allocated + in the collected heap by default. When the collector discovers an +@@ -223,6 +211,7 @@ + classes derived from "gc_cleanup" or containing members derived + from "gc_cleanup". */ + ++#ifdef GC_OPERATOR_NEW_ARRAY + + #ifdef _MSC_VER + /** This ensures that the system default operator new[] doesn't get +@@ -231,23 +220,41 @@ + * There seems to be really redirect new in this environment without + * including this everywhere. + */ +- void *operator new[]( size_t size ); +- +- void operator delete[](void* obj); +- +- void* operator new( size_t size); ++ inline void *operator new[]( size_t size ) ++ { ++ return GC_MALLOC_UNCOLLECTABLE( size ); ++ } ++ ++ inline void operator delete[](void* obj) ++ { ++ GC_FREE(obj); ++ }; ++ ++ inline void* operator new( size_t size) ++ { ++ return GC_MALLOC_UNCOLLECTABLE( size); ++ }; ++ ++ inline void operator delete(void* obj) ++ { ++ GC_FREE(obj); ++ }; + +- void operator delete(void* obj); + +- // This new operator is used by VC++ in case of Debug builds ! +- void* operator new( size_t size, ++// This new operator is used by VC++ in case of Debug builds ! ++ inline void* operator new( size_t size, + int ,//nBlockUse, + const char * szFileName, +- int nLine ); +-#endif /* _MSC_VER */ ++ int nLine ++ ) { ++# ifndef GC_DEBUG ++ return GC_malloc_uncollectable( size ); ++# else ++ return GC_debug_malloc_uncollectable(size, szFileName, nLine); ++# endif ++ } + +- +-#ifdef GC_OPERATOR_NEW_ARRAY ++#endif /* _MSC_VER */ + + inline void* operator new[]( + size_t size, +@@ -276,15 +283,9 @@ + else + return GC_MALLOC_UNCOLLECTABLE( size );} + +-inline void* gc::operator new( size_t size, void *p ) { +- return p;} +- + inline void gc::operator delete( void* obj ) { + GC_FREE( obj );} + +-#ifndef __BORLANDC__ +- inline void gc::operator delete( void*, void* ) {} +-#endif + + #ifdef GC_OPERATOR_NEW_ARRAY + +@@ -294,21 +295,14 @@ + 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 ) { +- return p;} +- + inline void gc::operator delete[]( void* obj ) { + gc::operator delete( obj );} +- +-#ifndef __BORLANDC__ +- inline void gc::operator delete[]( void*, void* ) {} +-#endif + + #endif /* GC_OPERATOR_NEW_ARRAY */ + + + inline gc_cleanup::~gc_cleanup() { +- GC_register_finalizer_ignore_self( GC_base(this), 0, 0, 0, 0 );} ++ GC_REGISTER_FINALIZER_IGNORE_SELF( GC_base(this), 0, 0, 0, 0 );} + + inline void gc_cleanup::cleanup( void* obj, void* displ ) { + ((gc_cleanup*) ((char*) obj + (ptrdiff_t) displ))->~gc_cleanup();} +diff -Nur ../boehm-gc/include/gc_local_alloc.h boehm-gc/include/gc_local_alloc.h +--- ../boehm-gc/include/gc_local_alloc.h Mon May 26 13:28:19 2003 ++++ boehm-gc/include/gc_local_alloc.h Fri Aug 17 11:30:50 2001 +@@ -33,9 +33,6 @@ + * -DTHREAD_LOCAL_ALLOC, which is currently supported only on Linux. + * + * The debugging allocators use standard, not thread-local allocation. +- * +- * These routines normally require an explicit call to GC_init(), though +- * that may be done from a constructor function. + */ + + #ifndef GC_LOCAL_ALLOC_H +diff -Nur ../boehm-gc/include/gc_mark.h boehm-gc/include/gc_mark.h +--- ../boehm-gc/include/gc_mark.h Mon May 26 13:28:19 2003 ++++ boehm-gc/include/gc_mark.h Fri Aug 17 11:30:50 2001 +@@ -129,9 +129,7 @@ + /* be reserved for exceptional cases. That will ensure that */ + /* performance of this call is not extremely performance critical. */ + /* (Otherwise we would need to inline GC_mark_and_push completely, */ +-/* which would tie the client code to a fixed collector version.) */ +-/* Note that mark procedures should explicitly call FIXUP_POINTER() */ +-/* if required. */ ++/* which would tie the client code to a fixed colllector version.) */ + struct GC_ms_entry *GC_mark_and_push + GC_PROTO((GC_PTR obj, + struct GC_ms_entry * mark_stack_ptr, +diff -Nur ../boehm-gc/include/gc_pthread_redirects.h boehm-gc/include/gc_pthread_redirects.h +--- ../boehm-gc/include/gc_pthread_redirects.h Mon May 26 13:28:19 2003 ++++ boehm-gc/include/gc_pthread_redirects.h Tue Oct 16 21:55:28 2001 +@@ -52,21 +52,15 @@ + int GC_pthread_create(pthread_t *new_thread, + const pthread_attr_t *attr, + void *(*start_routine)(void *), void *arg); +-#ifndef GC_DARWIN_THREADS + int GC_pthread_sigmask(int how, const sigset_t *set, sigset_t *oset); +-#endif + int GC_pthread_join(pthread_t thread, void **retval); + int GC_pthread_detach(pthread_t thread); + + # define pthread_create GC_pthread_create +-#ifndef GC_DARWIN_THREADS + # define pthread_sigmask GC_pthread_sigmask +-#endif + # define pthread_join GC_pthread_join + # define pthread_detach GC_pthread_detach +-#ifndef GC_DARWIN_THREADS + # define dlopen GC_dlopen +-#endif + + #endif /* GC_xxxxx_THREADS */ + +diff -Nur ../boehm-gc/include/gc_typed.h boehm-gc/include/gc_typed.h +--- ../boehm-gc/include/gc_typed.h Mon May 26 13:28:19 2003 ++++ boehm-gc/include/gc_typed.h Fri Aug 17 11:30:50 2001 +@@ -29,21 +29,14 @@ + # include "gc.h" + # endif + +-#ifdef __cplusplus +- extern "C" { +-#endif + typedef GC_word * GC_bitmap; + /* The least significant bit of the first word is one if */ + /* the first word in the object may be a pointer. */ + +-# define GC_WORDSZ (8*sizeof(GC_word)) + # define GC_get_bit(bm, index) \ +- (((bm)[index/GC_WORDSZ] >> (index%GC_WORDSZ)) & 1) ++ (((bm)[divWORDSZ(index)] >> modWORDSZ(index)) & 1) + # define GC_set_bit(bm, index) \ +- (bm)[index/GC_WORDSZ] |= ((GC_word)1 << (index%GC_WORDSZ)) +-# define GC_WORD_OFFSET(t, f) (offsetof(t,f)/sizeof(GC_word)) +-# define GC_WORD_LEN(t) (sizeof(t)/ sizeof(GC_word)) +-# define GC_BITMAP_SIZE(t) ((GC_WORD_LEN(t) + GC_WORDSZ-1)/GC_WORDSZ) ++ (bm)[divWORDSZ(index)] |= (word)1 << modWORDSZ(index) + + typedef GC_word GC_descr; + +@@ -64,16 +57,6 @@ + /* is intended to be called once per type, not once */ + /* per allocation. */ + +-/* It is possible to generate a descriptor for a C type T with */ +-/* word aligned pointer fields f1, f2, ... as follows: */ +-/* */ +-/* GC_descr T_descr; +-/* GC_word T_bitmap[GC_BITMAP_SIZE(T)] = {0}; */ +-/* GC_set_bit(T_bitmap, GC_WORD_OFFSET(T,f1)); */ +-/* GC_set_bit(T_bitmap, GC_WORD_OFFSET(T,f2)); */ +-/* ... */ +-/* T_descr = GC_make_descriptor(T_bitmap, GC_WORD_LEN(T)); */ +- + GC_API GC_PTR GC_malloc_explicitly_typed + GC_PROTO((size_t size_in_bytes, GC_descr d)); + /* Allocate an object whose layout is described by d. */ +@@ -96,18 +79,15 @@ + /* Returned object is cleared. */ + + #ifdef GC_DEBUG +-# define GC_MALLOC_EXPLICITLY_TYPED(bytes, d) GC_MALLOC(bytes) +-# define GC_CALLOC_EXPLICITLY_TYPED(n, bytes, d) GC_MALLOC(n*bytes) ++# define GC_MALLOC_EXPLICTLY_TYPED(bytes, d) GC_MALLOC(bytes) ++# define GC_CALLOC_EXPLICTLY_TYPED(n, bytes, d) GC_MALLOC(n*bytes) + #else +-# define GC_MALLOC_EXPLICITLY_TYPED(bytes, d) \ ++# define GC_MALLOC_EXPLICTLY_TYPED(bytes, d) \ + GC_malloc_explicitly_typed(bytes, d) +-# define GC_CALLOC_EXPLICITLY_TYPED(n, bytes, d) \ ++# define GC_CALLOC_EXPLICTLY_TYPED(n, bytes, d) \ + GC_calloc_explicitly_typed(n, bytes, d) + #endif /* !GC_DEBUG */ + +-#ifdef __cplusplus +- } /* matches extern "C" */ +-#endif + + #endif /* _GC_TYPED_H */ + +diff -Nur ../boehm-gc/include/new_gc_alloc.h boehm-gc/include/new_gc_alloc.h +--- ../boehm-gc/include/new_gc_alloc.h Mon May 26 13:28:19 2003 ++++ boehm-gc/include/new_gc_alloc.h Tue Oct 16 02:01:38 2001 +@@ -64,14 +64,6 @@ + #endif + #endif + +-/* A hack to deal with gcc 3.1. If you are using gcc3.1 and later, */ +-/* you should probably really use gc_allocator.h instead. */ +-#if defined (__GNUC__) && \ +- (__GNUC > 3 || (__GNUC__ == 3 && (__GNUC_MINOR__ >= 1))) +-# define simple_alloc __simple_alloc +-#endif +- +- + + #define GC_ALLOC_H + +diff -Nur ../boehm-gc/include/private/CVS/Entries boehm-gc/include/private/CVS/Entries +--- ../boehm-gc/include/private/CVS/Entries Sat May 31 21:17:21 2003 ++++ boehm-gc/include/private/CVS/Entries Wed Dec 31 16:00:00 1969 +@@ -1,10 +0,0 @@ +-/dbg_mlc.h/1.3/Thu Mar 14 07:28:33 2002// +-/gc_hdrs.h/1.2/Fri Sep 14 00:43:56 2001// +-/gc_locks.h/1.5/Thu Oct 24 23:42:28 2002// +-/gc_pmark.h/1.3/Thu Mar 14 07:28:33 2002// +-/gc_priv.h/1.7/Fri Aug 2 10:04:39 2002// +-/gcconfig.h/1.10/Thu Oct 24 23:42:28 2002// +-/solaris_threads.h/1.3/Mon Nov 12 19:17:42 2001// +-/specific.h/1.3/Thu Apr 4 07:13:22 2002// +-/cord_pos.h/1.2/Mon May 26 20:28:24 2003// +-D +diff -Nur ../boehm-gc/include/private/CVS/Repository boehm-gc/include/private/CVS/Repository +--- ../boehm-gc/include/private/CVS/Repository Sun May 25 12:49:09 2003 ++++ boehm-gc/include/private/CVS/Repository Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-/cvs/root/gcc3/gcc3/boehm-gc/include/private +diff -Nur ../boehm-gc/include/private/CVS/Root boehm-gc/include/private/CVS/Root +--- ../boehm-gc/include/private/CVS/Root Sun May 25 12:49:09 2003 ++++ boehm-gc/include/private/CVS/Root Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root +diff -Nur ../boehm-gc/include/private/darwin_semaphore.h boehm-gc/include/private/darwin_semaphore.h +--- ../boehm-gc/include/private/darwin_semaphore.h Mon May 26 13:28:24 2003 ++++ boehm-gc/include/private/darwin_semaphore.h Wed Dec 31 16:00:00 1969 +@@ -1,68 +0,0 @@ +-#ifndef GC_DARWIN_SEMAPHORE_H +-#define GC_DARWIN_SEMAPHORE_H +- +-#if !defined(GC_DARWIN_THREADS) +-#error darwin_semaphore.h included with GC_DARWIN_THREADS not defined +-#endif +- +-/* +- This is a very simple semaphore implementation for darwin. It +- is implemented in terms of pthreads calls so it isn't async signal +- safe. This isn't a problem because signals aren't used to +- suspend threads on darwin. +-*/ +- +-typedef struct { +- pthread_mutex_t mutex; +- pthread_cond_t cond; +- int value; +-} sem_t; +- +-static int sem_init(sem_t *sem, int pshared, int value) { +- int ret; +- if(pshared) +- GC_abort("sem_init with pshared set"); +- sem->value = value; +- +- ret = pthread_mutex_init(&sem->mutex,NULL); +- if(ret < 0) return -1; +- ret = pthread_cond_init(&sem->cond,NULL); +- if(ret < 0) return -1; +- return 0; +-} +- +-static int sem_post(sem_t *sem) { +- if(pthread_mutex_lock(&sem->mutex) < 0) +- return -1; +- sem->value++; +- if(pthread_cond_signal(&sem->cond) < 0) { +- pthread_mutex_unlock(&sem->mutex); +- return -1; +- } +- if(pthread_mutex_unlock(&sem->mutex) < 0) +- return -1; +- return 0; +-} +- +-static int sem_wait(sem_t *sem) { +- if(pthread_mutex_lock(&sem->mutex) < 0) +- return -1; +- while(sem->value == 0) { +- pthread_cond_wait(&sem->cond,&sem->mutex); +- } +- sem->value--; +- if(pthread_mutex_unlock(&sem->mutex) < 0) +- return -1; +- return 0; +-} +- +-static int sem_destroy(sem_t *sem) { +- int ret; +- ret = pthread_cond_destroy(&sem->cond); +- if(ret < 0) return -1; +- ret = pthread_mutex_destroy(&sem->mutex); +- if(ret < 0) return -1; +- return 0; +-} +- +-#endif +diff -Nur ../boehm-gc/include/private/darwin_stop_world.h boehm-gc/include/private/darwin_stop_world.h +--- ../boehm-gc/include/private/darwin_stop_world.h Mon May 26 13:28:24 2003 ++++ boehm-gc/include/private/darwin_stop_world.h Wed Dec 31 16:00:00 1969 +@@ -1,15 +0,0 @@ +-#ifndef GC_DARWIN_STOP_WORLD_H +-#define GC_DARWIN_STOP_WORLD_H +- +-#if !defined(GC_DARWIN_THREADS) +-#error darwin_stop_world.h included without GC_DARWIN_THREADS defined +-#endif +- +-#include +-#include +- +-struct thread_stop_info { +- mach_port_t mach_thread; +-}; +- +-#endif +diff -Nur ../boehm-gc/include/private/dbg_mlc.h boehm-gc/include/private/dbg_mlc.h +--- ../boehm-gc/include/private/dbg_mlc.h Mon May 26 13:28:24 2003 ++++ boehm-gc/include/private/dbg_mlc.h Mon Feb 11 20:37:57 2002 +@@ -115,24 +115,16 @@ + + #ifdef SHORT_DBG_HDRS + # define DEBUG_BYTES (sizeof (oh)) +-# define UNCOLLECTABLE_DEBUG_BYTES DEBUG_BYTES + #else + /* Add space for END_FLAG, but use any extra space that was already */ + /* added to catch off-the-end pointers. */ +- /* For uncollectable objects, the extra byte is not added. */ +-# define UNCOLLECTABLE_DEBUG_BYTES (sizeof (oh) + sizeof (word)) +-# define DEBUG_BYTES (UNCOLLECTABLE_DEBUG_BYTES - EXTRA_BYTES) ++# define DEBUG_BYTES (sizeof (oh) + sizeof (word) - EXTRA_BYTES) + #endif + #define USR_PTR_FROM_BASE(p) ((ptr_t)(p) + sizeof(oh)) + + /* Round bytes to words without adding extra byte at end. */ + #define SIMPLE_ROUNDED_UP_WORDS(n) BYTES_TO_WORDS((n) + WORDS_TO_BYTES(1) - 1) + +-/* ADD_CALL_CHAIN stores a (partial) call chain into an object */ +-/* header. It may be called with or without the allocation */ +-/* lock. */ +-/* PRINT_CALL_CHAIN prints the call chain stored in an object */ +-/* to stderr. It requires that we do not hold the lock. */ + #ifdef SAVE_CALL_CHAIN + # define ADD_CALL_CHAIN(base, ra) GC_save_callers(((oh *)(base)) -> oh_ci) + # define PRINT_CALL_CHAIN(base) GC_print_callers(((oh *)(base)) -> oh_ci) +diff -Nur ../boehm-gc/include/private/gc_hdrs.h boehm-gc/include/private/gc_hdrs.h +--- ../boehm-gc/include/private/gc_hdrs.h Mon May 26 13:28:24 2003 ++++ boehm-gc/include/private/gc_hdrs.h Fri Aug 17 18:04:43 2001 +@@ -70,7 +70,7 @@ + #define ADVANCE(p, hhdr, source) \ + { \ + hdr * new_hdr = GC_invalid_header; \ +- p = GC_find_start(p, hhdr, &new_hdr); \ ++ p = GC_FIND_START(p, hhdr, &new_hdr, (word)source); \ + hhdr = new_hdr; \ + } + +diff -Nur ../boehm-gc/include/private/gc_locks.h boehm-gc/include/private/gc_locks.h +--- ../boehm-gc/include/private/gc_locks.h Mon May 26 13:28:24 2003 ++++ boehm-gc/include/private/gc_locks.h Fri Sep 27 13:40:06 2002 +@@ -145,24 +145,23 @@ + # if defined(POWERPC) + inline static int GC_test_and_set(volatile unsigned int *addr) { + int oldval; +- int temp = 1; /* locked value */ ++ int temp = 1; // locked value + + __asm__ __volatile__( +- "1:\tlwarx %0,0,%3\n" /* load and reserve */ +- "\tcmpwi %0, 0\n" /* if load is */ +- "\tbne 2f\n" /* non-zero, return already set */ +- "\tstwcx. %2,0,%1\n" /* else store conditional */ +- "\tbne- 1b\n" /* retry if lost reservation */ +- "\tsync\n" /* import barrier */ +- "2:\t\n" /* oldval is zero if we set */ ++ "1:\tlwarx %0,0,%3\n" // load and reserve ++ "\tcmpwi %0, 0\n" // if load is ++ "\tbne 2f\n" // non-zero, return already set ++ "\tstwcx. %2,0,%1\n" // else store conditional ++ "\tbne- 1b\n" // retry if lost reservation ++ "2:\t\n" // oldval is zero if we set + : "=&r"(oldval), "=p"(addr) + : "r"(temp), "1"(addr) +- : "cr0","memory"); +- return oldval; ++ : "memory"); ++ return (int)oldval; + } + # define GC_TEST_AND_SET_DEFINED + inline static void GC_clear(volatile unsigned int *addr) { +- __asm__ __volatile__("eieio" : : : "memory"); ++ __asm__ __volatile__("eieio" ::: "memory"); + *(addr) = 0; + } + # define GC_CLEAR_DEFINED +@@ -192,11 +191,8 @@ + return oldvalue; + } + # define GC_TEST_AND_SET_DEFINED +- inline static void GC_clear(volatile unsigned int *addr) { +- __asm__ __volatile__("mb" : : : "memory"); +- *(addr) = 0; +- } +-# define GC_CLEAR_DEFINED ++ /* Should probably also define GC_clear, since it needs */ ++ /* a memory barrier ?? */ + # endif /* ALPHA */ + # ifdef ARM32 + inline static int GC_test_and_set(volatile unsigned int *addr) { +@@ -214,30 +210,22 @@ + # define GC_TEST_AND_SET_DEFINED + # endif /* ARM32 */ + # ifdef S390 +- inline static int GC_test_and_set(volatile unsigned int *addr) { +- int ret; +- __asm__ __volatile__ ( +- " l %0,0(%2)\n" +- "0: cs %0,%1,0(%2)\n" +- " jl 0b" +- : "=&d" (ret) +- : "d" (1), "a" (addr) +- : "cc", "memory"); +- return ret; +- } ++ inline static int GC_test_and_set(volatile unsigned int *addr) { ++ int ret; ++ __asm__ __volatile__ ( ++ " l %0,0(%2)\n" ++ "0: cs %0,%1,0(%2)\n" ++ " jl 0b" ++ : "=&d" (ret) ++ : "d" (1), "a" (addr) ++ : "cc", "memory"); ++ return ret; ++ } + # endif + # endif /* __GNUC__ */ + # if (defined(ALPHA) && !defined(__GNUC__)) +-# ifndef OSF1 +- --> We currently assume that if gcc is not used, we are +- --> running under Tru64. +-# endif +-# include +-# include +-# define GC_test_and_set(addr) __ATOMIC_EXCH_LONG(addr, 1) ++# define GC_test_and_set(addr) __cxx_test_and_set_atomic(addr, 1) + # define GC_TEST_AND_SET_DEFINED +-# define GC_clear(addr) { asm("mb"); *(volatile unsigned *)addr = 0; } +-# define GC_CLEAR_DEFINED + # endif + # if defined(MSWIN32) + # define GC_test_and_set(addr) InterlockedExchange((LPLONG)addr,1) +@@ -250,11 +238,7 @@ + # define GC_TEST_AND_SET_DEFINED + # elif __mips < 3 || !(defined (_ABIN32) || defined(_ABI64)) \ + || !defined(_COMPILER_VERSION) || _COMPILER_VERSION < 700 +-# ifdef __GNUC__ +-# define GC_test_and_set(addr) _test_and_set(addr,1) +-# else +-# define GC_test_and_set(addr) test_and_set(addr,1) +-# endif ++# define GC_test_and_set(addr) test_and_set(addr, 1) + # else + # define GC_test_and_set(addr) __test_and_set(addr,1) + # define GC_clear(addr) __lock_release(addr); +@@ -295,7 +279,7 @@ + # endif + + # if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \ +- && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS) ++ && !defined(GC_IRIX_THREADS) + # define NO_THREAD (pthread_t)(-1) + # include + # if defined(PARALLEL_MARK) +@@ -326,12 +310,12 @@ + { + char result; + __asm__ __volatile__("lock; cmpxchgl %2, %0; setz %1" +- : "+m"(*(addr)), "=r"(result) +- : "r" (new_val), "a"(old) : "memory"); ++ : "=m"(*(addr)), "=r"(result) ++ : "r" (new_val), "0"(*(addr)), "a"(old) : "memory"); + return (GC_bool) result; + } + # endif /* !GENERIC_COMPARE_AND_SWAP */ +- inline static void GC_memory_barrier() ++ inline static void GC_memory_write_barrier() + { + /* We believe the processor ensures at least processor */ + /* consistent ordering. Thus a compiler barrier */ +@@ -339,37 +323,6 @@ + __asm__ __volatile__("" : : : "memory"); + } + # endif /* I386 */ +- +-# if defined(POWERPC) +-# if !defined(GENERIC_COMPARE_AND_SWAP) +- /* Returns TRUE if the comparison succeeded. */ +- inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr, +- GC_word old, GC_word new_val) +- { +- int result, dummy; +- __asm__ __volatile__( +- "1:\tlwarx %0,0,%5\n" +- "\tcmpw %0,%4\n" +- "\tbne 2f\n" +- "\tstwcx. %3,0,%2\n" +- "\tbne- 1b\n" +- "\tsync\n" +- "\tli %1, 1\n" +- "\tb 3f\n" +- "2:\tli %1, 0\n" +- "3:\t\n" +- : "=&r" (dummy), "=r" (result), "=p" (addr) +- : "r" (new_val), "r" (old), "2"(addr) +- : "cr0","memory"); +- return (GC_bool) result; +- } +-# endif /* !GENERIC_COMPARE_AND_SWAP */ +- inline static void GC_memory_barrier() +- { +- __asm__ __volatile__("sync" : : : "memory"); +- } +-# endif /* POWERPC */ +- + # if defined(IA64) + # if !defined(GENERIC_COMPARE_AND_SWAP) + inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr, +@@ -384,71 +337,31 @@ + # endif /* !GENERIC_COMPARE_AND_SWAP */ + # if 0 + /* Shouldn't be needed; we use volatile stores instead. */ +- inline static void GC_memory_barrier() ++ inline static void GC_memory_write_barrier() + { + __asm__ __volatile__("mf" : : : "memory"); + } + # endif /* 0 */ + # endif /* IA64 */ +-# if defined(ALPHA) +-# if !defined(GENERIC_COMPARE_AND_SWAP) +-# if defined(__GNUC__) +- inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr, +- GC_word old, GC_word new_val) +- { +- unsigned long was_equal; +- unsigned long temp; +- +- __asm__ __volatile__( +- "1: ldq_l %0,%1\n" +- " cmpeq %0,%4,%2\n" +- " mov %3,%0\n" +- " beq %2,2f\n" +- " stq_c %0,%1\n" +- " beq %0,1b\n" +- "2:\n" +- " mb\n" +- :"=&r" (temp), "=m" (*addr), "=&r" (was_equal) +- : "r" (new_val), "Ir" (old) +- :"memory"); +- return was_equal; +- } +-# else /* !__GNUC__ */ +- inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr, +- GC_word old, GC_word new_val) +- { +- return __CMP_STORE_QUAD(addr, old, new_val, addr); +- } +-# endif /* !__GNUC__ */ +-# endif /* !GENERIC_COMPARE_AND_SWAP */ +-# ifdef __GNUC__ +- inline static void GC_memory_barrier() +- { +- __asm__ __volatile__("mb" : : : "memory"); +- } +-# else +-# define GC_memory_barrier() asm("mb") +-# endif /* !__GNUC__ */ +-# endif /* ALPHA */ + # if defined(S390) + # if !defined(GENERIC_COMPARE_AND_SWAP) +- inline static GC_bool GC_compare_and_exchange(volatile C_word *addr, +- GC_word old, GC_word new_val) +- { +- int retval; +- __asm__ __volatile__ ( +-# ifndef __s390x__ +- " cs %1,%2,0(%3)\n" +-# else +- " csg %1,%2,0(%3)\n" +-# endif +- " ipm %0\n" +- " srl %0,28\n" +- : "=&d" (retval), "+d" (old) +- : "d" (new_val), "a" (addr) +- : "cc", "memory"); +- return retval == 0; +- } ++ inline static GC_bool GC_compare_and_exchange(volatile C_word *addr, ++ GC_word old, GC_word new_val) ++ { ++ int retval; ++ __asm__ __volatile__ ( ++# ifndef __s390x__ ++ " cs %1,%2,0(%3)\n" ++# else ++ " csg %1,%2,0(%3)\n" ++# endif ++ " ipm %0\n" ++ " srl %0,28\n" ++ : "=&d" (retval), "+d" (old) ++ : "d" (new_val), "a" (addr) ++ : "cc", "memory"); ++ return retval == 0; ++ } + # endif + # endif + # if !defined(GENERIC_COMPARE_AND_SWAP) +@@ -480,7 +393,7 @@ + extern void GC_lock(void); + /* Allocation lock holder. Only set if acquired by client through */ + /* GC_call_with_alloc_lock. */ +-# ifdef GC_ASSERTIONS ++# ifdef GC_ASSERTIONS + # define LOCK() \ + { if (GC_test_and_set(&GC_allocate_lock)) GC_lock(); \ + SET_LOCK_HOLDER(); } +@@ -521,12 +434,8 @@ + { GC_ASSERT(I_HOLD_LOCK()); UNSET_LOCK_HOLDER(); \ + pthread_mutex_unlock(&GC_allocate_ml); } + # else /* !GC_ASSERTIONS */ +-# if defined(NO_PTHREAD_TRYLOCK) +-# define LOCK() GC_lock(); +-# else /* !defined(NO_PTHREAD_TRYLOCK) */ +-# define LOCK() \ ++# define LOCK() \ + { if (0 != pthread_mutex_trylock(&GC_allocate_ml)) GC_lock(); } +-# endif + # define UNLOCK() pthread_mutex_unlock(&GC_allocate_ml) + # endif /* !GC_ASSERTIONS */ + # endif /* USE_PTHREAD_LOCKS */ +@@ -569,18 +478,11 @@ + } + # define EXIT_GC() GC_collecting = 0; + # endif /* GC_IRIX_THREADS */ +-# if defined(GC_WIN32_THREADS) +-# if defined(GC_PTHREADS) +-# include +- extern pthread_mutex_t GC_allocate_ml; +-# define LOCK() pthread_mutex_lock(&GC_allocate_ml) +-# define UNLOCK() pthread_mutex_unlock(&GC_allocate_ml) +-# else +-# include +- GC_API CRITICAL_SECTION GC_allocate_ml; +-# define LOCK() EnterCriticalSection(&GC_allocate_ml); +-# define UNLOCK() LeaveCriticalSection(&GC_allocate_ml); +-# endif ++# ifdef GC_WIN32_THREADS ++# include ++ GC_API CRITICAL_SECTION GC_allocate_ml; ++# define LOCK() EnterCriticalSection(&GC_allocate_ml); ++# define UNLOCK() LeaveCriticalSection(&GC_allocate_ml); + # endif + # ifndef SET_LOCK_HOLDER + # define SET_LOCK_HOLDER() +diff -Nur ../boehm-gc/include/private/gc_pmark.h boehm-gc/include/private/gc_pmark.h +--- ../boehm-gc/include/private/gc_pmark.h Mon May 26 13:28:24 2003 ++++ boehm-gc/include/private/gc_pmark.h Mon Feb 11 20:37:57 2002 +@@ -137,7 +137,7 @@ + #ifdef __STDC__ + # ifdef PRINT_BLACK_LIST + ptr_t GC_find_start(ptr_t current, hdr *hhdr, hdr **new_hdr_p, +- word source); ++ ptr_t source); + # else + ptr_t GC_find_start(ptr_t current, hdr *hhdr, hdr **new_hdr_p); + # endif +@@ -145,7 +145,7 @@ + ptr_t GC_find_start(); + #endif + +-mse * GC_signal_mark_stack_overflow GC_PROTO((mse *msp)); ++mse *GC_signal_mark_stack_overflow(mse *msp); + + # ifdef GATHERSTATS + # define ADD_TO_ATOMIC(sz) GC_atomic_in_use += (sz) +@@ -174,6 +174,14 @@ + } \ + } + ++#ifdef PRINT_BLACK_LIST ++# define GC_FIND_START(current, hhdr, new_hdr_p, source) \ ++ GC_find_start(current, hhdr, new_hdr_p, source) ++#else ++# define GC_FIND_START(current, hhdr, new_hdr_p, source) \ ++ GC_find_start(current, hhdr, new_hdr_p) ++#endif ++ + /* Push the contents of current onto the mark stack if it is a valid */ + /* ptr to a currently unmarked object. Mark it. */ + /* If we assumed a standard-conforming compiler, we could probably */ +@@ -187,7 +195,8 @@ + GET_HDR(my_current, my_hhdr); \ + if (IS_FORWARDING_ADDR_OR_NIL(my_hhdr)) { \ + hdr * new_hdr = GC_invalid_header; \ +- my_current = GC_find_start(my_current, my_hhdr, &new_hdr); \ ++ my_current = GC_FIND_START(my_current, my_hhdr, \ ++ &new_hdr, (word)source); \ + my_hhdr = new_hdr; \ + } \ + PUSH_CONTENTS_HDR(my_current, mark_stack_top, mark_stack_limit, \ +@@ -281,39 +290,21 @@ + + /* + * Push a single value onto mark stack. Mark from the object pointed to by p. +- * Invoke FIXUP_POINTER(p) before any further processing. + * P is considered valid even if it is an interior pointer. + * Previously marked objects are not pushed. Hence we make progress even + * if the mark stack overflows. + */ +- +-# if NEED_FIXUP_POINTER +- /* Try both the raw version and the fixed up one. */ +-# define GC_PUSH_ONE_STACK(p, source) \ +- if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \ +- && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \ +- PUSH_ONE_CHECKED_STACK(p, source); \ +- } \ +- FIXUP_POINTER(p); \ +- if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \ +- && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \ +- PUSH_ONE_CHECKED_STACK(p, source); \ +- } +-# else /* !NEED_FIXUP_POINTER */ +-# define GC_PUSH_ONE_STACK(p, source) \ +- if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \ ++# define GC_PUSH_ONE_STACK(p, source) \ ++ if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \ + && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \ + PUSH_ONE_CHECKED_STACK(p, source); \ +- } +-# endif +- ++ } + + /* + * As above, but interior pointer recognition as for + * normal for heap pointers. + */ + # define GC_PUSH_ONE_HEAP(p,source) \ +- FIXUP_POINTER(p); \ + if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \ + && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \ + GC_mark_stack_top = GC_mark_and_push( \ +diff -Nur ../boehm-gc/include/private/gc_priv.h boehm-gc/include/private/gc_priv.h +--- ../boehm-gc/include/private/gc_priv.h Mon May 26 13:28:24 2003 ++++ boehm-gc/include/private/gc_priv.h Tue Mar 4 09:56:49 2003 +@@ -30,12 +30,6 @@ + # define BSD_TIME + #endif + +-#ifdef DGUX +-# include +-# include +-# include +-#endif /* DGUX */ +- + #ifdef BSD_TIME + # include + # include +@@ -212,10 +206,11 @@ + #endif + + #if defined(GC_GCJ_SUPPORT) && ALIGNMENT < 8 && !defined(ALIGN_DOUBLE) +- /* GCJ's Hashtable synchronization code requires 64-bit alignment. */ ++ /* GCJ's Hashtable synchronization code requires 64-bit alignment. */ + # define ALIGN_DOUBLE + #endif + ++ + /* ALIGN_DOUBLE requires MERGE_SIZES at present. */ + # if defined(ALIGN_DOUBLE) && !defined(MERGE_SIZES) + # define MERGE_SIZES +@@ -352,8 +347,7 @@ + # include + # define BCOPY_EXISTS + # endif +-# if defined(DARWIN) +-# include ++# if defined(MACOSX) + # define BCOPY_EXISTS + # endif + +@@ -366,6 +360,68 @@ + # define BZERO(x,n) bzero((char *)(x),(int)(n)) + # endif + ++/* HBLKSIZE aligned allocation. 0 is taken to mean failure */ ++/* space is assumed to be cleared. */ ++/* In the case os USE_MMAP, the argument must also be a */ ++/* physical page size. */ ++/* GET_MEM is currently not assumed to retrieve 0 filled space, */ ++/* though we should perhaps take advantage of the case in which */ ++/* does. */ ++struct hblk; /* See below. */ ++# ifdef PCR ++ char * real_malloc(); ++# define GET_MEM(bytes) HBLKPTR(real_malloc((size_t)bytes + GC_page_size) \ ++ + GC_page_size-1) ++# else ++# ifdef OS2 ++ void * os2_alloc(size_t bytes); ++# define GET_MEM(bytes) HBLKPTR((ptr_t)os2_alloc((size_t)bytes \ ++ + GC_page_size) \ ++ + GC_page_size-1) ++# else ++# if defined(NEXT) || defined(MACOSX) || defined(DOS4GW) || \ ++ (defined(AMIGA) && !defined(GC_AMIGA_FASTALLOC)) || \ ++ (defined(SUNOS5) && !defined(USE_MMAP)) ++# define GET_MEM(bytes) HBLKPTR((size_t) \ ++ calloc(1, (size_t)bytes + GC_page_size) \ ++ + GC_page_size-1) ++# else ++# ifdef MSWIN32 ++ extern ptr_t GC_win32_get_mem(); ++# define GET_MEM(bytes) (struct hblk *)GC_win32_get_mem(bytes) ++# else ++# ifdef MACOS ++# if defined(USE_TEMPORARY_MEMORY) ++ extern Ptr GC_MacTemporaryNewPtr(size_t size, ++ Boolean clearMemory); ++# define GET_MEM(bytes) HBLKPTR( \ ++ GC_MacTemporaryNewPtr(bytes + GC_page_size, true) \ ++ + GC_page_size-1) ++# else ++# define GET_MEM(bytes) HBLKPTR( \ ++ NewPtrClear(bytes + GC_page_size) + GC_page_size-1) ++# endif ++# else ++# ifdef MSWINCE ++ extern ptr_t GC_wince_get_mem(); ++# define GET_MEM(bytes) (struct hblk *)GC_wince_get_mem(bytes) ++# else ++# if defined(AMIGA) && defined(GC_AMIGA_FASTALLOC) ++ extern void *GC_amiga_get_mem(size_t size); ++ define GET_MEM(bytes) HBLKPTR((size_t) \ ++ GC_amiga_get_mem((size_t)bytes + GC_page_size) \ ++ + GC_page_size-1) ++# else ++ extern ptr_t GC_unix_get_mem(); ++# define GET_MEM(bytes) (struct hblk *)GC_unix_get_mem(bytes) ++# endif ++# endif ++# endif ++# endif ++# endif ++# endif ++# endif ++ + /* Delay any interrupts or signals that may abort this thread. Data */ + /* structures are in a consistent state outside this pair of calls. */ + /* ANSI C allows both to be empty (though the standard isn't very */ +@@ -430,7 +486,7 @@ + # ifdef SMALL_CONFIG + # define ABORT(msg) abort(); + # else +- GC_API void GC_abort GC_PROTO((GC_CONST char * msg)); ++ GC_API void GC_abort(); + # define ABORT(msg) GC_abort(msg); + # endif + # endif +@@ -590,10 +646,9 @@ + */ + + # ifdef LARGE_CONFIG +-# define LOG_PHT_ENTRIES 20 /* Collisions likely at 1M blocks, */ +- /* which is >= 4GB. Each table takes */ +- /* 128KB, some of which may never be */ +- /* touched. */ ++# define LOG_PHT_ENTRIES 19 /* Collisions likely at 512K blocks, */ ++ /* which is >= 2GB. Each table takes */ ++ /* 64KB. */ + # else + # ifdef SMALL_CONFIG + # define LOG_PHT_ENTRIES 14 /* Collisions are likely if heap grows */ +@@ -601,7 +656,7 @@ + /* Each hash table occupies 2K bytes. */ + # else /* default "medium" configuration */ + # define LOG_PHT_ENTRIES 16 /* Collisions are likely if heap grows */ +- /* to more than 64K hblks >= 256MB. */ ++ /* to more than 16K hblks >= 256MB. */ + /* Each hash table occupies 8K bytes. */ + # endif + # endif +@@ -842,10 +897,6 @@ + word _mem_freed; + /* Number of explicitly deallocated words of memory */ + /* since last collection. */ +- word _finalizer_mem_freed; +- /* Words of memory explicitly deallocated while */ +- /* finalizers were running. Used to approximate mem. */ +- /* explicitly deallocated by finalizers. */ + ptr_t _scratch_end_ptr; + ptr_t _scratch_last_end_ptr; + /* Used by headers.c, and can easily appear to point to */ +@@ -906,7 +957,7 @@ + /* OFFSET_TOO_BIG if the value j would be too */ + /* large to fit in the entry. (Note that the */ + /* size of these entries matters, both for */ +- /* space consumption and for cache utilization.) */ ++ /* space consumption and for cache utilization. */ + # define OFFSET_TOO_BIG 0xfe + # define OBJ_INVALID 0xff + # define MAP_ENTRY(map, bytes) (map)[bytes] +@@ -1016,7 +1067,6 @@ + # define GC_words_finalized GC_arrays._words_finalized + # define GC_non_gc_bytes_at_gc GC_arrays._non_gc_bytes_at_gc + # define GC_mem_freed GC_arrays._mem_freed +-# define GC_finalizer_mem_freed GC_arrays._finalizer_mem_freed + # define GC_scratch_end_ptr GC_arrays._scratch_end_ptr + # define GC_scratch_last_end_ptr GC_arrays._scratch_last_end_ptr + # define GC_mark_procs GC_arrays._mark_procs +@@ -1151,19 +1201,17 @@ + /* header structure associated with */ + /* block. */ + ++extern GC_bool GC_is_initialized; /* GC_init() has been run. */ ++ + extern GC_bool GC_objects_are_marked; /* There are marked objects in */ + /* the heap. */ + + #ifndef SMALL_CONFIG + extern GC_bool GC_incremental; + /* Using incremental/generational collection. */ +-# define TRUE_INCREMENTAL \ +- (GC_incremental && GC_time_limit != GC_TIME_UNLIMITED) +- /* True incremental, not just generational, mode */ + #else + # define GC_incremental FALSE + /* Hopefully allow optimizer to remove some code. */ +-# define TRUE_INCREMENTAL FALSE + #endif + + extern GC_bool GC_dirty_maintained; +@@ -1181,10 +1229,6 @@ + extern long GC_large_alloc_warn_suppressed; + /* Number of warnings suppressed so far. */ + +-#ifdef THREADS +- extern GC_bool GC_world_stopped; +-#endif +- + /* Operations */ + # ifndef abs + # define abs(x) ((x) < 0? (-(x)) : (x)) +@@ -1408,7 +1452,6 @@ + /* Set all mark bits associated with */ + /* a free list. */ + void GC_add_roots_inner GC_PROTO((char * b, char * e, GC_bool tmp)); +-void GC_remove_roots_inner GC_PROTO((char * b, char * e)); + GC_bool GC_is_static_root GC_PROTO((ptr_t p)); + /* Is the address p in one of the registered static */ + /* root sections? */ +@@ -1421,9 +1464,9 @@ + /* Add dynamic library data sections to the root set. */ + + GC_bool GC_register_main_static_data GC_PROTO((void)); +- /* We need to register the main data segment. Returns */ +- /* TRUE unless this is done implicitly as part of */ +- /* dynamic library registration. */ ++ /* We need to register the main data segment. Returns */ ++ /* TRUE unless this is done implicitly as part of */ ++ /* dynamic library registration. */ + + /* Machine dependent startup routines */ + ptr_t GC_get_stack_base GC_PROTO((void)); /* Cold end of stack */ +@@ -1581,8 +1624,6 @@ + /* until the blocks are available or */ + /* until it fails by returning FALSE. */ + +-extern GC_bool GC_is_initialized; /* GC_init() has been run. */ +- + #if defined(MSWIN32) || defined(MSWINCE) + void GC_deinit GC_PROTO((void)); + /* Free any resources allocated by */ +@@ -1624,8 +1665,6 @@ + /* Make the indicated */ + /* free list nonempty, and return its */ + /* head. */ +- +-void GC_free_inner(GC_PTR p); + + void GC_init_headers GC_PROTO((void)); + struct hblkhdr * GC_install_header GC_PROTO((struct hblk *h)); +@@ -1655,12 +1694,6 @@ + /* Call *GC_finalizer_notifier if there are */ + /* finalizers to be run, and we haven't called */ + /* this procedure yet this GC cycle. */ +- +-GC_API GC_PTR GC_make_closure GC_PROTO((GC_finalization_proc fn, GC_PTR data)); +-GC_API void GC_debug_invoke_finalizer GC_PROTO((GC_PTR obj, GC_PTR data)); +- /* Auxiliary fns to make finalization work */ +- /* correctly with displaced pointers introduced */ +- /* by the debugging allocators. */ + + void GC_add_to_heap GC_PROTO((struct hblk *p, word bytes)); + /* Add a HBLKSIZE aligned chunk to the heap. */ +@@ -1671,36 +1704,16 @@ + /* description of the object to stderr. */ + extern void (*GC_check_heap) GC_PROTO((void)); + /* Check that all objects in the heap with */ +- /* debugging info are intact. */ +- /* Add any that are not to GC_smashed list. */ +-extern void (*GC_print_all_smashed) GC_PROTO((void)); +- /* Print GC_smashed if it's not empty. */ +- /* Clear GC_smashed list. */ +-extern void GC_print_all_errors GC_PROTO((void)); +- /* Print smashed and leaked objects, if any. */ +- /* Clear the lists of such objects. */ ++ /* debugging info are intact. Print */ ++ /* descriptions of any that are not. */ + extern void (*GC_print_heap_obj) GC_PROTO((ptr_t p)); + /* If possible print s followed by a more */ + /* detailed description of the object */ + /* referred to by p. */ +-#if defined(LINUX) && defined(__ELF__) && !defined(SMALL_CONFIG) +- void GC_print_address_map GC_PROTO((void)); +- /* Print an address map of the process. */ +-#endif + +-extern GC_bool GC_have_errors; /* We saw a smashed or leaked object. */ +- /* Call error printing routine */ +- /* occasionally. */ + extern GC_bool GC_print_stats; /* Produce at least some logging output */ + /* Set from environment variable. */ + +-#ifndef NO_DEBUGGING +- extern GC_bool GC_dump_regularly; /* Generate regular debugging dumps. */ +-# define COND_DUMP if (GC_dump_regularly) GC_dump(); +-#else +-# define COND_DUMP +-#endif +- + /* Macros used for collector internal allocation. */ + /* These assume the collector lock is held. */ + #ifdef DBG_HDRS_ALL +@@ -1772,7 +1785,6 @@ + void GC_print_hblkfreelist GC_PROTO((void)); + void GC_print_heap_sects GC_PROTO((void)); + void GC_print_static_roots GC_PROTO((void)); +-void GC_print_finalization_stats GC_PROTO((void)); + void GC_dump GC_PROTO((void)); + + #ifdef KEEP_BACK_PTRS +@@ -1854,10 +1866,6 @@ + # define GC_ASSERT(expr) + # endif + +-/* Check a compile time assertion at compile time. The error */ +-/* message for failure is a bit baroque, but ... */ +-# define GC_STATIC_ASSERT(expr) sizeof(char[(expr)? 1 : -1]) +- + # if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC) + /* We need additional synchronization facilities from the thread */ + /* support. We believe these are less performance critical */ +@@ -1903,7 +1911,7 @@ + /* in Linux glibc, but it's not exported.) Thus we continue to use */ + /* the same hard-coded signals we've always used. */ + # if !defined(SIG_SUSPEND) +-# if defined(GC_LINUX_THREADS) || defined(GC_DGUX386_THREADS) ++# if defined(GC_LINUX_THREADS) + # if defined(SPARC) && !defined(SIGPWR) + /* SPARC/Linux doesn't properly define SIGPWR in . + * It is aliased to SIGLOST in asm/signal.h, though. */ +diff -Nur ../boehm-gc/include/private/gcconfig.h boehm-gc/include/private/gcconfig.h +--- ../boehm-gc/include/private/gcconfig.h Mon May 26 13:28:24 2003 ++++ boehm-gc/include/private/gcconfig.h Wed Apr 9 17:08:01 2003 +@@ -13,25 +13,11 @@ + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + */ +- +-/* +- * This header is private to the gc. It is almost always included from +- * gc_priv.h. However it is possible to include it by itself if just the +- * configuration macros are needed. In that +- * case, a few declarations relying on types declared in gc_priv.h will be +- * omitted. +- */ + + #ifndef GCCONFIG_H + + # define GCCONFIG_H + +-# ifndef GC_PRIVATE_H +- /* Fake ptr_t declaration, just to avoid compilation errors. */ +- /* This avoids many instances if "ifndef GC_PRIVATE_H" below. */ +- typedef struct GC_undefined_struct * ptr_t; +-# endif +- + /* Machine dependent parameters. Some tuning parameters can be found */ + /* near the top of gc_private.h. */ + +@@ -58,7 +44,7 @@ + # endif + + /* Determine the machine type: */ +-# if defined(__XSCALE__) ++# if defined(__arm__) || defined(__thumb__) + # define ARM32 + # if !defined(LINUX) + # define NOSYS +@@ -109,8 +95,8 @@ + # if defined(nec_ews) || defined(_nec_ews) + # define EWS4800 + # endif +-# if !defined(LINUX) && !defined(EWS4800) +-# if defined(ultrix) || defined(__ultrix) || defined(__NetBSD__) ++# if !defined(LINUX) && !defined(EWS4800) && !defined(NETBSD) ++# if defined(ultrix) || defined(__ultrix) + # define ULTRIX + # else + # if defined(_SYSTYPE_SVR4) || defined(SYSTYPE_SVR4) \ +@@ -121,16 +107,6 @@ + # endif + # endif + # endif /* !LINUX */ +-# if defined(__NetBSD__) && defined(__MIPSEL__) +-# undef ULTRIX +-# endif +-# define mach_type_known +-# endif +-# if defined(DGUX) && (defined(i386) || defined(__i386__)) +-# define I386 +-# ifndef _USING_DGUX +-# define _USING_DGUX +-# endif + # define mach_type_known + # endif + # if defined(sequent) && (defined(i386) || defined(__i386__)) +@@ -222,10 +198,6 @@ + # define IA64 + # define mach_type_known + # endif +-# if defined(LINUX) && defined(__arm__) +-# define ARM32 +-# define mach_type_known +-# endif + # if defined(LINUX) && (defined(powerpc) || defined(__powerpc__)) + # define POWERPC + # define mach_type_known +@@ -265,19 +237,19 @@ + # define MACOS + # define mach_type_known + # endif +-# if defined(__MWERKS__) && defined(__powerc) && !defined(__MACH__) ++# if defined(__MWERKS__) && defined(__powerc) + # define POWERPC + # define MACOS + # define mach_type_known + # endif + # if defined(macosx) || \ + defined(__APPLE__) && defined(__MACH__) && defined(__ppc__) +-# define DARWIN ++# define MACOSX + # define POWERPC + # define mach_type_known + # endif + # if defined(__APPLE__) && defined(__MACH__) && defined(__i386__) +-# define DARWIN ++# define MACOSX + # define I386 + --> Not really supported, but at least we recognize it. + # endif +@@ -319,7 +291,7 @@ + # define CX_UX + # define mach_type_known + # endif +-# if defined(DGUX) && defined(m88k) ++# if defined(DGUX) + # define M88K + /* DGUX defined */ + # define mach_type_known +@@ -447,12 +419,14 @@ + /* (CX_UX and DGUX) */ + /* S370 ==> 370-like machine */ + /* running Amdahl UTS4 */ +- /* S390 ==> 390-like machine */ +- /* running LINUX */ ++ /* S390 ==> 390-like machine */ ++ /* running LINUX */ + /* ARM32 ==> Intel StrongARM */ + /* IA64 ==> Intel IPF */ + /* (e.g. Itanium) */ + /* (LINUX and HPUX) */ ++ /* IA64_32 ==> IA64 w/32 bit ABI */ ++ /* (HPUX) */ + /* SH ==> Hitachi SuperH */ + /* (LINUX & MSWINCE) */ + /* X86_64 ==> AMD x86-64 */ +@@ -476,17 +450,15 @@ + * defining it to be 1 will always work, but perform poorly. + * + * DATASTART is the beginning of the data segment. +- * On some platforms SEARCH_FOR_DATA_START is defined. +- * SEARCH_FOR_DATASTART will cause GC_data_start to +- * be set to an address determined by accessing data backwards from _end +- * until an unmapped page is found. DATASTART will be defined to be +- * GC_data_start. +- * On UNIX-like systems, the collector will scan the area between DATASTART ++ * On UNIX systems, the collector will scan the area between DATASTART + * and DATAEND for root pointers. + * + * DATAEND, if not `end' where `end' is defined as ``extern int end[];''. + * RTH suggests gaining access to linker script synth'd values with + * this idiom instead of `&end' where `end' is defined as ``extern int end;'' . ++ * Otherwise, ``GCC will assume these are in .sdata/.sbss'' and it will, e.g., ++ * cause failures on alpha*-*-* with ``-msmall-data or -fpic'' or mips-*-* ++ * without any special options. + * + * ALIGN_DOUBLE of GC_malloc should return blocks aligned to twice + * the pointer size. +@@ -498,13 +470,8 @@ + * 1) define STACK_GROWS_UP if the stack grows toward higher addresses, and + * 2) define exactly one of + * STACKBOTTOM (should be defined to be an expression) +- * LINUX_STACKBOTTOM + * HEURISTIC1 + * HEURISTIC2 +- * If STACKBOTTOM is defined, then it's value will be used directly as the +- * stack base. If LINUX_STACKBOTTOM is defined, then it will be determined +- * with a method appropriate for most Linux systems. Currently we look +- * first for __libc_stack_end, and if that fails read it from /proc. + * If either of the last two macros are defined, then STACKBOTTOM is computed + * during collector startup using one of the following two heuristics: + * HEURISTIC1: Take an address inside GC_init's frame, and round it up to +@@ -569,9 +536,6 @@ + * An architecture may also define CLEAR_DOUBLE(x) to be a fast way to + * clear the two words at GC_malloc-aligned address x. By default, + * word stores of 0 are used instead. +- * +- * HEAP_START may be defined as the initial address hint for mmap-based +- * allocation. + */ + + /* If we are using a recent version of gcc, we can use __builtin_unwind_init() +@@ -607,7 +571,7 @@ + # define DYNAMIC_LOADING + # include + # if defined(__GLIBC__)&& __GLIBC__>=2 +-# define SEARCH_FOR_DATA_START ++# define LINUX_DATA_START + # else /* !GLIBC2 */ + extern char **__environ; + # define DATASTART ((ptr_t)(&__environ)) +@@ -705,42 +669,23 @@ + # define ALIGNMENT 4 /* Guess. Can someone verify? */ + /* This was 2, but that didn't sound right. */ + # define OS_TYPE "LINUX" +- /* HEURISTIC1 has been reliably reported to fail for a 32-bit */ +- /* executable on a 64 bit kernel. */ +-# define LINUX_STACKBOTTOM + # define DYNAMIC_LOADING +-# define SEARCH_FOR_DATA_START ++# define LINUX_STACKBOTTOM ++ /* Stack usually starts at 0x80000000 */ ++# define LINUX_DATA_START + extern int _end[]; + # define DATAEND (_end) + # endif +-# ifdef DARWIN ++# ifdef MACOSX + /* There are reasons to suspect this may not be reliable. */ + # define ALIGNMENT 4 +-# define OS_TYPE "DARWIN" +-# define DYNAMIC_LOADING +- /* XXX: see get_end(3), get_etext() and get_end() should not be used. +- These aren't used when dyld support is enabled (it is by default) */ ++# define OS_TYPE "MACOSX" + # define DATASTART ((ptr_t) get_etext()) +-# define DATAEND ((ptr_t) get_end()) + # define STACKBOTTOM ((ptr_t) 0xc0000000) +-# define USE_MMAP +-# define USE_MMAP_ANON +-# define USE_ASM_PUSH_REGS +- /* This is potentially buggy. It needs more testing. See the comments in +- os_dep.c */ +-# define MPROTECT_VDB ++# define DATAEND /* not needed */ ++# undef MPROTECT_VDB + # include + # define GETPAGESIZE() getpagesize() +-# if defined(USE_PPC_PREFETCH) && defined(__GNUC__) +- /* The performance impact of prefetches is untested */ +-# define PREFETCH(x) \ +- __asm__ __volatile__ ("dcbt 0,%0" : : "r" ((const void *) (x))) +-# define PREFETCH_FOR_WRITE(x) \ +- __asm__ __volatile__ ("dcbtst 0,%0" : : "r" ((const void *) (x))) +-# endif +- /* There seems to be some issues with trylock hanging on darwin. This +- should be looked into some more */ +-# define NO_PTHREAD_TRYLOCK + # endif + # ifdef NETBSD + # define ALIGNMENT 4 +@@ -801,8 +746,8 @@ + # define OS_TYPE "SUNOS5" + extern int _etext[]; + extern int _end[]; +- extern ptr_t GC_SysVGetDataStart(); +-# define DATASTART GC_SysVGetDataStart(0x10000, _etext) ++ extern char * GC_SysVGetDataStart(); ++# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, _etext) + # define DATAEND (_end) + # if !defined(USE_MMAP) && defined(REDIRECT_MALLOC) + # define USE_MMAP +@@ -856,9 +801,9 @@ + # endif + # ifdef DRSNX + # define OS_TYPE "DRSNX" +- extern ptr_t GC_SysVGetDataStart(); ++ extern char * GC_SysVGetDataStart(); + extern int etext[]; +-# define DATASTART GC_SysVGetDataStart(0x10000, etext) ++# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, etext) + # define MPROTECT_VDB + # define STACKBOTTOM ((ptr_t) 0xdfff0000) + # define DYNAMIC_LOADING +@@ -874,14 +819,13 @@ + extern int _etext[]; + # define DATAEND (_end) + # define SVR4 +- extern ptr_t GC_SysVGetDataStart(); + # ifdef __arch64__ +-# define DATASTART GC_SysVGetDataStart(0x100000, _etext) + /* libc_stack_end is not set reliably for sparc64 */ +-# define STACKBOTTOM ((ptr_t) 0x80000000000ULL) ++# define STACKBOTTOM ((ptr_t) 0x80000000000) ++# define DATASTART (ptr_t)GC_SysVGetDataStart(0x100000, _etext) + # else +-# define DATASTART GC_SysVGetDataStart(0x10000, _etext) +-# define LINUX_STACKBOTTOM ++# define LINUX_STACKBOTTOM ++# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, _etext) + # endif + # endif + # ifdef OPENBSD +@@ -932,7 +876,7 @@ + # ifdef SUNOS5 + # define OS_TYPE "SUNOS5" + extern int _etext[], _end[]; +- extern ptr_t GC_SysVGetDataStart(); ++ extern char * GC_SysVGetDataStart(); + # define DATASTART GC_SysVGetDataStart(0x1000, _etext) + # define DATAEND (_end) + /* # define STACKBOTTOM ((ptr_t)(_start)) worked through 2.7, */ +@@ -977,28 +921,6 @@ + # define DYNAMIC_LOADING + # define ELF_CLASS ELFCLASS32 + # endif +-# ifdef DGUX +-# define OS_TYPE "DGUX" +- extern int _etext, _end; +- extern ptr_t GC_SysVGetDataStart(); +-# define DATASTART GC_SysVGetDataStart(0x1000, &_etext) +-# define DATAEND (&_end) +-# define STACK_GROWS_DOWN +-# define HEURISTIC2 +-# include +-# define GETPAGESIZE() sysconf(_SC_PAGESIZE) +-# define DYNAMIC_LOADING +-# ifndef USE_MMAP +-# define USE_MMAP +-# endif /* USE_MMAP */ +-# define MAP_FAILED (void *) -1 +-# ifdef USE_MMAP +-# define HEAP_START (ptr_t)0x40000000 +-# else /* USE_MMAP */ +-# define HEAP_START DATAEND +-# endif /* USE_MMAP */ +-# endif /* DGUX */ +- + # ifdef LINUX + # ifndef __GNUC__ + /* The Intel compiler doesn't like inline assembly */ +@@ -1022,9 +944,6 @@ + /* possibly because Linux threads is itself a malloc client */ + /* and can't deal with the signals. */ + # endif +-# define HEAP_START 0x1000 +- /* This encourages mmap to give us low addresses, */ +- /* thus allowing the heap to grow to ~3GB */ + # ifdef __ELF__ + # define DYNAMIC_LOADING + # ifdef UNDEFINED /* includes ro data */ +@@ -1033,7 +952,7 @@ + # endif + # include + # if defined(__GLIBC__) && __GLIBC__ >= 2 +-# define SEARCH_FOR_DATA_START ++# define LINUX_DATA_START + # else + extern char **__environ; + # define DATASTART ((ptr_t)(&__environ)) +@@ -1142,9 +1061,16 @@ + # ifdef __ELF__ + # define DYNAMIC_LOADING + # endif ++/* Handle unmapped hole i386*-*-freebsd[45]* may put between etext and edata. */ + extern char etext[]; +- extern char * GC_FreeBSDGetDataStart(); +-# define DATASTART GC_FreeBSDGetDataStart(0x1000, &etext) ++ extern char edata[]; ++ extern char end[]; ++# define NEED_FIND_LIMIT ++# define DATASTART ((ptr_t)(etext)) ++# define MIN(x,y) ((x) < (y) ? (x) : (y)) ++# define DATAEND (MIN (GC_find_limit (DATASTART, TRUE), DATASTART2)) ++# define DATASTART2 ((ptr_t)(edata)) ++# define DATAEND2 ((ptr_t)(end)) + # endif + # ifdef NETBSD + # define OS_TYPE "NETBSD" +@@ -1223,11 +1149,7 @@ + # define DATASTART ((ptr_t)(__data_start)) + # define ALIGNMENT 4 + # define USE_GENERIC_PUSH_REGS +-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2 || __GLIBC__ > 2 +-# define LINUX_STACKBOTTOM +-# else +-# define STACKBOTTOM 0x80000000 +-# endif ++# define LINUX_STACKBOTTOM + # endif /* Linux */ + # ifdef EWS4800 + # define HEURISTIC2 +@@ -1300,21 +1222,15 @@ + # define DATAEND /* not needed */ + # endif + # if defined(NETBSD) +- /* This also checked for __MIPSEL__ . Why? NETBSD recognition */ +- /* should be handled at the top of the file. */ +-# define ALIGNMENT 4 + # define OS_TYPE "NETBSD" ++# define ALIGNMENT 4 + # define HEURISTIC2 + # define USE_GENERIC_PUSH_REGS +-# ifdef __ELF__ +- extern int etext[]; +-# define DATASTART GC_data_start +-# define NEED_FIND_LIMIT +-# define DYNAMIC_LOADING +-# else +-# define DATASTART ((ptr_t) 0x10000000) +-# define STACKBOTTOM ((ptr_t) 0x7ffff000) +-# endif /* _ELF_ */ ++ extern int _fdata[]; ++# define DATASTART ((ptr_t)(_fdata)) ++ extern int _end[]; ++# define DATAEND ((ptr_t)(_end)) ++# define DYNAMIC_LOADING + # endif + # endif + +@@ -1323,16 +1239,15 @@ + # ifdef __64BIT__ + # define ALIGNMENT 8 + # define CPP_WORDSZ 64 +-# define STACKBOTTOM 0x1000000000000000 + # else + # define ALIGNMENT 4 + # define CPP_WORDSZ 32 +-# define STACKBOTTOM ((ptr_t)((ulong)&errno)) + # endif + extern int _data[], _end[]; + # define DATASTART ((ptr_t)((ulong)_data)) + # define DATAEND ((ptr_t)((ulong)_end)) + extern int errno; ++# define STACKBOTTOM ((ptr_t)((ulong)&errno)) + # define USE_GENERIC_PUSH_REGS + # define DYNAMIC_LOADING + /* For really old versions of AIX, this may have to be removed. */ +@@ -1396,23 +1311,15 @@ + # define OS_TYPE "LINUX" + # define LINUX_STACKBOTTOM + # define DYNAMIC_LOADING +-# define SEARCH_FOR_DATA_START ++# define LINUX_DATA_START + extern int _end[]; +-# define DATAEND (&_end) ++# define DATAEND (_end) + # endif /* LINUX */ + # endif /* HP_PA */ + + # ifdef ALPHA + # define MACH_TYPE "ALPHA" + # define ALIGNMENT 8 +-# define CPP_WORDSZ 64 +-# ifndef LINUX +-# define USE_GENERIC_PUSH_REGS +- /* Gcc and probably the DEC/Compaq compiler spill pointers to preserved */ +- /* fp registers in some cases when the target is a 21264. The assembly */ +- /* code doesn't handle that yet, and version dependencies make that a */ +- /* bit tricky. Do the easy thing for now. */ +-# endif + # ifdef NETBSD + # define OS_TYPE "NETBSD" + # define HEURISTIC2 +@@ -1420,11 +1327,13 @@ + # define ELFCLASS32 32 + # define ELFCLASS64 64 + # define ELF_CLASS ELFCLASS64 ++# define CPP_WORDSZ 64 + # define DYNAMIC_LOADING + # endif + # ifdef OPENBSD + # define OS_TYPE "OPENBSD" + # define HEURISTIC2 ++# define CPP_WORDSZ 64 + # ifdef __ELF__ /* since OpenBSD/Alpha 2.9 */ + # define DATASTART GC_data_start + # define ELFCLASS32 32 +@@ -1448,16 +1357,17 @@ + extern char edata[]; + extern char end[]; + # define NEED_FIND_LIMIT +-# define DATASTART ((ptr_t)(&etext)) ++# define DATASTART ((ptr_t)(etext)) + # define DATAEND (GC_find_limit (DATASTART, TRUE)) +-# define DATASTART2 ((ptr_t)(&edata)) +-# define DATAEND2 ((ptr_t)(&end)) ++# define DATASTART2 ((ptr_t)(edata)) ++# define DATAEND2 ((ptr_t)(end)) ++# define CPP_WORDSZ 64 + # endif + # ifdef OSF1 + # define OS_TYPE "OSF1" + # define DATASTART ((ptr_t) 0x140000000) + extern int _end[]; +-# define DATAEND ((ptr_t) &_end) ++# define DATAEND ((ptr_t) _end) + extern char ** environ; + /* round up from the value of environ to the nearest page boundary */ + /* Probably breaks if putenv is called before collector */ +@@ -1470,17 +1380,17 @@ + /* This is currently unused, since we disabled HEURISTIC2 */ + extern int __start[]; + # define HEURISTIC2_LIMIT ((ptr_t)((word)(__start) & ~(getpagesize()-1))) +-# ifndef GC_OSF1_THREADS +- /* Unresolved signal issues with threads. */ +-# define MPROTECT_VDB +-# endif ++# define CPP_WORDSZ 64 ++# define MPROTECT_VDB + # define DYNAMIC_LOADING + # endif + # ifdef LINUX + # define OS_TYPE "LINUX" ++# define CPP_WORDSZ 64 + # define STACKBOTTOM ((ptr_t) 0x120000000) + # ifdef __ELF__ + # define SEARCH_FOR_DATA_START ++# define DATASTART GC_data_start + # define DYNAMIC_LOADING + # else + # define DATASTART ((ptr_t) 0x140000000) +@@ -1558,6 +1468,7 @@ + extern char * GC_register_stackbottom; + # define BACKING_STORE_BASE ((ptr_t)GC_register_stackbottom) + # define SEARCH_FOR_DATA_START ++# define DATASTART GC_data_start + # ifdef __GNUC__ + # define DYNAMIC_LOADING + # else +@@ -1591,15 +1502,13 @@ + # endif + # ifdef DGUX + # define OS_TYPE "DGUX" +- extern ptr_t GC_SysVGetDataStart(); +-# define DATASTART GC_SysVGetDataStart(0x10000, etext) ++ extern char * GC_SysVGetDataStart(); ++# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, etext) + # endif + # define STACKBOTTOM ((char*)0xf0000000) /* determined empirically */ + # endif + + # ifdef S370 +- /* If this still works, and if anyone cares, this should probably */ +- /* be moved to the S390 category. */ + # define MACH_TYPE "S370" + # define ALIGNMENT 4 /* Required by hardware */ + # define USE_GENERIC_PUSH_REGS +@@ -1608,8 +1517,8 @@ + extern int etext[]; + extern int _etext[]; + extern int _end[]; +- extern ptr_t GC_SysVGetDataStart(); +-# define DATASTART GC_SysVGetDataStart(0x10000, _etext) ++ extern char * GC_SysVGetDataStart(); ++# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, _etext) + # define DATAEND (_end) + # define HEURISTIC2 + # endif +@@ -1619,12 +1528,12 @@ + # define MACH_TYPE "S390" + # define USE_GENERIC_PUSH_REGS + # ifndef __s390x__ +-# define ALIGNMENT 4 +-# define CPP_WORDSZ 32 ++# define ALIGNMENT 4 ++# define CPP_WORDSZ 32 + # else +-# define ALIGNMENT 8 +-# define CPP_WORDSZ 64 +-# define HBLKSIZE 4096 ++# define ALIGNMENT 8 ++# define CPP_WORDSZ 64 ++# define HBLKSIZE 4096 + # endif + # ifdef LINUX + # define OS_TYPE "LINUX" +@@ -1632,10 +1541,10 @@ + # define DYNAMIC_LOADING + extern int __data_start[]; + # define DATASTART ((ptr_t)(__data_start)) +- extern int _end[]; +-# define DATAEND (_end) +-# define CACHE_LINE_SIZE 256 +-# define GETPAGESIZE() 4096 ++ extern int _end[]; ++# define DATAEND (_end) ++# define CACHE_LINE_SIZE 256 ++# define GETPAGESIZE() 4096 + # endif + # endif + +@@ -1667,7 +1576,7 @@ + # define DYNAMIC_LOADING + # include + # if defined(__GLIBC__) && __GLIBC__ >= 2 +-# define SEARCH_FOR_DATA_START ++# define LINUX_DATA_START + # else + extern char **__environ; + # define DATASTART ((ptr_t)(&__environ)) +@@ -1714,7 +1623,7 @@ + # define STACKBOTTOM ((ptr_t) 0x7c000000) + # define USE_GENERIC_PUSH_REGS + # define DYNAMIC_LOADING +-# define SEARCH_FOR_DATA_START ++# define LINUX_DATA_START + extern int _end[]; + # define DATAEND (_end) + # endif +@@ -1731,9 +1640,7 @@ + # define MACH_TYPE "X86_64" + # define ALIGNMENT 8 + # define CPP_WORDSZ 64 +-# ifndef HBLKSIZE +-# define HBLKSIZE 4096 +-# endif ++# define HBLKSIZE 4096 + # define CACHE_LINE_SIZE 64 + # define USE_GENERIC_PUSH_REGS + # ifdef LINUX +@@ -1753,7 +1660,7 @@ + # define DATASTART ((ptr_t)((((word) (_etext)) + 0xfff) & ~0xfff)) + # endif + # include +-# define SEARCH_FOR_DATA_START ++# define LINUX_DATA_START + extern int _end[]; + # define DATAEND (_end) + # else +@@ -1767,6 +1674,19 @@ + # endif + # endif + ++#ifdef LINUX_DATA_START ++ /* 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 */ ++ /* case we lose. Nonetheless, we try both, prefering __data_start. */ ++ /* We assume gcc. */ ++# pragma weak __data_start ++ extern int __data_start[]; ++# pragma weak data_start ++ extern int data_start[]; ++# define DATASTART ((ptr_t)(__data_start != 0? __data_start : data_start)) ++#endif ++ + #if defined(LINUX) && defined(REDIRECT_MALLOC) + /* Rld appears to allocate some memory with its own allocator, and */ + /* some through malloc, which might be redirected. To make this */ +@@ -1805,15 +1725,15 @@ + # endif + + # if defined(SUNOS5) || defined(DRSNX) || defined(UTS4) +- /* OS has SVR4 generic features. Probably others also qualify. */ ++ /* OS has SVR4 generic features. Probably others also qualify. */ + # define SVR4 + # endif + + # if defined(SUNOS5) || defined(DRSNX) +- /* OS has SUNOS5 style semi-undocumented interface to dynamic */ +- /* loader. */ ++ /* OS has SUNOS5 style semi-undocumented interface to dynamic */ ++ /* loader. */ + # define SUNOS5DL +- /* OS has SUNOS5 style signal handlers. */ ++ /* OS has SUNOS5 style signal handlers. */ + # define SUNOS5SIGS + # endif + +@@ -1822,13 +1742,13 @@ + # endif + + # if defined(SVR4) || defined(LINUX) || defined(IRIX) || defined(HPUX) \ +- || defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) || defined(DGUX) \ +- || defined(BSD) || defined(AIX) || defined(DARWIN) || defined(OSF1) ++ || defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) \ ++ || defined(BSD) || defined(_AIX) || defined(MACOSX) || defined(OSF1) + # define UNIX_LIKE /* Basic Unix-like system calls work. */ + # endif + + # if CPP_WORDSZ != 32 && CPP_WORDSZ != 64 +- -> bad word size ++ -> bad word size + # endif + + # ifdef PCR +@@ -1842,13 +1762,13 @@ + # endif + + # ifdef SRC_M3 +- /* Postponed for now. */ ++/* Postponed for now. */ + # undef PROC_VDB + # undef MPROTECT_VDB + # endif + + # ifdef SMALL_CONFIG +- /* Presumably not worth the space it takes. */ ++/* Presumably not worth the space it takes. */ + # undef PROC_VDB + # undef MPROTECT_VDB + # endif +@@ -1888,47 +1808,49 @@ + /* platforms as well, though it should be avoided in win32. */ + # endif /* LINUX */ + +-# if defined(SEARCH_FOR_DATA_START) ++# if defined(SEARCH_FOR_DATA_START) && defined(GC_PRIVATE_H) + extern ptr_t GC_data_start; +-# define DATASTART GC_data_start + # endif + + # ifndef CLEAR_DOUBLE + # define CLEAR_DOUBLE(x) \ +- ((word*)x)[0] = 0; \ +- ((word*)x)[1] = 0; ++ ((word*)x)[0] = 0; \ ++ ((word*)x)[1] = 0; + # endif /* CLEAR_DOUBLE */ + +- /* Internally we use GC_SOLARIS_THREADS to test for either old or pthreads. */ ++/* Internally we use GC_SOLARIS_THREADS to test for either old or pthreads. */ + # if defined(GC_SOLARIS_PTHREADS) && !defined(GC_SOLARIS_THREADS) + # define GC_SOLARIS_THREADS + # endif + + # if defined(GC_IRIX_THREADS) && !defined(IRIX5) +- --> inconsistent configuration ++--> inconsistent configuration + # endif + # if defined(GC_LINUX_THREADS) && !defined(LINUX) +- --> inconsistent configuration ++--> inconsistent configuration + # endif + # if defined(GC_SOLARIS_THREADS) && !defined(SUNOS5) +- --> inconsistent configuration ++--> inconsistent configuration + # endif + # if defined(GC_HPUX_THREADS) && !defined(HPUX) +- --> inconsistent configuration ++--> inconsistent configuration + # endif +-# if defined(GC_WIN32_THREADS) && !defined(MSWIN32) && !defined(CYGWIN32) +- --> inconsistent configuration ++# if defined(GC_WIN32_THREADS) && !defined(MSWIN32) ++ /* Ideally CYGWIN32 should work, in addition to MSWIN32. I suspect */ ++ /* the necessary code is mostly there, but nobody has actually made */ ++ /* sure the right combination of pieces is compiled in, etc. */ ++--> inconsistent configuration + # endif + + # if defined(PCR) || defined(SRC_M3) || \ +- defined(GC_SOLARIS_THREADS) || defined(GC_WIN32_THREADS) || \ +- defined(GC_PTHREADS) ++ defined(GC_SOLARIS_THREADS) || defined(GC_WIN32_THREADS) || \ ++ defined(GC_PTHREADS) + # define THREADS + # endif + +-# if defined(HP_PA) || defined(M88K) || defined(POWERPC) && !defined(DARWIN) \ +- || defined(LINT) || defined(MSWINCE) || defined(ARM32) \ +- || (defined(I386) && defined(__LCC__)) ++# if defined(HP_PA) || defined(M88K) || defined(POWERPC) && !defined(MACOSX) \ ++ || defined(LINT) || defined(MSWINCE) \ ++ || (defined(I386) && defined(__LCC__)) + /* Use setjmp based hack to mark from callee-save registers. */ + /* The define should move to the individual platform */ + /* descriptions. */ +@@ -1940,26 +1862,36 @@ + /* include assembly code to do it well. */ + # endif + +- /* Can we save call chain in objects for debugging? */ +- /* SET NFRAMES (# of saved frames) and NARGS (#of args for each */ +- /* frame) to reasonable values for the platform. */ +- /* Set SAVE_CALL_CHAIN if we can. SAVE_CALL_COUNT can be specified */ +- /* at build time, though we feel free to adjust it slightly. */ +- /* Define NEED_CALLINFO if we either save the call stack or */ +- /* GC_ADD_CALLER is defined. */ +- /* GC_CAN_SAVE_CALL_STACKS is set in gc.h. */ ++/* Can we save call chain in objects for debugging? */ ++/* SET NFRAMES (# of saved frames) and NARGS (#of args for each frame) */ ++/* to reasonable values for the platform. */ ++/* Set SAVE_CALL_CHAIN if we can. SAVE_CALL_COUNT can be specified at */ ++/* build time, though we feel free to adjust it slightly. */ ++/* Define NEED_CALLINFO if we either save the call stack or */ ++/* GC_ADD_CALLER is defined. */ ++#ifdef LINUX ++# include ++# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2 ++# define HAVE_BUILTIN_BACKTRACE ++# endif ++#endif + + #if defined(SPARC) ++# define CAN_SAVE_CALL_STACKS + # define CAN_SAVE_CALL_ARGS + #endif + #if (defined(I386) || defined(X86_64)) && defined(LINUX) +- /* SAVE_CALL_CHAIN is supported if the code is compiled to save */ +- /* frame pointers by default, i.e. no -fomit-frame-pointer flag. */ ++ /* 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_STACKS + # define CAN_SAVE_CALL_ARGS + #endif ++#if defined(HAVE_BUILTIN_BACKTRACE) && !defined(CAN_SAVE_CALL_STACKS) ++# define CAN_SAVE_CALL_STACKS ++#endif + + # if defined(SAVE_CALL_COUNT) && !defined(GC_ADD_CALLER) \ +- && defined(GC_CAN_SAVE_CALL_STACKS) ++ && defined(CAN_SAVE_CALL_STACKS) + # define SAVE_CALL_CHAIN + # endif + # ifdef SAVE_CALL_CHAIN +@@ -1972,7 +1904,7 @@ + # ifdef SAVE_CALL_CHAIN + # ifndef SAVE_CALL_COUNT + # define NFRAMES 6 /* Number of frames to save. Even for */ +- /* alignment reasons. */ ++ /* alignment reasons. */ + # else + # define NFRAMES ((SAVE_CALL_COUNT + 1) & ~1) + # endif +@@ -1987,97 +1919,5 @@ + # if defined(MAKE_BACK_GRAPH) && !defined(DBG_HDRS_ALL) + # define DBG_HDRS_ALL + # endif +- +-# if defined(POINTER_MASK) && !defined(POINTER_SHIFT) +-# define POINTER_SHIFT 0 +-# endif +- +-# if defined(POINTER_SHIFT) && !defined(POINTER_MASK) +-# define POINTER_MASK ((GC_word)(-1)) +-# endif +- +-# if !defined(FIXUP_POINTER) && defined(POINTER_MASK) +-# define FIXUP_POINTER(p) (p) = ((p) & (POINTER_MASK) << POINTER_SHIFT) +-# endif +- +-# if defined(FIXUP_POINTER) +-# define NEED_FIXUP_POINTER 1 +-# else +-# define NEED_FIXUP_POINTER 0 +-# define FIXUP_POINTER(p) +-# endif +- +-#ifdef GC_PRIVATE_H +- /* This relies on some type definitions from gc_priv.h, from */ +- /* where it's normally included. */ +- /* */ +- /* How to get heap memory from the OS: */ +- /* Note that sbrk()-like allocation is preferred, since it */ +- /* usually makes it possible to merge consecutively allocated */ +- /* chunks. It also avoids unintented recursion with */ +- /* -DREDIRECT_MALLOC. */ +- /* GET_MEM() returns a HLKSIZE aligned chunk. */ +- /* 0 is taken to mean failure. */ +- /* In the case os USE_MMAP, the argument must also be a */ +- /* physical page size. */ +- /* GET_MEM is currently not assumed to retrieve 0 filled space, */ +- /* though we should perhaps take advantage of the case in which */ +- /* does. */ +- struct hblk; /* See gc_priv.h. */ +-# ifdef PCR +- char * real_malloc(); +-# define GET_MEM(bytes) HBLKPTR(real_malloc((size_t)bytes + GC_page_size) \ +- + GC_page_size-1) +-# else +-# ifdef OS2 +- void * os2_alloc(size_t bytes); +-# define GET_MEM(bytes) HBLKPTR((ptr_t)os2_alloc((size_t)bytes \ +- + GC_page_size) \ +- + GC_page_size-1) +-# else +-# if defined(NEXT) || defined(DOS4GW) || \ +- (defined(AMIGA) && !defined(GC_AMIGA_FASTALLOC)) || \ +- (defined(SUNOS5) && !defined(USE_MMAP)) +-# define GET_MEM(bytes) HBLKPTR((size_t) \ +- calloc(1, (size_t)bytes + GC_page_size) \ +- + GC_page_size-1) +-# else +-# ifdef MSWIN32 +- extern ptr_t GC_win32_get_mem(); +-# define GET_MEM(bytes) (struct hblk *)GC_win32_get_mem(bytes) +-# else +-# ifdef MACOS +-# if defined(USE_TEMPORARY_MEMORY) +- extern Ptr GC_MacTemporaryNewPtr(size_t size, +- Boolean clearMemory); +-# define GET_MEM(bytes) HBLKPTR( \ +- GC_MacTemporaryNewPtr(bytes + GC_page_size, true) \ +- + GC_page_size-1) +-# else +-# define GET_MEM(bytes) HBLKPTR( \ +- NewPtrClear(bytes + GC_page_size) + GC_page_size-1) +-# endif +-# else +-# ifdef MSWINCE +- extern ptr_t GC_wince_get_mem(); +-# define GET_MEM(bytes) (struct hblk *)GC_wince_get_mem(bytes) +-# else +-# if defined(AMIGA) && defined(GC_AMIGA_FASTALLOC) +- extern void *GC_amiga_get_mem(size_t size); +- define GET_MEM(bytes) HBLKPTR((size_t) \ +- GC_amiga_get_mem((size_t)bytes + GC_page_size) \ +- + GC_page_size-1) +-# else +- extern ptr_t GC_unix_get_mem(); +-# define GET_MEM(bytes) (struct hblk *)GC_unix_get_mem(bytes) +-# endif +-# endif +-# endif +-# endif +-# endif +-# endif +-# endif +- +-#endif /* GC_PRIVATE_H */ + + # endif /* GCCONFIG_H */ +diff -Nur ../boehm-gc/include/private/pthread_stop_world.h boehm-gc/include/private/pthread_stop_world.h +--- ../boehm-gc/include/private/pthread_stop_world.h Mon May 26 13:28:24 2003 ++++ boehm-gc/include/private/pthread_stop_world.h Wed Dec 31 16:00:00 1969 +@@ -1,12 +0,0 @@ +-#ifndef GC_PTHREAD_STOP_WORLD_H +-#define GC_PTHREAD_STOP_WORLD_H +- +-struct thread_stop_info { +- int signal; +- word last_stop_count; /* GC_last_stop_count value when thread */ +- /* last successfully handled a suspend */ +- /* signal. */ +- ptr_t stack_ptr; /* Valid only when stopped. */ +-}; +- +-#endif +diff -Nur ../boehm-gc/include/private/pthread_support.h boehm-gc/include/private/pthread_support.h +--- ../boehm-gc/include/private/pthread_support.h Mon May 26 13:28:24 2003 ++++ boehm-gc/include/private/pthread_support.h Wed Dec 31 16:00:00 1969 +@@ -1,97 +0,0 @@ +-#ifndef GC_PTHREAD_SUPPORT_H +-#define GC_PTHREAD_SUPPORT_H +- +-# include "private/gc_priv.h" +- +-# if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \ +- && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS) +- +-#if defined(GC_DARWIN_THREADS) +-# include "private/darwin_stop_world.h" +-#else +-# include "private/pthread_stop_world.h" +-#endif +- +-/* We use the allocation lock to protect thread-related data structures. */ +- +-/* The set of all known threads. We intercept thread creation and */ +-/* joins. */ +-/* Protected by allocation/GC lock. */ +-/* Some of this should be declared volatile, but that's inconsistent */ +-/* with some library routine declarations. */ +-typedef struct GC_Thread_Rep { +- struct GC_Thread_Rep * next; /* More recently allocated threads */ +- /* with a given pthread id come */ +- /* first. (All but the first are */ +- /* guaranteed to be dead, but we may */ +- /* not yet have registered the join.) */ +- pthread_t id; +- /* Extra bookkeeping information the stopping code uses */ +- struct thread_stop_info stop_info; +- +- short flags; +-# define FINISHED 1 /* Thread has exited. */ +-# define DETACHED 2 /* Thread is intended to be detached. */ +-# define MAIN_THREAD 4 /* True for the original thread only. */ +- short thread_blocked; /* Protected by GC lock. */ +- /* Treated as a boolean value. If set, */ +- /* thread will acquire GC lock before */ +- /* doing any pointer manipulations, and */ +- /* has set its sp value. Thus it does */ +- /* not need to be sent a signal to stop */ +- /* it. */ +- ptr_t stack_end; /* Cold end of the stack. */ +-# ifdef IA64 +- ptr_t backing_store_end; +- ptr_t backing_store_ptr; +-# endif +- void * status; /* The value returned from the thread. */ +- /* Used only to avoid premature */ +- /* reclamation of any data it might */ +- /* reference. */ +-# ifdef THREAD_LOCAL_ALLOC +-# if CPP_WORDSZ == 64 && defined(ALIGN_DOUBLE) +-# define GRANULARITY 16 +-# define NFREELISTS 49 +-# else +-# define GRANULARITY 8 +-# define NFREELISTS 65 +-# endif +- /* The ith free list corresponds to size i*GRANULARITY */ +-# define INDEX_FROM_BYTES(n) ((ADD_SLOP(n) + GRANULARITY - 1)/GRANULARITY) +-# define BYTES_FROM_INDEX(i) ((i) * GRANULARITY - EXTRA_BYTES) +-# define SMALL_ENOUGH(bytes) (ADD_SLOP(bytes) <= \ +- (NFREELISTS-1)*GRANULARITY) +- ptr_t ptrfree_freelists[NFREELISTS]; +- ptr_t normal_freelists[NFREELISTS]; +-# ifdef GC_GCJ_SUPPORT +- ptr_t gcj_freelists[NFREELISTS]; +-# endif +- /* Free lists contain either a pointer or a small count */ +- /* reflecting the number of granules allocated at that */ +- /* size. */ +- /* 0 ==> thread-local allocation in use, free list */ +- /* empty. */ +- /* > 0, <= DIRECT_GRANULES ==> Using global allocation, */ +- /* too few objects of this size have been */ +- /* allocated by this thread. */ +- /* >= HBLKSIZE => pointer to nonempty free list. */ +- /* > DIRECT_GRANULES, < HBLKSIZE ==> transition to */ +- /* local alloc, equivalent to 0. */ +-# define DIRECT_GRANULES (HBLKSIZE/GRANULARITY) +- /* Don't use local free lists for up to this much */ +- /* allocation. */ +-# endif +-} * GC_thread; +- +-# define THREAD_TABLE_SZ 128 /* Must be power of 2 */ +-extern volatile GC_thread GC_threads[THREAD_TABLE_SZ]; +- +-extern GC_bool GC_thr_initialized; +- +-GC_thread GC_lookup_thread(pthread_t id); +- +-void GC_stop_init(); +- +-#endif /* GC_PTHREADS && !GC_SOLARIS_THREADS.... etc */ +-#endif /* GC_PTHREAD_SUPPORT_H */ +diff -Nur ../boehm-gc/include/private/solaris_threads.h boehm-gc/include/private/solaris_threads.h +--- ../boehm-gc/include/private/solaris_threads.h Mon May 26 13:28:24 2003 ++++ boehm-gc/include/private/solaris_threads.h Tue Oct 23 16:21:39 2001 +@@ -16,8 +16,7 @@ + # define DETACHED 2 /* Thread is intended to be detached. */ + # define CLIENT_OWNS_STACK 4 + /* Stack was supplied by client. */ +-# define SUSPNDED 8 /* Currently suspended. */ +- /* SUSPENDED is used insystem header. */ ++# define SUSPENDED 8 /* Currently suspended. */ + ptr_t stack; + size_t stack_size; + cond_t join_cv; +diff -Nur ../boehm-gc/include/private/specific.h boehm-gc/include/private/specific.h +--- ../boehm-gc/include/private/specific.h Mon May 26 13:28:24 2003 ++++ boehm-gc/include/private/specific.h Fri Mar 29 14:52:13 2002 +@@ -85,7 +85,7 @@ + unsigned hash_val = CACHE_HASH(qtid); + tse * volatile * entry_ptr = key -> cache + hash_val; + tse * entry = *entry_ptr; /* Must be loaded only once. */ +- if (EXPECT(entry -> qtid == qtid, 1)) { ++ if (entry -> qtid == qtid) { + GC_ASSERT(entry -> thread == pthread_self()); + return entry -> value; + } +diff -Nur ../boehm-gc/irix_threads.c boehm-gc/irix_threads.c +--- ../boehm-gc/irix_threads.c Mon May 26 12:48:52 2003 ++++ boehm-gc/irix_threads.c Sun May 19 10:36:14 2002 +@@ -41,10 +41,6 @@ + #undef pthread_join + #undef pthread_detach + +-#ifdef HANDLE_FORK +- --> Not yet supported. Try porting the code from linux_threads.c. +-#endif +- + void GC_thr_init(); + + #if 0 +diff -Nur ../boehm-gc/mach_dep.c boehm-gc/mach_dep.c +--- ../boehm-gc/mach_dep.c Mon May 26 12:48:52 2003 ++++ boehm-gc/mach_dep.c Thu Jul 18 13:06:00 2002 +@@ -74,7 +74,7 @@ + /* on your architecture. Run the test_setjmp program to see whether */ + /* there is any chance it will work. */ + +-#if !defined(USE_GENERIC_PUSH_REGS) && !defined(USE_ASM_PUSH_REGS) ++#ifndef USE_GENERIC_PUSH_REGS + void GC_push_regs() + { + # ifdef RT +@@ -228,8 +228,7 @@ + || ( defined(I386) && defined(FREEBSD) && defined(__ELF__) ) \ + || ( defined(I386) && defined(NETBSD) && defined(__ELF__) ) \ + || ( defined(I386) && defined(OPENBSD) && defined(__ELF__) ) \ +- || ( defined(I386) && defined(HURD) && defined(__ELF__) ) \ +- || ( defined(I386) && defined(DGUX) ) ++ || ( defined(I386) && defined(HURD) && defined(__ELF__) ) + + /* This is modified for Linux with ELF (Note: _ELF_ only) */ + /* This section handles FreeBSD with ELF. */ +@@ -378,7 +377,7 @@ + /* other machines... */ + # if !defined(M68K) && !defined(VAX) && !defined(RT) + # if !defined(SPARC) && !defined(I386) && !defined(NS32K) +-# if !(defined(POWERPC) && defined(LINUX)) && !defined(UTS4) ++# if !defined(POWERPC) && !defined(UTS4) + # if !defined(PJ) && !(defined(MIPS) && defined(LINUX)) + --> bad news <-- + # endif +@@ -386,7 +385,7 @@ + # endif + # endif + } +-#endif /* !USE_GENERIC_PUSH_REGS && !USE_ASM_PUSH_REGS */ ++#endif /* !USE_GENERIC_PUSH_REGS */ + + #if defined(USE_GENERIC_PUSH_REGS) + void GC_generic_push_regs(cold_gc_frame) +diff -Nur ../boehm-gc/malloc.c boehm-gc/malloc.c +--- ../boehm-gc/malloc.c Mon May 26 12:48:52 2003 ++++ boehm-gc/malloc.c Mon Feb 11 20:37:53 2002 +@@ -182,7 +182,6 @@ + ptr_t result; + DCL_LOCK_STATE; + +- if (GC_have_errors) GC_print_all_errors(); + GC_INVOKE_FINALIZERS(); + if (SMALL_OBJ(lb)) { + DISABLE_SIGNALS(); +@@ -295,11 +294,6 @@ + return(GENERAL_MALLOC((word)lb, NORMAL)); + } + /* See above comment on signals. */ +- GC_ASSERT(0 == obj_link(op) +- || (word)obj_link(op) +- <= (word)GC_greatest_plausible_heap_addr +- && (word)obj_link(op) +- >= (word)GC_least_plausible_heap_addr); + *opp = obj_link(op); + obj_link(op) = 0; + GC_words_allocd += lw; +@@ -344,7 +338,6 @@ + return((GC_PTR)REDIRECT_MALLOC(n*lb)); + } + +-#ifndef strdup + # include + # ifdef __STDC__ + char *strdup(const char *s) +@@ -353,16 +346,11 @@ + char *s; + # endif + { +- size_t len = strlen(s) + 1; ++ size_t len = strlen + 1; + char * result = ((char *)REDIRECT_MALLOC(len+1)); + BCOPY(s, result, len+1); + return result; + } +-#endif /* !defined(strdup) */ +- /* If strdup is macro defined, we assume that it actually calls malloc, */ +- /* and thus the right thing will happen even without overriding it. */ +- /* This seems to be true on most Linux systems. */ +- + # endif /* REDIRECT_MALLOC */ + + /* Explicitly deallocate an object p. */ +@@ -385,7 +373,6 @@ + /* Required by ANSI. It's not my fault ... */ + h = HBLKPTR(p); + hhdr = HDR(h); +- GC_ASSERT(GC_base(p) == p); + # if defined(REDIRECT_MALLOC) && \ + (defined(GC_SOLARIS_THREADS) || defined(GC_LINUX_THREADS) \ + || defined(__MINGW32__)) /* Should this be MSWIN32 in general? */ +@@ -467,10 +454,7 @@ + } + #endif /* THREADS */ + +-# if defined(REDIRECT_MALLOC) && !defined(REDIRECT_FREE) +-# define REDIRECT_FREE GC_free +-# endif +-# ifdef REDIRECT_FREE ++# ifdef REDIRECT_MALLOC + # ifdef __STDC__ + void free(GC_PTR p) + # else +@@ -479,7 +463,7 @@ + # endif + { + # ifndef IGNORE_FREE +- REDIRECT_FREE(p); ++ GC_free(p); + # endif + } + # endif /* REDIRECT_MALLOC */ +diff -Nur ../boehm-gc/mallocx.c boehm-gc/mallocx.c +--- ../boehm-gc/mallocx.c Mon May 26 12:48:52 2003 ++++ boehm-gc/mallocx.c Fri Aug 17 18:04:43 2001 +@@ -142,11 +142,7 @@ + } + } + +-# if defined(REDIRECT_MALLOC) && !defined(REDIRECT_REALLOC) +-# define REDIRECT_REALLOC GC_realloc +-# endif +- +-# ifdef REDIRECT_REALLOC ++# if defined(REDIRECT_MALLOC) || defined(REDIRECT_REALLOC) + # ifdef __STDC__ + GC_PTR realloc(GC_PTR p, size_t lb) + # else +@@ -155,9 +151,13 @@ + size_t lb; + # endif + { +- return(REDIRECT_REALLOC(p, lb)); ++# ifdef REDIRECT_REALLOC ++ return(REDIRECT_REALLOC(p, lb)); ++# else ++ return(GC_realloc(p, lb)); ++# endif + } +-# endif /* REDIRECT_REALLOC */ ++# endif /* REDIRECT_MALLOC */ + + + /* The same thing, except caller does not hold allocation lock. */ +@@ -177,7 +177,6 @@ + lw = ROUNDED_UP_WORDS(lb); + n_blocks = OBJ_SZ_TO_BLOCKS(lw); + init = GC_obj_kinds[k].ok_init; +- if (GC_have_errors) GC_print_all_errors(); + GC_INVOKE_FINALIZERS(); + DISABLE_SIGNALS(); + LOCK(); +@@ -287,7 +286,6 @@ + register ptr_t op; + DCL_LOCK_STATE; + +- if (GC_have_errors) GC_print_all_errors(); + GC_INVOKE_FINALIZERS(); + DISABLE_SIGNALS(); + LOCK(); +@@ -356,7 +354,6 @@ + return; + } + lw = ALIGNED_WORDS(lb); +- if (GC_have_errors) GC_print_all_errors(); + GC_INVOKE_FINALIZERS(); + DISABLE_SIGNALS(); + LOCK(); +@@ -378,7 +375,6 @@ + while ((hbp = *rlh) != 0) { + hhdr = HDR(hbp); + *rlh = hhdr -> hb_next; +- hhdr -> hb_last_reclaimed = (unsigned short) GC_gc_no; + # ifdef PARALLEL_MARK + { + signed_word my_words_allocd_tmp = GC_words_allocd_tmp; +@@ -578,44 +574,6 @@ + return((GC_PTR) op); + } + } +- +-#ifdef __STDC__ +-/* Not well tested nor integrated. */ +-/* Debug version is tricky and currently missing. */ +-#include +- +-GC_PTR GC_memalign(size_t align, size_t lb) +-{ +- size_t new_lb; +- size_t offset; +- ptr_t result; +- +-# ifdef ALIGN_DOUBLE +- if (align <= WORDS_TO_BYTES(2) && lb > align) return GC_malloc(lb); +-# endif +- if (align <= WORDS_TO_BYTES(1)) return GC_malloc(lb); +- if (align >= HBLKSIZE/2 || lb >= HBLKSIZE/2) { +- if (align > HBLKSIZE) return GC_oom_fn(LONG_MAX-1024) /* Fail */; +- return GC_malloc(lb <= HBLKSIZE? HBLKSIZE : lb); +- /* Will be HBLKSIZE aligned. */ +- } +- /* We could also try to make sure that the real rounded-up object size */ +- /* is a multiple of align. That would be correct up to HBLKSIZE. */ +- new_lb = lb + align - 1; +- result = GC_malloc(new_lb); +- offset = (word)result % align; +- if (offset != 0) { +- offset = align - offset; +- if (!GC_all_interior_pointers) { +- if (offset >= VALID_OFFSET_SZ) return GC_malloc(HBLKSIZE); +- GC_register_displacement(offset); +- } +- } +- result = (GC_PTR) ((ptr_t)result + offset); +- GC_ASSERT((word)result % align == 0); +- return result; +-} +-#endif + + # ifdef ATOMIC_UNCOLLECTABLE + /* Allocate lb bytes of pointerfree, untraced, uncollectable data */ +diff -Nur ../boehm-gc/mark.c boehm-gc/mark.c +--- ../boehm-gc/mark.c Mon May 26 12:48:52 2003 ++++ boehm-gc/mark.c Fri Mar 29 14:52:12 2002 +@@ -19,10 +19,6 @@ + # include + # include "private/gc_pmark.h" + +-#if defined(MSWIN32) && defined(__GNUC__) +-# include +-#endif +- + /* We put this here to minimize the risk of inlining. */ + /*VARARGS*/ + #ifdef __WATCOMC__ +@@ -265,20 +261,20 @@ + /* remains valid until all marking is complete. */ + /* A zero value indicates that it's OK to miss some */ + /* register values. */ +-/* We hold the allocation lock. In the case of */ +-/* incremental collection, the world may not be stopped.*/ +-#ifdef MSWIN32 +- /* For win32, this is called after we establish a structured */ +- /* exception handler, in case Windows unmaps one of our root */ +- /* segments. See below. In either case, we acquire the */ +- /* allocator lock long before we get here. */ +- GC_bool GC_mark_some_inner(cold_gc_frame) +- ptr_t cold_gc_frame; +-#else +- GC_bool GC_mark_some(cold_gc_frame) +- ptr_t cold_gc_frame; +-#endif ++GC_bool GC_mark_some(cold_gc_frame) ++ptr_t cold_gc_frame; + { ++#if defined(MSWIN32) && !defined(__GNUC__) ++ /* Windows 98 appears to asynchronously create and remove writable */ ++ /* memory mappings, for reasons we haven't yet understood. Since */ ++ /* we look for writable regions to determine the root set, we may */ ++ /* try to mark from an address range that disappeared since we */ ++ /* started the collection. Thus we have to recover from faults here. */ ++ /* This code does not appear to be necessary for Windows 95/NT/2000. */ ++ /* Note that this code should never generate an incremental GC write */ ++ /* fault. */ ++ __try { ++#endif /* defined(MSWIN32) && !defined(__GNUC__) */ + switch(GC_mark_state) { + case MS_NONE: + return(FALSE); +@@ -399,130 +395,23 @@ + ABORT("GC_mark_some: bad state"); + return(FALSE); + } +-} +- +- +-#ifdef MSWIN32 +- +-# ifdef __GNUC__ +- +- typedef struct { +- EXCEPTION_REGISTRATION ex_reg; +- void *alt_path; +- } ext_ex_regn; +- +- +- static EXCEPTION_DISPOSITION mark_ex_handler( +- struct _EXCEPTION_RECORD *ex_rec, +- void *est_frame, +- struct _CONTEXT *context, +- void *disp_ctxt) +- { +- if (ex_rec->ExceptionCode == STATUS_ACCESS_VIOLATION) { +- ext_ex_regn *xer = (ext_ex_regn *)est_frame; +- +- /* Unwind from the inner function assuming the standard */ +- /* function prologue. */ +- /* Assumes code has not been compiled with */ +- /* -fomit-frame-pointer. */ +- context->Esp = context->Ebp; +- context->Ebp = *((DWORD *)context->Esp); +- context->Esp = context->Esp - 8; +- +- /* Resume execution at the "real" handler within the */ +- /* wrapper function. */ +- context->Eip = (DWORD )(xer->alt_path); +- +- return ExceptionContinueExecution; +- +- } else { +- return ExceptionContinueSearch; +- } +- } +-# endif /* __GNUC__ */ +- +- +- GC_bool GC_mark_some(cold_gc_frame) +- ptr_t cold_gc_frame; +- { +- GC_bool ret_val; +- +-# ifndef __GNUC__ +- /* Windows 98 appears to asynchronously create and remove */ +- /* writable memory mappings, for reasons we haven't yet */ +- /* understood. Since we look for writable regions to */ +- /* determine the root set, we may try to mark from an */ +- /* address range that disappeared since we started the */ +- /* collection. Thus we have to recover from faults here. */ +- /* This code does not appear to be necessary for Windows */ +- /* 95/NT/2000. Note that this code should never generate */ +- /* an incremental GC write fault. */ +- +- __try { +- +-# else /* __GNUC__ */ +- +- /* Manually install an exception handler since GCC does */ +- /* not yet support Structured Exception Handling (SEH) on */ +- /* Win32. */ +- +- ext_ex_regn er; +- +- er.alt_path = &&handle_ex; +- er.ex_reg.handler = mark_ex_handler; +- asm volatile ("movl %%fs:0, %0" : "=r" (er.ex_reg.prev)); +- asm volatile ("movl %0, %%fs:0" : : "r" (&er)); +- +-# endif /* __GNUC__ */ +- +- ret_val = GC_mark_some_inner(cold_gc_frame); +- +-# ifndef __GNUC__ +- +- } __except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ? +- EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) { +- +-# else /* __GNUC__ */ +- +- /* Prevent GCC from considering the following code unreachable */ +- /* and thus eliminating it. */ +- if (er.alt_path != 0) +- goto rm_handler; +- +-handle_ex: +- /* Execution resumes from here on an access violation. */ +- +-# endif /* __GNUC__ */ +- +-# ifdef CONDPRINT +- if (GC_print_stats) { +- GC_printf0("Caught ACCESS_VIOLATION in marker. " +- "Memory mapping disappeared.\n"); +- } +-# endif /* CONDPRINT */ +- +- /* We have bad roots on the stack. Discard mark stack. */ +- /* Rescan from marked objects. Redetermine roots. */ +- GC_invalidate_mark_state(); +- scan_ptr = 0; +- +- ret_val = FALSE; +- +-# ifndef __GNUC__ +- ++#if defined(MSWIN32) && !defined(__GNUC__) ++ } __except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ? ++ EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) { ++# ifdef CONDPRINT ++ if (GC_print_stats) { ++ GC_printf0("Caught ACCESS_VIOLATION in marker. " ++ "Memory mapping disappeared.\n"); + } +- +-# else /* __GNUC__ */ +- +-rm_handler: +- /* Uninstall the exception handler */ +- asm volatile ("mov %0, %%fs:0" : : "r" (er.ex_reg.prev)); +- +-# endif /* __GNUC__ */ +- +- return ret_val; ++# endif /* CONDPRINT */ ++ /* We have bad roots on the stack. Discard mark stack. */ ++ /* Rescan from marked objects. Redetermine roots. */ ++ GC_invalidate_mark_state(); ++ scan_ptr = 0; ++ return FALSE; + } +-#endif /* MSWIN32 */ ++#endif /* defined(MSWIN32) && !defined(__GNUC__) */ ++} + + + GC_bool GC_mark_stack_empty() +@@ -545,7 +434,13 @@ + /* for the large object. */ + /* - just return current if it does not point to a large object. */ + /*ARGSUSED*/ +-ptr_t GC_find_start(current, hhdr, new_hdr_p) ++# ifdef PRINT_BLACK_LIST ++ ptr_t GC_find_start(current, hhdr, new_hdr_p, source) ++ ptr_t source; ++# else ++ ptr_t GC_find_start(current, hhdr, new_hdr_p) ++# define source 0 ++# endif + register ptr_t current; + register hdr *hhdr, **new_hdr_p; + { +@@ -573,6 +468,7 @@ + } else { + return(current); + } ++# undef source + } + + void GC_invalidate_mark_state() +@@ -650,8 +546,8 @@ + /* Large length. */ + /* Process part of the range to avoid pushing too much on the */ + /* stack. */ +- GC_ASSERT(descr < (word)GC_greatest_plausible_heap_addr +- - (word)GC_least_plausible_heap_addr); ++ GC_ASSERT(descr < GC_greatest_plausible_heap_addr ++ - GC_least_plausible_heap_addr); + # ifdef PARALLEL_MARK + # define SHARE_BYTES 2048 + if (descr > SHARE_BYTES && GC_parallel +@@ -682,7 +578,6 @@ + while (descr != 0) { + if ((signed_word)descr < 0) { + current = *current_p; +- FIXUP_POINTER(current); + if ((ptr_t)current >= least_ha && (ptr_t)current < greatest_ha) { + PREFETCH(current); + HC_PUSH_CONTENTS((ptr_t)current, mark_stack_top, +@@ -757,7 +652,6 @@ + PREFETCH((ptr_t)limit - PREF_DIST*CACHE_LINE_SIZE); + GC_ASSERT(limit >= current_p); + deferred = *limit; +- FIXUP_POINTER(deferred); + limit = (word *)((char *)limit - ALIGNMENT); + if ((ptr_t)deferred >= least_ha && (ptr_t)deferred < greatest_ha) { + PREFETCH(deferred); +@@ -767,7 +661,6 @@ + /* Unroll once, so we don't do too many of the prefetches */ + /* based on limit. */ + deferred = *limit; +- FIXUP_POINTER(deferred); + limit = (word *)((char *)limit - ALIGNMENT); + if ((ptr_t)deferred >= least_ha && (ptr_t)deferred < greatest_ha) { + PREFETCH(deferred); +@@ -782,7 +675,6 @@ + /* Since HC_PUSH_CONTENTS expands to a lot of code, */ + /* we don't. */ + current = *current_p; +- FIXUP_POINTER(current); + PREFETCH((ptr_t)current_p + PREF_DIST*CACHE_LINE_SIZE); + if ((ptr_t)current >= least_ha && (ptr_t)current < greatest_ha) { + /* Prefetch the contents of the object we just pushed. It's */ +@@ -834,33 +726,22 @@ + mse *top = local - 1; + unsigned i = 0; + +- /* Make sure that prior writes to the mark stack are visible. */ +- /* On some architectures, the fact that the reads are */ +- /* volatile should suffice. */ +-# if !defined(IA64) && !defined(HP_PA) && !defined(I386) +- GC_memory_barrier(); +-# endif + GC_ASSERT(high >= low-1 && high - low + 1 <= GC_mark_stack_size); + for (p = low; p <= high && i <= max; ++p) { + word descr = *(volatile word *) &(p -> mse_descr); +- /* In the IA64 memory model, the following volatile store is */ +- /* ordered after this read of descr. Thus a thread must read */ +- /* the original nonzero value. HP_PA appears to be similar, */ +- /* and if I'm reading the P4 spec correctly, X86 is probably */ +- /* also OK. In some other cases we need a barrier. */ +-# if !defined(IA64) && !defined(HP_PA) && !defined(I386) +- GC_memory_barrier(); +-# endif + if (descr != 0) { + *(volatile word *) &(p -> mse_descr) = 0; +- /* More than one thread may get this entry, but that's only */ +- /* a minor performance problem. */ + ++top; + top -> mse_descr = descr; + top -> mse_start = p -> mse_start; + GC_ASSERT( top -> mse_descr & GC_DS_TAGS != GC_DS_LENGTH || + top -> mse_descr < GC_greatest_plausible_heap_addr + - GC_least_plausible_heap_addr); ++ /* There is no synchronization here. We assume that at */ ++ /* least one thread will see the original descriptor. */ ++ /* Otherwise we need a barrier. */ ++ /* More than one thread may get this entry, but that's only */ ++ /* a minor performance problem. */ + /* If this is a big object, count it as */ + /* size/256 + 1 objects. */ + ++i; +@@ -897,7 +778,7 @@ + BCOPY(low, my_start, stack_size * sizeof(mse)); + GC_ASSERT(GC_mark_stack_top = my_top); + # if !defined(IA64) && !defined(HP_PA) +- GC_memory_barrier(); ++ GC_memory_write_barrier(); + # endif + /* On IA64, the volatile write acts as a release barrier. */ + GC_mark_stack_top = my_top + stack_size; +@@ -1461,8 +1342,8 @@ + # define GC_least_plausible_heap_addr least_ha + + if (top == 0) return; +- /* check all pointers in range and push if they appear */ +- /* to be valid. */ ++ /* check all pointers in range and put in push if they appear */ ++ /* to be valid. */ + lim = t - 1 /* longword */; + for (p = b; p <= lim; p = (word *)(((char *)p) + ALIGNMENT)) { + q = *p; +@@ -1485,7 +1366,7 @@ + ptr_t top; + ptr_t cold_gc_frame; + { +- if (!NEED_FIXUP_POINTER && GC_all_interior_pointers) { ++ if (GC_all_interior_pointers) { + # define EAGER_BYTES 1024 + /* Push the hot end of the stack eagerly, so that register values */ + /* saved inside GC frames are marked before they disappear. */ +@@ -1494,7 +1375,6 @@ + GC_push_all_stack(bottom, top); + return; + } +- GC_ASSERT(bottom <= cold_gc_frame && cold_gc_frame <= top); + # ifdef STACK_GROWS_DOWN + GC_push_all(cold_gc_frame - sizeof(ptr_t), top); + GC_push_all_eager(bottom, cold_gc_frame); +@@ -1515,7 +1395,7 @@ + ptr_t bottom; + ptr_t top; + { +- if (!NEED_FIXUP_POINTER && GC_all_interior_pointers) { ++ if (GC_all_interior_pointers) { + GC_push_all(bottom, top); + } else { + GC_push_all_eager(bottom, top); +diff -Nur ../boehm-gc/mark_rts.c boehm-gc/mark_rts.c +--- ../boehm-gc/mark_rts.c Mon May 26 12:48:52 2003 ++++ boehm-gc/mark_rts.c Mon Mar 3 22:38:29 2003 +@@ -275,72 +275,33 @@ + } + + /* Internal use only; lock held. */ +-static void GC_remove_root_at_pos(i) +-int i; +-{ +- GC_root_size -= (GC_static_roots[i].r_end - GC_static_roots[i].r_start); +- GC_static_roots[i].r_start = GC_static_roots[n_root_sets-1].r_start; +- GC_static_roots[i].r_end = GC_static_roots[n_root_sets-1].r_end; +- GC_static_roots[i].r_tmp = GC_static_roots[n_root_sets-1].r_tmp; +- n_root_sets--; +-} +- +-#if !defined(MSWIN32) && !defined(MSWINCE) +-static void GC_rebuild_root_index() +-{ +- register int i; +- +- for (i = 0; i < RT_SIZE; i++) GC_root_index[i] = 0; +- for (i = 0; i < n_root_sets; i++) +- add_roots_to_index(GC_static_roots + i); +-} +-#endif +- +-/* Internal use only; lock held. */ + void GC_remove_tmp_roots() + { + register int i; + + for (i = 0; i < n_root_sets; ) { + if (GC_static_roots[i].r_tmp) { +- GC_remove_root_at_pos(i); ++ GC_root_size -= ++ (GC_static_roots[i].r_end - GC_static_roots[i].r_start); ++ GC_static_roots[i].r_start = GC_static_roots[n_root_sets-1].r_start; ++ GC_static_roots[i].r_end = GC_static_roots[n_root_sets-1].r_end; ++ GC_static_roots[i].r_tmp = GC_static_roots[n_root_sets-1].r_tmp; ++ n_root_sets--; + } else { + i++; + } + } +- #if !defined(MSWIN32) && !defined(MSWINCE) +- GC_rebuild_root_index(); +- #endif +-} +- +-#if !defined(MSWIN32) && !defined(MSWINCE) +-void GC_remove_roots(b, e) +-char * b; char * e; +-{ +- DCL_LOCK_STATE; +- +- DISABLE_SIGNALS(); +- LOCK(); +- GC_remove_roots_inner(b, e); +- UNLOCK(); +- ENABLE_SIGNALS(); +-} +- +-/* Should only be called when the lock is held */ +-void GC_remove_roots_inner(b,e) +-char * b; char * e; +-{ +- int i; +- for (i = 0; i < n_root_sets; ) { +- if (GC_static_roots[i].r_start >= (ptr_t)b && GC_static_roots[i].r_end <= (ptr_t)e) { +- GC_remove_root_at_pos(i); +- } else { +- i++; +- } ++# if !defined(MSWIN32) && !defined(MSWINCE) ++ { ++ register int i; ++ ++ for (i = 0; i < RT_SIZE; i++) GC_root_index[i] = 0; ++ for (i = 0; i < n_root_sets; i++) ++ add_roots_to_index(GC_static_roots + i); + } +- GC_rebuild_root_index(); ++# endif ++ + } +-#endif /* !defined(MSWIN32) && !defined(MSWINCE) */ + + #if defined(MSWIN32) || defined(_WIN32_WCE_EMULATION) + /* Workaround for the OS mapping and unmapping behind our back: */ +@@ -612,11 +573,8 @@ + + /* Mark thread local free lists, even if their mark */ + /* descriptor excludes the link field. */ +- /* If the world is not stopped, this is unsafe. It is */ +- /* also unnecessary, since we will do this again with the */ +- /* world stopped. */ + # ifdef THREAD_LOCAL_ALLOC +- if (GC_world_stopped) GC_mark_thread_local_free_lists(); ++ GC_mark_thread_local_free_lists(); + # endif + + /* +diff -Nur ../boehm-gc/misc.c boehm-gc/misc.c +--- ../boehm-gc/misc.c Mon May 26 12:48:52 2003 ++++ boehm-gc/misc.c Mon Mar 3 22:38:30 2003 +@@ -46,10 +46,8 @@ + # ifdef GC_SOLARIS_THREADS + mutex_t GC_allocate_ml; /* Implicitly initialized. */ + # else +-# if defined(GC_WIN32_THREADS) +-# if defined(GC_PTHREADS) +- pthread_mutex_t GC_allocate_ml = PTHREAD_MUTEX_INITIALIZER; +-# elif defined(GC_DLL) ++# ifdef GC_WIN32_THREADS ++# if !defined(GC_NOT_DLL) && (defined(_DLL) || defined(GC_DLL)) + __declspec(dllexport) CRITICAL_SECTION GC_allocate_ml; + # else + CRITICAL_SECTION GC_allocate_ml; +@@ -77,8 +75,8 @@ + #undef STACKBASE + #endif + +-/* Dont unnecessarily call GC_register_main_static_data() in case */ +-/* dyn_load.c isn't linked in. */ ++/* Dont unnecessarily call GC_register_main_static_data() in case */ ++/* dyn_load.c isn't linked in. */ + #ifdef DYNAMIC_LOADING + # define GC_REGISTER_MAIN_STATIC_DATA() GC_register_main_static_data() + #else +@@ -92,7 +90,6 @@ + /* defined here so we don't have to load debug_malloc.o */ + + void (*GC_check_heap) GC_PROTO((void)) = (void (*) GC_PROTO((void)))0; +-void (*GC_print_all_smashed) GC_PROTO((void)) = (void (*) GC_PROTO((void)))0; + + void (*GC_start_call_back) GC_PROTO((void)) = (void (*) GC_PROTO((void)))0; + +@@ -112,10 +109,6 @@ + + GC_bool GC_print_back_height = 0; + +-#ifndef NO_DEBUGGING +- GC_bool GC_dump_regularly = 0; /* Generate regular debugging dumps. */ +-#endif +- + #ifdef FIND_LEAK + int GC_find_leak = 1; + #else +@@ -144,13 +137,6 @@ + + extern signed_word GC_mem_found; + +-void * GC_project2(arg1, arg2) +-void *arg1; +-void *arg2; +-{ +- return arg2; +-} +- + # ifdef MERGE_SIZES + /* Set things up so that GC_size_map[i] >= words(i), */ + /* but not too much bigger */ +@@ -469,7 +455,7 @@ + + DISABLE_SIGNALS(); + +-#if defined(GC_WIN32_THREADS) && !defined(GC_PTHREADS) ++#ifdef MSWIN32 + if (!GC_is_initialized) InitializeCriticalSection(&GC_allocate_ml); + #endif /* MSWIN32 */ + +@@ -487,15 +473,6 @@ + GC_init_parallel(); + } + # endif /* PARALLEL_MARK || THREAD_LOCAL_ALLOC */ +- +-# if defined(DYNAMIC_LOADING) && defined(DARWIN) +- { +- /* This must be called WITHOUT the allocation lock held +- and before any threads are created */ +- extern void GC_init_dyld(); +- GC_init_dyld(); +- } +-# endif + } + + #if defined(MSWIN32) || defined(MSWINCE) +@@ -508,22 +485,6 @@ + + extern void GC_setpagesize(); + +- +-#ifdef MSWIN32 +-extern GC_bool GC_no_win32_dlls; +-#else +-# define GC_no_win32_dlls FALSE +-#endif +- +-void GC_exit_check GC_PROTO((void)) +-{ +- GC_gcollect(); +-} +- +-#ifdef SEARCH_FOR_DATA_START +- extern void GC_init_linux_data_start GC_PROTO((void)); +-#endif +- + #ifdef UNIX_LIKE + + extern void GC_set_and_save_fault_handler GC_PROTO((void (*handler)(int))); +@@ -534,23 +495,12 @@ + GC_err_printf1("Caught signal %d: looping in handler\n", sig); + for(;;); + } ++#endif + +-static GC_bool installed_looping_handler = FALSE; +- +-void maybe_install_looping_handler() +-{ +- /* Install looping handler before the write fault handler, so we */ +- /* handle write faults correctly. */ +- if (!installed_looping_handler && 0 != GETENV("GC_LOOP_ON_ABORT")) { +- GC_set_and_save_fault_handler(looping_handler); +- installed_looping_handler = TRUE; +- } +-} +- +-#else /* !UNIX_LIKE */ +- +-# define maybe_install_looping_handler() +- ++#ifdef MSWIN32 ++extern GC_bool GC_no_win32_dlls; ++#else ++# define GC_no_win32_dlls FALSE + #endif + + void GC_init_inner() +@@ -565,21 +515,14 @@ + GC_print_stats = 1; + # endif + # if defined(MSWIN32) || defined(MSWINCE) +- InitializeCriticalSection(&GC_write_cs); ++ InitializeCriticalSection(&GC_write_cs); + # endif ++ + if (0 != GETENV("GC_PRINT_STATS")) { + GC_print_stats = 1; + } +-# ifndef NO_DEBUGGING +- if (0 != GETENV("GC_DUMP_REGULARLY")) { +- GC_dump_regularly = 1; +- } +-# endif + if (0 != GETENV("GC_FIND_LEAK")) { + GC_find_leak = 1; +-# ifdef __STDC__ +- atexit(GC_exit_check); +-# endif + } + if (0 != GETENV("GC_ALL_INTERIOR_POINTERS")) { + GC_all_interior_pointers = 1; +@@ -617,7 +560,11 @@ + } + } + } +- maybe_install_looping_handler(); ++# ifdef UNIX_LIKE ++ if (0 != GETENV("GC_LOOP_ON_ABORT")) { ++ GC_set_and_save_fault_handler(looping_handler); ++ } ++# endif + /* Adjust normal object descriptor for extra allocation. */ + if (ALIGNMENT > GC_DS_TAGS && EXTRA_BYTES != 0) { + GC_obj_kinds[NORMAL].ok_descriptor = ((word)(-ALIGNMENT) | GC_DS_LENGTH); +@@ -652,21 +599,11 @@ + # if defined(LINUX) && defined(IA64) + GC_register_stackbottom = GC_get_register_stack_base(); + # endif +- } else { +-# if defined(LINUX) && defined(IA64) +- if (GC_register_stackbottom == 0) { +- WARN("GC_register_stackbottom should be set with GC_stackbottom", 0); +- /* The following is likely to fail, since we rely on */ +- /* alignment properties that may not hold with a user set */ +- /* GC_stackbottom. */ +- GC_register_stackbottom = GC_get_register_stack_base(); +- } +-# endif + } + # endif +- GC_STATIC_ASSERT(sizeof (ptr_t) == sizeof(word)); +- GC_STATIC_ASSERT(sizeof (signed_word) == sizeof(word)); +- GC_STATIC_ASSERT(sizeof (struct hblk) == HBLKSIZE); ++ GC_ASSERT(sizeof (ptr_t) == sizeof(word)); ++ GC_ASSERT(sizeof (signed_word) == sizeof(word)); ++ GC_ASSERT(sizeof (struct hblk) == HBLKSIZE); + # ifndef THREADS + # if defined(STACK_GROWS_UP) && defined(STACK_GROWS_DOWN) + ABORT( +@@ -705,18 +642,6 @@ + initial_heap_sz = divHBLKSZ(initial_heap_sz); + } + } +- { +- char * sz_str = GETENV("GC_MAXIMUM_HEAP_SIZE"); +- if (sz_str != NULL) { +- word max_heap_sz = (word)atol(sz_str); +- if (max_heap_sz < initial_heap_sz * HBLKSIZE) { +- WARN("Bad maximum heap size %s - ignoring it.\n", +- sz_str); +- } +- if (0 == GC_max_retries) GC_max_retries = 2; +- GC_set_max_heap_size(max_heap_sz); +- } +- } + if (!GC_expand_hp_inner(initial_heap_sz)) { + GC_err_printf0("Can't start up: not enough memory\n"); + EXIT(); +@@ -752,7 +677,6 @@ + GC_incremental = TRUE; + } + # endif /* !SMALL_CONFIG */ +- COND_DUMP; + /* Get black list set up and/or incrmental GC started */ + if (!GC_dont_precollect || GC_incremental) GC_gcollect_inner(); + GC_is_initialized = TRUE; +@@ -788,9 +712,8 @@ + if (GC_incremental) goto out; + GC_setpagesize(); + if (GC_no_win32_dlls) goto out; +-# ifndef GC_SOLARIS_THREADS +- maybe_install_looping_handler(); /* Before write fault handler! */ +- GC_dirty_init(); ++# ifndef GC_SOLARIS_THREADS ++ GC_dirty_init(); + # endif + if (!GC_is_initialized) { + GC_init_inner(); +@@ -1009,17 +932,6 @@ + return(result); + } + +-# if defined(__STDC__) || defined(__cplusplus) +- GC_word GC_set_free_space_divisor (GC_word value) +-# else +- GC_word GC_set_free_space_divisor (value) +- GC_word value; +-# endif +-{ +- GC_word old = GC_free_space_divisor; +- GC_free_space_divisor = value; +- return old; +-} + + #ifndef PCR + void GC_abort(msg) +@@ -1046,18 +958,122 @@ + } + #endif + ++#ifdef NEED_CALLINFO ++ ++#ifdef HAVE_BUILTIN_BACKTRACE ++# include ++# ifdef LINUX ++# include ++# endif ++#endif ++ ++void GC_print_callers (info) ++struct callinfo info[NFRAMES]; ++{ ++ register int i; ++ ++# if NFRAMES == 1 ++ GC_err_printf0("\tCaller at allocation:\n"); ++# else ++ GC_err_printf0("\tCall chain at allocation:\n"); ++# endif ++ for (i = 0; i < NFRAMES; i++) { ++ if (info[i].ci_pc == 0) break; ++# if NARGS > 0 ++ { ++ int j; ++ ++ GC_err_printf0("\t\targs: "); ++ for (j = 0; j < NARGS; j++) { ++ if (j != 0) GC_err_printf0(", "); ++ GC_err_printf2("%d (0x%X)", ~(info[i].ci_arg[j]), ++ ~(info[i].ci_arg[j])); ++ } ++ GC_err_printf0("\n"); ++ } ++# endif ++# if defined(HAVE_BUILTIN_BACKTRACE) && !defined(REDIRECT_MALLOC) ++ /* Unfortunately backtrace_symbols calls malloc, which makes */ ++ /* it dangersous if that has been redirected. */ ++ { ++ char **sym_name = ++ backtrace_symbols((void **)(&(info[i].ci_pc)), 1); ++ char *name = sym_name[0]; ++ GC_bool found_it = (strchr(name, '(') != 0); ++ FILE *pipe; ++# ifdef LINUX ++ if (!found_it) { ++# define EXE_SZ 100 ++ static char exe_name[EXE_SZ]; ++# define CMD_SZ 200 ++ char cmd_buf[CMD_SZ]; ++# define RESULT_SZ 200 ++ static char result_buf[RESULT_SZ]; ++ size_t result_len; ++ static GC_bool found_exe_name = FALSE; ++ static GC_bool will_fail = FALSE; ++ int ret_code; ++ /* Unfortunately, this is the common case for the */ ++ /* main executable. */ ++ /* Try to get it via a hairy and expensive scheme. */ ++ /* First we get the name of the executable: */ ++ if (will_fail) goto out; ++ if (!found_exe_name) { ++ ret_code = readlink("/proc/self/exe", exe_name, EXE_SZ); ++ if (ret_code < 0 || ret_code >= EXE_SZ || exe_name[0] != '/') { ++ will_fail = TRUE; /* Dont try again. */ ++ goto out; ++ } ++ exe_name[ret_code] = '\0'; ++ found_exe_name = TRUE; ++ } ++ /* Then we use popen to start addr2line -e */ ++ /* There are faster ways to do this, but hopefully this */ ++ /* isn't time critical. */ ++ sprintf(cmd_buf, "/usr/bin/addr2line -e %s 0x%lx", exe_name, ++ (unsigned long)info[i].ci_pc); ++ pipe = popen(cmd_buf, "r"); ++ if (pipe < 0 || fgets(result_buf, RESULT_SZ, pipe) == 0) { ++ will_fail = TRUE; ++ goto out; ++ } ++ result_len = strlen(result_buf); ++ if (result_buf[result_len - 1] == '\n') --result_len; ++ if (result_buf[0] == '?' ++ || result_buf[result_len-2] == ':' ++ && result_buf[result_len-1] == '0') ++ goto out; ++ if (result_len < RESULT_SZ - 25) { ++ /* Add in hex address */ ++ sprintf(result_buf + result_len, " [0x%lx]", ++ (unsigned long)info[i].ci_pc); ++ } ++ name = result_buf; ++ pclose(pipe); ++ out: ++ } ++# endif ++ GC_err_printf1("\t\t%s\n", name); ++ free(sym_name); ++ } ++# else ++ GC_err_printf1("\t\t##PC##= 0x%lx\n", info[i].ci_pc); ++# endif ++ } ++} ++ ++#endif /* SAVE_CALL_CHAIN */ ++ ++/* Needed by SRC_M3, gcj, and should perhaps be the official interface */ ++/* to GC_dont_gc. */ + void GC_enable() + { +- LOCK(); + GC_dont_gc--; +- UNLOCK(); + } + + void GC_disable() + { +- LOCK(); + GC_dont_gc++; +- UNLOCK(); + } + + #if !defined(NO_DEBUGGING) +@@ -1072,8 +1088,6 @@ + GC_print_hblkfreelist(); + GC_printf0("\n***Blocks in use:\n"); + GC_print_block_list(); +- GC_printf0("\n***Finalization statistics:\n"); +- GC_print_finalization_stats(); + } + + #endif /* NO_DEBUGGING */ +diff -Nur ../boehm-gc/os_dep.c boehm-gc/os_dep.c +--- ../boehm-gc/os_dep.c Sat May 31 14:46:38 2003 ++++ boehm-gc/os_dep.c Fri Jul 19 01:54:43 2002 +@@ -80,17 +80,14 @@ + # define NEED_FIND_LIMIT + # endif + +-#if defined(FREEBSD) && defined(I386) +-# include +-# if !defined(PCR) +-# define NEED_FIND_LIMIT +-# endif +-#endif +- + #ifdef NEED_FIND_LIMIT + # include + #endif + ++#if defined(FREEBSD) && defined(I386) ++# include ++#endif ++ + #ifdef AMIGA + # define GC_AMIGA_DEF + # include "AmigaOS.c" +@@ -132,11 +129,6 @@ + # define jmp_buf sigjmp_buf + #endif + +-#ifdef DARWIN +-/* for get_etext and friends */ +-#include +-#endif +- + #ifdef DJGPP + /* Apparently necessary for djgpp 2.01. May cause problems with */ + /* other versions. */ +@@ -155,155 +147,6 @@ + # define OPT_PROT_EXEC 0 + #endif + +-#if defined(LINUX) && \ +- (defined(USE_PROC_FOR_LIBRARIES) || defined(IA64) || !defined(SMALL_CONFIG)) +- +-/* We need to parse /proc/self/maps, either to find dynamic libraries, */ +-/* and/or to find the register backing store base (IA64). Do it once */ +-/* here. */ +- +-#define READ read +- +-/* Repeatedly perform a read call until the buffer is filled or */ +-/* we encounter EOF. */ +-ssize_t GC_repeat_read(int fd, char *buf, size_t count) +-{ +- ssize_t num_read = 0; +- ssize_t result; +- +- while (num_read < count) { +- result = READ(fd, buf + num_read, count - num_read); +- if (result < 0) return result; +- if (result == 0) break; +- num_read += result; +- } +- return num_read; +-} +- +-/* +- * Apply fn to a buffer containing the contents of /proc/self/maps. +- * Return the result of fn or, if we failed, 0. +- */ +- +-word GC_apply_to_maps(word (*fn)(char *)) +-{ +- int f; +- int result; +- int maps_size; +- char maps_temp[32768]; +- char *maps_buf; +- +- /* Read /proc/self/maps */ +- /* Note that we may not allocate, and thus can't use stdio. */ +- f = open("/proc/self/maps", O_RDONLY); +- if (-1 == f) return 0; +- /* stat() doesn't work for /proc/self/maps, so we have to +- read it to find out how large it is... */ +- maps_size = 0; +- do { +- result = GC_repeat_read(f, maps_temp, sizeof(maps_temp)); +- if (result <= 0) return 0; +- maps_size += result; +- } while (result == sizeof(maps_temp)); +- +- if (maps_size > sizeof(maps_temp)) { +- /* If larger than our buffer, close and re-read it. */ +- close(f); +- f = open("/proc/self/maps", O_RDONLY); +- if (-1 == f) return 0; +- maps_buf = alloca(maps_size); +- if (NULL == maps_buf) return 0; +- result = GC_repeat_read(f, maps_buf, maps_size); +- if (result <= 0) return 0; +- } else { +- /* Otherwise use the fixed size buffer */ +- maps_buf = maps_temp; +- } +- +- close(f); +- maps_buf[result] = '\0'; +- +- /* Apply fn to result. */ +- return fn(maps_buf); +-} +- +-#endif /* Need GC_apply_to_maps */ +- +-#if defined(LINUX) && (defined(USE_PROC_FOR_LIBRARIES) || defined(IA64)) +-// +-// GC_parse_map_entry parses an entry from /proc/self/maps so we can +-// locate all writable data segments that belong to shared libraries. +-// The format of one of these entries and the fields we care about +-// is as follows: +-// XXXXXXXX-XXXXXXXX r-xp 00000000 30:05 260537 name of mapping...\n +-// ^^^^^^^^ ^^^^^^^^ ^^^^ ^^ +-// start end prot maj_dev +-// 0 9 18 32 +-// +-// For 64 bit ABIs: +-// 0 17 34 56 +-// +-// The parser is called with a pointer to the entry and the return value +-// is either NULL or is advanced to the next entry(the byte after the +-// trailing '\n'.) +-// +-#if CPP_WORDSZ == 32 +-# define OFFSET_MAP_START 0 +-# define OFFSET_MAP_END 9 +-# define OFFSET_MAP_PROT 18 +-# define OFFSET_MAP_MAJDEV 32 +-# define ADDR_WIDTH 8 +-#endif +- +-#if CPP_WORDSZ == 64 +-# define OFFSET_MAP_START 0 +-# define OFFSET_MAP_END 17 +-# define OFFSET_MAP_PROT 34 +-# define OFFSET_MAP_MAJDEV 56 +-# define ADDR_WIDTH 16 +-#endif +- +-/* +- * Assign various fields of the first line in buf_ptr to *start, *end, +- * *prot_buf and *maj_dev. Only *prot_buf may be set for unwritable maps. +- */ +-char *GC_parse_map_entry(char *buf_ptr, word *start, word *end, +- char *prot_buf, unsigned int *maj_dev) +-{ +- int i; +- char *tok; +- +- if (buf_ptr == NULL || *buf_ptr == '\0') { +- return NULL; +- } +- +- memcpy(prot_buf, buf_ptr+OFFSET_MAP_PROT, 4); // do the protections first +- prot_buf[4] = '\0'; +- +- if (prot_buf[1] == 'w') { // we can skip all of this if it's not writable +- +- tok = buf_ptr; +- buf_ptr[OFFSET_MAP_START+ADDR_WIDTH] = '\0'; +- *start = strtoul(tok, NULL, 16); +- +- tok = buf_ptr+OFFSET_MAP_END; +- buf_ptr[OFFSET_MAP_END+ADDR_WIDTH] = '\0'; +- *end = strtoul(tok, NULL, 16); +- +- buf_ptr += OFFSET_MAP_MAJDEV; +- tok = buf_ptr; +- while (*buf_ptr != ':') buf_ptr++; +- *buf_ptr++ = '\0'; +- *maj_dev = strtoul(tok, NULL, 16); +- } +- +- while (*buf_ptr && *buf_ptr++ != '\n'); +- +- return buf_ptr; +-} +- +-#endif /* Need to parse /proc/self/maps. */ +- + #if defined(SEARCH_FOR_DATA_START) + /* The I386 case can be handled without a search. The Alpha case */ + /* used to be handled differently as well, but the rules changed */ +@@ -311,11 +154,6 @@ + /* cover all versions. */ + + # ifdef LINUX +- /* 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 */ +- /* case we lose. Nonetheless, we try both, prefering __data_start. */ +- /* We assume gcc-compatible pragmas. */ + # pragma weak __data_start + extern int __data_start[]; + # pragma weak data_start +@@ -331,16 +169,16 @@ + + # ifdef LINUX + /* Try the easy approaches first: */ +- if ((ptr_t)__data_start != 0) { +- GC_data_start = (ptr_t)(__data_start); ++ if (__data_start != 0) { ++ GC_data_start = (ptr_t)__data_start; + return; + } +- if ((ptr_t)data_start != 0) { +- GC_data_start = (ptr_t)(data_start); ++ if (data_start != 0) { ++ GC_data_start = (ptr_t)data_start; + return; + } + # endif /* LINUX */ +- GC_data_start = GC_find_limit((ptr_t)(_end), FALSE); ++ GC_data_start = GC_find_limit((ptr_t)_end, FALSE); + } + #endif + +@@ -703,7 +541,7 @@ + handler h; + # endif + { +-# if defined(SUNOS5SIGS) || defined(IRIX5) \ ++# if defined(SUNOS5SIGS) || defined(IRIX5) \ + || defined(OSF1) || defined(HURD) + struct sigaction act; + +@@ -763,68 +601,67 @@ + + void GC_reset_fault_handler() + { +-# if defined(SUNOS5SIGS) || defined(IRIX5) \ +- || defined(OSF1) || defined(HURD) +- (void) sigaction(SIGSEGV, &old_segv_act, 0); +-# if defined(IRIX5) && defined(_sigargs) /* Irix 5.x, not 6.x */ \ +- || defined(HPUX) || defined(HURD) +- (void) sigaction(SIGBUS, &old_bus_act, 0); +-# endif +-# else +- (void) signal(SIGSEGV, old_segv_handler); +-# ifdef SIGBUS +- (void) signal(SIGBUS, old_bus_handler); +-# endif +-# endif ++# if defined(SUNOS5SIGS) || defined(IRIX5) \ ++ || defined(OSF1) || defined(HURD) ++ (void) sigaction(SIGSEGV, &old_segv_act, 0); ++# if defined(IRIX5) && defined(_sigargs) /* Irix 5.x, not 6.x */ \ ++ || defined(HPUX) || defined(HURD) ++ (void) sigaction(SIGBUS, &old_bus_act, 0); ++# endif ++# else ++ (void) signal(SIGSEGV, old_segv_handler); ++# ifdef SIGBUS ++ (void) signal(SIGBUS, old_bus_handler); ++# endif ++# endif + } + + /* Return the first nonaddressible location > p (up) or */ +- /* the smallest location q s.t. [q,p) is addressable (!up). */ +- /* We assume that p (up) or p-1 (!up) is addressable. */ ++ /* the smallest location q s.t. [q,p] is addressible (!up). */ + ptr_t GC_find_limit(p, up) + ptr_t p; + GC_bool up; + { +- static VOLATILE ptr_t result; +- /* Needs to be static, since otherwise it may not be */ +- /* preserved across the longjmp. Can safely be */ +- /* static since it's only called once, with the */ +- /* allocation lock held. */ +- +- +- GC_setup_temporary_fault_handler(); +- if (setjmp(GC_jmp_buf) == 0) { +- result = (ptr_t)(((word)(p)) +- & ~(MIN_PAGE_SIZE-1)); +- for (;;) { +- if (up) { +- result += MIN_PAGE_SIZE; +- } else { +- result -= MIN_PAGE_SIZE; +- } +- GC_noop1((word)(*result)); +- } +- } +- GC_reset_fault_handler(); +- if (!up) { ++ static VOLATILE ptr_t result; ++ /* Needs to be static, since otherwise it may not be */ ++ /* preserved across the longjmp. Can safely be */ ++ /* static since it's only called once, with the */ ++ /* allocation lock held. */ ++ ++ ++ GC_setup_temporary_fault_handler(); ++ if (setjmp(GC_jmp_buf) == 0) { ++ result = (ptr_t)(((word)(p)) ++ & ~(MIN_PAGE_SIZE-1)); ++ for (;;) { ++ if (up) { + result += MIN_PAGE_SIZE; +- } +- return(result); ++ } else { ++ result -= MIN_PAGE_SIZE; ++ } ++ GC_noop1((word)(*result)); ++ } ++ } ++ GC_reset_fault_handler(); ++ if (!up) { ++ result += MIN_PAGE_SIZE; ++ } ++ return(result); + } + # endif + +-#if defined(ECOS) || defined(NOSYS) +- ptr_t GC_get_stack_base() +- { +- return STACKBOTTOM; +- } +-#endif ++# if defined(ECOS) || defined(NOSYS) ++ptr_t GC_get_stack_base() ++{ ++ return STACKBOTTOM; ++} ++ ++#else + + #ifdef LINUX_STACKBOTTOM + + #include + #include +-#include + + # define STAT_SKIP 27 /* Number of fields preceding startstack */ + /* field in /proc/self/stat */ +@@ -833,33 +670,6 @@ + extern ptr_t __libc_stack_end; + + # ifdef IA64 +- /* Try to read the backing store base from /proc/self/maps. */ +- /* We look for the writable mapping with a 0 major device, */ +- /* which is as close to our frame as possible, but below it.*/ +- static word backing_store_base_from_maps(char *maps) +- { +- char prot_buf[5]; +- char *buf_ptr = maps; +- word start, end; +- unsigned int maj_dev; +- word current_best = 0; +- word dummy; +- +- for (;;) { +- buf_ptr = GC_parse_map_entry(buf_ptr, &start, &end, prot_buf, &maj_dev); +- if (buf_ptr == NULL) return current_best; +- if (prot_buf[1] == 'w' && maj_dev == 0) { +- if (end < (word)(&dummy) && start > current_best) current_best = start; +- } +- } +- return current_best; +- } +- +- static word backing_store_base_from_proc(void) +- { +- return GC_apply_to_maps(backing_store_base_from_maps); +- } +- + # pragma weak __libc_ia64_register_backing_store_base + extern ptr_t __libc_ia64_register_backing_store_base; + +@@ -873,15 +683,9 @@ + /* Hence we check for both nonzero address and value. */ + return __libc_ia64_register_backing_store_base; + } else { +- word result = backing_store_base_from_proc(); +- if (0 == result) { +- /* Use dumb heuristics. Works only for default configuration. */ +- result = (word)GC_stackbottom - BACKING_STORE_DISPLACEMENT; +- result += BACKING_STORE_ALIGNMENT - 1; +- result &= ~(BACKING_STORE_ALIGNMENT - 1); +- /* Verify that it's at least readable. If not, we goofed. */ +- GC_noop1(*(word *)result); +- } ++ word result = (word)GC_stackbottom - BACKING_STORE_DISPLACEMENT; ++ result += BACKING_STORE_ALIGNMENT - 1; ++ result &= ~(BACKING_STORE_ALIGNMENT - 1); + return (ptr_t)result; + } + } +@@ -893,8 +697,11 @@ + /* using direct I/O system calls in order to avoid calling malloc */ + /* in case REDIRECT_MALLOC is defined. */ + # define STAT_BUF_SIZE 4096 +-# define STAT_READ read +- /* Should probably call the real read, if read is wrapped. */ ++# if defined(GC_USE_LD_WRAP) ++# define STAT_READ __real_read ++# else ++# define STAT_READ read ++# endif + char stat_buf[STAT_BUF_SIZE]; + int f; + char c; +@@ -903,16 +710,7 @@ + + /* First try the easy way. This should work for glibc 2.2 */ + if (0 != &__libc_stack_end) { +-# ifdef IA64 +- /* Some versions of glibc set the address 16 bytes too */ +- /* low while the initialization code is running. */ +- if (((word)__libc_stack_end & 0xfff) + 0x10 < 0x1000) { +- return __libc_stack_end + 0x10; +- } /* Otherwise it's not safe to add 16 bytes and we fall */ +- /* back to using /proc. */ +-# else +- return __libc_stack_end; +-# endif ++ return __libc_stack_end; + } + f = open("/proc/self/stat", O_RDONLY); + if (f < 0 || STAT_READ(f, stat_buf, STAT_BUF_SIZE) < 2 * STAT_SKIP) { +@@ -966,11 +764,8 @@ + + ptr_t GC_get_stack_base() + { +-# if defined(HEURISTIC1) || defined(HEURISTIC2) || \ +- defined(LINUX_STACKBOTTOM) || defined(FREEBSD_STACKBOTTOM) +- word dummy; +- ptr_t result; +-# endif ++ word dummy; ++ ptr_t result; + + # define STACKBOTTOM_ALIGNMENT_M1 ((word)STACK_GRAN - 1) + +@@ -1019,6 +814,7 @@ + return(result); + # endif /* STACKBOTTOM */ + } ++# endif /* NOSYS ECOS */ + + # endif /* ! AMIGA, !OS 2, ! MS Windows, !BEOS */ + +@@ -1128,14 +924,15 @@ + /* Unfortunately, we have to handle win32s very differently from NT, */ + /* Since VirtualQuery has very different semantics. In particular, */ + /* under win32s a VirtualQuery call on an unmapped page returns an */ +- /* invalid result. Under NT, GC_register_data_segments is a noop and */ ++ /* invalid result. Under GC_register_data_segments is a noop and */ + /* all real work is done by GC_register_dynamic_libraries. Under */ + /* win32s, we cannot find the data segments associated with dll's. */ +- /* We register the main data segment here. */ ++ /* We rgister the main data segment here. */ ++# ifdef __GCC__ ++ GC_bool GC_no_win32_dlls = TRUE; /* GCC can't do SEH, so we can't use VirtualQuery */ ++# else + GC_bool GC_no_win32_dlls = FALSE; +- /* This used to be set for gcc, to avoid dealing with */ +- /* the structured exception handling issues. But we now have */ +- /* assembly code to do that right. */ ++# endif + + void GC_init_win32() + { +@@ -1167,102 +964,36 @@ + return(p); + } + # endif +- +-# ifndef REDIRECT_MALLOC +- /* We maintain a linked list of AllocationBase values that we know */ +- /* correspond to malloc heap sections. Currently this is only called */ +- /* during a GC. But there is some hope that for long running */ +- /* programs we will eventually see most heap sections. */ +- +- /* In the long run, it would be more reliable to occasionally walk */ +- /* the malloc heap with HeapWalk on the default heap. But that */ +- /* apparently works only for NT-based Windows. */ +- +- /* In the long run, a better data structure would also be nice ... */ +- struct GC_malloc_heap_list { +- void * allocation_base; +- struct GC_malloc_heap_list *next; +- } *GC_malloc_heap_l = 0; +- +- /* Is p the base of one of the malloc heap sections we already know */ +- /* about? */ +- GC_bool GC_is_malloc_heap_base(ptr_t p) +- { +- struct GC_malloc_heap_list *q = GC_malloc_heap_l; +- +- while (0 != q) { +- if (q -> allocation_base == p) return TRUE; +- q = q -> next; +- } +- return FALSE; +- } +- +- void *GC_get_allocation_base(void *p) +- { +- MEMORY_BASIC_INFORMATION buf; +- DWORD result = VirtualQuery(p, &buf, sizeof(buf)); +- if (result != sizeof(buf)) { +- ABORT("Weird VirtualQuery result"); +- } +- return buf.AllocationBase; +- } +- +- size_t GC_max_root_size = 100000; /* Appr. largest root size. */ +- +- void GC_add_current_malloc_heap() +- { +- struct GC_malloc_heap_list *new_l = +- malloc(sizeof(struct GC_malloc_heap_list)); +- void * candidate = GC_get_allocation_base(new_l); +- +- if (new_l == 0) return; +- if (GC_is_malloc_heap_base(candidate)) { +- /* Try a little harder to find malloc heap. */ +- size_t req_size = 10000; +- do { +- void *p = malloc(req_size); +- if (0 == p) { free(new_l); return; } +- candidate = GC_get_allocation_base(p); +- free(p); +- req_size *= 2; +- } while (GC_is_malloc_heap_base(candidate) +- && req_size < GC_max_root_size/10 && req_size < 500000); +- if (GC_is_malloc_heap_base(candidate)) { +- free(new_l); return; +- } +- } +-# ifdef CONDPRINT +- if (GC_print_stats) +- GC_printf1("Found new system malloc AllocationBase at 0x%lx\n", +- candidate); +-# endif +- new_l -> allocation_base = candidate; +- new_l -> next = GC_malloc_heap_l; +- GC_malloc_heap_l = new_l; +- } +-# endif /* REDIRECT_MALLOC */ + + /* Is p the start of either the malloc heap, or of one of our */ + /* heap sections? */ + GC_bool GC_is_heap_base (ptr_t p) + { + +- unsigned i; ++ register unsigned i; + + # ifndef REDIRECT_MALLOC +- static word last_gc_no = -1; ++ static ptr_t malloc_heap_pointer = 0; + +- if (last_gc_no != GC_gc_no) { +- GC_add_current_malloc_heap(); +- last_gc_no = GC_gc_no; ++ if (0 == malloc_heap_pointer) { ++ MEMORY_BASIC_INFORMATION buf; ++ void *pTemp = malloc( 1 ); ++ register DWORD result = VirtualQuery(pTemp, &buf, sizeof(buf)); ++ ++ free( pTemp ); ++ ++ ++ if (result != sizeof(buf)) { ++ ABORT("Weird VirtualQuery result"); ++ } ++ malloc_heap_pointer = (ptr_t)(buf.AllocationBase); + } +- if (GC_root_size > GC_max_root_size) GC_max_root_size = GC_root_size; +- if (GC_is_malloc_heap_base(p)) return TRUE; ++ if (p == malloc_heap_pointer) return(TRUE); + # endif + for (i = 0; i < GC_n_heap_bases; i++) { +- if (GC_heap_bases[i] == p) return TRUE; ++ if (GC_heap_bases[i] == p) return(TRUE); + } +- return FALSE ; ++ return(FALSE); + } + + # ifdef MSWIN32 +@@ -1312,7 +1043,7 @@ + + # if (defined(SVR4) || defined(AUX) || defined(DGUX) \ + || (defined(LINUX) && defined(SPARC))) && !defined(PCR) +-ptr_t GC_SysVGetDataStart(max_page_size, etext_addr) ++char * GC_SysVGetDataStart(max_page_size, etext_addr) + int max_page_size; + int * etext_addr; + { +@@ -1338,43 +1069,10 @@ + /* string constants in the text segment, but after etext. */ + /* Use plan B. Note that we now know there is a gap between */ + /* text and data segments, so plan A bought us something. */ +- result = (char *)GC_find_limit((ptr_t)(DATAEND), FALSE); ++ result = (char *)GC_find_limit((ptr_t)(DATAEND) - MIN_PAGE_SIZE, FALSE); + } +- return((ptr_t)result); +-} +-# endif +- +-# if defined(FREEBSD) && defined(I386) && !defined(PCR) +-/* Its unclear whether this should be identical to the above, or */ +-/* whether it should apply to non-X86 architectures. */ +-/* For now we don't assume that there is always an empty page after */ +-/* etext. But in some cases there actually seems to be slightly more. */ +-/* This also deals with holes between read-only data and writable data. */ +-ptr_t GC_FreeBSDGetDataStart(max_page_size, etext_addr) +-int max_page_size; +-int * etext_addr; +-{ +- word text_end = ((word)(etext_addr) + sizeof(word) - 1) +- & ~(sizeof(word) - 1); +- /* etext rounded to word boundary */ +- VOLATILE word next_page = (text_end + (word)max_page_size - 1) +- & ~((word)max_page_size - 1); +- VOLATILE ptr_t result = (ptr_t)text_end; +- GC_setup_temporary_fault_handler(); +- if (setjmp(GC_jmp_buf) == 0) { +- /* Try reading at the address. */ +- /* This should happen before there is another thread. */ +- for (; next_page < (word)(DATAEND); next_page += (word)max_page_size) +- *(VOLATILE char *)next_page; +- GC_reset_fault_handler(); +- } else { +- GC_reset_fault_handler(); +- /* As above, we go to plan B */ +- result = GC_find_limit((ptr_t)(DATAEND), FALSE); +- } +- return(result); ++ return((char *)result); + } +- + # endif + + +@@ -1388,7 +1086,8 @@ + + void GC_register_data_segments() + { +-# if !defined(PCR) && !defined(SRC_M3) && !defined(MACOS) ++# if !defined(PCR) && !defined(SRC_M3) && !defined(NEXT) && !defined(MACOS) \ ++ && !defined(MACOSX) + # if defined(REDIRECT_MALLOC) && defined(GC_SOLARIS_THREADS) + /* As of Solaris 2.3, the Solaris threads implementation */ + /* allocates the data structure for the initial thread with */ +@@ -1405,6 +1104,9 @@ + # endif + # endif + # endif ++# if !defined(PCR) && (defined(NEXT) || defined(MACOSX)) ++ GC_add_roots_inner(DATASTART, (char *) get_end(), FALSE); ++# endif + # if defined(MACOS) + { + # if defined(THINK_C) +@@ -1514,28 +1216,18 @@ + ptr_t GC_unix_get_mem(bytes) + word bytes; + { ++ static GC_bool initialized = FALSE; ++ static int fd; + void *result; + static ptr_t last_addr = HEAP_START; + +-# ifndef USE_MMAP_ANON +- static GC_bool initialized = FALSE; +- static int fd; +- +- if (!initialized) { +- fd = open("/dev/zero", O_RDONLY); +- fcntl(fd, F_SETFD, FD_CLOEXEC); +- initialized = TRUE; +- } +-# endif +- ++ if (!initialized) { ++ fd = open("/dev/zero", O_RDONLY); ++ initialized = TRUE; ++ } + if (bytes & (GC_page_size -1)) ABORT("Bad GET_MEM arg"); +-# ifdef USE_MMAP_ANON +- result = mmap(last_addr, bytes, PROT_READ | PROT_WRITE | OPT_PROT_EXEC, +- GC_MMAP_FLAGS | MAP_ANON, -1, 0/* offset */); +-# else +- result = mmap(last_addr, bytes, PROT_READ | PROT_WRITE | OPT_PROT_EXEC, +- GC_MMAP_FLAGS, fd, 0/* offset */); +-# endif ++ result = mmap(last_addr, bytes, PROT_READ | PROT_WRITE | OPT_PROT_EXEC, ++ GC_MMAP_FLAGS, fd, 0/* offset */); + if (result == MAP_FAILED) return(0); + last_addr = (ptr_t)result + bytes + GC_page_size - 1; + last_addr = (ptr_t)((word)last_addr & ~(GC_page_size - 1)); +@@ -1630,15 +1322,7 @@ + result = (ptr_t) GlobalAlloc(0, bytes + HBLKSIZE); + result = (ptr_t)(((word)result + HBLKSIZE) & ~(HBLKSIZE-1)); + } else { +- /* VirtualProtect only works on regions returned by a */ +- /* single VirtualAlloc call. Thus we allocate one */ +- /* extra page, which will prevent merging of blocks */ +- /* in separate regions, and eliminate any temptation */ +- /* to call VirtualProtect on a range spanning regions. */ +- /* This wastes a small amount of memory, and risks */ +- /* increased fragmentation. But better alternatives */ +- /* would require effort. */ +- result = (ptr_t) VirtualAlloc(NULL, bytes + 1, ++ result = (ptr_t) VirtualAlloc(NULL, bytes, + MEM_COMMIT | MEM_RESERVE, + PAGE_EXECUTE_READWRITE); + } +@@ -1694,10 +1378,6 @@ + /* Reserve more pages */ + word res_bytes = (bytes + GC_sysinfo.dwAllocationGranularity-1) + & ~(GC_sysinfo.dwAllocationGranularity-1); +- /* If we ever support MPROTECT_VDB here, we will probably need to */ +- /* ensure that res_bytes is strictly > bytes, so that VirtualProtect */ +- /* never spans regions. It seems to be OK for a VirtualFree argument */ +- /* to span regions, so we should be OK for now. */ + result = (ptr_t) VirtualAlloc(NULL, res_bytes, + MEM_RESERVE | MEM_TOP_DOWN, + PAGE_EXECUTE_READWRITE); +@@ -1828,7 +1508,6 @@ + } + # else + if (-1 == zero_descr) zero_descr = open("/dev/zero", O_RDWR); +- fcntl(zero_descr, F_SETFD, FD_CLOEXEC); + if (0 == start_addr) return; + result = mmap(start_addr, len, PROT_READ | PROT_WRITE | OPT_PROT_EXEC, + MAP_FIXED | MAP_PRIVATE, zero_descr, 0); +@@ -2015,6 +1694,7 @@ + * make sure that other system calls are similarly protected + * or write only to the stack. + */ ++ + GC_bool GC_dirty_maintained = FALSE; + + # ifdef DEFAULT_VDB +@@ -2028,9 +1708,6 @@ + /* Initialize virtual dirty bit implementation. */ + void GC_dirty_init() + { +-#ifdef PRINTSTATS +- GC_printf0("Initializing DEFAULT_VDB...\n"); +-#endif + GC_dirty_maintained = TRUE; + } + +@@ -2099,21 +1776,17 @@ + /* + * This implementation maintains dirty bits itself by catching write + * faults and keeping track of them. We assume nobody else catches +- * SIGBUS or SIGSEGV. We assume no write faults occur in system calls. +- * This means that clients must ensure that system calls don't write +- * to the write-protected heap. Probably the best way to do this is to +- * ensure that system calls write at most to POINTERFREE objects in the +- * heap, and do even that only if we are on a platform on which those +- * are not protected. Another alternative is to wrap system calls +- * (see example for read below), but the current implementation holds +- * a lock across blocking calls, making it problematic for multithreaded +- * applications. ++ * SIGBUS or SIGSEGV. We assume no write faults occur in system calls ++ * except as a result of a read system call. This means clients must ++ * either ensure that system calls do not touch the heap, or must ++ * provide their own wrappers analogous to the one for read. + * We assume the page size is a multiple of HBLKSIZE. +- * We prefer them to be the same. We avoid protecting POINTERFREE +- * objects only if they are the same. ++ * This implementation is currently SunOS 4.X and IRIX 5.X specific, though we ++ * tried to use portable code where easily possible. It is known ++ * not to work under a number of other systems. + */ + +-# if !defined(MSWIN32) && !defined(MSWINCE) && !defined(DARWIN) ++# if !defined(MSWIN32) && !defined(MSWINCE) + + # include + # include +@@ -2132,23 +1805,6 @@ + + # else + +-# ifdef DARWIN +- /* Using vm_protect (mach syscall) over mprotect (BSD syscall) seems to +- decrease the likelihood of some of the problems described below. */ +- #include +- extern mach_port_t GC_task_self; +- #define PROTECT(addr,len) \ +- if(vm_protect(GC_task_self,(vm_address_t)(addr),(vm_size_t)(len), \ +- FALSE,VM_PROT_READ) != KERN_SUCCESS) { \ +- ABORT("vm_portect failed"); \ +- } +- #define UNPROTECT(addr,len) \ +- if(vm_protect(GC_task_self,(vm_address_t)(addr),(vm_size_t)(len), \ +- FALSE,VM_PROT_READ|VM_PROT_WRITE) != KERN_SUCCESS) { \ +- ABORT("vm_portect failed"); \ +- } +-# else +- + # ifndef MSWINCE + # include + # endif +@@ -2166,22 +1822,20 @@ + &protect_junk)) { \ + ABORT("un-VirtualProtect failed"); \ + } +-# endif /* !DARWIN */ +-# endif /* MSWIN32 || MSWINCE || DARWIN */ ++ ++# endif + + #if defined(SUNOS4) || defined(FREEBSD) + typedef void (* SIG_PF)(); +-#endif /* SUNOS4 || FREEBSD */ +- ++#endif + #if defined(SUNOS5SIGS) || defined(OSF1) || defined(LINUX) \ +- || defined(HURD) ++ || defined(MACOSX) || defined(HURD) + # ifdef __STDC__ + typedef void (* SIG_PF)(int); + # else + typedef void (* SIG_PF)(); + # endif +-#endif /* SUNOS5SIGS || OSF1 || LINUX || HURD */ +- ++#endif + #if defined(MSWIN32) + typedef LPTOP_LEVEL_EXCEPTION_FILTER SIG_PF; + # undef SIG_DFL +@@ -2195,8 +1849,7 @@ + + #if defined(IRIX5) || defined(OSF1) || defined(HURD) + typedef void (* REAL_SIG_PF)(int, int, struct sigcontext *); +-#endif /* IRIX5 || OSF1 || HURD */ +- ++#endif + #if defined(SUNOS5SIGS) + # ifdef HPUX + # define SIGINFO __siginfo +@@ -2208,14 +1861,13 @@ + # else + typedef void (* REAL_SIG_PF)(); + # endif +-#endif /* SUNOS5SIGS */ +- ++#endif + #if defined(LINUX) + # if __GLIBC__ > 2 || __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2 + typedef struct sigcontext s_c; + # else /* glibc < 2.2 */ + # include +-# if (LINUX_VERSION_CODE >= 0x20100) && !defined(M68K) || defined(ALPHA) || defined(ARM32) ++# if (LINUX_VERSION_CODE >= 0x20100) && !defined(M68K) || defined(ALPHA) + typedef struct sigcontext s_c; + # else + typedef struct sigcontext_struct s_c; +@@ -2243,14 +1895,139 @@ + return (char *)faultaddr; + } + # endif /* !ALPHA */ +-# endif /* LINUX */ ++# endif ++ ++# if defined(MACOSX) /* Should also test for PowerPC? */ ++ typedef void (* REAL_SIG_PF)(int, int, struct sigcontext *); ++ ++/* Decodes the machine instruction which was responsible for the sending of the ++ SIGBUS signal. Sadly this is the only way to find the faulting address because ++ the signal handler doesn't get it directly from the kernel (although it is ++ available on the Mach level, but droppped by the BSD personality before it ++ calls our signal handler...) ++ This code should be able to deal correctly with all PPCs starting from the ++ 601 up to and including the G4s (including Velocity Engine). */ ++#define EXTRACT_OP1(iw) (((iw) & 0xFC000000) >> 26) ++#define EXTRACT_OP2(iw) (((iw) & 0x000007FE) >> 1) ++#define EXTRACT_REGA(iw) (((iw) & 0x001F0000) >> 16) ++#define EXTRACT_REGB(iw) (((iw) & 0x03E00000) >> 21) ++#define EXTRACT_REGC(iw) (((iw) & 0x0000F800) >> 11) ++#define EXTRACT_DISP(iw) ((short *) &(iw))[1] ++ ++static char *get_fault_addr(struct sigcontext *scp) ++{ ++ unsigned int instr = *((unsigned int *) scp->sc_ir); ++ unsigned int * regs = &((unsigned int *) scp->sc_regs)[2]; ++ int disp = 0, tmp; ++ unsigned int baseA = 0, baseB = 0; ++ unsigned int addr, alignmask = 0xFFFFFFFF; ++ ++#ifdef GC_DEBUG_DECODER ++ GC_err_printf1("Instruction: 0x%lx\n", instr); ++ GC_err_printf1("Opcode 1: d\n", (int)EXTRACT_OP1(instr)); ++#endif ++ switch(EXTRACT_OP1(instr)) { ++ case 38: /* stb */ ++ case 39: /* stbu */ ++ case 54: /* stfd */ ++ case 55: /* stfdu */ ++ case 52: /* stfs */ ++ case 53: /* stfsu */ ++ case 44: /* sth */ ++ case 45: /* sthu */ ++ case 47: /* stmw */ ++ case 36: /* stw */ ++ case 37: /* stwu */ ++ tmp = EXTRACT_REGA(instr); ++ if(tmp > 0) ++ baseA = regs[tmp]; ++ disp = EXTRACT_DISP(instr); ++ break; ++ case 31: ++#ifdef GC_DEBUG_DECODER ++ GC_err_printf1("Opcode 2: %d\n", (int)EXTRACT_OP2(instr)); ++#endif ++ switch(EXTRACT_OP2(instr)) { ++ case 86: /* dcbf */ ++ case 54: /* dcbst */ ++ case 1014: /* dcbz */ ++ case 247: /* stbux */ ++ case 215: /* stbx */ ++ case 759: /* stfdux */ ++ case 727: /* stfdx */ ++ case 983: /* stfiwx */ ++ case 695: /* stfsux */ ++ case 663: /* stfsx */ ++ case 918: /* sthbrx */ ++ case 439: /* sthux */ ++ case 407: /* sthx */ ++ case 661: /* stswx */ ++ case 662: /* stwbrx */ ++ case 150: /* stwcx. */ ++ case 183: /* stwux */ ++ case 151: /* stwx */ ++ case 135: /* stvebx */ ++ case 167: /* stvehx */ ++ case 199: /* stvewx */ ++ case 231: /* stvx */ ++ case 487: /* stvxl */ ++ tmp = EXTRACT_REGA(instr); ++ if(tmp > 0) ++ baseA = regs[tmp]; ++ baseB = regs[EXTRACT_REGC(instr)]; ++ /* determine Altivec alignment mask */ ++ switch(EXTRACT_OP2(instr)) { ++ case 167: /* stvehx */ ++ alignmask = 0xFFFFFFFE; ++ break; ++ case 199: /* stvewx */ ++ alignmask = 0xFFFFFFFC; ++ break; ++ case 231: /* stvx */ ++ alignmask = 0xFFFFFFF0; ++ break; ++ case 487: /* stvxl */ ++ alignmask = 0xFFFFFFF0; ++ break; ++ } ++ break; ++ case 725: /* stswi */ ++ tmp = EXTRACT_REGA(instr); ++ if(tmp > 0) ++ baseA = regs[tmp]; ++ break; ++ default: /* ignore instruction */ ++#ifdef GC_DEBUG_DECODER ++ GC_err_printf("Ignored by inner handler\n"); ++#endif ++ return NULL; ++ break; ++ } ++ break; ++ default: /* ignore instruction */ ++#ifdef GC_DEBUG_DECODER ++ GC_err_printf("Ignored by main handler\n"); ++#endif ++ return NULL; ++ break; ++ } ++ ++ addr = (baseA + baseB) + disp; ++ addr &= alignmask; ++#ifdef GC_DEBUG_DECODER ++ GC_err_printf1("BaseA: %d\n", baseA); ++ GC_err_printf1("BaseB: %d\n", baseB); ++ GC_err_printf1("Disp: %d\n", disp); ++ GC_err_printf1("Address: %d\n", addr); ++#endif ++ return (char *)addr; ++} ++#endif /* MACOSX */ + +-#ifndef DARWIN + SIG_PF GC_old_bus_handler; + SIG_PF GC_old_segv_handler; /* Also old MSWIN32 ACCESS_VIOLATION filter */ +-#endif /* !DARWIN */ + +-#if defined(THREADS) ++#ifdef THREADS + /* We need to lock around the bitmap update in the write fault handler */ + /* in order to avoid the risk of losing a bit. We do this with a */ + /* test-and-set spin lock if we know how to do that. Otherwise we */ +@@ -2299,7 +2076,6 @@ + #endif /* !THREADS */ + + /*ARGSUSED*/ +-#if !defined(DARWIN) + # if defined (SUNOS4) || defined(FREEBSD) + void GC_write_fault_handler(sig, code, scp, addr) + int sig, code; +@@ -2315,8 +2091,7 @@ + # define SIG_OK (sig == SIGBUS) + # define CODE_OK (code == BUS_PAGE_FAULT) + # endif +-# endif /* SUNOS4 || FREEBSD */ +- ++# endif + # if defined(IRIX5) || defined(OSF1) || defined(HURD) + # include + void GC_write_fault_handler(int sig, int code, struct sigcontext *scp) +@@ -2332,8 +2107,7 @@ + # define SIG_OK (sig == SIGBUS || sig == SIGSEGV) + # define CODE_OK TRUE + # endif +-# endif /* IRIX5 || OSF1 || HURD */ +- ++# endif + # if defined(LINUX) + # if defined(ALPHA) || defined(M68K) + void GC_write_fault_handler(int sig, int code, s_c * sc) +@@ -2341,11 +2115,7 @@ + # if defined(IA64) || defined(HP_PA) + void GC_write_fault_handler(int sig, siginfo_t * si, s_c * scp) + # else +-# if defined(ARM32) +- void GC_write_fault_handler(int sig, int a2, int a3, int a4, s_c sc) +-# else +- void GC_write_fault_handler(int sig, s_c sc) +-# endif ++ void GC_write_fault_handler(int sig, s_c sc) + # endif + # endif + # define SIG_OK (sig == SIGSEGV) +@@ -2353,8 +2123,7 @@ + /* Empirically c.trapno == 14, on IA32, but is that useful? */ + /* Should probably consider alignment issues on other */ + /* architectures. */ +-# endif /* LINUX */ +- ++# endif + # if defined(SUNOS5SIGS) + # ifdef __STDC__ + void GC_write_fault_handler(int sig, struct SIGINFO *scp, void * context) +@@ -2375,7 +2144,13 @@ + # define SIG_OK (sig == SIGSEGV) + # define CODE_OK (scp -> si_code == SEGV_ACCERR) + # endif +-# endif /* SUNOS5SIGS */ ++# endif ++ ++# if defined(MACOSX) ++ void GC_write_fault_handler(int sig, int code, struct sigcontext *scp) ++# define SIG_OK (sig == SIGBUS) ++# define CODE_OK (code == 0 /* experimentally determined */) ++# endif + + # if defined(MSWIN32) || defined(MSWINCE) + LONG WINAPI GC_write_fault_handler(struct _EXCEPTION_POINTERS *exc_info) +@@ -2383,7 +2158,7 @@ + STATUS_ACCESS_VIOLATION) + # define CODE_OK (exc_info -> ExceptionRecord -> ExceptionInformation[0] == 1) + /* Write fault */ +-# endif /* MSWIN32 || MSWINCE */ ++# endif + { + register unsigned i; + # if defined(HURD) +@@ -2443,17 +2218,16 @@ + # if defined(POWERPC) + char * addr = (char *) (sc.regs->dar); + # else +-# if defined(ARM32) +- char * addr = (char *)sc.fault_address; +-# else +- --> architecture not supported +-# endif ++ --> architecture not supported + # endif + # endif + # endif + # endif + # endif + # endif ++# if defined(MACOSX) ++ char * addr = get_fault_addr(scp); ++# endif + # if defined(MSWIN32) || defined(MSWINCE) + char * addr = (char *) (exc_info -> ExceptionRecord + -> ExceptionInformation[1]); +@@ -2517,6 +2291,9 @@ + (*(REAL_SIG_PF)old_handler) (sig, code, scp); + return; + # endif ++# ifdef MACOSX ++ (*(REAL_SIG_PF)old_handler) (sig, code, scp); +# endif -+# endif + # ifdef MSWIN32 + return((*old_handler)(exc_info)); + # endif +@@ -2558,11 +2335,10 @@ + ABORT("Unexpected bus error or segmentation fault"); + #endif + } +-#endif /* !DARWIN */ + + /* + * We hold the allocation lock. We expect block h to be written +- * shortly. Ensure that all pages containing any part of the n hblks ++ * shortly. Ensure that all pages cvontaining any part of the n hblks + * starting at h are no longer protected. If is_ptrfree is false, + * also ensure that they will subsequently appear to be dirty. + */ +@@ -2591,7 +2367,6 @@ + UNPROTECT(h_trunc, (ptr_t)h_end - (ptr_t)h_trunc); + } + +-#if !defined(DARWIN) + void GC_dirty_init() + { + # if defined(SUNOS5SIGS) || defined(IRIX5) || defined(LINUX) || \ +@@ -2614,6 +2389,13 @@ + (void)sigaddset(&act.sa_mask, SIG_SUSPEND); + # endif /* SIG_SUSPEND */ + # endif ++# if defined(MACOSX) ++ struct sigaction act, oldact; ++ ++ act.sa_flags = SA_RESTART; ++ act.sa_handler = GC_write_fault_handler; ++ sigemptyset(&act.sa_mask); ++# endif + # ifdef PRINTSTATS + GC_printf0("Inititalizing mprotect virtual dirty bit implementation\n"); + # endif +@@ -2653,12 +2435,9 @@ + sigaction(SIGSEGV, 0, &oldact); + sigaction(SIGSEGV, &act, 0); + # else +- { +- int res = sigaction(SIGSEGV, &act, &oldact); +- if (res != 0) ABORT("Sigaction failed"); +- } ++ sigaction(SIGSEGV, &act, &oldact); + # endif +-# if defined(_sigargs) || defined(HURD) || !defined(SA_SIGINFO) ++# if defined(_sigargs) || defined(HURD) + /* This is Irix 5.x, not 6.x. Irix 5.x does not have */ + /* sa_sigaction. */ + GC_old_segv_handler = oldact.sa_handler; +@@ -2679,7 +2458,7 @@ + # endif + } + # endif +-# if defined(HPUX) || defined(LINUX) || defined(HURD) ++# if defined(MACOSX) || defined(HPUX) || defined(LINUX) || defined(HURD) + sigaction(SIGBUS, &act, &oldact); + GC_old_bus_handler = oldact.sa_handler; + if (GC_old_bus_handler == SIG_IGN) { +@@ -2691,7 +2470,7 @@ + GC_err_printf0("Replaced other SIGBUS handler\n"); + # endif + } +-# endif /* HPUX || LINUX || HURD */ ++# endif /* MACOS || HPUX || LINUX */ + # if defined(MSWIN32) + GC_old_segv_handler = SetUnhandledExceptionFilter(GC_write_fault_handler); + if (GC_old_segv_handler != NULL) { +@@ -2703,7 +2482,6 @@ + } + # endif + } +-#endif /* !DARWIN */ + + int GC_incremental_protection_needs() + { +@@ -2850,23 +2628,15 @@ + ((ptr_t)end_block - (ptr_t)start_block) + HBLKSIZE); + } + +-#if 0 +- +-/* We no longer wrap read by default, since that was causing too many */ +-/* problems. It is preferred that the client instead avoids writing */ +-/* to the write-protected heap with a system call. */ +-/* This still serves as sample code if you do want to wrap system calls.*/ +- +-#if !defined(MSWIN32) && !defined(MSWINCE) && !defined(GC_USE_LD_WRAP) +-/* Replacement for UNIX system call. */ +-/* Other calls that write to the heap should be handled similarly. */ +-/* Note that this doesn't work well for blocking reads: It will hold */ +-/* the allocation lock for the entire duration of the call. Multithreaded */ +-/* clients should really ensure that it won't block, either by setting */ +-/* the descriptor nonblocking, or by calling select or poll first, to */ +-/* make sure that input is available. */ +-/* Another, preferred alternative is to ensure that system calls never */ +-/* write to the protected heap (see above). */ ++#if !defined(MSWIN32) && !defined(MSWINCE) && !defined(THREADS) \ ++ && !defined(GC_USE_LD_WRAP) ++/* Replacement for UNIX system call. */ ++/* Other calls that write to the heap should be handled similarly. */ ++/* Note that this doesn't work well for blocking reads: It will hold */ ++/* tha allocation lock for the entur duration of the call. Multithreaded */ ++/* clients should really ensure that it won't block, either by setting */ ++/* the descriptor nonblocking, or by calling select or poll first, to */ ++/* make sure that input is available. */ + # if defined(__STDC__) && !defined(SUNOS4) + # include + # include +@@ -2936,8 +2706,6 @@ + /* actually calls. */ + #endif + +-#endif /* 0 */ +- + /*ARGSUSED*/ + GC_bool GC_page_was_ever_dirty(h) + struct hblk *h; +@@ -2953,6 +2721,13 @@ + { + } + ++# else /* !MPROTECT_VDB */ ++ ++# ifdef GC_USE_LD_WRAP ++ ssize_t __wrap_read(int fd, void *buf, size_t nbyte) ++ { return __real_read(fd, buf, nbyte); } ++# endif ++ + # endif /* MPROTECT_VDB */ + + # ifdef PROC_VDB +@@ -3031,7 +2806,6 @@ + } + GC_proc_fd = syscall(SYS_ioctl, fd, PIOCOPENPD, 0); + close(fd); +- syscall(SYS_fcntl, GC_proc_fd, F_SETFD, FD_CLOEXEC); + if (GC_proc_fd < 0) { + ABORT("/proc ioctl failed"); + } +@@ -3271,553 +3045,6 @@ + + # endif /* PCR_VDB */ + +-#if defined(MPROTECT_VDB) && defined(DARWIN) +-/* The following sources were used as a *reference* for this exception handling +- code: +- 1. Apple's mach/xnu documentation +- 2. Timothy J. Wood's "Mach Exception Handlers 101" post to the +- omnigroup's macosx-dev list. +- www.omnigroup.com/mailman/archive/macosx-dev/2000-June/002030.html +- 3. macosx-nat.c from Apple's GDB source code. +-*/ +- +-/* There seem to be numerous problems with darwin's mach exception handling. +- I'm pretty sure they are not problems in my code. Search for +- BROKEN_EXCEPTION_HANDLING for more information. */ +-#define BROKEN_EXCEPTION_HANDLING +- +-#include +-#include +-#include +-#include +-#include +-#include +- +-/* These are not defined in any header, although they are documented */ +-extern boolean_t exc_server(mach_msg_header_t *,mach_msg_header_t *); +-extern kern_return_t exception_raise( +- mach_port_t,mach_port_t,mach_port_t, +- exception_type_t,exception_data_t,mach_msg_type_number_t); +-extern kern_return_t exception_raise_state( +- mach_port_t,mach_port_t,mach_port_t, +- exception_type_t,exception_data_t,mach_msg_type_number_t, +- thread_state_flavor_t*,thread_state_t,mach_msg_type_number_t, +- thread_state_t,mach_msg_type_number_t*); +-extern kern_return_t exception_raise_state_identity( +- mach_port_t,mach_port_t,mach_port_t, +- exception_type_t,exception_data_t,mach_msg_type_number_t, +- thread_state_flavor_t*,thread_state_t,mach_msg_type_number_t, +- thread_state_t,mach_msg_type_number_t*); +- +- +-#define MAX_EXCEPTION_PORTS 16 +- +-static mach_port_t GC_task_self; +- +-static struct { +- mach_msg_type_number_t count; +- exception_mask_t masks[MAX_EXCEPTION_PORTS]; +- exception_handler_t ports[MAX_EXCEPTION_PORTS]; +- exception_behavior_t behaviors[MAX_EXCEPTION_PORTS]; +- thread_state_flavor_t flavors[MAX_EXCEPTION_PORTS]; +-} GC_old_exc_ports; +- +-static struct { +- mach_port_t exception; +-#if defined(THREADS) +- mach_port_t reply; +-#endif +-} GC_ports; +- +-typedef struct { +- mach_msg_header_t head; +-} GC_msg_t; +- +-typedef enum { +- GC_MP_NORMAL, GC_MP_DISCARDING, GC_MP_STOPPED +-} GC_mprotect_state_t; +- +-/* FIXME: 1 and 2 seem to be safe to use in the msgh_id field, +- but it isn't documented. Use the source and see if they +- should be ok. */ +-#define ID_STOP 1 +-#define ID_RESUME 2 +- +-/* These values are only used on the reply port */ +-#define ID_ACK 3 +- +-#if defined(THREADS) +- +-GC_mprotect_state_t GC_mprotect_state; +- +-/* The following should ONLY be called when the world is stopped */ +-static void GC_mprotect_thread_notify(mach_msg_id_t id) { +- struct { +- GC_msg_t msg; +- mach_msg_trailer_t trailer; +- } buf; +- mach_msg_return_t r; +- /* remote, local */ +- buf.msg.head.msgh_bits = +- MACH_MSGH_BITS(MACH_MSG_TYPE_MAKE_SEND,0); +- buf.msg.head.msgh_size = sizeof(buf.msg); +- buf.msg.head.msgh_remote_port = GC_ports.exception; +- buf.msg.head.msgh_local_port = MACH_PORT_NULL; +- buf.msg.head.msgh_id = id; +- +- r = mach_msg( +- &buf.msg.head, +- MACH_SEND_MSG|MACH_RCV_MSG|MACH_RCV_LARGE, +- sizeof(buf.msg), +- sizeof(buf), +- GC_ports.reply, +- MACH_MSG_TIMEOUT_NONE, +- MACH_PORT_NULL); +- if(r != MACH_MSG_SUCCESS) +- ABORT("mach_msg failed in GC_mprotect_thread_notify"); +- if(buf.msg.head.msgh_id != ID_ACK) +- ABORT("invalid ack in GC_mprotect_thread_notify"); +-} +- +-/* Should only be called by the mprotect thread */ +-static void GC_mprotect_thread_reply() { +- GC_msg_t msg; +- mach_msg_return_t r; +- /* remote, local */ +- msg.head.msgh_bits = +- MACH_MSGH_BITS(MACH_MSG_TYPE_MAKE_SEND,0); +- msg.head.msgh_size = sizeof(msg); +- msg.head.msgh_remote_port = GC_ports.reply; +- msg.head.msgh_local_port = MACH_PORT_NULL; +- msg.head.msgh_id = ID_ACK; +- +- r = mach_msg( +- &msg.head, +- MACH_SEND_MSG, +- sizeof(msg), +- 0, +- MACH_PORT_NULL, +- MACH_MSG_TIMEOUT_NONE, +- MACH_PORT_NULL); +- if(r != MACH_MSG_SUCCESS) +- ABORT("mach_msg failed in GC_mprotect_thread_reply"); +-} +- +-void GC_mprotect_stop() { +- GC_mprotect_thread_notify(ID_STOP); +-} +-void GC_mprotect_resume() { +- GC_mprotect_thread_notify(ID_RESUME); +-} +- +-#else /* !THREADS */ +-/* The compiler should optimize away any GC_mprotect_state computations */ +-#define GC_mprotect_state GC_MP_NORMAL +-#endif +- +-static void *GC_mprotect_thread(void *arg) { +- mach_msg_return_t r; +- /* These two structures contain some private kernel data. We don't need to +- access any of it so we don't bother defining a proper struct. The +- correct definitions are in the xnu source code. */ +- struct { +- mach_msg_header_t head; +- char data[256]; +- } reply; +- struct { +- mach_msg_header_t head; +- mach_msg_body_t msgh_body; +- char data[1024]; +- } msg; +- +- mach_msg_id_t id; +- +- for(;;) { +- r = mach_msg( +- &msg.head, +- MACH_RCV_MSG|MACH_RCV_LARGE| +- (GC_mprotect_state == GC_MP_DISCARDING ? MACH_RCV_TIMEOUT : 0), +- 0, +- sizeof(msg), +- GC_ports.exception, +- GC_mprotect_state == GC_MP_DISCARDING ? 0 : MACH_MSG_TIMEOUT_NONE, +- MACH_PORT_NULL); +- +- id = r == MACH_MSG_SUCCESS ? msg.head.msgh_id : -1; +- +-#if defined(THREADS) +- if(GC_mprotect_state == GC_MP_DISCARDING) { +- if(r == MACH_RCV_TIMED_OUT) { +- GC_mprotect_state = GC_MP_STOPPED; +- GC_mprotect_thread_reply(); +- continue; +- } +- if(r == MACH_MSG_SUCCESS && (id == ID_STOP || id == ID_RESUME)) +- ABORT("out of order mprotect thread request"); +- } +-#endif +- +- if(r != MACH_MSG_SUCCESS) { +- GC_err_printf2("mach_msg failed with %d %s\n", +- (int)r,mach_error_string(r)); +- ABORT("mach_msg failed"); +- } +- +- switch(id) { +-#if defined(THREADS) +- case ID_STOP: +- if(GC_mprotect_state != GC_MP_NORMAL) +- ABORT("Called mprotect_stop when state wasn't normal"); +- GC_mprotect_state = GC_MP_DISCARDING; +- break; +- case ID_RESUME: +- if(GC_mprotect_state != GC_MP_STOPPED) +- ABORT("Called mprotect_resume when state wasn't stopped"); +- GC_mprotect_state = GC_MP_NORMAL; +- GC_mprotect_thread_reply(); +- break; +-#endif /* THREADS */ +- default: +- /* Handle the message (calls catch_exception_raise) */ +- if(!exc_server(&msg.head,&reply.head)) +- ABORT("exc_server failed"); +- /* Send the reply */ +- r = mach_msg( +- &reply.head, +- MACH_SEND_MSG, +- reply.head.msgh_size, +- 0, +- MACH_PORT_NULL, +- MACH_MSG_TIMEOUT_NONE, +- MACH_PORT_NULL); +- if(r != MACH_MSG_SUCCESS) { +- /* This will fail if the thread dies, but the thread shouldn't +- die... */ +- #ifdef BROKEN_EXCEPTION_HANDLING +- GC_err_printf2( +- "mach_msg failed with %d %s while sending exc reply\n", +- (int)r,mach_error_string(r)); +- #else +- ABORT("mach_msg failed while sending exception reply"); +- #endif +- } +- } /* switch */ +- } /* for(;;) */ +- /* NOT REACHED */ +- return NULL; +-} +- +-/* All this SIGBUS code shouldn't be necessary. All protection faults should +- be going throught the mach exception handler. However, it seems a SIGBUS is +- occasionally sent for some unknown reason. Even more odd, it seems to be +- meaningless and safe to ignore. */ +-#ifdef BROKEN_EXCEPTION_HANDLING +- +-typedef void (* SIG_PF)(); +-static SIG_PF GC_old_bus_handler; +- +-/* Updates to this aren't atomic, but the SIGBUSs seem pretty rare. +- Even if this doesn't get updated property, it isn't really a problem */ +-static int GC_sigbus_count; +- +-static void GC_darwin_sigbus(int num,siginfo_t *sip,void *context) { +- if(num != SIGBUS) ABORT("Got a non-sigbus signal in the sigbus handler"); +- +- /* Ugh... some seem safe to ignore, but too many in a row probably means +- trouble. GC_sigbus_count is reset for each mach exception that is +- handled */ +- if(GC_sigbus_count >= 8) { +- ABORT("Got more than 8 SIGBUSs in a row!"); +- } else { +- GC_sigbus_count++; +- GC_err_printf0("GC: WARNING: Ignoring SIGBUS.\n"); +- } +-} +-#endif /* BROKEN_EXCEPTION_HANDLING */ +- +-void GC_dirty_init() { +- kern_return_t r; +- mach_port_t me; +- pthread_t thread; +- pthread_attr_t attr; +- exception_mask_t mask; +- +-# ifdef PRINTSTATS +- GC_printf0("Inititalizing mach/darwin mprotect virtual dirty bit " +- "implementation\n"); +-# endif +-# ifdef BROKEN_EXCEPTION_HANDLING +- GC_err_printf0("GC: WARNING: Enabling workarounds for various darwin " +- "exception handling bugs.\n"); +-# endif +- GC_dirty_maintained = TRUE; +- if (GC_page_size % HBLKSIZE != 0) { +- GC_err_printf0("Page size not multiple of HBLKSIZE\n"); +- ABORT("Page size not multiple of HBLKSIZE"); +- } +- +- GC_task_self = me = mach_task_self(); +- +- r = mach_port_allocate(me,MACH_PORT_RIGHT_RECEIVE,&GC_ports.exception); +- if(r != KERN_SUCCESS) ABORT("mach_port_allocate failed (exception port)"); +- +- r = mach_port_insert_right(me,GC_ports.exception,GC_ports.exception, +- MACH_MSG_TYPE_MAKE_SEND); +- if(r != KERN_SUCCESS) +- ABORT("mach_port_insert_right failed (exception port)"); +- +- #if defined(THREADS) +- r = mach_port_allocate(me,MACH_PORT_RIGHT_RECEIVE,&GC_ports.reply); +- if(r != KERN_SUCCESS) ABORT("mach_port_allocate failed (reply port)"); +- #endif +- +- /* The exceptions we want to catch */ +- mask = EXC_MASK_BAD_ACCESS; +- +- r = task_get_exception_ports( +- me, +- mask, +- GC_old_exc_ports.masks, +- &GC_old_exc_ports.count, +- GC_old_exc_ports.ports, +- GC_old_exc_ports.behaviors, +- GC_old_exc_ports.flavors +- ); +- if(r != KERN_SUCCESS) ABORT("task_get_exception_ports failed"); +- +- r = task_set_exception_ports( +- me, +- mask, +- GC_ports.exception, +- EXCEPTION_DEFAULT, +- MACHINE_THREAD_STATE +- ); +- if(r != KERN_SUCCESS) ABORT("task_set_exception_ports failed"); +- +- if(pthread_attr_init(&attr) != 0) ABORT("pthread_attr_init failed"); +- if(pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED) != 0) +- ABORT("pthread_attr_setdetachedstate failed"); +- +-# undef pthread_create +- /* This will call the real pthread function, not our wrapper */ +- if(pthread_create(&thread,&attr,GC_mprotect_thread,NULL) != 0) +- ABORT("pthread_create failed"); +- pthread_attr_destroy(&attr); +- +- /* Setup the sigbus handler for ignoring the meaningless SIGBUSs */ +- #ifdef BROKEN_EXCEPTION_HANDLING +- { +- struct sigaction sa, oldsa; +- sa.sa_handler = (SIG_PF)GC_darwin_sigbus; +- sigemptyset(&sa.sa_mask); +- sa.sa_flags = SA_RESTART|SA_SIGINFO; +- if(sigaction(SIGBUS,&sa,&oldsa) < 0) ABORT("sigaction"); +- GC_old_bus_handler = (SIG_PF)oldsa.sa_handler; +- if (GC_old_bus_handler != SIG_DFL) { +-# ifdef PRINTSTATS +- GC_err_printf0("Replaced other SIGBUS handler\n"); +-# endif +- } +- } +- #endif /* BROKEN_EXCEPTION_HANDLING */ +-} +- +-/* The source code for Apple's GDB was used as a reference for the exception +- forwarding code. This code is similar to be GDB code only because there is +- only one way to do it. */ +-static kern_return_t GC_forward_exception( +- mach_port_t thread, +- mach_port_t task, +- exception_type_t exception, +- exception_data_t data, +- mach_msg_type_number_t data_count +-) { +- int i; +- kern_return_t r; +- mach_port_t port; +- exception_behavior_t behavior; +- thread_state_flavor_t flavor; +- +- thread_state_data_t thread_state; +- mach_msg_type_number_t thread_state_count = THREAD_STATE_MAX; +- +- for(i=0;i 0 ? code[0] : -1, +- code_count > 1 ? code[1] : -1); +- #endif +- return FWD(); +- } +- +- r = thread_get_state(thread,flavor, +- (natural_t*)&exc_state,&exc_state_count); +- if(r != KERN_SUCCESS) { +- /* The thread is supposed to be suspended while the exception handler +- is called. This shouldn't fail. */ +- #ifdef BROKEN_EXCEPTION_HANDLING +- GC_err_printf0("thread_get_state failed in " +- "catch_exception_raise\n"); +- return KERN_SUCCESS; +- #else +- ABORT("thread_get_state failed in catch_exception_raise"); +- #endif +- } +- +- /* This is the address that caused the fault */ +- addr = (char*) exc_state.dar; +- +- if((HDR(addr)) == 0) { +- /* Ugh... just like the SIGBUS problem above, it seems we get a bogus +- KERN_PROTECTION_FAILURE every once and a while. We wait till we get +- a bunch in a row before doing anything about it. If a "real" fault +- ever occurres it'll just keep faulting over and over and we'll hit +- the limit pretty quickly. */ +- #ifdef BROKEN_EXCEPTION_HANDLING +- static char *last_fault; +- static int last_fault_count; +- +- if(addr != last_fault) { +- last_fault = addr; +- last_fault_count = 0; +- } +- if(++last_fault_count < 32) { +- if(last_fault_count == 1) +- GC_err_printf1( +- "GC: WARNING: Ignoring KERN_PROTECTION_FAILURE at %p\n", +- addr); +- return KERN_SUCCESS; +- } +- +- GC_err_printf1("Unexpected KERN_PROTECTION_FAILURE at %p\n",addr); +- /* Can't pass it along to the signal handler because that is +- ignoring SIGBUS signals. We also shouldn't call ABORT here as +- signals don't always work too well from the exception handler. */ +- GC_err_printf0("Aborting\n"); +- exit(EXIT_FAILURE); +- #else /* BROKEN_EXCEPTION_HANDLING */ +- /* Pass it along to the next exception handler +- (which should call SIGBUS/SIGSEGV) */ +- return FWD(); +- #endif /* !BROKEN_EXCEPTION_HANDLING */ +- } +- +- #ifdef BROKEN_EXCEPTION_HANDLING +- /* Reset the number of consecutive SIGBUSs */ +- GC_sigbus_count = 0; +- #endif +- +- if(GC_mprotect_state == GC_MP_NORMAL) { /* common case */ +- h = (struct hblk*)((word)addr & ~(GC_page_size-1)); +- UNPROTECT(h, GC_page_size); +- for (i = 0; i < divHBLKSZ(GC_page_size); i++) { +- register int index = PHT_HASH(h+i); +- async_set_pht_entry_from_index(GC_dirty_pages, index); +- } +- } else if(GC_mprotect_state == GC_MP_DISCARDING) { +- /* Lie to the thread for now. No sense UNPROTECT()ing the memory +- when we're just going to PROTECT() it again later. The thread +- will just fault again once it resumes */ +- } else { +- /* Shouldn't happen, i don't think */ +- GC_printf0("KERN_PROTECTION_FAILURE while world is stopped\n"); +- return FWD(); +- } +- return KERN_SUCCESS; +-} +-#undef FWD +- +-/* These should never be called, but just in case... */ +-kern_return_t catch_exception_raise_state(mach_port_name_t exception_port, +- int exception, exception_data_t code, mach_msg_type_number_t codeCnt, +- int flavor, thread_state_t old_state, int old_stateCnt, +- thread_state_t new_state, int new_stateCnt) +-{ +- ABORT("catch_exception_raise_state"); +- return(KERN_INVALID_ARGUMENT); +-} +-kern_return_t catch_exception_raise_state_identity( +- mach_port_name_t exception_port, mach_port_t thread, mach_port_t task, +- int exception, exception_data_t code, mach_msg_type_number_t codeCnt, +- int flavor, thread_state_t old_state, int old_stateCnt, +- thread_state_t new_state, int new_stateCnt) +-{ +- ABORT("catch_exception_raise_state_identity"); +- return(KERN_INVALID_ARGUMENT); +-} +- +- +-#endif /* DARWIN && MPROTECT_VDB */ +- + # ifndef HAVE_INCREMENTAL_PROTECTION_NEEDS + int GC_incremental_protection_needs() + { +@@ -3878,20 +3105,19 @@ + # endif + #endif /* SPARC */ + +-#ifdef NEED_CALLINFO ++#ifdef SAVE_CALL_CHAIN + /* Fill in the pc and argument information for up to NFRAMES of my */ + /* callers. Ignore my frame and my callers frame. */ + + #ifdef LINUX +-# include ++# include ++# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2 ++# define HAVE_BUILTIN_BACKTRACE ++# endif + #endif + +-#endif /* NEED_CALLINFO */ +- +-#ifdef SAVE_CALL_CHAIN +- + #if NARGS == 0 && NFRAMES % 2 == 0 /* No padding */ \ +- && defined(GC_HAVE_BUILTIN_BACKTRACE) ++ && defined(HAVE_BUILTIN_BACKTRACE) + + #include + +@@ -3962,139 +3188,31 @@ + + #endif /* SAVE_CALL_CHAIN */ + +-#ifdef NEED_CALLINFO ++#if defined(LINUX) && defined(__ELF__) && \ ++ (!defined(SMALL_CONFIG) || defined(USE_PROC_FOR_LIBRARIES)) ++#ifdef GC_USE_LD_WRAP ++# define READ __real_read ++#else ++# define READ read ++#endif + +-/* Print info to stderr. We do NOT hold the allocation lock */ +-void GC_print_callers (info) +-struct callinfo info[NFRAMES]; +-{ +- register int i; +- static int reentry_count = 0; +- GC_bool stop = FALSE; + +- LOCK(); +- ++reentry_count; +- UNLOCK(); ++/* Repeatedly perform a read call until the buffer is filled or */ ++/* we encounter EOF. */ ++ssize_t GC_repeat_read(int fd, char *buf, size_t count) ++{ ++ ssize_t num_read = 0; ++ ssize_t result; + +-# if NFRAMES == 1 +- GC_err_printf0("\tCaller at allocation:\n"); +-# else +- GC_err_printf0("\tCall chain at allocation:\n"); +-# endif +- for (i = 0; i < NFRAMES && !stop ; i++) { +- if (info[i].ci_pc == 0) break; +-# if NARGS > 0 +- { +- int j; +- +- GC_err_printf0("\t\targs: "); +- for (j = 0; j < NARGS; j++) { +- if (j != 0) GC_err_printf0(", "); +- GC_err_printf2("%d (0x%X)", ~(info[i].ci_arg[j]), +- ~(info[i].ci_arg[j])); +- } +- GC_err_printf0("\n"); +- } +-# endif +- if (reentry_count > 1) { +- /* We were called during an allocation during */ +- /* a previous GC_print_callers call; punt. */ +- GC_err_printf1("\t\t##PC##= 0x%lx\n", info[i].ci_pc); +- continue; +- } +- { +-# ifdef LINUX +- FILE *pipe; +-# endif +-# if defined(GC_HAVE_BUILTIN_BACKTRACE) +- char **sym_name = +- backtrace_symbols((void **)(&(info[i].ci_pc)), 1); +- char *name = sym_name[0]; +-# else +- char buf[40]; +- char *name = buf; +- sprintf(buf, "##PC##= 0x%lx", info[i].ci_pc); +-# endif +-# if defined(LINUX) && !defined(SMALL_CONFIG) +- /* Try for a line number. */ +- { +-# define EXE_SZ 100 +- static char exe_name[EXE_SZ]; +-# define CMD_SZ 200 +- char cmd_buf[CMD_SZ]; +-# define RESULT_SZ 200 +- static char result_buf[RESULT_SZ]; +- size_t result_len; +- static GC_bool found_exe_name = FALSE; +- static GC_bool will_fail = FALSE; +- int ret_code; +- /* Try to get it via a hairy and expensive scheme. */ +- /* First we get the name of the executable: */ +- if (will_fail) goto out; +- if (!found_exe_name) { +- ret_code = readlink("/proc/self/exe", exe_name, EXE_SZ); +- if (ret_code < 0 || ret_code >= EXE_SZ +- || exe_name[0] != '/') { +- will_fail = TRUE; /* Dont try again. */ +- goto out; +- } +- exe_name[ret_code] = '\0'; +- found_exe_name = TRUE; +- } +- /* Then we use popen to start addr2line -e */ +- /* There are faster ways to do this, but hopefully this */ +- /* isn't time critical. */ +- sprintf(cmd_buf, "/usr/bin/addr2line -f -e %s 0x%lx", exe_name, +- (unsigned long)info[i].ci_pc); +- pipe = popen(cmd_buf, "r"); +- if (pipe == NULL +- || (result_len = fread(result_buf, 1, RESULT_SZ - 1, pipe)) +- == 0) { +- if (pipe != NULL) pclose(pipe); +- will_fail = TRUE; +- goto out; +- } +- if (result_buf[result_len - 1] == '\n') --result_len; +- result_buf[result_len] = 0; +- if (result_buf[0] == '?' +- || result_buf[result_len-2] == ':' +- && result_buf[result_len-1] == '0') { +- pclose(pipe); +- goto out; +- } +- /* Get rid of embedded newline, if any. Test for "main" */ +- { +- char * nl = strchr(result_buf, '\n'); +- if (nl != NULL && nl < result_buf + result_len) { +- *nl = ':'; +- } +- if (strncmp(result_buf, "main", nl - result_buf) == 0) { +- stop = TRUE; +- } +- } +- if (result_len < RESULT_SZ - 25) { +- /* Add in hex address */ +- sprintf(result_buf + result_len, " [0x%lx]", +- (unsigned long)info[i].ci_pc); +- } +- name = result_buf; +- pclose(pipe); +- out:; +- } +-# endif /* LINUX */ +- GC_err_printf1("\t\t%s\n", name); +-# if defined(GC_HAVE_BUILTIN_BACKTRACE) +- free(sym_name); /* May call GC_free; that's OK */ +-# endif +- } ++ while (num_read < count) { ++ result = READ(fd, buf + num_read, count - num_read); ++ if (result < 0) return result; ++ if (result == 0) break; ++ num_read += result; + } +- LOCK(); +- --reentry_count; +- UNLOCK(); ++ return num_read; + } +- +-#endif /* NEED_CALLINFO */ +- ++#endif /* LINUX && ... */ + + + #if defined(LINUX) && defined(__ELF__) && !defined(SMALL_CONFIG) +@@ -4102,16 +3220,20 @@ + /* Dump /proc/self/maps to GC_stderr, to enable looking up names for + addresses in FIND_LEAK output. */ + +-static word dump_maps(char *maps) +-{ +- GC_err_write(maps, strlen(maps)); +- return 1; +-} +- + void GC_print_address_map() + { ++ int f; ++ int result; ++ char maps_temp[32768]; + GC_err_printf0("---------- Begin address map ----------\n"); +- GC_apply_to_maps(dump_maps); ++ f = open("/proc/self/maps", O_RDONLY); ++ if (-1 == f) ABORT("Couldn't open /proc/self/maps"); ++ do { ++ result = GC_repeat_read(f, maps_temp, sizeof(maps_temp)); ++ if (result <= 0) ABORT("Couldn't read /proc/self/maps"); ++ GC_err_write(maps_temp, result); ++ } while (result == sizeof(maps_temp)); ++ + GC_err_printf0("---------- End address map ----------\n"); + } + +diff -Nur ../boehm-gc/powerpc_darwin_mach_dep.s boehm-gc/powerpc_darwin_mach_dep.s +--- ../boehm-gc/powerpc_darwin_mach_dep.s Mon May 26 12:48:52 2003 ++++ boehm-gc/powerpc_darwin_mach_dep.s Wed Dec 31 16:00:00 1969 +@@ -1,84 +0,0 @@ +- +-; GC_push_regs function. Under some optimization levels GCC will clobber +-; some of the non-volatile registers before we get a chance to save them +-; therefore, this can't be inline asm. +- +-.text +- .align 2 +- .globl _GC_push_regs +-_GC_push_regs: +- +- ; Prolog +- mflr r0 +- stw r0,8(r1) +- stwu r1,-80(r1) +- +- ; Push r13-r31 +- mr r3,r13 +- bl L_GC_push_one$stub +- mr r3,r14 +- bl L_GC_push_one$stub +- mr r3,r15 +- bl L_GC_push_one$stub +- mr r3,r16 +- bl L_GC_push_one$stub +- mr r3,r17 +- bl L_GC_push_one$stub +- mr r3,r18 +- bl L_GC_push_one$stub +- mr r3,r19 +- bl L_GC_push_one$stub +- mr r3,r20 +- bl L_GC_push_one$stub +- mr r3,r21 +- bl L_GC_push_one$stub +- mr r3,r22 +- bl L_GC_push_one$stub +- mr r3,r23 +- bl L_GC_push_one$stub +- mr r3,r24 +- bl L_GC_push_one$stub +- mr r3,r25 +- bl L_GC_push_one$stub +- mr r3,r26 +- bl L_GC_push_one$stub +- mr r3,r27 +- bl L_GC_push_one$stub +- mr r3,r28 +- bl L_GC_push_one$stub +- mr r3,r29 +- bl L_GC_push_one$stub +- mr r3,r30 +- bl L_GC_push_one$stub +- mr r3,r31 +- bl L_GC_push_one$stub +- +- ; +- lwz r0,88(r1) +- addi r1,r1,80 +- mtlr r0 +- +- ; Return +- blr +- +-; PIC stuff, generated by GCC +- +-.data +-.picsymbol_stub +-L_GC_push_one$stub: +- .indirect_symbol _GC_push_one +- mflr r0 +- bcl 20,31,L0$_GC_push_one +-L0$_GC_push_one: +- mflr r11 +- addis r11,r11,ha16(L_GC_push_one$lazy_ptr-L0$_GC_push_one) +- mtlr r0 +- lwz r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11) +- mtctr r12 +- addi r11,r11,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one) +- bctr +-.data +-.lazy_symbol_pointer +-L_GC_push_one$lazy_ptr: +- .indirect_symbol _GC_push_one +- .long dyld_stub_binding_helper +diff -Nur ../boehm-gc/pthread_stop_world.c boehm-gc/pthread_stop_world.c +--- ../boehm-gc/pthread_stop_world.c Mon May 26 12:48:52 2003 ++++ boehm-gc/pthread_stop_world.c Wed Dec 31 16:00:00 1969 +@@ -1,445 +0,0 @@ +-#include "private/pthread_support.h" +- +-#if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \ +- && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS) \ +- && !defined(GC_DARWIN_THREADS) +- +-#include +-#include +-#include +-#include +- +-#if DEBUG_THREADS +- +-#ifndef NSIG +-# if defined(MAXSIG) +-# define NSIG (MAXSIG+1) +-# elif defined(_NSIG) +-# define NSIG _NSIG +-# elif defined(__SIGRTMAX) +-# define NSIG (__SIGRTMAX+1) +-# else +- --> please fix it +-# endif +-#endif +- +-void GC_print_sig_mask() +-{ +- sigset_t blocked; +- int i; +- +- if (pthread_sigmask(SIG_BLOCK, NULL, &blocked) != 0) +- ABORT("pthread_sigmask"); +- GC_printf0("Blocked: "); +- for (i = 1; i < NSIG; i++) { +- if (sigismember(&blocked, i)) { GC_printf1("%ld ",(long) i); } +- } +- GC_printf0("\n"); +-} +- +-#endif +- +-word GC_stop_count; /* Incremented at the beginning of GC_stop_world. */ +- +-#ifdef GC_OSF1_THREADS +- GC_bool GC_retry_signals = TRUE; +-#else +- GC_bool GC_retry_signals = FALSE; +-#endif +- +-/* +- * We use signals to stop threads during GC. +- * +- * Suspended threads wait in signal handler for SIG_THR_RESTART. +- * That's more portable than semaphores or condition variables. +- * (We do use sem_post from a signal handler, but that should be portable.) +- * +- * The thread suspension signal SIG_SUSPEND is now defined in gc_priv.h. +- * Note that we can't just stop a thread; we need it to save its stack +- * pointer(s) and acknowledge. +- */ +- +-#ifndef SIG_THR_RESTART +-# if defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) +-# ifdef _SIGRTMIN +-# define SIG_THR_RESTART _SIGRTMIN + 5 +-# else +-# define SIG_THR_RESTART SIGRTMIN + 5 +-# endif +-# else +-# define SIG_THR_RESTART SIGXCPU +-# endif +-#endif +- +-sem_t GC_suspend_ack_sem; +- +-void GC_suspend_handler(int sig) +-{ +- int dummy; +- pthread_t my_thread = pthread_self(); +- GC_thread me; +- sigset_t mask; +-# ifdef PARALLEL_MARK +- word my_mark_no = GC_mark_no; +- /* Marker can't proceed until we acknowledge. Thus this is */ +- /* guaranteed to be the mark_no correspending to our */ +- /* suspension, i.e. the marker can't have incremented it yet. */ +-# endif +- word my_stop_count = GC_stop_count; +- +- if (sig != SIG_SUSPEND) ABORT("Bad signal in suspend_handler"); +- +-#if DEBUG_THREADS +- GC_printf1("Suspending 0x%lx\n", my_thread); +-#endif +- +- me = GC_lookup_thread(my_thread); +- /* The lookup here is safe, since I'm doing this on behalf */ +- /* of a thread which holds the allocation lock in order */ +- /* to stop the world. Thus concurrent modification of the */ +- /* data structure is impossible. */ +- if (me -> stop_info.last_stop_count == my_stop_count) { +- /* Duplicate signal. OK if we are retrying. */ +- if (!GC_retry_signals) { +- WARN("Duplicate suspend signal in thread %lx\n", +- pthread_self()); +- } +- return; +- } +-# ifdef SPARC +- me -> stop_info.stack_ptr = (ptr_t)GC_save_regs_in_stack(); +-# else +- me -> stop_info.stack_ptr = (ptr_t)(&dummy); +-# endif +-# ifdef IA64 +- me -> backing_store_ptr = (ptr_t)GC_save_regs_in_stack(); +-# endif +- +- /* Tell the thread that wants to stop the world that this */ +- /* thread has been stopped. Note that sem_post() is */ +- /* the only async-signal-safe primitive in LinuxThreads. */ +- sem_post(&GC_suspend_ack_sem); +- me -> stop_info.last_stop_count = my_stop_count; +- +- /* Wait until that thread tells us to restart by sending */ +- /* this thread a SIG_THR_RESTART signal. */ +- /* SIG_THR_RESTART should be masked at this point. Thus there */ +- /* is no race. */ +- if (sigfillset(&mask) != 0) ABORT("sigfillset() failed"); +- if (sigdelset(&mask, SIG_THR_RESTART) != 0) ABORT("sigdelset() failed"); +-# ifdef NO_SIGNALS +- if (sigdelset(&mask, SIGINT) != 0) ABORT("sigdelset() failed"); +- if (sigdelset(&mask, SIGQUIT) != 0) ABORT("sigdelset() failed"); +- if (sigdelset(&mask, SIGTERM) != 0) ABORT("sigdelset() failed"); +- if (sigdelset(&mask, SIGABRT) != 0) ABORT("sigdelset() failed"); +-# endif +- do { +- me->stop_info.signal = 0; +- sigsuspend(&mask); /* Wait for signal */ +- } while (me->stop_info.signal != SIG_THR_RESTART); +- /* If the RESTART signal gets lost, we can still lose. That should be */ +- /* less likely than losing the SUSPEND signal, since we don't do much */ +- /* between the sem_post and sigsuspend. */ +- /* We'd need more handshaking to work around that, since we don't want */ +- /* to accidentally leave a RESTART signal pending, thus causing us to */ +- /* continue prematurely in a future round. */ +- +-#if DEBUG_THREADS +- GC_printf1("Continuing 0x%lx\n", my_thread); +-#endif +-} +- +-void GC_restart_handler(int sig) +-{ +- pthread_t my_thread = pthread_self(); +- GC_thread me; +- +- if (sig != SIG_THR_RESTART) ABORT("Bad signal in suspend_handler"); +- +- /* Let the GC_suspend_handler() know that we got a SIG_THR_RESTART. */ +- /* The lookup here is safe, since I'm doing this on behalf */ +- /* of a thread which holds the allocation lock in order */ +- /* to stop the world. Thus concurrent modification of the */ +- /* data structure is impossible. */ +- me = GC_lookup_thread(my_thread); +- me->stop_info.signal = SIG_THR_RESTART; +- +- /* +- ** Note: even if we didn't do anything useful here, +- ** it would still be necessary to have a signal handler, +- ** rather than ignoring the signals, otherwise +- ** the signals will not be delivered at all, and +- ** will thus not interrupt the sigsuspend() above. +- */ +- +-#if DEBUG_THREADS +- GC_printf1("In GC_restart_handler for 0x%lx\n", pthread_self()); +-#endif +-} +- +-# ifdef IA64 +-# define IF_IA64(x) x +-# else +-# define IF_IA64(x) +-# endif +-/* We hold allocation lock. Should do exactly the right thing if the */ +-/* world is stopped. Should not fail if it isn't. */ +-void GC_push_all_stacks() +-{ +- int i; +- GC_thread p; +- ptr_t lo, hi; +- /* On IA64, we also need to scan the register backing store. */ +- IF_IA64(ptr_t bs_lo; ptr_t bs_hi;) +- pthread_t me = pthread_self(); +- +- if (!GC_thr_initialized) GC_thr_init(); +- #if DEBUG_THREADS +- GC_printf1("Pushing stacks from thread 0x%lx\n", (unsigned long) me); +- #endif +- for (i = 0; i < THREAD_TABLE_SZ; i++) { +- for (p = GC_threads[i]; p != 0; p = p -> next) { +- if (p -> flags & FINISHED) continue; +- if (pthread_equal(p -> id, me)) { +-# ifdef SPARC +- lo = (ptr_t)GC_save_regs_in_stack(); +-# else +- lo = GC_approx_sp(); +-# endif +- IF_IA64(bs_hi = (ptr_t)GC_save_regs_in_stack();) +- } else { +- lo = p -> stop_info.stack_ptr; +- IF_IA64(bs_hi = p -> backing_store_ptr;) +- } +- if ((p -> flags & MAIN_THREAD) == 0) { +- hi = p -> stack_end; +- IF_IA64(bs_lo = p -> backing_store_end); +- } else { +- /* The original stack. */ +- hi = GC_stackbottom; +- IF_IA64(bs_lo = BACKING_STORE_BASE;) +- } +- #if DEBUG_THREADS +- GC_printf3("Stack for thread 0x%lx = [%lx,%lx)\n", +- (unsigned long) p -> id, +- (unsigned long) lo, (unsigned long) hi); +- #endif +- if (0 == lo) ABORT("GC_push_all_stacks: sp not set!\n"); +-# ifdef STACK_GROWS_UP +- /* We got them backwards! */ +- GC_push_all_stack(hi, lo); +-# else +- GC_push_all_stack(lo, hi); +-# endif +-# ifdef IA64 +- if (pthread_equal(p -> id, me)) { +- GC_push_all_eager(bs_lo, bs_hi); +- } else { +- GC_push_all_stack(bs_lo, bs_hi); +- } +-# endif +- } +- } +-} +- +-/* There seems to be a very rare thread stopping problem. To help us */ +-/* debug that, we save the ids of the stopping thread. */ +-pthread_t GC_stopping_thread; +-int GC_stopping_pid; +- +-/* We hold the allocation lock. Suspend all threads that might */ +-/* still be running. Return the number of suspend signals that */ +-/* were sent. */ +-int GC_suspend_all() +-{ +- int n_live_threads = 0; +- int i; +- GC_thread p; +- int result; +- pthread_t my_thread = pthread_self(); +- +- GC_stopping_thread = my_thread; /* debugging only. */ +- GC_stopping_pid = getpid(); /* debugging only. */ +- for (i = 0; i < THREAD_TABLE_SZ; i++) { +- for (p = GC_threads[i]; p != 0; p = p -> next) { +- if (p -> id != my_thread) { +- if (p -> flags & FINISHED) continue; +- if (p -> stop_info.last_stop_count == GC_stop_count) continue; +- if (p -> thread_blocked) /* Will wait */ continue; +- n_live_threads++; +- #if DEBUG_THREADS +- GC_printf1("Sending suspend signal to 0x%lx\n", p -> id); +- #endif +- +- result = pthread_kill(p -> id, SIG_SUSPEND); +- switch(result) { +- case ESRCH: +- /* Not really there anymore. Possible? */ +- n_live_threads--; +- break; +- case 0: +- break; +- default: +- ABORT("pthread_kill failed"); +- } +- } +- } +- } +- return n_live_threads; +-} +- +-/* Caller holds allocation lock. */ +-void GC_stop_world() +-{ +- int i; +- int n_live_threads; +- int code; +- +- #if DEBUG_THREADS +- GC_printf1("Stopping the world from 0x%lx\n", pthread_self()); +- #endif +- +- /* Make sure all free list construction has stopped before we start. */ +- /* No new construction can start, since free list construction is */ +- /* required to acquire and release the GC lock before it starts, */ +- /* and we have the lock. */ +-# ifdef PARALLEL_MARK +- GC_acquire_mark_lock(); +- GC_ASSERT(GC_fl_builder_count == 0); +- /* We should have previously waited for it to become zero. */ +-# endif /* PARALLEL_MARK */ +- ++GC_stop_count; +- n_live_threads = GC_suspend_all(); +- +- if (GC_retry_signals) { +- unsigned long wait_usecs = 0; /* Total wait since retry. */ +-# define WAIT_UNIT 3000 +-# define RETRY_INTERVAL 100000 +- for (;;) { +- int ack_count; +- +- sem_getvalue(&GC_suspend_ack_sem, &ack_count); +- if (ack_count == n_live_threads) break; +- if (wait_usecs > RETRY_INTERVAL) { +- int newly_sent = GC_suspend_all(); +- +-# ifdef CONDPRINT +- if (GC_print_stats) { +- GC_printf1("Resent %ld signals after timeout\n", +- newly_sent); +- } +-# endif +- sem_getvalue(&GC_suspend_ack_sem, &ack_count); +- if (newly_sent < n_live_threads - ack_count) { +- WARN("Lost some threads during GC_stop_world?!\n",0); +- n_live_threads = ack_count + newly_sent; +- } +- wait_usecs = 0; +- } +- usleep(WAIT_UNIT); +- wait_usecs += WAIT_UNIT; +- } +- } +- for (i = 0; i < n_live_threads; i++) { +- if (0 != (code = sem_wait(&GC_suspend_ack_sem))) { +- GC_err_printf1("Sem_wait returned %ld\n", (unsigned long)code); +- ABORT("sem_wait for handler failed"); +- } +- } +-# ifdef PARALLEL_MARK +- GC_release_mark_lock(); +-# endif +- #if DEBUG_THREADS +- GC_printf1("World stopped from 0x%lx\n", pthread_self()); +- #endif +- GC_stopping_thread = 0; /* debugging only */ +-} +- +-/* Caller holds allocation lock, and has held it continuously since */ +-/* the world stopped. */ +-void GC_start_world() +-{ +- pthread_t my_thread = pthread_self(); +- register int i; +- register GC_thread p; +- register int n_live_threads = 0; +- register int result; +- +-# if DEBUG_THREADS +- GC_printf0("World starting\n"); +-# endif +- +- for (i = 0; i < THREAD_TABLE_SZ; i++) { +- for (p = GC_threads[i]; p != 0; p = p -> next) { +- if (p -> id != my_thread) { +- if (p -> flags & FINISHED) continue; +- if (p -> thread_blocked) continue; +- n_live_threads++; +- #if DEBUG_THREADS +- GC_printf1("Sending restart signal to 0x%lx\n", p -> id); +- #endif +- +- result = pthread_kill(p -> id, SIG_THR_RESTART); +- switch(result) { +- case ESRCH: +- /* Not really there anymore. Possible? */ +- n_live_threads--; +- break; +- case 0: +- break; +- default: +- ABORT("pthread_kill failed"); +- } +- } +- } +- } +- #if DEBUG_THREADS +- GC_printf0("World started\n"); +- #endif +-} +- +-void GC_stop_init() { +- struct sigaction act; +- +- if (sem_init(&GC_suspend_ack_sem, 0, 0) != 0) +- ABORT("sem_init failed"); +- +- act.sa_flags = SA_RESTART; +- if (sigfillset(&act.sa_mask) != 0) { +- ABORT("sigfillset() failed"); +- } +-# ifdef NO_SIGNALS +- if (sigdelset(&act.sa_mask, SIGINT) != 0 +- || sigdelset(&act.sa_mask, SIGQUIT != 0) +- || sigdelset(&act.sa_mask, SIGABRT != 0) +- || sigdelset(&act.sa_mask, SIGTERM != 0)) { +- ABORT("sigdelset() failed"); +- } +-# endif +- +- /* SIG_THR_RESTART is unmasked by the handler when necessary. */ +- act.sa_handler = GC_suspend_handler; +- if (sigaction(SIG_SUSPEND, &act, NULL) != 0) { +- ABORT("Cannot set SIG_SUSPEND handler"); +- } +- +- act.sa_handler = GC_restart_handler; +- if (sigaction(SIG_THR_RESTART, &act, NULL) != 0) { +- ABORT("Cannot set SIG_THR_RESTART handler"); +- } +- +- /* Check for GC_RETRY_SIGNALS. */ +- if (0 != GETENV("GC_RETRY_SIGNALS")) { +- GC_retry_signals = TRUE; +- } +- if (0 != GETENV("GC_NO_RETRY_SIGNALS")) { +- GC_retry_signals = FALSE; +- } +-# ifdef CONDPRINT +- if (GC_print_stats && GC_retry_signals) { +- GC_printf0("Will retry suspend signal if necessary.\n"); +- } +-# endif +-} +- +-#endif +diff -Nur ../boehm-gc/pthread_support.c boehm-gc/pthread_support.c +--- ../boehm-gc/pthread_support.c Mon May 26 12:48:52 2003 ++++ boehm-gc/pthread_support.c Wed Dec 31 16:00:00 1969 +@@ -1,1568 +0,0 @@ +-/* +- * Copyright (c) 1994 by Xerox Corporation. All rights reserved. +- * Copyright (c) 1996 by Silicon Graphics. All rights reserved. +- * Copyright (c) 1998 by Fergus Henderson. All rights reserved. +- * Copyright (c) 2000-2001 by Hewlett-Packard Company. All rights reserved. +- * +- * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED +- * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. +- * +- * Permission is hereby granted to use or copy this program +- * for any purpose, provided the above notices are retained on all copies. +- * Permission to modify the code and to distribute modified code is granted, +- * provided the above notices are retained, and a notice that the code was +- * modified is included with the above copyright notice. +- */ +-/* +- * Support code for LinuxThreads, the clone()-based kernel +- * thread package for Linux which is included in libc6. +- * +- * This code relies on implementation details of LinuxThreads, +- * (i.e. properties not guaranteed by the Pthread standard), +- * though this version now does less of that than the other Pthreads +- * support code. +- * +- * Note that there is a lot of code duplication between linux_threads.c +- * and thread support for some of the other Posix platforms; any changes +- * made here may need to be reflected there too. +- */ +- /* DG/UX ix86 support */ +-/* +- * Linux_threads.c now also includes some code to support HPUX and +- * OSF1 (Compaq Tru64 Unix, really). The OSF1 support is not yet +- * functional. The OSF1 code is based on Eric Benson's +- * patch, though that was originally against hpux_irix_threads. The code +- * here is completely untested. With 0.0000001% probability, it might +- * actually work. +- * +- * Eric also suggested an alternate basis for a lock implementation in +- * his code: +- * + #elif defined(OSF1) +- * + unsigned long GC_allocate_lock = 0; +- * + msemaphore GC_allocate_semaphore; +- * + # define GC_TRY_LOCK() \ +- * + ((msem_lock(&GC_allocate_semaphore, MSEM_IF_NOWAIT) == 0) \ +- * + ? (GC_allocate_lock = 1) \ +- * + : 0) +- * + # define GC_LOCK_TAKEN GC_allocate_lock +- */ +- +-/*#define DEBUG_THREADS 1*/ +-/*#define GC_ASSERTIONS*/ +- +-# include "private/pthread_support.h" +- +-# if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \ +- && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS) +- +-# if defined(GC_HPUX_THREADS) && !defined(USE_PTHREAD_SPECIFIC) \ +- && !defined(USE_HPUX_TLS) +-# define USE_HPUX_TLS +-# endif +- +-# if (defined(GC_DGUX386_THREADS) || defined(GC_OSF1_THREADS) || \ +- defined(GC_DARWIN_THREADS)) && !defined(USE_PTHREAD_SPECIFIC) +-# define USE_PTHREAD_SPECIFIC +-# endif +- +-# if defined(GC_DGUX386_THREADS) && !defined(_POSIX4A_DRAFT10_SOURCE) +-# define _POSIX4A_DRAFT10_SOURCE 1 +-# endif +- +-# if defined(GC_DGUX386_THREADS) && !defined(_USING_POSIX4A_DRAFT10) +-# define _USING_POSIX4A_DRAFT10 1 +-# endif +- +-# ifdef THREAD_LOCAL_ALLOC +-# if !defined(USE_PTHREAD_SPECIFIC) && !defined(USE_HPUX_TLS) +-# include "private/specific.h" +-# endif +-# if defined(USE_PTHREAD_SPECIFIC) +-# define GC_getspecific pthread_getspecific +-# define GC_setspecific pthread_setspecific +-# define GC_key_create pthread_key_create +- typedef pthread_key_t GC_key_t; +-# endif +-# if defined(USE_HPUX_TLS) +-# define GC_getspecific(x) (x) +-# define GC_setspecific(key, v) ((key) = (v), 0) +-# define GC_key_create(key, d) 0 +- typedef void * GC_key_t; +-# endif +-# endif +-# include +-# include +-# include +-# include +-# include +-# include +-# include +-# include +-# include +-# include +-# include +- +-#if defined(GC_DARWIN_THREADS) +-# include "private/darwin_semaphore.h" +-#else +-# include +-#endif /* !GC_DARWIN_THREADS */ +- +-#if defined(GC_DARWIN_THREADS) +-# include +-#endif /* GC_DARWIN_THREADS */ +- +- +- +-#if defined(GC_DGUX386_THREADS) +-# include +-# include +- /* sem_t is an uint in DG/UX */ +- typedef unsigned int sem_t; +-#endif /* GC_DGUX386_THREADS */ +- +-#ifndef __GNUC__ +-# define __inline__ +-#endif +- +-#ifdef GC_USE_LD_WRAP +-# define WRAP_FUNC(f) __wrap_##f +-# define REAL_FUNC(f) __real_##f +-#else +-# define WRAP_FUNC(f) GC_##f +-# if !defined(GC_DGUX386_THREADS) +-# define REAL_FUNC(f) f +-# else /* GC_DGUX386_THREADS */ +-# define REAL_FUNC(f) __d10_##f +-# endif /* GC_DGUX386_THREADS */ +-# undef pthread_create +-# if !defined(GC_DARWIN_THREADS) +-# undef pthread_sigmask +-# endif +-# undef pthread_join +-# undef pthread_detach +-#endif +- +-void GC_thr_init(); +- +-static GC_bool parallel_initialized = FALSE; +- +-void GC_init_parallel(); +- +-# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL) +- +-/* We don't really support thread-local allocation with DBG_HDRS_ALL */ +- +-#ifdef USE_HPUX_TLS +- __thread +-#endif +-GC_key_t GC_thread_key; +- +-static GC_bool keys_initialized; +- +-/* Recover the contents of the freelist array fl into the global one gfl.*/ +-/* Note that the indexing scheme differs, in that gfl has finer size */ +-/* resolution, even if not all entries are used. */ +-/* We hold the allocator lock. */ +-static void return_freelists(ptr_t *fl, ptr_t *gfl) +-{ +- int i; +- ptr_t q, *qptr; +- size_t nwords; +- +- for (i = 1; i < NFREELISTS; ++i) { +- nwords = i * (GRANULARITY/sizeof(word)); +- qptr = fl + i; +- q = *qptr; +- if ((word)q >= HBLKSIZE) { +- if (gfl[nwords] == 0) { +- gfl[nwords] = q; +- } else { +- /* Concatenate: */ +- for (; (word)q >= HBLKSIZE; qptr = &(obj_link(q)), q = *qptr); +- GC_ASSERT(0 == q); +- *qptr = gfl[nwords]; +- gfl[nwords] = fl[i]; +- } +- } +- /* Clear fl[i], since the thread structure may hang around. */ +- /* Do it in a way that is likely to trap if we access it. */ +- fl[i] = (ptr_t)HBLKSIZE; +- } +-} +- +-/* We statically allocate a single "size 0" object. It is linked to */ +-/* itself, and is thus repeatedly reused for all size 0 allocation */ +-/* requests. (Size 0 gcj allocation requests are incorrect, and */ +-/* we arrange for those to fault asap.) */ +-static ptr_t size_zero_object = (ptr_t)(&size_zero_object); +- +-/* Each thread structure must be initialized. */ +-/* This call must be made from the new thread. */ +-/* Caller holds allocation lock. */ +-void GC_init_thread_local(GC_thread p) +-{ +- int i; +- +- if (!keys_initialized) { +- if (0 != GC_key_create(&GC_thread_key, 0)) { +- ABORT("Failed to create key for local allocator"); +- } +- keys_initialized = TRUE; +- } +- if (0 != GC_setspecific(GC_thread_key, p)) { +- ABORT("Failed to set thread specific allocation pointers"); +- } +- for (i = 1; i < NFREELISTS; ++i) { +- p -> ptrfree_freelists[i] = (ptr_t)1; +- p -> normal_freelists[i] = (ptr_t)1; +-# ifdef GC_GCJ_SUPPORT +- p -> gcj_freelists[i] = (ptr_t)1; +-# endif +- } +- /* Set up the size 0 free lists. */ +- p -> ptrfree_freelists[0] = (ptr_t)(&size_zero_object); +- p -> normal_freelists[0] = (ptr_t)(&size_zero_object); +-# ifdef GC_GCJ_SUPPORT +- p -> gcj_freelists[0] = (ptr_t)(-1); +-# endif +-} +- +-#ifdef GC_GCJ_SUPPORT +- extern ptr_t * GC_gcjobjfreelist; +-#endif +- +-/* We hold the allocator lock. */ +-void GC_destroy_thread_local(GC_thread p) +-{ +- /* We currently only do this from the thread itself or from */ +- /* the fork handler for a child process. */ +-# ifndef HANDLE_FORK +- GC_ASSERT(GC_getspecific(GC_thread_key) == (void *)p); +-# endif +- return_freelists(p -> ptrfree_freelists, GC_aobjfreelist); +- return_freelists(p -> normal_freelists, GC_objfreelist); +-# ifdef GC_GCJ_SUPPORT +- return_freelists(p -> gcj_freelists, GC_gcjobjfreelist); +-# endif +-} +- +-extern GC_PTR GC_generic_malloc_many(); +- +-GC_PTR GC_local_malloc(size_t bytes) +-{ +- if (EXPECT(!SMALL_ENOUGH(bytes),0)) { +- return(GC_malloc(bytes)); +- } else { +- int index = INDEX_FROM_BYTES(bytes); +- ptr_t * my_fl; +- ptr_t my_entry; +-# if defined(REDIRECT_MALLOC) && !defined(USE_PTHREAD_SPECIFIC) +- GC_key_t k = GC_thread_key; +-# endif +- void * tsd; +- +-# if defined(REDIRECT_MALLOC) && !defined(USE_PTHREAD_SPECIFIC) +- if (EXPECT(0 == k, 0)) { +- /* This can happen if we get called when the world is */ +- /* being initialized. Whether we can actually complete */ +- /* the initialization then is unclear. */ +- GC_init_parallel(); +- k = GC_thread_key; +- } +-# endif +- tsd = GC_getspecific(GC_thread_key); +-# ifdef GC_ASSERTIONS +- LOCK(); +- GC_ASSERT(tsd == (void *)GC_lookup_thread(pthread_self())); +- UNLOCK(); +-# endif +- my_fl = ((GC_thread)tsd) -> normal_freelists + index; +- my_entry = *my_fl; +- if (EXPECT((word)my_entry >= HBLKSIZE, 1)) { +- ptr_t next = obj_link(my_entry); +- GC_PTR result = (GC_PTR)my_entry; +- *my_fl = next; +- obj_link(my_entry) = 0; +- PREFETCH_FOR_WRITE(next); +- return result; +- } else if ((word)my_entry - 1 < DIRECT_GRANULES) { +- *my_fl = my_entry + index + 1; +- return GC_malloc(bytes); +- } else { +- GC_generic_malloc_many(BYTES_FROM_INDEX(index), NORMAL, my_fl); +- if (*my_fl == 0) return GC_oom_fn(bytes); +- return GC_local_malloc(bytes); +- } +- } +-} +- +-GC_PTR GC_local_malloc_atomic(size_t bytes) +-{ +- if (EXPECT(!SMALL_ENOUGH(bytes), 0)) { +- return(GC_malloc_atomic(bytes)); +- } else { +- int index = INDEX_FROM_BYTES(bytes); +- ptr_t * my_fl = ((GC_thread)GC_getspecific(GC_thread_key)) +- -> ptrfree_freelists + index; +- ptr_t my_entry = *my_fl; +- +- if (EXPECT((word)my_entry >= HBLKSIZE, 1)) { +- GC_PTR result = (GC_PTR)my_entry; +- *my_fl = obj_link(my_entry); +- return result; +- } else if ((word)my_entry - 1 < DIRECT_GRANULES) { +- *my_fl = my_entry + index + 1; +- return GC_malloc_atomic(bytes); +- } else { +- GC_generic_malloc_many(BYTES_FROM_INDEX(index), PTRFREE, my_fl); +- /* *my_fl is updated while the collector is excluded; */ +- /* the free list is always visible to the collector as */ +- /* such. */ +- if (*my_fl == 0) return GC_oom_fn(bytes); +- return GC_local_malloc_atomic(bytes); +- } +- } +-} +- +-#ifdef GC_GCJ_SUPPORT +- +-#include "include/gc_gcj.h" +- +-#ifdef GC_ASSERTIONS +- extern GC_bool GC_gcj_malloc_initialized; +-#endif +- +-extern int GC_gcj_kind; +- +-GC_PTR GC_local_gcj_malloc(size_t bytes, +- void * ptr_to_struct_containing_descr) +-{ +- GC_ASSERT(GC_gcj_malloc_initialized); +- if (EXPECT(!SMALL_ENOUGH(bytes), 0)) { +- return GC_gcj_malloc(bytes, ptr_to_struct_containing_descr); +- } else { +- int index = INDEX_FROM_BYTES(bytes); +- ptr_t * my_fl = ((GC_thread)GC_getspecific(GC_thread_key)) +- -> gcj_freelists + index; +- ptr_t my_entry = *my_fl; +- if (EXPECT((word)my_entry >= HBLKSIZE, 1)) { +- GC_PTR result = (GC_PTR)my_entry; +- GC_ASSERT(!GC_incremental); +- /* We assert that any concurrent marker will stop us. */ +- /* Thus it is impossible for a mark procedure to see the */ +- /* allocation of the next object, but to see this object */ +- /* still containing a free list pointer. Otherwise the */ +- /* marker might find a random "mark descriptor". */ +- *(volatile ptr_t *)my_fl = obj_link(my_entry); +- /* We must update the freelist before we store the pointer. */ +- /* Otherwise a GC at this point would see a corrupted */ +- /* free list. */ +- /* A memory barrier is probably never needed, since the */ +- /* action of stopping this thread will cause prior writes */ +- /* to complete. */ +- GC_ASSERT(((void * volatile *)result)[1] == 0); +- *(void * volatile *)result = ptr_to_struct_containing_descr; +- return result; +- } else if ((word)my_entry - 1 < DIRECT_GRANULES) { +- if (!GC_incremental) *my_fl = my_entry + index + 1; +- /* In the incremental case, we always have to take this */ +- /* path. Thus we leave the counter alone. */ +- return GC_gcj_malloc(bytes, ptr_to_struct_containing_descr); +- } else { +- GC_generic_malloc_many(BYTES_FROM_INDEX(index), GC_gcj_kind, my_fl); +- if (*my_fl == 0) return GC_oom_fn(bytes); +- return GC_local_gcj_malloc(bytes, ptr_to_struct_containing_descr); +- } +- } +-} +- +-#endif /* GC_GCJ_SUPPORT */ +- +-# else /* !THREAD_LOCAL_ALLOC && !DBG_HDRS_ALL */ +- +-# define GC_destroy_thread_local(t) +- +-# endif /* !THREAD_LOCAL_ALLOC */ +- +-#if 0 +-/* +-To make sure that we're using LinuxThreads and not some other thread +-package, we generate a dummy reference to `pthread_kill_other_threads_np' +-(was `__pthread_initial_thread_bos' but that disappeared), +-which is a symbol defined in LinuxThreads, but (hopefully) not in other +-thread packages. +- +-We no longer do this, since this code is now portable enough that it might +-actually work for something else. +-*/ +-void (*dummy_var_to_force_linux_threads)() = pthread_kill_other_threads_np; +-#endif /* 0 */ +- +-#if defined(SPARC) || defined(IA64) +- extern word GC_save_regs_in_stack(); +-#endif +- +-long GC_nprocs = 1; /* Number of processors. We may not have */ +- /* access to all of them, but this is as good */ +- /* a guess as any ... */ +- +-#ifdef PARALLEL_MARK +- +-# ifndef MAX_MARKERS +-# define MAX_MARKERS 16 +-# endif +- +-static ptr_t marker_sp[MAX_MARKERS] = {0}; +- +-void * GC_mark_thread(void * id) +-{ +- word my_mark_no = 0; +- +- marker_sp[(word)id] = GC_approx_sp(); +- for (;; ++my_mark_no) { +- /* GC_mark_no is passed only to allow GC_help_marker to terminate */ +- /* promptly. This is important if it were called from the signal */ +- /* handler or from the GC lock acquisition code. Under Linux, it's */ +- /* not safe to call it from a signal handler, since it uses mutexes */ +- /* and condition variables. Since it is called only here, the */ +- /* argument is unnecessary. */ +- if (my_mark_no < GC_mark_no || my_mark_no > GC_mark_no + 2) { +- /* resynchronize if we get far off, e.g. because GC_mark_no */ +- /* wrapped. */ +- my_mark_no = GC_mark_no; +- } +-# ifdef DEBUG_THREADS +- GC_printf1("Starting mark helper for mark number %ld\n", my_mark_no); +-# endif +- GC_help_marker(my_mark_no); +- } +-} +- +-extern long GC_markers; /* Number of mark threads we would */ +- /* like to have. Includes the */ +- /* initiating thread. */ +- +-pthread_t GC_mark_threads[MAX_MARKERS]; +- +-#define PTHREAD_CREATE REAL_FUNC(pthread_create) +- +-static void start_mark_threads() +-{ +- unsigned i; +- pthread_attr_t attr; +- +- if (GC_markers > MAX_MARKERS) { +- WARN("Limiting number of mark threads\n", 0); +- GC_markers = MAX_MARKERS; +- } +- if (0 != pthread_attr_init(&attr)) ABORT("pthread_attr_init failed"); +- +- if (0 != pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)) +- ABORT("pthread_attr_setdetachstate failed"); +- +-# if defined(HPUX) || defined(GC_DGUX386_THREADS) +- /* Default stack size is usually too small: fix it. */ +- /* Otherwise marker threads or GC may run out of */ +- /* space. */ +-# define MIN_STACK_SIZE (8*HBLKSIZE*sizeof(word)) +- { +- size_t old_size; +- int code; +- +- if (pthread_attr_getstacksize(&attr, &old_size) != 0) +- ABORT("pthread_attr_getstacksize failed\n"); +- if (old_size < MIN_STACK_SIZE) { +- if (pthread_attr_setstacksize(&attr, MIN_STACK_SIZE) != 0) +- ABORT("pthread_attr_setstacksize failed\n"); +- } +- } +-# endif /* HPUX || GC_DGUX386_THREADS */ +-# ifdef CONDPRINT +- if (GC_print_stats) { +- GC_printf1("Starting %ld marker threads\n", GC_markers - 1); +- } +-# endif +- for (i = 0; i < GC_markers - 1; ++i) { +- if (0 != PTHREAD_CREATE(GC_mark_threads + i, &attr, +- GC_mark_thread, (void *)(word)i)) { +- WARN("Marker thread creation failed, errno = %ld.\n", errno); +- } +- } +-} +- +-#else /* !PARALLEL_MARK */ +- +-static __inline__ void start_mark_threads() +-{ +-} +- +-#endif /* !PARALLEL_MARK */ +- +-/* Defining INSTALL_LOOPING_SEGV_HANDLER causes SIGSEGV and SIGBUS to */ +-/* result in an infinite loop in a signal handler. This can be very */ +-/* useful for debugging, since (as of RH7) gdb still seems to have */ +-/* serious problems with threads. */ +-#ifdef INSTALL_LOOPING_SEGV_HANDLER +-void GC_looping_handler(int sig) +-{ +- GC_printf3("Signal %ld in thread %lx, pid %ld\n", +- sig, pthread_self(), getpid()); +- for (;;); +-} +-#endif +- +-GC_bool GC_thr_initialized = FALSE; +- +-volatile GC_thread GC_threads[THREAD_TABLE_SZ]; +- +-void GC_push_thread_structures GC_PROTO((void)) +-{ +- GC_push_all((ptr_t)(GC_threads), (ptr_t)(GC_threads)+sizeof(GC_threads)); +-# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL) +- GC_push_all((ptr_t)(&GC_thread_key), +- (ptr_t)(&GC_thread_key)+sizeof(&GC_thread_key)); +-# endif +-} +- +-#ifdef THREAD_LOCAL_ALLOC +-/* We must explicitly mark ptrfree and gcj free lists, since the free */ +-/* list links wouldn't otherwise be found. We also set them in the */ +-/* normal free lists, since that involves touching less memory than if */ +-/* we scanned them normally. */ +-void GC_mark_thread_local_free_lists(void) +-{ +- int i, j; +- GC_thread p; +- ptr_t q; +- +- for (i = 0; i < THREAD_TABLE_SZ; ++i) { +- for (p = GC_threads[i]; 0 != p; p = p -> next) { +- for (j = 1; j < NFREELISTS; ++j) { +- q = p -> ptrfree_freelists[j]; +- if ((word)q > HBLKSIZE) GC_set_fl_marks(q); +- q = p -> normal_freelists[j]; +- if ((word)q > HBLKSIZE) GC_set_fl_marks(q); +-# ifdef GC_GCJ_SUPPORT +- q = p -> gcj_freelists[j]; +- if ((word)q > HBLKSIZE) GC_set_fl_marks(q); +-# endif /* GC_GCJ_SUPPORT */ +- } +- } +- } +-} +-#endif /* THREAD_LOCAL_ALLOC */ +- +-static struct GC_Thread_Rep first_thread; +- +-/* Add a thread to GC_threads. We assume it wasn't already there. */ +-/* Caller holds allocation lock. */ +-GC_thread GC_new_thread(pthread_t id) +-{ +- int hv = ((word)id) % THREAD_TABLE_SZ; +- GC_thread result; +- static GC_bool first_thread_used = FALSE; +- +- if (!first_thread_used) { +- result = &first_thread; +- first_thread_used = TRUE; +- } else { +- result = (struct GC_Thread_Rep *) +- GC_INTERNAL_MALLOC(sizeof(struct GC_Thread_Rep), NORMAL); +- } +- if (result == 0) return(0); +- result -> id = id; +- result -> next = GC_threads[hv]; +- GC_threads[hv] = result; +- GC_ASSERT(result -> flags == 0 && result -> thread_blocked == 0); +- return(result); +-} +- +-/* Delete a thread from GC_threads. We assume it is there. */ +-/* (The code intentionally traps if it wasn't.) */ +-/* Caller holds allocation lock. */ +-void GC_delete_thread(pthread_t id) +-{ +- int hv = ((word)id) % THREAD_TABLE_SZ; +- register GC_thread p = GC_threads[hv]; +- register GC_thread prev = 0; +- +- while (!pthread_equal(p -> id, id)) { +- prev = p; +- p = p -> next; +- } +- if (prev == 0) { +- GC_threads[hv] = p -> next; +- } else { +- prev -> next = p -> next; +- } +- GC_INTERNAL_FREE(p); +-} +- +-/* If a thread has been joined, but we have not yet */ +-/* been notified, then there may be more than one thread */ +-/* in the table with the same pthread id. */ +-/* This is OK, but we need a way to delete a specific one. */ +-void GC_delete_gc_thread(pthread_t id, GC_thread gc_id) +-{ +- int hv = ((word)id) % THREAD_TABLE_SZ; +- register GC_thread p = GC_threads[hv]; +- register GC_thread prev = 0; +- +- while (p != gc_id) { +- prev = p; +- p = p -> next; +- } +- if (prev == 0) { +- GC_threads[hv] = p -> next; +- } else { +- prev -> next = p -> next; +- } +- GC_INTERNAL_FREE(p); +-} +- +-/* Return a GC_thread corresponding to a given thread_t. */ +-/* Returns 0 if it's not there. */ +-/* Caller holds allocation lock or otherwise inhibits */ +-/* updates. */ +-/* If there is more than one thread with the given id we */ +-/* return the most recent one. */ +-GC_thread GC_lookup_thread(pthread_t id) +-{ +- int hv = ((word)id) % THREAD_TABLE_SZ; +- register GC_thread p = GC_threads[hv]; +- +- while (p != 0 && !pthread_equal(p -> id, id)) p = p -> next; +- return(p); +-} +- +-#ifdef HANDLE_FORK +-/* Remove all entries from the GC_threads table, except the */ +-/* one for the current thread. We need to do this in the child */ +-/* process after a fork(), since only the current thread */ +-/* survives in the child. */ +-void GC_remove_all_threads_but_me(void) +-{ +- pthread_t self = pthread_self(); +- int hv; +- GC_thread p, next, me; +- +- for (hv = 0; hv < THREAD_TABLE_SZ; ++hv) { +- me = 0; +- for (p = GC_threads[hv]; 0 != p; p = next) { +- next = p -> next; +- if (p -> id == self) { +- me = p; +- p -> next = 0; +- } else { +-# ifdef THREAD_LOCAL_ALLOC +- if (!(p -> flags & FINISHED)) { +- GC_destroy_thread_local(p); +- } +-# endif /* THREAD_LOCAL_ALLOC */ +- if (p != &first_thread) GC_INTERNAL_FREE(p); +- } +- } +- GC_threads[hv] = me; +- } +-} +-#endif /* HANDLE_FORK */ +- +-#ifdef USE_PROC_FOR_LIBRARIES +-int GC_segment_is_thread_stack(ptr_t lo, ptr_t hi) +-{ +- int i; +- GC_thread p; +- +-# ifdef PARALLEL_MARK +- for (i = 0; i < GC_markers; ++i) { +- if (marker_sp[i] > lo & marker_sp[i] < hi) return 1; +- } +-# endif +- for (i = 0; i < THREAD_TABLE_SZ; i++) { +- for (p = GC_threads[i]; p != 0; p = p -> next) { +- if (0 != p -> stack_end) { +-# ifdef STACK_GROWS_UP +- if (p -> stack_end >= lo && p -> stack_end < hi) return 1; +-# else /* STACK_GROWS_DOWN */ +- if (p -> stack_end > lo && p -> stack_end <= hi) return 1; +-# endif +- } +- } +- } +- return 0; +-} +-#endif /* USE_PROC_FOR_LIBRARIES */ +- +-#ifdef GC_LINUX_THREADS +-/* Return the number of processors, or i<= 0 if it can't be determined. */ +-int GC_get_nprocs() +-{ +- /* Should be "return sysconf(_SC_NPROCESSORS_ONLN);" but that */ +- /* appears to be buggy in many cases. */ +- /* We look for lines "cpu" in /proc/stat. */ +-# define STAT_BUF_SIZE 4096 +-# define STAT_READ read +- /* If read is wrapped, this may need to be redefined to call */ +- /* the real one. */ +- char stat_buf[STAT_BUF_SIZE]; +- int f; +- word result = 1; +- /* Some old kernels only have a single "cpu nnnn ..." */ +- /* entry in /proc/stat. We identify those as */ +- /* uniprocessors. */ +- size_t i, len = 0; +- +- f = open("/proc/stat", O_RDONLY); +- if (f < 0 || (len = STAT_READ(f, stat_buf, STAT_BUF_SIZE)) < 100) { +- WARN("Couldn't read /proc/stat\n", 0); +- return -1; +- } +- for (i = 0; i < len - 100; ++i) { +- if (stat_buf[i] == '\n' && stat_buf[i+1] == 'c' +- && stat_buf[i+2] == 'p' && stat_buf[i+3] == 'u') { +- int cpu_no = atoi(stat_buf + i + 4); +- if (cpu_no >= result) result = cpu_no + 1; +- } +- } +- close(f); +- return result; +-} +-#endif /* GC_LINUX_THREADS */ +- +-/* We hold the GC lock. Wait until an in-progress GC has finished. */ +-/* Repeatedly RELEASES GC LOCK in order to wait. */ +-/* If wait_for_all is true, then we exit with the GC lock held and no */ +-/* collection in progress; otherwise we just wait for the current GC */ +-/* to finish. */ +-extern GC_bool GC_collection_in_progress(); +-void GC_wait_for_gc_completion(GC_bool wait_for_all) +-{ +- if (GC_incremental && GC_collection_in_progress()) { +- int old_gc_no = GC_gc_no; +- +- /* Make sure that no part of our stack is still on the mark stack, */ +- /* since it's about to be unmapped. */ +- while (GC_incremental && GC_collection_in_progress() +- && (wait_for_all || old_gc_no == GC_gc_no)) { +- ENTER_GC(); +- GC_collect_a_little_inner(1); +- EXIT_GC(); +- UNLOCK(); +- sched_yield(); +- LOCK(); +- } +- } +-} +- +-#ifdef HANDLE_FORK +-/* Procedures called before and after a fork. The goal here is to make */ +-/* it safe to call GC_malloc() in a forked child. It's unclear that is */ +-/* attainable, since the single UNIX spec seems to imply that one */ +-/* should only call async-signal-safe functions, and we probably can't */ +-/* quite guarantee that. But we give it our best shot. (That same */ +-/* spec also implies that it's not safe to call the system malloc */ +-/* between fork() and exec(). Thus we're doing no worse than it. */ +- +-/* Called before a fork() */ +-void GC_fork_prepare_proc(void) +-{ +- /* Acquire all relevant locks, so that after releasing the locks */ +- /* the child will see a consistent state in which monitor */ +- /* invariants hold. Unfortunately, we can't acquire libc locks */ +- /* we might need, and there seems to be no guarantee that libc */ +- /* must install a suitable fork handler. */ +- /* Wait for an ongoing GC to finish, since we can't finish it in */ +- /* the (one remaining thread in) the child. */ +- LOCK(); +-# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC) +- GC_wait_for_reclaim(); +-# endif +- GC_wait_for_gc_completion(TRUE); +-# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC) +- GC_acquire_mark_lock(); +-# endif +-} +- +-/* Called in parent after a fork() */ +-void GC_fork_parent_proc(void) +-{ +-# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC) +- GC_release_mark_lock(); +-# endif +- UNLOCK(); +-} +- +-/* Called in child after a fork() */ +-void GC_fork_child_proc(void) +-{ +- /* Clean up the thread table, so that just our thread is left. */ +-# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC) +- GC_release_mark_lock(); +-# endif +- GC_remove_all_threads_but_me(); +-# ifdef PARALLEL_MARK +- /* Turn off parallel marking in the child, since we are probably */ +- /* just going to exec, and we would have to restart mark threads. */ +- GC_markers = 1; +- GC_parallel = FALSE; +-# endif /* PARALLEL_MARK */ +- UNLOCK(); +-} +-#endif /* HANDLE_FORK */ +- +-#if defined(GC_DGUX386_THREADS) +-/* Return the number of processors, or i<= 0 if it can't be determined. */ +-int GC_get_nprocs() +-{ +- /* */ +- int numCpus; +- struct dg_sys_info_pm_info pm_sysinfo; +- int status =0; +- +- status = dg_sys_info((long int *) &pm_sysinfo, +- DG_SYS_INFO_PM_INFO_TYPE, DG_SYS_INFO_PM_CURRENT_VERSION); +- if (status < 0) +- /* set -1 for error */ +- numCpus = -1; +- else +- /* Active CPUs */ +- numCpus = pm_sysinfo.idle_vp_count; +- +-# ifdef DEBUG_THREADS +- GC_printf1("Number of active CPUs in this system: %d\n", numCpus); +-# endif +- return(numCpus); +-} +-#endif /* GC_DGUX386_THREADS */ +- +-/* We hold the allocation lock. */ +-void GC_thr_init() +-{ +-# ifndef GC_DARWIN_THREADS +- int dummy; +-# endif +- GC_thread t; +- +- if (GC_thr_initialized) return; +- GC_thr_initialized = TRUE; +- +-# ifdef HANDLE_FORK +- /* Prepare for a possible fork. */ +- pthread_atfork(GC_fork_prepare_proc, GC_fork_parent_proc, +- GC_fork_child_proc); +-# endif /* HANDLE_FORK */ +- /* Add the initial thread, so we can stop it. */ +- t = GC_new_thread(pthread_self()); +-# ifdef GC_DARWIN_THREADS +- t -> stop_info.mach_thread = mach_thread_self(); +-# else +- t -> stop_info.stack_ptr = (ptr_t)(&dummy); +-# endif +- t -> flags = DETACHED | MAIN_THREAD; +- +- GC_stop_init(); +- +- /* Set GC_nprocs. */ +- { +- char * nprocs_string = GETENV("GC_NPROCS"); +- GC_nprocs = -1; +- if (nprocs_string != NULL) GC_nprocs = atoi(nprocs_string); +- } +- if (GC_nprocs <= 0) { +-# if defined(GC_HPUX_THREADS) +- GC_nprocs = pthread_num_processors_np(); +-# endif +-# if defined(GC_OSF1_THREADS) +- GC_nprocs = sysconf(_SC_NPROCESSORS_ONLN); +- if (GC_nprocs <= 0) GC_nprocs = 1; +-# endif +-# if defined(GC_FREEBSD_THREADS) +- GC_nprocs = 1; +-# endif +-# if defined(GC_DARWIN_THREADS) +- int ncpus = 1; +- size_t len = sizeof(ncpus); +- sysctl((int[2]) {CTL_HW, HW_NCPU}, 2, &ncpus, &len, NULL, 0); +- GC_nprocs = ncpus; +-# endif +-# if defined(GC_LINUX_THREADS) || defined(GC_DGUX386_THREADS) +- GC_nprocs = GC_get_nprocs(); +-# endif +- } +- if (GC_nprocs <= 0) { +- WARN("GC_get_nprocs() returned %ld\n", GC_nprocs); +- GC_nprocs = 2; +-# ifdef PARALLEL_MARK +- GC_markers = 1; +-# endif +- } else { +-# ifdef PARALLEL_MARK +- { +- char * markers_string = GETENV("GC_MARKERS"); +- if (markers_string != NULL) { +- GC_markers = atoi(markers_string); +- } else { +- GC_markers = GC_nprocs; +- } +- } +-# endif +- } +-# ifdef PARALLEL_MARK +-# ifdef CONDPRINT +- if (GC_print_stats) { +- GC_printf2("Number of processors = %ld, " +- "number of marker threads = %ld\n", GC_nprocs, GC_markers); +- } +-# endif +- if (GC_markers == 1) { +- GC_parallel = FALSE; +-# ifdef CONDPRINT +- if (GC_print_stats) { +- GC_printf0("Single marker thread, turning off parallel marking\n"); +- } +-# endif +- } else { +- GC_parallel = TRUE; +- /* Disable true incremental collection, but generational is OK. */ +- GC_time_limit = GC_TIME_UNLIMITED; +- } +-# endif +-} +- +- +-/* Perform all initializations, including those that */ +-/* may require allocation. */ +-/* Called without allocation lock. */ +-/* Must be called before a second thread is created. */ +-/* Called without allocation lock. */ +-void GC_init_parallel() +-{ +- if (parallel_initialized) return; +- parallel_initialized = TRUE; +- +- /* GC_init() calls us back, so set flag first. */ +- if (!GC_is_initialized) GC_init(); +- /* If we are using a parallel marker, start the helper threads. */ +-# ifdef PARALLEL_MARK +- if (GC_parallel) start_mark_threads(); +-# endif +- /* Initialize thread local free lists if used. */ +-# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL) +- LOCK(); +- GC_init_thread_local(GC_lookup_thread(pthread_self())); +- UNLOCK(); +-# endif +-} +- +- +-#if !defined(GC_DARWIN_THREADS) +-int WRAP_FUNC(pthread_sigmask)(int how, const sigset_t *set, sigset_t *oset) +-{ +- sigset_t fudged_set; +- +- if (set != NULL && (how == SIG_BLOCK || how == SIG_SETMASK)) { +- fudged_set = *set; +- sigdelset(&fudged_set, SIG_SUSPEND); +- set = &fudged_set; +- } +- return(REAL_FUNC(pthread_sigmask)(how, set, oset)); +-} +-#endif /* !GC_DARWIN_THREADS */ +- +-/* Wrappers for functions that are likely to block for an appreciable */ +-/* length of time. Must be called in pairs, if at all. */ +-/* Nothing much beyond the system call itself should be executed */ +-/* between these. */ +- +-void GC_start_blocking(void) { +-# define SP_SLOP 128 +- GC_thread me; +- LOCK(); +- me = GC_lookup_thread(pthread_self()); +- GC_ASSERT(!(me -> thread_blocked)); +-# ifdef SPARC +- me -> stop_info.stack_ptr = (ptr_t)GC_save_regs_in_stack(); +-# else +-# ifndef GC_DARWIN_THREADS +- me -> stop_info.stack_ptr = (ptr_t)GC_approx_sp(); +-# endif +-# endif +-# ifdef IA64 +- me -> backing_store_ptr = (ptr_t)GC_save_regs_in_stack() + SP_SLOP; +-# endif +- /* Add some slop to the stack pointer, since the wrapped call may */ +- /* end up pushing more callee-save registers. */ +-# ifndef GC_DARWIN_THREADS +-# ifdef STACK_GROWS_UP +- me -> stop_info.stack_ptr += SP_SLOP; +-# else +- me -> stop_info.stack_ptr -= SP_SLOP; +-# endif +-# endif +- me -> thread_blocked = TRUE; +- UNLOCK(); +-} +- +-void GC_end_blocking(void) { +- GC_thread me; +- LOCK(); /* This will block if the world is stopped. */ +- me = GC_lookup_thread(pthread_self()); +- GC_ASSERT(me -> thread_blocked); +- me -> thread_blocked = FALSE; +- UNLOCK(); +-} +- +-#if defined(GC_DGUX386_THREADS) +-#define __d10_sleep sleep +-#endif /* GC_DGUX386_THREADS */ +- +-/* A wrapper for the standard C sleep function */ +-int WRAP_FUNC(sleep) (unsigned int seconds) +-{ +- int result; +- +- GC_start_blocking(); +- result = REAL_FUNC(sleep)(seconds); +- GC_end_blocking(); +- return result; +-} +- +-struct start_info { +- void *(*start_routine)(void *); +- void *arg; +- word flags; +- sem_t registered; /* 1 ==> in our thread table, but */ +- /* parent hasn't yet noticed. */ +-}; +- +-/* Called at thread exit. */ +-/* Never called for main thread. That's OK, since it */ +-/* results in at most a tiny one-time leak. And */ +-/* linuxthreads doesn't reclaim the main threads */ +-/* resources or id anyway. */ +-void GC_thread_exit_proc(void *arg) +-{ +- GC_thread me; +- +- LOCK(); +- me = GC_lookup_thread(pthread_self()); +- GC_destroy_thread_local(me); +- if (me -> flags & DETACHED) { +- GC_delete_thread(pthread_self()); +- } else { +- me -> flags |= FINISHED; +- } +-# if defined(THREAD_LOCAL_ALLOC) && !defined(USE_PTHREAD_SPECIFIC) \ +- && !defined(USE_HPUX_TLS) && !defined(DBG_HDRS_ALL) +- GC_remove_specific(GC_thread_key); +-# endif +- GC_wait_for_gc_completion(FALSE); +- UNLOCK(); +-} +- +-int WRAP_FUNC(pthread_join)(pthread_t thread, void **retval) +-{ +- int result; +- GC_thread thread_gc_id; +- +- LOCK(); +- thread_gc_id = GC_lookup_thread(thread); +- /* This is guaranteed to be the intended one, since the thread id */ +- /* cant have been recycled by pthreads. */ +- UNLOCK(); +- result = REAL_FUNC(pthread_join)(thread, retval); +-# if defined (GC_FREEBSD_THREADS) +- /* On FreeBSD, the wrapped pthread_join() sometimes returns (what +- appears to be) a spurious EINTR which caused the test and real code +- to gratuitously fail. Having looked at system pthread library source +- code, I see how this return code may be generated. In one path of +- code, pthread_join() just returns the errno setting of the thread +- being joined. This does not match the POSIX specification or the +- local man pages thus I have taken the liberty to catch this one +- spurious return value properly conditionalized on GC_FREEBSD_THREADS. */ +- if (result == EINTR) result = 0; +-# endif +- if (result == 0) { +- LOCK(); +- /* Here the pthread thread id may have been recycled. */ +- GC_delete_gc_thread(thread, thread_gc_id); +- UNLOCK(); +- } +- return result; +-} +- +-int +-WRAP_FUNC(pthread_detach)(pthread_t thread) +-{ +- int result; +- GC_thread thread_gc_id; +- +- LOCK(); +- thread_gc_id = GC_lookup_thread(thread); +- UNLOCK(); +- result = REAL_FUNC(pthread_detach)(thread); +- if (result == 0) { +- LOCK(); +- thread_gc_id -> flags |= DETACHED; +- /* Here the pthread thread id may have been recycled. */ +- if (thread_gc_id -> flags & FINISHED) { +- GC_delete_gc_thread(thread, thread_gc_id); +- } +- UNLOCK(); +- } +- return result; +-} +- +-void * GC_start_routine(void * arg) +-{ +- int dummy; +- struct start_info * si = arg; +- void * result; +- GC_thread me; +- pthread_t my_pthread; +- void *(*start)(void *); +- void *start_arg; +- +- my_pthread = pthread_self(); +-# ifdef DEBUG_THREADS +- GC_printf1("Starting thread 0x%lx\n", my_pthread); +- GC_printf1("pid = %ld\n", (long) getpid()); +- GC_printf1("sp = 0x%lx\n", (long) &arg); +-# endif +- LOCK(); +- me = GC_new_thread(my_pthread); +-#ifdef GC_DARWIN_THREADS +- me -> stop_info.mach_thread = mach_thread_self(); +-#else +- me -> stop_info.stack_ptr = 0; +-#endif +- me -> flags = si -> flags; +- /* me -> stack_end = GC_linux_stack_base(); -- currently (11/99) */ +- /* doesn't work because the stack base in /proc/self/stat is the */ +- /* one for the main thread. There is a strong argument that that's */ +- /* a kernel bug, but a pervasive one. */ +-# ifdef STACK_GROWS_DOWN +- me -> stack_end = (ptr_t)(((word)(&dummy) + (GC_page_size - 1)) +- & ~(GC_page_size - 1)); +-# ifndef GC_DARWIN_THREADS +- me -> stop_info.stack_ptr = me -> stack_end - 0x10; +-# endif +- /* Needs to be plausible, since an asynchronous stack mark */ +- /* should not crash. */ +-# else +- me -> stack_end = (ptr_t)((word)(&dummy) & ~(GC_page_size - 1)); +- me -> stop_info.stack_ptr = me -> stack_end + 0x10; +-# endif +- /* This is dubious, since we may be more than a page into the stack, */ +- /* and hence skip some of it, though it's not clear that matters. */ +-# ifdef IA64 +- me -> backing_store_end = (ptr_t) +- (GC_save_regs_in_stack() & ~(GC_page_size - 1)); +- /* This is also < 100% convincing. We should also read this */ +- /* from /proc, but the hook to do so isn't there yet. */ +-# endif /* IA64 */ +- UNLOCK(); +- start = si -> start_routine; +-# ifdef DEBUG_THREADS +- GC_printf1("start_routine = 0x%lx\n", start); +-# endif +- start_arg = si -> arg; +- sem_post(&(si -> registered)); /* Last action on si. */ +- /* OK to deallocate. */ +- pthread_cleanup_push(GC_thread_exit_proc, 0); +-# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL) +- LOCK(); +- GC_init_thread_local(me); +- UNLOCK(); +-# endif +- result = (*start)(start_arg); +-#if DEBUG_THREADS +- GC_printf1("Finishing thread 0x%x\n", pthread_self()); +-#endif +- me -> status = result; +- me -> flags |= FINISHED; +- pthread_cleanup_pop(1); +- /* Cleanup acquires lock, ensuring that we can't exit */ +- /* while a collection that thinks we're alive is trying to stop */ +- /* us. */ +- return(result); +-} +- +-int +-WRAP_FUNC(pthread_create)(pthread_t *new_thread, +- const pthread_attr_t *attr, +- void *(*start_routine)(void *), void *arg) +-{ +- int result; +- int detachstate; +- word my_flags = 0; +- struct start_info * si; +- /* This is otherwise saved only in an area mmapped by the thread */ +- /* library, which isn't visible to the collector. */ +- +- /* We resist the temptation to muck with the stack size here, */ +- /* even if the default is unreasonably small. That's the client's */ +- /* responsibility. */ +- +- LOCK(); +- si = (struct start_info *)GC_INTERNAL_MALLOC(sizeof(struct start_info), +- NORMAL); +- UNLOCK(); +- if (!parallel_initialized) GC_init_parallel(); +- if (0 == si) return(ENOMEM); +- sem_init(&(si -> registered), 0, 0); +- si -> start_routine = start_routine; +- si -> arg = arg; +- LOCK(); +- if (!GC_thr_initialized) GC_thr_init(); +-# ifdef GC_ASSERTIONS +- { +- int stack_size; +- if (NULL == attr) { +- pthread_attr_t my_attr; +- pthread_attr_init(&my_attr); +- pthread_attr_getstacksize(&my_attr, &stack_size); +- } else { +- pthread_attr_getstacksize(attr, &stack_size); +- } +- GC_ASSERT(stack_size >= (8*HBLKSIZE*sizeof(word))); +- /* Our threads may need to do some work for the GC. */ +- /* Ridiculously small threads won't work, and they */ +- /* probably wouldn't work anyway. */ +- } +-# endif +- if (NULL == attr) { +- detachstate = PTHREAD_CREATE_JOINABLE; +- } else { +- pthread_attr_getdetachstate(attr, &detachstate); +- } +- if (PTHREAD_CREATE_DETACHED == detachstate) my_flags |= DETACHED; +- si -> flags = my_flags; +- UNLOCK(); +-# ifdef DEBUG_THREADS +- GC_printf1("About to start new thread from thread 0x%X\n", +- pthread_self()); +-# endif +- +- result = REAL_FUNC(pthread_create)(new_thread, attr, GC_start_routine, si); +- +-# ifdef DEBUG_THREADS +- GC_printf1("Started thread 0x%X\n", *new_thread); +-# endif +- /* Wait until child has been added to the thread table. */ +- /* This also ensures that we hold onto si until the child is done */ +- /* with it. Thus it doesn't matter whether it is otherwise */ +- /* visible to the collector. */ +- while (0 != sem_wait(&(si -> registered))) { +- if (EINTR != errno) ABORT("sem_wait failed"); +- } +- sem_destroy(&(si -> registered)); +- LOCK(); +- GC_INTERNAL_FREE(si); +- UNLOCK(); +- +- return(result); +-} +- +-#ifdef GENERIC_COMPARE_AND_SWAP +- pthread_mutex_t GC_compare_and_swap_lock = PTHREAD_MUTEX_INITIALIZER; +- +- GC_bool GC_compare_and_exchange(volatile GC_word *addr, +- GC_word old, GC_word new_val) +- { +- GC_bool result; +- pthread_mutex_lock(&GC_compare_and_swap_lock); +- if (*addr == old) { +- *addr = new_val; +- result = TRUE; +- } else { +- result = FALSE; +- } +- pthread_mutex_unlock(&GC_compare_and_swap_lock); +- return result; +- } +- +- GC_word GC_atomic_add(volatile GC_word *addr, GC_word how_much) +- { +- GC_word old; +- pthread_mutex_lock(&GC_compare_and_swap_lock); +- old = *addr; +- *addr = old + how_much; +- pthread_mutex_unlock(&GC_compare_and_swap_lock); +- return old; +- } +- +-#endif /* GENERIC_COMPARE_AND_SWAP */ +-/* Spend a few cycles in a way that can't introduce contention with */ +-/* othre threads. */ +-void GC_pause() +-{ +- int i; +-# ifndef __GNUC__ +- volatile word dummy = 0; +-# endif +- +- for (i = 0; i < 10; ++i) { +-# ifdef __GNUC__ +- __asm__ __volatile__ (" " : : : "memory"); +-# else +- /* Something that's unlikely to be optimized away. */ +- GC_noop(++dummy); +-# endif +- } +-} +- +-#define SPIN_MAX 1024 /* Maximum number of calls to GC_pause before */ +- /* give up. */ +- +-VOLATILE GC_bool GC_collecting = 0; +- /* A hint that we're in the collector and */ +- /* holding the allocation lock for an */ +- /* extended period. */ +- +-#if !defined(USE_SPIN_LOCK) || defined(PARALLEL_MARK) +-/* If we don't want to use the below spinlock implementation, either */ +-/* because we don't have a GC_test_and_set implementation, or because */ +-/* we don't want to risk sleeping, we can still try spinning on */ +-/* pthread_mutex_trylock for a while. This appears to be very */ +-/* beneficial in many cases. */ +-/* I suspect that under high contention this is nearly always better */ +-/* than the spin lock. But it's a bit slower on a uniprocessor. */ +-/* Hence we still default to the spin lock. */ +-/* This is also used to acquire the mark lock for the parallel */ +-/* marker. */ +- +-/* Here we use a strict exponential backoff scheme. I don't know */ +-/* whether that's better or worse than the above. We eventually */ +-/* yield by calling pthread_mutex_lock(); it never makes sense to */ +-/* explicitly sleep. */ +- +-void GC_generic_lock(pthread_mutex_t * lock) +-{ +-#ifndef NO_PTHREAD_TRYLOCK +- unsigned pause_length = 1; +- unsigned i; +- +- if (0 == pthread_mutex_trylock(lock)) return; +- for (; pause_length <= SPIN_MAX; pause_length <<= 1) { +- for (i = 0; i < pause_length; ++i) { +- GC_pause(); +- } +- switch(pthread_mutex_trylock(lock)) { +- case 0: +- return; +- case EBUSY: +- break; +- default: +- ABORT("Unexpected error from pthread_mutex_trylock"); +- } +- } +-#endif /* !NO_PTHREAD_TRYLOCK */ +- pthread_mutex_lock(lock); +-} +- +-#endif /* !USE_SPIN_LOCK || PARALLEL_MARK */ +- +-#if defined(USE_SPIN_LOCK) +- +-/* Reasonably fast spin locks. Basically the same implementation */ +-/* as STL alloc.h. This isn't really the right way to do this. */ +-/* but until the POSIX scheduling mess gets straightened out ... */ +- +-volatile unsigned int GC_allocate_lock = 0; +- +- +-void GC_lock() +-{ +-# define low_spin_max 30 /* spin cycles if we suspect uniprocessor */ +-# define high_spin_max SPIN_MAX /* spin cycles for multiprocessor */ +- static unsigned spin_max = low_spin_max; +- unsigned my_spin_max; +- static unsigned last_spins = 0; +- unsigned my_last_spins; +- int i; +- +- if (!GC_test_and_set(&GC_allocate_lock)) { +- return; +- } +- my_spin_max = spin_max; +- my_last_spins = last_spins; +- for (i = 0; i < my_spin_max; i++) { +- if (GC_collecting || GC_nprocs == 1) goto yield; +- if (i < my_last_spins/2 || GC_allocate_lock) { +- GC_pause(); +- continue; +- } +- if (!GC_test_and_set(&GC_allocate_lock)) { +- /* +- * got it! +- * Spinning worked. Thus we're probably not being scheduled +- * against the other process with which we were contending. +- * Thus it makes sense to spin longer the next time. +- */ +- last_spins = i; +- spin_max = high_spin_max; +- return; +- } +- } +- /* We are probably being scheduled against the other process. Sleep. */ +- spin_max = low_spin_max; +-yield: +- for (i = 0;; ++i) { +- if (!GC_test_and_set(&GC_allocate_lock)) { +- return; +- } +-# define SLEEP_THRESHOLD 12 +- /* Under Linux very short sleeps tend to wait until */ +- /* the current time quantum expires. On old Linux */ +- /* kernels nanosleep(<= 2ms) just spins under Linux. */ +- /* (Under 2.4, this happens only for real-time */ +- /* processes.) We want to minimize both behaviors */ +- /* here. */ +- if (i < SLEEP_THRESHOLD) { +- sched_yield(); +- } else { +- struct timespec ts; +- +- if (i > 24) i = 24; +- /* Don't wait for more than about 15msecs, even */ +- /* under extreme contention. */ +- ts.tv_sec = 0; +- ts.tv_nsec = 1 << i; +- nanosleep(&ts, 0); +- } +- } +-} +- +-#else /* !USE_SPINLOCK */ +-void GC_lock() +-{ +-#ifndef NO_PTHREAD_TRYLOCK +- if (1 == GC_nprocs || GC_collecting) { +- pthread_mutex_lock(&GC_allocate_ml); +- } else { +- GC_generic_lock(&GC_allocate_ml); +- } +-#else /* !NO_PTHREAD_TRYLOCK */ +- pthread_mutex_lock(&GC_allocate_ml); +-#endif /* !NO_PTHREAD_TRYLOCK */ +-} +- +-#endif /* !USE_SPINLOCK */ +- +-#if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC) +- +-#ifdef GC_ASSERTIONS +- pthread_t GC_mark_lock_holder = NO_THREAD; +-#endif +- +-#if 0 +- /* Ugly workaround for a linux threads bug in the final versions */ +- /* of glibc2.1. Pthread_mutex_trylock sets the mutex owner */ +- /* field even when it fails to acquire the mutex. This causes */ +- /* pthread_cond_wait to die. Remove for glibc2.2. */ +- /* According to the man page, we should use */ +- /* PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP, but that isn't actually */ +- /* defined. */ +- static pthread_mutex_t mark_mutex = +- {0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, {0, 0}}; +-#else +- static pthread_mutex_t mark_mutex = PTHREAD_MUTEX_INITIALIZER; +-#endif +- +-static pthread_cond_t builder_cv = PTHREAD_COND_INITIALIZER; +- +-void GC_acquire_mark_lock() +-{ +-/* +- if (pthread_mutex_lock(&mark_mutex) != 0) { +- ABORT("pthread_mutex_lock failed"); +- } +-*/ +- GC_generic_lock(&mark_mutex); +-# ifdef GC_ASSERTIONS +- GC_mark_lock_holder = pthread_self(); +-# endif +-} +- +-void GC_release_mark_lock() +-{ +- GC_ASSERT(GC_mark_lock_holder == pthread_self()); +-# ifdef GC_ASSERTIONS +- GC_mark_lock_holder = NO_THREAD; +-# endif +- if (pthread_mutex_unlock(&mark_mutex) != 0) { +- ABORT("pthread_mutex_unlock failed"); +- } +-} +- +-/* Collector must wait for a freelist builders for 2 reasons: */ +-/* 1) Mark bits may still be getting examined without lock. */ +-/* 2) Partial free lists referenced only by locals may not be scanned */ +-/* correctly, e.g. if they contain "pointer-free" objects, since the */ +-/* free-list link may be ignored. */ +-void GC_wait_builder() +-{ +- GC_ASSERT(GC_mark_lock_holder == pthread_self()); +-# ifdef GC_ASSERTIONS +- GC_mark_lock_holder = NO_THREAD; +-# endif +- if (pthread_cond_wait(&builder_cv, &mark_mutex) != 0) { +- ABORT("pthread_cond_wait failed"); +- } +- GC_ASSERT(GC_mark_lock_holder == NO_THREAD); +-# ifdef GC_ASSERTIONS +- GC_mark_lock_holder = pthread_self(); +-# endif +-} +- +-void GC_wait_for_reclaim() +-{ +- GC_acquire_mark_lock(); +- while (GC_fl_builder_count > 0) { +- GC_wait_builder(); +- } +- GC_release_mark_lock(); +-} +- +-void GC_notify_all_builder() +-{ +- GC_ASSERT(GC_mark_lock_holder == pthread_self()); +- if (pthread_cond_broadcast(&builder_cv) != 0) { +- ABORT("pthread_cond_broadcast failed"); +- } +-} +- +-#endif /* PARALLEL_MARK || THREAD_LOCAL_ALLOC */ +- +-#ifdef PARALLEL_MARK +- +-static pthread_cond_t mark_cv = PTHREAD_COND_INITIALIZER; +- +-void GC_wait_marker() +-{ +- GC_ASSERT(GC_mark_lock_holder == pthread_self()); +-# ifdef GC_ASSERTIONS +- GC_mark_lock_holder = NO_THREAD; +-# endif +- if (pthread_cond_wait(&mark_cv, &mark_mutex) != 0) { +- ABORT("pthread_cond_wait failed"); +- } +- GC_ASSERT(GC_mark_lock_holder == NO_THREAD); +-# ifdef GC_ASSERTIONS +- GC_mark_lock_holder = pthread_self(); +-# endif +-} +- +-void GC_notify_all_marker() +-{ +- if (pthread_cond_broadcast(&mark_cv) != 0) { +- ABORT("pthread_cond_broadcast failed"); +- } +-} +- +-#endif /* PARALLEL_MARK */ +- +-# endif /* GC_LINUX_THREADS and friends */ +- +diff -Nur ../boehm-gc/ptr_chck.c boehm-gc/ptr_chck.c +--- ../boehm-gc/ptr_chck.c Mon May 26 12:48:52 2003 ++++ boehm-gc/ptr_chck.c Fri Aug 17 11:30:46 2001 +@@ -79,7 +79,7 @@ + return(p); + } + sz = WORDS_TO_BYTES(hhdr -> hb_sz); +- if (sz > MAXOBJBYTES) { ++ if (sz > WORDS_TO_BYTES(MAXOBJSZ)) { + base = (ptr_t)HBLKPTR(p); + limit = base + sz; + if ((ptr_t)p >= limit) { +@@ -165,7 +165,7 @@ + pdispl = HBLKDISPL(p); + map_entry = MAP_ENTRY((hhdr -> hb_map), pdispl); + if (map_entry == OBJ_INVALID +- || sz > MAXOBJBYTES && (ptr_t)p >= (ptr_t)h + sz) { ++ || sz > MAXOBJSZ && (ptr_t)p >= (ptr_t)h + sz) { + goto fail; + } + return(p); +diff -Nur ../boehm-gc/reclaim.c boehm-gc/reclaim.c +--- ../boehm-gc/reclaim.c Mon May 26 12:48:52 2003 ++++ boehm-gc/reclaim.c Fri Mar 29 14:52:12 2002 +@@ -27,61 +27,23 @@ + /* nonzero. */ + #endif /* PARALLEL_MARK */ - GC_stopping_thread = my_thread; /* debugging only. */ - GC_stopping_pid = getpid(); /* debugging only. */ -@@ -828,6 +945,56 @@ - #if DEBUG_THREADS - GC_printf1("Sending suspend signal to 0x%x\n", p -> id); - #endif -+# if defined(GC_DARWIN_THREADS) -+ GC_ASSERT(p->mach_thread != 0 && p->id != 0); -+ kern_result = thread_suspend(p->mach_thread); -+ if(kern_result != KERN_SUCCESS) ABORT("thread_suspend failed"); -+ kern_result = thread_abort_safely(p->mach_thread); -+ /* This shouldn't really be fatal, I don't think. The documentation is kind of unclear */ -+ if(kern_result != KERN_SUCCESS) GC_printf1("thread_abort_safely failed (%ul)",kern_result); -+ kern_result = thread_get_state(p->mach_thread,flavor,(natural_t*)&thread_state,&thread_state_count); -+ if(kern_result != KERN_SUCCESS) ABORT("thread_get_state failed"); -+# if defined(POWERPC) -+ /* The space just below the stack pointer can also be used. -+ See the comment about the red zone at the top of the file */ -+ p->stack_ptr = (void*)(thread_state.r1 - DARWIN_PPC_RED_ZONE); -+ /* Push all the general purpose registers, except the stack pointer. */ -+ GC_push_one(thread_state.r0); -+ GC_push_one(thread_state.r2); -+ GC_push_one(thread_state.r3); -+ GC_push_one(thread_state.r4); -+ GC_push_one(thread_state.r5); -+ GC_push_one(thread_state.r6); -+ GC_push_one(thread_state.r7); -+ GC_push_one(thread_state.r8); -+ GC_push_one(thread_state.r9); -+ GC_push_one(thread_state.r10); -+ GC_push_one(thread_state.r11); -+ GC_push_one(thread_state.r12); -+ GC_push_one(thread_state.r13); -+ GC_push_one(thread_state.r14); -+ GC_push_one(thread_state.r15); -+ GC_push_one(thread_state.r16); -+ GC_push_one(thread_state.r17); -+ GC_push_one(thread_state.r18); -+ GC_push_one(thread_state.r19); -+ GC_push_one(thread_state.r20); -+ GC_push_one(thread_state.r21); -+ GC_push_one(thread_state.r22); -+ GC_push_one(thread_state.r23); -+ GC_push_one(thread_state.r24); -+ GC_push_one(thread_state.r25); -+ GC_push_one(thread_state.r26); -+ GC_push_one(thread_state.r27); -+ GC_push_one(thread_state.r28); -+ GC_push_one(thread_state.r29); -+ GC_push_one(thread_state.r30); -+ GC_push_one(thread_state.r31); -+# else -+# error fixme for non ppc os x -+# endif -+ -+# else /* GC_DARWIN_THREADS */ - result = pthread_kill(p -> id, SIG_SUSPEND); - switch(result) { - case ESRCH: -@@ -839,13 +1006,16 @@ - default: - ABORT("pthread_kill failed"); - } -+# endif /* !GC_DARWIN_THREADS */ - } +-/* We defer printing of leaked objects until we're done with the GC */ +-/* cycle, since the routine for printing objects needs to run outside */ +-/* the collector, e.g. without the allocation lock. */ +-#define MAX_LEAKED 40 +-ptr_t GC_leaked[MAX_LEAKED]; +-unsigned GC_n_leaked = 0; +- +-GC_bool GC_have_errors = FALSE; +- +-void GC_add_leaked(leaked) +-ptr_t leaked; +-{ +- if (GC_n_leaked < MAX_LEAKED) { +- GC_have_errors = TRUE; +- GC_leaked[GC_n_leaked++] = leaked; +- /* Make sure it's not reclaimed this cycle */ +- GC_set_mark_bit(leaked); +- } +-} +- +-static GC_bool printing_errors = FALSE; +-/* Print all objects on the list after printing any smashed objs. */ +-/* Clear both lists. */ +-void GC_print_all_errors () ++static void report_leak(p, sz) ++ptr_t p; ++word sz; + { +- unsigned i; +- +- LOCK(); +- if (printing_errors) { +- UNLOCK(); +- return; +- } +- printing_errors = TRUE; +- UNLOCK(); +- if (GC_debugging_started) GC_print_all_smashed(); +- for (i = 0; i < GC_n_leaked; ++i) { +- ptr_t p = GC_leaked[i]; +- if (HDR(p) -> hb_obj_kind == PTRFREE) { +- GC_err_printf0("Leaked atomic object at "); +- } else { +- GC_err_printf0("Leaked composite object at "); +- } +- GC_print_heap_obj(p); +- GC_err_printf0("\n"); +- GC_free(p); +- GC_leaked[i] = 0; ++ if (HDR(p) -> hb_obj_kind == PTRFREE) { ++ GC_err_printf0("Leaked atomic object at "); ++ } else { ++ GC_err_printf0("Leaked composite object at "); + } +- GC_n_leaked = 0; +- printing_errors = FALSE; ++ GC_print_heap_obj(p); ++ GC_err_printf0("\n"); + } + +- + # define FOUND_FREE(hblk, word_no) \ + { \ +- GC_add_leaked((ptr_t)hblk + WORDS_TO_BYTES(word_no)); \ ++ report_leak((ptr_t)hblk + WORDS_TO_BYTES(word_no), \ ++ HDR(hblk) -> hb_sz); \ } + + /* +@@ -904,7 +866,7 @@ + * Clear *flp. + * This must be done before dropping a list of free gcj-style objects, + * since may otherwise end up with dangling "descriptor" pointers. +- * It may help for other pointer-containing objects. ++ * It may help for other pointer-containg objects. + */ + void GC_clear_fl_links(flp) + ptr_t *flp; +diff -Nur ../boehm-gc/solaris_pthreads.c boehm-gc/solaris_pthreads.c +--- ../boehm-gc/solaris_pthreads.c Mon May 26 12:48:52 2003 ++++ boehm-gc/solaris_pthreads.c Mon Feb 11 20:37:53 2002 +@@ -13,8 +13,9 @@ + /* + * Support code for Solaris threads. Provides functionality we wish Sun + * had provided. Relies on some information we probably shouldn't rely on. +- * Modified by Peter C. for Solaris Posix Threads. ++ * Modified Peter C. for Solaris Posix Threads. + */ ++/* Boehm, September 14, 1994 4:44 pm PDT */ + + # if defined(GC_SOLARIS_PTHREADS) + # include "private/gc_priv.h" +diff -Nur ../boehm-gc/solaris_threads.c boehm-gc/solaris_threads.c +--- ../boehm-gc/solaris_threads.c Mon May 26 12:48:52 2003 ++++ boehm-gc/solaris_threads.c Mon Feb 11 20:37:53 2002 +@@ -37,10 +37,6 @@ + # include + # include + +-#ifdef HANDLE_FORK +- --> Not yet supported. Try porting the code from linux_threads.c. +-#endif +- + /* + * This is the default size of the LWP arrays. If there are more LWPs + * than this when a stop-the-world GC happens, set_max_lwps will be +@@ -365,7 +361,7 @@ + sizeof (prgregset_t)) != 0) { + int j; + +- for(j = 0; j < NPRGREG; j++) ++ for(j = 0; j < NGREG; j++) + { + GC_printf3("%i: %x -> %x\n", j, + GC_lwp_registers[i][j], +@@ -825,7 +821,7 @@ + if (result == 0) { + t = GC_lookup_thread(target_thread); + if (t == 0) ABORT("thread unknown to GC"); +- t -> flags |= SUSPNDED; ++ t -> flags |= SUSPENDED; } -+# if !defined(GC_DARWIN_THREADS) - for (i = 0; i < n_live_threads; i++) { - if (0 != sem_wait(&GC_suspend_ack_sem)) - ABORT("sem_wait in handler failed"); + UNLOCK(); + return(result); +@@ -841,7 +837,7 @@ + if (result == 0) { + t = GC_lookup_thread(target_thread); + if (t == 0) ABORT("thread unknown to GC"); +- t -> flags &= ~SUSPNDED; ++ t -> flags &= ~SUSPENDED; } -+# endif /* GC_DARWIN_THREADS */ - # ifdef PARALLEL_MARK - GC_release_mark_lock(); + UNLOCK(); + return(result); +@@ -927,7 +923,7 @@ + my_flags |= CLIENT_OWNS_STACK; + } + if (flags & THR_DETACHED) my_flags |= DETACHED; +- if (flags & THR_SUSPENDED) my_flags |= SUSPNDED; ++ if (flags & THR_SUSPENDED) my_flags |= SUSPENDED; + result = thr_create(stack, stack_size, start_routine, + arg, flags & ~THR_DETACHED, &my_new_thread); + if (result == 0) { +diff -Nur ../boehm-gc/sparc_mach_dep.S boehm-gc/sparc_mach_dep.S +--- ../boehm-gc/sparc_mach_dep.S Mon May 26 12:48:52 2003 ++++ boehm-gc/sparc_mach_dep.S Thu Feb 14 16:09:29 2002 +@@ -37,7 +37,7 @@ + stx %g0,[%o3] ! *(long *)p = 0 + cmp %o3,%o1 + bgu,pt %xcc, loop ! if (p > limit) goto loop +- add %o3,-8,%o3 ! p -= 8 (delay slot) ++ add %o3,-8,%o3 ! p -= 8 (delay slot) + retl + mov %o2,%sp ! Restore sp., delay slot + #else /* 32 bit SPARC */ +diff -Nur ../boehm-gc/tests/CVS/Entries boehm-gc/tests/CVS/Entries +--- ../boehm-gc/tests/CVS/Entries Sun May 25 12:49:10 2003 ++++ boehm-gc/tests/CVS/Entries Wed Dec 31 16:00:00 1969 +@@ -1,6 +0,0 @@ +-/leak_test.c/1.2/Fri Sep 14 00:43:59 2001// +-/test.c/1.4/Thu Mar 14 07:28:34 2002// +-/test_cpp.cc/1.2/Fri Sep 14 00:43:59 2001// +-/thread_leak_test.c/1.2/Fri Sep 14 00:43:59 2001// +-/trace_test.c/1.2/Fri Sep 14 00:43:59 2001// +-D +diff -Nur ../boehm-gc/tests/CVS/Repository boehm-gc/tests/CVS/Repository +--- ../boehm-gc/tests/CVS/Repository Sun May 25 12:49:10 2003 ++++ boehm-gc/tests/CVS/Repository Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-/cvs/root/gcc3/gcc3/boehm-gc/tests +diff -Nur ../boehm-gc/tests/CVS/Root boehm-gc/tests/CVS/Root +--- ../boehm-gc/tests/CVS/Root Sun May 25 12:49:10 2003 ++++ boehm-gc/tests/CVS/Root Wed Dec 31 16:00:00 1969 +@@ -1 +0,0 @@ +-:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root +diff -Nur ../boehm-gc/threadlibs.c boehm-gc/threadlibs.c +--- ../boehm-gc/threadlibs.c Mon May 26 12:48:52 2003 ++++ boehm-gc/threadlibs.c Mon Feb 11 20:37:53 2002 +@@ -4,14 +4,13 @@ + int main() + { + # if defined(GC_USE_LD_WRAP) +- printf("-Wl,--wrap -Wl,dlopen " ++ printf("-Wl,--wrap -Wl,read -Wl,--wrap -Wl,dlopen " + "-Wl,--wrap -Wl,pthread_create -Wl,--wrap -Wl,pthread_join " + "-Wl,--wrap -Wl,pthread_detach " + "-Wl,--wrap -Wl,pthread_sigmask -Wl,--wrap -Wl,sleep\n"); # endif -@@ -864,7 +1034,9 @@ - register GC_thread p; - register int n_live_threads = 0; - register int result; -- -+# if defined(GC_DARWIN_THREADS) -+ kern_return_t kern_result; -+# endif - # if DEBUG_THREADS - GC_printf0("World starting\n"); + # if defined(GC_LINUX_THREADS) || defined(GC_IRIX_THREADS) \ +- || defined(GC_FREEBSD_THREADS) || defined(GC_SOLARIS_PTHREADS) \ +- || defined(GC_MACOSX_THREADS) ++ || defined(GC_FREEBSD_THREADS) || defined(GC_SOLARIS_PTHREADS) + printf("-lpthread\n"); # endif -@@ -878,6 +1050,12 @@ - #if DEBUG_THREADS - GC_printf1("Sending restart signal to 0x%x\n", p -> id); - #endif -+# if defined(GC_DARWIN_THREADS) -+ -+ kern_result = thread_resume(p->mach_thread); -+ if(kern_result != KERN_SUCCESS) ABORT("thread_resume failed"); -+ -+# else /* GC_DARWIN_THREADS */ - result = pthread_kill(p -> id, SIG_THR_RESTART); - switch(result) { - case ESRCH: -@@ -889,6 +1067,7 @@ - default: - ABORT("pthread_kill failed"); - } -+# endif /* !GC_DARWIN_THREADS */ - } - } - } -@@ -1039,8 +1218,10 @@ - if (GC_thr_initialized) return; - GC_thr_initialized = TRUE; - -+# if !defined(GC_DARWIN_THREADS) - if (sem_init(&GC_suspend_ack_sem, 0, 0) != 0) - ABORT("sem_init failed"); -+ #endif - - act.sa_flags = SA_RESTART; - if (sigfillset(&act.sa_mask) != 0) { -@@ -1055,6 +1236,7 @@ - } + # if defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) +@@ -19,17 +18,6 @@ # endif - -+# if !defined(GC_DARWIN_THREADS) - /* SIG_THR_RESTART is unmasked by the handler when necessary. */ - act.sa_handler = GC_suspend_handler; - if (sigaction(SIG_SUSPEND, &act, NULL) != 0) { -@@ -1065,6 +1247,7 @@ - if (sigaction(SIG_THR_RESTART, &act, NULL) != 0) { - ABORT("Cannot set SIG_THR_RESTART handler"); - } -+# endif /* !GC_DARWIN_THREADS */ - # ifdef INSTALL_LOOPING_SEGV_HANDLER - act.sa_handler = GC_looping_handler; - if (sigaction(SIGSEGV, &act, NULL) != 0 -@@ -1075,6 +1258,9 @@ - - /* Add the initial thread, so we can stop it. */ - t = GC_new_thread(pthread_self()); -+# ifdef GC_DARWIN_THREADS -+ t -> mach_thread = mach_thread_self(); -+# endif - t -> stack_ptr = (ptr_t)(&dummy); - t -> flags = DETACHED | MAIN_THREAD; - -@@ -1091,6 +1277,12 @@ - # if defined(GC_OSF1_THREADS) || defined(GC_FREEBSD_THREADS) - GC_nprocs = 1; - # endif -+# if defined(GC_DARWIN_THREADS) -+ int ncpus = 1; -+ size_t len = sizeof(ncpus); -+ sysctl((int[2]) {CTL_HW, HW_NCPU}, 2, &ncpus, &len, NULL, 0); -+ GC_nprocs = ncpus; -+# endif - # if defined(GC_LINUX_THREADS) - GC_nprocs = GC_get_nprocs(); - # endif -@@ -1150,7 +1342,7 @@ + # if defined(GC_SOLARIS_THREADS) && !defined(GC_SOLARIS_PTHREADS) + printf("-lthread -ldl\n"); +-# endif +-# if defined(GC_WIN32_THREADS) && defined(CYGWIN32) +- printf("-lpthread\n"); +-# endif +-# if defined(GC_OSF1_THREADS) +- printf("-lpthread -lrt"); +-# endif +- /* You need GCC 3.0.3 to build this one! */ +- /* DG/UX native gcc doesnt know what "-pthread" is */ +-# if defined(GC_DGUX386_THREADS) +- printf("-ldl -pthread\n"); # endif + return 0; } +diff -Nur ../boehm-gc/typd_mlc.c boehm-gc/typd_mlc.c +--- ../boehm-gc/typd_mlc.c Mon May 26 12:48:52 2003 ++++ boehm-gc/typd_mlc.c Fri Aug 17 11:30:46 2001 +@@ -437,7 +437,6 @@ + for (; bm != 0; bm >>= 1, current_p++) { + if (bm & 1) { + current = *current_p; +- FIXUP_POINTER(current); + if ((ptr_t)current >= least_ha && (ptr_t)current <= greatest_ha) { + PUSH_CONTENTS((ptr_t)current, mark_stack_ptr, + mark_stack_limit, current_p, exit1); +@@ -675,9 +674,9 @@ + if( !FASTLOCK_SUCCEEDED() || (op = *opp) == 0 ) { + FASTUNLOCK(); + op = (ptr_t)GENERAL_MALLOC((word)lb, GC_explicit_kind); +- if (0 == op) return 0; ++ if (0 == op) return(0); + # ifdef MERGE_SIZES +- lw = GC_size_map[lb]; /* May have been uninitialized. */ ++ lw = GC_size_map[lb]; /* May have been uninitialized. */ + # endif + } else { + *opp = obj_link(op); +@@ -721,7 +720,7 @@ + FASTUNLOCK(); + op = (ptr_t)GENERAL_MALLOC_IOP(lb, GC_explicit_kind); + # ifdef MERGE_SIZES +- lw = GC_size_map[lb]; /* May have been uninitialized. */ ++ lw = GC_size_map[lb]; /* May have been uninitialized. */ + # endif + } else { + *opp = obj_link(op); +diff -Nur ../boehm-gc/version.h boehm-gc/version.h +--- ../boehm-gc/version.h Mon May 26 12:48:52 2003 ++++ boehm-gc/version.h Mon Feb 11 20:37:53 2002 +@@ -1,25 +1,8 @@ +-/* The version here should match that in configure/configure.in */ +-/* Eventually this one may become unnecessary. For now we need */ +-/* it to keep the old-style build process working. */ +-#define GC_TMP_VERSION_MAJOR 6 +-#define GC_TMP_VERSION_MINOR 2 +-#define GC_TMP_ALPHA_VERSION 5 ++#define GC_VERSION_MAJOR 6 ++#define GC_VERSION_MINOR 1 ++#define GC_ALPHA_VERSION 3 +-#if defined(GC_VERSION_MAJOR) +-# if GC_TMP_VERSION_MAJOR != GC_VERSION_MAJOR || \ +- GC_TMP_VERSION_MINOR != GC_VERSION_MINOR || \ +- GC_TMP_ALPHA_VERSION != GC_ALPHA_VERSION +-# error Inconsistent version info. Check version.h and configure.in. +-# endif +-#else +-# define GC_VERSION_MAJOR GC_TMP_VERSION_MAJOR +-# define GC_VERSION_MINOR GC_TMP_VERSION_MINOR +-# define GC_ALPHA_VERSION GC_TMP_ALPHA_VERSION +-#endif - -+#if !defined(GC_DARWIN_THREADS) - int WRAP_FUNC(pthread_sigmask)(int how, const sigset_t *set, sigset_t *oset) - { - sigset_t fudged_set; -@@ -1162,6 +1354,7 @@ - } - return(REAL_FUNC(pthread_sigmask)(how, set, oset)); - } -+#endif /* !GC_DARWIN_THREADS */ +-#ifndef GC_NOT_ALPHA + # define GC_NOT_ALPHA 0xff +-#endif - /* Wrappers for functions that are likely to block for an appreciable */ - /* length of time. Must be called in pairs, if at all. */ -@@ -1331,6 +1524,9 @@ - # endif - LOCK(); - me = GC_new_thread(my_pthread); -+#ifdef GC_DARWIN_THREADS -+ me -> mach_thread = mach_thread_self(); -+#endif - me -> flags = si -> flags; - me -> stack_ptr = 0; - /* me -> stack_end = GC_linux_stack_base(); -- currently (11/99) */ -diff -ur boehm-gc/mark_rts.c gcc-3.3+/boehm-gc/mark_rts.c ---- boehm-gc/mark_rts.c Mon Mar 3 22:38:29 2003 -+++ boehm-gc/mark_rts.c Mon Jun 16 01:19:56 2003 -@@ -275,33 +275,72 @@ - } + #ifndef GC_NO_VERSION_VAR - /* Internal use only; lock held. */ -+static void GC_remove_root_at_pos(i) -+int i; -+{ -+ GC_root_size -= (GC_static_roots[i].r_end - GC_static_roots[i].r_start); -+ GC_static_roots[i].r_start = GC_static_roots[n_root_sets-1].r_start; -+ GC_static_roots[i].r_end = GC_static_roots[n_root_sets-1].r_end; -+ GC_static_roots[i].r_tmp = GC_static_roots[n_root_sets-1].r_tmp; -+ n_root_sets--; -+} -+ -+#if !defined(MSWIN32) && !defined(MSWINCE) -+static void GC_rebuild_root_index() -+{ -+ register int i; -+ -+ for (i = 0; i < RT_SIZE; i++) GC_root_index[i] = 0; -+ for (i = 0; i < n_root_sets; i++) -+ add_roots_to_index(GC_static_roots + i); -+} -+#endif -+ -+/* Internal use only; lock held. */ - void GC_remove_tmp_roots() - { - register int i; - - for (i = 0; i < n_root_sets; ) { - if (GC_static_roots[i].r_tmp) { -- GC_root_size -= -- (GC_static_roots[i].r_end - GC_static_roots[i].r_start); -- GC_static_roots[i].r_start = GC_static_roots[n_root_sets-1].r_start; -- GC_static_roots[i].r_end = GC_static_roots[n_root_sets-1].r_end; -- GC_static_roots[i].r_tmp = GC_static_roots[n_root_sets-1].r_tmp; -- n_root_sets--; -+ GC_remove_root_at_pos(i); - } else { - i++; - } - } --# if !defined(MSWIN32) && !defined(MSWINCE) -- { -- register int i; -- -- for (i = 0; i < RT_SIZE; i++) GC_root_index[i] = 0; -- for (i = 0; i < n_root_sets; i++) -- add_roots_to_index(GC_static_roots + i); -- } --# endif -+ #if !defined(MSWIN32) && !defined(MSWINCE) -+ GC_rebuild_root_index(); -+ #endif -+} -+ -+#if !defined(MSWIN32) && !defined(MSWINCE) -+void GC_remove_roots(b, e) -+char * b; char * e; -+{ -+ DCL_LOCK_STATE; - -+ DISABLE_SIGNALS(); -+ LOCK(); -+ GC_remove_roots_inner(b, e); -+ UNLOCK(); -+ ENABLE_SIGNALS(); -+} -+ -+/* Should only be called when the lock is held */ -+void GC_remove_roots_inner(b,e) -+char * b; char * e; -+{ -+ int i; -+ for (i = 0; i < n_root_sets; ) { -+ if (GC_static_roots[i].r_start >= (ptr_t)b && GC_static_roots[i].r_end <= (ptr_t)e) { -+ GC_remove_root_at_pos(i); -+ } else { -+ i++; -+ } -+ } -+ GC_rebuild_root_index(); +diff -Nur ../boehm-gc/win32_threads.c boehm-gc/win32_threads.c +--- ../boehm-gc/win32_threads.c Mon May 26 12:48:52 2003 ++++ boehm-gc/win32_threads.c Mon Apr 28 13:55:07 2003 +@@ -1,27 +1,13 @@ +-#if defined(GC_WIN32_THREADS) ++#if defined(GC_WIN32_THREADS) + + #include "private/gc_priv.h" + +-#ifdef CYGWIN32 +-# include +- +- /* Cygwin-specific forward decls */ +-# undef pthread_create +-# undef pthread_sigmask +-# undef pthread_join +-# undef dlopen +- +-# define DEBUG_CYGWIN_THREADS 0 +- +- GC_bool GC_thr_initialized = FALSE; +- void * GC_start_routine(void * arg); +- void GC_thread_exit_proc(void *arg); +- ++#if 0 ++#define STRICT ++#include + #endif + +-#ifndef MAX_THREADS +-# define MAX_THREADS 64 +-#endif ++#define MAX_THREADS 64 + + struct thread_entry { + LONG in_use; +@@ -32,12 +18,6 @@ + /* !in_use ==> stack == 0 */ + CONTEXT context; + GC_bool suspended; +- +-# ifdef CYGWIN32 +- void *status; /* hold exit value until join in case it's a pointer */ +- pthread_t pthread_id; +-# endif +- + }; + + volatile GC_bool GC_please_stop = FALSE; +@@ -49,12 +29,6 @@ + /* Unlike the other threads implementations, the thread table here */ + /* contains no pointers to the collectable heap. Thus we have */ + /* no private structures we need to preserve. */ +-# ifdef CYGWIN32 +- { int i; /* pthreads may keep a pointer in the thread exit value */ +- for (i = 0; i < MAX_THREADS; i++) +- if (thread_table[i].in_use) GC_push_all((ptr_t)&(thread_table[i].status),(ptr_t)(&(thread_table[i].status)+1)); +- } +-# endif } -+#endif /* !defined(MSWIN32) && !defined(MSWINCE) */ - #if defined(MSWIN32) || defined(_WIN32_WCE_EMULATION) - /* Workaround for the OS mapping and unmapping behind our back: */ -diff -ur boehm-gc/misc.c gcc-3.3+/boehm-gc/misc.c ---- boehm-gc/misc.c Mon Mar 3 22:38:30 2003 -+++ boehm-gc/misc.c Mon Jun 16 01:19:56 2003 -@@ -473,6 +473,14 @@ - GC_init_parallel(); + void GC_stop_world() +@@ -62,10 +36,6 @@ + DWORD thread_id = GetCurrentThreadId(); + int i; + +-#ifdef CYGWIN32 +- if (!GC_thr_initialized) ABORT("GC_stop_world() called before GC_thr_init()"); +-#endif +- + GC_please_stop = TRUE; + for (i = 0; i < MAX_THREADS; i++) + if (thread_table[i].stack != 0 +@@ -83,15 +53,11 @@ + DWORD exitCode; + if (GetExitCodeThread(thread_table[i].handle,&exitCode) && + exitCode != STILL_ACTIVE) { +- thread_table[i].stack = 0; /* prevent stack from being pushed */ +-# ifndef CYGWIN32 +- /* this breaks pthread_join on Cygwin, which is guaranteed to */ +- /* only see user pthreads */ ++ thread_table[i].stack = 0; + thread_table[i].in_use = FALSE; + CloseHandle(thread_table[i].handle); + BZERO((void *)(&thread_table[i].context), sizeof(CONTEXT)); +-# endif +- continue; ++ continue; } - # endif /* PARALLEL_MARK || THREAD_LOCAL_ALLOC */ -+# if defined(DYNAMIC_LOADING) && defined(DARWIN) -+ { -+ /* This must be called WITHOUT the allocation lock held -+ and before any threads are created */ -+ extern void GC_init_dyld(); -+ GC_init_dyld(); -+ } -+# endif + if (SuspendThread(thread_table[i].handle) == (DWORD)-1) + ABORT("SuspendThread failed"); +@@ -369,11 +335,9 @@ + if (*lo < start) *lo = start; } - #if defined(MSWIN32) || defined(MSWINCE) -diff -ur boehm-gc/os_dep.c gcc-3.3+/boehm-gc/os_dep.c ---- boehm-gc/os_dep.c Fri Jul 19 01:54:43 2002 -+++ boehm-gc/os_dep.c Mon Jun 16 01:19:56 2003 -@@ -1087,7 +1087,7 @@ - void GC_register_data_segments() - { - # if !defined(PCR) && !defined(SRC_M3) && !defined(NEXT) && !defined(MACOS) \ -- && !defined(MACOSX) -+ && !defined(DARWIN) - # if defined(REDIRECT_MALLOC) && defined(GC_SOLARIS_THREADS) - /* As of Solaris 2.3, the Solaris threads implementation */ - /* allocates the data structure for the initial thread with */ -@@ -1104,7 +1104,7 @@ - # endif - # endif - # endif --# if !defined(PCR) && (defined(NEXT) || defined(MACOSX)) -+# if !defined(PCR) && (defined(NEXT) || defined(DARWIN)) - GC_add_roots_inner(DATASTART, (char *) get_end(), FALSE); - # endif - # if defined(MACOS) -@@ -1829,7 +1829,7 @@ - typedef void (* SIG_PF)(); - #endif - #if defined(SUNOS5SIGS) || defined(OSF1) || defined(LINUX) \ -- || defined(MACOSX) || defined(HURD) -+ || defined(DARWIN) || defined(HURD) - # ifdef __STDC__ - typedef void (* SIG_PF)(int); - # else -@@ -1897,9 +1897,10 @@ - # endif /* !ALPHA */ - # endif +-#if !defined(MSWINCE) && defined(GC_DLL) +- +-/* We register threads from DllMain */ ++#if !defined(MSWINCE) && !(defined(__MINGW32__) && !defined(_DLL)) --# if defined(MACOSX) /* Should also test for PowerPC? */ -+# if defined(DARWIN) - typedef void (* REAL_SIG_PF)(int, int, struct sigcontext *); +-GC_API HANDLE GC_CreateThread( ++HANDLE WINAPI GC_CreateThread( + LPSECURITY_ATTRIBUTES lpThreadAttributes, + DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, + LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ) +@@ -382,10 +346,7 @@ + lpParameter, dwCreationFlags, lpThreadId); + } -+# if defined(PPC) - /* Decodes the machine instruction which was responsible for the sending of the - SIGBUS signal. Sadly this is the only way to find the faulting address because - the signal handler doesn't get it directly from the kernel (although it is -@@ -2022,7 +2023,10 @@ - #endif - return (char *)addr; +-#else /* defined(MSWINCE) || !defined(GC_DLL)) */ +- +-/* We have no DllMain to take care of new threads. Thus we */ +-/* must properly intercept thread creation. */ ++#else /* !defined(MSWINCE) && !(defined(__MINGW32__) && !defined(_DLL)) */ + + typedef struct { + HANDLE child_ready_h, parent_ready_h; +@@ -509,7 +470,7 @@ + + return ret; } --#endif /* MACOSX */ -+#else /* non-ppc */ -+--> FIXME for non-ppc os x -+#endif -+#endif /* DARWIN */ +-#endif /* !defined(MSWINCE) && !(defined(__MINGW32__) && !defined(_DLL)) */ ++#endif /* !defined(MSWINCE) && !(defined(__MINGW32__) && !defined(_DLL)) */ - SIG_PF GC_old_bus_handler; - SIG_PF GC_old_segv_handler; /* Also old MSWIN32 ACCESS_VIOLATION filter */ -@@ -2146,7 +2150,7 @@ - # endif - # endif + #ifdef MSWINCE --# if defined(MACOSX) -+# if defined(DARWIN) - void GC_write_fault_handler(int sig, int code, struct sigcontext *scp) - # define SIG_OK (sig == SIGBUS) - # define CODE_OK (code == 0 /* experimentally determined */) -@@ -2225,7 +2229,7 @@ - # endif - # endif - # endif --# if defined(MACOSX) -+# if defined(DARWIN) - char * addr = get_fault_addr(scp); - # endif - # if defined(MSWIN32) || defined(MSWINCE) -@@ -2291,7 +2295,7 @@ - (*(REAL_SIG_PF)old_handler) (sig, code, scp); - return; - # endif --# ifdef MACOSX -+# ifdef DARWIN - (*(REAL_SIG_PF)old_handler) (sig, code, scp); - # endif - # ifdef MSWIN32 -@@ -2389,7 +2393,7 @@ - (void)sigaddset(&act.sa_mask, SIG_SUSPEND); - # endif /* SIG_SUSPEND */ - # endif --# if defined(MACOSX) -+# if defined(DARWIN) - struct sigaction act, oldact; +@@ -566,256 +527,13 @@ - act.sa_flags = SA_RESTART; -@@ -2458,7 +2462,7 @@ - # endif - } - # endif --# if defined(MACOSX) || defined(HPUX) || defined(LINUX) || defined(HURD) -+# if defined(DARWIN) || defined(HPUX) || defined(LINUX) || defined(HURD) - sigaction(SIGBUS, &act, &oldact); - GC_old_bus_handler = oldact.sa_handler; - if (GC_old_bus_handler == SIG_IGN) { -diff -ur boehm-gc/tests/test.c gcc-3.3+/boehm-gc/tests/test.c ---- boehm-gc/tests/test.c Mon Feb 11 20:37:57 2002 -+++ boehm-gc/tests/test.c Mon Jun 16 01:19:56 2003 -@@ -1326,6 +1326,10 @@ - int dummy; - # endif - n_tests = 0; + LONG WINAPI GC_write_fault_handler(struct _EXCEPTION_POINTERS *exc_info); + +-/* threadAttach/threadDetach routines used by both CYGWIN and DLL +- * implementation, since both recieve explicit notification on thread +- * creation/destruction. +- */ +-static void threadAttach() { +- int i; +- /* It appears to be unsafe to acquire a lock here, since this */ +- /* code is apparently not preeemptible on some systems. */ +- /* (This is based on complaints, not on Microsoft's official */ +- /* documentation, which says this should perform "only simple */ +- /* inititalization tasks".) */ +- /* Hence we make do with nonblocking synchronization. */ +- +- /* The following should be a noop according to the win32 */ +- /* documentation. There is empirical evidence that it */ +- /* isn't. - HB */ +-# if defined(MPROTECT_VDB) +- if (GC_incremental) SetUnhandledExceptionFilter(GC_write_fault_handler); +-# endif +- /* cast away volatile qualifier */ +- for (i = 0; InterlockedExchange((LONG*)&thread_table[i].in_use,1) != 0; i++) { +- /* Compare-and-swap would make this cleaner, but that's not */ +- /* supported before Windows 98 and NT 4.0. In Windows 2000, */ +- /* InterlockedExchange is supposed to be replaced by */ +- /* InterlockedExchangePointer, but that's not really what I */ +- /* want here. */ +- if (i == MAX_THREADS - 1) +- ABORT("too many threads"); +- } +- thread_table[i].id = GetCurrentThreadId(); +-# ifdef CYGWIN32 +- thread_table[i].pthread_id = pthread_self(); +-# endif +- if (!DuplicateHandle(GetCurrentProcess(), +- GetCurrentThread(), +- GetCurrentProcess(), +- (HANDLE*)&thread_table[i].handle, +- 0, +- 0, +- DUPLICATE_SAME_ACCESS)) { +- DWORD last_error = GetLastError(); +- GC_printf1("Last error code: %lx\n", last_error); +- ABORT("DuplicateHandle failed"); +- } +- thread_table[i].stack = GC_get_stack_base(); +- if (thread_table[i].stack == NULL) +- ABORT("Failed to find stack base in threadAttach"); +- /* If this thread is being created while we are trying to stop */ +- /* the world, wait here. Hopefully this can't happen on any */ +- /* systems that don't allow us to block here. */ +- while (GC_please_stop) Sleep(20); +-} +- +-static void threadDetach(DWORD thread_id) { +- int i; +- +- LOCK(); +- for (i = 0; +- i < MAX_THREADS && +- !thread_table[i].in_use || thread_table[i].id != thread_id; +- i++) {} +- if (i >= MAX_THREADS ) { +- WARN("thread %ld not found on detach", (GC_word)thread_id); +- } +- else { +- thread_table[i].stack = 0; +- thread_table[i].in_use = FALSE; +- CloseHandle(thread_table[i].handle); +- /* cast away volatile qualifier */ +- BZERO((void *)&thread_table[i].context, sizeof(CONTEXT)); +- } +- UNLOCK(); +-} +- +-#ifdef CYGWIN32 +- +-/* Called by GC_init() - we hold the allocation lock. */ +-void GC_thr_init() { +- if (GC_thr_initialized) return; +- GC_thr_initialized = TRUE; +- +-#if 0 +- /* this might already be handled in GC_init... */ +- InitializeCriticalSection(&GC_allocate_ml); +-#endif +- +- /* Add the initial thread, so we can stop it. */ +- threadAttach(); +-} +- +-struct start_info { +- void *(*start_routine)(void *); +- void *arg; +-}; +- +-int GC_pthread_join(pthread_t pthread_id, void **retval) { +- int result; +- int i; +- +-# if DEBUG_CYGWIN_THREADS +- GC_printf3("thread 0x%x(0x%x) is joining thread 0x%x.\n",(int)pthread_self(), +- GetCurrentThreadId(), (int)pthread_id); +-# endif +- +- /* Can't do any table lookups here, because thread being joined +- might not have registered itself yet */ +- +- result = pthread_join(pthread_id, retval); +- +- LOCK(); +- for (i = 0; !thread_table[i].in_use || thread_table[i].pthread_id != pthread_id; +- i++) { +- if (i == MAX_THREADS - 1) { +- GC_printf1("Failed to find thread 0x%x in pthread_join()\n", pthread_id); +- ABORT("thread not found on detach"); +- } +- } +- UNLOCK(); +- threadDetach(thread_table[i].id); +- +-# if DEBUG_CYGWIN_THREADS +- GC_printf3("thread 0x%x(0x%x) completed join with thread 0x%x.\n", +- (int)pthread_self(), GetCurrentThreadId(), (int)pthread_id); +-# endif +- +- return result; +-} +- +-/* Cygwin-pthreads calls CreateThread internally, but it's not +- * easily interceptible by us.. +- * so intercept pthread_create instead +- */ +-int +-GC_pthread_create(pthread_t *new_thread, +- const pthread_attr_t *attr, +- void *(*start_routine)(void *), void *arg) { +- int result; +- struct start_info * si; +- +- if (!GC_is_initialized) GC_init(); +- /* make sure GC is initialized (i.e. main thread is attached) */ +- +- /* This is otherwise saved only in an area mmapped by the thread */ +- /* library, which isn't visible to the collector. */ +- si = GC_malloc_uncollectable(sizeof(struct start_info)); +- if (0 == si) return(EAGAIN); +- +- si -> start_routine = start_routine; +- si -> arg = arg; +- +-# if DEBUG_CYGWIN_THREADS +- GC_printf2("About to create a thread from 0x%x(0x%x)\n",(int)pthread_self(), +- GetCurrentThreadId); +-# endif +- result = pthread_create(new_thread, attr, GC_start_routine, si); +- +- if (result) { /* failure */ +- GC_free(si); +- } +- +- return(result); +-} +- +-void * GC_start_routine(void * arg) +-{ +- struct start_info * si = arg; +- void * result; +- void *(*start)(void *); +- void *start_arg; +- pthread_t pthread_id; +- int i; +- +-# if DEBUG_CYGWIN_THREADS +- GC_printf2("thread 0x%x(0x%x) starting...\n",(int)pthread_self(), +- GetCurrentThreadId()); +-# endif +- +- /* If a GC occurs before the thread is registered, that GC will */ +- /* ignore this thread. That's fine, since it will block trying to */ +- /* acquire the allocation lock, and won't yet hold interesting */ +- /* pointers. */ +- LOCK(); +- /* We register the thread here instead of in the parent, so that */ +- /* we don't need to hold the allocation lock during pthread_create. */ +- threadAttach(); +- UNLOCK(); +- +- start = si -> start_routine; +- start_arg = si -> arg; +- pthread_id = pthread_self(); +- +- GC_free(si); /* was allocated uncollectable */ +- +- pthread_cleanup_push(GC_thread_exit_proc, pthread_id); +- result = (*start)(start_arg); +- pthread_cleanup_pop(0); +- +-# if DEBUG_CYGWIN_THREADS +- GC_printf2("thread 0x%x(0x%x) returned from start routine.\n", +- (int)pthread_self(),GetCurrentThreadId()); +-# endif +- +- LOCK(); +- for (i = 0; thread_table[i].pthread_id != pthread_id; i++) { +- if (i == MAX_THREADS - 1) +- ABORT("thread not found on exit"); +- } +- thread_table[i].status = result; +- UNLOCK(); +- +- return(result); +-} +- +-void GC_thread_exit_proc(void *arg) +-{ +- pthread_t pthread_id = (pthread_t)arg; +- int i; +- +-# if DEBUG_CYGWIN_THREADS +- GC_printf2("thread 0x%x(0x%x) called pthread_exit().\n", +- (int)pthread_self(),GetCurrentThreadId()); +-# endif +- +- LOCK(); +- for (i = 0; thread_table[i].pthread_id != pthread_id; i++) { +- if (i == MAX_THREADS - 1) +- ABORT("thread not found on exit"); +- } +- UNLOCK(); +- +-#if 0 +- /* TODO: we need a way to get the exit value after a pthread_exit so we can stash it safely away */ +- thread_table[i].status = ??? +-#endif +-} +- +-/* nothing required here... */ +-int GC_pthread_sigmask(int how, const sigset_t *set, sigset_t *oset) { +- return pthread_sigmask(how, set, oset); +-} +-int GC_pthread_detach(pthread_t thread) { +- return pthread_detach(thread); +-} +-#else /* !CYGWIN32 */ ++#ifdef GC_DLL + + /* +- * We avoid acquiring locks here, since this doesn't seem to be preemptable. ++ * This isn't generally safe, since DllMain is not premptible. ++ * If another thread holds the lock while this runs we're in trouble. + * Pontus Rydin suggests wrapping the thread start routine instead. + */ +-#ifdef GC_DLL + BOOL WINAPI DllMain(HINSTANCE inst, ULONG reason, LPVOID reserved) + { + switch (reason) { +@@ -824,13 +542,75 @@ + GC_init(); /* Force initialization before thread attach. */ + /* fall through */ + case DLL_THREAD_ATTACH: +- threadAttach(); +- break; ++ { ++ int i; ++ /* It appears to be unsafe to acquire a lock here, since this */ ++ /* code is apparently not preeemptible on some systems. */ ++ /* (This is based on complaints, not on Microsoft's official */ ++ /* documentation, which says this should perform "only simple */ ++ /* inititalization tasks".) */ ++ /* Hence we make do with nonblocking synchronization. */ + -+#if defined(__APPLE__) && defined(__MACH__) -+ GC_INIT(); -+#endif - - # if defined(DJGPP) - /* No good way to determine stack base from library; do it */ -@@ -1625,6 +1629,10 @@ - (void)GC_printf0("pthread_default_stacksize_np failed.\n"); - } - # endif /* GC_HPUX_THREADS */ -+# if defined(__APPLE__) && defined(__MACH__) -+ GC_INIT(); -+# endif ++ /* The following should be a noop according to the win32 */ ++ /* documentation. There is empirical evidence that it */ ++ /* isn't. - HB */ ++# ifdef MPROTECT_VDB ++ if (GC_incremental) SetUnhandledExceptionFilter(GC_write_fault_handler); ++# endif + ++ for (i = 0; ++ /* cast away volatile qualifier */ ++ InterlockedExchange((LPLONG) &thread_table[i].in_use, 1) != 0; ++ i++) { ++ /* Compare-and-swap would make this cleaner, but that's not */ ++ /* supported before Windows 98 and NT 4.0. In Windows 2000, */ ++ /* InterlockedExchange is supposed to be replaced by */ ++ /* InterlockedExchangePointer, but that's not really what I */ ++ /* want here. */ ++ if (i == MAX_THREADS - 1) ++ ABORT("too many threads"); ++ } ++ thread_table[i].id = GetCurrentThreadId(); ++ if (!DuplicateHandle(GetCurrentProcess(), ++ GetCurrentThread(), ++ GetCurrentProcess(), ++ /* cast away volatile qualifier */ ++ (HANDLE *) &thread_table[i].handle, ++ 0, ++ 0, ++ DUPLICATE_SAME_ACCESS)) { ++ DWORD last_error = GetLastError(); ++ GC_printf1("Last error code: %lx\n", last_error); ++ ABORT("DuplicateHandle failed"); ++ } ++ thread_table[i].stack = GC_get_stack_base(); ++ /* If this thread is being created while we are trying to stop */ ++ /* the world, wait here. Hopefully this can't happen on any */ ++ /* systems that don't allow us to block here. */ ++ while (GC_please_stop) Sleep(20); ++ } ++ break; + case DLL_THREAD_DETACH: +- threadDetach(GetCurrentThreadId()); ++ { ++ int i; ++ DWORD thread_id = GetCurrentThreadId(); ++ LOCK(); ++ for (i = 0; ++ i < MAX_THREADS && ++ (thread_table[i].stack == 0 || thread_table[i].id != thread_id); ++ i++) {} ++ if (i >= MAX_THREADS) { ++ WARN("thread %ld not found on detach", (GC_word)thread_id); ++ } else { ++ thread_table[i].stack = 0; ++ thread_table[i].in_use = FALSE; ++ CloseHandle(thread_table[i].handle); ++ /* cast away volatile qualifier */ ++ BZERO((void *) &thread_table[i].context, sizeof(CONTEXT)); ++ } ++ UNLOCK(); ++ } + break; +- + case DLL_PROCESS_DETACH: + { + int i; +@@ -856,8 +636,8 @@ + } + return TRUE; + } +-#endif /* GC_DLL */ +-#endif /* !CYGWIN32 */ + - pthread_attr_init(&attr); - # if defined(GC_IRIX_THREADS) || defined(GC_FREEBSD_THREADS) - pthread_attr_setstacksize(&attr, 1000000); -diff -ur boehm-gc/tests/test_cpp.cc gcc-3.3+/boehm-gc/tests/test_cpp.cc ---- boehm-gc/tests/test_cpp.cc Fri Aug 17 11:30:51 2001 -+++ boehm-gc/tests/test_cpp.cc Mon Jun 16 01:19:56 2003 -@@ -189,6 +189,8 @@ - # endif - #endif ++# endif /* GC_DLL */ + + # endif /* !MSWINCE */ -+ GC_init(); -+ - # if defined(MACOS) // MacOS - char* argv_[] = {"test_cpp", "10"}; // doesn't - argv = argv_; // have a -diff -ur boehm-gc/threadlibs.c gcc-3.3+/boehm-gc/threadlibs.c ---- boehm-gc/threadlibs.c Mon Feb 11 20:37:53 2002 -+++ boehm-gc/threadlibs.c Mon Jun 16 01:19:56 2003 -@@ -10,7 +10,8 @@ - "-Wl,--wrap -Wl,pthread_sigmask -Wl,--wrap -Wl,sleep\n"); - # endif - # if defined(GC_LINUX_THREADS) || defined(GC_IRIX_THREADS) \ -- || defined(GC_FREEBSD_THREADS) || defined(GC_SOLARIS_PTHREADS) -+ || defined(GC_FREEBSD_THREADS) || defined(GC_SOLARIS_PTHREADS) \ -+ || defined(GC_DARWIN_THREADS) - printf("-lpthread\n"); - # endif - # if defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) ---- gcc/unwind-dw2-fde-darwin.c Sun Sep 7 01:26:14 2003 -+++ gcc/unwind-dw2-fde-darwin.c Sun Sep 7 01:26:17 2003 -@@ -27,6 +27,7 @@ - /* Locate the FDE entry for a given address, using Darwin's keymgr support. */ - - #include "tconfig.h" -+#include - #include - #include - #include "dwarf2.h" -- 1.7.10.4