1 diff -Nubr boehm-gc/CVS/Entries ../boehm-gc/CVS/Entries
2 --- boehm-gc/CVS/Entries Wed Dec 31 16:00:00 1969
3 +++ ../boehm-gc/CVS/Entries Sat May 31 21:19:56 2003
5 +/BCC_MAKEFILE/1.2/Fri Sep 14 00:43:21 2001//
6 +/ChangeLog/1.15/Wed Jan 22 06:02:28 2003//
7 +/EMX_MAKEFILE/1.2/Fri Sep 14 00:43:22 2001//
8 +/MacProjects.sit.hqx/1.2/Fri Sep 14 00:43:22 2001//
9 +/Makefile.DLLs/1.2/Fri Sep 14 00:43:22 2001//
10 +/Makefile.am/1.8/Thu Oct 24 23:42:27 2002//
11 +/Makefile.direct/1.4/Thu Mar 14 07:28:09 2002//
12 +/Makefile.dist/1.2/Fri Sep 14 00:43:22 2001//
13 +/Makefile.dj/1.3/Tue Oct 23 03:47:12 2001//
14 +/Makefile.in/1.9/Wed Jan 22 06:02:28 2003//
15 +/NT_MAKEFILE/1.2/Fri Sep 14 00:43:23 2001//
16 +/NT_THREADS_MAKEFILE/1.3/Tue Oct 23 03:47:12 2001//
17 +/OS2_MAKEFILE/1.2/Fri Sep 14 00:43:23 2001//
18 +/PCR-Makefile/1.2/Fri Sep 14 00:43:23 2001//
19 +/SMakefile.amiga/1.2/Fri Sep 14 00:43:24 2001//
20 +/WCC_MAKEFILE/1.2/Fri Sep 14 00:43:24 2001//
21 +/allchblk.c/1.5/Sun Apr 21 00:58:58 2002//
22 +/alloc.c/1.3/Thu Mar 14 07:28:10 2002//
23 +/alpha_mach_dep.s/1.2/Fri Sep 14 00:43:25 2001//
24 +/backgraph.c/1.1.1.1/Thu Mar 14 03:39:41 2002//
25 +/callprocs/1.2/Fri Sep 14 00:43:25 2001//
26 +/config.guess/1.3/Thu Mar 14 07:28:10 2002//
27 +/config.sub/1.3/Thu Mar 14 07:28:10 2002//
28 +/configure.host/1.2/Fri Sep 14 00:43:26 2001//
29 +/configure.in/1.10/Fri Aug 2 10:04:37 2002//
30 +/dbg_mlc.c/1.5/Thu Aug 1 15:37:15 2002//
31 +/digimars.mak/1.2/Fri Sep 14 00:43:26 2001//
32 +/dyn_load.c/1.6/Sun Apr 21 00:58:58 2002//
33 +/finalize.c/1.4/Thu Mar 14 07:28:11 2002//
34 +/gc.mak/1.3/Tue Oct 23 03:47:14 2001//
35 +/gc_cpp.cc/1.2/Fri Sep 14 00:43:27 2001//
36 +/gc_cpp.cpp/1.2/Fri Sep 14 00:43:27 2001//
37 +/gc_dlopen.c/1.3/Tue Oct 23 03:47:14 2001//
38 +/gcj_mlc.c/1.3/Thu Mar 14 07:28:12 2002//
39 +/if_mach.c/1.2/Fri Sep 14 00:43:28 2001//
40 +/install-sh/1.2/Fri Sep 14 00:43:28 2001//
41 +/irix_threads.c/1.5/Fri Aug 2 10:04:37 2002//
42 +/mach_dep.c/1.5/Fri Aug 2 10:04:37 2002//
43 +/malloc.c/1.4/Thu Mar 14 07:28:13 2002//
44 +/mallocx.c/1.2/Fri Sep 14 00:43:29 2001//
45 +/mark.c/1.4/Thu Apr 4 07:13:13 2002//
46 +/mark_rts.c/1.4/Thu Mar 14 07:28:14 2002//
47 +/misc.c/1.6/Sun Apr 21 00:58:59 2002//
48 +/mkinstalldirs/1.2/Fri Sep 14 00:43:30 2001//
49 +/os_dep.c/1.7/Fri Aug 2 10:04:37 2002//
50 +/pc_excludes/1.2/Fri Sep 14 00:43:31 2001//
51 +/powerpc_macosx_mach_dep.s/1.2/Fri Sep 14 00:43:31 2001//
52 +/ptr_chck.c/1.2/Fri Sep 14 00:43:31 2001//
53 +/reclaim.c/1.5/Thu Apr 4 07:13:15 2002//
54 +/solaris_pthreads.c/1.4/Thu Mar 14 07:28:17 2002//
55 +/solaris_threads.c/1.5/Thu Mar 14 07:28:18 2002//
56 +/threadlibs.c/1.4/Thu Mar 14 07:28:19 2002//
57 +/typd_mlc.c/1.2/Fri Sep 14 00:43:33 2001//
58 +/version.h/1.4/Thu Mar 14 07:28:19 2002//
59 +/win32_threads.c/1.6/Thu Oct 24 23:42:27 2002//
65 +/AmigaOS.c/1.2/Mon May 26 19:48:52 2003//
66 +/MacOS.c/1.2/Mon May 26 19:48:52 2003//
67 +/add_gc_prefix.c/1.2/Mon May 26 19:48:52 2003//
68 +/blacklst.c/1.2/Mon May 26 19:48:52 2003//
69 +/checksums.c/1.2/Mon May 26 19:48:52 2003//
70 +/gcc_support.c/1.2/Mon May 26 19:48:52 2003//
71 +/gcname.c/1.2/Mon May 26 19:48:52 2003//
72 +/headers.c/1.2/Mon May 26 19:48:52 2003//
73 +/hpux_test_and_clear.s/1.2/Mon May 26 19:48:52 2003//
74 +/ia64_save_regs_in_stack.s/1.1.1.1/Mon May 26 19:48:52 2003//
75 +/if_not_there.c/1.2/Mon May 26 19:48:52 2003//
76 +/linux_threads.c/1.8/Sun Jun 1 04:17:20 2003//
77 +/ltconfig/1.3/Sun Jun 1 04:17:20 2003//
78 +/ltmain.sh/1.3/Sun Jun 1 04:17:20 2003//
79 +/mips_ultrix_mach_dep.s/1.2/Mon May 26 19:48:52 2003//
80 +/new_hblk.c/1.3/Mon May 26 19:48:52 2003//
81 +/obj_map.c/1.2/Mon May 26 19:48:52 2003//
82 +/pcr_interface.c/1.2/Mon May 26 19:48:52 2003//
83 +/real_malloc.c/1.2/Mon May 26 19:48:52 2003//
84 +/rs6000_mach_dep.s/1.3/Mon May 26 19:48:52 2003//
85 +/setjmp_t.c/1.2/Mon May 26 19:48:52 2003//
86 +/sparc_netbsd_mach_dep.s/1.2/Mon May 26 19:48:52 2003//
87 +/sparc_sunos4_mach_dep.s/1.2/Mon May 26 19:48:52 2003//
88 +/specific.c/1.4/Mon May 26 19:48:52 2003//
89 +/stubborn.c/1.2/Mon May 26 19:48:52 2003//
90 +/acinclude.m4/1.4/Sun Jun 1 04:19:55 2003//
91 +/aclocal.m4/1.3/Sun Jun 1 04:19:55 2003//
92 +/configure/1.11/Sun Jun 1 04:19:56 2003//
93 +/libtool.m4/1.2/Sun Jun 1 04:19:56 2003//
94 diff -Nubr boehm-gc/CVS/Repository ../boehm-gc/CVS/Repository
95 --- boehm-gc/CVS/Repository Wed Dec 31 16:00:00 1969
96 +++ ../boehm-gc/CVS/Repository Sun May 25 12:49:01 2003
98 +/cvs/root/gcc3/gcc3/boehm-gc
99 diff -Nubr boehm-gc/CVS/Root ../boehm-gc/CVS/Root
100 --- boehm-gc/CVS/Root Wed Dec 31 16:00:00 1969
101 +++ ../boehm-gc/CVS/Root Sun May 25 12:49:01 2003
103 +:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root
104 diff -Nubr boehm-gc/ChangeLog ../boehm-gc/ChangeLog
105 --- boehm-gc/ChangeLog Tue May 13 17:08:56 2003
106 +++ ../boehm-gc/ChangeLog Tue Jan 21 22:02:28 2003
108 -2003-05-13 Release Manager
110 - * GCC 3.3 Released.
112 -2003-05-13 Release Manager
114 - * GCC 3.3 Released.
116 -2003-05-13 Release Manager
118 - * GCC 3.3 Released.
120 -2003-05-13 Release Manager
122 - * GCC 3.3 Released.
124 -2003-04-28 Mohan Embar <gnustuff@thisiscool.com>
126 - * configure.in: define GC_DLL under mingw if --enable-shared
127 - * configure: rebuilt
128 - * win32_threads.c: add #ifdef GC_DLL around DllMain
130 -2003-04-09 Tom Tromey <tromey@redhat.com>
132 - * include/private/gcconfig.h (LINUX_STACKBOTTOM): Define for
134 - (STACK_GRAN, HEURISTIC1): Don't define for POWERPC.
136 -2003-03-04 Hans Boehm <Hans.Boehm@hp.com>
137 - * include/private/gcconfig.h (GC_data_start): declare when needed.
138 - * include/private/gc_priv.h: Include gcconfig.h after ptr_t
141 -2003-03-03 Hans Boehm <Hans.Boehm@hp.com>
142 - * mark_rts.c (GC_cond_register_dynamic_libraries): add.
143 - (GC_push_roots): explicitly mark free list headers, register
144 - dynamic libraries only if !REGISTER_LIBRARIES_EARLY.
145 - * alloc.c (GC_stopped_mark): Conditionally call
146 - GC_cond_register_dynamic_libraries().
147 - (GC_collect_a_little_inner, GC_try_to_collect_inner): Check GC_dont_gc.
148 - * dyn_load.c (GC_register_main_static_data): define.
149 - (GC_register_dyn_libraries (Linux /proc, Linux ELF versions)):
150 - no longer skip main data. Register main data for static executable.
151 - * misc.c (GC_REGISTER_MAIN_STATIC_DATA): define.
152 - (GC_init_inner): Make main data registration conditional.
153 - * include/private/gc_priv.h (GC_register_main_static_data): declare.
154 - * include/private/gcconfig.h (REGISTER_LIBRARIES_EARLY): define
157 -2003-02-20 Alexandre Oliva <aoliva@redhat.com>
159 - * configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to
161 - * configure: Rebuilt.
163 -2003-02-11 Andreas Tobler <a.tobler@schweiz.ch>
165 - * include/private/gcconfig.h: undefine MPROTECT_VDB for MACOSX
167 -2003-01-27 Alexandre Oliva <aoliva@redhat.com>
169 - * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST.
170 - Remove USE_LIBDIR conditional.
171 - * Makefile.am (toolexecdir, toolexeclibdir): Don't override.
172 - * Makefile.in, configure: Rebuilt.
174 2002-12-31 Tom Tromey <tromey@redhat.com>
177 diff -Nubr boehm-gc/Mac_files/CVS/Entries ../boehm-gc/Mac_files/CVS/Entries
178 --- boehm-gc/Mac_files/CVS/Entries Wed Dec 31 16:00:00 1969
179 +++ ../boehm-gc/Mac_files/CVS/Entries Sun May 25 12:49:07 2003
181 +/MacOS_Test_config.h/1.2/Fri Sep 14 00:43:44 2001//
182 +/MacOS_config.h/1.2/Fri Sep 14 00:43:44 2001//
183 +/dataend.c/1.2/Fri Sep 14 00:43:44 2001//
184 +/datastart.c/1.2/Fri Sep 14 00:43:44 2001//
186 diff -Nubr boehm-gc/Mac_files/CVS/Repository ../boehm-gc/Mac_files/CVS/Repository
187 --- boehm-gc/Mac_files/CVS/Repository Wed Dec 31 16:00:00 1969
188 +++ ../boehm-gc/Mac_files/CVS/Repository Sun May 25 12:49:07 2003
190 +/cvs/root/gcc3/gcc3/boehm-gc/Mac_files
191 diff -Nubr boehm-gc/Mac_files/CVS/Root ../boehm-gc/Mac_files/CVS/Root
192 --- boehm-gc/Mac_files/CVS/Root Wed Dec 31 16:00:00 1969
193 +++ ../boehm-gc/Mac_files/CVS/Root Sun May 25 12:49:07 2003
195 +:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root
196 diff -Nubr boehm-gc/Makefile.am ../boehm-gc/Makefile.am
197 --- boehm-gc/Makefile.am Mon Jan 27 17:44:52 2003
198 +++ ../boehm-gc/Makefile.am Mon May 26 13:08:40 2003
203 +## Install a library built with a cross compiler in tooldir, not
206 +toolexeclibdir = $(libdir)$(MULTISUBDIR)
208 +toolexecdir = $(exec_prefix)/$(target_alias)
209 +toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR)
212 noinst_LTLIBRARIES = libgcjgc.la libgcjgc_convenience.la
214 GC_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
215 dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c irix_threads.c \
216 -linux_threads.c malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
217 +malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
218 obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \
219 solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c \
220 -backgraph.c win32_threads.c
221 +backgraph.c win32_threads.c \
222 +pthread_support.c pthread_stop_world.c darwin_stop_world.c
224 -EXTRA_GC_SOURCES = alpha_mach_dep.s \
225 -mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \
226 -rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
227 -sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
228 +EXTRA_GC_SOURCES = alpha_mach_dep.S \
229 + mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_darwin_mach_dep.s \
230 + rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
231 + sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
234 +asm_libgc_sources = powerpc_darwin_mach_dep.s
239 -libgcjgc_la_SOURCES = $(GC_SOURCES)
240 -libgcjgc_convenience_la_SOURCES = $(GC_SOURCES)
241 +libgcjgc_la_SOURCES = $(GC_SOURCES) $(asm_libgc_sources)
242 +libgcjgc_convenience_la_SOURCES = $(GC_SOURCES) $(asm_libgc_sources)
243 EXTRA_libgcjgc_la_SOURCES = $(EXTRA_GC_SOURCES)
244 EXTRA_libgcjgc_convenience_la_SOURCES = $(EXTRA_GC_SOURCES)
247 $(AM_CPPFLAGS) $(CPPFLAGS) \
248 $(AM_CFLAGS) $(MY_CFLAGS) $(GC_CFLAGS)
249 LINK = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(MY_CFLAGS) $(LDFLAGS) -o $@
251 -AM_CFLAGS = @GC_CFLAGS@
253 # Work around what appears to be a GNU make bug handling MAKEFLAGS
254 # values defined in terms of make variables, as is the case for CC and
255 diff -Nubr boehm-gc/Makefile.am~ ../boehm-gc/Makefile.am~
256 --- boehm-gc/Makefile.am~ Wed Dec 31 16:00:00 1969
257 +++ ../boehm-gc/Makefile.am~ Thu Oct 24 16:42:27 2002
259 +## Process this file with automake to produce Makefile.in.
261 +## FIXME: `make dist' in this directory will not currently work. Many
262 +## files that should be in the distribution are not mentioned in this
265 +AUTOMAKE_OPTIONS = cygnus
269 +# Multilib support variables.
277 +## Install a library built with a cross compiler in tooldir, not
280 +toolexeclibdir = $(libdir)$(MULTISUBDIR)
282 +toolexecdir = $(exec_prefix)/$(target_alias)
283 +toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR)
286 +noinst_LTLIBRARIES = libgcjgc.la libgcjgc_convenience.la
288 +GC_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
289 +dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c irix_threads.c \
290 +linux_threads.c malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
291 +obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \
292 +solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c \
293 +backgraph.c win32_threads.c
295 +EXTRA_GC_SOURCES = alpha_mach_dep.s \
296 +mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \
297 +rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
298 +sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
300 +libgcjgc_la_SOURCES = $(GC_SOURCES)
301 +libgcjgc_convenience_la_SOURCES = $(GC_SOURCES)
302 +EXTRA_libgcjgc_la_SOURCES = $(EXTRA_GC_SOURCES)
303 +EXTRA_libgcjgc_convenience_la_SOURCES = $(EXTRA_GC_SOURCES)
305 +# Include THREADLIBS here to ensure that the correct versions of
306 +# linuxthread semaphore functions get linked:
307 +libgcjgc_la_LIBADD = @addobjs@ $(THREADLIBS)
308 +libgcjgc_la_DEPENDENCIES = @addobjs@
309 +libgcjgc_la_LDFLAGS = -version-info 1:1:0 -rpath $(toolexeclibdir)
311 +libgcjgc_convenience_la_LIBADD = @addobjs@
312 +libgcjgc_convenience_la_DEPENDENCIES = @addobjs@
314 +AM_CXXFLAGS = @GC_CFLAGS@
315 +AM_CFLAGS = @GC_CFLAGS@
317 +check_PROGRAMS = gctest
318 +# The following hack produces a warning from automake, but we need it in order
319 +# to build a file from a subdirectory. FIXME.
320 +test.o: tests/test.c
321 + $(COMPILE) -c $(srcdir)/tests/test.c
322 +# Using $< in the above seems to fail with the HP/UX on Itanium make.
324 +gctest_OBJECTS = test.o
325 +gctest_LDADD = ./libgcjgc.la $(THREADLIBS) $(EXTRA_TEST_LIBS)
326 +gctest_LDFLAGS = -shared-libgcc
327 +TESTS_ENVIRONMENT = LD_LIBRARY_PATH=../../$(MULTIBUILDTOP)gcc
330 +## FIXME: relies on internal code generated by automake.
331 +all_objs = @addobjs@ $(libgcjgc_la_OBJECTS)
332 +$(all_objs) : include/private/gcconfig.h include/private/gc_priv.h \
333 +include/private/gc_hdrs.h include/gc.h include/gc_gcj.h include/gc_mark.h
335 +## FIXME: we shouldn't have to do this, but automake forces us to.
337 +## We use -Wp,-P to strip #line directives. Irix `as' chokes on
339 + $(LTCOMPILE) -Wp,-P -x assembler-with-cpp -c $<
341 +## We have our own definition of LTCOMPILE because we want to use our
342 +## CFLAGS, not those passed in from the top level make.
343 +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) \
344 + $(AM_CPPFLAGS) $(CPPFLAGS) \
345 + $(AM_CFLAGS) $(MY_CFLAGS) $(GC_CFLAGS)
346 +LINK = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(MY_CFLAGS) $(LDFLAGS) -o $@
348 +AM_CFLAGS = @GC_CFLAGS@
350 +# Work around what appears to be a GNU make bug handling MAKEFLAGS
351 +# values defined in terms of make variables, as is the case for CC and
352 +# friends when we are called from the top level Makefile.
354 + "AR_FLAGS=$(AR_FLAGS)" \
355 + "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
356 + "CFLAGS=$(CFLAGS)" \
357 + "CXXFLAGS=$(CXXFLAGS)" \
358 + "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
359 + "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
360 + "INSTALL=$(INSTALL)" \
361 + "INSTALL_DATA=$(INSTALL_DATA)" \
362 + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
363 + "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
364 + "LDFLAGS=$(LDFLAGS)" \
365 + "LIBCFLAGS=$(LIBCFLAGS)" \
366 + "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
368 + "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
369 + "PICFLAG=$(PICFLAG)" \
370 + "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
372 + "EXPECT=$(EXPECT)" \
373 + "RUNTEST=$(RUNTEST)" \
374 + "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
375 + "exec_prefix=$(exec_prefix)" \
376 + "infodir=$(infodir)" \
377 + "libdir=$(libdir)" \
378 + "prefix=$(prefix)" \
379 + "tooldir=$(tooldir)" \
385 + "LIBCFLAGS=$(LIBCFLAGS)" \
387 + "PICFLAG=$(PICFLAG)" \
388 + "RANLIB=$(RANLIB)" \
389 + "DESTDIR=$(DESTDIR)"
391 +CONFIG_STATUS_DEPENDENCIES = $(srcdir)/configure.host
394 +.PHONY: all-multi mostlyclean-multi clean-multi distclean-multi \
395 + maintainer-clean-multi
398 +install-am: install-multi
399 +mostlyclean-am: mostlyclean-multi
400 +clean-am: clean-multi
401 +distclean-am: distclean-multi
402 +maintainer-clean-am: maintainer-clean-multi
405 + : $(MAKE) ; exec $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do
407 + $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do
409 + $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean
411 + $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean
413 + $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean
414 +maintainer-clean-multi:
415 + $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean
418 diff -Nubr boehm-gc/Makefile.in ../boehm-gc/Makefile.in
419 --- boehm-gc/Makefile.in Tue May 13 17:18:14 2003
420 +++ ../boehm-gc/Makefile.in Mon May 26 13:08:48 2003
422 -# Makefile.in generated automatically by automake 1.4 from Makefile.am
423 +# Makefile.in generated by automake 1.6.3 from Makefile.am.
426 -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
427 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
428 +# Free Software Foundation, Inc.
429 # This Makefile.in is free software; the Free Software Foundation
430 # gives unlimited permission to copy and/or distribute it,
431 # with or without modifications, as long as this notice is preserved.
433 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
434 # PARTICULAR PURPOSE.
443 includedir = @includedir@
444 oldincludedir = /usr/include
448 pkgdatadir = $(datadir)/@PACKAGE@
449 pkglibdir = $(libdir)/@PACKAGE@
450 pkgincludedir = $(includedir)/@PACKAGE@
456 AUTOMAKE = @AUTOMAKE@
457 AUTOHEADER = @AUTOHEADER@
459 +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
461 -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
462 +INSTALL_PROGRAM = @INSTALL_PROGRAM@
463 INSTALL_DATA = @INSTALL_DATA@
464 +install_sh_DATA = $(install_sh) -c -m 644
465 +install_sh_PROGRAM = $(install_sh) -c
466 +install_sh_SCRIPT = $(install_sh) -c
467 INSTALL_SCRIPT = @INSTALL_SCRIPT@
468 +INSTALL_HEADER = $(INSTALL_DATA)
469 transform = @program_transform_name@
475 host_triplet = @host@
476 target_alias = @target_alias@
477 target_triplet = @target@
481 +PATH_SEPARATOR = @PATH_SEPARATOR@
490 CXXINCLUDES = @CXXINCLUDES@
496 EXTRA_TEST_LIBS = @EXTRA_TEST_LIBS@
499 GCJFLAGS = @GCJFLAGS@
500 GC_CFLAGS = @GC_CFLAGS@
501 INCLUDES = @INCLUDES@
502 +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
506 -MAKEINFO = @MAKEINFO@
507 MY_CFLAGS = @MY_CFLAGS@
514 THREADLIBS = @THREADLIBS@
517 +am__include = @am__include@
518 +am__quote = @am__quote@
519 gc_basedir = @gc_basedir@
520 +install_sh = @install_sh@
521 mkinstalldirs = @mkinstalldirs@
522 target_all = @target_all@
523 -toolexecdir = @toolexecdir@
524 -toolexeclibdir = @toolexeclibdir@
526 AUTOMAKE_OPTIONS = cygnus
528 @@ -108,24 +120,32 @@
532 +@USE_LIBDIR_TRUE@toolexeclibdir = $(libdir)$(MULTISUBDIR)
533 +@USE_LIBDIR_FALSE@toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR)
534 +@USE_LIBDIR_FALSE@toolexecdir = $(exec_prefix)/$(target_alias)
536 noinst_LTLIBRARIES = libgcjgc.la libgcjgc_convenience.la
538 GC_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
539 dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c irix_threads.c \
540 -linux_threads.c malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
541 +malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
542 obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \
543 solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c \
544 -backgraph.c win32_threads.c
545 +backgraph.c win32_threads.c \
546 +pthread_support.c pthread_stop_world.c darwin_stop_world.c
549 +EXTRA_GC_SOURCES = alpha_mach_dep.S \
550 + mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_darwin_mach_dep.s \
551 + rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
552 + sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
554 -EXTRA_GC_SOURCES = alpha_mach_dep.s \
555 -mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \
556 -rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
557 -sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
559 +@POWERPC_DARWIN_TRUE@asm_libgc_sources = powerpc_darwin_mach_dep.s
560 +@POWERPC_DARWIN_FALSE@asm_libgc_sources =
562 -libgcjgc_la_SOURCES = $(GC_SOURCES)
563 -libgcjgc_convenience_la_SOURCES = $(GC_SOURCES)
564 +libgcjgc_la_SOURCES = $(GC_SOURCES) $(asm_libgc_sources)
565 +libgcjgc_convenience_la_SOURCES = $(GC_SOURCES) $(asm_libgc_sources)
566 EXTRA_libgcjgc_la_SOURCES = $(EXTRA_GC_SOURCES)
567 EXTRA_libgcjgc_convenience_la_SOURCES = $(EXTRA_GC_SOURCES)
569 @@ -139,12 +159,11 @@
570 libgcjgc_convenience_la_DEPENDENCIES = @addobjs@
572 AM_CXXFLAGS = @GC_CFLAGS@
574 AM_CFLAGS = @GC_CFLAGS@
576 check_PROGRAMS = gctest
577 -# Using $< in the above seems to fail with the HP/UX on Itanium make.
579 +# Using $< in the above seems to fail with the HP/UX on Itanium make.
580 gctest_OBJECTS = test.o
581 gctest_LDADD = ./libgcjgc.la $(THREADLIBS) $(EXTRA_TEST_LIBS)
582 gctest_LDFLAGS = -shared-libgcc
583 @@ -204,104 +223,127 @@
584 CONFIG_STATUS_DEPENDENCIES = $(srcdir)/configure.host
588 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
590 LTLIBRARIES = $(noinst_LTLIBRARIES)
592 +am__objects_1 = allchblk.lo alloc.lo blacklst.lo checksums.lo dbg_mlc.lo \
593 + dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo headers.lo \
594 + irix_threads.lo malloc.lo mallocx.lo mark.lo mark_rts.lo \
595 + misc.lo new_hblk.lo obj_map.lo os_dep.lo pcr_interface.lo \
596 + ptr_chck.lo real_malloc.lo reclaim.lo solaris_pthreads.lo \
597 + solaris_threads.lo specific.lo stubborn.lo typd_mlc.lo \
598 + backgraph.lo win32_threads.lo pthread_support.lo \
599 + pthread_stop_world.lo darwin_stop_world.lo
600 +@POWERPC_DARWIN_TRUE@am__objects_2 = powerpc_darwin_mach_dep.lo
601 +@POWERPC_DARWIN_FALSE@am__objects_2 =
602 +am_libgcjgc_la_OBJECTS = $(am__objects_1) $(am__objects_2)
603 +libgcjgc_la_OBJECTS = $(am_libgcjgc_la_OBJECTS)
604 +libgcjgc_convenience_la_LDFLAGS =
605 +am_libgcjgc_convenience_la_OBJECTS = $(am__objects_1) $(am__objects_2)
606 +libgcjgc_convenience_la_OBJECTS = $(am_libgcjgc_convenience_la_OBJECTS)
607 +check_PROGRAMS = gctest$(EXEEXT)
608 +gctest_DEPENDENCIES = ./libgcjgc.la
610 -DEFS = @DEFS@ -I. -I$(srcdir)
612 +DEFAULT_INCLUDES = -I. -I$(srcdir)
613 CPPFLAGS = @CPPFLAGS@
616 -libgcjgc_la_OBJECTS = allchblk.lo alloc.lo blacklst.lo checksums.lo \
617 -dbg_mlc.lo dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo headers.lo \
618 -irix_threads.lo linux_threads.lo malloc.lo mallocx.lo mark.lo \
619 -mark_rts.lo misc.lo new_hblk.lo obj_map.lo os_dep.lo pcr_interface.lo \
620 -ptr_chck.lo real_malloc.lo reclaim.lo solaris_pthreads.lo \
621 -solaris_threads.lo specific.lo stubborn.lo typd_mlc.lo backgraph.lo \
623 -libgcjgc_convenience_la_LDFLAGS =
624 -libgcjgc_convenience_la_OBJECTS = allchblk.lo alloc.lo blacklst.lo \
625 -checksums.lo dbg_mlc.lo dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo \
626 -headers.lo irix_threads.lo linux_threads.lo malloc.lo mallocx.lo \
627 -mark.lo mark_rts.lo misc.lo new_hblk.lo obj_map.lo os_dep.lo \
628 -pcr_interface.lo ptr_chck.lo real_malloc.lo reclaim.lo \
629 -solaris_pthreads.lo solaris_threads.lo specific.lo stubborn.lo \
630 -typd_mlc.lo backgraph.lo win32_threads.lo
631 -check_PROGRAMS = gctest$(EXEEXT)
632 -gctest_DEPENDENCIES = ./libgcjgc.la
634 -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
636 +am__depfiles_maybe =
637 +CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS)
638 +LTCCASCOMPILE = $(LIBTOOL) --mode=compile $(CCAS) $(AM_CCASFLAGS) \
640 +CCASFLAGS = @CCASFLAGS@
641 +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
642 + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
644 -DIST_COMMON = ChangeLog Makefile.am Makefile.in acinclude.m4 aclocal.m4 \
645 -config.guess config.sub configure configure.in install-sh ltconfig \
646 -ltmain.sh mkinstalldirs
649 -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
654 +DIST_SOURCES = $(libgcjgc_la_SOURCES) $(EXTRA_libgcjgc_la_SOURCES) \
655 + $(libgcjgc_convenience_la_SOURCES) \
656 + $(EXTRA_libgcjgc_convenience_la_SOURCES)
658 +RECURSIVE_TARGETS = info-recursive dvi-recursive \
659 + uninstall-info-recursive all-recursive install-data-recursive \
660 + install-exec-recursive installdirs-recursive install-recursive \
661 + uninstall-recursive check-recursive installcheck-recursive
662 SOURCES = $(libgcjgc_la_SOURCES) $(EXTRA_libgcjgc_la_SOURCES) $(libgcjgc_convenience_la_SOURCES) $(EXTRA_libgcjgc_convenience_la_SOURCES)
663 -OBJECTS = $(libgcjgc_la_OBJECTS) $(libgcjgc_convenience_la_OBJECTS)
669 .SUFFIXES: .S .c .lo .o .obj .s
670 -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
671 - cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile
673 -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
674 - cd $(top_builddir) \
675 - && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
677 -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
678 - cd $(srcdir) && $(ACLOCAL)
679 +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
681 +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
682 + cd $(top_srcdir) && \
683 + $(AUTOMAKE) --cygnus Makefile
684 +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
685 + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
687 -config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
688 +$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
689 $(SHELL) ./config.status --recheck
690 -$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
691 +$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
692 cd $(srcdir) && $(AUTOCONF)
694 -mostlyclean-noinstLTLIBRARIES:
695 +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
696 + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
698 clean-noinstLTLIBRARIES:
699 -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
700 + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
701 + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
702 + test -z "$dir" && dir=.; \
703 + echo "rm -f \"$${dir}/so_locations\""; \
704 + rm -f "$${dir}/so_locations"; \
706 +libgcjgc.la: $(libgcjgc_la_OBJECTS) $(libgcjgc_la_DEPENDENCIES)
707 + $(LINK) $(libgcjgc_la_LDFLAGS) $(libgcjgc_la_OBJECTS) $(libgcjgc_la_LIBADD) $(LIBS)
708 +libgcjgc_convenience.la: $(libgcjgc_convenience_la_OBJECTS) $(libgcjgc_convenience_la_DEPENDENCIES)
709 + $(LINK) $(libgcjgc_convenience_la_LDFLAGS) $(libgcjgc_convenience_la_OBJECTS) $(libgcjgc_convenience_la_LIBADD) $(LIBS)
711 -distclean-noinstLTLIBRARIES:
713 -maintainer-clean-noinstLTLIBRARIES:
717 +clean-checkPROGRAMS:
718 + @list='$(check_PROGRAMS)'; for p in $$list; do \
719 + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
720 + echo " rm -f $$p $$f"; \
723 +gctest$(EXEEXT): $(gctest_OBJECTS) $(gctest_DEPENDENCIES)
724 + @rm -f gctest$(EXEEXT)
725 + $(LINK) $(gctest_LDFLAGS) $(gctest_OBJECTS) $(gctest_LDADD) $(LIBS)
727 -# FIXME: We should only use cygpath when building on Windows,
728 -# and only if it is available.
730 - $(COMPILE) -c `cygpath -w $<`
731 +mostlyclean-compile:
732 + -rm -f *.$(OBJEXT) core *.core
741 + $(CCASCOMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
743 -mostlyclean-compile:
744 - -rm -f *.o core *.core
747 + $(CCASCOMPILE) -c `cygpath -w $<`
751 + $(LTCCASCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
756 + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
758 -maintainer-clean-compile:
760 + $(COMPILE) -c `cygpath -w $<`
763 - $(LIBTOOL) --mode=compile $(COMPILE) -c $<
764 + $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
767 - $(LIBTOOL) --mode=compile $(COMPILE) -c $<
769 + $(CCASCOMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
772 + $(CCASCOMPILE) -c `cygpath -w $<`
781 -maintainer-clean-libtool:
783 -libgcjgc.la: $(libgcjgc_la_OBJECTS) $(libgcjgc_la_DEPENDENCIES)
784 - $(LINK) $(libgcjgc_la_LDFLAGS) $(libgcjgc_la_OBJECTS) $(libgcjgc_la_LIBADD) $(LIBS)
786 -libgcjgc_convenience.la: $(libgcjgc_convenience_la_OBJECTS) $(libgcjgc_convenience_la_DEPENDENCIES)
787 - $(LINK) $(libgcjgc_convenience_la_LDFLAGS) $(libgcjgc_convenience_la_OBJECTS) $(libgcjgc_convenience_la_LIBADD) $(LIBS)
789 -mostlyclean-checkPROGRAMS:
791 -clean-checkPROGRAMS:
792 - -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
794 -distclean-checkPROGRAMS:
796 -maintainer-clean-checkPROGRAMS:
798 -gctest$(EXEEXT): $(gctest_OBJECTS) $(gctest_DEPENDENCIES)
799 - @rm -f gctest$(EXEEXT)
800 - $(LINK) $(gctest_LDFLAGS) $(gctest_OBJECTS) $(gctest_LDADD) $(LIBS)
804 # This directory's subdirectories are mostly independent; you can cd
805 # into them and run `make' without going through this Makefile.
807 # (1) if the variable is set in `config.status', edit `config.status'
808 # (which will cause the Makefiles to be regenerated when you run `make');
809 # (2) otherwise, pass the desired values on the `make' command line.
813 -all-recursive install-data-recursive install-exec-recursive \
814 -installdirs-recursive install-recursive uninstall-recursive install-info-recursive \
815 -check-recursive installcheck-recursive info-recursive dvi-recursive:
816 - @set fnord $(MAKEFLAGS); amf=$$2; \
817 +$(RECURSIVE_TARGETS):
818 + @set fnord $$MAKEFLAGS; amf=$$2; \
820 target=`echo $@ | sed s/-recursive//`; \
821 list='$(SUBDIRS)'; for subdir in $$list; do \
822 @@ -364,13 +382,18 @@
824 mostlyclean-recursive clean-recursive distclean-recursive \
825 maintainer-clean-recursive:
826 - @set fnord $(MAKEFLAGS); amf=$$2; \
827 + @set fnord $$MAKEFLAGS; amf=$$2; \
829 - rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
831 + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
832 + *) list='$(SUBDIRS)' ;; \
834 + rev=''; for subdir in $$list; do \
835 + if test "$$subdir" = "."; then :; else \
836 rev="$$subdir $$rev"; \
837 - test "$$subdir" = "." && dot_seen=yes; \
840 - test "$$dot_seen" = "no" && rev=". $$rev"; \
842 target=`echo $@ | sed s/-recursive//`; \
843 for subdir in $$rev; do \
844 echo "Making $$target in $$subdir"; \
845 @@ -387,17 +410,22 @@
846 test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
854 -ID: $(HEADERS) $(SOURCES) $(LISP)
855 - list='$(SOURCES) $(HEADERS)'; \
856 - unique=`for i in $$list; do echo $$i; done | \
857 - awk ' { files[$$0] = 1; } \
858 +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
859 + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
860 + unique=`for i in $$list; do \
861 + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
863 + $(AWK) ' { files[$$0] = 1; } \
864 END { for (i in files) print i; }'`; \
865 - here=`pwd` && cd $(srcdir) \
866 - && mkid -f$$here/ID $$unique $(LISP)
869 -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
870 +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
871 + $(TAGS_FILES) $(LISP)
874 list='$(SUBDIRS)'; for subdir in $$list; do \
875 @@ -405,193 +433,163 @@
876 test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
879 - list='$(SOURCES) $(HEADERS)'; \
880 - unique=`for i in $$list; do echo $$i; done | \
881 - awk ' { files[$$0] = 1; } \
882 + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
883 + unique=`for i in $$list; do \
884 + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
886 + $(AWK) ' { files[$$0] = 1; } \
887 END { for (i in files) print i; }'`; \
888 - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
889 - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
894 + test -z "$(ETAGS_ARGS)$$tags$$unique" \
895 + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
899 + here=`$(am__cd) $(top_builddir) && pwd` \
900 + && cd $(top_srcdir) \
901 + && gtags -i $(GTAGS_ARGS) $$here
905 + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
907 -maintainer-clean-tags:
909 -distdir = $(PACKAGE)-$(VERSION)
910 -top_distdir = $(distdir)
912 -# This target untars the dist file and tries a VPATH configuration. Then
913 -# it guarantees that the distribution is self-contained by making another
917 - GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
918 - mkdir $(distdir)/=build
919 - mkdir $(distdir)/=inst
920 - dc_install_base=`cd $(distdir)/=inst && pwd`; \
921 - cd $(distdir)/=build \
922 - && ../configure --srcdir=.. --prefix=$$dc_install_base \
923 - && $(MAKE) $(AM_MAKEFLAGS) \
924 - && $(MAKE) $(AM_MAKEFLAGS) dvi \
925 - && $(MAKE) $(AM_MAKEFLAGS) check \
926 - && $(MAKE) $(AM_MAKEFLAGS) install \
927 - && $(MAKE) $(AM_MAKEFLAGS) installcheck \
928 - && $(MAKE) $(AM_MAKEFLAGS) dist
930 - @banner="$(distdir).tar.gz is ready for distribution"; \
931 - dashes=`echo "$$banner" | sed s/./=/g`; \
936 - -chmod -R a+r $(distdir)
937 - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
940 - -chmod -R a+r $(distdir)
941 - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
943 -distdir: $(DISTFILES)
946 - -chmod 777 $(distdir)
947 - @for file in $(DISTFILES); do \
948 - if test -f $$file; then d=.; else d=$(srcdir); fi; \
949 - if test -d $$d/$$file; then \
950 - cp -pr $$d/$$file $(distdir)/$$file; \
952 - test -f $(distdir)/$$file \
953 - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
954 - || cp -p $$d/$$file $(distdir)/$$file || :; \
957 - for subdir in $(SUBDIRS); do \
958 - if test "$$subdir" = .; then :; else \
959 - test -d $(distdir)/$$subdir \
960 - || mkdir $(distdir)/$$subdir \
962 - chmod 777 $(distdir)/$$subdir; \
963 - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
967 check-TESTS: $(TESTS)
968 - @failed=0; all=0; \
969 + @failed=0; all=0; xfail=0; xpass=0; \
970 srcdir=$(srcdir); export srcdir; \
971 - for tst in $(TESTS); do \
972 - if test -f $$tst; then dir=.; \
973 - else dir="$(srcdir)"; fi; \
974 - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \
976 + if test -n "$$list"; then \
977 + for tst in $$list; do \
978 + if test -f ./$$tst; then dir=./; \
979 + elif test -f $$tst; then dir=; \
980 + else dir="$(srcdir)/"; fi; \
981 + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
982 all=`expr $$all + 1`; \
983 + case " $(XFAIL_TESTS) " in \
985 + xpass=`expr $$xpass + 1`; \
986 + failed=`expr $$failed + 1`; \
987 + echo "XPASS: $$tst"; \
990 echo "PASS: $$tst"; \
993 elif test $$? -ne 77; then \
994 all=`expr $$all + 1`; \
995 + case " $(XFAIL_TESTS) " in \
997 + xfail=`expr $$xfail + 1`; \
998 + echo "XFAIL: $$tst"; \
1001 failed=`expr $$failed + 1`; \
1002 echo "FAIL: $$tst"; \
1007 if test "$$failed" -eq 0; then \
1008 + if test "$$xfail" -eq 0; then \
1009 banner="All $$all tests passed"; \
1011 + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
1014 + if test "$$xpass" -eq 0; then \
1015 banner="$$failed of $$all tests failed"; \
1017 + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
1020 dashes=`echo "$$banner" | sed s/./=/g`; \
1024 - test "$$failed" -eq 0
1026 -info: info-recursive
1029 + test "$$failed" -eq 0; \
1031 check-am: $(check_PROGRAMS)
1032 $(MAKE) $(AM_MAKEFLAGS) check-TESTS
1033 check: check-recursive
1035 -installcheck: installcheck-recursive
1037 -install-info: install-info-recursive
1039 -install-exec: install-exec-recursive
1042 -install-data: install-data-recursive
1045 - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
1046 -install: install-recursive
1048 -uninstall: uninstall-recursive
1049 all-am: Makefile $(LTLIBRARIES)
1050 -all-redirect: all-recursive
1052 - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
1053 installdirs: installdirs-recursive
1056 +install: install-recursive
1057 +install-exec: install-exec-recursive
1058 +install-data: install-data-recursive
1059 +uninstall: uninstall-recursive
1061 +installcheck: installcheck-recursive
1063 + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
1064 + INSTALL_STRIP_FLAG=-s \
1065 + `test -z '$(STRIP)' || \
1066 + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
1067 mostlyclean-generic:
1072 -rm -f Makefile $(CONFIG_CLEAN_FILES)
1073 - -rm -f config.cache config.log stamp-h stamp-h[0-9]*
1075 maintainer-clean-generic:
1076 -mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \
1077 - mostlyclean-libtool mostlyclean-checkPROGRAMS \
1078 - mostlyclean-tags mostlyclean-generic
1079 + @echo "This command is intended for maintainers to use"
1080 + @echo "it deletes files that may require special tools to rebuild."
1081 +clean: clean-recursive
1083 -mostlyclean: mostlyclean-recursive
1084 +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
1085 + clean-noinstLTLIBRARIES mostlyclean-am
1087 -clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \
1088 - clean-checkPROGRAMS clean-tags clean-generic \
1090 +distclean: distclean-recursive
1091 + -rm -f $(am__CONFIG_DISTCLEAN_FILES)
1092 +distclean-am: clean-am distclean-compile distclean-generic \
1093 + distclean-libtool distclean-tags
1095 -clean: clean-recursive
1098 -distclean-am: distclean-noinstLTLIBRARIES distclean-compile \
1099 - distclean-libtool distclean-checkPROGRAMS \
1100 - distclean-tags distclean-generic clean-am
1104 -distclean: distclean-recursive
1105 - -rm -f config.status
1106 +info: info-recursive
1108 -maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \
1109 - maintainer-clean-compile maintainer-clean-libtool \
1110 - maintainer-clean-checkPROGRAMS maintainer-clean-tags \
1111 - maintainer-clean-generic distclean-am
1112 - @echo "This command is intended for maintainers to use;"
1113 - @echo "it deletes files that may require special tools to rebuild."
1126 maintainer-clean: maintainer-clean-recursive
1127 - -rm -f config.status
1128 + -rm -f $(am__CONFIG_DISTCLEAN_FILES)
1129 + -rm -rf autom4te.cache
1130 +maintainer-clean-am: distclean-am maintainer-clean-generic
1132 -.PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \
1133 -clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \
1134 -mostlyclean-compile distclean-compile clean-compile \
1135 -maintainer-clean-compile mostlyclean-libtool distclean-libtool \
1136 -clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \
1137 -distclean-checkPROGRAMS clean-checkPROGRAMS \
1138 -maintainer-clean-checkPROGRAMS install-data-recursive \
1139 -uninstall-data-recursive install-exec-recursive \
1140 -uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
1141 -all-recursive check-recursive installcheck-recursive info-recursive \
1142 -dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
1143 -maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
1144 -distclean-tags clean-tags maintainer-clean-tags distdir check-TESTS \
1145 -info-am info dvi-am dvi check check-am installcheck-am installcheck \
1146 -install-info-am install-info install-exec-am install-exec \
1147 -install-data-am install-data install-am install uninstall-am uninstall \
1148 -all-redirect all-am all installdirs-am installdirs mostlyclean-generic \
1149 -distclean-generic clean-generic maintainer-clean-generic clean \
1150 -mostlyclean distclean maintainer-clean
1151 +mostlyclean: mostlyclean-recursive
1153 +mostlyclean-am: mostlyclean-compile mostlyclean-generic \
1154 + mostlyclean-libtool
1158 +uninstall-info: uninstall-info-recursive
1160 +.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-TESTS check-am \
1161 + clean clean-checkPROGRAMS clean-generic clean-libtool \
1162 + clean-noinstLTLIBRARIES clean-recursive distclean \
1163 + distclean-compile distclean-generic distclean-libtool \
1164 + distclean-recursive distclean-tags dvi dvi-am dvi-recursive \
1165 + info info-am info-recursive install install-am install-data \
1166 + install-data-am install-data-recursive install-exec \
1167 + install-exec-am install-exec-recursive install-info \
1168 + install-info-am install-man install-recursive install-strip \
1169 + installcheck installcheck-am installdirs installdirs-am \
1170 + installdirs-recursive maintainer-clean maintainer-clean-generic \
1171 + maintainer-clean-recursive mostlyclean mostlyclean-compile \
1172 + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
1173 + tags tags-recursive uninstall uninstall-am uninstall-info-am \
1174 + uninstall-info-recursive uninstall-recursive
1176 # The following hack produces a warning from automake, but we need it in order
1177 # to build a file from a subdirectory. FIXME.
1179 $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean
1180 maintainer-clean-multi:
1181 $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean
1183 # Tell versions [3.59,3.63) of GNU make to not export all variables.
1184 # Otherwise a system limit (for SysV at least) may be exceeded.
1186 diff -Nubr boehm-gc/allchblk.c ../boehm-gc/allchblk.c
1187 --- boehm-gc/allchblk.c Mon Apr 8 17:39:15 2002
1188 +++ ../boehm-gc/allchblk.c Mon May 26 12:48:52 2003
1190 struct hblk * GC_hblkfreelist[N_HBLK_FLS+1] = { 0 };
1194 word GC_free_bytes[N_HBLK_FLS+1] = { 0 };
1195 /* Number of free bytes on each list. */
1197 /* Is bytes + the number of free bytes on lists n .. N_HBLK_FLS */
1198 /* > GC_max_large_allocd_bytes? */
1199 - GC_bool GC_enough_large_bytes_left(bytes,n)
1203 + static GC_bool GC_enough_large_bytes_left(bytes,n)
1207 @@ -583,11 +587,11 @@
1208 if (!GC_use_entire_heap
1209 && size_avail != size_needed
1210 && USED_HEAP_SIZE >= GC_requested_heapsize
1211 - && !GC_incremental && GC_should_collect()) {
1212 + && !TRUE_INCREMENTAL && GC_should_collect()) {
1216 - /* If we enough large blocks left to cover any */
1217 + /* If we have enough large blocks left to cover any */
1218 /* previous request for large blocks, we go ahead */
1219 /* and split. Assuming a steady state, that should */
1220 /* be safe. It means that we can use the full */
1221 @@ -595,6 +599,12 @@
1222 if (!GC_enough_large_bytes_left(GC_large_allocd_bytes, n)) {
1225 + /* If we are deallocating lots of memory from */
1226 + /* finalizers, fail and collect sooner rather */
1228 + if (GC_finalizer_mem_freed > (GC_heapsize >> 4)) {
1231 # endif /* !USE_MUNMAP */
1233 /* If the next heap block is obviously better, go on. */
1234 diff -Nubr boehm-gc/alloc.c ../boehm-gc/alloc.c
1235 --- boehm-gc/alloc.c Mon Mar 3 22:38:30 2003
1236 +++ ../boehm-gc/alloc.c Mon May 26 12:48:52 2003
1238 GC_bool GC_need_full_gc = FALSE;
1239 /* Need full GC do to heap growth. */
1242 + GC_bool GC_world_stopped = FALSE;
1243 +# define IF_THREADS(x) x
1245 +# define IF_THREADS(x)
1248 word GC_used_heap_size_after_full = 0;
1250 char * GC_copyright[] =
1252 unsigned long time_diff;
1254 if ((count++ & 3) != 0) return(0);
1256 GET_TIME(current_time);
1257 time_diff = MS_TIME_DIFF(current_time,GC_start_time);
1258 if (time_diff >= GC_time_limit) {
1266 #endif /* !SMALL_CONFIG */
1268 + (GC_large_free_bytes >> 2)
1269 /* use a bit more of large empty heap */
1271 - if (GC_incremental) {
1272 + if (TRUE_INCREMENTAL) {
1273 return scan_size / (2 * GC_free_space_divisor);
1275 return scan_size / GC_free_space_divisor;
1277 /* managed object should not alter result, assuming the client */
1278 /* is playing by the rules. */
1279 result = (signed_word)GC_words_allocd
1280 - - (signed_word)GC_mem_freed - expl_managed;
1281 + - (signed_word)GC_mem_freed
1282 + + (signed_word)GC_finalizer_mem_freed - expl_managed;
1283 if (result > (signed_word)GC_words_allocd) {
1284 result = GC_words_allocd;
1285 /* probably client bug or unfortunate scheduling */
1288 if (GC_should_collect()) {
1289 if (!GC_incremental) {
1290 - GC_notify_full_gc();
1291 GC_gcollect_inner();
1294 @@ -302,10 +307,14 @@
1296 * Stop the world garbage collection. Assumes lock held, signals disabled.
1297 * If stop_func is not GC_never_stop_func, then abort if stop_func returns TRUE.
1298 + * Return TRUE if we successfully completed the collection.
1300 GC_bool GC_try_to_collect_inner(stop_func)
1301 GC_stop_func stop_func;
1304 + CLOCK_TYPE start_time, current_time;
1306 if (GC_dont_gc) return FALSE;
1307 if (GC_incremental && GC_collection_in_progress()) {
1309 @@ -320,8 +329,10 @@
1310 GC_collect_a_little_inner(1);
1313 + if (stop_func == GC_never_stop_func) GC_notify_full_gc();
1315 if (GC_print_stats) {
1316 + if (GC_print_stats) GET_TIME(start_time);
1318 "Initiating full world-stop collection %lu after %ld allocd bytes\n",
1319 (unsigned long) GC_gc_no+1,
1320 @@ -360,6 +371,13 @@
1323 GC_finish_collection();
1324 +# if defined(CONDPRINT)
1325 + if (GC_print_stats) {
1326 + GET_TIME(current_time);
1327 + GC_printf1("Complete collection took %lu msecs\n",
1328 + MS_TIME_DIFF(current_time,start_time));
1335 result = (int)GC_collection_in_progress();
1338 + if (!result && GC_debugging_started) GC_print_all_smashed();
1342 @@ -448,16 +467,17 @@
1343 CLOCK_TYPE start_time, current_time;
1346 -# if defined(REGISTER_LIBRARIES_EARLY)
1347 - GC_cond_register_dynamic_libraries();
1351 GET_TIME(start_time);
1353 # if defined(CONDPRINT) && !defined(PRINTTIMES)
1354 if (GC_print_stats) GET_TIME(start_time);
1356 +# if defined(REGISTER_LIBRARIES_EARLY)
1357 + GC_cond_register_dynamic_libraries();
1360 + IF_THREADS(GC_world_stopped = TRUE);
1362 if (GC_print_stats) {
1363 GC_printf1("--> Marking for collection %lu ",
1367 GC_deficit = i; /* Give the mutator a chance. */
1368 + IF_THREADS(GC_world_stopped = FALSE);
1376 + IF_THREADS(GC_world_stopped = FALSE);
1379 GET_TIME(current_time);
1380 GC_printf1("World-stopped marking took %lu msecs\n",
1390 GC_print_address_map();
1395 /* Mark all objects on the free list. All objects should be */
1396 /* marked when we're done. */
1398 GC_words_allocd = 0;
1399 GC_words_wasted = 0;
1401 + GC_finalizer_mem_freed = 0;
1409 + if (GC_debugging_started) GC_print_all_smashed();
1410 GC_INVOKE_FINALIZERS();
1413 @@ -741,14 +766,17 @@
1417 - if(result) GC_INVOKE_FINALIZERS();
1419 + if (GC_debugging_started) GC_print_all_smashed();
1420 + GC_INVOKE_FINALIZERS();
1425 void GC_gcollect GC_PROTO(())
1427 - GC_notify_full_gc();
1428 (void)GC_try_to_collect(GC_never_stop_func);
1429 + if (GC_have_errors) GC_print_all_errors();
1432 word GC_n_heap_sects = 0; /* Number of sections currently in heap. */
1435 if (!GC_incremental && !GC_dont_gc &&
1436 (GC_dont_expand && GC_words_allocd > 0 || GC_should_collect())) {
1437 - GC_notify_full_gc();
1438 GC_gcollect_inner();
1440 word blocks_to_get = GC_heapsize/(HBLKSIZE*GC_free_space_divisor)
1441 @@ -975,7 +1002,6 @@
1442 && !GC_expand_hp_inner(needed_blocks)) {
1443 if (GC_fail_count++ < GC_max_retries) {
1444 WARN("Out of Memory! Trying to continue ...\n", 0);
1445 - GC_notify_full_gc();
1446 GC_gcollect_inner();
1448 # if !defined(AMIGA) || !defined(GC_AMIGA_FASTALLOC)
1449 @@ -1005,14 +1031,15 @@
1453 - register ptr_t * flh = &(GC_obj_kinds[kind].ok_freelist[sz]);
1454 + ptr_t * flh = &(GC_obj_kinds[kind].ok_freelist[sz]);
1455 + GC_bool tried_minor = FALSE;
1457 if (sz == 0) return(0);
1461 /* Do our share of marking work */
1462 - if(GC_incremental && !GC_dont_gc) GC_collect_a_little_inner(1);
1463 + if(TRUE_INCREMENTAL) GC_collect_a_little_inner(1);
1464 /* Sweep blocks for objects of this size */
1465 GC_continue_reclaim(sz, kind);
1467 @@ -1021,13 +1048,21 @@
1471 + if (GC_incremental && GC_time_limit == GC_TIME_UNLIMITED
1472 + && ! tried_minor ) {
1473 + GC_collect_a_little_inner(1);
1474 + tried_minor = TRUE;
1476 if (!GC_collect_or_expand((word)1,FALSE)) {
1484 + /* Successful allocation; reset failure count. */
1485 + GC_fail_count = 0;
1489 diff -Nubr boehm-gc/alpha_mach_dep.s ../boehm-gc/alpha_mach_dep.s
1490 --- boehm-gc/alpha_mach_dep.s Fri Aug 17 11:30:45 2001
1491 +++ ../boehm-gc/alpha_mach_dep.s Mon May 26 12:48:52 2003
1493 + # $Id: darwin.patch,v 1.6 2003/09/10 06:30:06 megacz Exp $
1497 diff -Nubr boehm-gc/autom4te.cache/output.0 ../boehm-gc/autom4te.cache/output.0
1498 --- boehm-gc/autom4te.cache/output.0 Wed Dec 31 16:00:00 1969
1499 +++ ../boehm-gc/autom4te.cache/output.0 Mon May 26 13:14:22 2003
1502 +@%:@ Guess values for system-dependent variables and create Makefiles.
1503 +@%:@ Generated by GNU Autoconf 2.57.
1505 +@%:@ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
1506 +@%:@ Free Software Foundation, Inc.
1507 +@%:@ This configure script is free software; the Free Software Foundation
1508 +@%:@ gives unlimited permission to copy, distribute and modify it.
1509 +## --------------------- ##
1510 +## M4sh Initialization. ##
1511 +## --------------------- ##
1513 +# Be Bourne compatible
1514 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
1517 + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
1518 + # is contrary to our usage. Disable this feature.
1519 + alias -g '${1+"$@"}'='"$@"'
1520 +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
1524 +# Support unset when possible.
1525 +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
1532 +# Work around bugs in pre-3.0 UWIN ksh.
1533 +$as_unset ENV MAIL MAILPATH
1540 + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
1541 + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
1542 + LC_TELEPHONE LC_TIME
1544 + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
1545 + eval $as_var=C; export $as_var
1551 +# Required to use basename.
1552 +if expr a : '\(a\)' >/dev/null 2>&1; then
1558 +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
1559 + as_basename=basename
1565 +# Name of the executable.
1566 +as_me=`$as_basename "$0" ||
1567 +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
1568 + X"$0" : 'X\(//\)$' \| \
1569 + X"$0" : 'X\(/\)$' \| \
1570 + . : '\(.\)' 2>/dev/null ||
1572 + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
1573 + /^X\/\(\/\/\)$/{ s//\1/; q; }
1574 + /^X\/\(\/\).*/{ s//\1/; q; }
1578 +# PATH needs CR, and LINENO needs CR and PATH.
1579 +# Avoid depending upon Character Ranges.
1580 +as_cr_letters='abcdefghijklmnopqrstuvwxyz'
1581 +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1582 +as_cr_Letters=$as_cr_letters$as_cr_LETTERS
1583 +as_cr_digits='0123456789'
1584 +as_cr_alnum=$as_cr_Letters$as_cr_digits
1586 +# The user is always right.
1587 +if test "${PATH_SEPARATOR+set}" != set; then
1588 + echo "#! /bin/sh" >conf$$.sh
1589 + echo "exit 0" >>conf$$.sh
1590 + chmod +x conf$$.sh
1591 + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
1592 + PATH_SEPARATOR=';'
1600 + as_lineno_1=$LINENO
1601 + as_lineno_2=$LINENO
1602 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
1603 + test "x$as_lineno_1" != "x$as_lineno_2" &&
1604 + test "x$as_lineno_3" = "x$as_lineno_2" || {
1605 + # Find who we are. Look in the path if we contain no path at all
1606 + # relative or not.
1608 + *[\\/]* ) as_myself=$0 ;;
1609 + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
1610 +for as_dir in $PATH
1613 + test -z "$as_dir" && as_dir=.
1614 + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
1619 + # We did not find ourselves, most probably we were run as `sh COMMAND'
1620 + # in which case we are not to be found in the path.
1621 + if test "x$as_myself" = x; then
1624 + if test ! -f "$as_myself"; then
1625 + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
1626 + { (exit 1); exit 1; }; }
1628 + case $CONFIG_SHELL in
1630 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
1631 +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
1634 + test -z "$as_dir" && as_dir=.
1635 + for as_base in sh bash ksh sh5; do
1638 + if ("$as_dir/$as_base" -c '
1639 + as_lineno_1=$LINENO
1640 + as_lineno_2=$LINENO
1641 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
1642 + test "x$as_lineno_1" != "x$as_lineno_2" &&
1643 + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
1644 + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
1645 + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
1646 + CONFIG_SHELL=$as_dir/$as_base
1647 + export CONFIG_SHELL
1648 + exec "$CONFIG_SHELL" "$0" ${1+"$@"}
1656 + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
1657 + # uniformly replaced by the line number. The first 'sed' inserts a
1658 + # line-number line before each line; the second 'sed' does the real
1659 + # work. The second script uses 'N' to pair each line-number line
1660 + # with the numbered line, and appends trailing '-' during
1661 + # substitution so that $LINENO is not a special case at line end.
1662 + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
1663 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
1664 + sed '=' <$as_myself |
1669 + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
1672 + s,^['$as_cr_digits']*\n,,
1673 + ' >$as_me.lineno &&
1674 + chmod +x $as_me.lineno ||
1675 + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
1676 + { (exit 1); exit 1; }; }
1678 + # Don't try to exec as it changes $[0], causing all sort of problems
1679 + # (the dirname of $[0] is not the place where we might find the
1680 + # original and so on. Autoconf is especially sensible to this).
1682 + # Exit status is that of the last command.
1687 +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
1688 + *c*,-n*) ECHO_N= ECHO_C='
1690 + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
1691 + *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
1694 +if expr a : '\(a\)' >/dev/null 2>&1; then
1700 +rm -f conf$$ conf$$.exe conf$$.file
1702 +if ln -s conf$$.file conf$$ 2>/dev/null; then
1703 + # We could just check for DJGPP; but this test a) works b) is more generic
1704 + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
1705 + if test -f conf$$.exe; then
1706 + # Don't use ln at all; we don't have any links
1711 +elif ln conf$$.file conf$$ 2>/dev/null; then
1716 +rm -f conf$$ conf$$.exe conf$$.file
1718 +if mkdir -p . 2>/dev/null; then
1724 +as_executable_p="test -f"
1726 +# Sed expression to map a string onto a valid CPP name.
1727 +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
1729 +# Sed expression to map a string onto a valid variable name.
1730 +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
1734 +# We need space, tab and new line, in precisely that order.
1743 +# Name of the host.
1744 +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
1745 +# so uname gets run too.
1746 +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
1753 +ac_default_prefix=/usr/local
1754 +ac_config_libobj_dir=.
1759 +SHELL=${CONFIG_SHELL-/bin/sh}
1761 +# Maximum number of lines to put in a shell here document.
1762 +# This variable seems obsolete. It should probably be removed, and
1763 +# only ac_max_sed_lines should be used.
1764 +: ${ac_max_here_lines=38}
1766 +# Identity of this package.
1773 +ac_unique_file="gcj_mlc.c"
1774 +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'
1777 +# Initialize some variables set by options.
1779 +ac_init_version=false
1780 +# The variables have the same names as the options, with
1781 +# dashes changed to underlines.
1782 +cache_file=/dev/null
1787 +program_prefix=NONE
1788 +program_suffix=NONE
1789 +program_transform_name=s,x,x,
1797 +# Installation directory options.
1798 +# These are left unexpanded so users can "make install exec_prefix=/foo"
1799 +# and all the variables that are supposed to be based on exec_prefix
1800 +# by default will actually change.
1801 +# Use braces instead of parens because sh, perl, etc. also accept them.
1802 +bindir='${exec_prefix}/bin'
1803 +sbindir='${exec_prefix}/sbin'
1804 +libexecdir='${exec_prefix}/libexec'
1805 +datadir='${prefix}/share'
1806 +sysconfdir='${prefix}/etc'
1807 +sharedstatedir='${prefix}/com'
1808 +localstatedir='${prefix}/var'
1809 +libdir='${exec_prefix}/lib'
1810 +includedir='${prefix}/include'
1811 +oldincludedir='/usr/include'
1812 +infodir='${prefix}/info'
1813 +mandir='${prefix}/man'
1818 + # If the previous option needs an argument, assign it.
1819 + if test -n "$ac_prev"; then
1820 + eval "$ac_prev=\$ac_option"
1825 + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
1827 + # Accept the important Cygnus configure options, so we can diagnose typos.
1829 + case $ac_option in
1831 + -bindir | --bindir | --bindi | --bind | --bin | --bi)
1833 + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
1834 + bindir=$ac_optarg ;;
1836 + -build | --build | --buil | --bui | --bu)
1837 + ac_prev=build_alias ;;
1838 + -build=* | --build=* | --buil=* | --bui=* | --bu=*)
1839 + build_alias=$ac_optarg ;;
1841 + -cache-file | --cache-file | --cache-fil | --cache-fi \
1842 + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
1843 + ac_prev=cache_file ;;
1844 + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
1845 + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
1846 + cache_file=$ac_optarg ;;
1848 + --config-cache | -C)
1849 + cache_file=config.cache ;;
1851 + -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
1852 + ac_prev=datadir ;;
1853 + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
1855 + datadir=$ac_optarg ;;
1857 + -disable-* | --disable-*)
1858 + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
1859 + # Reject names that are not valid shell variable names.
1860 + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
1861 + { echo "$as_me: error: invalid feature name: $ac_feature" >&2
1862 + { (exit 1); exit 1; }; }
1863 + ac_feature=`echo $ac_feature | sed 's/-/_/g'`
1864 + eval "enable_$ac_feature=no" ;;
1866 + -enable-* | --enable-*)
1867 + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
1868 + # Reject names that are not valid shell variable names.
1869 + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
1870 + { echo "$as_me: error: invalid feature name: $ac_feature" >&2
1871 + { (exit 1); exit 1; }; }
1872 + ac_feature=`echo $ac_feature | sed 's/-/_/g'`
1873 + case $ac_option in
1874 + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
1875 + *) ac_optarg=yes ;;
1877 + eval "enable_$ac_feature='$ac_optarg'" ;;
1879 + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
1880 + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
1881 + | --exec | --exe | --ex)
1882 + ac_prev=exec_prefix ;;
1883 + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
1884 + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
1885 + | --exec=* | --exe=* | --ex=*)
1886 + exec_prefix=$ac_optarg ;;
1888 + -gas | --gas | --ga | --g)
1889 + # Obsolete; use --with-gas.
1892 + -help | --help | --hel | --he | -h)
1893 + ac_init_help=long ;;
1894 + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
1895 + ac_init_help=recursive ;;
1896 + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
1897 + ac_init_help=short ;;
1899 + -host | --host | --hos | --ho)
1900 + ac_prev=host_alias ;;
1901 + -host=* | --host=* | --hos=* | --ho=*)
1902 + host_alias=$ac_optarg ;;
1904 + -includedir | --includedir | --includedi | --included | --include \
1905 + | --includ | --inclu | --incl | --inc)
1906 + ac_prev=includedir ;;
1907 + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
1908 + | --includ=* | --inclu=* | --incl=* | --inc=*)
1909 + includedir=$ac_optarg ;;
1911 + -infodir | --infodir | --infodi | --infod | --info | --inf)
1912 + ac_prev=infodir ;;
1913 + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
1914 + infodir=$ac_optarg ;;
1916 + -libdir | --libdir | --libdi | --libd)
1918 + -libdir=* | --libdir=* | --libdi=* | --libd=*)
1919 + libdir=$ac_optarg ;;
1921 + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
1922 + | --libexe | --libex | --libe)
1923 + ac_prev=libexecdir ;;
1924 + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
1925 + | --libexe=* | --libex=* | --libe=*)
1926 + libexecdir=$ac_optarg ;;
1928 + -localstatedir | --localstatedir | --localstatedi | --localstated \
1929 + | --localstate | --localstat | --localsta | --localst \
1930 + | --locals | --local | --loca | --loc | --lo)
1931 + ac_prev=localstatedir ;;
1932 + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
1933 + | --localstate=* | --localstat=* | --localsta=* | --localst=* \
1934 + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
1935 + localstatedir=$ac_optarg ;;
1937 + -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
1939 + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
1940 + mandir=$ac_optarg ;;
1942 + -nfp | --nfp | --nf)
1943 + # Obsolete; use --without-fp.
1946 + -no-create | --no-create | --no-creat | --no-crea | --no-cre \
1947 + | --no-cr | --no-c | -n)
1950 + -no-recursion | --no-recursion | --no-recursio | --no-recursi \
1951 + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
1952 + no_recursion=yes ;;
1954 + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
1955 + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
1956 + | --oldin | --oldi | --old | --ol | --o)
1957 + ac_prev=oldincludedir ;;
1958 + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
1959 + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
1960 + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
1961 + oldincludedir=$ac_optarg ;;
1963 + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
1965 + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
1966 + prefix=$ac_optarg ;;
1968 + -program-prefix | --program-prefix | --program-prefi | --program-pref \
1969 + | --program-pre | --program-pr | --program-p)
1970 + ac_prev=program_prefix ;;
1971 + -program-prefix=* | --program-prefix=* | --program-prefi=* \
1972 + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
1973 + program_prefix=$ac_optarg ;;
1975 + -program-suffix | --program-suffix | --program-suffi | --program-suff \
1976 + | --program-suf | --program-su | --program-s)
1977 + ac_prev=program_suffix ;;
1978 + -program-suffix=* | --program-suffix=* | --program-suffi=* \
1979 + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
1980 + program_suffix=$ac_optarg ;;
1982 + -program-transform-name | --program-transform-name \
1983 + | --program-transform-nam | --program-transform-na \
1984 + | --program-transform-n | --program-transform- \
1985 + | --program-transform | --program-transfor \
1986 + | --program-transfo | --program-transf \
1987 + | --program-trans | --program-tran \
1988 + | --progr-tra | --program-tr | --program-t)
1989 + ac_prev=program_transform_name ;;
1990 + -program-transform-name=* | --program-transform-name=* \
1991 + | --program-transform-nam=* | --program-transform-na=* \
1992 + | --program-transform-n=* | --program-transform-=* \
1993 + | --program-transform=* | --program-transfor=* \
1994 + | --program-transfo=* | --program-transf=* \
1995 + | --program-trans=* | --program-tran=* \
1996 + | --progr-tra=* | --program-tr=* | --program-t=*)
1997 + program_transform_name=$ac_optarg ;;
1999 + -q | -quiet | --quiet | --quie | --qui | --qu | --q \
2000 + | -silent | --silent | --silen | --sile | --sil)
2003 + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
2004 + ac_prev=sbindir ;;
2005 + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
2006 + | --sbi=* | --sb=*)
2007 + sbindir=$ac_optarg ;;
2009 + -sharedstatedir | --sharedstatedir | --sharedstatedi \
2010 + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
2011 + | --sharedst | --shareds | --shared | --share | --shar \
2013 + ac_prev=sharedstatedir ;;
2014 + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
2015 + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
2016 + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
2017 + | --sha=* | --sh=*)
2018 + sharedstatedir=$ac_optarg ;;
2020 + -site | --site | --sit)
2022 + -site=* | --site=* | --sit=*)
2023 + site=$ac_optarg ;;
2025 + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
2027 + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
2028 + srcdir=$ac_optarg ;;
2030 + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
2031 + | --syscon | --sysco | --sysc | --sys | --sy)
2032 + ac_prev=sysconfdir ;;
2033 + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
2034 + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
2035 + sysconfdir=$ac_optarg ;;
2037 + -target | --target | --targe | --targ | --tar | --ta | --t)
2038 + ac_prev=target_alias ;;
2039 + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
2040 + target_alias=$ac_optarg ;;
2042 + -v | -verbose | --verbose | --verbos | --verbo | --verb)
2045 + -version | --version | --versio | --versi | --vers | -V)
2046 + ac_init_version=: ;;
2048 + -with-* | --with-*)
2049 + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
2050 + # Reject names that are not valid shell variable names.
2051 + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
2052 + { echo "$as_me: error: invalid package name: $ac_package" >&2
2053 + { (exit 1); exit 1; }; }
2054 + ac_package=`echo $ac_package| sed 's/-/_/g'`
2055 + case $ac_option in
2056 + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
2057 + *) ac_optarg=yes ;;
2059 + eval "with_$ac_package='$ac_optarg'" ;;
2061 + -without-* | --without-*)
2062 + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
2063 + # Reject names that are not valid shell variable names.
2064 + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
2065 + { echo "$as_me: error: invalid package name: $ac_package" >&2
2066 + { (exit 1); exit 1; }; }
2067 + ac_package=`echo $ac_package | sed 's/-/_/g'`
2068 + eval "with_$ac_package=no" ;;
2071 + # Obsolete; use --with-x.
2074 + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
2075 + | --x-incl | --x-inc | --x-in | --x-i)
2076 + ac_prev=x_includes ;;
2077 + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
2078 + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
2079 + x_includes=$ac_optarg ;;
2081 + -x-libraries | --x-libraries | --x-librarie | --x-librari \
2082 + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
2083 + ac_prev=x_libraries ;;
2084 + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
2085 + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
2086 + x_libraries=$ac_optarg ;;
2088 + -*) { echo "$as_me: error: unrecognized option: $ac_option
2089 +Try \`$0 --help' for more information." >&2
2090 + { (exit 1); exit 1; }; }
2094 + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
2095 + # Reject names that are not valid shell variable names.
2096 + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
2097 + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
2098 + { (exit 1); exit 1; }; }
2099 + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
2100 + eval "$ac_envvar='$ac_optarg'"
2101 + export $ac_envvar ;;
2104 + # FIXME: should be removed in autoconf 3.0.
2105 + echo "$as_me: WARNING: you should use --build, --host, --target" >&2
2106 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
2107 + echo "$as_me: WARNING: invalid host type: $ac_option" >&2
2108 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
2114 +if test -n "$ac_prev"; then
2115 + ac_option=--`echo $ac_prev | sed 's/_/-/g'`
2116 + { echo "$as_me: error: missing argument to $ac_option" >&2
2117 + { (exit 1); exit 1; }; }
2120 +# Be sure to have absolute paths.
2121 +for ac_var in exec_prefix prefix
2123 + eval ac_val=$`echo $ac_var`
2125 + [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
2126 + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
2127 + { (exit 1); exit 1; }; };;
2131 +# Be sure to have absolute paths.
2132 +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
2133 + localstatedir libdir includedir oldincludedir infodir mandir
2135 + eval ac_val=$`echo $ac_var`
2137 + [\\/$]* | ?:[\\/]* ) ;;
2138 + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
2139 + { (exit 1); exit 1; }; };;
2143 +# There might be people who depend on the old broken behavior: `$host'
2144 +# used to hold the argument of --host etc.
2145 +# FIXME: To remove some day.
2148 +target=$target_alias
2150 +# FIXME: To remove some day.
2151 +if test "x$host_alias" != x; then
2152 + if test "x$build_alias" = x; then
2153 + cross_compiling=maybe
2154 + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
2155 + If a cross compiler is detected then cross compile mode will be used." >&2
2156 + elif test "x$build_alias" != "x$host_alias"; then
2157 + cross_compiling=yes
2162 +test -n "$host_alias" && ac_tool_prefix=$host_alias-
2164 +test "$silent" = yes && exec 6>/dev/null
2167 +# Find the source files, if location was not specified.
2168 +if test -z "$srcdir"; then
2169 + ac_srcdir_defaulted=yes
2170 + # Try the directory containing this script, then its parent.
2171 + ac_confdir=`(dirname "$0") 2>/dev/null ||
2172 +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
2173 + X"$0" : 'X\(//\)[^/]' \| \
2174 + X"$0" : 'X\(//\)$' \| \
2175 + X"$0" : 'X\(/\)' \| \
2176 + . : '\(.\)' 2>/dev/null ||
2178 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
2179 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
2180 + /^X\(\/\/\)$/{ s//\1/; q; }
2181 + /^X\(\/\).*/{ s//\1/; q; }
2183 + srcdir=$ac_confdir
2184 + if test ! -r $srcdir/$ac_unique_file; then
2188 + ac_srcdir_defaulted=no
2190 +if test ! -r $srcdir/$ac_unique_file; then
2191 + if test "$ac_srcdir_defaulted" = yes; then
2192 + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
2193 + { (exit 1); exit 1; }; }
2195 + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
2196 + { (exit 1); exit 1; }; }
2199 +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
2200 + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
2201 + { (exit 1); exit 1; }; }
2202 +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
2203 +ac_env_build_alias_set=${build_alias+set}
2204 +ac_env_build_alias_value=$build_alias
2205 +ac_cv_env_build_alias_set=${build_alias+set}
2206 +ac_cv_env_build_alias_value=$build_alias
2207 +ac_env_host_alias_set=${host_alias+set}
2208 +ac_env_host_alias_value=$host_alias
2209 +ac_cv_env_host_alias_set=${host_alias+set}
2210 +ac_cv_env_host_alias_value=$host_alias
2211 +ac_env_target_alias_set=${target_alias+set}
2212 +ac_env_target_alias_value=$target_alias
2213 +ac_cv_env_target_alias_set=${target_alias+set}
2214 +ac_cv_env_target_alias_value=$target_alias
2215 +ac_env_CXXCPP_set=${CXXCPP+set}
2216 +ac_env_CXXCPP_value=$CXXCPP
2217 +ac_cv_env_CXXCPP_set=${CXXCPP+set}
2218 +ac_cv_env_CXXCPP_value=$CXXCPP
2219 +ac_env_CPPFLAGS_set=${CPPFLAGS+set}
2220 +ac_env_CPPFLAGS_value=$CPPFLAGS
2221 +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
2222 +ac_cv_env_CPPFLAGS_value=$CPPFLAGS
2225 +# Report the --help message.
2227 +if test "$ac_init_help" = "long"; then
2228 + # Omit some internal or obsolete options to make the list less imposing.
2229 + # This message is too long to be a string in the A/UX 3.1 sh.
2231 +\`configure' configures this package to adapt to many kinds of systems.
2233 +Usage: $0 [OPTION]... [VAR=VALUE]...
2235 +To assign environment variables (e.g., CC, CFLAGS...), specify them as
2236 +VAR=VALUE. See below for descriptions of some of the useful variables.
2238 +Defaults for the options are specified in brackets.
2241 + -h, --help display this help and exit
2242 + --help=short display options specific to this package
2243 + --help=recursive display the short help of all the included packages
2244 + -V, --version display version information and exit
2245 + -q, --quiet, --silent do not print \`checking...' messages
2246 + --cache-file=FILE cache test results in FILE [disabled]
2247 + -C, --config-cache alias for \`--cache-file=config.cache'
2248 + -n, --no-create do not create output files
2249 + --srcdir=DIR find the sources in DIR [configure dir or \`..']
2254 +Installation directories:
2255 + --prefix=PREFIX install architecture-independent files in PREFIX
2256 + [$ac_default_prefix]
2257 + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
2260 +By default, \`make install' will install all the files in
2261 +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
2262 +an installation prefix other than \`$ac_default_prefix' using \`--prefix',
2263 +for instance \`--prefix=\$HOME'.
2265 +For better control, use the options below.
2267 +Fine tuning of the installation directories:
2268 + --bindir=DIR user executables [EPREFIX/bin]
2269 + --sbindir=DIR system admin executables [EPREFIX/sbin]
2270 + --libexecdir=DIR program executables [EPREFIX/libexec]
2271 + --datadir=DIR read-only architecture-independent data [PREFIX/share]
2272 + --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
2273 + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
2274 + --localstatedir=DIR modifiable single-machine data [PREFIX/var]
2275 + --libdir=DIR object code libraries [EPREFIX/lib]
2276 + --includedir=DIR C header files [PREFIX/include]
2277 + --oldincludedir=DIR C header files for non-gcc [/usr/include]
2278 + --infodir=DIR info documentation [PREFIX/info]
2279 + --mandir=DIR man documentation [PREFIX/man]
2285 + --program-prefix=PREFIX prepend PREFIX to installed program names
2286 + --program-suffix=SUFFIX append SUFFIX to installed program names
2287 + --program-transform-name=PROGRAM run sed PROGRAM on installed program names
2290 + --build=BUILD configure for building on BUILD [guessed]
2291 + --host=HOST cross-compile to build programs to run on HOST [BUILD]
2292 + --target=TARGET configure for building compilers for TARGET [HOST]
2296 +if test -n "$ac_init_help"; then
2301 + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
2302 + --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
2303 + --enable-multilib build many library versions (default)
2304 + --enable-maintainer-mode enable make rules and dependencies not useful
2305 + (and sometimes confusing) to the casual installer
2306 + --enable-shared=PKGS build shared libraries default=yes
2307 + --enable-static=PKGS build static libraries default=yes
2308 + --enable-fast-install=PKGS optimize for fast installation default=yes
2309 + --disable-libtool-lock avoid locking (might break parallel builds)
2310 + --enable-parallel-mark parallelize marking and free list construction
2311 + --enable-shared=PKGS build shared libraries default=no
2312 + --enable-full-debug include full support for pointer backtracing etc.
2315 + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
2316 + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
2317 + --with-gnu-ld assume the C compiler uses GNU ld default=no
2318 + --with-pic try to use only PIC/non-PIC objects default=use both
2319 + --with-target-subdir=SUBDIR
2320 + configuring with a cross compiler
2321 + --with-cross-host=HOST configuring with a cross compiler
2322 + --with-ecos enable runtime eCos target support
2324 +Some influential environment variables:
2325 + CXXCPP C++ preprocessor
2326 + CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
2327 + headers in a nonstandard directory <include dir>
2329 +Use these variables to override the choices made by `configure' or to help
2330 +it to find libraries and programs with nonstandard names/locations.
2335 +if test "$ac_init_help" = "recursive"; then
2336 + # If there are subdirs, report their specific --help.
2338 + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
2339 + test -d $ac_dir || continue
2342 +if test "$ac_dir" != .; then
2343 + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
2344 + # A "../" for each directory in $ac_dir_suffix.
2345 + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
2347 + ac_dir_suffix= ac_top_builddir=
2351 + .) # No --srcdir option. We are building in place.
2353 + if test -z "$ac_top_builddir"; then
2356 + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
2358 + [\\/]* | ?:[\\/]* ) # Absolute path.
2359 + ac_srcdir=$srcdir$ac_dir_suffix;
2360 + ac_top_srcdir=$srcdir ;;
2361 + *) # Relative path.
2362 + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
2363 + ac_top_srcdir=$ac_top_builddir$srcdir ;;
2365 +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
2367 +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
2368 +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
2369 +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
2370 +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
2373 + # Check for guested configure; otherwise get Cygnus style configure.
2374 + if test -f $ac_srcdir/configure.gnu; then
2376 + $SHELL $ac_srcdir/configure.gnu --help=recursive
2377 + elif test -f $ac_srcdir/configure; then
2379 + $SHELL $ac_srcdir/configure --help=recursive
2380 + elif test -f $ac_srcdir/configure.ac ||
2381 + test -f $ac_srcdir/configure.in; then
2383 + $ac_configure --help
2385 + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
2391 +test -n "$ac_init_help" && exit 0
2392 +if $ac_init_version; then
2395 +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
2396 +Free Software Foundation, Inc.
2397 +This configure script is free software; the Free Software Foundation
2398 +gives unlimited permission to copy, distribute and modify it.
2404 +This file contains any messages produced by compilers while
2405 +running configure, to aid debugging if configure makes a mistake.
2407 +It was created by $as_me, which was
2408 +generated by GNU Autoconf 2.57. Invocation command line was
2415 +@%:@@%:@ --------- @%:@@%:@
2416 +@%:@@%:@ Platform. @%:@@%:@
2417 +@%:@@%:@ --------- @%:@@%:@
2419 +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
2420 +uname -m = `(uname -m) 2>/dev/null || echo unknown`
2421 +uname -r = `(uname -r) 2>/dev/null || echo unknown`
2422 +uname -s = `(uname -s) 2>/dev/null || echo unknown`
2423 +uname -v = `(uname -v) 2>/dev/null || echo unknown`
2425 +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
2426 +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
2428 +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
2429 +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
2430 +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
2431 +hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
2432 +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
2433 +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
2434 +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
2438 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2439 +for as_dir in $PATH
2442 + test -z "$as_dir" && as_dir=.
2443 + echo "PATH: $as_dir"
2451 +@%:@@%:@ ----------- @%:@@%:@
2452 +@%:@@%:@ Core tests. @%:@@%:@
2453 +@%:@@%:@ ----------- @%:@@%:@
2458 +# Keep a trace of the command line.
2459 +# Strip out --no-create and --no-recursion so they do not pile up.
2460 +# Strip out --silent because we don't want to record it for future runs.
2461 +# Also quote any args containing shell meta-characters.
2462 +# Make two passes to allow for proper duplicate-argument suppression.
2464 +ac_configure_args0=
2465 +ac_configure_args1=
2467 +ac_must_keep_next=false
2473 + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
2474 + -q | -quiet | --quiet | --quie | --qui | --qu | --q \
2475 + | -silent | --silent | --silen | --sile | --sil)
2477 + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
2478 + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
2481 + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
2483 + ac_configure_args1="$ac_configure_args1 '$ac_arg'"
2484 + if test $ac_must_keep_next = true; then
2485 + ac_must_keep_next=false # Got value, back to normal.
2488 + *=* | --config-cache | -C | -disable-* | --disable-* \
2489 + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
2490 + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
2491 + | -with-* | --with-* | -without-* | --without-* | --x)
2492 + case "$ac_configure_args0 " in
2493 + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
2496 + -* ) ac_must_keep_next=true ;;
2499 + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
2500 + # Get rid of the leading space.
2506 +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
2507 +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
2509 +# When interrupted or exit'd, cleanup temporary files, and complete
2510 +# config.log. We remove comments because anyway the quotes in there
2511 +# would cause problems or look ugly.
2512 +# WARNING: Be sure not to use single quotes in there, as some shells,
2513 +# such as our DU 5.0 friend, will then `close' the trap.
2514 +trap 'exit_status=$?
2515 + # Save into config.log some information that might help in debugging.
2520 +@%:@@%:@ ---------------- @%:@@%:@
2521 +@%:@@%:@ Cache variables. @%:@@%:@
2522 +@%:@@%:@ ---------------- @%:@@%:@
2525 + # The following way of writing the cache mishandles newlines in values,
2528 + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
2531 + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
2532 + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
2536 + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
2543 +@%:@@%:@ ----------------- @%:@@%:@
2544 +@%:@@%:@ Output variables. @%:@@%:@
2545 +@%:@@%:@ ----------------- @%:@@%:@
2548 + for ac_var in $ac_subst_vars
2550 + eval ac_val=$`echo $ac_var`
2551 + echo "$ac_var='"'"'$ac_val'"'"'"
2555 + if test -n "$ac_subst_files"; then
2557 +@%:@@%:@ ------------- @%:@@%:@
2558 +@%:@@%:@ Output files. @%:@@%:@
2559 +@%:@@%:@ ------------- @%:@@%:@
2562 + for ac_var in $ac_subst_files
2564 + eval ac_val=$`echo $ac_var`
2565 + echo "$ac_var='"'"'$ac_val'"'"'"
2570 + if test -s confdefs.h; then
2572 +@%:@@%:@ ----------- @%:@@%:@
2573 +@%:@@%:@ confdefs.h. @%:@@%:@
2574 +@%:@@%:@ ----------- @%:@@%:@
2577 + sed "/^$/d" confdefs.h | sort
2580 + test "$ac_signal" != 0 &&
2581 + echo "$as_me: caught signal $ac_signal"
2582 + echo "$as_me: exit $exit_status"
2584 + rm -f core core.* *.core &&
2585 + rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
2588 +for ac_signal in 1 2 13 15; do
2589 + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
2593 +# confdefs.h avoids OS command line length limits that DEFS can exceed.
2594 +rm -rf conftest* confdefs.h
2595 +# AIX cpp loses on an empty file, so make sure it contains at least a newline.
2598 +# Predefined preprocessor variables.
2600 +cat >>confdefs.h <<_ACEOF
2601 +@%:@define PACKAGE_NAME "$PACKAGE_NAME"
2605 +cat >>confdefs.h <<_ACEOF
2606 +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
2610 +cat >>confdefs.h <<_ACEOF
2611 +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
2615 +cat >>confdefs.h <<_ACEOF
2616 +@%:@define PACKAGE_STRING "$PACKAGE_STRING"
2620 +cat >>confdefs.h <<_ACEOF
2621 +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
2625 +# Let the site file select an alternate cache file if it wants to.
2626 +# Prefer explicitly selected file to automatically selected ones.
2627 +if test -z "$CONFIG_SITE"; then
2628 + if test "x$prefix" != xNONE; then
2629 + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
2631 + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
2634 +for ac_site_file in $CONFIG_SITE; do
2635 + if test -r "$ac_site_file"; then
2636 + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
2637 +echo "$as_me: loading site script $ac_site_file" >&6;}
2638 + sed 's/^/| /' "$ac_site_file" >&5
2643 +if test -r "$cache_file"; then
2644 + # Some versions of bash will fail to source /dev/null (special
2645 + # files actually), so we avoid doing that.
2646 + if test -f "$cache_file"; then
2647 + { echo "$as_me:$LINENO: loading cache $cache_file" >&5
2648 +echo "$as_me: loading cache $cache_file" >&6;}
2649 + case $cache_file in
2650 + [\\/]* | ?:[\\/]* ) . $cache_file;;
2651 + *) . ./$cache_file;;
2655 + { echo "$as_me:$LINENO: creating cache $cache_file" >&5
2656 +echo "$as_me: creating cache $cache_file" >&6;}
2660 +# Check that the precious variables saved in the cache have kept the same
2662 +ac_cache_corrupted=false
2663 +for ac_var in `(set) 2>&1 |
2664 + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
2665 + eval ac_old_set=\$ac_cv_env_${ac_var}_set
2666 + eval ac_new_set=\$ac_env_${ac_var}_set
2667 + eval ac_old_val="\$ac_cv_env_${ac_var}_value"
2668 + eval ac_new_val="\$ac_env_${ac_var}_value"
2669 + case $ac_old_set,$ac_new_set in
2671 + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
2672 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
2673 + ac_cache_corrupted=: ;;
2675 + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
2676 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
2677 + ac_cache_corrupted=: ;;
2680 + if test "x$ac_old_val" != "x$ac_new_val"; then
2681 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
2682 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
2683 + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
2684 +echo "$as_me: former value: $ac_old_val" >&2;}
2685 + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
2686 +echo "$as_me: current value: $ac_new_val" >&2;}
2687 + ac_cache_corrupted=:
2690 + # Pass precious variables to config.status.
2691 + if test "$ac_new_set" = set; then
2692 + case $ac_new_val in
2693 + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
2694 + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
2695 + *) ac_arg=$ac_var=$ac_new_val ;;
2697 + case " $ac_configure_args " in
2698 + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
2699 + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
2703 +if $ac_cache_corrupted; then
2704 + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
2705 +echo "$as_me: error: changes in the environment can compromise the build" >&2;}
2706 + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
2707 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
2708 + { (exit 1); exit 1; }; }
2712 +ac_cpp='$CPP $CPPFLAGS'
2713 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
2714 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
2715 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
2736 +# This works around the fact that libtool configuration may change LD
2737 +# for this particular configuration, but some shells, instead of
2738 +# keeping the changes in LD private, export them just because LD is
2740 +ORIGINAL_LD_FOR_MULTILIBS=$LD
2743 +for ac_dir in . $srcdir/.; do
2744 + if test -f $ac_dir/install-sh; then
2745 + ac_aux_dir=$ac_dir
2746 + ac_install_sh="$ac_aux_dir/install-sh -c"
2748 + elif test -f $ac_dir/install.sh; then
2749 + ac_aux_dir=$ac_dir
2750 + ac_install_sh="$ac_aux_dir/install.sh -c"
2752 + elif test -f $ac_dir/shtool; then
2753 + ac_aux_dir=$ac_dir
2754 + ac_install_sh="$ac_aux_dir/shtool install -c"
2758 +if test -z "$ac_aux_dir"; then
2759 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in . $srcdir/." >&5
2760 +echo "$as_me: error: cannot find install-sh or install.sh in . $srcdir/." >&2;}
2761 + { (exit 1); exit 1; }; }
2763 +ac_config_guess="$SHELL $ac_aux_dir/config.guess"
2764 +ac_config_sub="$SHELL $ac_aux_dir/config.sub"
2765 +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
2768 +# Make sure we can run config.sub.
2769 +$ac_config_sub sun4 >/dev/null 2>&1 ||
2770 + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
2771 +echo "$as_me: error: cannot run $ac_config_sub" >&2;}
2772 + { (exit 1); exit 1; }; }
2774 +echo "$as_me:$LINENO: checking build system type" >&5
2775 +echo $ECHO_N "checking build system type... $ECHO_C" >&6
2776 +if test "${ac_cv_build+set}" = set; then
2777 + echo $ECHO_N "(cached) $ECHO_C" >&6
2779 + ac_cv_build_alias=$build_alias
2780 +test -z "$ac_cv_build_alias" &&
2781 + ac_cv_build_alias=`$ac_config_guess`
2782 +test -z "$ac_cv_build_alias" &&
2783 + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
2784 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
2785 + { (exit 1); exit 1; }; }
2786 +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
2787 + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
2788 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
2789 + { (exit 1); exit 1; }; }
2792 +echo "$as_me:$LINENO: result: $ac_cv_build" >&5
2793 +echo "${ECHO_T}$ac_cv_build" >&6
2795 +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
2796 +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
2797 +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
2800 +echo "$as_me:$LINENO: checking host system type" >&5
2801 +echo $ECHO_N "checking host system type... $ECHO_C" >&6
2802 +if test "${ac_cv_host+set}" = set; then
2803 + echo $ECHO_N "(cached) $ECHO_C" >&6
2805 + ac_cv_host_alias=$host_alias
2806 +test -z "$ac_cv_host_alias" &&
2807 + ac_cv_host_alias=$ac_cv_build_alias
2808 +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
2809 + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
2810 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
2811 + { (exit 1); exit 1; }; }
2814 +echo "$as_me:$LINENO: result: $ac_cv_host" >&5
2815 +echo "${ECHO_T}$ac_cv_host" >&6
2817 +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
2818 +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
2819 +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
2822 +# Find a good install program. We prefer a C program (faster),
2823 +# so one script is as good as another. But avoid the broken or
2824 +# incompatible versions:
2825 +# SysV /etc/install, /usr/sbin/install
2826 +# SunOS /usr/etc/install
2827 +# IRIX /sbin/install
2829 +# AmigaOS /C/install, which installs bootblocks on floppy discs
2830 +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
2831 +# AFS /usr/afsws/bin/install, which mishandles nonexistent args
2832 +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
2833 +# ./install, which can be erroneously created by make from ./install.sh.
2834 +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
2835 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
2836 +if test -z "$INSTALL"; then
2837 +if test "${ac_cv_path_install+set}" = set; then
2838 + echo $ECHO_N "(cached) $ECHO_C" >&6
2840 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2841 +for as_dir in $PATH
2844 + test -z "$as_dir" && as_dir=.
2845 + # Account for people who put trailing slashes in PATH elements.
2847 + ./ | .// | /cC/* | \
2848 + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
2851 + # OSF1 and SCO ODT 3.0 have their own names for install.
2852 + # Don't use installbsd from OSF since it installs stuff as root
2854 + for ac_prog in ginstall scoinst install; do
2855 + for ac_exec_ext in '' $ac_executable_extensions; do
2856 + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
2857 + if test $ac_prog = install &&
2858 + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
2859 + # AIX install. It has an incompatible calling convention.
2861 + elif test $ac_prog = install &&
2862 + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
2863 + # program-specific install script used by HP pwplus--don't use.
2866 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
2878 + if test "${ac_cv_path_install+set}" = set; then
2879 + INSTALL=$ac_cv_path_install
2881 + # As a last resort, use the slow shell script. We don't cache a
2882 + # path for INSTALL within a source directory, because that will
2883 + # break other packages using the cache if that directory is
2884 + # removed, or if the path is relative.
2885 + INSTALL=$ac_install_sh
2888 +echo "$as_me:$LINENO: result: $INSTALL" >&5
2889 +echo "${ECHO_T}$INSTALL" >&6
2891 +# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
2892 +# It thinks the first close brace ends the variable substitution.
2893 +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
2895 +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
2897 +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
2899 +echo "$as_me:$LINENO: checking whether build environment is sane" >&5
2900 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
2903 +echo timestamp > conftestfile
2904 +# Do `set' in a subshell so we don't clobber the current shell's
2905 +# arguments. Must try -L first in case configure is actually a
2906 +# symlink; some systems play weird games with the mod time of symlinks
2907 +# (eg FreeBSD returns the mod time of the symlink's containing
2910 + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
2911 + if test "$*" = "X"; then
2913 + set X `ls -t $srcdir/configure conftestfile`
2915 + if test "$*" != "X $srcdir/configure conftestfile" \
2916 + && test "$*" != "X conftestfile $srcdir/configure"; then
2918 + # If neither matched, then we have a broken ls. This can happen
2919 + # if, for instance, CONFIG_SHELL is bash and it inherits a
2920 + # broken ls alias from the environment. This has actually
2921 + # happened. Such a system could not be considered "sane".
2922 + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
2923 +alias in your environment" >&5
2924 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
2925 +alias in your environment" >&2;}
2926 + { (exit 1); exit 1; }; }
2929 + test "$2" = conftestfile
2935 + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
2936 +Check your system clock" >&5
2937 +echo "$as_me: error: newly created file is older than distributed files!
2938 +Check your system clock" >&2;}
2939 + { (exit 1); exit 1; }; }
2942 +echo "$as_me:$LINENO: result: yes" >&5
2943 +echo "${ECHO_T}yes" >&6
2944 +test "$program_prefix" != NONE &&
2945 + program_transform_name="s,^,$program_prefix,;$program_transform_name"
2946 +# Use a double $ so make ignores it.
2947 +test "$program_suffix" != NONE &&
2948 + program_transform_name="s,\$,$program_suffix,;$program_transform_name"
2949 +# Double any \ or $. echo might interpret backslashes.
2950 +# By default was `s,x,x', remove it if useless.
2951 +cat <<\_ACEOF >conftest.sed
2952 +s/[\\$]/&&/g;s/;s,x,x,$//
2954 +program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
2957 +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
2958 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
2959 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
2960 +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
2961 + echo $ECHO_N "(cached) $ECHO_C" >&6
2963 + cat >conftest.make <<\_ACEOF
2965 + @echo 'ac_maketemp="$(MAKE)"'
2967 +# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
2968 +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
2969 +if test -n "$ac_maketemp"; then
2970 + eval ac_cv_prog_make_${ac_make}_set=yes
2972 + eval ac_cv_prog_make_${ac_make}_set=no
2974 +rm -f conftest.make
2976 +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
2977 + echo "$as_me:$LINENO: result: yes" >&5
2978 +echo "${ECHO_T}yes" >&6
2981 + echo "$as_me:$LINENO: result: no" >&5
2982 +echo "${ECHO_T}no" >&6
2983 + SET_MAKE="MAKE=${MAKE-make}"
2987 +# Check whether --enable-multilib or --disable-multilib was given.
2988 +if test "${enable_multilib+set}" = set; then
2989 + enableval="$enable_multilib"
2990 + case "${enableval}" in
2991 + yes) multilib=yes ;;
2992 + no) multilib=no ;;
2993 + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for multilib option" >&5
2994 +echo "$as_me: error: bad value ${enableval} for multilib option" >&2;}
2995 + { (exit 1); exit 1; }; } ;;
3001 +if test "${srcdir}" = "."; then
3002 + if test "${with_target_subdir}" != "." -a -n "${with_target_subdir}"; then
3003 + gc_basedir="${srcdir}/${with_multisrctop}../."
3005 + gc_basedir="${srcdir}/${with_multisrctop}."
3008 + gc_basedir="${srcdir}/."
3012 +for ac_dir in $gc_basedir/.. $srcdir/$gc_basedir/..; do
3013 + if test -f $ac_dir/install-sh; then
3014 + ac_aux_dir=$ac_dir
3015 + ac_install_sh="$ac_aux_dir/install-sh -c"
3017 + elif test -f $ac_dir/install.sh; then
3018 + ac_aux_dir=$ac_dir
3019 + ac_install_sh="$ac_aux_dir/install.sh -c"
3021 + elif test -f $ac_dir/shtool; then
3022 + ac_aux_dir=$ac_dir
3023 + ac_install_sh="$ac_aux_dir/shtool install -c"
3027 +if test -z "$ac_aux_dir"; then
3028 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $gc_basedir/.. $srcdir/$gc_basedir/.." >&5
3029 +echo "$as_me: error: cannot find install-sh or install.sh in $gc_basedir/.. $srcdir/$gc_basedir/.." >&2;}
3030 + { (exit 1); exit 1; }; }
3032 +ac_config_guess="$SHELL $ac_aux_dir/config.guess"
3033 +ac_config_sub="$SHELL $ac_aux_dir/config.sub"
3034 +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
3037 + # This overrides the previous occurrence for automake, but not for
3038 + # autoconf, which is exactly what we want.
3040 +for ac_dir in .. $srcdir/..; do
3041 + if test -f $ac_dir/install-sh; then
3042 + ac_aux_dir=$ac_dir
3043 + ac_install_sh="$ac_aux_dir/install-sh -c"
3045 + elif test -f $ac_dir/install.sh; then
3046 + ac_aux_dir=$ac_dir
3047 + ac_install_sh="$ac_aux_dir/install.sh -c"
3049 + elif test -f $ac_dir/shtool; then
3050 + ac_aux_dir=$ac_dir
3051 + ac_install_sh="$ac_aux_dir/shtool install -c"
3055 +if test -z "$ac_aux_dir"; then
3056 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in .. $srcdir/.." >&5
3057 +echo "$as_me: error: cannot find install-sh or install.sh in .. $srcdir/.." >&2;}
3058 + { (exit 1); exit 1; }; }
3060 +ac_config_guess="$SHELL $ac_aux_dir/config.guess"
3061 +ac_config_sub="$SHELL $ac_aux_dir/config.sub"
3062 +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
3066 +echo "$as_me:$LINENO: checking target system type" >&5
3067 +echo $ECHO_N "checking target system type... $ECHO_C" >&6
3068 +if test "${ac_cv_target+set}" = set; then
3069 + echo $ECHO_N "(cached) $ECHO_C" >&6
3071 + ac_cv_target_alias=$target_alias
3072 +test "x$ac_cv_target_alias" = "x" &&
3073 + ac_cv_target_alias=$ac_cv_host_alias
3074 +ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
3075 + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
3076 +echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
3077 + { (exit 1); exit 1; }; }
3080 +echo "$as_me:$LINENO: result: $ac_cv_target" >&5
3081 +echo "${ECHO_T}$ac_cv_target" >&6
3082 +target=$ac_cv_target
3083 +target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
3084 +target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
3085 +target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
3088 +# The aliases save the names the user supplied, while $host etc.
3089 +# will get canonicalized.
3090 +test -n "$target_alias" &&
3091 + test "$program_prefix$program_suffix$program_transform_name" = \
3093 + program_prefix=${target_alias}-
3095 +# This works around an automake problem.
3096 +mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs"
3104 +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
3105 + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
3106 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
3107 + { (exit 1); exit 1; }; }
3112 +missing_dir=`cd $ac_aux_dir && pwd`
3113 +echo "$as_me:$LINENO: checking for working aclocal" >&5
3114 +echo $ECHO_N "checking for working aclocal... $ECHO_C" >&6
3115 +# Run test in a subshell; some versions of sh will print an error if
3116 +# an executable is not found, even if stderr is redirected.
3117 +# Redirect stdin to placate older versions of autoconf. Sigh.
3118 +if (aclocal --version) < /dev/null > /dev/null 2>&1; then
3120 + echo "$as_me:$LINENO: result: found" >&5
3121 +echo "${ECHO_T}found" >&6
3123 + ACLOCAL="$missing_dir/missing aclocal"
3124 + echo "$as_me:$LINENO: result: missing" >&5
3125 +echo "${ECHO_T}missing" >&6
3128 +echo "$as_me:$LINENO: checking for working autoconf" >&5
3129 +echo $ECHO_N "checking for working autoconf... $ECHO_C" >&6
3130 +# Run test in a subshell; some versions of sh will print an error if
3131 +# an executable is not found, even if stderr is redirected.
3132 +# Redirect stdin to placate older versions of autoconf. Sigh.
3133 +if (autoconf --version) < /dev/null > /dev/null 2>&1; then
3135 + echo "$as_me:$LINENO: result: found" >&5
3136 +echo "${ECHO_T}found" >&6
3138 + AUTOCONF="$missing_dir/missing autoconf"
3139 + echo "$as_me:$LINENO: result: missing" >&5
3140 +echo "${ECHO_T}missing" >&6
3143 +echo "$as_me:$LINENO: checking for working automake" >&5
3144 +echo $ECHO_N "checking for working automake... $ECHO_C" >&6
3145 +# Run test in a subshell; some versions of sh will print an error if
3146 +# an executable is not found, even if stderr is redirected.
3147 +# Redirect stdin to placate older versions of autoconf. Sigh.
3148 +if (automake --version) < /dev/null > /dev/null 2>&1; then
3150 + echo "$as_me:$LINENO: result: found" >&5
3151 +echo "${ECHO_T}found" >&6
3153 + AUTOMAKE="$missing_dir/missing automake"
3154 + echo "$as_me:$LINENO: result: missing" >&5
3155 +echo "${ECHO_T}missing" >&6
3158 +echo "$as_me:$LINENO: checking for working autoheader" >&5
3159 +echo $ECHO_N "checking for working autoheader... $ECHO_C" >&6
3160 +# Run test in a subshell; some versions of sh will print an error if
3161 +# an executable is not found, even if stderr is redirected.
3162 +# Redirect stdin to placate older versions of autoconf. Sigh.
3163 +if (autoheader --version) < /dev/null > /dev/null 2>&1; then
3164 + AUTOHEADER=autoheader
3165 + echo "$as_me:$LINENO: result: found" >&5
3166 +echo "${ECHO_T}found" >&6
3168 + AUTOHEADER="$missing_dir/missing autoheader"
3169 + echo "$as_me:$LINENO: result: missing" >&5
3170 +echo "${ECHO_T}missing" >&6
3173 +echo "$as_me:$LINENO: checking for working makeinfo" >&5
3174 +echo $ECHO_N "checking for working makeinfo... $ECHO_C" >&6
3175 +# Run test in a subshell; some versions of sh will print an error if
3176 +# an executable is not found, even if stderr is redirected.
3177 +# Redirect stdin to placate older versions of autoconf. Sigh.
3178 +if (makeinfo --version) < /dev/null > /dev/null 2>&1; then
3180 + echo "$as_me:$LINENO: result: found" >&5
3181 +echo "${ECHO_T}found" >&6
3183 + MAKEINFO="$missing_dir/missing makeinfo"
3184 + echo "$as_me:$LINENO: result: missing" >&5
3185 +echo "${ECHO_T}missing" >&6
3190 +# FIXME: We temporarily define our own version of AC_PROG_CC. This is
3191 +# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
3192 +# are probably using a cross compiler, which will not be able to fully
3193 +# link an executable. This should really be fixed in autoconf
3199 +# Extract the first word of "gcc", so it can be a program name with args.
3200 +set dummy gcc; ac_word=$2
3201 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3202 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3203 +if test "${ac_cv_prog_CC+set}" = set; then
3204 + echo $ECHO_N "(cached) $ECHO_C" >&6
3206 + if test -n "$CC"; then
3207 + ac_cv_prog_CC="$CC" # Let the user override the test.
3209 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3210 +for as_dir in $PATH
3213 + test -z "$as_dir" && as_dir=.
3214 + for ac_exec_ext in '' $ac_executable_extensions; do
3215 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3216 + ac_cv_prog_CC="gcc"
3217 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3226 +if test -n "$CC"; then
3227 + echo "$as_me:$LINENO: result: $CC" >&5
3228 +echo "${ECHO_T}$CC" >&6
3230 + echo "$as_me:$LINENO: result: no" >&5
3231 +echo "${ECHO_T}no" >&6
3234 +if test -z "$CC"; then
3235 + # Extract the first word of "cc", so it can be a program name with args.
3236 +set dummy cc; ac_word=$2
3237 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3238 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3239 +if test "${ac_cv_prog_CC+set}" = set; then
3240 + echo $ECHO_N "(cached) $ECHO_C" >&6
3242 + if test -n "$CC"; then
3243 + ac_cv_prog_CC="$CC" # Let the user override the test.
3245 + ac_prog_rejected=no
3246 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3247 +for as_dir in $PATH
3250 + test -z "$as_dir" && as_dir=.
3251 + for ac_exec_ext in '' $ac_executable_extensions; do
3252 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3253 + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
3254 + ac_prog_rejected=yes
3257 + ac_cv_prog_CC="cc"
3258 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3264 +if test $ac_prog_rejected = yes; then
3265 + # We found a bogon in the path, so make sure we never use it.
3266 + set dummy $ac_cv_prog_CC
3268 + if test $@%:@ != 0; then
3269 + # We chose a different compiler from the bogus one.
3270 + # However, it has the same basename, so the bogon will be chosen
3271 + # first if we set CC to just the basename; use the full file name.
3273 + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
3279 +if test -n "$CC"; then
3280 + echo "$as_me:$LINENO: result: $CC" >&5
3281 +echo "${ECHO_T}$CC" >&6
3283 + echo "$as_me:$LINENO: result: no" >&5
3284 +echo "${ECHO_T}no" >&6
3287 + test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable cc found in \$PATH" >&5
3288 +echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
3289 + { (exit 1); exit 1; }; }
3294 +if test $ac_cv_c_compiler_gnu = yes; then
3296 + ac_test_CFLAGS="${CFLAGS+set}"
3297 + ac_save_CFLAGS="$CFLAGS"
3300 + if test "$ac_test_CFLAGS" = set; then
3301 + CFLAGS="$ac_save_CFLAGS"
3302 + elif test $ac_cv_prog_cc_g = yes; then
3309 + test "${CFLAGS+set}" = set || CFLAGS="-g"
3313 +# Likewise for AC_PROG_CXX.
3317 +for ac_prog in $CCC c++ g++ gcc CC cxx cc++
3319 + # Extract the first word of "$ac_prog", so it can be a program name with args.
3320 +set dummy $ac_prog; ac_word=$2
3321 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3322 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3323 +if test "${ac_cv_prog_CXX+set}" = set; then
3324 + echo $ECHO_N "(cached) $ECHO_C" >&6
3326 + if test -n "$CXX"; then
3327 + ac_cv_prog_CXX="$CXX" # Let the user override the test.
3329 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3330 +for as_dir in $PATH
3333 + test -z "$as_dir" && as_dir=.
3334 + for ac_exec_ext in '' $ac_executable_extensions; do
3335 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3336 + ac_cv_prog_CXX="$ac_prog"
3337 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3345 +CXX=$ac_cv_prog_CXX
3346 +if test -n "$CXX"; then
3347 + echo "$as_me:$LINENO: result: $CXX" >&5
3348 +echo "${ECHO_T}$CXX" >&6
3350 + echo "$as_me:$LINENO: result: no" >&5
3351 +echo "${ECHO_T}no" >&6
3354 + test -n "$CXX" && break
3356 +test -n "$CXX" || CXX="gcc"
3358 +test -z "$CXX" && { { echo "$as_me:$LINENO: error: no acceptable c++ found in \$PATH" >&5
3359 +echo "$as_me: error: no acceptable c++ found in \$PATH" >&2;}
3360 + { (exit 1); exit 1; }; }
3364 +if test $ac_cv_cxx_compiler_gnu = yes; then
3366 + ac_test_CXXFLAGS="${CXXFLAGS+set}"
3367 + ac_save_CXXFLAGS="$CXXFLAGS"
3370 + if test "$ac_test_CXXFLAGS" = set; then
3371 + CXXFLAGS="$ac_save_CXXFLAGS"
3372 + elif test $ac_cv_prog_cxx_g = yes; then
3379 + test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
3383 +# AC_CHECK_TOOL does AC_REQUIRE (AC_CANONICAL_BUILD). If we don't
3384 +# run it explicitly here, it will be run implicitly before
3385 +# NEWLIB_CONFIGURE, which doesn't work because that means that it will
3386 +# be run before AC_CANONICAL_HOST.
3389 +if test -n "$ac_tool_prefix"; then
3390 + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
3391 +set dummy ${ac_tool_prefix}as; ac_word=$2
3392 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3393 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3394 +if test "${ac_cv_prog_AS+set}" = set; then
3395 + echo $ECHO_N "(cached) $ECHO_C" >&6
3397 + if test -n "$AS"; then
3398 + ac_cv_prog_AS="$AS" # Let the user override the test.
3400 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3401 +for as_dir in $PATH
3404 + test -z "$as_dir" && as_dir=.
3405 + for ac_exec_ext in '' $ac_executable_extensions; do
3406 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3407 + ac_cv_prog_AS="${ac_tool_prefix}as"
3408 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3417 +if test -n "$AS"; then
3418 + echo "$as_me:$LINENO: result: $AS" >&5
3419 +echo "${ECHO_T}$AS" >&6
3421 + echo "$as_me:$LINENO: result: no" >&5
3422 +echo "${ECHO_T}no" >&6
3426 +if test -z "$ac_cv_prog_AS"; then
3428 + # Extract the first word of "as", so it can be a program name with args.
3429 +set dummy as; ac_word=$2
3430 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3431 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3432 +if test "${ac_cv_prog_ac_ct_AS+set}" = set; then
3433 + echo $ECHO_N "(cached) $ECHO_C" >&6
3435 + if test -n "$ac_ct_AS"; then
3436 + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
3438 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3439 +for as_dir in $PATH
3442 + test -z "$as_dir" && as_dir=.
3443 + for ac_exec_ext in '' $ac_executable_extensions; do
3444 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3445 + ac_cv_prog_ac_ct_AS="as"
3446 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3454 +ac_ct_AS=$ac_cv_prog_ac_ct_AS
3455 +if test -n "$ac_ct_AS"; then
3456 + echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
3457 +echo "${ECHO_T}$ac_ct_AS" >&6
3459 + echo "$as_me:$LINENO: result: no" >&5
3460 +echo "${ECHO_T}no" >&6
3465 + AS="$ac_cv_prog_AS"
3468 +if test -n "$ac_tool_prefix"; then
3469 + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
3470 +set dummy ${ac_tool_prefix}ar; ac_word=$2
3471 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3472 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3473 +if test "${ac_cv_prog_AR+set}" = set; then
3474 + echo $ECHO_N "(cached) $ECHO_C" >&6
3476 + if test -n "$AR"; then
3477 + ac_cv_prog_AR="$AR" # Let the user override the test.
3479 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3480 +for as_dir in $PATH
3483 + test -z "$as_dir" && as_dir=.
3484 + for ac_exec_ext in '' $ac_executable_extensions; do
3485 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3486 + ac_cv_prog_AR="${ac_tool_prefix}ar"
3487 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3496 +if test -n "$AR"; then
3497 + echo "$as_me:$LINENO: result: $AR" >&5
3498 +echo "${ECHO_T}$AR" >&6
3500 + echo "$as_me:$LINENO: result: no" >&5
3501 +echo "${ECHO_T}no" >&6
3505 +if test -z "$ac_cv_prog_AR"; then
3507 + # Extract the first word of "ar", so it can be a program name with args.
3508 +set dummy ar; ac_word=$2
3509 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3510 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3511 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
3512 + echo $ECHO_N "(cached) $ECHO_C" >&6
3514 + if test -n "$ac_ct_AR"; then
3515 + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
3517 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3518 +for as_dir in $PATH
3521 + test -z "$as_dir" && as_dir=.
3522 + for ac_exec_ext in '' $ac_executable_extensions; do
3523 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3524 + ac_cv_prog_ac_ct_AR="ar"
3525 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3533 +ac_ct_AR=$ac_cv_prog_ac_ct_AR
3534 +if test -n "$ac_ct_AR"; then
3535 + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
3536 +echo "${ECHO_T}$ac_ct_AR" >&6
3538 + echo "$as_me:$LINENO: result: no" >&5
3539 +echo "${ECHO_T}no" >&6
3544 + AR="$ac_cv_prog_AR"
3547 +if test -n "$ac_tool_prefix"; then
3548 + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
3549 +set dummy ${ac_tool_prefix}ranlib; ac_word=$2
3550 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3551 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3552 +if test "${ac_cv_prog_RANLIB+set}" = set; then
3553 + echo $ECHO_N "(cached) $ECHO_C" >&6
3555 + if test -n "$RANLIB"; then
3556 + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
3558 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3559 +for as_dir in $PATH
3562 + test -z "$as_dir" && as_dir=.
3563 + for ac_exec_ext in '' $ac_executable_extensions; do
3564 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3565 + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
3566 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3574 +RANLIB=$ac_cv_prog_RANLIB
3575 +if test -n "$RANLIB"; then
3576 + echo "$as_me:$LINENO: result: $RANLIB" >&5
3577 +echo "${ECHO_T}$RANLIB" >&6
3579 + echo "$as_me:$LINENO: result: no" >&5
3580 +echo "${ECHO_T}no" >&6
3584 +if test -z "$ac_cv_prog_RANLIB"; then
3585 + ac_ct_RANLIB=$RANLIB
3586 + # Extract the first word of "ranlib", so it can be a program name with args.
3587 +set dummy ranlib; ac_word=$2
3588 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3589 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3590 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
3591 + echo $ECHO_N "(cached) $ECHO_C" >&6
3593 + if test -n "$ac_ct_RANLIB"; then
3594 + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
3596 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3597 +for as_dir in $PATH
3600 + test -z "$as_dir" && as_dir=.
3601 + for ac_exec_ext in '' $ac_executable_extensions; do
3602 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3603 + ac_cv_prog_ac_ct_RANLIB="ranlib"
3604 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3610 + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
3613 +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
3614 +if test -n "$ac_ct_RANLIB"; then
3615 + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
3616 +echo "${ECHO_T}$ac_ct_RANLIB" >&6
3618 + echo "$as_me:$LINENO: result: no" >&5
3619 +echo "${ECHO_T}no" >&6
3622 + RANLIB=$ac_ct_RANLIB
3624 + RANLIB="$ac_cv_prog_RANLIB"
3628 +# Find a good install program. We prefer a C program (faster),
3629 +# so one script is as good as another. But avoid the broken or
3630 +# incompatible versions:
3631 +# SysV /etc/install, /usr/sbin/install
3632 +# SunOS /usr/etc/install
3633 +# IRIX /sbin/install
3635 +# AmigaOS /C/install, which installs bootblocks on floppy discs
3636 +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
3637 +# AFS /usr/afsws/bin/install, which mishandles nonexistent args
3638 +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
3639 +# ./install, which can be erroneously created by make from ./install.sh.
3640 +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
3641 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
3642 +if test -z "$INSTALL"; then
3643 +if test "${ac_cv_path_install+set}" = set; then
3644 + echo $ECHO_N "(cached) $ECHO_C" >&6
3646 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3647 +for as_dir in $PATH
3650 + test -z "$as_dir" && as_dir=.
3651 + # Account for people who put trailing slashes in PATH elements.
3653 + ./ | .// | /cC/* | \
3654 + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
3657 + # OSF1 and SCO ODT 3.0 have their own names for install.
3658 + # Don't use installbsd from OSF since it installs stuff as root
3660 + for ac_prog in ginstall scoinst install; do
3661 + for ac_exec_ext in '' $ac_executable_extensions; do
3662 + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
3663 + if test $ac_prog = install &&
3664 + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
3665 + # AIX install. It has an incompatible calling convention.
3667 + elif test $ac_prog = install &&
3668 + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
3669 + # program-specific install script used by HP pwplus--don't use.
3672 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
3684 + if test "${ac_cv_path_install+set}" = set; then
3685 + INSTALL=$ac_cv_path_install
3687 + # As a last resort, use the slow shell script. We don't cache a
3688 + # path for INSTALL within a source directory, because that will
3689 + # break other packages using the cache if that directory is
3690 + # removed, or if the path is relative.
3691 + INSTALL=$ac_install_sh
3694 +echo "$as_me:$LINENO: result: $INSTALL" >&5
3695 +echo "${ECHO_T}$INSTALL" >&6
3697 +# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
3698 +# It thinks the first close brace ends the variable substitution.
3699 +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
3701 +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
3703 +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
3706 +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
3707 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
3708 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
3709 +if test "${enable_maintainer_mode+set}" = set; then
3710 + enableval="$enable_maintainer_mode"
3711 + USE_MAINTAINER_MODE=$enableval
3713 + USE_MAINTAINER_MODE=no
3715 + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
3716 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
3719 +if test $USE_MAINTAINER_MODE = yes; then
3720 + MAINTAINER_MODE_TRUE=
3721 + MAINTAINER_MODE_FALSE='#'
3723 + MAINTAINER_MODE_TRUE='#'
3724 + MAINTAINER_MODE_FALSE=
3726 + MAINT=$MAINTAINER_MODE_TRUE
3730 +# We need AC_EXEEXT to keep automake happy in cygnus mode. However,
3731 +# at least currently, we never actually build a program, so we never
3732 +# need to use $(EXEEXT). Moreover, the test for EXEEXT normally
3733 +# fails, because we are probably configuring with a cross compiler
3734 +# which can't create executables. So we include AC_EXEEXT to keep
3735 +# automake happy, but we don't execute it, since we don't care about
3738 + # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
3739 + # to nothing, so nothing would remain between `then' and `fi' if it
3740 + # were not for the `:' below.
3745 +. ${srcdir}/configure.host
3747 +case ${gc_basedir} in
3748 +/* | A-Za-z:/\\*) gc_flagbasedir=${gc_basedir} ;;
3749 +*) gc_flagbasedir='$(top_builddir)/'${gc_basedir} ;;
3752 +gc_cflags="${gc_cflags} -I"'$(top_builddir)'"/./targ-include -I${gc_flagbasedir}/libc/include"
3755 + gc_cflags="${gc_cflags} -I${gc_flagbasedir}/../winsup/include"
3760 +GC_CFLAGS=${gc_cflags}
3764 +# Check whether --enable-shared or --disable-shared was given.
3765 +if test "${enable_shared+set}" = set; then
3766 + enableval="$enable_shared"
3767 + p=${PACKAGE-default}
3769 +yes) enable_shared=yes ;;
3770 +no) enable_shared=no ;;
3773 + # Look at the argument we got. We use all the common list separators.
3774 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
3775 + for pkg in $enableval; do
3776 + if test "X$pkg" = "X$p"; then
3780 + IFS="$ac_save_ifs"
3786 +# Check whether --enable-static or --disable-static was given.
3787 +if test "${enable_static+set}" = set; then
3788 + enableval="$enable_static"
3789 + p=${PACKAGE-default}
3791 +yes) enable_static=yes ;;
3792 +no) enable_static=no ;;
3795 + # Look at the argument we got. We use all the common list separators.
3796 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
3797 + for pkg in $enableval; do
3798 + if test "X$pkg" = "X$p"; then
3802 + IFS="$ac_save_ifs"
3808 +# Check whether --enable-fast-install or --disable-fast-install was given.
3809 +if test "${enable_fast_install+set}" = set; then
3810 + enableval="$enable_fast_install"
3811 + p=${PACKAGE-default}
3813 +yes) enable_fast_install=yes ;;
3814 +no) enable_fast_install=no ;;
3816 + enable_fast_install=no
3817 + # Look at the argument we got. We use all the common list separators.
3818 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
3819 + for pkg in $enableval; do
3820 + if test "X$pkg" = "X$p"; then
3821 + enable_fast_install=yes
3824 + IFS="$ac_save_ifs"
3828 + enable_fast_install=yes
3831 +# Check whether --with-gnu-ld or --without-gnu-ld was given.
3832 +if test "${with_gnu_ld+set}" = set; then
3833 + withval="$with_gnu_ld"
3834 + test "$withval" = no || with_gnu_ld=yes
3839 +if test "$GCC" = yes; then
3840 + # Check if gcc -print-prog-name=ld gives a path.
3841 + echo "$as_me:$LINENO: checking for ld used by GCC" >&5
3842 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
3845 + # gcc leaves a trailing carriage return which upsets mingw
3846 + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
3848 + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
3851 + # Accept absolute paths.
3852 + [\\/]* | [A-Za-z]:[\\/]*)
3853 + re_direlt='/[^/][^/]*/\.\./'
3854 + # Canonicalize the path of ld
3855 + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
3856 + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
3857 + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
3859 + test -z "$LD" && LD="$ac_prog"
3862 + # If it fails, then pretend we aren't using GCC.
3866 + # If it is relative, then search for the first ld in PATH.
3867 + with_gnu_ld=unknown
3870 +elif test "$with_gnu_ld" = yes; then
3871 + echo "$as_me:$LINENO: checking for GNU ld" >&5
3872 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
3874 + echo "$as_me:$LINENO: checking for non-GNU ld" >&5
3875 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
3877 +if test "${lt_cv_path_LD+set}" = set; then
3878 + echo $ECHO_N "(cached) $ECHO_C" >&6
3880 + if test -z "$LD"; then
3881 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
3882 + for ac_dir in $PATH; do
3883 + test -z "$ac_dir" && ac_dir=.
3884 + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
3885 + lt_cv_path_LD="$ac_dir/$ac_prog"
3886 + # Check to see if the program is GNU ld. I'd rather use --version,
3887 + # but apparently some GNU ld's only accept -v.
3888 + # Break only if it was the GNU/non-GNU ld that we prefer.
3889 + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
3890 + test "$with_gnu_ld" != no && break
3892 + test "$with_gnu_ld" != yes && break
3896 + IFS="$ac_save_ifs"
3898 + lt_cv_path_LD="$LD" # Let the user override the test with a path.
3902 +LD="$lt_cv_path_LD"
3903 +if test -n "$LD"; then
3904 + echo "$as_me:$LINENO: result: $LD" >&5
3905 +echo "${ECHO_T}$LD" >&6
3907 + echo "$as_me:$LINENO: result: no" >&5
3908 +echo "${ECHO_T}no" >&6
3910 +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
3911 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
3912 + { (exit 1); exit 1; }; }
3913 +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
3914 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
3915 +if test "${lt_cv_prog_gnu_ld+set}" = set; then
3916 + echo $ECHO_N "(cached) $ECHO_C" >&6
3918 + # I'd rather use --version here, but apparently some GNU ld's only accept -v.
3919 +if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
3920 + lt_cv_prog_gnu_ld=yes
3922 + lt_cv_prog_gnu_ld=no
3925 +echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
3926 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
3927 +with_gnu_ld=$lt_cv_prog_gnu_ld
3930 +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
3931 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
3932 +if test "${lt_cv_ld_reload_flag+set}" = set; then
3933 + echo $ECHO_N "(cached) $ECHO_C" >&6
3935 + lt_cv_ld_reload_flag='-r'
3937 +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
3938 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
3939 +reload_flag=$lt_cv_ld_reload_flag
3940 +test -n "$reload_flag" && reload_flag=" $reload_flag"
3942 +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
3943 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
3944 +if test "${lt_cv_path_NM+set}" = set; then
3945 + echo $ECHO_N "(cached) $ECHO_C" >&6
3947 + if test -n "$NM"; then
3948 + # Let the user override the test.
3949 + lt_cv_path_NM="$NM"
3951 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
3952 + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
3953 + test -z "$ac_dir" && ac_dir=.
3954 + tmp_nm=$ac_dir/${ac_tool_prefix}nm
3955 + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
3956 + # Check to see if the nm accepts a BSD-compat flag.
3957 + # Adding the `sed 1q' prevents false positives on HP-UX, which says:
3958 + # nm: unknown option "B" ignored
3959 + # Tru64's nm complains that /dev/null is an invalid object file
3960 + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
3961 + lt_cv_path_NM="$tmp_nm -B"
3963 + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
3964 + lt_cv_path_NM="$tmp_nm -p"
3967 + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
3968 + continue # so that we can try to find one that supports BSD flags
3972 + IFS="$ac_save_ifs"
3973 + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
3977 +NM="$lt_cv_path_NM"
3978 +echo "$as_me:$LINENO: result: $NM" >&5
3979 +echo "${ECHO_T}$NM" >&6
3981 +echo "$as_me:$LINENO: checking whether ln -s works" >&5
3982 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
3984 +if test "$LN_S" = "ln -s"; then
3985 + echo "$as_me:$LINENO: result: yes" >&5
3986 +echo "${ECHO_T}yes" >&6
3988 + echo "$as_me:$LINENO: result: no, using $LN_S" >&5
3989 +echo "${ECHO_T}no, using $LN_S" >&6
3992 +echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
3993 +echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6
3994 +if test "${lt_cv_deplibs_check_method+set}" = set; then
3995 + echo $ECHO_N "(cached) $ECHO_C" >&6
3997 + lt_cv_file_magic_cmd='$MAGIC_CMD'
3998 +lt_cv_file_magic_test_file=
3999 +lt_cv_deplibs_check_method='unknown'
4000 +# Need to set the preceding variable on all platforms that support
4001 +# interlibrary dependencies.
4002 +# 'none' -- dependencies not supported.
4003 +# `unknown' -- same as none, but documents that we really don't know.
4004 +# 'pass_all' -- all dependencies passed with no checks.
4005 +# 'test_compile' -- check by making test program.
4006 +# 'file_magic [regex]' -- check by looking for files in library path
4007 +# which responds to the $file_magic_cmd with a given egrep regex.
4008 +# If you have `file' or equivalent on your system and you're not sure
4009 +# whether `pass_all' will *always* work, you probably want this one.
4013 + lt_cv_deplibs_check_method=pass_all
4017 + lt_cv_deplibs_check_method=pass_all
4021 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
4022 + lt_cv_file_magic_cmd='/usr/bin/file -L'
4023 + lt_cv_file_magic_test_file=/shlib/libc.so
4026 +cygwin* | mingw* |pw32*)
4027 + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
4028 + lt_cv_file_magic_cmd='$OBJDUMP -f'
4031 +darwin* | rhapsody*)
4032 + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
4033 + lt_cv_file_magic_cmd='/usr/bin/file -L'
4034 + case "$host_os" in
4035 + rhapsody* | darwin1.012)
4036 + lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System'
4038 + *) # Darwin 1.3 on
4039 + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
4045 + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
4048 + # Not sure whether the presence of OpenBSD here was a mistake.
4049 + # Let's accept both of them until this is cleared up.
4050 + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
4051 + lt_cv_file_magic_cmd=/usr/bin/file
4052 + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
4056 + lt_cv_deplibs_check_method=pass_all
4061 + lt_cv_deplibs_check_method=pass_all
4064 +hpux10.20*|hpux11*)
4067 + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
4068 + lt_cv_file_magic_cmd=/usr/bin/file
4069 + lt_cv_file_magic_test_file=/usr/lib/libc.sl
4072 + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
4073 + lt_cv_file_magic_cmd=/usr/bin/file
4074 + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
4082 + # this will be overridden with pass_all, but let us keep it just in case
4083 + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
4087 + *-32|*"-32 ") libmagic=32-bit;;
4088 + *-n32|*"-n32 ") libmagic=N32;;
4089 + *-64|*"-64 ") libmagic=64-bit;;
4090 + *) libmagic=never-match;;
4092 + # this will be overridden with pass_all, but let us keep it just in case
4093 + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"
4096 + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
4097 + lt_cv_deplibs_check_method=pass_all
4100 +# This must be Linux ELF.
4103 + alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
4104 + lt_cv_deplibs_check_method=pass_all ;;
4106 + # glibc up to 2.1.1 does not perform some relocations on ARM
4107 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
4109 + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
4113 + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
4114 + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
4116 + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'
4121 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
4122 + lt_cv_file_magic_cmd=/usr/bin/file
4123 + lt_cv_file_magic_test_file=/usr/lib/libnls.so
4126 +osf3* | osf4* | osf5*)
4127 + # this will be overridden with pass_all, but let us keep it just in case
4128 + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
4129 + lt_cv_file_magic_test_file=/shlib/libc.so
4130 + lt_cv_deplibs_check_method=pass_all
4134 + lt_cv_deplibs_check_method=pass_all
4138 + lt_cv_deplibs_check_method=pass_all
4139 + lt_cv_file_magic_test_file=/lib/libc.so
4142 +sysv5uw[78]* | sysv4*uw2*)
4143 + lt_cv_deplibs_check_method=pass_all
4146 +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
4147 + case $host_vendor in
4149 + lt_cv_deplibs_check_method=pass_all
4152 + 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]'
4153 + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
4160 +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
4161 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
4162 +file_magic_cmd=$lt_cv_file_magic_cmd
4163 +deplibs_check_method=$lt_cv_deplibs_check_method
4168 +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
4170 +# Only perform the check for file, if the check method requires it
4171 +case $deplibs_check_method in
4173 + if test "$file_magic_cmd" = '$MAGIC_CMD'; then
4174 + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
4175 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
4176 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
4177 + echo $ECHO_N "(cached) $ECHO_C" >&6
4179 + case $MAGIC_CMD in
4181 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
4184 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
4187 + ac_save_MAGIC_CMD="$MAGIC_CMD"
4188 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
4189 + ac_dummy="/usr/bin:$PATH"
4190 + for ac_dir in $ac_dummy; do
4191 + test -z "$ac_dir" && ac_dir=.
4192 + if test -f $ac_dir/${ac_tool_prefix}file; then
4193 + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
4194 + if test -n "$file_magic_test_file"; then
4195 + case $deplibs_check_method in
4197 + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
4198 + MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
4199 + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
4200 + egrep "$file_magic_regex" > /dev/null; then
4205 +*** Warning: the command libtool uses to detect shared libraries,
4206 +*** $file_magic_cmd, produces output that libtool cannot recognize.
4207 +*** The result is that libtool may fail to recognize shared libraries
4208 +*** as such. This will affect the creation of libtool libraries that
4209 +*** depend on shared libraries, but programs linked with such libtool
4210 +*** libraries will work regardless of this problem. Nevertheless, you
4211 +*** may want to report the problem to your system manager and/or to
4212 +*** bug-libtool@gnu.org
4221 + IFS="$ac_save_ifs"
4222 + MAGIC_CMD="$ac_save_MAGIC_CMD"
4227 +MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
4228 +if test -n "$MAGIC_CMD"; then
4229 + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
4230 +echo "${ECHO_T}$MAGIC_CMD" >&6
4232 + echo "$as_me:$LINENO: result: no" >&5
4233 +echo "${ECHO_T}no" >&6
4236 +if test -z "$lt_cv_path_MAGIC_CMD"; then
4237 + if test -n "$ac_tool_prefix"; then
4238 + echo "$as_me:$LINENO: checking for file" >&5
4239 +echo $ECHO_N "checking for file... $ECHO_C" >&6
4240 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
4241 + echo $ECHO_N "(cached) $ECHO_C" >&6
4243 + case $MAGIC_CMD in
4245 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
4248 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
4251 + ac_save_MAGIC_CMD="$MAGIC_CMD"
4252 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
4253 + ac_dummy="/usr/bin:$PATH"
4254 + for ac_dir in $ac_dummy; do
4255 + test -z "$ac_dir" && ac_dir=.
4256 + if test -f $ac_dir/file; then
4257 + lt_cv_path_MAGIC_CMD="$ac_dir/file"
4258 + if test -n "$file_magic_test_file"; then
4259 + case $deplibs_check_method in
4261 + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
4262 + MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
4263 + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
4264 + egrep "$file_magic_regex" > /dev/null; then
4269 +*** Warning: the command libtool uses to detect shared libraries,
4270 +*** $file_magic_cmd, produces output that libtool cannot recognize.
4271 +*** The result is that libtool may fail to recognize shared libraries
4272 +*** as such. This will affect the creation of libtool libraries that
4273 +*** depend on shared libraries, but programs linked with such libtool
4274 +*** libraries will work regardless of this problem. Nevertheless, you
4275 +*** may want to report the problem to your system manager and/or to
4276 +*** bug-libtool@gnu.org
4285 + IFS="$ac_save_ifs"
4286 + MAGIC_CMD="$ac_save_MAGIC_CMD"
4291 +MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
4292 +if test -n "$MAGIC_CMD"; then
4293 + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
4294 +echo "${ECHO_T}$MAGIC_CMD" >&6
4296 + echo "$as_me:$LINENO: result: no" >&5
4297 +echo "${ECHO_T}no" >&6
4309 +if test -n "$ac_tool_prefix"; then
4310 + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
4311 +set dummy ${ac_tool_prefix}ranlib; ac_word=$2
4312 +echo "$as_me:$LINENO: checking for $ac_word" >&5
4313 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4314 +if test "${ac_cv_prog_RANLIB+set}" = set; then
4315 + echo $ECHO_N "(cached) $ECHO_C" >&6
4317 + if test -n "$RANLIB"; then
4318 + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
4320 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4321 +for as_dir in $PATH
4324 + test -z "$as_dir" && as_dir=.
4325 + for ac_exec_ext in '' $ac_executable_extensions; do
4326 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4327 + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
4328 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4336 +RANLIB=$ac_cv_prog_RANLIB
4337 +if test -n "$RANLIB"; then
4338 + echo "$as_me:$LINENO: result: $RANLIB" >&5
4339 +echo "${ECHO_T}$RANLIB" >&6
4341 + echo "$as_me:$LINENO: result: no" >&5
4342 +echo "${ECHO_T}no" >&6
4346 +if test -z "$ac_cv_prog_RANLIB"; then
4347 + ac_ct_RANLIB=$RANLIB
4348 + # Extract the first word of "ranlib", so it can be a program name with args.
4349 +set dummy ranlib; ac_word=$2
4350 +echo "$as_me:$LINENO: checking for $ac_word" >&5
4351 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4352 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
4353 + echo $ECHO_N "(cached) $ECHO_C" >&6
4355 + if test -n "$ac_ct_RANLIB"; then
4356 + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
4358 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4359 +for as_dir in $PATH
4362 + test -z "$as_dir" && as_dir=.
4363 + for ac_exec_ext in '' $ac_executable_extensions; do
4364 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4365 + ac_cv_prog_ac_ct_RANLIB="ranlib"
4366 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4372 + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
4375 +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
4376 +if test -n "$ac_ct_RANLIB"; then
4377 + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
4378 +echo "${ECHO_T}$ac_ct_RANLIB" >&6
4380 + echo "$as_me:$LINENO: result: no" >&5
4381 +echo "${ECHO_T}no" >&6
4384 + RANLIB=$ac_ct_RANLIB
4386 + RANLIB="$ac_cv_prog_RANLIB"
4389 +if test -n "$ac_tool_prefix"; then
4390 + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
4391 +set dummy ${ac_tool_prefix}strip; ac_word=$2
4392 +echo "$as_me:$LINENO: checking for $ac_word" >&5
4393 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4394 +if test "${ac_cv_prog_STRIP+set}" = set; then
4395 + echo $ECHO_N "(cached) $ECHO_C" >&6
4397 + if test -n "$STRIP"; then
4398 + ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
4400 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4401 +for as_dir in $PATH
4404 + test -z "$as_dir" && as_dir=.
4405 + for ac_exec_ext in '' $ac_executable_extensions; do
4406 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4407 + ac_cv_prog_STRIP="${ac_tool_prefix}strip"
4408 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4416 +STRIP=$ac_cv_prog_STRIP
4417 +if test -n "$STRIP"; then
4418 + echo "$as_me:$LINENO: result: $STRIP" >&5
4419 +echo "${ECHO_T}$STRIP" >&6
4421 + echo "$as_me:$LINENO: result: no" >&5
4422 +echo "${ECHO_T}no" >&6
4426 +if test -z "$ac_cv_prog_STRIP"; then
4427 + ac_ct_STRIP=$STRIP
4428 + # Extract the first word of "strip", so it can be a program name with args.
4429 +set dummy strip; ac_word=$2
4430 +echo "$as_me:$LINENO: checking for $ac_word" >&5
4431 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4432 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
4433 + echo $ECHO_N "(cached) $ECHO_C" >&6
4435 + if test -n "$ac_ct_STRIP"; then
4436 + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
4438 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4439 +for as_dir in $PATH
4442 + test -z "$as_dir" && as_dir=.
4443 + for ac_exec_ext in '' $ac_executable_extensions; do
4444 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4445 + ac_cv_prog_ac_ct_STRIP="strip"
4446 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4452 + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
4455 +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
4456 +if test -n "$ac_ct_STRIP"; then
4457 + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
4458 +echo "${ECHO_T}$ac_ct_STRIP" >&6
4460 + echo "$as_me:$LINENO: result: no" >&5
4461 +echo "${ECHO_T}no" >&6
4464 + STRIP=$ac_ct_STRIP
4466 + STRIP="$ac_cv_prog_STRIP"
4470 +# Check for any special flags to pass to ltconfig.
4471 +libtool_flags="--cache-file=$cache_file"
4472 +test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
4473 +test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
4474 +test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
4475 +test "$GCC" = yes && libtool_flags="$libtool_flags --with-gcc"
4476 +test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
4479 +# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
4480 +if test "${enable_libtool_lock+set}" = set; then
4481 + enableval="$enable_libtool_lock"
4484 +test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
4485 +test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
4488 +# Check whether --with-pic or --without-pic was given.
4489 +if test "${with_pic+set}" = set; then
4490 + withval="$with_pic"
4491 + pic_mode="$withval"
4495 +test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic"
4496 +test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
4498 +# Some flags need to be propagated to the compiler or linker for good
4502 + # Find out which ABI we are using.
4503 + echo '#line __oline__ "configure"' > conftest.$ac_ext
4504 + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
4505 + (eval $ac_compile) 2>&5
4507 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4508 + (exit $ac_status); }; then
4509 + case `/usr/bin/file conftest.$ac_objext` in
4514 + LD="${LD-ld} -n32"
4525 + # Find out which ABI we are using.
4526 + echo 'int i;' > conftest.$ac_ext
4527 + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
4528 + (eval $ac_compile) 2>&5
4530 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4531 + (exit $ac_status); }; then
4532 + case "`/usr/bin/file conftest.o`" in
4534 + HPUX_IA64_MODE="32"
4537 + HPUX_IA64_MODE="64"
4544 +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
4545 + # Find out which ABI we are using.
4546 + echo 'int i;' > conftest.$ac_ext
4547 + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
4548 + (eval $ac_compile) 2>&5
4550 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4551 + (exit $ac_status); }; then
4552 + case "`/usr/bin/file conftest.o`" in
4556 + LD="${LD-ld} -m elf_i386"
4559 + LD="${LD-ld} -m elf32ppclinux"
4562 + LD="${LD-ld} -m elf_s390"
4565 + LD="${LD-ld} -m elf32_sparc"
4572 + LD="${LD-ld} -m elf_x86_64"
4574 + ppc*-*linux*|powerpc*-*linux*)
4575 + LD="${LD-ld} -m elf64ppc"
4578 + LD="${LD-ld} -m elf64_s390"
4581 + LD="${LD-ld} -m elf64_sparc"
4591 + # On SCO OpenServer 5, we need -belf to get full-featured binaries.
4592 + SAVE_CFLAGS="$CFLAGS"
4593 + CFLAGS="$CFLAGS -belf"
4594 + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
4595 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
4596 +if test "${lt_cv_cc_needs_belf+set}" = set; then
4597 + echo $ECHO_N "(cached) $ECHO_C" >&6
4602 +ac_cpp='$CPP $CPPFLAGS'
4603 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4604 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4605 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
4607 + cat >conftest.$ac_ext <<_ACEOF
4608 +#line $LINENO "configure"
4611 +cat confdefs.h >>conftest.$ac_ext
4612 +cat >>conftest.$ac_ext <<_ACEOF
4613 +/* end confdefs.h. */
4623 +rm -f conftest.$ac_objext conftest$ac_exeext
4624 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
4625 + (eval $ac_link) 2>&5
4627 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4628 + (exit $ac_status); } &&
4629 + { ac_try='test -s conftest$ac_exeext'
4630 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
4631 + (eval $ac_try) 2>&5
4633 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4634 + (exit $ac_status); }; }; then
4635 + lt_cv_cc_needs_belf=yes
4637 + echo "$as_me: failed program was:" >&5
4638 +sed 's/^/| /' conftest.$ac_ext >&5
4640 +lt_cv_cc_needs_belf=no
4642 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
4644 +ac_cpp='$CPP $CPPFLAGS'
4645 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4646 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4647 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
4650 +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
4651 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
4652 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then
4653 + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
4654 + CFLAGS="$SAVE_CFLAGS"
4662 +# Save cache, so that ltconfig can load it
4663 +cat >confcache <<\_ACEOF
4664 +# This file is a shell script that caches the results of configure
4665 +# tests run on this system so they can be shared between configure
4666 +# scripts and configure runs, see configure's option --config-cache.
4667 +# It is not useful on other systems. If it contains results you don't
4668 +# want to keep, you may remove or edit it.
4670 +# config.status only pays attention to the cache file if you give it
4671 +# the --recheck option to rerun configure.
4673 +# `ac_cv_env_foo' variables (set or unset) will be overridden when
4674 +# loading this file, other *unset* `ac_cv_foo' will be assigned the
4675 +# following values.
4679 +# The following way of writing the cache mishandles newlines in values,
4680 +# but we know of no workaround that is simple, portable, and efficient.
4681 +# So, don't put newlines in cache variables' values.
4682 +# Ultrix sh set writes to stderr and can't be redirected directly,
4683 +# and sets the high bit in the cache file unless we assign to the vars.
4686 + case `(ac_space=' '; set | grep ac_space) 2>&1` in
4688 + # `set' does not quote correctly, so add quotes (double-quote
4689 + # substitution turns \\\\ into \\, and sed turns \\ into \).
4692 + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
4695 + # `set' quotes correctly as required by POSIX, so do not add quotes.
4697 + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
4704 + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
4706 + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
4707 + : end' >>confcache
4708 +if diff $cache_file confcache >/dev/null 2>&1; then :; else
4709 + if test -w $cache_file; then
4710 + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
4711 + cat confcache >$cache_file
4713 + echo "not updating unwritable cache $cache_file"
4718 +# Actually configure libtool. ac_aux_dir is where install-sh is found.
4719 +AR="$AR" LTCC="$CC" CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
4720 +MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
4721 +LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \
4722 +AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \
4723 +objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \
4724 +deplibs_check_method="$deplibs_check_method" file_magic_cmd="$file_magic_cmd" \
4725 +${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
4726 +$libtool_flags --no-verify --build="$build" $ac_aux_dir/ltmain.sh $host \
4727 +|| { { echo "$as_me:$LINENO: error: libtool configure failed" >&5
4728 +echo "$as_me: error: libtool configure failed" >&2;}
4729 + { (exit 1); exit 1; }; }
4731 +# Reload cache, that may have been modified by ltconfig
4732 +if test -r "$cache_file"; then
4733 + # Some versions of bash will fail to source /dev/null (special
4734 + # files actually), so we avoid doing that.
4735 + if test -f "$cache_file"; then
4736 + { echo "$as_me:$LINENO: loading cache $cache_file" >&5
4737 +echo "$as_me: loading cache $cache_file" >&6;}
4738 + case $cache_file in
4739 + [\\/]* | ?:[\\/]* ) . $cache_file;;
4740 + *) . ./$cache_file;;
4744 + { echo "$as_me:$LINENO: creating cache $cache_file" >&5
4745 +echo "$as_me: creating cache $cache_file" >&6;}
4750 +# This can be used to rebuild libtool when needed
4751 +LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh $ac_aux_dir/ltcf-c.sh"
4753 +# Always use our own libtool.
4754 +LIBTOOL='$(SHELL) $(top_builddir)/libtool'
4756 +# Redirect the config.log output again, so that the ltconfig log is not
4757 +# clobbered by the next message.
4758 +exec 5>>./config.log
4761 +ac_cpp='$CXXCPP $CPPFLAGS'
4762 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4763 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4764 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
4765 +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
4766 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
4767 +if test -z "$CXXCPP"; then
4768 + if test "${ac_cv_prog_CXXCPP+set}" = set; then
4769 + echo $ECHO_N "(cached) $ECHO_C" >&6
4771 + # Double quotes because CXXCPP needs to be expanded
4772 + for CXXCPP in "$CXX -E" "/lib/cpp"
4774 + ac_preproc_ok=false
4775 +for ac_cxx_preproc_warn_flag in '' yes
4777 + # Use a header file that comes with gcc, so configuring glibc
4778 + # with a fresh cross-compiler works.
4779 + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
4780 + # <limits.h> exists even on freestanding compilers.
4781 + # On the NeXT, cc -E runs the code through the compiler's parser,
4782 + # not just through cpp. "Syntax error" is here to catch this case.
4783 + cat >conftest.$ac_ext <<_ACEOF
4784 +#line $LINENO "configure"
4787 +cat confdefs.h >>conftest.$ac_ext
4788 +cat >>conftest.$ac_ext <<_ACEOF
4789 +/* end confdefs.h. */
4791 +@%:@ include <limits.h>
4793 +@%:@ include <assert.h>
4797 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
4798 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
4800 + grep -v '^ *+' conftest.er1 >conftest.err
4801 + rm -f conftest.er1
4802 + cat conftest.err >&5
4803 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4804 + (exit $ac_status); } >/dev/null; then
4805 + if test -s conftest.err; then
4806 + ac_cpp_err=$ac_cxx_preproc_warn_flag
4813 +if test -z "$ac_cpp_err"; then
4816 + echo "$as_me: failed program was:" >&5
4817 +sed 's/^/| /' conftest.$ac_ext >&5
4819 + # Broken: fails on valid input.
4822 +rm -f conftest.err conftest.$ac_ext
4824 + # OK, works on sane cases. Now check whether non-existent headers
4825 + # can be detected and how.
4826 + cat >conftest.$ac_ext <<_ACEOF
4827 +#line $LINENO "configure"
4830 +cat confdefs.h >>conftest.$ac_ext
4831 +cat >>conftest.$ac_ext <<_ACEOF
4832 +/* end confdefs.h. */
4833 +@%:@include <ac_nonexistent.h>
4835 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
4836 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
4838 + grep -v '^ *+' conftest.er1 >conftest.err
4839 + rm -f conftest.er1
4840 + cat conftest.err >&5
4841 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4842 + (exit $ac_status); } >/dev/null; then
4843 + if test -s conftest.err; then
4844 + ac_cpp_err=$ac_cxx_preproc_warn_flag
4851 +if test -z "$ac_cpp_err"; then
4852 + # Broken: success on invalid input.
4855 + echo "$as_me: failed program was:" >&5
4856 +sed 's/^/| /' conftest.$ac_ext >&5
4858 + # Passes both tests.
4862 +rm -f conftest.err conftest.$ac_ext
4865 +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
4866 +rm -f conftest.err conftest.$ac_ext
4867 +if $ac_preproc_ok; then
4872 + ac_cv_prog_CXXCPP=$CXXCPP
4875 + CXXCPP=$ac_cv_prog_CXXCPP
4877 + ac_cv_prog_CXXCPP=$CXXCPP
4879 +echo "$as_me:$LINENO: result: $CXXCPP" >&5
4880 +echo "${ECHO_T}$CXXCPP" >&6
4881 +ac_preproc_ok=false
4882 +for ac_cxx_preproc_warn_flag in '' yes
4884 + # Use a header file that comes with gcc, so configuring glibc
4885 + # with a fresh cross-compiler works.
4886 + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
4887 + # <limits.h> exists even on freestanding compilers.
4888 + # On the NeXT, cc -E runs the code through the compiler's parser,
4889 + # not just through cpp. "Syntax error" is here to catch this case.
4890 + cat >conftest.$ac_ext <<_ACEOF
4891 +#line $LINENO "configure"
4894 +cat confdefs.h >>conftest.$ac_ext
4895 +cat >>conftest.$ac_ext <<_ACEOF
4896 +/* end confdefs.h. */
4898 +@%:@ include <limits.h>
4900 +@%:@ include <assert.h>
4904 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
4905 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
4907 + grep -v '^ *+' conftest.er1 >conftest.err
4908 + rm -f conftest.er1
4909 + cat conftest.err >&5
4910 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4911 + (exit $ac_status); } >/dev/null; then
4912 + if test -s conftest.err; then
4913 + ac_cpp_err=$ac_cxx_preproc_warn_flag
4920 +if test -z "$ac_cpp_err"; then
4923 + echo "$as_me: failed program was:" >&5
4924 +sed 's/^/| /' conftest.$ac_ext >&5
4926 + # Broken: fails on valid input.
4929 +rm -f conftest.err conftest.$ac_ext
4931 + # OK, works on sane cases. Now check whether non-existent headers
4932 + # can be detected and how.
4933 + cat >conftest.$ac_ext <<_ACEOF
4934 +#line $LINENO "configure"
4937 +cat confdefs.h >>conftest.$ac_ext
4938 +cat >>conftest.$ac_ext <<_ACEOF
4939 +/* end confdefs.h. */
4940 +@%:@include <ac_nonexistent.h>
4942 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
4943 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
4945 + grep -v '^ *+' conftest.er1 >conftest.err
4946 + rm -f conftest.er1
4947 + cat conftest.err >&5
4948 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4949 + (exit $ac_status); } >/dev/null; then
4950 + if test -s conftest.err; then
4951 + ac_cpp_err=$ac_cxx_preproc_warn_flag
4958 +if test -z "$ac_cpp_err"; then
4959 + # Broken: success on invalid input.
4962 + echo "$as_me: failed program was:" >&5
4963 +sed 's/^/| /' conftest.$ac_ext >&5
4965 + # Passes both tests.
4969 +rm -f conftest.err conftest.$ac_ext
4972 +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
4973 +rm -f conftest.err conftest.$ac_ext
4974 +if $ac_preproc_ok; then
4977 + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
4978 +See \`config.log' for more details." >&5
4979 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
4980 +See \`config.log' for more details." >&2;}
4981 + { (exit 1); exit 1; }; }
4985 +ac_cpp='$CPP $CPPFLAGS'
4986 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4987 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4988 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
4992 +LIBTOOL_DEPS=$LIBTOOL_DEPS" $ac_aux_dir/ltcf-cxx.sh"
4994 +lt_save_CFLAGS="$CFLAGS"
4995 +AR="$AR" LTCC="$CC" CC="$CXX" CXX="$CXX" CFLAGS="$CXXFLAGS" CPPFLAGS="$CPPFLAGS" \
4996 +MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
4997 +LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \
4998 +AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \
4999 +objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \
5000 +deplibs_check_method="$deplibs_check_method" \
5001 +file_magic_cmd="$file_magic_cmd" \
5002 +${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig -o libtool $libtool_flags \
5003 +--build="$build" --add-tag=CXX $ac_aux_dir/ltcf-cxx.sh $host \
5004 +|| { { echo "$as_me:$LINENO: error: libtool tag configuration failed" >&5
5005 +echo "$as_me: error: libtool tag configuration failed" >&2;}
5006 + { (exit 1); exit 1; }; }
5008 +CFLAGS="$lt_save_CFLAGS"
5010 +# Redirect the config.log output again, so that the ltconfig log is not
5011 +# clobbered by the next message.
5012 +exec 5>>./config.log
5021 +# Check whether --with-target-subdir or --without-target-subdir was given.
5022 +if test "${with_target_subdir+set}" = set; then
5023 + withval="$with_target_subdir"
5027 +# Check whether --with-cross-host or --without-cross-host was given.
5028 +if test "${with_cross_host+set}" = set; then
5029 + withval="$with_cross_host"
5033 +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
5034 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
5035 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
5036 +if test "${enable_maintainer_mode+set}" = set; then
5037 + enableval="$enable_maintainer_mode"
5038 + USE_MAINTAINER_MODE=$enableval
5040 + USE_MAINTAINER_MODE=no
5042 + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
5043 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
5046 +if test $USE_MAINTAINER_MODE = yes; then
5047 + MAINTAINER_MODE_TRUE=
5048 + MAINTAINER_MODE_FALSE='#'
5050 + MAINTAINER_MODE_TRUE='#'
5051 + MAINTAINER_MODE_FALSE=
5053 + MAINT=$MAINTAINER_MODE_TRUE
5056 +# automake wants to see AC_EXEEXT. But we don't need it. And having
5057 +# it is actually a problem, because the compiler we're passed can't
5058 +# necessarily do a full link. So we fool automake here.
5060 + # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
5061 + # to nothing, so nothing would remain between `then' and `fi' if it
5062 + # were not for the `:' below.
5067 +echo "$as_me:$LINENO: checking for thread model used by GCC" >&5
5068 +echo $ECHO_N "checking for thread model used by GCC... $ECHO_C" >&6
5069 +THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
5070 +if test -z "$THREADS"; then
5073 +echo "$as_me:$LINENO: result: $THREADS" >&5
5074 +echo "${ECHO_T}$THREADS" >&6
5076 +# Check whether --enable-parallel-mark or --disable-parallel-mark was given.
5077 +if test "${enable_parallel_mark+set}" = set; then
5078 + enableval="$enable_parallel_mark"
5079 + case "$THREADS" in
5080 + no | none | single)
5081 + { { echo "$as_me:$LINENO: error: Parallel mark requires --enable-threads=x spec" >&5
5082 +echo "$as_me: error: Parallel mark requires --enable-threads=x spec" >&2;}
5083 + { (exit 1); exit 1; }; }
5089 +INCLUDES=-I${srcdir}/include
5092 + no | none | single)
5097 + THREADLIBS=-lpthread
5099 + x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
5100 + cat >>confdefs.h <<\_ACEOF
5101 +@%:@define GC_LINUX_THREADS 1
5104 + cat >>confdefs.h <<\_ACEOF
5105 +@%:@define _REENTRANT 1
5108 + if test "${enable_parallel_mark}"; then
5109 + cat >>confdefs.h <<\_ACEOF
5110 +@%:@define PARALLEL_MARK 1
5114 + cat >>confdefs.h <<\_ACEOF
5115 +@%:@define THREAD_LOCAL_ALLOC 1
5120 + cat >>confdefs.h <<\_ACEOF
5121 +@%:@define GC_LINUX_THREADS 1
5124 + cat >>confdefs.h <<\_ACEOF
5125 +@%:@define _REENTRANT 1
5130 + { echo "$as_me:$LINENO: WARNING: \"Only HP/UX 11 threads are supported.\"" >&5
5131 +echo "$as_me: WARNING: \"Only HP/UX 11 threads are supported.\"" >&2;}
5132 + cat >>confdefs.h <<\_ACEOF
5133 +@%:@define GC_HPUX_THREADS 1
5136 + cat >>confdefs.h <<\_ACEOF
5137 +@%:@define _POSIX_C_SOURCE 199506L
5140 + if test "${enable_parallel_mark}" = yes; then
5141 + cat >>confdefs.h <<\_ACEOF
5142 +@%:@define PARALLEL_MARK 1
5146 + cat >>confdefs.h <<\_ACEOF
5147 +@%:@define THREAD_LOCAL_ALLOC 1
5150 + THREADLIBS="-lpthread -lrt"
5153 + { echo "$as_me:$LINENO: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&5
5154 +echo "$as_me: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&2;}
5155 + cat >>confdefs.h <<\_ACEOF
5156 +@%:@define GC_FREEBSD_THREADS 1
5159 + INCLUDES="$INCLUDES -pthread"
5160 + THREADLIBS=-pthread
5163 + cat >>confdefs.h <<\_ACEOF
5164 +@%:@define GC_SOLARIS_THREADS 1
5167 + cat >>confdefs.h <<\_ACEOF
5168 +@%:@define GC_SOLARIS_PTHREADS 1
5173 + cat >>confdefs.h <<\_ACEOF
5174 +@%:@define GC_IRIX_THREADS 1
5184 + cat >>confdefs.h <<\_ACEOF
5185 +@%:@define GC_DARWIN_THREADS 1
5188 + cat >>confdefs.h <<\_ACEOF
5189 +@%:@define THREAD_LOCAL_ALLOC 1
5192 + if test "${enable_parallel_mark}" = yes; then
5193 + cat >>confdefs.h <<\_ACEOF
5194 +@%:@define PARALLEL_MARK 1
5200 + cat >>confdefs.h <<\_ACEOF
5201 +@%:@define GC_WIN32_THREADS 1
5204 + cat >>confdefs.h <<\_ACEOF
5205 +@%:@define NO_GETENV 1
5209 + decosf1 | irix | mach | os2 | solaris | dce | vxworks)
5210 + { { echo "$as_me:$LINENO: error: thread package $THREADS not yet supported" >&5
5211 +echo "$as_me: error: thread package $THREADS not yet supported" >&2;}
5212 + { (exit 1); exit 1; }; }
5215 + { { echo "$as_me:$LINENO: error: $THREADS is an unknown thread package" >&5
5216 +echo "$as_me: error: $THREADS is an unknown thread package" >&2;}
5217 + { (exit 1); exit 1; }; }
5223 + powerpc-*-darwin*)
5224 + powerpc_darwin=true
5229 +if test x$powerpc_darwin = xtrue; then
5230 + POWERPC_DARWIN_TRUE=
5231 + POWERPC_DARWIN_FALSE='#'
5233 + POWERPC_DARWIN_TRUE='#'
5234 + POWERPC_DARWIN_FALSE=
5237 +# We never want libdl on darwin. It is a fake libdl that just ends up making
5238 +# dyld calls anyway
5242 + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
5243 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
5244 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then
5245 + echo $ECHO_N "(cached) $ECHO_C" >&6
5247 + ac_check_lib_save_LIBS=$LIBS
5249 +cat >conftest.$ac_ext <<_ACEOF
5250 +#line $LINENO "configure"
5253 +cat confdefs.h >>conftest.$ac_ext
5254 +cat >>conftest.$ac_ext <<_ACEOF
5255 +/* end confdefs.h. */
5257 +/* Override any gcc2 internal prototype to avoid an error. */
5261 +/* We use char because int might match the return type of a gcc2
5262 + builtin and then its argument prototype would still apply. */
5272 +rm -f conftest.$ac_objext conftest$ac_exeext
5273 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
5274 + (eval $ac_link) 2>&5
5276 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
5277 + (exit $ac_status); } &&
5278 + { ac_try='test -s conftest$ac_exeext'
5279 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5280 + (eval $ac_try) 2>&5
5282 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
5283 + (exit $ac_status); }; }; then
5284 + ac_cv_lib_dl_dlopen=yes
5286 + echo "$as_me: failed program was:" >&5
5287 +sed 's/^/| /' conftest.$ac_ext >&5
5289 +ac_cv_lib_dl_dlopen=no
5291 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
5292 +LIBS=$ac_check_lib_save_LIBS
5294 +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
5295 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
5296 +if test $ac_cv_lib_dl_dlopen = yes; then
5297 + EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl"
5305 +target_all=libgcjgc.la
5311 +# Check whether --with-ecos or --without-ecos was given.
5312 +if test "${with_ecos+set}" = set; then
5313 + withval="$with_ecos"
5314 + TARGET_ECOS="$with_ecos"
5320 +case "$TARGET_ECOS" in
5324 + cat >>confdefs.h <<\_ACEOF
5328 + CXXINCLUDES="-I${TARGET_ECOS}/include"
5329 + addobjs="$addobjs ecos.lo"
5339 + alpha*-*-openbsd*)
5340 + machdep="alpha_mach_dep.lo"
5341 + if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then
5342 + { echo "$as_me:$LINENO: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&5
5343 +echo "$as_me: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&2;}
5344 + # Check whether --enable-shared or --disable-shared was given.
5345 +if test "${enable_shared+set}" = set; then
5346 + enableval="$enable_shared"
5347 + p=${PACKAGE-default}
5349 +yes) enable_shared=yes ;;
5350 +no) enable_shared=no ;;
5353 + # Look at the argument we got. We use all the common list separators.
5354 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
5355 + for pkg in $enableval; do
5356 + if test "X$pkg" = "X$p"; then
5360 + IFS="$ac_save_ifs"
5369 + machdep="alpha_mach_dep.lo"
5371 + i?86-*-solaris2.[89]*)
5372 + cat >>confdefs.h <<\_ACEOF
5373 +@%:@define SOLARIS25_PROC_VDB_BUG_FIXED 1
5378 + machdep="mips_ultrix_mach_dep.lo"
5379 + cat >>confdefs.h <<\_ACEOF
5380 +@%:@define STACKBASE __stackbase
5383 + cat >>confdefs.h <<\_ACEOF
5384 +@%:@define DATASTART_IS_ETEXT 1
5389 + machdep="mips_ultrix_mach-dep.lo"
5394 + machdep="mips_sgi_mach_dep.lo"
5395 + cat >>confdefs.h <<\_ACEOF
5396 +@%:@define NO_EXECUTE_PERMISSION 1
5400 + sparc-sun-solaris2.3*)
5401 + machdep="sparc_mach_dep.lo"
5402 + cat >>confdefs.h <<\_ACEOF
5403 +@%:@define SUNOS53_SHARED_LIB 1
5407 + sparc-sun-solaris2.*)
5408 + machdep="sparc_mach_dep.lo"
5411 + machdep="mach_dep.lo ia64_save_regs_in_stack.lo"
5414 +if test x"$machdep" = x; then
5415 + machdep="mach_dep.lo"
5417 +addobjs="$addobjs $machdep"
5421 + sparc-sun-solaris2*)
5422 + if test "$GCC" = yes; then
5424 + for i in $CFLAGS; do
5429 + new_CFLAGS="$new_CFLAGS $i"
5433 + CFLAGS="$new_CFLAGS"
5438 +MY_CFLAGS="$CFLAGS"
5441 +cat >>confdefs.h <<\_ACEOF
5442 +@%:@define SILENT 1
5445 +cat >>confdefs.h <<\_ACEOF
5446 +@%:@define NO_SIGNALS 1
5449 +cat >>confdefs.h <<\_ACEOF
5450 +@%:@define NO_EXECUTE_PERMISSION 1
5453 +cat >>confdefs.h <<\_ACEOF
5454 +@%:@define ALL_INTERIOR_POINTERS 1
5458 +cat >>confdefs.h <<\_ACEOF
5459 +@%:@define JAVA_FINALIZATION 1
5462 +cat >>confdefs.h <<\_ACEOF
5463 +@%:@define GC_GCJ_SUPPORT 1
5466 +cat >>confdefs.h <<\_ACEOF
5467 +@%:@define ATOMIC_UNCOLLECTABLE 1
5471 +if test -n "${with_cross_host}"; then
5472 + cat >>confdefs.h <<\_ACEOF
5473 +@%:@define NO_SIGSET 1
5476 + cat >>confdefs.h <<\_ACEOF
5477 +@%:@define NO_DEBUGGING 1
5482 +# Check whether --enable-full-debug or --disable-full-debug was given.
5483 +if test "${enable_full_debug+set}" = set; then
5484 + enableval="$enable_full_debug"
5485 + if test "$enable_full_debug" = "yes"; then
5486 + { echo "$as_me:$LINENO: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&5
5487 +echo "$as_me: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&2;}
5488 + cat >>confdefs.h <<\_ACEOF
5489 +@%:@define KEEP_BACK_PTRS 1
5492 + cat >>confdefs.h <<\_ACEOF
5493 +@%:@define DBG_HDRS_ALL 1
5498 + cat >>confdefs.h <<\_ACEOF
5499 +@%:@define MAKE_BACK_GRAPH 1
5503 + x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
5504 + cat >>confdefs.h <<\_ACEOF
5505 +@%:@define MAKE_BACK_GRAPH 1
5508 + { echo "$as_me:$LINENO: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&5
5509 +echo "$as_me: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&2;}
5510 + cat >>confdefs.h <<\_ACEOF
5511 +@%:@define SAVE_CALL_COUNT 8
5521 +if test -z "$with_cross_host"; then
5523 + USE_LIBDIR_FALSE='#'
5525 + USE_LIBDIR_TRUE='#'
5529 +if test "${multilib}" = "yes"; then
5530 + multilib_arg="--enable-multilib"
5535 + ac_config_files="$ac_config_files Makefile include/Makefile"
5536 + ac_config_commands="$ac_config_commands default"
5537 +cat >confcache <<\_ACEOF
5538 +# This file is a shell script that caches the results of configure
5539 +# tests run on this system so they can be shared between configure
5540 +# scripts and configure runs, see configure's option --config-cache.
5541 +# It is not useful on other systems. If it contains results you don't
5542 +# want to keep, you may remove or edit it.
5544 +# config.status only pays attention to the cache file if you give it
5545 +# the --recheck option to rerun configure.
5547 +# `ac_cv_env_foo' variables (set or unset) will be overridden when
5548 +# loading this file, other *unset* `ac_cv_foo' will be assigned the
5549 +# following values.
5553 +# The following way of writing the cache mishandles newlines in values,
5554 +# but we know of no workaround that is simple, portable, and efficient.
5555 +# So, don't put newlines in cache variables' values.
5556 +# Ultrix sh set writes to stderr and can't be redirected directly,
5557 +# and sets the high bit in the cache file unless we assign to the vars.
5560 + case `(ac_space=' '; set | grep ac_space) 2>&1` in
5562 + # `set' does not quote correctly, so add quotes (double-quote
5563 + # substitution turns \\\\ into \\, and sed turns \\ into \).
5566 + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
5569 + # `set' quotes correctly as required by POSIX, so do not add quotes.
5571 + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
5578 + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
5580 + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
5581 + : end' >>confcache
5582 +if diff $cache_file confcache >/dev/null 2>&1; then :; else
5583 + if test -w $cache_file; then
5584 + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
5585 + cat confcache >$cache_file
5587 + echo "not updating unwritable cache $cache_file"
5592 +test "x$prefix" = xNONE && prefix=$ac_default_prefix
5593 +# Let make expand exec_prefix.
5594 +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
5596 +# VPATH may cause trouble with some makes, so we remove $(srcdir),
5597 +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
5598 +# trailing colons and then remove the whole line if VPATH becomes empty
5599 +# (actually we leave an empty line to preserve line numbers).
5600 +if test "x$srcdir" = x.; then
5601 + ac_vpsub='/^[ ]*VPATH[ ]*=/{
5602 +s/:*\$(srcdir):*/:/;
5603 +s/:*\${srcdir}:*/:/;
5605 +s/^\([^=]*=[ ]*\):*/\1/;
5611 +# Transform confdefs.h into DEFS.
5612 +# Protect against shell expansion while executing Makefile rules.
5613 +# Protect against Makefile macro expansion.
5615 +# If the first sed substitution is executed (which looks for macros that
5616 +# take arguments), then we branch to the quote section. Otherwise,
5617 +# look for a macro that doesn't take arguments.
5618 +cat >confdef2opt.sed <<\_ACEOF
5621 +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
5623 +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
5627 +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
5633 +# We use echo to avoid assuming a particular line-breaking character.
5634 +# The extra dot is to prevent the shell from consuming trailing
5635 +# line-breaks from the sub-command output. A line-break within
5636 +# single-quotes doesn't work because, if this script is created in a
5637 +# platform that uses two characters for line-breaks (e.g., DOS), tr
5639 +ac_LF_and_DOT=`echo; echo .`
5640 +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
5641 +rm -f confdef2opt.sed
5646 +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue
5647 + # 1. Remove the extension, and $U if already installed.
5648 + ac_i=`echo "$ac_i" |
5649 + sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
5651 + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
5652 + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
5654 +LIB@&t@OBJS=$ac_libobjs
5656 +LTLIBOBJS=$ac_ltlibobjs
5660 +: ${CONFIG_STATUS=./config.status}
5661 +ac_clean_files_save=$ac_clean_files
5662 +ac_clean_files="$ac_clean_files $CONFIG_STATUS"
5663 +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
5664 +echo "$as_me: creating $CONFIG_STATUS" >&6;}
5665 +cat >$CONFIG_STATUS <<_ACEOF
5667 +# Generated by $as_me.
5668 +# Run this file to recreate the current configuration.
5669 +# Compiler output produced by configure, useful for debugging
5670 +# configure, is in config.log if it exists.
5673 +ac_cs_recheck=false
5675 +SHELL=\${CONFIG_SHELL-$SHELL}
5678 +cat >>$CONFIG_STATUS <<\_ACEOF
5679 +## --------------------- ##
5680 +## M4sh Initialization. ##
5681 +## --------------------- ##
5683 +# Be Bourne compatible
5684 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
5687 + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
5688 + # is contrary to our usage. Disable this feature.
5689 + alias -g '${1+"$@"}'='"$@"'
5690 +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
5694 +# Support unset when possible.
5695 +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
5702 +# Work around bugs in pre-3.0 UWIN ksh.
5703 +$as_unset ENV MAIL MAILPATH
5710 + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
5711 + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
5712 + LC_TELEPHONE LC_TIME
5714 + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
5715 + eval $as_var=C; export $as_var
5721 +# Required to use basename.
5722 +if expr a : '\(a\)' >/dev/null 2>&1; then
5728 +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
5729 + as_basename=basename
5735 +# Name of the executable.
5736 +as_me=`$as_basename "$0" ||
5737 +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
5738 + X"$0" : 'X\(//\)$' \| \
5739 + X"$0" : 'X\(/\)$' \| \
5740 + . : '\(.\)' 2>/dev/null ||
5742 + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
5743 + /^X\/\(\/\/\)$/{ s//\1/; q; }
5744 + /^X\/\(\/\).*/{ s//\1/; q; }
5748 +# PATH needs CR, and LINENO needs CR and PATH.
5749 +# Avoid depending upon Character Ranges.
5750 +as_cr_letters='abcdefghijklmnopqrstuvwxyz'
5751 +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
5752 +as_cr_Letters=$as_cr_letters$as_cr_LETTERS
5753 +as_cr_digits='0123456789'
5754 +as_cr_alnum=$as_cr_Letters$as_cr_digits
5756 +# The user is always right.
5757 +if test "${PATH_SEPARATOR+set}" != set; then
5758 + echo "#! /bin/sh" >conf$$.sh
5759 + echo "exit 0" >>conf$$.sh
5760 + chmod +x conf$$.sh
5761 + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
5762 + PATH_SEPARATOR=';'
5770 + as_lineno_1=$LINENO
5771 + as_lineno_2=$LINENO
5772 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
5773 + test "x$as_lineno_1" != "x$as_lineno_2" &&
5774 + test "x$as_lineno_3" = "x$as_lineno_2" || {
5775 + # Find who we are. Look in the path if we contain no path at all
5776 + # relative or not.
5778 + *[\\/]* ) as_myself=$0 ;;
5779 + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5780 +for as_dir in $PATH
5783 + test -z "$as_dir" && as_dir=.
5784 + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
5789 + # We did not find ourselves, most probably we were run as `sh COMMAND'
5790 + # in which case we are not to be found in the path.
5791 + if test "x$as_myself" = x; then
5794 + if test ! -f "$as_myself"; then
5795 + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
5796 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
5797 + { (exit 1); exit 1; }; }
5799 + case $CONFIG_SHELL in
5801 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5802 +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
5805 + test -z "$as_dir" && as_dir=.
5806 + for as_base in sh bash ksh sh5; do
5809 + if ("$as_dir/$as_base" -c '
5810 + as_lineno_1=$LINENO
5811 + as_lineno_2=$LINENO
5812 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
5813 + test "x$as_lineno_1" != "x$as_lineno_2" &&
5814 + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
5815 + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
5816 + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
5817 + CONFIG_SHELL=$as_dir/$as_base
5818 + export CONFIG_SHELL
5819 + exec "$CONFIG_SHELL" "$0" ${1+"$@"}
5827 + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
5828 + # uniformly replaced by the line number. The first 'sed' inserts a
5829 + # line-number line before each line; the second 'sed' does the real
5830 + # work. The second script uses 'N' to pair each line-number line
5831 + # with the numbered line, and appends trailing '-' during
5832 + # substitution so that $LINENO is not a special case at line end.
5833 + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
5834 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
5835 + sed '=' <$as_myself |
5840 + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
5843 + s,^['$as_cr_digits']*\n,,
5844 + ' >$as_me.lineno &&
5845 + chmod +x $as_me.lineno ||
5846 + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
5847 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
5848 + { (exit 1); exit 1; }; }
5850 + # Don't try to exec as it changes $[0], causing all sort of problems
5851 + # (the dirname of $[0] is not the place where we might find the
5852 + # original and so on. Autoconf is especially sensible to this).
5854 + # Exit status is that of the last command.
5859 +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
5860 + *c*,-n*) ECHO_N= ECHO_C='
5862 + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
5863 + *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
5866 +if expr a : '\(a\)' >/dev/null 2>&1; then
5872 +rm -f conf$$ conf$$.exe conf$$.file
5874 +if ln -s conf$$.file conf$$ 2>/dev/null; then
5875 + # We could just check for DJGPP; but this test a) works b) is more generic
5876 + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
5877 + if test -f conf$$.exe; then
5878 + # Don't use ln at all; we don't have any links
5883 +elif ln conf$$.file conf$$ 2>/dev/null; then
5888 +rm -f conf$$ conf$$.exe conf$$.file
5890 +if mkdir -p . 2>/dev/null; then
5896 +as_executable_p="test -f"
5898 +# Sed expression to map a string onto a valid CPP name.
5899 +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
5901 +# Sed expression to map a string onto a valid variable name.
5902 +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
5906 +# We need space, tab and new line, in precisely that order.
5916 +# Open the log real soon, to keep \$[0] and so on meaningful, and to
5917 +# report actual input values of CONFIG_FILES etc. instead of their
5918 +# values after options handling. Logging --version etc. is OK.
5922 + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
5923 +@%:@@%:@ Running $as_me. @%:@@%:@
5928 +This file was extended by $as_me, which was
5929 +generated by GNU Autoconf 2.57. Invocation command line was
5931 + CONFIG_FILES = $CONFIG_FILES
5932 + CONFIG_HEADERS = $CONFIG_HEADERS
5933 + CONFIG_LINKS = $CONFIG_LINKS
5934 + CONFIG_COMMANDS = $CONFIG_COMMANDS
5938 +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
5942 +# Files that config.status was made for.
5943 +if test -n "$ac_config_files"; then
5944 + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
5947 +if test -n "$ac_config_headers"; then
5948 + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
5951 +if test -n "$ac_config_links"; then
5952 + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
5955 +if test -n "$ac_config_commands"; then
5956 + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
5959 +cat >>$CONFIG_STATUS <<\_ACEOF
5962 +\`$as_me' instantiates files from templates according to the
5963 +current configuration.
5965 +Usage: $0 [OPTIONS] [FILE]...
5967 + -h, --help print this help, then exit
5968 + -V, --version print version number, then exit
5969 + -q, --quiet do not print progress messages
5970 + -d, --debug don't remove temporary files
5971 + --recheck update $as_me by reconfiguring in the same conditions
5972 + --file=FILE[:TEMPLATE]
5973 + instantiate the configuration file FILE
5975 +Configuration files:
5978 +Configuration commands:
5981 +Report bugs to <bug-autoconf@gnu.org>."
5984 +cat >>$CONFIG_STATUS <<_ACEOF
5987 +configured by $0, generated by GNU Autoconf 2.57,
5988 + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
5990 +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
5991 +Free Software Foundation, Inc.
5992 +This config.status script is free software; the Free Software Foundation
5993 +gives unlimited permission to copy, distribute and modify it."
5998 +cat >>$CONFIG_STATUS <<\_ACEOF
5999 +# If no file are specified by the user, then we need to provide default
6000 +# value. By we need to know if files were specified by the user.
6006 + ac_option=`expr "x$1" : 'x\([^=]*\)='`
6007 + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
6015 + *) # This is not an option, so the user has probably given explicit
6018 + ac_need_defaults=false;;
6021 + case $ac_option in
6022 + # Handling of the options.
6024 +cat >>$CONFIG_STATUS <<\_ACEOF
6025 + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
6026 + ac_cs_recheck=: ;;
6027 + --version | --vers* | -V )
6028 + echo "$ac_cs_version"; exit 0 ;;
6030 + # Conflict between --help and --header
6031 + { { echo "$as_me:$LINENO: error: ambiguous option: $1
6032 +Try \`$0 --help' for more information." >&5
6033 +echo "$as_me: error: ambiguous option: $1
6034 +Try \`$0 --help' for more information." >&2;}
6035 + { (exit 1); exit 1; }; };;
6036 + --help | --hel | -h )
6037 + echo "$ac_cs_usage"; exit 0 ;;
6038 + --debug | --d* | -d )
6040 + --file | --fil | --fi | --f )
6042 + CONFIG_FILES="$CONFIG_FILES $ac_optarg"
6043 + ac_need_defaults=false;;
6044 + --header | --heade | --head | --hea )
6046 + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
6047 + ac_need_defaults=false;;
6048 + -q | -quiet | --quiet | --quie | --qui | --qu | --q \
6049 + | -silent | --silent | --silen | --sile | --sil | --si | --s)
6052 + # This is an error.
6053 + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
6054 +Try \`$0 --help' for more information." >&5
6055 +echo "$as_me: error: unrecognized option: $1
6056 +Try \`$0 --help' for more information." >&2;}
6057 + { (exit 1); exit 1; }; } ;;
6059 + *) ac_config_targets="$ac_config_targets $1" ;;
6065 +ac_configure_extra_args=
6067 +if $ac_cs_silent; then
6069 + ac_configure_extra_args="$ac_configure_extra_args --silent"
6073 +cat >>$CONFIG_STATUS <<_ACEOF
6074 +if \$ac_cs_recheck; then
6075 + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
6076 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
6081 +cat >>$CONFIG_STATUS <<_ACEOF
6083 +# INIT-COMMANDS section.
6089 +with_multisubdir=${with_multisubdir}
6090 +ac_configure_args="${multilib_arg} ${ac_configure_args}"
6091 +CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
6092 +gc_basedir=${gc_basedir}
6101 +cat >>$CONFIG_STATUS <<\_ACEOF
6102 +for ac_config_target in $ac_config_targets
6104 + case "$ac_config_target" in
6105 + # Handling of arguments.
6106 + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
6107 + "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
6108 + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
6109 + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
6110 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
6111 + { (exit 1); exit 1; }; };;
6115 +# If the user did not use the arguments to specify the items to instantiate,
6116 +# then the envvar interface is used. Set only those that are not.
6117 +# We use the long form for the default assignment because of an extremely
6118 +# bizarre bug on SunOS 4.1.3.
6119 +if $ac_need_defaults; then
6120 + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
6121 + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
6124 +# Have a temporary directory for convenience. Make it in the build tree
6125 +# simply because there is no reason to put it here, and in addition,
6126 +# creating and moving files from /tmp can sometimes cause problems.
6127 +# Create a temporary directory, and hook for its removal unless debugging.
6130 + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
6131 + trap '{ (exit 1); exit 1; }' 1 2 13 15
6134 +# Create a (secure) tmp directory for tmp files.
6137 + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
6138 + test -n "$tmp" && test -d "$tmp"
6141 + tmp=./confstat$$-$RANDOM
6142 + (umask 077 && mkdir $tmp)
6145 + echo "$me: cannot create a temporary directory in ." >&2
6146 + { (exit 1); exit 1; }
6151 +cat >>$CONFIG_STATUS <<_ACEOF
6154 +# CONFIG_FILES section.
6157 +# No need to generate the scripts if there are no CONFIG_FILES.
6158 +# This happens for instance when ./config.status config.h
6159 +if test -n "\$CONFIG_FILES"; then
6160 + # Protect against being on the right side of a sed subst in config.status.
6161 + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
6162 + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
6163 +s,@SHELL@,$SHELL,;t t
6164 +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
6165 +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
6166 +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
6167 +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
6168 +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
6169 +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
6170 +s,@exec_prefix@,$exec_prefix,;t t
6171 +s,@prefix@,$prefix,;t t
6172 +s,@program_transform_name@,$program_transform_name,;t t
6173 +s,@bindir@,$bindir,;t t
6174 +s,@sbindir@,$sbindir,;t t
6175 +s,@libexecdir@,$libexecdir,;t t
6176 +s,@datadir@,$datadir,;t t
6177 +s,@sysconfdir@,$sysconfdir,;t t
6178 +s,@sharedstatedir@,$sharedstatedir,;t t
6179 +s,@localstatedir@,$localstatedir,;t t
6180 +s,@libdir@,$libdir,;t t
6181 +s,@includedir@,$includedir,;t t
6182 +s,@oldincludedir@,$oldincludedir,;t t
6183 +s,@infodir@,$infodir,;t t
6184 +s,@mandir@,$mandir,;t t
6185 +s,@build_alias@,$build_alias,;t t
6186 +s,@host_alias@,$host_alias,;t t
6187 +s,@target_alias@,$target_alias,;t t
6188 +s,@DEFS@,$DEFS,;t t
6189 +s,@ECHO_C@,$ECHO_C,;t t
6190 +s,@ECHO_N@,$ECHO_N,;t t
6191 +s,@ECHO_T@,$ECHO_T,;t t
6192 +s,@LIBS@,$LIBS,;t t
6193 +s,@gc_basedir@,$gc_basedir,;t t
6194 +s,@build@,$build,;t t
6195 +s,@build_cpu@,$build_cpu,;t t
6196 +s,@build_vendor@,$build_vendor,;t t
6197 +s,@build_os@,$build_os,;t t
6198 +s,@host@,$host,;t t
6199 +s,@host_cpu@,$host_cpu,;t t
6200 +s,@host_vendor@,$host_vendor,;t t
6201 +s,@host_os@,$host_os,;t t
6202 +s,@target@,$target,;t t
6203 +s,@target_cpu@,$target_cpu,;t t
6204 +s,@target_vendor@,$target_vendor,;t t
6205 +s,@target_os@,$target_os,;t t
6206 +s,@mkinstalldirs@,$mkinstalldirs,;t t
6207 +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
6208 +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
6209 +s,@INSTALL_DATA@,$INSTALL_DATA,;t t
6210 +s,@PACKAGE@,$PACKAGE,;t t
6211 +s,@VERSION@,$VERSION,;t t
6212 +s,@ACLOCAL@,$ACLOCAL,;t t
6213 +s,@AUTOCONF@,$AUTOCONF,;t t
6214 +s,@AUTOMAKE@,$AUTOMAKE,;t t
6215 +s,@AUTOHEADER@,$AUTOHEADER,;t t
6216 +s,@MAKEINFO@,$MAKEINFO,;t t
6217 +s,@SET_MAKE@,$SET_MAKE,;t t
6221 +s,@ac_ct_AS@,$ac_ct_AS,;t t
6223 +s,@ac_ct_AR@,$ac_ct_AR,;t t
6224 +s,@RANLIB@,$RANLIB,;t t
6225 +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
6226 +s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
6227 +s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
6228 +s,@MAINT@,$MAINT,;t t
6229 +s,@GC_CFLAGS@,$GC_CFLAGS,;t t
6230 +s,@LN_S@,$LN_S,;t t
6231 +s,@STRIP@,$STRIP,;t t
6232 +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
6233 +s,@LIBTOOL@,$LIBTOOL,;t t
6234 +s,@CXXCPP@,$CXXCPP,;t t
6235 +s,@CPPFLAGS@,$CPPFLAGS,;t t
6236 +s,@THREADLIBS@,$THREADLIBS,;t t
6237 +s,@POWERPC_DARWIN_TRUE@,$POWERPC_DARWIN_TRUE,;t t
6238 +s,@POWERPC_DARWIN_FALSE@,$POWERPC_DARWIN_FALSE,;t t
6239 +s,@EXTRA_TEST_LIBS@,$EXTRA_TEST_LIBS,;t t
6240 +s,@target_all@,$target_all,;t t
6241 +s,@INCLUDES@,$INCLUDES,;t t
6242 +s,@CXXINCLUDES@,$CXXINCLUDES,;t t
6243 +s,@addobjs@,$addobjs,;t t
6244 +s,@MY_CFLAGS@,$MY_CFLAGS,;t t
6245 +s,@USE_LIBDIR_TRUE@,$USE_LIBDIR_TRUE,;t t
6246 +s,@USE_LIBDIR_FALSE@,$USE_LIBDIR_FALSE,;t t
6247 +s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t
6248 +s,@LTLIBOBJS@,$LTLIBOBJS,;t t
6253 + cat >>$CONFIG_STATUS <<\_ACEOF
6254 + # Split the substitutions into bite-sized pieces for seds with
6255 + # small command number limits, like on Digital OSF/1 and HP-UX.
6256 + ac_max_sed_lines=48
6257 + ac_sed_frag=1 # Number of current file.
6258 + ac_beg=1 # First line for current file.
6259 + ac_end=$ac_max_sed_lines # Line after last line for current file.
6262 + while $ac_more_lines; do
6263 + if test $ac_beg -gt 1; then
6264 + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
6266 + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
6268 + if test ! -s $tmp/subs.frag; then
6269 + ac_more_lines=false
6271 + # The purpose of the label and of the branching condition is to
6272 + # speed up the sed processing (if there are no `@' at all, there
6273 + # is no need to browse any of the substitutions).
6274 + # These are the two extra sed commands mentioned above.
6276 + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
6277 + if test -z "$ac_sed_cmds"; then
6278 + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
6280 + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
6282 + ac_sed_frag=`expr $ac_sed_frag + 1`
6284 + ac_end=`expr $ac_end + $ac_max_sed_lines`
6287 + if test -z "$ac_sed_cmds"; then
6290 +fi # test -n "$CONFIG_FILES"
6293 +cat >>$CONFIG_STATUS <<\_ACEOF
6294 +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
6295 + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
6297 + - | *:- | *:-:* ) # input from stdin
6299 + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
6300 + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
6301 + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
6302 + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
6303 + * ) ac_file_in=$ac_file.in ;;
6306 + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
6307 + ac_dir=`(dirname "$ac_file") 2>/dev/null ||
6308 +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
6309 + X"$ac_file" : 'X\(//\)[^/]' \| \
6310 + X"$ac_file" : 'X\(//\)$' \| \
6311 + X"$ac_file" : 'X\(/\)' \| \
6312 + . : '\(.\)' 2>/dev/null ||
6314 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
6315 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
6316 + /^X\(\/\/\)$/{ s//\1/; q; }
6317 + /^X\(\/\).*/{ s//\1/; q; }
6319 + { if $as_mkdir_p; then
6320 + mkdir -p "$ac_dir"
6324 + while test ! -d "$as_dir"; do
6325 + as_dirs="$as_dir $as_dirs"
6326 + as_dir=`(dirname "$as_dir") 2>/dev/null ||
6327 +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
6328 + X"$as_dir" : 'X\(//\)[^/]' \| \
6329 + X"$as_dir" : 'X\(//\)$' \| \
6330 + X"$as_dir" : 'X\(/\)' \| \
6331 + . : '\(.\)' 2>/dev/null ||
6333 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
6334 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
6335 + /^X\(\/\/\)$/{ s//\1/; q; }
6336 + /^X\(\/\).*/{ s//\1/; q; }
6339 + test ! -n "$as_dirs" || mkdir $as_dirs
6340 + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
6341 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
6342 + { (exit 1); exit 1; }; }; }
6346 +if test "$ac_dir" != .; then
6347 + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
6348 + # A "../" for each directory in $ac_dir_suffix.
6349 + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
6351 + ac_dir_suffix= ac_top_builddir=
6355 + .) # No --srcdir option. We are building in place.
6357 + if test -z "$ac_top_builddir"; then
6360 + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
6362 + [\\/]* | ?:[\\/]* ) # Absolute path.
6363 + ac_srcdir=$srcdir$ac_dir_suffix;
6364 + ac_top_srcdir=$srcdir ;;
6365 + *) # Relative path.
6366 + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
6367 + ac_top_srcdir=$ac_top_builddir$srcdir ;;
6369 +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
6371 +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
6372 +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
6373 +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
6374 +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
6378 + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
6379 + *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
6382 + if test x"$ac_file" != x-; then
6383 + { echo "$as_me:$LINENO: creating $ac_file" >&5
6384 +echo "$as_me: creating $ac_file" >&6;}
6387 + # Let's still pretend it is `configure' which instantiates (i.e., don't
6388 + # use $as_me), people would be surprised to read:
6389 + # /* config.h. Generated by config.status. */
6390 + if test x"$ac_file" = x-; then
6393 + configure_input="$ac_file. "
6395 + configure_input=$configure_input"Generated from `echo $ac_file_in |
6396 + sed 's,.*/,,'` by configure."
6398 + # First look for the input files in the build tree, otherwise in the
6400 + ac_file_inputs=`IFS=:
6401 + for f in $ac_file_in; do
6403 + -) echo $tmp/stdin ;;
6405 + # Absolute (can't be DOS-style, as IFS=:)
6406 + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
6407 +echo "$as_me: error: cannot find input file: $f" >&2;}
6408 + { (exit 1); exit 1; }; }
6411 + if test -f "$f"; then
6414 + elif test -f "$srcdir/$f"; then
6419 + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
6420 +echo "$as_me: error: cannot find input file: $f" >&2;}
6421 + { (exit 1); exit 1; }; }
6424 + done` || { (exit 1); exit 1; }
6426 +cat >>$CONFIG_STATUS <<_ACEOF
6430 +cat >>$CONFIG_STATUS <<\_ACEOF
6432 +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
6433 +s,@configure_input@,$configure_input,;t t
6434 +s,@srcdir@,$ac_srcdir,;t t
6435 +s,@abs_srcdir@,$ac_abs_srcdir,;t t
6436 +s,@top_srcdir@,$ac_top_srcdir,;t t
6437 +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
6438 +s,@builddir@,$ac_builddir,;t t
6439 +s,@abs_builddir@,$ac_abs_builddir,;t t
6440 +s,@top_builddir@,$ac_top_builddir,;t t
6441 +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
6442 +s,@INSTALL@,$ac_INSTALL,;t t
6443 +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
6445 + if test x"$ac_file" != x-; then
6446 + mv $tmp/out $ac_file
6454 +cat >>$CONFIG_STATUS <<\_ACEOF
6457 +# CONFIG_COMMANDS section.
6459 +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
6460 + ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
6461 + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
6462 + ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
6463 +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
6464 + X"$ac_dest" : 'X\(//\)[^/]' \| \
6465 + X"$ac_dest" : 'X\(//\)$' \| \
6466 + X"$ac_dest" : 'X\(/\)' \| \
6467 + . : '\(.\)' 2>/dev/null ||
6469 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
6470 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
6471 + /^X\(\/\/\)$/{ s//\1/; q; }
6472 + /^X\(\/\).*/{ s//\1/; q; }
6476 +if test "$ac_dir" != .; then
6477 + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
6478 + # A "../" for each directory in $ac_dir_suffix.
6479 + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
6481 + ac_dir_suffix= ac_top_builddir=
6485 + .) # No --srcdir option. We are building in place.
6487 + if test -z "$ac_top_builddir"; then
6490 + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
6492 + [\\/]* | ?:[\\/]* ) # Absolute path.
6493 + ac_srcdir=$srcdir$ac_dir_suffix;
6494 + ac_top_srcdir=$srcdir ;;
6495 + *) # Relative path.
6496 + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
6497 + ac_top_srcdir=$ac_top_builddir$srcdir ;;
6499 +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
6501 +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
6502 +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
6503 +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
6504 +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
6507 + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
6508 +echo "$as_me: executing $ac_dest commands" >&6;}
6511 +echo "$DEFS" > boehm-cflags
6513 +if test -n "$CONFIG_FILES"; then
6514 + LD="${ORIGINAL_LD_FOR_MULTILIBS}"
6515 + ac_file=Makefile . ${gc_basedir}/../config-ml.in
6521 +cat >>$CONFIG_STATUS <<\_ACEOF
6523 +{ (exit 0); exit 0; }
6525 +chmod +x $CONFIG_STATUS
6526 +ac_clean_files=$ac_clean_files_save
6529 +# configure is writing to config.log, and then calls config.status.
6530 +# config.status does its own redirection, appending to config.log.
6531 +# Unfortunately, on DOS this fails, as config.log is still kept open
6532 +# by configure, so config.status won't be able to write to it; its
6533 +# output is simply discarded. So we exec the FD to /dev/null,
6534 +# effectively closing config.log, so it can be properly (re)opened and
6535 +# appended to by config.status. When coming back to configure, we
6536 +# need to make the FD available again.
6537 +if test "$no_create" != yes; then
6539 + ac_config_status_args=
6540 + test "$silent" = yes &&
6541 + ac_config_status_args="$ac_config_status_args --quiet"
6543 + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
6544 + exec 5>>config.log
6545 + # Use ||, not &&, to avoid exiting from the if with $? = 1, which
6546 + # would make configure fail if this is the last instruction.
6547 + $ac_cs_success || { (exit 1); exit 1; }
6550 diff -Nubr boehm-gc/autom4te.cache/output.1 ../boehm-gc/autom4te.cache/output.1
6551 --- boehm-gc/autom4te.cache/output.1 Wed Dec 31 16:00:00 1969
6552 +++ ../boehm-gc/autom4te.cache/output.1 Sat May 31 15:09:31 2003
6555 +@%:@ Guess values for system-dependent variables and create Makefiles.
6556 +@%:@ Generated by GNU Autoconf 2.54.
6558 +@%:@ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
6559 +@%:@ Free Software Foundation, Inc.
6560 +@%:@ This configure script is free software; the Free Software Foundation
6561 +@%:@ gives unlimited permission to copy, distribute and modify it.
6562 +## --------------------- ##
6563 +## M4sh Initialization. ##
6564 +## --------------------- ##
6566 +# Be Bourne compatible
6567 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
6570 + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
6571 + # is contrary to our usage. Disable this feature.
6572 + alias -g '${1+"$@"}'='"$@"'
6573 +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
6577 +# Support unset when possible.
6578 +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
6585 +# Work around bugs in pre-3.0 UWIN ksh.
6586 +$as_unset ENV MAIL MAILPATH
6592 +for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME
6594 + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
6595 + eval $as_var=C; export $as_var
6601 +# Required to use basename.
6602 +if expr a : '\(a\)' >/dev/null 2>&1; then
6608 +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
6609 + as_basename=basename
6615 +# Name of the executable.
6616 +as_me=`$as_basename "$0" ||
6617 +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
6618 + X"$0" : 'X\(//\)$' \| \
6619 + X"$0" : 'X\(/\)$' \| \
6620 + . : '\(.\)' 2>/dev/null ||
6622 + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
6623 + /^X\/\(\/\/\)$/{ s//\1/; q; }
6624 + /^X\/\(\/\).*/{ s//\1/; q; }
6628 +# PATH needs CR, and LINENO needs CR and PATH.
6629 +# Avoid depending upon Character Ranges.
6630 +as_cr_letters='abcdefghijklmnopqrstuvwxyz'
6631 +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
6632 +as_cr_Letters=$as_cr_letters$as_cr_LETTERS
6633 +as_cr_digits='0123456789'
6634 +as_cr_alnum=$as_cr_Letters$as_cr_digits
6636 +# The user is always right.
6637 +if test "${PATH_SEPARATOR+set}" != set; then
6638 + echo "#! /bin/sh" >conftest.sh
6639 + echo "exit 0" >>conftest.sh
6640 + chmod +x conftest.sh
6641 + if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then
6642 + PATH_SEPARATOR=';'
6650 + as_lineno_1=$LINENO
6651 + as_lineno_2=$LINENO
6652 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
6653 + test "x$as_lineno_1" != "x$as_lineno_2" &&
6654 + test "x$as_lineno_3" = "x$as_lineno_2" || {
6655 + # Find who we are. Look in the path if we contain no path at all
6656 + # relative or not.
6658 + *[\\/]* ) as_myself=$0 ;;
6659 + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6660 +for as_dir in $PATH
6663 + test -z "$as_dir" && as_dir=.
6664 + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
6669 + # We did not find ourselves, most probably we were run as `sh COMMAND'
6670 + # in which case we are not to be found in the path.
6671 + if test "x$as_myself" = x; then
6674 + if test ! -f "$as_myself"; then
6675 + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
6676 + { (exit 1); exit 1; }; }
6678 + case $CONFIG_SHELL in
6680 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6681 +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
6684 + test -z "$as_dir" && as_dir=.
6685 + for as_base in sh bash ksh sh5; do
6688 + if ("$as_dir/$as_base" -c '
6689 + as_lineno_1=$LINENO
6690 + as_lineno_2=$LINENO
6691 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
6692 + test "x$as_lineno_1" != "x$as_lineno_2" &&
6693 + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
6694 + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
6695 + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
6696 + CONFIG_SHELL=$as_dir/$as_base
6697 + export CONFIG_SHELL
6698 + exec "$CONFIG_SHELL" "$0" ${1+"$@"}
6706 + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
6707 + # uniformly replaced by the line number. The first 'sed' inserts a
6708 + # line-number line before each line; the second 'sed' does the real
6709 + # work. The second script uses 'N' to pair each line-number line
6710 + # with the numbered line, and appends trailing '-' during
6711 + # substitution so that $LINENO is not a special case at line end.
6712 + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
6713 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
6714 + sed '=' <$as_myself |
6719 + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
6722 + s,^['$as_cr_digits']*\n,,
6723 + ' >$as_me.lineno &&
6724 + chmod +x $as_me.lineno ||
6725 + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
6726 + { (exit 1); exit 1; }; }
6728 + # Don't try to exec as it changes $[0], causing all sort of problems
6729 + # (the dirname of $[0] is not the place where we might find the
6730 + # original and so on. Autoconf is especially sensible to this).
6732 + # Exit status is that of the last command.
6737 +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
6738 + *c*,-n*) ECHO_N= ECHO_C='
6740 + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
6741 + *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
6744 +if expr a : '\(a\)' >/dev/null 2>&1; then
6750 +rm -f conf$$ conf$$.exe conf$$.file
6752 +if ln -s conf$$.file conf$$ 2>/dev/null; then
6753 + # We could just check for DJGPP; but this test a) works b) is more generic
6754 + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
6755 + if test -f conf$$.exe; then
6756 + # Don't use ln at all; we don't have any links
6761 +elif ln conf$$.file conf$$ 2>/dev/null; then
6766 +rm -f conf$$ conf$$.exe conf$$.file
6768 +if mkdir -p . 2>/dev/null; then
6774 +as_executable_p="test -f"
6776 +# Sed expression to map a string onto a valid CPP name.
6777 +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
6779 +# Sed expression to map a string onto a valid variable name.
6780 +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
6784 +# We need space, tab and new line, in precisely that order.
6793 +# Find the correct PATH separator. Usually this is `:', but
6794 +# DJGPP uses `;' like DOS.
6795 +if test "X${PATH_SEPARATOR+set}" != Xset; then
6796 + UNAME=${UNAME-`uname 2>/dev/null`}
6798 + *-DOS) lt_cv_sys_path_separator=';' ;;
6799 + *) lt_cv_sys_path_separator=':' ;;
6801 + PATH_SEPARATOR=$lt_cv_sys_path_separator
6805 +# Check that we are running under the correct shell.
6806 +SHELL=${CONFIG_SHELL-/bin/sh}
6810 + # Remove one level of quotation (which was required for Make).
6811 + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
6816 +if test "X$1" = X--no-reexec; then
6817 + # Discard the --no-reexec flag, and continue.
6819 +elif test "X$1" = X--fallback-echo; then
6820 + # Avoid inline document here, it may be left over
6822 +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
6823 + # Yippee, $echo works!
6826 + # Restart under the correct shell.
6827 + exec $SHELL "$0" --no-reexec ${1+"$@"}
6830 +if test "X$1" = X--fallback-echo; then
6831 + # used as fallback echo
6839 +# The HP-UX ksh and POSIX shell print the target directory to stdout
6840 +# if CDPATH is set.
6841 +if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
6843 +if test -z "$ECHO"; then
6844 +if test "X${echo_test_string+set}" != Xset; then
6845 +# find a string as large as possible, as long as the shell can cope with it
6846 + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
6847 + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
6848 + if (echo_test_string="`eval $cmd`") 2>/dev/null &&
6849 + echo_test_string="`eval $cmd`" &&
6850 + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
6857 +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
6858 + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
6859 + test "X$echo_testing_string" = "X$echo_test_string"; then
6862 + # The Solaris, AIX, and Digital Unix default echo programs unquote
6863 + # backslashes. This makes it impossible to quote backslashes using
6864 + # echo "$something" | sed 's/\\/\\\\/g'
6866 + # So, first we look for a working echo in the user's PATH.
6868 + IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
6869 + for dir in $PATH /usr/ucb; do
6870 + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
6871 + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
6872 + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
6873 + test "X$echo_testing_string" = "X$echo_test_string"; then
6880 + if test "X$echo" = Xecho; then
6881 + # We didn't find a better echo, so look for alternatives.
6882 + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
6883 + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
6884 + test "X$echo_testing_string" = "X$echo_test_string"; then
6885 + # This shell has a builtin print -r that does the trick.
6887 + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
6888 + test "X$CONFIG_SHELL" != X/bin/ksh; then
6889 + # If we have ksh, try running configure again with it.
6890 + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
6891 + export ORIGINAL_CONFIG_SHELL
6892 + CONFIG_SHELL=/bin/ksh
6893 + export CONFIG_SHELL
6894 + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
6896 + # Try using printf.
6897 + echo='printf %s\n'
6898 + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
6899 + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
6900 + test "X$echo_testing_string" = "X$echo_test_string"; then
6901 + # Cool, printf works
6903 + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
6904 + test "X$echo_testing_string" = 'X\t' &&
6905 + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
6906 + test "X$echo_testing_string" = "X$echo_test_string"; then
6907 + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
6908 + export CONFIG_SHELL
6909 + SHELL="$CONFIG_SHELL"
6911 + echo="$CONFIG_SHELL $0 --fallback-echo"
6912 + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
6913 + test "X$echo_testing_string" = 'X\t' &&
6914 + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
6915 + test "X$echo_testing_string" = "X$echo_test_string"; then
6916 + echo="$CONFIG_SHELL $0 --fallback-echo"
6918 + # maybe with a smaller string...
6921 + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
6922 + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
6929 + if test "$prev" != 'sed 50q "$0"'; then
6930 + echo_test_string=`eval $prev`
6931 + export echo_test_string
6932 + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
6934 + # Oops. We lost completely, so just stick with echo.
6943 +# Copy echo and quote the copy suitably for passing to libtool from
6944 +# the Makefile, instead of quoting the original, which is used later.
6946 +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
6947 + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
6952 +# Name of the host.
6953 +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
6954 +# so uname gets run too.
6955 +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
6962 +ac_default_prefix=/usr/local
6963 +ac_config_libobj_dir=.
6968 +SHELL=${CONFIG_SHELL-/bin/sh}
6970 +# Maximum number of lines to put in a shell here document.
6971 +# This variable seems obsolete. It should probably be removed, and
6972 +# only ac_max_sed_lines should be used.
6973 +: ${ac_max_here_lines=38}
6975 +# Identity of this package.
6982 +ac_unique_file="gcj_mlc.c"
6983 +# Factoring default headers for most tests.
6984 +ac_includes_default="\
6986 +#if HAVE_SYS_TYPES_H
6987 +# include <sys/types.h>
6989 +#if HAVE_SYS_STAT_H
6990 +# include <sys/stat.h>
6993 +# include <stdlib.h>
6994 +# include <stddef.h>
6997 +# include <stdlib.h>
7001 +# if !STDC_HEADERS && HAVE_MEMORY_H
7002 +# include <memory.h>
7004 +# include <string.h>
7007 +# include <strings.h>
7009 +#if HAVE_INTTYPES_H
7010 +# include <inttypes.h>
7013 +# include <stdint.h>
7017 +# include <unistd.h>
7020 +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'
7023 +# Initialize some variables set by options.
7025 +ac_init_version=false
7026 +# The variables have the same names as the options, with
7027 +# dashes changed to underlines.
7028 +cache_file=/dev/null
7033 +program_prefix=NONE
7034 +program_suffix=NONE
7035 +program_transform_name=s,x,x,
7043 +# Installation directory options.
7044 +# These are left unexpanded so users can "make install exec_prefix=/foo"
7045 +# and all the variables that are supposed to be based on exec_prefix
7046 +# by default will actually change.
7047 +# Use braces instead of parens because sh, perl, etc. also accept them.
7048 +bindir='${exec_prefix}/bin'
7049 +sbindir='${exec_prefix}/sbin'
7050 +libexecdir='${exec_prefix}/libexec'
7051 +datadir='${prefix}/share'
7052 +sysconfdir='${prefix}/etc'
7053 +sharedstatedir='${prefix}/com'
7054 +localstatedir='${prefix}/var'
7055 +libdir='${exec_prefix}/lib'
7056 +includedir='${prefix}/include'
7057 +oldincludedir='/usr/include'
7058 +infodir='${prefix}/info'
7059 +mandir='${prefix}/man'
7064 + # If the previous option needs an argument, assign it.
7065 + if test -n "$ac_prev"; then
7066 + eval "$ac_prev=\$ac_option"
7071 + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
7073 + # Accept the important Cygnus configure options, so we can diagnose typos.
7075 + case $ac_option in
7077 + -bindir | --bindir | --bindi | --bind | --bin | --bi)
7079 + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
7080 + bindir=$ac_optarg ;;
7082 + -build | --build | --buil | --bui | --bu)
7083 + ac_prev=build_alias ;;
7084 + -build=* | --build=* | --buil=* | --bui=* | --bu=*)
7085 + build_alias=$ac_optarg ;;
7087 + -cache-file | --cache-file | --cache-fil | --cache-fi \
7088 + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
7089 + ac_prev=cache_file ;;
7090 + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
7091 + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
7092 + cache_file=$ac_optarg ;;
7094 + --config-cache | -C)
7095 + cache_file=config.cache ;;
7097 + -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
7098 + ac_prev=datadir ;;
7099 + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
7101 + datadir=$ac_optarg ;;
7103 + -disable-* | --disable-*)
7104 + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
7105 + # Reject names that are not valid shell variable names.
7106 + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
7107 + { echo "$as_me: error: invalid feature name: $ac_feature" >&2
7108 + { (exit 1); exit 1; }; }
7109 + ac_feature=`echo $ac_feature | sed 's/-/_/g'`
7110 + eval "enable_$ac_feature=no" ;;
7112 + -enable-* | --enable-*)
7113 + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
7114 + # Reject names that are not valid shell variable names.
7115 + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
7116 + { echo "$as_me: error: invalid feature name: $ac_feature" >&2
7117 + { (exit 1); exit 1; }; }
7118 + ac_feature=`echo $ac_feature | sed 's/-/_/g'`
7119 + case $ac_option in
7120 + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
7121 + *) ac_optarg=yes ;;
7123 + eval "enable_$ac_feature='$ac_optarg'" ;;
7125 + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
7126 + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
7127 + | --exec | --exe | --ex)
7128 + ac_prev=exec_prefix ;;
7129 + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
7130 + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
7131 + | --exec=* | --exe=* | --ex=*)
7132 + exec_prefix=$ac_optarg ;;
7134 + -gas | --gas | --ga | --g)
7135 + # Obsolete; use --with-gas.
7138 + -help | --help | --hel | --he | -h)
7139 + ac_init_help=long ;;
7140 + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
7141 + ac_init_help=recursive ;;
7142 + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
7143 + ac_init_help=short ;;
7145 + -host | --host | --hos | --ho)
7146 + ac_prev=host_alias ;;
7147 + -host=* | --host=* | --hos=* | --ho=*)
7148 + host_alias=$ac_optarg ;;
7150 + -includedir | --includedir | --includedi | --included | --include \
7151 + | --includ | --inclu | --incl | --inc)
7152 + ac_prev=includedir ;;
7153 + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
7154 + | --includ=* | --inclu=* | --incl=* | --inc=*)
7155 + includedir=$ac_optarg ;;
7157 + -infodir | --infodir | --infodi | --infod | --info | --inf)
7158 + ac_prev=infodir ;;
7159 + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
7160 + infodir=$ac_optarg ;;
7162 + -libdir | --libdir | --libdi | --libd)
7164 + -libdir=* | --libdir=* | --libdi=* | --libd=*)
7165 + libdir=$ac_optarg ;;
7167 + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
7168 + | --libexe | --libex | --libe)
7169 + ac_prev=libexecdir ;;
7170 + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
7171 + | --libexe=* | --libex=* | --libe=*)
7172 + libexecdir=$ac_optarg ;;
7174 + -localstatedir | --localstatedir | --localstatedi | --localstated \
7175 + | --localstate | --localstat | --localsta | --localst \
7176 + | --locals | --local | --loca | --loc | --lo)
7177 + ac_prev=localstatedir ;;
7178 + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
7179 + | --localstate=* | --localstat=* | --localsta=* | --localst=* \
7180 + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
7181 + localstatedir=$ac_optarg ;;
7183 + -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
7185 + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
7186 + mandir=$ac_optarg ;;
7188 + -nfp | --nfp | --nf)
7189 + # Obsolete; use --without-fp.
7192 + -no-create | --no-create | --no-creat | --no-crea | --no-cre \
7193 + | --no-cr | --no-c | -n)
7196 + -no-recursion | --no-recursion | --no-recursio | --no-recursi \
7197 + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
7198 + no_recursion=yes ;;
7200 + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
7201 + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
7202 + | --oldin | --oldi | --old | --ol | --o)
7203 + ac_prev=oldincludedir ;;
7204 + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
7205 + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
7206 + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
7207 + oldincludedir=$ac_optarg ;;
7209 + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
7211 + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
7212 + prefix=$ac_optarg ;;
7214 + -program-prefix | --program-prefix | --program-prefi | --program-pref \
7215 + | --program-pre | --program-pr | --program-p)
7216 + ac_prev=program_prefix ;;
7217 + -program-prefix=* | --program-prefix=* | --program-prefi=* \
7218 + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
7219 + program_prefix=$ac_optarg ;;
7221 + -program-suffix | --program-suffix | --program-suffi | --program-suff \
7222 + | --program-suf | --program-su | --program-s)
7223 + ac_prev=program_suffix ;;
7224 + -program-suffix=* | --program-suffix=* | --program-suffi=* \
7225 + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
7226 + program_suffix=$ac_optarg ;;
7228 + -program-transform-name | --program-transform-name \
7229 + | --program-transform-nam | --program-transform-na \
7230 + | --program-transform-n | --program-transform- \
7231 + | --program-transform | --program-transfor \
7232 + | --program-transfo | --program-transf \
7233 + | --program-trans | --program-tran \
7234 + | --progr-tra | --program-tr | --program-t)
7235 + ac_prev=program_transform_name ;;
7236 + -program-transform-name=* | --program-transform-name=* \
7237 + | --program-transform-nam=* | --program-transform-na=* \
7238 + | --program-transform-n=* | --program-transform-=* \
7239 + | --program-transform=* | --program-transfor=* \
7240 + | --program-transfo=* | --program-transf=* \
7241 + | --program-trans=* | --program-tran=* \
7242 + | --progr-tra=* | --program-tr=* | --program-t=*)
7243 + program_transform_name=$ac_optarg ;;
7245 + -q | -quiet | --quiet | --quie | --qui | --qu | --q \
7246 + | -silent | --silent | --silen | --sile | --sil)
7249 + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
7250 + ac_prev=sbindir ;;
7251 + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
7252 + | --sbi=* | --sb=*)
7253 + sbindir=$ac_optarg ;;
7255 + -sharedstatedir | --sharedstatedir | --sharedstatedi \
7256 + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
7257 + | --sharedst | --shareds | --shared | --share | --shar \
7259 + ac_prev=sharedstatedir ;;
7260 + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
7261 + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
7262 + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
7263 + | --sha=* | --sh=*)
7264 + sharedstatedir=$ac_optarg ;;
7266 + -site | --site | --sit)
7268 + -site=* | --site=* | --sit=*)
7269 + site=$ac_optarg ;;
7271 + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
7273 + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
7274 + srcdir=$ac_optarg ;;
7276 + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
7277 + | --syscon | --sysco | --sysc | --sys | --sy)
7278 + ac_prev=sysconfdir ;;
7279 + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
7280 + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
7281 + sysconfdir=$ac_optarg ;;
7283 + -target | --target | --targe | --targ | --tar | --ta | --t)
7284 + ac_prev=target_alias ;;
7285 + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
7286 + target_alias=$ac_optarg ;;
7288 + -v | -verbose | --verbose | --verbos | --verbo | --verb)
7291 + -version | --version | --versio | --versi | --vers | -V)
7292 + ac_init_version=: ;;
7294 + -with-* | --with-*)
7295 + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
7296 + # Reject names that are not valid shell variable names.
7297 + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
7298 + { echo "$as_me: error: invalid package name: $ac_package" >&2
7299 + { (exit 1); exit 1; }; }
7300 + ac_package=`echo $ac_package| sed 's/-/_/g'`
7301 + case $ac_option in
7302 + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
7303 + *) ac_optarg=yes ;;
7305 + eval "with_$ac_package='$ac_optarg'" ;;
7307 + -without-* | --without-*)
7308 + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
7309 + # Reject names that are not valid shell variable names.
7310 + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
7311 + { echo "$as_me: error: invalid package name: $ac_package" >&2
7312 + { (exit 1); exit 1; }; }
7313 + ac_package=`echo $ac_package | sed 's/-/_/g'`
7314 + eval "with_$ac_package=no" ;;
7317 + # Obsolete; use --with-x.
7320 + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
7321 + | --x-incl | --x-inc | --x-in | --x-i)
7322 + ac_prev=x_includes ;;
7323 + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
7324 + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
7325 + x_includes=$ac_optarg ;;
7327 + -x-libraries | --x-libraries | --x-librarie | --x-librari \
7328 + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
7329 + ac_prev=x_libraries ;;
7330 + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
7331 + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
7332 + x_libraries=$ac_optarg ;;
7334 + -*) { echo "$as_me: error: unrecognized option: $ac_option
7335 +Try \`$0 --help' for more information." >&2
7336 + { (exit 1); exit 1; }; }
7340 + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
7341 + # Reject names that are not valid shell variable names.
7342 + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
7343 + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
7344 + { (exit 1); exit 1; }; }
7345 + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
7346 + eval "$ac_envvar='$ac_optarg'"
7347 + export $ac_envvar ;;
7350 + # FIXME: should be removed in autoconf 3.0.
7351 + echo "$as_me: WARNING: you should use --build, --host, --target" >&2
7352 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
7353 + echo "$as_me: WARNING: invalid host type: $ac_option" >&2
7354 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
7360 +if test -n "$ac_prev"; then
7361 + ac_option=--`echo $ac_prev | sed 's/_/-/g'`
7362 + { echo "$as_me: error: missing argument to $ac_option" >&2
7363 + { (exit 1); exit 1; }; }
7366 +# Be sure to have absolute paths.
7367 +for ac_var in exec_prefix prefix
7369 + eval ac_val=$`echo $ac_var`
7371 + [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
7372 + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
7373 + { (exit 1); exit 1; }; };;
7377 +# Be sure to have absolute paths.
7378 +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
7379 + localstatedir libdir includedir oldincludedir infodir mandir
7381 + eval ac_val=$`echo $ac_var`
7383 + [\\/$]* | ?:[\\/]* ) ;;
7384 + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
7385 + { (exit 1); exit 1; }; };;
7389 +# There might be people who depend on the old broken behavior: `$host'
7390 +# used to hold the argument of --host etc.
7391 +# FIXME: To remove some day.
7394 +target=$target_alias
7396 +# FIXME: To remove some day.
7397 +if test "x$host_alias" != x; then
7398 + if test "x$build_alias" = x; then
7399 + cross_compiling=maybe
7400 + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
7401 + If a cross compiler is detected then cross compile mode will be used." >&2
7402 + elif test "x$build_alias" != "x$host_alias"; then
7403 + cross_compiling=yes
7408 +test -n "$host_alias" && ac_tool_prefix=$host_alias-
7410 +test "$silent" = yes && exec 6>/dev/null
7413 +# Find the source files, if location was not specified.
7414 +if test -z "$srcdir"; then
7415 + ac_srcdir_defaulted=yes
7416 + # Try the directory containing this script, then its parent.
7417 + ac_confdir=`(dirname "$0") 2>/dev/null ||
7418 +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
7419 + X"$0" : 'X\(//\)[^/]' \| \
7420 + X"$0" : 'X\(//\)$' \| \
7421 + X"$0" : 'X\(/\)' \| \
7422 + . : '\(.\)' 2>/dev/null ||
7424 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
7425 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
7426 + /^X\(\/\/\)$/{ s//\1/; q; }
7427 + /^X\(\/\).*/{ s//\1/; q; }
7429 + srcdir=$ac_confdir
7430 + if test ! -r $srcdir/$ac_unique_file; then
7434 + ac_srcdir_defaulted=no
7436 +if test ! -r $srcdir/$ac_unique_file; then
7437 + if test "$ac_srcdir_defaulted" = yes; then
7438 + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
7439 + { (exit 1); exit 1; }; }
7441 + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
7442 + { (exit 1); exit 1; }; }
7445 +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
7446 + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
7447 + { (exit 1); exit 1; }; }
7448 +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
7449 +ac_env_build_alias_set=${build_alias+set}
7450 +ac_env_build_alias_value=$build_alias
7451 +ac_cv_env_build_alias_set=${build_alias+set}
7452 +ac_cv_env_build_alias_value=$build_alias
7453 +ac_env_host_alias_set=${host_alias+set}
7454 +ac_env_host_alias_value=$host_alias
7455 +ac_cv_env_host_alias_set=${host_alias+set}
7456 +ac_cv_env_host_alias_value=$host_alias
7457 +ac_env_target_alias_set=${target_alias+set}
7458 +ac_env_target_alias_value=$target_alias
7459 +ac_cv_env_target_alias_set=${target_alias+set}
7460 +ac_cv_env_target_alias_value=$target_alias
7461 +ac_env_CC_set=${CC+set}
7462 +ac_env_CC_value=$CC
7463 +ac_cv_env_CC_set=${CC+set}
7464 +ac_cv_env_CC_value=$CC
7465 +ac_env_CFLAGS_set=${CFLAGS+set}
7466 +ac_env_CFLAGS_value=$CFLAGS
7467 +ac_cv_env_CFLAGS_set=${CFLAGS+set}
7468 +ac_cv_env_CFLAGS_value=$CFLAGS
7469 +ac_env_LDFLAGS_set=${LDFLAGS+set}
7470 +ac_env_LDFLAGS_value=$LDFLAGS
7471 +ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
7472 +ac_cv_env_LDFLAGS_value=$LDFLAGS
7473 +ac_env_CPPFLAGS_set=${CPPFLAGS+set}
7474 +ac_env_CPPFLAGS_value=$CPPFLAGS
7475 +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
7476 +ac_cv_env_CPPFLAGS_value=$CPPFLAGS
7477 +ac_env_CPP_set=${CPP+set}
7478 +ac_env_CPP_value=$CPP
7479 +ac_cv_env_CPP_set=${CPP+set}
7480 +ac_cv_env_CPP_value=$CPP
7483 +# Report the --help message.
7485 +if test "$ac_init_help" = "long"; then
7486 + # Omit some internal or obsolete options to make the list less imposing.
7487 + # This message is too long to be a string in the A/UX 3.1 sh.
7489 +\`configure' configures this package to adapt to many kinds of systems.
7491 +Usage: $0 [OPTION]... [VAR=VALUE]...
7493 +To assign environment variables (e.g., CC, CFLAGS...), specify them as
7494 +VAR=VALUE. See below for descriptions of some of the useful variables.
7496 +Defaults for the options are specified in brackets.
7499 + -h, --help display this help and exit
7500 + --help=short display options specific to this package
7501 + --help=recursive display the short help of all the included packages
7502 + -V, --version display version information and exit
7503 + -q, --quiet, --silent do not print \`checking...' messages
7504 + --cache-file=FILE cache test results in FILE [disabled]
7505 + -C, --config-cache alias for \`--cache-file=config.cache'
7506 + -n, --no-create do not create output files
7507 + --srcdir=DIR find the sources in DIR [configure dir or \`..']
7512 +Installation directories:
7513 + --prefix=PREFIX install architecture-independent files in PREFIX
7514 + [$ac_default_prefix]
7515 + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
7518 +By default, \`make install' will install all the files in
7519 +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
7520 +an installation prefix other than \`$ac_default_prefix' using \`--prefix',
7521 +for instance \`--prefix=\$HOME'.
7523 +For better control, use the options below.
7525 +Fine tuning of the installation directories:
7526 + --bindir=DIR user executables [EPREFIX/bin]
7527 + --sbindir=DIR system admin executables [EPREFIX/sbin]
7528 + --libexecdir=DIR program executables [EPREFIX/libexec]
7529 + --datadir=DIR read-only architecture-independent data [PREFIX/share]
7530 + --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
7531 + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
7532 + --localstatedir=DIR modifiable single-machine data [PREFIX/var]
7533 + --libdir=DIR object code libraries [EPREFIX/lib]
7534 + --includedir=DIR C header files [PREFIX/include]
7535 + --oldincludedir=DIR C header files for non-gcc [/usr/include]
7536 + --infodir=DIR info documentation [PREFIX/info]
7537 + --mandir=DIR man documentation [PREFIX/man]
7543 + --program-prefix=PREFIX prepend PREFIX to installed program names
7544 + --program-suffix=SUFFIX append SUFFIX to installed program names
7545 + --program-transform-name=PROGRAM run sed PROGRAM on installed program names
7548 + --build=BUILD configure for building on BUILD [guessed]
7549 + --host=HOST cross-compile to build programs to run on HOST [BUILD]
7550 + --target=TARGET configure for building compilers for TARGET [HOST]
7554 +if test -n "$ac_init_help"; then
7559 + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
7560 + --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
7561 + --enable-multilib build many library versions (default)
7562 + --enable-maintainer-mode enable make rules and dependencies not useful
7563 + (and sometimes confusing) to the casual installer
7564 + --enable-shared=PKGS build shared libraries default=yes
7565 + --enable-static=PKGS build static libraries default=yes
7566 + --enable-fast-install=PKGS optimize for fast installation default=yes
7567 + --disable-dependency-tracking Speeds up one-time builds
7568 + --enable-dependency-tracking Do not reject slow dependency extractors
7569 + --disable-libtool-lock avoid locking (might break parallel builds)
7570 + --enable-parallel-mark parallelize marking and free list construction
7571 + --enable-shared=PKGS build shared libraries default=no
7572 + --enable-full-debug include full support for pointer backtracing etc.
7575 + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
7576 + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
7577 + --with-gnu-ld assume the C compiler uses GNU ld default=no
7578 + --with-pic try to use only PIC/non-PIC objects default=use both
7579 + --with-target-subdir=SUBDIR
7580 + configuring with a cross compiler
7581 + --with-cross-host=HOST configuring with a cross compiler
7582 + --with-ecos enable runtime eCos target support
7584 +Some influential environment variables:
7585 + CC C compiler command
7586 + CFLAGS C compiler flags
7587 + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
7588 + nonstandard directory <lib dir>
7589 + CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
7590 + headers in a nonstandard directory <include dir>
7591 + CPP C preprocessor
7593 +Use these variables to override the choices made by `configure' or to help
7594 +it to find libraries and programs with nonstandard names/locations.
7599 +if test "$ac_init_help" = "recursive"; then
7600 + # If there are subdirs, report their specific --help.
7602 + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
7603 + test -d $ac_dir || continue
7606 +if test "$ac_dir" != .; then
7607 + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
7608 + # A "../" for each directory in $ac_dir_suffix.
7609 + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
7611 + ac_dir_suffix= ac_top_builddir=
7615 + .) # No --srcdir option. We are building in place.
7617 + if test -z "$ac_top_builddir"; then
7620 + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
7622 + [\\/]* | ?:[\\/]* ) # Absolute path.
7623 + ac_srcdir=$srcdir$ac_dir_suffix;
7624 + ac_top_srcdir=$srcdir ;;
7625 + *) # Relative path.
7626 + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
7627 + ac_top_srcdir=$ac_top_builddir$srcdir ;;
7629 +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
7631 +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
7632 +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
7633 +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
7634 +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
7637 + # Check for guested configure; otherwise get Cygnus style configure.
7638 + if test -f $ac_srcdir/configure.gnu; then
7640 + $SHELL $ac_srcdir/configure.gnu --help=recursive
7641 + elif test -f $ac_srcdir/configure; then
7643 + $SHELL $ac_srcdir/configure --help=recursive
7644 + elif test -f $ac_srcdir/configure.ac ||
7645 + test -f $ac_srcdir/configure.in; then
7647 + $ac_configure --help
7649 + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
7655 +test -n "$ac_init_help" && exit 0
7656 +if $ac_init_version; then
7659 +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
7660 +Free Software Foundation, Inc.
7661 +This configure script is free software; the Free Software Foundation
7662 +gives unlimited permission to copy, distribute and modify it.
7668 +This file contains any messages produced by compilers while
7669 +running configure, to aid debugging if configure makes a mistake.
7671 +It was created by $as_me, which was
7672 +generated by GNU Autoconf 2.54. Invocation command line was
7679 +@%:@@%:@ --------- @%:@@%:@
7680 +@%:@@%:@ Platform. @%:@@%:@
7681 +@%:@@%:@ --------- @%:@@%:@
7683 +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
7684 +uname -m = `(uname -m) 2>/dev/null || echo unknown`
7685 +uname -r = `(uname -r) 2>/dev/null || echo unknown`
7686 +uname -s = `(uname -s) 2>/dev/null || echo unknown`
7687 +uname -v = `(uname -v) 2>/dev/null || echo unknown`
7689 +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
7690 +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
7692 +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
7693 +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
7694 +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
7695 +hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
7696 +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
7697 +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
7698 +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
7702 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7703 +for as_dir in $PATH
7706 + test -z "$as_dir" && as_dir=.
7707 + echo "PATH: $as_dir"
7715 +@%:@@%:@ ----------- @%:@@%:@
7716 +@%:@@%:@ Core tests. @%:@@%:@
7717 +@%:@@%:@ ----------- @%:@@%:@
7722 +# Keep a trace of the command line.
7723 +# Strip out --no-create and --no-recursion so they do not pile up.
7724 +# Also quote any args containing shell meta-characters.
7730 + -no-create | --no-create | --no-creat | --no-crea | --no-cre \
7731 + | --no-cr | --no-c | -n ) continue ;;
7732 + -no-recursion | --no-recursion | --no-recursio | --no-recursi \
7733 + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
7735 + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
7736 + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
7738 + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
7739 + # Get rid of the leading space.
7743 +# When interrupted or exit'd, cleanup temporary files, and complete
7744 +# config.log. We remove comments because anyway the quotes in there
7745 +# would cause problems or look ugly.
7746 +# WARNING: Be sure not to use single quotes in there, as some shells,
7747 +# such as our DU 5.0 friend, will then `close' the trap.
7748 +trap 'exit_status=$?
7749 + # Save into config.log some information that might help in debugging.
7754 +@%:@@%:@ ---------------- @%:@@%:@
7755 +@%:@@%:@ Cache variables. @%:@@%:@
7756 +@%:@@%:@ ---------------- @%:@@%:@
7759 + # The following way of writing the cache mishandles newlines in values,
7762 + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
7765 + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
7766 + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
7770 + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
7777 +@%:@@%:@ ----------------- @%:@@%:@
7778 +@%:@@%:@ Output variables. @%:@@%:@
7779 +@%:@@%:@ ----------------- @%:@@%:@
7782 + for ac_var in $ac_subst_vars
7784 + eval ac_val=$`echo $ac_var`
7785 + echo "$ac_var='"'"'$ac_val'"'"'"
7789 + if test -n "$ac_subst_files"; then
7791 +@%:@@%:@ ------------- @%:@@%:@
7792 +@%:@@%:@ Output files. @%:@@%:@
7793 +@%:@@%:@ ------------- @%:@@%:@
7796 + for ac_var in $ac_subst_files
7798 + eval ac_val=$`echo $ac_var`
7799 + echo "$ac_var='"'"'$ac_val'"'"'"
7804 + if test -s confdefs.h; then
7806 +@%:@@%:@ ----------- @%:@@%:@
7807 +@%:@@%:@ confdefs.h. @%:@@%:@
7808 +@%:@@%:@ ----------- @%:@@%:@
7811 + sed "/^$/d" confdefs.h | sort
7814 + test "$ac_signal" != 0 &&
7815 + echo "$as_me: caught signal $ac_signal"
7816 + echo "$as_me: exit $exit_status"
7818 + rm -f core core.* *.core &&
7819 + rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
7822 +for ac_signal in 1 2 13 15; do
7823 + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
7827 +# confdefs.h avoids OS command line length limits that DEFS can exceed.
7828 +rm -rf conftest* confdefs.h
7829 +# AIX cpp loses on an empty file, so make sure it contains at least a newline.
7832 +# Predefined preprocessor variables.
7834 +cat >>confdefs.h <<_ACEOF
7835 +@%:@define PACKAGE_NAME "$PACKAGE_NAME"
7839 +cat >>confdefs.h <<_ACEOF
7840 +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
7844 +cat >>confdefs.h <<_ACEOF
7845 +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
7849 +cat >>confdefs.h <<_ACEOF
7850 +@%:@define PACKAGE_STRING "$PACKAGE_STRING"
7854 +cat >>confdefs.h <<_ACEOF
7855 +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
7859 +# Let the site file select an alternate cache file if it wants to.
7860 +# Prefer explicitly selected file to automatically selected ones.
7861 +if test -z "$CONFIG_SITE"; then
7862 + if test "x$prefix" != xNONE; then
7863 + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
7865 + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
7868 +for ac_site_file in $CONFIG_SITE; do
7869 + if test -r "$ac_site_file"; then
7870 + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
7871 +echo "$as_me: loading site script $ac_site_file" >&6;}
7872 + sed 's/^/| /' "$ac_site_file" >&5
7877 +if test -r "$cache_file"; then
7878 + # Some versions of bash will fail to source /dev/null (special
7879 + # files actually), so we avoid doing that.
7880 + if test -f "$cache_file"; then
7881 + { echo "$as_me:$LINENO: loading cache $cache_file" >&5
7882 +echo "$as_me: loading cache $cache_file" >&6;}
7883 + case $cache_file in
7884 + [\\/]* | ?:[\\/]* ) . $cache_file;;
7885 + *) . ./$cache_file;;
7889 + { echo "$as_me:$LINENO: creating cache $cache_file" >&5
7890 +echo "$as_me: creating cache $cache_file" >&6;}
7894 +# Check that the precious variables saved in the cache have kept the same
7896 +ac_cache_corrupted=false
7897 +for ac_var in `(set) 2>&1 |
7898 + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
7899 + eval ac_old_set=\$ac_cv_env_${ac_var}_set
7900 + eval ac_new_set=\$ac_env_${ac_var}_set
7901 + eval ac_old_val="\$ac_cv_env_${ac_var}_value"
7902 + eval ac_new_val="\$ac_env_${ac_var}_value"
7903 + case $ac_old_set,$ac_new_set in
7905 + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
7906 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
7907 + ac_cache_corrupted=: ;;
7909 + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
7910 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
7911 + ac_cache_corrupted=: ;;
7914 + if test "x$ac_old_val" != "x$ac_new_val"; then
7915 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
7916 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
7917 + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
7918 +echo "$as_me: former value: $ac_old_val" >&2;}
7919 + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
7920 +echo "$as_me: current value: $ac_new_val" >&2;}
7921 + ac_cache_corrupted=:
7924 + # Pass precious variables to config.status.
7925 + if test "$ac_new_set" = set; then
7926 + case $ac_new_val in
7927 + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
7928 + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
7929 + *) ac_arg=$ac_var=$ac_new_val ;;
7931 + case " $ac_configure_args " in
7932 + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
7933 + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
7937 +if $ac_cache_corrupted; then
7938 + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
7939 +echo "$as_me: error: changes in the environment can compromise the build" >&2;}
7940 + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
7941 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
7942 + { (exit 1); exit 1; }; }
7946 +ac_cpp='$CPP $CPPFLAGS'
7947 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7948 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7949 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
7970 +# This works around the fact that libtool configuration may change LD
7971 +# for this particular configuration, but some shells, instead of
7972 +# keeping the changes in LD private, export them just because LD is
7974 +ORIGINAL_LD_FOR_MULTILIBS=$LD
7977 +for ac_dir in . $srcdir/.; do
7978 + if test -f $ac_dir/install-sh; then
7979 + ac_aux_dir=$ac_dir
7980 + ac_install_sh="$ac_aux_dir/install-sh -c"
7982 + elif test -f $ac_dir/install.sh; then
7983 + ac_aux_dir=$ac_dir
7984 + ac_install_sh="$ac_aux_dir/install.sh -c"
7986 + elif test -f $ac_dir/shtool; then
7987 + ac_aux_dir=$ac_dir
7988 + ac_install_sh="$ac_aux_dir/shtool install -c"
7992 +if test -z "$ac_aux_dir"; then
7993 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in . $srcdir/." >&5
7994 +echo "$as_me: error: cannot find install-sh or install.sh in . $srcdir/." >&2;}
7995 + { (exit 1); exit 1; }; }
7997 +ac_config_guess="$SHELL $ac_aux_dir/config.guess"
7998 +ac_config_sub="$SHELL $ac_aux_dir/config.sub"
7999 +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
8002 +# Make sure we can run config.sub.
8003 +$ac_config_sub sun4 >/dev/null 2>&1 ||
8004 + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
8005 +echo "$as_me: error: cannot run $ac_config_sub" >&2;}
8006 + { (exit 1); exit 1; }; }
8008 +echo "$as_me:$LINENO: checking build system type" >&5
8009 +echo $ECHO_N "checking build system type... $ECHO_C" >&6
8010 +if test "${ac_cv_build+set}" = set; then
8011 + echo $ECHO_N "(cached) $ECHO_C" >&6
8013 + ac_cv_build_alias=$build_alias
8014 +test -z "$ac_cv_build_alias" &&
8015 + ac_cv_build_alias=`$ac_config_guess`
8016 +test -z "$ac_cv_build_alias" &&
8017 + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
8018 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
8019 + { (exit 1); exit 1; }; }
8020 +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
8021 + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
8022 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
8023 + { (exit 1); exit 1; }; }
8026 +echo "$as_me:$LINENO: result: $ac_cv_build" >&5
8027 +echo "${ECHO_T}$ac_cv_build" >&6
8029 +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
8030 +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
8031 +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
8034 +echo "$as_me:$LINENO: checking host system type" >&5
8035 +echo $ECHO_N "checking host system type... $ECHO_C" >&6
8036 +if test "${ac_cv_host+set}" = set; then
8037 + echo $ECHO_N "(cached) $ECHO_C" >&6
8039 + ac_cv_host_alias=$host_alias
8040 +test -z "$ac_cv_host_alias" &&
8041 + ac_cv_host_alias=$ac_cv_build_alias
8042 +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
8043 + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
8044 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
8045 + { (exit 1); exit 1; }; }
8048 +echo "$as_me:$LINENO: result: $ac_cv_host" >&5
8049 +echo "${ECHO_T}$ac_cv_host" >&6
8051 +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
8052 +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
8053 +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
8056 +am__api_version="1.6"
8057 +# Find a good install program. We prefer a C program (faster),
8058 +# so one script is as good as another. But avoid the broken or
8059 +# incompatible versions:
8060 +# SysV /etc/install, /usr/sbin/install
8061 +# SunOS /usr/etc/install
8062 +# IRIX /sbin/install
8064 +# AmigaOS /C/install, which installs bootblocks on floppy discs
8065 +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
8066 +# AFS /usr/afsws/bin/install, which mishandles nonexistent args
8067 +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
8068 +# ./install, which can be erroneously created by make from ./install.sh.
8069 +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
8070 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
8071 +if test -z "$INSTALL"; then
8072 +if test "${ac_cv_path_install+set}" = set; then
8073 + echo $ECHO_N "(cached) $ECHO_C" >&6
8075 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8076 +for as_dir in $PATH
8079 + test -z "$as_dir" && as_dir=.
8080 + # Account for people who put trailing slashes in PATH elements.
8082 + ./ | .// | /cC/* | \
8083 + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
8086 + # OSF1 and SCO ODT 3.0 have their own names for install.
8087 + # Don't use installbsd from OSF since it installs stuff as root
8089 + for ac_prog in ginstall scoinst install; do
8090 + for ac_exec_ext in '' $ac_executable_extensions; do
8091 + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
8092 + if test $ac_prog = install &&
8093 + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
8094 + # AIX install. It has an incompatible calling convention.
8096 + elif test $ac_prog = install &&
8097 + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
8098 + # program-specific install script used by HP pwplus--don't use.
8101 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
8113 + if test "${ac_cv_path_install+set}" = set; then
8114 + INSTALL=$ac_cv_path_install
8116 + # As a last resort, use the slow shell script. We don't cache a
8117 + # path for INSTALL within a source directory, because that will
8118 + # break other packages using the cache if that directory is
8119 + # removed, or if the path is relative.
8120 + INSTALL=$ac_install_sh
8123 +echo "$as_me:$LINENO: result: $INSTALL" >&5
8124 +echo "${ECHO_T}$INSTALL" >&6
8126 +# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
8127 +# It thinks the first close brace ends the variable substitution.
8128 +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
8130 +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
8132 +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
8134 +echo "$as_me:$LINENO: checking whether build environment is sane" >&5
8135 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
8138 +echo timestamp > conftest.file
8139 +# Do `set' in a subshell so we don't clobber the current shell's
8140 +# arguments. Must try -L first in case configure is actually a
8141 +# symlink; some systems play weird games with the mod time of symlinks
8142 +# (eg FreeBSD returns the mod time of the symlink's containing
8145 + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
8146 + if test "$*" = "X"; then
8148 + set X `ls -t $srcdir/configure conftest.file`
8150 + rm -f conftest.file
8151 + if test "$*" != "X $srcdir/configure conftest.file" \
8152 + && test "$*" != "X conftest.file $srcdir/configure"; then
8154 + # If neither matched, then we have a broken ls. This can happen
8155 + # if, for instance, CONFIG_SHELL is bash and it inherits a
8156 + # broken ls alias from the environment. This has actually
8157 + # happened. Such a system could not be considered "sane".
8158 + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
8159 +alias in your environment" >&5
8160 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
8161 +alias in your environment" >&2;}
8162 + { (exit 1); exit 1; }; }
8165 + test "$2" = conftest.file
8171 + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
8172 +Check your system clock" >&5
8173 +echo "$as_me: error: newly created file is older than distributed files!
8174 +Check your system clock" >&2;}
8175 + { (exit 1); exit 1; }; }
8177 +echo "$as_me:$LINENO: result: yes" >&5
8178 +echo "${ECHO_T}yes" >&6
8179 +test "$program_prefix" != NONE &&
8180 + program_transform_name="s,^,$program_prefix,;$program_transform_name"
8181 +# Use a double $ so make ignores it.
8182 +test "$program_suffix" != NONE &&
8183 + program_transform_name="s,\$,$program_suffix,;$program_transform_name"
8184 +# Double any \ or $. echo might interpret backslashes.
8185 +# By default was `s,x,x', remove it if useless.
8186 +cat <<\_ACEOF >conftest.sed
8187 +s/[\\$]/&&/g;s/;s,x,x,$//
8189 +program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
8193 +# expand $ac_aux_dir to an absolute path
8194 +am_aux_dir=`cd $ac_aux_dir && pwd`
8196 +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
8197 +# Use eval to expand $SHELL
8198 +if eval "$MISSING --run true"; then
8199 + am_missing_run="$MISSING --run "
8202 + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
8203 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
8206 +for ac_prog in gawk mawk nawk awk
8208 + # Extract the first word of "$ac_prog", so it can be a program name with args.
8209 +set dummy $ac_prog; ac_word=$2
8210 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8211 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8212 +if test "${ac_cv_prog_AWK+set}" = set; then
8213 + echo $ECHO_N "(cached) $ECHO_C" >&6
8215 + if test -n "$AWK"; then
8216 + ac_cv_prog_AWK="$AWK" # Let the user override the test.
8218 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8219 +for as_dir in $PATH
8222 + test -z "$as_dir" && as_dir=.
8223 + for ac_exec_ext in '' $ac_executable_extensions; do
8224 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8225 + ac_cv_prog_AWK="$ac_prog"
8226 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8234 +AWK=$ac_cv_prog_AWK
8235 +if test -n "$AWK"; then
8236 + echo "$as_me:$LINENO: result: $AWK" >&5
8237 +echo "${ECHO_T}$AWK" >&6
8239 + echo "$as_me:$LINENO: result: no" >&5
8240 +echo "${ECHO_T}no" >&6
8243 + test -n "$AWK" && break
8246 +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \${MAKE}" >&5
8247 +echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
8248 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
8249 +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
8250 + echo $ECHO_N "(cached) $ECHO_C" >&6
8252 + cat >conftest.make <<\_ACEOF
8254 + @echo 'ac_maketemp="${MAKE}"'
8256 +# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
8257 +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
8258 +if test -n "$ac_maketemp"; then
8259 + eval ac_cv_prog_make_${ac_make}_set=yes
8261 + eval ac_cv_prog_make_${ac_make}_set=no
8263 +rm -f conftest.make
8265 +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
8266 + echo "$as_me:$LINENO: result: yes" >&5
8267 +echo "${ECHO_T}yes" >&6
8270 + echo "$as_me:$LINENO: result: no" >&5
8271 +echo "${ECHO_T}no" >&6
8272 + SET_MAKE="MAKE=${MAKE-make}"
8276 +# Check whether --enable-multilib or --disable-multilib was given.
8277 +if test "${enable_multilib+set}" = set; then
8278 + enableval="$enable_multilib"
8279 + case "${enableval}" in
8280 + yes) multilib=yes ;;
8281 + no) multilib=no ;;
8282 + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for multilib option" >&5
8283 +echo "$as_me: error: bad value ${enableval} for multilib option" >&2;}
8284 + { (exit 1); exit 1; }; } ;;
8290 +if test "${srcdir}" = "."; then
8291 + if test "${with_target_subdir}" != "." -a -n "${with_target_subdir}"; then
8292 + gc_basedir="${srcdir}/${with_multisrctop}../."
8294 + gc_basedir="${srcdir}/${with_multisrctop}."
8297 + gc_basedir="${srcdir}/."
8301 +for ac_dir in $gc_basedir/.. $srcdir/$gc_basedir/..; do
8302 + if test -f $ac_dir/install-sh; then
8303 + ac_aux_dir=$ac_dir
8304 + ac_install_sh="$ac_aux_dir/install-sh -c"
8306 + elif test -f $ac_dir/install.sh; then
8307 + ac_aux_dir=$ac_dir
8308 + ac_install_sh="$ac_aux_dir/install.sh -c"
8310 + elif test -f $ac_dir/shtool; then
8311 + ac_aux_dir=$ac_dir
8312 + ac_install_sh="$ac_aux_dir/shtool install -c"
8316 +if test -z "$ac_aux_dir"; then
8317 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $gc_basedir/.. $srcdir/$gc_basedir/.." >&5
8318 +echo "$as_me: error: cannot find install-sh or install.sh in $gc_basedir/.. $srcdir/$gc_basedir/.." >&2;}
8319 + { (exit 1); exit 1; }; }
8321 +ac_config_guess="$SHELL $ac_aux_dir/config.guess"
8322 +ac_config_sub="$SHELL $ac_aux_dir/config.sub"
8323 +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
8326 + # This overrides the previous occurrence for automake, but not for
8327 + # autoconf, which is exactly what we want.
8329 +for ac_dir in .. $srcdir/..; do
8330 + if test -f $ac_dir/install-sh; then
8331 + ac_aux_dir=$ac_dir
8332 + ac_install_sh="$ac_aux_dir/install-sh -c"
8334 + elif test -f $ac_dir/install.sh; then
8335 + ac_aux_dir=$ac_dir
8336 + ac_install_sh="$ac_aux_dir/install.sh -c"
8338 + elif test -f $ac_dir/shtool; then
8339 + ac_aux_dir=$ac_dir
8340 + ac_install_sh="$ac_aux_dir/shtool install -c"
8344 +if test -z "$ac_aux_dir"; then
8345 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in .. $srcdir/.." >&5
8346 +echo "$as_me: error: cannot find install-sh or install.sh in .. $srcdir/.." >&2;}
8347 + { (exit 1); exit 1; }; }
8349 +ac_config_guess="$SHELL $ac_aux_dir/config.guess"
8350 +ac_config_sub="$SHELL $ac_aux_dir/config.sub"
8351 +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
8355 +echo "$as_me:$LINENO: checking target system type" >&5
8356 +echo $ECHO_N "checking target system type... $ECHO_C" >&6
8357 +if test "${ac_cv_target+set}" = set; then
8358 + echo $ECHO_N "(cached) $ECHO_C" >&6
8360 + ac_cv_target_alias=$target_alias
8361 +test "x$ac_cv_target_alias" = "x" &&
8362 + ac_cv_target_alias=$ac_cv_host_alias
8363 +ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
8364 + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
8365 +echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
8366 + { (exit 1); exit 1; }; }
8369 +echo "$as_me:$LINENO: result: $ac_cv_target" >&5
8370 +echo "${ECHO_T}$ac_cv_target" >&6
8371 +target=$ac_cv_target
8372 +target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
8373 +target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
8374 +target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
8377 +# The aliases save the names the user supplied, while $host etc.
8378 +# will get canonicalized.
8379 +test -n "$target_alias" &&
8380 + test "$program_prefix$program_suffix$program_transform_name" = \
8382 + program_prefix=${target_alias}-
8384 +# This works around an automake problem.
8385 +mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs"
8388 + # test to see if srcdir already configured
8389 +if test "`cd $srcdir && pwd`" != "`pwd`" &&
8390 + test -f $srcdir/config.status; then
8391 + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
8392 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
8393 + { (exit 1); exit 1; }; }
8396 +# Define the identity of the package.
8401 +# Some tools Automake needs.
8403 +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
8406 +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
8409 +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
8412 +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
8415 +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
8418 +AMTAR=${AMTAR-"${am_missing_run}tar"}
8420 +install_sh=${install_sh-"$am_aux_dir/install-sh"}
8422 +# Installed binaries are usually stripped using `strip' when the user
8423 +# run `make install-strip'. However `strip' might not be the right
8424 +# tool to use in cross-compilation environments, therefore Automake
8425 +# will honor the `STRIP' environment variable to overrule this program.
8426 +if test "$cross_compiling" != no; then
8427 + if test -n "$ac_tool_prefix"; then
8428 + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
8429 +set dummy ${ac_tool_prefix}strip; ac_word=$2
8430 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8431 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8432 +if test "${ac_cv_prog_STRIP+set}" = set; then
8433 + echo $ECHO_N "(cached) $ECHO_C" >&6
8435 + if test -n "$STRIP"; then
8436 + ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
8438 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8439 +for as_dir in $PATH
8442 + test -z "$as_dir" && as_dir=.
8443 + for ac_exec_ext in '' $ac_executable_extensions; do
8444 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8445 + ac_cv_prog_STRIP="${ac_tool_prefix}strip"
8446 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8454 +STRIP=$ac_cv_prog_STRIP
8455 +if test -n "$STRIP"; then
8456 + echo "$as_me:$LINENO: result: $STRIP" >&5
8457 +echo "${ECHO_T}$STRIP" >&6
8459 + echo "$as_me:$LINENO: result: no" >&5
8460 +echo "${ECHO_T}no" >&6
8464 +if test -z "$ac_cv_prog_STRIP"; then
8465 + ac_ct_STRIP=$STRIP
8466 + # Extract the first word of "strip", so it can be a program name with args.
8467 +set dummy strip; ac_word=$2
8468 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8469 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8470 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
8471 + echo $ECHO_N "(cached) $ECHO_C" >&6
8473 + if test -n "$ac_ct_STRIP"; then
8474 + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
8476 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8477 +for as_dir in $PATH
8480 + test -z "$as_dir" && as_dir=.
8481 + for ac_exec_ext in '' $ac_executable_extensions; do
8482 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8483 + ac_cv_prog_ac_ct_STRIP="strip"
8484 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8490 + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
8493 +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
8494 +if test -n "$ac_ct_STRIP"; then
8495 + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
8496 +echo "${ECHO_T}$ac_ct_STRIP" >&6
8498 + echo "$as_me:$LINENO: result: no" >&5
8499 +echo "${ECHO_T}no" >&6
8502 + STRIP=$ac_ct_STRIP
8504 + STRIP="$ac_cv_prog_STRIP"
8508 +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
8510 +# We need awk for the "check" target. The system "awk" is bad on
8516 +# AC_CHECK_TOOL does AC_REQUIRE (AC_CANONICAL_BUILD). If we don't
8517 +# run it explicitly here, it will be run implicitly before
8518 +# NEWLIB_CONFIGURE, which doesn't work because that means that it will
8519 +# be run before AC_CANONICAL_HOST.
8522 +if test -n "$ac_tool_prefix"; then
8523 + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
8524 +set dummy ${ac_tool_prefix}as; ac_word=$2
8525 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8526 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8527 +if test "${ac_cv_prog_AS+set}" = set; then
8528 + echo $ECHO_N "(cached) $ECHO_C" >&6
8530 + if test -n "$AS"; then
8531 + ac_cv_prog_AS="$AS" # Let the user override the test.
8533 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8534 +for as_dir in $PATH
8537 + test -z "$as_dir" && as_dir=.
8538 + for ac_exec_ext in '' $ac_executable_extensions; do
8539 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8540 + ac_cv_prog_AS="${ac_tool_prefix}as"
8541 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8550 +if test -n "$AS"; then
8551 + echo "$as_me:$LINENO: result: $AS" >&5
8552 +echo "${ECHO_T}$AS" >&6
8554 + echo "$as_me:$LINENO: result: no" >&5
8555 +echo "${ECHO_T}no" >&6
8559 +if test -z "$ac_cv_prog_AS"; then
8561 + # Extract the first word of "as", so it can be a program name with args.
8562 +set dummy as; ac_word=$2
8563 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8564 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8565 +if test "${ac_cv_prog_ac_ct_AS+set}" = set; then
8566 + echo $ECHO_N "(cached) $ECHO_C" >&6
8568 + if test -n "$ac_ct_AS"; then
8569 + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
8571 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8572 +for as_dir in $PATH
8575 + test -z "$as_dir" && as_dir=.
8576 + for ac_exec_ext in '' $ac_executable_extensions; do
8577 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8578 + ac_cv_prog_ac_ct_AS="as"
8579 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8587 +ac_ct_AS=$ac_cv_prog_ac_ct_AS
8588 +if test -n "$ac_ct_AS"; then
8589 + echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
8590 +echo "${ECHO_T}$ac_ct_AS" >&6
8592 + echo "$as_me:$LINENO: result: no" >&5
8593 +echo "${ECHO_T}no" >&6
8598 + AS="$ac_cv_prog_AS"
8601 +if test -n "$ac_tool_prefix"; then
8602 + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
8603 +set dummy ${ac_tool_prefix}ar; ac_word=$2
8604 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8605 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8606 +if test "${ac_cv_prog_AR+set}" = set; then
8607 + echo $ECHO_N "(cached) $ECHO_C" >&6
8609 + if test -n "$AR"; then
8610 + ac_cv_prog_AR="$AR" # Let the user override the test.
8612 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8613 +for as_dir in $PATH
8616 + test -z "$as_dir" && as_dir=.
8617 + for ac_exec_ext in '' $ac_executable_extensions; do
8618 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8619 + ac_cv_prog_AR="${ac_tool_prefix}ar"
8620 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8629 +if test -n "$AR"; then
8630 + echo "$as_me:$LINENO: result: $AR" >&5
8631 +echo "${ECHO_T}$AR" >&6
8633 + echo "$as_me:$LINENO: result: no" >&5
8634 +echo "${ECHO_T}no" >&6
8638 +if test -z "$ac_cv_prog_AR"; then
8640 + # Extract the first word of "ar", so it can be a program name with args.
8641 +set dummy ar; ac_word=$2
8642 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8643 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8644 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
8645 + echo $ECHO_N "(cached) $ECHO_C" >&6
8647 + if test -n "$ac_ct_AR"; then
8648 + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
8650 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8651 +for as_dir in $PATH
8654 + test -z "$as_dir" && as_dir=.
8655 + for ac_exec_ext in '' $ac_executable_extensions; do
8656 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8657 + ac_cv_prog_ac_ct_AR="ar"
8658 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8666 +ac_ct_AR=$ac_cv_prog_ac_ct_AR
8667 +if test -n "$ac_ct_AR"; then
8668 + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
8669 +echo "${ECHO_T}$ac_ct_AR" >&6
8671 + echo "$as_me:$LINENO: result: no" >&5
8672 +echo "${ECHO_T}no" >&6
8677 + AR="$ac_cv_prog_AR"
8680 +if test -n "$ac_tool_prefix"; then
8681 + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
8682 +set dummy ${ac_tool_prefix}ranlib; ac_word=$2
8683 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8684 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8685 +if test "${ac_cv_prog_RANLIB+set}" = set; then
8686 + echo $ECHO_N "(cached) $ECHO_C" >&6
8688 + if test -n "$RANLIB"; then
8689 + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
8691 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8692 +for as_dir in $PATH
8695 + test -z "$as_dir" && as_dir=.
8696 + for ac_exec_ext in '' $ac_executable_extensions; do
8697 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8698 + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
8699 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8707 +RANLIB=$ac_cv_prog_RANLIB
8708 +if test -n "$RANLIB"; then
8709 + echo "$as_me:$LINENO: result: $RANLIB" >&5
8710 +echo "${ECHO_T}$RANLIB" >&6
8712 + echo "$as_me:$LINENO: result: no" >&5
8713 +echo "${ECHO_T}no" >&6
8717 +if test -z "$ac_cv_prog_RANLIB"; then
8718 + ac_ct_RANLIB=$RANLIB
8719 + # Extract the first word of "ranlib", so it can be a program name with args.
8720 +set dummy ranlib; ac_word=$2
8721 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8722 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8723 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
8724 + echo $ECHO_N "(cached) $ECHO_C" >&6
8726 + if test -n "$ac_ct_RANLIB"; then
8727 + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
8729 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8730 +for as_dir in $PATH
8733 + test -z "$as_dir" && as_dir=.
8734 + for ac_exec_ext in '' $ac_executable_extensions; do
8735 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8736 + ac_cv_prog_ac_ct_RANLIB="ranlib"
8737 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8743 + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
8746 +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
8747 +if test -n "$ac_ct_RANLIB"; then
8748 + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
8749 +echo "${ECHO_T}$ac_ct_RANLIB" >&6
8751 + echo "$as_me:$LINENO: result: no" >&5
8752 +echo "${ECHO_T}no" >&6
8755 + RANLIB=$ac_ct_RANLIB
8757 + RANLIB="$ac_cv_prog_RANLIB"
8761 +# Find a good install program. We prefer a C program (faster),
8762 +# so one script is as good as another. But avoid the broken or
8763 +# incompatible versions:
8764 +# SysV /etc/install, /usr/sbin/install
8765 +# SunOS /usr/etc/install
8766 +# IRIX /sbin/install
8768 +# AmigaOS /C/install, which installs bootblocks on floppy discs
8769 +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
8770 +# AFS /usr/afsws/bin/install, which mishandles nonexistent args
8771 +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
8772 +# ./install, which can be erroneously created by make from ./install.sh.
8773 +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
8774 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
8775 +if test -z "$INSTALL"; then
8776 +if test "${ac_cv_path_install+set}" = set; then
8777 + echo $ECHO_N "(cached) $ECHO_C" >&6
8779 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8780 +for as_dir in $PATH
8783 + test -z "$as_dir" && as_dir=.
8784 + # Account for people who put trailing slashes in PATH elements.
8786 + ./ | .// | /cC/* | \
8787 + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
8790 + # OSF1 and SCO ODT 3.0 have their own names for install.
8791 + # Don't use installbsd from OSF since it installs stuff as root
8793 + for ac_prog in ginstall scoinst install; do
8794 + for ac_exec_ext in '' $ac_executable_extensions; do
8795 + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
8796 + if test $ac_prog = install &&
8797 + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
8798 + # AIX install. It has an incompatible calling convention.
8800 + elif test $ac_prog = install &&
8801 + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
8802 + # program-specific install script used by HP pwplus--don't use.
8805 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
8817 + if test "${ac_cv_path_install+set}" = set; then
8818 + INSTALL=$ac_cv_path_install
8820 + # As a last resort, use the slow shell script. We don't cache a
8821 + # path for INSTALL within a source directory, because that will
8822 + # break other packages using the cache if that directory is
8823 + # removed, or if the path is relative.
8824 + INSTALL=$ac_install_sh
8827 +echo "$as_me:$LINENO: result: $INSTALL" >&5
8828 +echo "${ECHO_T}$INSTALL" >&6
8830 +# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
8831 +# It thinks the first close brace ends the variable substitution.
8832 +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
8834 +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
8836 +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
8839 +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
8840 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
8841 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
8842 +if test "${enable_maintainer_mode+set}" = set; then
8843 + enableval="$enable_maintainer_mode"
8844 + USE_MAINTAINER_MODE=$enableval
8846 + USE_MAINTAINER_MODE=no
8848 + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
8849 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
8852 +if test $USE_MAINTAINER_MODE = yes; then
8853 + MAINTAINER_MODE_TRUE=
8854 + MAINTAINER_MODE_FALSE='#'
8856 + MAINTAINER_MODE_TRUE='#'
8857 + MAINTAINER_MODE_FALSE=
8860 + MAINT=$MAINTAINER_MODE_TRUE
8864 +# We need AC_EXEEXT to keep automake happy in cygnus mode. However,
8865 +# at least currently, we never actually build a program, so we never
8866 +# need to use $(EXEEXT). Moreover, the test for EXEEXT normally
8867 +# fails, because we are probably configuring with a cross compiler
8868 +# which can't create executables. So we include AC_EXEEXT to keep
8869 +# automake happy, but we don't execute it, since we don't care about
8872 + # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
8873 + # to nothing, so nothing would remain between `then' and `fi' if it
8874 + # were not for the `:' below.
8879 +. ${srcdir}/configure.host
8881 +case ${gc_basedir} in
8882 +/* | A-Za-z:/\\*) gc_flagbasedir=${gc_basedir} ;;
8883 +*) gc_flagbasedir='$(top_builddir)/'${gc_basedir} ;;
8886 +gc_cflags="${gc_cflags} -I"'$(top_builddir)'"/./targ-include -I${gc_flagbasedir}/libc/include"
8889 + gc_cflags="${gc_cflags} -I${gc_flagbasedir}/../winsup/include"
8894 +GC_CFLAGS=${gc_cflags}
8898 +# Check whether --enable-shared or --disable-shared was given.
8899 +if test "${enable_shared+set}" = set; then
8900 + enableval="$enable_shared"
8901 + p=${PACKAGE-default}
8903 +yes) enable_shared=yes ;;
8904 +no) enable_shared=no ;;
8907 + # Look at the argument we got. We use all the common list separators.
8908 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
8909 + for pkg in $enableval; do
8910 + if test "X$pkg" = "X$p"; then
8914 + IFS="$ac_save_ifs"
8920 +# Check whether --enable-static or --disable-static was given.
8921 +if test "${enable_static+set}" = set; then
8922 + enableval="$enable_static"
8923 + p=${PACKAGE-default}
8925 +yes) enable_static=yes ;;
8926 +no) enable_static=no ;;
8929 + # Look at the argument we got. We use all the common list separators.
8930 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
8931 + for pkg in $enableval; do
8932 + if test "X$pkg" = "X$p"; then
8936 + IFS="$ac_save_ifs"
8942 +# Check whether --enable-fast-install or --disable-fast-install was given.
8943 +if test "${enable_fast_install+set}" = set; then
8944 + enableval="$enable_fast_install"
8945 + p=${PACKAGE-default}
8947 +yes) enable_fast_install=yes ;;
8948 +no) enable_fast_install=no ;;
8950 + enable_fast_install=no
8951 + # Look at the argument we got. We use all the common list separators.
8952 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
8953 + for pkg in $enableval; do
8954 + if test "X$pkg" = "X$p"; then
8955 + enable_fast_install=yes
8958 + IFS="$ac_save_ifs"
8962 + enable_fast_install=yes
8964 +rm -f .deps 2>/dev/null
8965 +mkdir .deps 2>/dev/null
8966 +if test -d .deps; then
8969 + # MS-DOS does not allow filenames that begin with a dot.
8972 +rmdir .deps 2>/dev/null
8975 + ac_config_commands="$ac_config_commands depfiles"
8978 +am_make=${MAKE-make}
8979 +cat > confinc << 'END'
8983 +# If we don't find an include directive, just comment out the code.
8984 +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
8985 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
8989 +# First try GNU make style include.
8990 +echo "include confinc" > confmf
8991 +# We grep out `Entering directory' and `Leaving directory'
8992 +# messages which can occur if `w' ends up in MAKEFLAGS.
8993 +# In particular we don't look at `^make:' because GNU make might
8994 +# be invoked under some other name (usually "gmake"), in which
8995 +# case it prints its new name instead of `make'.
8996 +if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then
8997 + am__include=include
9001 +# Now try BSD make style include.
9002 +if test "$am__include" = "#"; then
9003 + echo '.include "confinc"' > confmf
9004 + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
9005 + am__include=.include
9012 +echo "$as_me:$LINENO: result: $_am_result" >&5
9013 +echo "${ECHO_T}$_am_result" >&6
9014 +rm -f confinc confmf
9016 +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
9017 +if test "${enable_dependency_tracking+set}" = set; then
9018 + enableval="$enable_dependency_tracking"
9021 +if test "x$enable_dependency_tracking" != xno; then
9022 + am_depcomp="$ac_aux_dir/depcomp"
9023 + AMDEPBACKSLASH='\'
9027 +if test "x$enable_dependency_tracking" != xno; then
9038 +ac_cpp='$CPP $CPPFLAGS'
9039 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
9040 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
9041 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
9042 +if test -n "$ac_tool_prefix"; then
9043 + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
9044 +set dummy ${ac_tool_prefix}gcc; ac_word=$2
9045 +echo "$as_me:$LINENO: checking for $ac_word" >&5
9046 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
9047 +if test "${ac_cv_prog_CC+set}" = set; then
9048 + echo $ECHO_N "(cached) $ECHO_C" >&6
9050 + if test -n "$CC"; then
9051 + ac_cv_prog_CC="$CC" # Let the user override the test.
9053 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9054 +for as_dir in $PATH
9057 + test -z "$as_dir" && as_dir=.
9058 + for ac_exec_ext in '' $ac_executable_extensions; do
9059 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
9060 + ac_cv_prog_CC="${ac_tool_prefix}gcc"
9061 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9070 +if test -n "$CC"; then
9071 + echo "$as_me:$LINENO: result: $CC" >&5
9072 +echo "${ECHO_T}$CC" >&6
9074 + echo "$as_me:$LINENO: result: no" >&5
9075 +echo "${ECHO_T}no" >&6
9079 +if test -z "$ac_cv_prog_CC"; then
9081 + # Extract the first word of "gcc", so it can be a program name with args.
9082 +set dummy gcc; ac_word=$2
9083 +echo "$as_me:$LINENO: checking for $ac_word" >&5
9084 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
9085 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
9086 + echo $ECHO_N "(cached) $ECHO_C" >&6
9088 + if test -n "$ac_ct_CC"; then
9089 + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
9091 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9092 +for as_dir in $PATH
9095 + test -z "$as_dir" && as_dir=.
9096 + for ac_exec_ext in '' $ac_executable_extensions; do
9097 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
9098 + ac_cv_prog_ac_ct_CC="gcc"
9099 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9107 +ac_ct_CC=$ac_cv_prog_ac_ct_CC
9108 +if test -n "$ac_ct_CC"; then
9109 + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
9110 +echo "${ECHO_T}$ac_ct_CC" >&6
9112 + echo "$as_me:$LINENO: result: no" >&5
9113 +echo "${ECHO_T}no" >&6
9118 + CC="$ac_cv_prog_CC"
9121 +if test -z "$CC"; then
9122 + if test -n "$ac_tool_prefix"; then
9123 + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
9124 +set dummy ${ac_tool_prefix}cc; ac_word=$2
9125 +echo "$as_me:$LINENO: checking for $ac_word" >&5
9126 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
9127 +if test "${ac_cv_prog_CC+set}" = set; then
9128 + echo $ECHO_N "(cached) $ECHO_C" >&6
9130 + if test -n "$CC"; then
9131 + ac_cv_prog_CC="$CC" # Let the user override the test.
9133 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9134 +for as_dir in $PATH
9137 + test -z "$as_dir" && as_dir=.
9138 + for ac_exec_ext in '' $ac_executable_extensions; do
9139 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
9140 + ac_cv_prog_CC="${ac_tool_prefix}cc"
9141 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9150 +if test -n "$CC"; then
9151 + echo "$as_me:$LINENO: result: $CC" >&5
9152 +echo "${ECHO_T}$CC" >&6
9154 + echo "$as_me:$LINENO: result: no" >&5
9155 +echo "${ECHO_T}no" >&6
9159 +if test -z "$ac_cv_prog_CC"; then
9161 + # Extract the first word of "cc", so it can be a program name with args.
9162 +set dummy cc; ac_word=$2
9163 +echo "$as_me:$LINENO: checking for $ac_word" >&5
9164 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
9165 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
9166 + echo $ECHO_N "(cached) $ECHO_C" >&6
9168 + if test -n "$ac_ct_CC"; then
9169 + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
9171 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9172 +for as_dir in $PATH
9175 + test -z "$as_dir" && as_dir=.
9176 + for ac_exec_ext in '' $ac_executable_extensions; do
9177 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
9178 + ac_cv_prog_ac_ct_CC="cc"
9179 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9187 +ac_ct_CC=$ac_cv_prog_ac_ct_CC
9188 +if test -n "$ac_ct_CC"; then
9189 + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
9190 +echo "${ECHO_T}$ac_ct_CC" >&6
9192 + echo "$as_me:$LINENO: result: no" >&5
9193 +echo "${ECHO_T}no" >&6
9198 + CC="$ac_cv_prog_CC"
9202 +if test -z "$CC"; then
9203 + # Extract the first word of "cc", so it can be a program name with args.
9204 +set dummy cc; ac_word=$2
9205 +echo "$as_me:$LINENO: checking for $ac_word" >&5
9206 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
9207 +if test "${ac_cv_prog_CC+set}" = set; then
9208 + echo $ECHO_N "(cached) $ECHO_C" >&6
9210 + if test -n "$CC"; then
9211 + ac_cv_prog_CC="$CC" # Let the user override the test.
9213 + ac_prog_rejected=no
9214 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9215 +for as_dir in $PATH
9218 + test -z "$as_dir" && as_dir=.
9219 + for ac_exec_ext in '' $ac_executable_extensions; do
9220 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
9221 + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
9222 + ac_prog_rejected=yes
9225 + ac_cv_prog_CC="cc"
9226 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9232 +if test $ac_prog_rejected = yes; then
9233 + # We found a bogon in the path, so make sure we never use it.
9234 + set dummy $ac_cv_prog_CC
9236 + if test $@%:@ != 0; then
9237 + # We chose a different compiler from the bogus one.
9238 + # However, it has the same basename, so the bogon will be chosen
9239 + # first if we set CC to just the basename; use the full file name.
9241 + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
9247 +if test -n "$CC"; then
9248 + echo "$as_me:$LINENO: result: $CC" >&5
9249 +echo "${ECHO_T}$CC" >&6
9251 + echo "$as_me:$LINENO: result: no" >&5
9252 +echo "${ECHO_T}no" >&6
9256 +if test -z "$CC"; then
9257 + if test -n "$ac_tool_prefix"; then
9260 + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
9261 +set dummy $ac_tool_prefix$ac_prog; ac_word=$2
9262 +echo "$as_me:$LINENO: checking for $ac_word" >&5
9263 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
9264 +if test "${ac_cv_prog_CC+set}" = set; then
9265 + echo $ECHO_N "(cached) $ECHO_C" >&6
9267 + if test -n "$CC"; then
9268 + ac_cv_prog_CC="$CC" # Let the user override the test.
9270 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9271 +for as_dir in $PATH
9274 + test -z "$as_dir" && as_dir=.
9275 + for ac_exec_ext in '' $ac_executable_extensions; do
9276 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
9277 + ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
9278 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9287 +if test -n "$CC"; then
9288 + echo "$as_me:$LINENO: result: $CC" >&5
9289 +echo "${ECHO_T}$CC" >&6
9291 + echo "$as_me:$LINENO: result: no" >&5
9292 +echo "${ECHO_T}no" >&6
9295 + test -n "$CC" && break
9298 +if test -z "$CC"; then
9302 + # Extract the first word of "$ac_prog", so it can be a program name with args.
9303 +set dummy $ac_prog; ac_word=$2
9304 +echo "$as_me:$LINENO: checking for $ac_word" >&5
9305 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
9306 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
9307 + echo $ECHO_N "(cached) $ECHO_C" >&6
9309 + if test -n "$ac_ct_CC"; then
9310 + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
9312 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9313 +for as_dir in $PATH
9316 + test -z "$as_dir" && as_dir=.
9317 + for ac_exec_ext in '' $ac_executable_extensions; do
9318 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
9319 + ac_cv_prog_ac_ct_CC="$ac_prog"
9320 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9328 +ac_ct_CC=$ac_cv_prog_ac_ct_CC
9329 +if test -n "$ac_ct_CC"; then
9330 + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
9331 +echo "${ECHO_T}$ac_ct_CC" >&6
9333 + echo "$as_me:$LINENO: result: no" >&5
9334 +echo "${ECHO_T}no" >&6
9337 + test -n "$ac_ct_CC" && break
9346 +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5
9347 +echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;}
9348 + { (exit 1); exit 1; }; }
9350 +# Provide some information about the compiler.
9351 +echo "$as_me:$LINENO:" \
9352 + "checking for C compiler version" >&5
9353 +ac_compiler=`set X $ac_compile; echo $2`
9354 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
9355 + (eval $ac_compiler --version </dev/null >&5) 2>&5
9357 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9358 + (exit $ac_status); }
9359 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
9360 + (eval $ac_compiler -v </dev/null >&5) 2>&5
9362 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9363 + (exit $ac_status); }
9364 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
9365 + (eval $ac_compiler -V </dev/null >&5) 2>&5
9367 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9368 + (exit $ac_status); }
9370 +cat >conftest.$ac_ext <<_ACEOF
9371 +#line $LINENO "configure"
9372 +#include "confdefs.h"
9382 +ac_clean_files_save=$ac_clean_files
9383 +ac_clean_files="$ac_clean_files a.out a.exe"
9384 +# Try to create an executable without -o first, disregard a.out.
9385 +# It will help us diagnose broken compilers, and finding out an intuition
9387 +echo "$as_me:$LINENO: checking for C compiler default output" >&5
9388 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
9389 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
9390 +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
9391 + (eval $ac_link_default) 2>&5
9393 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9394 + (exit $ac_status); }; then
9395 + # Find the output, starting from the most likely. This scheme is
9396 +# not robust to junk in `.', hence go to wildcards (a.*) only as a last
9399 +# Be careful to initialize this variable, since it used to be cached.
9400 +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
9402 +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.*; do
9403 + test -f "$ac_file" || continue
9405 + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
9406 + a.out ) # We found the default executable, but exeext='' is most
9407 + # certainly right.
9409 + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
9410 + # FIXME: I believe we export ac_cv_exeext for Libtool --akim.
9411 + export ac_cv_exeext
9417 + echo "$as_me: failed program was:" >&5
9418 +cat conftest.$ac_ext >&5
9419 +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
9420 +check \`config.log' for details." >&5
9421 +echo "$as_me: error: C compiler cannot create executables
9422 +check \`config.log' for details." >&2;}
9423 + { (exit 77); exit 77; }; }
9426 +ac_exeext=$ac_cv_exeext
9427 +echo "$as_me:$LINENO: result: $ac_file" >&5
9428 +echo "${ECHO_T}$ac_file" >&6
9430 +# Check the compiler produces executables we can run. If not, either
9431 +# the compiler is broken, or we cross compile.
9432 +echo "$as_me:$LINENO: checking whether the C compiler works" >&5
9433 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
9434 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
9435 +# If not cross compiling, check that we can run a simple program.
9436 +if test "$cross_compiling" != yes; then
9437 + if { ac_try='./$ac_file'
9438 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9439 + (eval $ac_try) 2>&5
9441 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9442 + (exit $ac_status); }; }; then
9443 + cross_compiling=no
9445 + if test "$cross_compiling" = maybe; then
9446 + cross_compiling=yes
9448 + { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
9449 +If you meant to cross compile, use \`--host'." >&5
9450 +echo "$as_me: error: cannot run C compiled programs.
9451 +If you meant to cross compile, use \`--host'." >&2;}
9452 + { (exit 1); exit 1; }; }
9456 +echo "$as_me:$LINENO: result: yes" >&5
9457 +echo "${ECHO_T}yes" >&6
9459 +rm -f a.out a.exe conftest$ac_cv_exeext
9460 +ac_clean_files=$ac_clean_files_save
9461 +# Check the compiler produces executables we can run. If not, either
9462 +# the compiler is broken, or we cross compile.
9463 +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
9464 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
9465 +echo "$as_me:$LINENO: result: $cross_compiling" >&5
9466 +echo "${ECHO_T}$cross_compiling" >&6
9468 +echo "$as_me:$LINENO: checking for suffix of executables" >&5
9469 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
9470 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
9471 + (eval $ac_link) 2>&5
9473 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9474 + (exit $ac_status); }; then
9475 + # If both `conftest.exe' and `conftest' are `present' (well, observable)
9476 +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
9477 +# work properly (i.e., refer to `conftest.exe'), while it won't with
9479 +for ac_file in conftest.exe conftest conftest.*; do
9480 + test -f "$ac_file" || continue
9482 + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
9483 + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
9484 + export ac_cv_exeext
9490 + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5
9491 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;}
9492 + { (exit 1); exit 1; }; }
9495 +rm -f conftest$ac_cv_exeext
9496 +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
9497 +echo "${ECHO_T}$ac_cv_exeext" >&6
9499 +rm -f conftest.$ac_ext
9500 +EXEEXT=$ac_cv_exeext
9502 +echo "$as_me:$LINENO: checking for suffix of object files" >&5
9503 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
9504 +if test "${ac_cv_objext+set}" = set; then
9505 + echo $ECHO_N "(cached) $ECHO_C" >&6
9507 + cat >conftest.$ac_ext <<_ACEOF
9508 +#line $LINENO "configure"
9509 +#include "confdefs.h"
9519 +rm -f conftest.o conftest.obj
9520 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9521 + (eval $ac_compile) 2>&5
9523 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9524 + (exit $ac_status); }; then
9525 + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
9527 + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
9528 + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
9533 + echo "$as_me: failed program was:" >&5
9534 +cat conftest.$ac_ext >&5
9535 +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5
9536 +echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;}
9537 + { (exit 1); exit 1; }; }
9540 +rm -f conftest.$ac_cv_objext conftest.$ac_ext
9542 +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
9543 +echo "${ECHO_T}$ac_cv_objext" >&6
9544 +OBJEXT=$ac_cv_objext
9546 +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
9547 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
9548 +if test "${ac_cv_c_compiler_gnu+set}" = set; then
9549 + echo $ECHO_N "(cached) $ECHO_C" >&6
9551 + cat >conftest.$ac_ext <<_ACEOF
9552 +#line $LINENO "configure"
9553 +#include "confdefs.h"
9566 +rm -f conftest.$ac_objext
9567 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9568 + (eval $ac_compile) 2>&5
9570 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9571 + (exit $ac_status); } &&
9572 + { ac_try='test -s conftest.$ac_objext'
9573 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9574 + (eval $ac_try) 2>&5
9576 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9577 + (exit $ac_status); }; }; then
9578 + ac_compiler_gnu=yes
9580 + echo "$as_me: failed program was:" >&5
9581 +cat conftest.$ac_ext >&5
9584 +rm -f conftest.$ac_objext conftest.$ac_ext
9585 +ac_cv_c_compiler_gnu=$ac_compiler_gnu
9588 +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
9589 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
9590 +GCC=`test $ac_compiler_gnu = yes && echo yes`
9591 +ac_test_CFLAGS=${CFLAGS+set}
9592 +ac_save_CFLAGS=$CFLAGS
9594 +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
9595 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
9596 +if test "${ac_cv_prog_cc_g+set}" = set; then
9597 + echo $ECHO_N "(cached) $ECHO_C" >&6
9599 + cat >conftest.$ac_ext <<_ACEOF
9600 +#line $LINENO "configure"
9601 +#include "confdefs.h"
9611 +rm -f conftest.$ac_objext
9612 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9613 + (eval $ac_compile) 2>&5
9615 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9616 + (exit $ac_status); } &&
9617 + { ac_try='test -s conftest.$ac_objext'
9618 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9619 + (eval $ac_try) 2>&5
9621 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9622 + (exit $ac_status); }; }; then
9623 + ac_cv_prog_cc_g=yes
9625 + echo "$as_me: failed program was:" >&5
9626 +cat conftest.$ac_ext >&5
9629 +rm -f conftest.$ac_objext conftest.$ac_ext
9631 +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
9632 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
9633 +if test "$ac_test_CFLAGS" = set; then
9634 + CFLAGS=$ac_save_CFLAGS
9635 +elif test $ac_cv_prog_cc_g = yes; then
9636 + if test "$GCC" = yes; then
9642 + if test "$GCC" = yes; then
9648 +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
9649 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
9650 +if test "${ac_cv_prog_cc_stdc+set}" = set; then
9651 + echo $ECHO_N "(cached) $ECHO_C" >&6
9653 + ac_cv_prog_cc_stdc=no
9655 +cat >conftest.$ac_ext <<_ACEOF
9656 +#line $LINENO "configure"
9657 +#include "confdefs.h"
9658 +#include <stdarg.h>
9660 +#include <sys/types.h>
9661 +#include <sys/stat.h>
9662 +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
9663 +struct buf { int x; };
9664 +FILE * (*rcsopen) (struct buf *, struct stat *, int);
9665 +static char *e (p, i)
9671 +static char *f (char * (*g) (char **, int), char **p, ...)
9676 + s = g (p, va_arg (v,int));
9680 +int test (int i, double x);
9681 +struct s1 {int (*f) (int a);};
9682 +struct s2 {int (*f) (double a);};
9683 +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
9689 +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
9694 +# Don't try gcc -ansi; that turns off useful extensions and
9695 +# breaks some systems' header files.
9696 +# AIX -qlanglvl=ansi
9697 +# Ultrix and OSF/1 -std1
9698 +# HP-UX 10.20 and later -Ae
9699 +# HP-UX older versions -Aa -D_HPUX_SOURCE
9700 +# SVR4 -Xc -D__EXTENSIONS__
9701 +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
9703 + CC="$ac_save_CC $ac_arg"
9704 + rm -f conftest.$ac_objext
9705 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9706 + (eval $ac_compile) 2>&5
9708 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9709 + (exit $ac_status); } &&
9710 + { ac_try='test -s conftest.$ac_objext'
9711 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9712 + (eval $ac_try) 2>&5
9714 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9715 + (exit $ac_status); }; }; then
9716 + ac_cv_prog_cc_stdc=$ac_arg
9719 + echo "$as_me: failed program was:" >&5
9720 +cat conftest.$ac_ext >&5
9722 +rm -f conftest.$ac_objext
9724 +rm -f conftest.$ac_ext conftest.$ac_objext
9729 +case "x$ac_cv_prog_cc_stdc" in
9731 + echo "$as_me:$LINENO: result: none needed" >&5
9732 +echo "${ECHO_T}none needed" >&6 ;;
9734 + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
9735 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
9736 + CC="$CC $ac_cv_prog_cc_stdc" ;;
9739 +# Some people use a C++ compiler to compile C. Since we use `exit',
9740 +# in C++ we need to declare it. In case someone uses the same compiler
9741 +# for both compiling C and C++ we need to have the C++ compiler decide
9742 +# the declaration of exit, since it's the most demanding environment.
9743 +cat >conftest.$ac_ext <<_ACEOF
9744 +@%:@ifndef __cplusplus
9748 +rm -f conftest.$ac_objext
9749 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9750 + (eval $ac_compile) 2>&5
9752 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9753 + (exit $ac_status); } &&
9754 + { ac_try='test -s conftest.$ac_objext'
9755 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9756 + (eval $ac_try) 2>&5
9758 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9759 + (exit $ac_status); }; }; then
9760 + for ac_declaration in \
9762 + '#include <stdlib.h>' \
9763 + 'extern "C" void std::exit (int) throw (); using std::exit;' \
9764 + 'extern "C" void std::exit (int); using std::exit;' \
9765 + 'extern "C" void exit (int) throw ();' \
9766 + 'extern "C" void exit (int);' \
9767 + 'void exit (int);'
9769 + cat >conftest.$ac_ext <<_ACEOF
9770 +#line $LINENO "configure"
9771 +#include "confdefs.h"
9772 +@%:@include <stdlib.h>
9782 +rm -f conftest.$ac_objext
9783 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9784 + (eval $ac_compile) 2>&5
9786 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9787 + (exit $ac_status); } &&
9788 + { ac_try='test -s conftest.$ac_objext'
9789 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9790 + (eval $ac_try) 2>&5
9792 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9793 + (exit $ac_status); }; }; then
9796 + echo "$as_me: failed program was:" >&5
9797 +cat conftest.$ac_ext >&5
9800 +rm -f conftest.$ac_objext conftest.$ac_ext
9801 + cat >conftest.$ac_ext <<_ACEOF
9802 +#line $LINENO "configure"
9803 +#include "confdefs.h"
9813 +rm -f conftest.$ac_objext
9814 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9815 + (eval $ac_compile) 2>&5
9817 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9818 + (exit $ac_status); } &&
9819 + { ac_try='test -s conftest.$ac_objext'
9820 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9821 + (eval $ac_try) 2>&5
9823 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9824 + (exit $ac_status); }; }; then
9827 + echo "$as_me: failed program was:" >&5
9828 +cat conftest.$ac_ext >&5
9830 +rm -f conftest.$ac_objext conftest.$ac_ext
9833 +if test -n "$ac_declaration"; then
9834 + echo '#ifdef __cplusplus' >>confdefs.h
9835 + echo $ac_declaration >>confdefs.h
9836 + echo '#endif' >>confdefs.h
9840 + echo "$as_me: failed program was:" >&5
9841 +cat conftest.$ac_ext >&5
9843 +rm -f conftest.$ac_objext conftest.$ac_ext
9845 +ac_cpp='$CPP $CPPFLAGS'
9846 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
9847 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
9848 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
9850 +depcc="$CC" am_compiler_list=
9852 +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
9853 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
9854 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
9855 + echo $ECHO_N "(cached) $ECHO_C" >&6
9857 + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
9858 + # We make a subdir and do the tests there. Otherwise we can end up
9859 + # making bogus files that we don't know about and never remove. For
9860 + # instance it was reported that on HP-UX the gcc test will end up
9861 + # making a dummy file named `D' -- because `-MD' means `put the output
9863 + mkdir conftest.dir
9864 + # Copy depcomp to subdir because otherwise we won't find it if we're
9865 + # using a relative directory.
9866 + cp "$am_depcomp" conftest.dir
9869 + am_cv_CC_dependencies_compiler_type=none
9870 + if test "$am_compiler_list" = ""; then
9871 + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
9873 + for depmode in $am_compiler_list; do
9874 + # We need to recreate these files for each test, as the compiler may
9875 + # overwrite some of them when testing with obscure command lines.
9876 + # This happens at least with the AIX C compiler.
9877 + echo '#include "conftest.h"' > conftest.c
9878 + echo 'int i;' > conftest.h
9879 + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf
9883 + # after this tag, mechanisms are not by side-effect, so they'll
9884 + # only be used when explicitly requested
9885 + if test "x$enable_dependency_tracking" = xyes; then
9893 + # We check with `-c' and `-o' for the sake of the "dashmstdout"
9894 + # mode. It turns out that the SunPro C++ compiler does not properly
9895 + # handle `-M -o', and we need to detect this.
9896 + if depmode=$depmode \
9897 + source=conftest.c object=conftest.o \
9898 + depfile=conftest.Po tmpdepfile=conftest.TPo \
9899 + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 &&
9900 + grep conftest.h conftest.Po > /dev/null 2>&1 &&
9901 + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
9902 + am_cv_CC_dependencies_compiler_type=$depmode
9908 + rm -rf conftest.dir
9910 + am_cv_CC_dependencies_compiler_type=none
9914 +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
9915 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
9916 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
9919 +# Find the correct PATH separator. Usually this is `:', but
9920 +# DJGPP uses `;' like DOS.
9921 +if test "X${PATH_SEPARATOR+set}" != Xset; then
9922 + UNAME=${UNAME-`uname 2>/dev/null`}
9924 + *-DOS) lt_cv_sys_path_separator=';' ;;
9925 + *) lt_cv_sys_path_separator=':' ;;
9927 + PATH_SEPARATOR=$lt_cv_sys_path_separator
9931 +# Check whether --with-gnu-ld or --without-gnu-ld was given.
9932 +if test "${with_gnu_ld+set}" = set; then
9933 + withval="$with_gnu_ld"
9934 + test "$withval" = no || with_gnu_ld=yes
9939 +if test "$GCC" = yes; then
9940 + # Check if gcc -print-prog-name=ld gives a path.
9941 + echo "$as_me:$LINENO: checking for ld used by GCC" >&5
9942 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
9945 + # gcc leaves a trailing carriage return which upsets mingw
9946 + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
9948 + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
9951 + # Accept absolute paths.
9952 + [\\/]* | [A-Za-z]:[\\/]*)
9953 + re_direlt='/[^/][^/]*/\.\./'
9954 + # Canonicalize the path of ld
9955 + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
9956 + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
9957 + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
9959 + test -z "$LD" && LD="$ac_prog"
9962 + # If it fails, then pretend we aren't using GCC.
9966 + # If it is relative, then search for the first ld in PATH.
9967 + with_gnu_ld=unknown
9970 +elif test "$with_gnu_ld" = yes; then
9971 + echo "$as_me:$LINENO: checking for GNU ld" >&5
9972 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
9974 + echo "$as_me:$LINENO: checking for non-GNU ld" >&5
9975 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
9977 +if test "${lt_cv_path_LD+set}" = set; then
9978 + echo $ECHO_N "(cached) $ECHO_C" >&6
9980 + if test -z "$LD"; then
9981 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
9982 + for ac_dir in $PATH; do
9983 + test -z "$ac_dir" && ac_dir=.
9984 + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
9985 + lt_cv_path_LD="$ac_dir/$ac_prog"
9986 + # Check to see if the program is GNU ld. I'd rather use --version,
9987 + # but apparently some GNU ld's only accept -v.
9988 + # Break only if it was the GNU/non-GNU ld that we prefer.
9989 + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
9990 + test "$with_gnu_ld" != no && break
9992 + test "$with_gnu_ld" != yes && break
9996 + IFS="$ac_save_ifs"
9998 + lt_cv_path_LD="$LD" # Let the user override the test with a path.
10002 +LD="$lt_cv_path_LD"
10003 +if test -n "$LD"; then
10004 + echo "$as_me:$LINENO: result: $LD" >&5
10005 +echo "${ECHO_T}$LD" >&6
10007 + echo "$as_me:$LINENO: result: no" >&5
10008 +echo "${ECHO_T}no" >&6
10010 +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
10011 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
10012 + { (exit 1); exit 1; }; }
10013 +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
10014 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
10015 +if test "${lt_cv_prog_gnu_ld+set}" = set; then
10016 + echo $ECHO_N "(cached) $ECHO_C" >&6
10018 + # I'd rather use --version here, but apparently some GNU ld's only accept -v.
10019 +if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
10020 + lt_cv_prog_gnu_ld=yes
10022 + lt_cv_prog_gnu_ld=no
10025 +echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
10026 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
10027 +with_gnu_ld=$lt_cv_prog_gnu_ld
10030 +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
10031 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
10032 +if test "${lt_cv_ld_reload_flag+set}" = set; then
10033 + echo $ECHO_N "(cached) $ECHO_C" >&6
10035 + lt_cv_ld_reload_flag='-r'
10037 +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
10038 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
10039 +reload_flag=$lt_cv_ld_reload_flag
10040 +test -n "$reload_flag" && reload_flag=" $reload_flag"
10042 +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
10043 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
10044 +if test "${lt_cv_path_NM+set}" = set; then
10045 + echo $ECHO_N "(cached) $ECHO_C" >&6
10047 + if test -n "$NM"; then
10048 + # Let the user override the test.
10049 + lt_cv_path_NM="$NM"
10051 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
10052 + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
10053 + test -z "$ac_dir" && ac_dir=.
10054 + tmp_nm=$ac_dir/${ac_tool_prefix}nm
10055 + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
10056 + # Check to see if the nm accepts a BSD-compat flag.
10057 + # Adding the `sed 1q' prevents false positives on HP-UX, which says:
10058 + # nm: unknown option "B" ignored
10059 + # Tru64's nm complains that /dev/null is an invalid object file
10060 + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
10061 + lt_cv_path_NM="$tmp_nm -B"
10063 + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
10064 + lt_cv_path_NM="$tmp_nm -p"
10067 + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
10068 + continue # so that we can try to find one that supports BSD flags
10072 + IFS="$ac_save_ifs"
10073 + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
10077 +NM="$lt_cv_path_NM"
10078 +echo "$as_me:$LINENO: result: $NM" >&5
10079 +echo "${ECHO_T}$NM" >&6
10081 +echo "$as_me:$LINENO: checking whether ln -s works" >&5
10082 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
10084 +if test "$LN_S" = "ln -s"; then
10085 + echo "$as_me:$LINENO: result: yes" >&5
10086 +echo "${ECHO_T}yes" >&6
10088 + echo "$as_me:$LINENO: result: no, using $LN_S" >&5
10089 +echo "${ECHO_T}no, using $LN_S" >&6
10092 +echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
10093 +echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6
10094 +if test "${lt_cv_deplibs_check_method+set}" = set; then
10095 + echo $ECHO_N "(cached) $ECHO_C" >&6
10097 + lt_cv_file_magic_cmd='$MAGIC_CMD'
10098 +lt_cv_file_magic_test_file=
10099 +lt_cv_deplibs_check_method='unknown'
10100 +# Need to set the preceding variable on all platforms that support
10101 +# interlibrary dependencies.
10102 +# 'none' -- dependencies not supported.
10103 +# `unknown' -- same as none, but documents that we really don't know.
10104 +# 'pass_all' -- all dependencies passed with no checks.
10105 +# 'test_compile' -- check by making test program.
10106 +# 'file_magic [[regex]]' -- check by looking for files in library path
10107 +# which responds to the $file_magic_cmd with a given egrep regex.
10108 +# If you have `file' or equivalent on your system and you're not sure
10109 +# whether `pass_all' will *always* work, you probably want this one.
10113 + lt_cv_deplibs_check_method=pass_all
10117 + lt_cv_deplibs_check_method=pass_all
10121 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
10122 + lt_cv_file_magic_cmd='/usr/bin/file -L'
10123 + lt_cv_file_magic_test_file=/shlib/libc.so
10126 +cygwin* | mingw* | pw32*)
10127 + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
10128 + lt_cv_file_magic_cmd='$OBJDUMP -f'
10131 +darwin* | rhapsody*)
10132 + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
10133 + lt_cv_file_magic_cmd='/usr/bin/file -L'
10134 + case "$host_os" in
10135 + rhapsody* | darwin1.[012])
10136 + lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System'
10138 + *) # Darwin 1.3 on
10139 + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
10145 + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
10146 + case $host_cpu in
10148 + # Not sure whether the presence of OpenBSD here was a mistake.
10149 + # Let's accept both of them until this is cleared up.
10150 + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
10151 + lt_cv_file_magic_cmd=/usr/bin/file
10152 + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
10156 + lt_cv_deplibs_check_method=pass_all
10161 + lt_cv_deplibs_check_method=pass_all
10164 +hpux10.20*|hpux11*)
10165 + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
10166 + lt_cv_file_magic_cmd=/usr/bin/file
10167 + lt_cv_file_magic_test_file=/usr/lib/libc.sl
10173 + # this will be overridden with pass_all, but let us keep it just in case
10174 + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
10178 + *-32|*"-32 ") libmagic=32-bit;;
10179 + *-n32|*"-n32 ") libmagic=N32;;
10180 + *-64|*"-64 ") libmagic=64-bit;;
10181 + *) libmagic=never-match;;
10183 + # this will be overridden with pass_all, but let us keep it just in case
10184 + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"
10187 + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
10188 + lt_cv_deplibs_check_method=pass_all
10191 +# This must be Linux ELF.
10193 + case $host_cpu in
10194 + alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
10195 + lt_cv_deplibs_check_method=pass_all ;;
10197 + # glibc up to 2.1.1 does not perform some relocations on ARM
10198 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
10200 + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
10204 + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
10205 + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
10207 + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'
10212 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
10213 + lt_cv_file_magic_cmd=/usr/bin/file
10214 + lt_cv_file_magic_test_file=/usr/lib/libnls.so
10218 + lt_cv_file_magic_cmd=/usr/bin/file
10219 + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
10220 + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
10221 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
10223 + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
10227 +osf3* | osf4* | osf5*)
10228 + # this will be overridden with pass_all, but let us keep it just in case
10229 + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
10230 + lt_cv_file_magic_test_file=/shlib/libc.so
10231 + lt_cv_deplibs_check_method=pass_all
10235 + lt_cv_deplibs_check_method=pass_all
10239 + lt_cv_deplibs_check_method=pass_all
10240 + lt_cv_file_magic_test_file=/lib/libc.so
10243 +sysv5uw[78]* | sysv4*uw2*)
10244 + lt_cv_deplibs_check_method=pass_all
10247 +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
10248 + case $host_vendor in
10250 + 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]'
10251 + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
10254 + lt_cv_deplibs_check_method=pass_all
10257 + lt_cv_file_magic_cmd='/bin/file'
10258 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
10261 + lt_cv_file_magic_cmd='/bin/file'
10262 + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
10263 + lt_cv_file_magic_test_file=/lib/libc.so
10270 +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
10271 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
10272 +file_magic_cmd=$lt_cv_file_magic_cmd
10273 +deplibs_check_method=$lt_cv_deplibs_check_method
10281 +# Check for command to grab the raw symbol name followed by C symbol from nm.
10282 +echo "$as_me:$LINENO: checking command to parse $NM output" >&5
10283 +echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6
10284 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
10285 + echo $ECHO_N "(cached) $ECHO_C" >&6
10288 +# These are sane defaults that work on at least a few old systems.
10289 +# [They come from Ultrix. What could be older than Ultrix?!! ;)]
10291 +# Character class describing NM global symbol codes.
10292 +symcode='[BCDEGRST]'
10294 +# Regexp to match symbols that can be accessed directly from C.
10295 +sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
10297 +# Transform the above into a raw symbol and a C symbol.
10298 +symxfrm='\1 \2\3 \3'
10300 +# Transform an extracted symbol line into a proper C declaration
10301 +lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
10303 +# Transform an extracted symbol line into symbol name and symbol address
10304 +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'"
10306 +# Define system-specific variables.
10311 +cygwin* | mingw* | pw32*)
10312 + symcode='[ABCDGISTW]'
10314 +hpux*) # Its linker distinguishes data from code symbols
10315 + lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
10316 + 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'"
10319 + symcode='[BCDEGRST]'
10321 +solaris* | sysv5*)
10325 + symcode='[DFNSTU]'
10329 +# Handle CRLF in mingw tool chain
10333 + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
10337 +# If we're using GNU nm, then use its standard symbol codes.
10338 +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
10339 + symcode='[ABCDGISTW]'
10342 +# Try without a prefix undercore, then with it.
10343 +for ac_symprfx in "" "_"; do
10345 + # Write the raw and C identifiers.
10346 +lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
10348 + # Check to see that the pipe works correctly.
10351 + cat > conftest.$ac_ext <<EOF
10352 +#ifdef __cplusplus
10356 +void nm_test_func(){}
10357 +#ifdef __cplusplus
10360 +int main(){nm_test_var='a';nm_test_func();return(0);}
10363 + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
10364 + (eval $ac_compile) 2>&5
10366 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10367 + (exit $ac_status); }; then
10368 + # Now try to grab the symbols.
10369 + nlist=conftest.nm
10370 + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
10371 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
10373 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10374 + (exit $ac_status); } && test -s "$nlist"; then
10375 + # Try sorting and uniquifying the output.
10376 + if sort "$nlist" | uniq > "$nlist"T; then
10377 + mv -f "$nlist"T "$nlist"
10382 + # Make sure that we snagged all the symbols we need.
10383 + if egrep ' nm_test_var$' "$nlist" >/dev/null; then
10384 + if egrep ' nm_test_func$' "$nlist" >/dev/null; then
10385 + cat <<EOF > conftest.$ac_ext
10386 +#ifdef __cplusplus
10391 + # Now generate the symbol file.
10392 + eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
10394 + cat <<EOF >> conftest.$ac_ext
10395 +#if defined (__STDC__) && __STDC__
10396 +# define lt_ptr void *
10398 +# define lt_ptr char *
10402 +/* The mapping between symbol names and symbols. */
10404 + const char *name;
10407 +lt_preloaded_symbols[] =
10410 + sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
10411 + cat <<\EOF >> conftest.$ac_ext
10415 +#ifdef __cplusplus
10419 + # Now try linking the two files.
10420 + mv conftest.$ac_objext conftstm.$ac_objext
10421 + save_LIBS="$LIBS"
10422 + save_CFLAGS="$CFLAGS"
10423 + LIBS="conftstm.$ac_objext"
10424 + CFLAGS="$CFLAGS$no_builtin_flag"
10425 + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10426 + (eval $ac_link) 2>&5
10428 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10429 + (exit $ac_status); } && test -s conftest; then
10432 + LIBS="$save_LIBS"
10433 + CFLAGS="$save_CFLAGS"
10435 + echo "cannot find nm_test_func in $nlist" >&5
10438 + echo "cannot find nm_test_var in $nlist" >&5
10441 + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
10444 + echo "$progname: failed program was:" >&5
10445 + cat conftest.$ac_ext >&5
10447 + rm -f conftest* conftst*
10449 + # Do not use the global_symbol_pipe unless it works.
10450 + if test "$pipe_works" = yes; then
10453 + lt_cv_sys_global_symbol_pipe=
10459 +global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
10460 +if test -z "$lt_cv_sys_global_symbol_pipe"; then
10461 + global_symbol_to_cdecl=
10462 + global_symbol_to_c_name_address=
10464 + global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
10465 + global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
10467 +if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
10469 + echo "$as_me:$LINENO: result: failed" >&5
10470 +echo "${ECHO_T}failed" >&6
10472 + echo "$as_me:$LINENO: result: ok" >&5
10473 +echo "${ECHO_T}ok" >&6
10477 +ac_cpp='$CPP $CPPFLAGS'
10478 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
10479 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
10480 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
10481 +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
10482 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
10483 +# On Suns, sometimes $CPP names a directory.
10484 +if test -n "$CPP" && test -d "$CPP"; then
10487 +if test -z "$CPP"; then
10488 + if test "${ac_cv_prog_CPP+set}" = set; then
10489 + echo $ECHO_N "(cached) $ECHO_C" >&6
10491 + # Double quotes because CPP needs to be expanded
10492 + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
10494 + ac_preproc_ok=false
10495 +for ac_c_preproc_warn_flag in '' yes
10497 + # Use a header file that comes with gcc, so configuring glibc
10498 + # with a fresh cross-compiler works.
10499 + # On the NeXT, cc -E runs the code through the compiler's parser,
10500 + # not just through cpp. "Syntax error" is here to catch this case.
10501 + cat >conftest.$ac_ext <<_ACEOF
10502 +#line $LINENO "configure"
10503 +#include "confdefs.h"
10504 +@%:@include <assert.h>
10507 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
10508 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
10510 + grep -v '^ *+' conftest.er1 >conftest.err
10511 + rm -f conftest.er1
10512 + cat conftest.err >&5
10513 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10514 + (exit $ac_status); } >/dev/null; then
10515 + if test -s conftest.err; then
10516 + ac_cpp_err=$ac_c_preproc_warn_flag
10523 +if test -z "$ac_cpp_err"; then
10526 + echo "$as_me: failed program was:" >&5
10527 + cat conftest.$ac_ext >&5
10528 + # Broken: fails on valid input.
10531 +rm -f conftest.err conftest.$ac_ext
10533 + # OK, works on sane cases. Now check whether non-existent headers
10534 + # can be detected and how.
10535 + cat >conftest.$ac_ext <<_ACEOF
10536 +#line $LINENO "configure"
10537 +#include "confdefs.h"
10538 +@%:@include <ac_nonexistent.h>
10540 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
10541 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
10543 + grep -v '^ *+' conftest.er1 >conftest.err
10544 + rm -f conftest.er1
10545 + cat conftest.err >&5
10546 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10547 + (exit $ac_status); } >/dev/null; then
10548 + if test -s conftest.err; then
10549 + ac_cpp_err=$ac_c_preproc_warn_flag
10556 +if test -z "$ac_cpp_err"; then
10557 + # Broken: success on invalid input.
10560 + echo "$as_me: failed program was:" >&5
10561 + cat conftest.$ac_ext >&5
10562 + # Passes both tests.
10566 +rm -f conftest.err conftest.$ac_ext
10569 +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
10570 +rm -f conftest.err conftest.$ac_ext
10571 +if $ac_preproc_ok; then
10576 + ac_cv_prog_CPP=$CPP
10579 + CPP=$ac_cv_prog_CPP
10581 + ac_cv_prog_CPP=$CPP
10583 +echo "$as_me:$LINENO: result: $CPP" >&5
10584 +echo "${ECHO_T}$CPP" >&6
10585 +ac_preproc_ok=false
10586 +for ac_c_preproc_warn_flag in '' yes
10588 + # Use a header file that comes with gcc, so configuring glibc
10589 + # with a fresh cross-compiler works.
10590 + # On the NeXT, cc -E runs the code through the compiler's parser,
10591 + # not just through cpp. "Syntax error" is here to catch this case.
10592 + cat >conftest.$ac_ext <<_ACEOF
10593 +#line $LINENO "configure"
10594 +#include "confdefs.h"
10595 +@%:@include <assert.h>
10598 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
10599 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
10601 + grep -v '^ *+' conftest.er1 >conftest.err
10602 + rm -f conftest.er1
10603 + cat conftest.err >&5
10604 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10605 + (exit $ac_status); } >/dev/null; then
10606 + if test -s conftest.err; then
10607 + ac_cpp_err=$ac_c_preproc_warn_flag
10614 +if test -z "$ac_cpp_err"; then
10617 + echo "$as_me: failed program was:" >&5
10618 + cat conftest.$ac_ext >&5
10619 + # Broken: fails on valid input.
10622 +rm -f conftest.err conftest.$ac_ext
10624 + # OK, works on sane cases. Now check whether non-existent headers
10625 + # can be detected and how.
10626 + cat >conftest.$ac_ext <<_ACEOF
10627 +#line $LINENO "configure"
10628 +#include "confdefs.h"
10629 +@%:@include <ac_nonexistent.h>
10631 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
10632 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
10634 + grep -v '^ *+' conftest.er1 >conftest.err
10635 + rm -f conftest.er1
10636 + cat conftest.err >&5
10637 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10638 + (exit $ac_status); } >/dev/null; then
10639 + if test -s conftest.err; then
10640 + ac_cpp_err=$ac_c_preproc_warn_flag
10647 +if test -z "$ac_cpp_err"; then
10648 + # Broken: success on invalid input.
10651 + echo "$as_me: failed program was:" >&5
10652 + cat conftest.$ac_ext >&5
10653 + # Passes both tests.
10657 +rm -f conftest.err conftest.$ac_ext
10660 +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
10661 +rm -f conftest.err conftest.$ac_ext
10662 +if $ac_preproc_ok; then
10665 + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5
10666 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
10667 + { (exit 1); exit 1; }; }
10671 +ac_cpp='$CPP $CPPFLAGS'
10672 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
10673 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
10674 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
10677 +echo "$as_me:$LINENO: checking for egrep" >&5
10678 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6
10679 +if test "${ac_cv_prog_egrep+set}" = set; then
10680 + echo $ECHO_N "(cached) $ECHO_C" >&6
10682 + if echo a | (grep -E '(a|b)') >/dev/null 2>&1
10683 + then ac_cv_prog_egrep='grep -E'
10684 + else ac_cv_prog_egrep='egrep'
10687 +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
10688 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6
10689 + EGREP=$ac_cv_prog_egrep
10692 +echo "$as_me:$LINENO: checking for ANSI C header files" >&5
10693 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
10694 +if test "${ac_cv_header_stdc+set}" = set; then
10695 + echo $ECHO_N "(cached) $ECHO_C" >&6
10697 + cat >conftest.$ac_ext <<_ACEOF
10698 +#line $LINENO "configure"
10699 +#include "confdefs.h"
10700 +#include <stdlib.h>
10701 +#include <stdarg.h>
10702 +#include <string.h>
10703 +#include <float.h>
10706 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
10707 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
10709 + grep -v '^ *+' conftest.er1 >conftest.err
10710 + rm -f conftest.er1
10711 + cat conftest.err >&5
10712 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10713 + (exit $ac_status); } >/dev/null; then
10714 + if test -s conftest.err; then
10715 + ac_cpp_err=$ac_c_preproc_warn_flag
10722 +if test -z "$ac_cpp_err"; then
10723 + ac_cv_header_stdc=yes
10725 + echo "$as_me: failed program was:" >&5
10726 + cat conftest.$ac_ext >&5
10727 + ac_cv_header_stdc=no
10729 +rm -f conftest.err conftest.$ac_ext
10731 +if test $ac_cv_header_stdc = yes; then
10732 + # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
10733 + cat >conftest.$ac_ext <<_ACEOF
10734 +#line $LINENO "configure"
10735 +#include "confdefs.h"
10736 +#include <string.h>
10739 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
10740 + $EGREP "memchr" >/dev/null 2>&1; then
10743 + ac_cv_header_stdc=no
10749 +if test $ac_cv_header_stdc = yes; then
10750 + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
10751 + cat >conftest.$ac_ext <<_ACEOF
10752 +#line $LINENO "configure"
10753 +#include "confdefs.h"
10754 +#include <stdlib.h>
10757 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
10758 + $EGREP "free" >/dev/null 2>&1; then
10761 + ac_cv_header_stdc=no
10767 +if test $ac_cv_header_stdc = yes; then
10768 + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
10769 + if test "$cross_compiling" = yes; then
10772 + cat >conftest.$ac_ext <<_ACEOF
10773 +#line $LINENO "configure"
10774 +#include "confdefs.h"
10775 +#include <ctype.h>
10776 +#if ((' ' & 0x0FF) == 0x020)
10777 +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
10778 +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
10780 +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
10781 + || ('j' <= (c) && (c) <= 'r') \
10782 + || ('s' <= (c) && (c) <= 'z'))
10783 +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
10786 +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
10791 + for (i = 0; i < 256; i++)
10792 + if (XOR (islower (i), ISLOWER (i))
10793 + || toupper (i) != TOUPPER (i))
10798 +rm -f conftest$ac_exeext
10799 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10800 + (eval $ac_link) 2>&5
10802 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10803 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
10804 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10805 + (eval $ac_try) 2>&5
10807 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10808 + (exit $ac_status); }; }; then
10811 + echo "$as_me: program exited with status $ac_status" >&5
10812 +echo "$as_me: failed program was:" >&5
10813 +cat conftest.$ac_ext >&5
10814 +( exit $ac_status )
10815 +ac_cv_header_stdc=no
10817 +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
10821 +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
10822 +echo "${ECHO_T}$ac_cv_header_stdc" >&6
10823 +if test $ac_cv_header_stdc = yes; then
10825 +cat >>confdefs.h <<\_ACEOF
10826 +@%:@define STDC_HEADERS 1
10831 +# On IRIX 5.3, sys/types and inttypes.h are conflicting.
10841 +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
10842 + inttypes.h stdint.h unistd.h
10844 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
10845 +echo "$as_me:$LINENO: checking for $ac_header" >&5
10846 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
10847 +if eval "test \"\${$as_ac_Header+set}\" = set"; then
10848 + echo $ECHO_N "(cached) $ECHO_C" >&6
10850 + cat >conftest.$ac_ext <<_ACEOF
10851 +#line $LINENO "configure"
10852 +#include "confdefs.h"
10853 +$ac_includes_default
10855 +@%:@include <$ac_header>
10857 +rm -f conftest.$ac_objext
10858 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
10859 + (eval $ac_compile) 2>&5
10861 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10862 + (exit $ac_status); } &&
10863 + { ac_try='test -s conftest.$ac_objext'
10864 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10865 + (eval $ac_try) 2>&5
10867 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10868 + (exit $ac_status); }; }; then
10869 + eval "$as_ac_Header=yes"
10871 + echo "$as_me: failed program was:" >&5
10872 +cat conftest.$ac_ext >&5
10873 +eval "$as_ac_Header=no"
10875 +rm -f conftest.$ac_objext conftest.$ac_ext
10877 +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
10878 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
10879 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
10880 + cat >>confdefs.h <<_ACEOF
10881 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
10890 +for ac_header in dlfcn.h
10892 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
10893 +if eval "test \"\${$as_ac_Header+set}\" = set"; then
10894 + echo "$as_me:$LINENO: checking for $ac_header" >&5
10895 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
10896 +if eval "test \"\${$as_ac_Header+set}\" = set"; then
10897 + echo $ECHO_N "(cached) $ECHO_C" >&6
10899 +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
10900 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
10902 + # Is the header compilable?
10903 +echo "$as_me:$LINENO: checking $ac_header usability" >&5
10904 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
10905 +cat >conftest.$ac_ext <<_ACEOF
10906 +#line $LINENO "configure"
10907 +#include "confdefs.h"
10908 +$ac_includes_default
10909 +@%:@include <$ac_header>
10911 +rm -f conftest.$ac_objext
10912 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
10913 + (eval $ac_compile) 2>&5
10915 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10916 + (exit $ac_status); } &&
10917 + { ac_try='test -s conftest.$ac_objext'
10918 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10919 + (eval $ac_try) 2>&5
10921 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10922 + (exit $ac_status); }; }; then
10923 + ac_header_compiler=yes
10925 + echo "$as_me: failed program was:" >&5
10926 +cat conftest.$ac_ext >&5
10927 +ac_header_compiler=no
10929 +rm -f conftest.$ac_objext conftest.$ac_ext
10930 +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
10931 +echo "${ECHO_T}$ac_header_compiler" >&6
10933 +# Is the header present?
10934 +echo "$as_me:$LINENO: checking $ac_header presence" >&5
10935 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
10936 +cat >conftest.$ac_ext <<_ACEOF
10937 +#line $LINENO "configure"
10938 +#include "confdefs.h"
10939 +@%:@include <$ac_header>
10941 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
10942 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
10944 + grep -v '^ *+' conftest.er1 >conftest.err
10945 + rm -f conftest.er1
10946 + cat conftest.err >&5
10947 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10948 + (exit $ac_status); } >/dev/null; then
10949 + if test -s conftest.err; then
10950 + ac_cpp_err=$ac_c_preproc_warn_flag
10957 +if test -z "$ac_cpp_err"; then
10958 + ac_header_preproc=yes
10960 + echo "$as_me: failed program was:" >&5
10961 + cat conftest.$ac_ext >&5
10962 + ac_header_preproc=no
10964 +rm -f conftest.err conftest.$ac_ext
10965 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
10966 +echo "${ECHO_T}$ac_header_preproc" >&6
10968 +# So? What about this header?
10969 +case $ac_header_compiler:$ac_header_preproc in
10971 + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
10972 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
10973 + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
10974 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
10976 + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
10977 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
10978 + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
10979 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
10980 + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
10981 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
10983 +echo "$as_me:$LINENO: checking for $ac_header" >&5
10984 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
10985 +if eval "test \"\${$as_ac_Header+set}\" = set"; then
10986 + echo $ECHO_N "(cached) $ECHO_C" >&6
10988 + eval "$as_ac_Header=$ac_header_preproc"
10990 +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
10991 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
10994 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
10995 + cat >>confdefs.h <<_ACEOF
10996 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
11007 +# Only perform the check for file, if the check method requires it
11008 +case $deplibs_check_method in
11010 + if test "$file_magic_cmd" = '$MAGIC_CMD'; then
11011 + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
11012 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
11013 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
11014 + echo $ECHO_N "(cached) $ECHO_C" >&6
11016 + case $MAGIC_CMD in
11018 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
11021 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
11024 + ac_save_MAGIC_CMD="$MAGIC_CMD"
11025 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
11026 + ac_dummy="/usr/bin:$PATH"
11027 + for ac_dir in $ac_dummy; do
11028 + test -z "$ac_dir" && ac_dir=.
11029 + if test -f $ac_dir/${ac_tool_prefix}file; then
11030 + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
11031 + if test -n "$file_magic_test_file"; then
11032 + case $deplibs_check_method in
11034 + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
11035 + MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
11036 + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
11037 + egrep "$file_magic_regex" > /dev/null; then
11042 +*** Warning: the command libtool uses to detect shared libraries,
11043 +*** $file_magic_cmd, produces output that libtool cannot recognize.
11044 +*** The result is that libtool may fail to recognize shared libraries
11045 +*** as such. This will affect the creation of libtool libraries that
11046 +*** depend on shared libraries, but programs linked with such libtool
11047 +*** libraries will work regardless of this problem. Nevertheless, you
11048 +*** may want to report the problem to your system manager and/or to
11049 +*** bug-libtool@gnu.org
11058 + IFS="$ac_save_ifs"
11059 + MAGIC_CMD="$ac_save_MAGIC_CMD"
11064 +MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
11065 +if test -n "$MAGIC_CMD"; then
11066 + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
11067 +echo "${ECHO_T}$MAGIC_CMD" >&6
11069 + echo "$as_me:$LINENO: result: no" >&5
11070 +echo "${ECHO_T}no" >&6
11073 +if test -z "$lt_cv_path_MAGIC_CMD"; then
11074 + if test -n "$ac_tool_prefix"; then
11075 + echo "$as_me:$LINENO: checking for file" >&5
11076 +echo $ECHO_N "checking for file... $ECHO_C" >&6
11077 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
11078 + echo $ECHO_N "(cached) $ECHO_C" >&6
11080 + case $MAGIC_CMD in
11082 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
11085 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
11088 + ac_save_MAGIC_CMD="$MAGIC_CMD"
11089 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
11090 + ac_dummy="/usr/bin:$PATH"
11091 + for ac_dir in $ac_dummy; do
11092 + test -z "$ac_dir" && ac_dir=.
11093 + if test -f $ac_dir/file; then
11094 + lt_cv_path_MAGIC_CMD="$ac_dir/file"
11095 + if test -n "$file_magic_test_file"; then
11096 + case $deplibs_check_method in
11098 + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
11099 + MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
11100 + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
11101 + egrep "$file_magic_regex" > /dev/null; then
11106 +*** Warning: the command libtool uses to detect shared libraries,
11107 +*** $file_magic_cmd, produces output that libtool cannot recognize.
11108 +*** The result is that libtool may fail to recognize shared libraries
11109 +*** as such. This will affect the creation of libtool libraries that
11110 +*** depend on shared libraries, but programs linked with such libtool
11111 +*** libraries will work regardless of this problem. Nevertheless, you
11112 +*** may want to report the problem to your system manager and/or to
11113 +*** bug-libtool@gnu.org
11122 + IFS="$ac_save_ifs"
11123 + MAGIC_CMD="$ac_save_MAGIC_CMD"
11128 +MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
11129 +if test -n "$MAGIC_CMD"; then
11130 + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
11131 +echo "${ECHO_T}$MAGIC_CMD" >&6
11133 + echo "$as_me:$LINENO: result: no" >&5
11134 +echo "${ECHO_T}no" >&6
11146 +if test -n "$ac_tool_prefix"; then
11147 + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
11148 +set dummy ${ac_tool_prefix}ranlib; ac_word=$2
11149 +echo "$as_me:$LINENO: checking for $ac_word" >&5
11150 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
11151 +if test "${ac_cv_prog_RANLIB+set}" = set; then
11152 + echo $ECHO_N "(cached) $ECHO_C" >&6
11154 + if test -n "$RANLIB"; then
11155 + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
11157 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11158 +for as_dir in $PATH
11161 + test -z "$as_dir" && as_dir=.
11162 + for ac_exec_ext in '' $ac_executable_extensions; do
11163 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11164 + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
11165 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
11173 +RANLIB=$ac_cv_prog_RANLIB
11174 +if test -n "$RANLIB"; then
11175 + echo "$as_me:$LINENO: result: $RANLIB" >&5
11176 +echo "${ECHO_T}$RANLIB" >&6
11178 + echo "$as_me:$LINENO: result: no" >&5
11179 +echo "${ECHO_T}no" >&6
11183 +if test -z "$ac_cv_prog_RANLIB"; then
11184 + ac_ct_RANLIB=$RANLIB
11185 + # Extract the first word of "ranlib", so it can be a program name with args.
11186 +set dummy ranlib; ac_word=$2
11187 +echo "$as_me:$LINENO: checking for $ac_word" >&5
11188 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
11189 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
11190 + echo $ECHO_N "(cached) $ECHO_C" >&6
11192 + if test -n "$ac_ct_RANLIB"; then
11193 + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
11195 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11196 +for as_dir in $PATH
11199 + test -z "$as_dir" && as_dir=.
11200 + for ac_exec_ext in '' $ac_executable_extensions; do
11201 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11202 + ac_cv_prog_ac_ct_RANLIB="ranlib"
11203 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
11209 + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
11212 +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
11213 +if test -n "$ac_ct_RANLIB"; then
11214 + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
11215 +echo "${ECHO_T}$ac_ct_RANLIB" >&6
11217 + echo "$as_me:$LINENO: result: no" >&5
11218 +echo "${ECHO_T}no" >&6
11221 + RANLIB=$ac_ct_RANLIB
11223 + RANLIB="$ac_cv_prog_RANLIB"
11226 +if test -n "$ac_tool_prefix"; then
11227 + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
11228 +set dummy ${ac_tool_prefix}strip; ac_word=$2
11229 +echo "$as_me:$LINENO: checking for $ac_word" >&5
11230 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
11231 +if test "${ac_cv_prog_STRIP+set}" = set; then
11232 + echo $ECHO_N "(cached) $ECHO_C" >&6
11234 + if test -n "$STRIP"; then
11235 + ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
11237 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11238 +for as_dir in $PATH
11241 + test -z "$as_dir" && as_dir=.
11242 + for ac_exec_ext in '' $ac_executable_extensions; do
11243 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11244 + ac_cv_prog_STRIP="${ac_tool_prefix}strip"
11245 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
11253 +STRIP=$ac_cv_prog_STRIP
11254 +if test -n "$STRIP"; then
11255 + echo "$as_me:$LINENO: result: $STRIP" >&5
11256 +echo "${ECHO_T}$STRIP" >&6
11258 + echo "$as_me:$LINENO: result: no" >&5
11259 +echo "${ECHO_T}no" >&6
11263 +if test -z "$ac_cv_prog_STRIP"; then
11264 + ac_ct_STRIP=$STRIP
11265 + # Extract the first word of "strip", so it can be a program name with args.
11266 +set dummy strip; ac_word=$2
11267 +echo "$as_me:$LINENO: checking for $ac_word" >&5
11268 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
11269 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
11270 + echo $ECHO_N "(cached) $ECHO_C" >&6
11272 + if test -n "$ac_ct_STRIP"; then
11273 + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
11275 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11276 +for as_dir in $PATH
11279 + test -z "$as_dir" && as_dir=.
11280 + for ac_exec_ext in '' $ac_executable_extensions; do
11281 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11282 + ac_cv_prog_ac_ct_STRIP="strip"
11283 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
11289 + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
11292 +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
11293 +if test -n "$ac_ct_STRIP"; then
11294 + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
11295 +echo "${ECHO_T}$ac_ct_STRIP" >&6
11297 + echo "$as_me:$LINENO: result: no" >&5
11298 +echo "${ECHO_T}no" >&6
11301 + STRIP=$ac_ct_STRIP
11303 + STRIP="$ac_cv_prog_STRIP"
11308 +enable_win32_dll=no
11310 +# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
11311 +if test "${enable_libtool_lock+set}" = set; then
11312 + enableval="$enable_libtool_lock"
11315 +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
11317 +# Some flags need to be propagated to the compiler or linker for good
11318 +# libtool support.
11321 + # Find out which ABI we are using.
11322 + echo '#line __oline__ "configure"' > conftest.$ac_ext
11323 + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
11324 + (eval $ac_compile) 2>&5
11326 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11327 + (exit $ac_status); }; then
11328 + case `/usr/bin/file conftest.$ac_objext` in
11330 + LD="${LD-ld} -32"
11333 + LD="${LD-ld} -n32"
11336 + LD="${LD-ld} -64"
11344 + # On SCO OpenServer 5, we need -belf to get full-featured binaries.
11345 + SAVE_CFLAGS="$CFLAGS"
11346 + CFLAGS="$CFLAGS -belf"
11347 + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
11348 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
11349 +if test "${lt_cv_cc_needs_belf+set}" = set; then
11350 + echo $ECHO_N "(cached) $ECHO_C" >&6
11355 +ac_cpp='$CPP $CPPFLAGS'
11356 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11357 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11358 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
11360 + cat >conftest.$ac_ext <<_ACEOF
11361 +#line $LINENO "configure"
11362 +#include "confdefs.h"
11372 +rm -f conftest.$ac_objext conftest$ac_exeext
11373 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
11374 + (eval $ac_link) 2>&5
11376 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11377 + (exit $ac_status); } &&
11378 + { ac_try='test -s conftest$ac_exeext'
11379 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11380 + (eval $ac_try) 2>&5
11382 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11383 + (exit $ac_status); }; }; then
11384 + lt_cv_cc_needs_belf=yes
11386 + echo "$as_me: failed program was:" >&5
11387 +cat conftest.$ac_ext >&5
11388 +lt_cv_cc_needs_belf=no
11390 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
11392 +ac_cpp='$CPP $CPPFLAGS'
11393 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11394 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11395 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
11398 +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
11399 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
11400 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then
11401 + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
11402 + CFLAGS="$SAVE_CFLAGS"
11409 +# Sed substitution that helps us do robust quoting. It backslashifies
11410 +# metacharacters that are still active within double-quoted strings.
11411 +Xsed='sed -e s/^X//'
11412 +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
11414 +# Same as above, but do not quote variable references.
11415 +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
11417 +# Sed substitution to delay expansion of an escaped shell variable in a
11418 +# double_quote_subst'ed string.
11419 +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
11424 +# Global variables:
11425 +default_ofile=libtool
11426 +can_build_shared=yes
11428 +# All known linkers require a `.a' archive for static linking (except M$VC,
11429 +# which needs '.lib').
11431 +ltmain="$ac_aux_dir/ltmain.sh"
11432 +ofile="$default_ofile"
11433 +with_gnu_ld="$lt_cv_prog_gnu_ld"
11434 +need_locks="$enable_libtool_lock"
11437 +old_CFLAGS="$CFLAGS"
11439 +# Set sane defaults for various variables
11440 +test -z "$AR" && AR=ar
11441 +test -z "$AR_FLAGS" && AR_FLAGS=cru
11442 +test -z "$AS" && AS=as
11443 +test -z "$CC" && CC=cc
11444 +test -z "$DLLTOOL" && DLLTOOL=dlltool
11445 +test -z "$LD" && LD=ld
11446 +test -z "$LN_S" && LN_S="ln -s"
11447 +test -z "$MAGIC_CMD" && MAGIC_CMD=file
11448 +test -z "$NM" && NM=nm
11449 +test -z "$OBJDUMP" && OBJDUMP=objdump
11450 +test -z "$RANLIB" && RANLIB=:
11451 +test -z "$STRIP" && STRIP=:
11452 +test -z "$ac_objext" && ac_objext=o
11454 +if test x"$host" != x"$build"; then
11455 + ac_tool_prefix=${host_alias}-
11460 +# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
11463 +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
11468 + # AIX sometimes has problems with the GCC collect2 program. For some
11469 + # reason, if we set the COLLECT_NAMES environment variable, the problems
11470 + # vanish in a puff of smoke.
11471 + if test "X${COLLECT_NAMES+set}" != Xset; then
11473 + export COLLECT_NAMES
11478 +# Determine commands to create old-style static archives.
11479 +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
11480 +old_postinstall_cmds='chmod 644 $oldlib'
11481 +old_postuninstall_cmds=
11483 +if test -n "$RANLIB"; then
11486 + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
11489 + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
11492 + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
11495 +# Allow CC to be a program name with arguments.
11499 +echo "$as_me:$LINENO: checking for objdir" >&5
11500 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6
11501 +rm -f .libs 2>/dev/null
11502 +mkdir .libs 2>/dev/null
11503 +if test -d .libs; then
11506 + # MS-DOS does not allow filenames that begin with a dot.
11509 +rmdir .libs 2>/dev/null
11510 +echo "$as_me:$LINENO: result: $objdir" >&5
11511 +echo "${ECHO_T}$objdir" >&6
11515 +# Check whether --with-pic or --without-pic was given.
11516 +if test "${with_pic+set}" = set; then
11517 + withval="$with_pic"
11518 + pic_mode="$withval"
11522 +test -z "$pic_mode" && pic_mode=default
11524 +# We assume here that the value for lt_cv_prog_cc_pic will not be cached
11525 +# in isolation, and that seeing it set (from the cache) indicates that
11526 +# the associated values are set (in the cache) correctly too.
11527 +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
11528 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
11529 +if test "${lt_cv_prog_cc_pic+set}" = set; then
11530 + echo $ECHO_N "(cached) $ECHO_C" >&6
11532 + lt_cv_prog_cc_pic=
11533 + lt_cv_prog_cc_shlib=
11534 + lt_cv_prog_cc_wl=
11535 + lt_cv_prog_cc_static=
11536 + lt_cv_prog_cc_no_builtin=
11537 + lt_cv_prog_cc_can_build_shared=$can_build_shared
11539 + if test "$GCC" = yes; then
11540 + lt_cv_prog_cc_wl='-Wl,'
11541 + lt_cv_prog_cc_static='-static'
11545 + # Below there is a dirty hack to force normal static linking with -ldl
11546 + # The problem is because libdl dynamically linked with both libc and
11547 + # libC (AIX C++ library), which obviously doesn't included in libraries
11548 + # list by gcc. This cause undefined symbols with -static flags.
11549 + # This hack allows C programs to be linked with "-static -ldl", but
11550 + # not sure about C++ programs.
11551 + lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
11554 + # FIXME: we need at least 68020 code to build shared libraries, but
11555 + # adding the `-m68020' flag to GCC prevents building anything better,
11556 + # like `-m68040'.
11557 + lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
11559 + beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
11560 + # PIC is the default for these OSes.
11562 + darwin* | rhapsody*)
11563 + # PIC is the default on this platform
11564 + # Common symbols not allowed in MH_DYLIB files
11565 + lt_cv_prog_cc_pic='-fno-common'
11567 + cygwin* | mingw* | pw32* | os2*)
11568 + # This hack is so that the source file can tell whether it is being
11569 + # built for inclusion in a dll (and should export symbols for example).
11570 + lt_cv_prog_cc_pic='-DDLL_EXPORT'
11573 + if test -d /usr/nec; then
11574 + lt_cv_prog_cc_pic=-Kconform_pic
11578 + lt_cv_prog_cc_pic='-fPIC'
11582 + # PORTME Check for PIC flags for the system compiler.
11584 + aix3* | aix4* | aix5*)
11585 + lt_cv_prog_cc_wl='-Wl,'
11586 + # All AIX code is PIC.
11587 + if test "$host_cpu" = ia64; then
11588 + # AIX 5 now supports IA64 processor
11589 + lt_cv_prog_cc_static='-Bstatic'
11591 + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
11595 + hpux9* | hpux10* | hpux11*)
11596 + # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
11597 + lt_cv_prog_cc_wl='-Wl,'
11598 + lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
11599 + lt_cv_prog_cc_pic='+Z'
11603 + lt_cv_prog_cc_wl='-Wl,'
11604 + lt_cv_prog_cc_static='-non_shared'
11605 + # PIC (with -KPIC) is the default.
11608 + cygwin* | mingw* | pw32* | os2*)
11609 + # This hack is so that the source file can tell whether it is being
11610 + # built for inclusion in a dll (and should export symbols for example).
11611 + lt_cv_prog_cc_pic='-DDLL_EXPORT'
11615 + lt_cv_prog_cc_pic='-KPIC'
11616 + lt_cv_prog_cc_static='-Bstatic'
11619 + osf3* | osf4* | osf5*)
11620 + # All OSF/1 code is PIC.
11621 + lt_cv_prog_cc_wl='-Wl,'
11622 + lt_cv_prog_cc_static='-non_shared'
11626 + lt_cv_prog_cc_pic='-Kpic'
11627 + lt_cv_prog_cc_static='-dn'
11628 + lt_cv_prog_cc_shlib='-belf'
11632 + lt_cv_prog_cc_pic='-KPIC'
11633 + lt_cv_prog_cc_static='-Bstatic'
11634 + lt_cv_prog_cc_wl='-Wl,'
11638 + lt_cv_prog_cc_pic='-PIC'
11639 + lt_cv_prog_cc_static='-Bstatic'
11640 + lt_cv_prog_cc_wl='-Qoption ld '
11643 + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
11644 + lt_cv_prog_cc_pic='-KPIC'
11645 + lt_cv_prog_cc_static='-Bstatic'
11646 + if test "x$host_vendor" = xsni; then
11647 + lt_cv_prog_cc_wl='-LD'
11649 + lt_cv_prog_cc_wl='-Wl,'
11654 + lt_cv_prog_cc_pic='-pic'
11655 + lt_cv_prog_cc_static='-Bstatic'
11659 + if test -d /usr/nec ;then
11660 + lt_cv_prog_cc_pic='-Kconform_pic'
11661 + lt_cv_prog_cc_static='-Bstatic'
11666 + lt_cv_prog_cc_can_build_shared=no
11673 +if test -z "$lt_cv_prog_cc_pic"; then
11674 + echo "$as_me:$LINENO: result: none" >&5
11675 +echo "${ECHO_T}none" >&6
11677 + echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5
11678 +echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6
11680 + # Check to make sure the pic_flag actually works.
11681 + echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
11682 +echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6
11683 + if test "${lt_cv_prog_cc_pic_works+set}" = set; then
11684 + echo $ECHO_N "(cached) $ECHO_C" >&6
11686 + save_CFLAGS="$CFLAGS"
11687 + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
11688 + cat >conftest.$ac_ext <<_ACEOF
11689 +#line $LINENO "configure"
11690 +#include "confdefs.h"
11700 +rm -f conftest.$ac_objext
11701 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
11702 + (eval $ac_compile) 2>&5
11704 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11705 + (exit $ac_status); } &&
11706 + { ac_try='test -s conftest.$ac_objext'
11707 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11708 + (eval $ac_try) 2>&5
11710 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11711 + (exit $ac_status); }; }; then
11713 + hpux9* | hpux10* | hpux11*)
11714 + # On HP-UX, both CC and GCC only warn that PIC is supported... then
11715 + # they create non-PIC objects. So, if there were any warnings, we
11716 + # assume that PIC is not supported.
11717 + if test -s conftest.err; then
11718 + lt_cv_prog_cc_pic_works=no
11720 + lt_cv_prog_cc_pic_works=yes
11724 + lt_cv_prog_cc_pic_works=yes
11729 + echo "$as_me: failed program was:" >&5
11730 +cat conftest.$ac_ext >&5
11731 + lt_cv_prog_cc_pic_works=no
11734 +rm -f conftest.$ac_objext conftest.$ac_ext
11735 + CFLAGS="$save_CFLAGS"
11740 + if test "X$lt_cv_prog_cc_pic_works" = Xno; then
11741 + lt_cv_prog_cc_pic=
11742 + lt_cv_prog_cc_can_build_shared=no
11744 + lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
11747 + echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5
11748 +echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6
11751 +# Check for any special shared library compilation flags.
11752 +if test -n "$lt_cv_prog_cc_shlib"; then
11753 + { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5
11754 +echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;}
11755 + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then :
11757 + { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
11758 +echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
11759 + lt_cv_prog_cc_can_build_shared=no
11763 +echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
11764 +echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6
11765 +if test "${lt_cv_prog_cc_static_works+set}" = set; then
11766 + echo $ECHO_N "(cached) $ECHO_C" >&6
11768 + lt_cv_prog_cc_static_works=no
11769 + save_LDFLAGS="$LDFLAGS"
11770 + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
11771 + cat >conftest.$ac_ext <<_ACEOF
11772 +#line $LINENO "configure"
11773 +#include "confdefs.h"
11783 +rm -f conftest.$ac_objext conftest$ac_exeext
11784 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
11785 + (eval $ac_link) 2>&5
11787 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11788 + (exit $ac_status); } &&
11789 + { ac_try='test -s conftest$ac_exeext'
11790 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11791 + (eval $ac_try) 2>&5
11793 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11794 + (exit $ac_status); }; }; then
11795 + lt_cv_prog_cc_static_works=yes
11797 + echo "$as_me: failed program was:" >&5
11798 +cat conftest.$ac_ext >&5
11800 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
11801 + LDFLAGS="$save_LDFLAGS"
11806 +# Belt *and* braces to stop my trousers falling down:
11807 +test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
11808 +echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5
11809 +echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6
11811 +pic_flag="$lt_cv_prog_cc_pic"
11812 +special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
11813 +wl="$lt_cv_prog_cc_wl"
11814 +link_static_flag="$lt_cv_prog_cc_static"
11815 +no_builtin_flag="$lt_cv_prog_cc_no_builtin"
11816 +can_build_shared="$lt_cv_prog_cc_can_build_shared"
11819 +# Check to see if options -o and -c are simultaneously supported by compiler
11820 +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
11821 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
11822 +if test "${lt_cv_compiler_c_o+set}" = set; then
11823 + echo $ECHO_N "(cached) $ECHO_C" >&6
11826 +$rm -r conftest 2>/dev/null
11829 +echo "int some_variable = 0;" > conftest.$ac_ext
11831 +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
11832 +# that will create temporary files in the current directory regardless of
11833 +# the output directory. Thus, making CWD read-only will cause this test
11834 +# to fail, enabling locking or at least warning the user not to do parallel
11837 +save_CFLAGS="$CFLAGS"
11838 +CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
11840 +if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
11841 + # The compiler can only warn and ignore the option if not recognized
11842 + # So say no if there are warnings
11843 + if test -s out/conftest.err; then
11844 + lt_cv_compiler_c_o=no
11846 + lt_cv_compiler_c_o=yes
11849 + # Append any errors to the config.log.
11850 + cat out/conftest.err 1>&5
11851 + lt_cv_compiler_c_o=no
11853 +CFLAGS="$save_CFLAGS"
11855 +$rm conftest* out/*
11859 +$rm -r conftest 2>/dev/null
11863 +compiler_c_o=$lt_cv_compiler_c_o
11864 +echo "$as_me:$LINENO: result: $compiler_c_o" >&5
11865 +echo "${ECHO_T}$compiler_c_o" >&6
11867 +if test x"$compiler_c_o" = x"yes"; then
11868 + # Check to see if we can write to a .lo
11869 + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5
11870 +echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6
11871 + if test "${lt_cv_compiler_o_lo+set}" = set; then
11872 + echo $ECHO_N "(cached) $ECHO_C" >&6
11875 + lt_cv_compiler_o_lo=no
11876 + save_CFLAGS="$CFLAGS"
11877 + CFLAGS="$CFLAGS -c -o conftest.lo"
11878 + save_objext="$ac_objext"
11880 + cat >conftest.$ac_ext <<_ACEOF
11881 +#line $LINENO "configure"
11882 +#include "confdefs.h"
11887 +int some_variable = 0;
11892 +rm -f conftest.$ac_objext
11893 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
11894 + (eval $ac_compile) 2>&5
11896 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11897 + (exit $ac_status); } &&
11898 + { ac_try='test -s conftest.$ac_objext'
11899 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11900 + (eval $ac_try) 2>&5
11902 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11903 + (exit $ac_status); }; }; then
11904 + # The compiler can only warn and ignore the option if not recognized
11905 + # So say no if there are warnings
11906 + if test -s conftest.err; then
11907 + lt_cv_compiler_o_lo=no
11909 + lt_cv_compiler_o_lo=yes
11913 + echo "$as_me: failed program was:" >&5
11914 +cat conftest.$ac_ext >&5
11916 +rm -f conftest.$ac_objext conftest.$ac_ext
11917 + ac_objext="$save_objext"
11918 + CFLAGS="$save_CFLAGS"
11922 + compiler_o_lo=$lt_cv_compiler_o_lo
11923 + echo "$as_me:$LINENO: result: $compiler_o_lo" >&5
11924 +echo "${ECHO_T}$compiler_o_lo" >&6
11929 +# Check to see if we can do hard links to lock some files if needed
11930 +hard_links="nottested"
11931 +if test "$compiler_c_o" = no && test "$need_locks" != no; then
11932 + # do not overwrite the value of need_locks provided by the user
11933 + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
11934 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
11937 + ln conftest.a conftest.b 2>/dev/null && hard_links=no
11939 + ln conftest.a conftest.b 2>&5 || hard_links=no
11940 + ln conftest.a conftest.b 2>/dev/null && hard_links=no
11941 + echo "$as_me:$LINENO: result: $hard_links" >&5
11942 +echo "${ECHO_T}$hard_links" >&6
11943 + if test "$hard_links" = no; then
11944 + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
11945 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
11952 +if test "$GCC" = yes; then
11953 + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
11954 + echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
11955 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
11956 + echo "int some_variable = 0;" > conftest.$ac_ext
11957 + save_CFLAGS="$CFLAGS"
11958 + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
11959 + compiler_rtti_exceptions=no
11960 + cat >conftest.$ac_ext <<_ACEOF
11961 +#line $LINENO "configure"
11962 +#include "confdefs.h"
11967 +int some_variable = 0;
11972 +rm -f conftest.$ac_objext
11973 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
11974 + (eval $ac_compile) 2>&5
11976 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11977 + (exit $ac_status); } &&
11978 + { ac_try='test -s conftest.$ac_objext'
11979 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11980 + (eval $ac_try) 2>&5
11982 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11983 + (exit $ac_status); }; }; then
11984 + # The compiler can only warn and ignore the option if not recognized
11985 + # So say no if there are warnings
11986 + if test -s conftest.err; then
11987 + compiler_rtti_exceptions=no
11989 + compiler_rtti_exceptions=yes
11993 + echo "$as_me: failed program was:" >&5
11994 +cat conftest.$ac_ext >&5
11996 +rm -f conftest.$ac_objext conftest.$ac_ext
11997 + CFLAGS="$save_CFLAGS"
11998 + echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5
11999 +echo "${ECHO_T}$compiler_rtti_exceptions" >&6
12001 + if test "$compiler_rtti_exceptions" = "yes"; then
12002 + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
12004 + no_builtin_flag=' -fno-builtin'
12008 +# See if the linker supports building shared libraries.
12009 +echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5
12010 +echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6
12012 +allow_undefined_flag=
12013 +no_undefined_flag=
12014 +need_lib_prefix=unknown
12015 +need_version=unknown
12016 +# when you set need_version to no, make sure it does not cause -set_version
12017 +# flags to be left without arguments
12019 +archive_expsym_cmds=
12020 +old_archive_from_new_cmds=
12021 +old_archive_from_expsyms_cmds=
12022 +export_dynamic_flag_spec=
12023 +whole_archive_flag_spec=
12024 +thread_safe_flag_spec=
12025 +hardcode_into_libs=no
12026 +hardcode_libdir_flag_spec=
12027 +hardcode_libdir_separator=
12028 +hardcode_direct=no
12029 +hardcode_minus_L=no
12030 +hardcode_shlibpath_var=unsupported
12032 +link_all_deplibs=unknown
12033 +always_export_symbols=no
12034 +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
12035 +# include_expsyms should be a list of space-separated symbols to be *always*
12036 +# included in the symbol list
12038 +# exclude_expsyms can be an egrep regular expression of symbols to exclude
12039 +# it will be wrapped by ` (' and `)$', so one must not match beginning or
12040 +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
12041 +# as well as any symbol that contains `d'.
12042 +exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
12043 +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
12044 +# platforms (ab)use it in PIC code, but their linkers get confused if
12045 +# the symbol is explicitly referenced. Since portable code cannot
12046 +# rely on this symbol name, it's probably fine to never include it in
12047 +# preloaded symbol tables.
12048 +extract_expsyms_cmds=
12051 +cygwin* | mingw* | pw32*)
12052 + # FIXME: the MSVC++ port hasn't been tested in a loooong time
12053 + # When not using gcc, we currently assume that we are using
12054 + # Microsoft Visual C++.
12055 + if test "$GCC" != yes; then
12065 +if test "$with_gnu_ld" = yes; then
12066 + # If archive_cmds runs LD, not CC, wlarc should be empty
12069 + # See if GNU ld supports shared libraries.
12071 + aix3* | aix4* | aix5*)
12072 + # On AIX, the GNU linker is very broken
12073 + # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
12077 +*** Warning: the GNU linker, at least up to release 2.9.1, is reported
12078 +*** to be unable to reliably create shared libraries on AIX.
12079 +*** Therefore, libtool is disabling shared libraries support. If you
12080 +*** really care for shared libraries, you may want to modify your PATH
12081 +*** so that a non-GNU linker is found, and then restart.
12087 + 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)'
12088 + hardcode_libdir_flag_spec='-L$libdir'
12089 + hardcode_minus_L=yes
12091 + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
12092 + # that the semantics of dynamic libraries on AmigaOS, at least up
12093 + # to version 4, is to share data among multiple programs linked
12094 + # with the same dynamic library. Since this doesn't match the
12095 + # behavior of shared libraries on other platforms, we can use
12101 + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
12102 + allow_undefined_flag=unsupported
12103 + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
12104 + # support --undefined. This deserves some investigation. FIXME
12105 + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
12111 + cygwin* | mingw* | pw32*)
12112 + # hardcode_libdir_flag_spec is actually meaningless, as there is
12113 + # no search path for DLLs.
12114 + hardcode_libdir_flag_spec='-L$libdir'
12115 + allow_undefined_flag=unsupported
12116 + always_export_symbols=yes
12118 + extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
12119 + sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
12120 + test -f $output_objdir/impgen.exe || (cd $output_objdir && \
12121 + if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
12122 + else $CC -o impgen impgen.c ; fi)~
12123 + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
12125 + old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
12127 + # cygwin and mingw dlls have different entry points and sets of symbols
12129 + # FIXME: what about values for MSVC?
12130 + dll_entry=__cygwin_dll_entry@12
12131 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
12135 + dll_entry=_DllMainCRTStartup@12
12136 + dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
12140 + # mingw and cygwin differ, and it's simplest to just exclude the union
12141 + # of the two symbol sets.
12142 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
12144 + # recent cygwin and mingw systems supply a stub DllMain which the user
12145 + # can override, but on older systems we have to supply one (in ltdll.c)
12146 + if test "x$lt_cv_need_dllmain" = "xyes"; then
12147 + ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
12148 + 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~
12149 + test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
12155 + # Extract the symbol export list from an `--export-all' def file,
12156 + # then regenerate the def file from the symbol export list, so that
12157 + # the compiled dll only exports the symbol export list.
12158 + # Be careful not to strip the DATA tag left be newer dlltools.
12159 + export_symbols_cmds="$ltdll_cmds"'
12160 + $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
12161 + sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
12163 + # If the export-symbols file already is a .def file (1st line
12164 + # is EXPORTS), use it as is.
12165 + # If DATA tags from a recent dlltool are present, honour them!
12166 + archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then
12167 + cp $export_symbols $output_objdir/$soname-def;
12169 + echo EXPORTS > $output_objdir/$soname-def;
12171 + cat $export_symbols | while read symbol; do
12172 + set dummy \$symbol;
12174 + 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
12175 + *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;;
12177 + _lt_hint=`expr 1 + \$_lt_hint`;
12181 + $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~
12182 + $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~
12183 + $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~
12184 + $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~
12185 + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
12189 + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
12190 + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
12193 + archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
12194 + archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
12198 + solaris* | sysv5*)
12199 + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
12203 +*** Warning: The releases 2.8.* of the GNU linker cannot reliably
12204 +*** create shared libraries on Solaris systems. Therefore, libtool
12205 +*** is disabling shared libraries support. We urge you to upgrade GNU
12206 +*** binutils to release 2.9.1 or newer. Another option is to modify
12207 +*** your PATH or compiler configuration so that the native linker is
12208 +*** used, and then restart.
12211 + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
12212 + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
12213 + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
12220 + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
12222 + hardcode_direct=yes
12223 + hardcode_shlibpath_var=no
12227 + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
12228 + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
12229 + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
12236 + if test "$ld_shlibs" = yes; then
12237 + runpath_var=LD_RUN_PATH
12238 + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
12239 + export_dynamic_flag_spec='${wl}--export-dynamic'
12241 + cygwin* | mingw* | pw32*)
12242 + # dlltool doesn't understand --whole-archive et. al.
12243 + whole_archive_flag_spec=
12246 + # ancient GNU ld didn't support --whole-archive et. al.
12247 + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
12248 + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
12250 + whole_archive_flag_spec=
12256 + # PORTME fill in a description of your system's linker (not GNU ld)
12259 + allow_undefined_flag=unsupported
12260 + always_export_symbols=yes
12261 + 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'
12262 + # Note: this linker hardcodes the directories in LIBPATH if there
12263 + # are no directories specified by -L.
12264 + hardcode_minus_L=yes
12265 + if test "$GCC" = yes && test -z "$link_static_flag"; then
12266 + # Neither direct hardcoding nor static linking is supported with a
12267 + # broken collect2.
12268 + hardcode_direct=unsupported
12273 + if test "$host_cpu" = ia64; then
12274 + # On IA64, the linker does run time linking by default, so we don't
12275 + # have to do anything special.
12276 + aix_use_runtimelinking=no
12277 + exp_sym_flag='-Bexport'
12280 + aix_use_runtimelinking=no
12282 + # Test if we are trying to use run time linking or normal
12283 + # AIX style linking. If -brtl is somewhere in LDFLAGS, we
12284 + # need to do runtime linking.
12285 + case $host_os in aix4.[23]|aix4.[23].*|aix5*)
12286 + for ld_flag in $LDFLAGS; do
12287 + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
12288 + aix_use_runtimelinking=yes
12294 + exp_sym_flag='-bexport'
12295 + no_entry_flag='-bnoentry'
12298 + # When large executables or shared objects are built, AIX ld can
12299 + # have problems creating the table of contents. If linking a library
12300 + # or program results in "error TOC overflow" add -mminimal-toc to
12301 + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
12302 + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
12304 + hardcode_direct=yes
12306 + hardcode_libdir_separator=':'
12307 + if test "$GCC" = yes; then
12308 + case $host_os in aix4.[012]|aix4.[012].*)
12309 + collect2name=`${CC} -print-prog-name=collect2`
12310 + if test -f "$collect2name" && \
12311 + strings "$collect2name" | grep resolve_lib_name >/dev/null
12313 + # We have reworked collect2
12314 + hardcode_direct=yes
12316 + # We have old collect2
12317 + hardcode_direct=unsupported
12318 + # It fails to find uninstalled libraries when the uninstalled
12319 + # path is not listed in the libpath. Setting hardcode_minus_L
12320 + # to unsupported forces relinking
12321 + hardcode_minus_L=yes
12322 + hardcode_libdir_flag_spec='-L$libdir'
12323 + hardcode_libdir_separator=
12327 + shared_flag='-shared'
12330 + if test "$host_cpu" = ia64; then
12331 + shared_flag='${wl}-G'
12333 + if test "$aix_use_runtimelinking" = yes; then
12334 + shared_flag='${wl}-G'
12336 + shared_flag='${wl}-bM:SRE'
12341 + # It seems that -bexpall can do strange things, so it is better to
12342 + # generate a list of symbols to export.
12343 + always_export_symbols=yes
12344 + if test "$aix_use_runtimelinking" = yes; then
12345 + # Warning - without using the other runtime loading flags (-brtl),
12346 + # -berok will link without error, but may produce a broken library.
12347 + allow_undefined_flag='-berok'
12348 + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
12349 + 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"
12351 + if test "$host_cpu" = ia64; then
12352 + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
12353 + allow_undefined_flag="-z nodefs"
12354 + 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"
12356 + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
12357 + # Warning - without using the other run time loading flags,
12358 + # -berok will link without error, but may produce a broken library.
12359 + allow_undefined_flag='${wl}-berok'
12360 + # This is a bit strange, but is similar to how AIX traditionally builds
12361 + # it's shared libraries.
12362 + 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'
12368 + 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)'
12369 + hardcode_libdir_flag_spec='-L$libdir'
12370 + hardcode_minus_L=yes
12371 + # see comment about different semantics on the GNU ld section
12375 + cygwin* | mingw* | pw32*)
12376 + # When not using gcc, we currently assume that we are using
12377 + # Microsoft Visual C++.
12378 + # hardcode_libdir_flag_spec is actually meaningless, as there is
12379 + # no search path for DLLs.
12380 + hardcode_libdir_flag_spec=' '
12381 + allow_undefined_flag=unsupported
12382 + # Tell ltmain to make .lib files, not .a files.
12384 + # FIXME: Setting linknames here is a bad hack.
12385 + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
12386 + # The linker will automatically build a .lib file if we build a DLL.
12387 + old_archive_from_new_cmds='true'
12388 + # FIXME: Should let the user specify the lib program.
12389 + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
12390 + fix_srcfile_path='`cygpath -w "$srcfile"`'
12393 + darwin* | rhapsody*)
12394 + case "$host_os" in
12395 + rhapsody* | darwin1.[012])
12396 + allow_undefined_flag='-undefined suppress'
12398 + *) # Darwin 1.3 on
12399 + allow_undefined_flag='-flat_namespace -undefined suppress'
12402 + # FIXME: Relying on posixy $() will cause problems for
12403 + # cross-compilation, but unfortunately the echo tests do not
12404 + # yet detect zsh echo's removal of \ escapes.
12405 + 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'
12406 + # We need to add '_' to the symbols in $export_symbols first
12407 + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
12408 + hardcode_direct=yes
12409 + hardcode_shlibpath_var=no
12410 + whole_archive_flag_spec='-all_load $convenience'
12417 + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
12418 + # support. Future versions do this automatically, but an explicit c++rt0.o
12419 + # does not break anything, and helps significantly (at the cost of a little
12422 + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
12423 + hardcode_libdir_flag_spec='-R$libdir'
12424 + hardcode_direct=yes
12425 + hardcode_shlibpath_var=no
12428 + # Unfortunately, older versions of FreeBSD 2 do not have this feature.
12430 + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
12431 + hardcode_direct=yes
12432 + hardcode_minus_L=yes
12433 + hardcode_shlibpath_var=no
12436 + # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
12438 + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
12439 + hardcode_libdir_flag_spec='-R$libdir'
12440 + hardcode_direct=yes
12441 + hardcode_shlibpath_var=no
12444 + hpux9* | hpux10* | hpux11*)
12446 + 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' ;;
12447 + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
12449 + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
12450 + hardcode_libdir_separator=:
12451 + hardcode_direct=yes
12452 + hardcode_minus_L=yes # Not in the search PATH, but as the default
12453 + # location of the library.
12454 + export_dynamic_flag_spec='${wl}-E'
12458 + if test "$GCC" = yes; then
12459 + 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'
12461 + 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'
12463 + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
12464 + hardcode_libdir_separator=:
12465 + link_all_deplibs=yes
12469 + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
12470 + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
12472 + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
12474 + hardcode_libdir_flag_spec='-R$libdir'
12475 + hardcode_direct=yes
12476 + hardcode_shlibpath_var=no
12480 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12481 + hardcode_direct=yes
12482 + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
12483 + hardcode_libdir_separator=:
12484 + hardcode_shlibpath_var=no
12488 + hardcode_direct=yes
12489 + hardcode_shlibpath_var=no
12490 + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
12491 + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags'
12492 + hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
12493 + export_dynamic_flag_spec='${wl}-E'
12495 + case "$host_os" in
12496 + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
12497 + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
12498 + hardcode_libdir_flag_spec='-R$libdir'
12501 + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags'
12502 + hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
12509 + hardcode_libdir_flag_spec='-L$libdir'
12510 + hardcode_minus_L=yes
12511 + allow_undefined_flag=unsupported
12512 + 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'
12513 + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
12517 + if test "$GCC" = yes; then
12518 + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
12519 + 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'
12521 + allow_undefined_flag=' -expect_unresolved \*'
12522 + 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'
12524 + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
12525 + hardcode_libdir_separator=:
12528 + osf4* | osf5*) # as osf3* with the addition of -msym flag
12529 + if test "$GCC" = yes; then
12530 + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
12531 + 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'
12532 + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
12534 + allow_undefined_flag=' -expect_unresolved \*'
12535 + 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'
12536 + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
12537 + $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'
12539 + #Both c and cxx compiler support -rpath directly
12540 + hardcode_libdir_flag_spec='-rpath $libdir'
12542 + hardcode_libdir_separator=:
12546 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12547 + hardcode_shlibpath_var=no
12548 + runpath_var=LD_RUN_PATH
12549 + hardcode_runpath_var=yes
12550 + export_dynamic_flag_spec='${wl}-Bexport'
12554 + # gcc --version < 3.0 without binutils cannot create self contained
12555 + # shared libraries reliably, requiring libgcc.a to resolve some of
12556 + # the object symbols generated in some cases. Libraries that use
12557 + # assert need libgcc.a to resolve __eprintf, for example. Linking
12558 + # a copy of libgcc.a into every shared library to guarantee resolving
12559 + # such symbols causes other problems: According to Tim Van Holder
12560 + # <tim.van.holder@pandora.be>, C++ libraries end up with a separate
12561 + # (to the application) exception stack for one thing.
12562 + no_undefined_flag=' -z defs'
12563 + if test "$GCC" = yes; then
12564 + case `$CC --version 2>/dev/null` in
12568 +*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
12569 +*** create self contained shared libraries on Solaris systems, without
12570 +*** introducing a dependency on libgcc.a. Therefore, libtool is disabling
12571 +*** -no-undefined support, which will at least allow you to build shared
12572 +*** libraries. However, you may find that when you link such libraries
12573 +*** into an application without using GCC, you have to manually add
12574 +*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to
12575 +*** upgrade to a newer version of GCC. Another option is to rebuild your
12576 +*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
12579 + no_undefined_flag=
12583 + # $CC -shared without GNU ld will not create a library from C++
12584 + # object files and a static libstdc++, better avoid it by now
12585 + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
12586 + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
12587 + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
12588 + hardcode_libdir_flag_spec='-R$libdir'
12589 + hardcode_shlibpath_var=no
12591 + solaris2.[0-5] | solaris2.[0-5].*) ;;
12592 + *) # Supported since Solaris 2.6 (maybe 2.5.1?)
12593 + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
12595 + link_all_deplibs=yes
12599 + if test "x$host_vendor" = xsequent; then
12600 + # Use $CC to link under sequent, because it throws in some extra .o
12601 + # files that make .init and .fini sections work.
12602 + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
12604 + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
12606 + hardcode_libdir_flag_spec='-L$libdir'
12607 + hardcode_direct=yes
12608 + hardcode_minus_L=yes
12609 + hardcode_shlibpath_var=no
12613 + if test "x$host_vendor" = xsno; then
12614 + archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags'
12615 + hardcode_direct=yes # is this really true???
12617 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12618 + hardcode_direct=no #Motorola manual says yes, but my tests say they lie
12620 + runpath_var='LD_RUN_PATH'
12621 + hardcode_shlibpath_var=no
12625 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12626 + hardcode_shlibpath_var=no
12627 + export_dynamic_flag_spec='-Bexport'
12631 + no_undefined_flag=' -z text'
12632 + # $CC -shared without GNU ld will not create a library from C++
12633 + # object files and a static libstdc++, better avoid it by now
12634 + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
12635 + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
12636 + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
12637 + hardcode_libdir_flag_spec=
12638 + hardcode_shlibpath_var=no
12639 + runpath_var='LD_RUN_PATH'
12643 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12644 + hardcode_libdir_flag_spec='-L$libdir'
12645 + hardcode_shlibpath_var=no
12649 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12650 + hardcode_libdir_flag_spec='-L$libdir'
12651 + hardcode_shlibpath_var=no
12655 + if test -d /usr/nec; then
12656 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12657 + hardcode_shlibpath_var=no
12658 + runpath_var=LD_RUN_PATH
12659 + hardcode_runpath_var=yes
12665 + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
12666 + hardcode_direct=yes
12667 + hardcode_minus_L=no
12668 + hardcode_shlibpath_var=no
12669 + hardcode_runpath_var=yes
12670 + runpath_var=LD_RUN_PATH
12673 + sysv5uw7* | unixware7*)
12674 + no_undefined_flag='${wl}-z ${wl}text'
12675 + if test "$GCC" = yes; then
12676 + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
12678 + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
12680 + runpath_var='LD_RUN_PATH'
12681 + hardcode_shlibpath_var=no
12689 +echo "$as_me:$LINENO: result: $ld_shlibs" >&5
12690 +echo "${ECHO_T}$ld_shlibs" >&6
12691 +test "$ld_shlibs" = no && can_build_shared=no
12693 +# Check hardcoding attributes.
12694 +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
12695 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
12697 +if test -n "$hardcode_libdir_flag_spec" || \
12698 + test -n "$runpath_var"; then
12700 + # We can hardcode non-existant directories.
12701 + if test "$hardcode_direct" != no &&
12702 + # If the only mechanism to avoid hardcoding is shlibpath_var, we
12703 + # have to relink, otherwise we might link with an installed library
12704 + # when we should be linking with a yet-to-be-installed one
12705 + ## test "$hardcode_shlibpath_var" != no &&
12706 + test "$hardcode_minus_L" != no; then
12707 + # Linking always hardcodes the temporary library directory.
12708 + hardcode_action=relink
12710 + # We can link without hardcoding, and we can hardcode nonexisting dirs.
12711 + hardcode_action=immediate
12714 + # We cannot hardcode anything, or else we can only hardcode existing
12716 + hardcode_action=unsupported
12718 +echo "$as_me:$LINENO: result: $hardcode_action" >&5
12719 +echo "${ECHO_T}$hardcode_action" >&6
12723 +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
12724 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
12725 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
12726 + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
12727 + test -z "$striplib" && striplib="$STRIP --strip-unneeded"
12728 + echo "$as_me:$LINENO: result: yes" >&5
12729 +echo "${ECHO_T}yes" >&6
12731 + echo "$as_me:$LINENO: result: no" >&5
12732 +echo "${ECHO_T}no" >&6
12735 +reload_cmds='$LD$reload_flag -o $output$reload_objs'
12736 +test -z "$deplibs_check_method" && deplibs_check_method=unknown
12738 +# PORTME Fill in your ld.so characteristics
12739 +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
12740 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
12741 +library_names_spec=
12742 +libname_spec='lib$name'
12745 +postuninstall_cmds=
12749 +shlibpath_overrides_runpath=unknown
12751 +dynamic_linker="$host_os ld.so"
12752 +sys_lib_dlsearch_path_spec="/lib /usr/lib"
12753 +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
12757 + version_type=linux
12758 + library_names_spec='${libname}${release}.so$versuffix $libname.a'
12759 + shlibpath_var=LIBPATH
12761 + # AIX has no versioning support, so we append a major version to the name.
12762 + soname_spec='${libname}${release}.so$major'
12766 + version_type=linux
12767 + if test "$host_cpu" = ia64; then
12768 + # AIX 5 supports IA64
12769 + library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
12770 + shlibpath_var=LD_LIBRARY_PATH
12772 + # With GCC up to 2.95.x, collect2 would create an import file
12773 + # for dependence libraries. The import file would start with
12774 + # the line `#! .'. This would cause the generated library to
12775 + # depend on `.', always an invalid library. This was fixed in
12776 + # development snapshots of GCC prior to 3.0.
12778 + aix4 | aix4.[01] | aix4.[01].*)
12779 + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
12781 + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
12784 + can_build_shared=no
12788 + # AIX (on Power*) has no versioning support, so currently we can
12789 + # not hardcode correct soname into executable. Probably we can
12790 + # add versioning support to collect2, so additional links can
12791 + # be useful in future.
12792 + if test "$aix_use_runtimelinking" = yes; then
12793 + # If using run time linking (on AIX 4.2 or later) use lib<name>.so
12794 + # instead of lib<name>.a to let people know that these are not
12795 + # typical AIX shared libraries.
12796 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
12798 + # We preserve .a as extension for shared libraries through AIX4.2
12799 + # and later when we are not doing run time linking.
12800 + library_names_spec='${libname}${release}.a $libname.a'
12801 + soname_spec='${libname}${release}.so$major'
12803 + shlibpath_var=LIBPATH
12808 + library_names_spec='$libname.ixlibrary $libname.a'
12809 + # Create ${libname}_ixlibrary.a entries in /sys/libs.
12810 + 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'
12814 + library_names_spec='${libname}.so'
12815 + dynamic_linker="$host_os ld.so"
12816 + shlibpath_var=LIBRARY_PATH
12820 + version_type=linux
12822 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
12823 + soname_spec='${libname}${release}.so$major'
12824 + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
12825 + shlibpath_var=LD_LIBRARY_PATH
12826 + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
12827 + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
12828 + export_dynamic_flag_spec=-rdynamic
12829 + # the default ld.so.conf also contains /usr/contrib/lib and
12830 + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
12831 + # libtool to hard-code these into programs
12834 +cygwin* | mingw* | pw32*)
12835 + version_type=windows
12837 + need_lib_prefix=no
12838 + case $GCC,$host_os in
12840 + library_names_spec='$libname.dll.a'
12841 + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
12842 + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
12843 + dldir=$destdir/`dirname \$dlpath`~
12844 + test -d \$dldir || mkdir -p \$dldir~
12845 + $install_prog .libs/$dlname \$dldir/$dlname'
12846 + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
12847 + dlpath=$dir/\$dldll~
12851 + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
12852 + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
12855 + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll'
12858 + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
12861 + dynamic_linker='Win32 ld.exe'
12862 + # FIXME: first we should search . and the directory the executable is in
12863 + shlibpath_var=PATH
12866 +darwin* | rhapsody*)
12867 + dynamic_linker="$host_os dyld"
12868 + version_type=darwin
12869 + need_lib_prefix=no
12871 + # FIXME: Relying on posixy $() will cause problems for
12872 + # cross-compilation, but unfortunately the echo tests do not
12873 + # yet detect zsh echo's removal of \ escapes.
12874 + 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)'
12875 + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
12876 + shlibpath_overrides_runpath=yes
12877 + shlibpath_var=DYLD_LIBRARY_PATH
12881 + dynamic_linker=no
12885 + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
12886 + version_type=freebsd-$objformat
12887 + case $version_type in
12889 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
12891 + need_lib_prefix=no
12894 + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
12898 + shlibpath_var=LD_LIBRARY_PATH
12901 + shlibpath_overrides_runpath=yes
12904 + shlibpath_overrides_runpath=no
12905 + hardcode_into_libs=yes
12911 + version_type=linux
12912 + need_lib_prefix=no
12914 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
12915 + soname_spec='${libname}${release}.so$major'
12916 + shlibpath_var=LD_LIBRARY_PATH
12917 + hardcode_into_libs=yes
12920 +hpux9* | hpux10* | hpux11*)
12921 + # Give a soname corresponding to the major version so that dld.sl refuses to
12922 + # link against other versions.
12923 + dynamic_linker="$host_os dld.sl"
12924 + version_type=sunos
12925 + need_lib_prefix=no
12927 + shlibpath_var=SHLIB_PATH
12928 + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
12929 + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
12930 + soname_spec='${libname}${release}.sl$major'
12931 + # HP-UX runs *really* slowly unless shared libraries are mode 555.
12932 + postinstall_cmds='chmod 555 $lib'
12936 + version_type=irix
12937 + need_lib_prefix=no
12939 + soname_spec='${libname}${release}.so$major'
12940 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
12943 + libsuff= shlibsuff=
12946 + case $LD in # libtool.m4 will add one of these switches to LD
12947 + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
12948 + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
12949 + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
12950 + *) libsuff= shlibsuff= libmagic=never-match;;
12954 + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
12955 + shlibpath_overrides_runpath=no
12956 + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
12957 + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
12960 +# No shared lib support for Linux oldld, aout, or coff.
12961 +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
12962 + dynamic_linker=no
12965 +# This must be Linux ELF.
12967 + version_type=linux
12968 + need_lib_prefix=no
12970 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
12971 + soname_spec='${libname}${release}.so$major'
12972 + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
12973 + shlibpath_var=LD_LIBRARY_PATH
12974 + shlibpath_overrides_runpath=no
12975 + # This implies no fast_install, which is unacceptable.
12976 + # Some rework will be needed to allow for fast_install
12977 + # before this can be enabled.
12978 + hardcode_into_libs=yes
12980 + # We used to test for /lib/ld.so.1 and disable shared libraries on
12981 + # powerpc, because MkLinux only supported shared libraries with the
12982 + # GNU dynamic linker. Since this was broken with cross compilers,
12983 + # most powerpc-linux boxes support dynamic linking these days and
12984 + # people can always --disable-shared, the test was removed, and we
12985 + # assume the GNU/Linux dynamic linker is in use.
12986 + dynamic_linker='GNU/Linux ld.so'
12990 + version_type=sunos
12991 + need_lib_prefix=no
12993 + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
12994 + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
12995 + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
12996 + dynamic_linker='NetBSD (a.out) ld.so'
12998 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
12999 + soname_spec='${libname}${release}.so$major'
13000 + dynamic_linker='NetBSD ld.elf_so'
13002 + shlibpath_var=LD_LIBRARY_PATH
13003 + shlibpath_overrides_runpath=yes
13004 + hardcode_into_libs=yes
13008 + version_type=linux
13009 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
13010 + shlibpath_var=LD_LIBRARY_PATH
13011 + shlibpath_overrides_runpath=yes
13015 + version_type=sunos
13016 + need_lib_prefix=no
13018 + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
13019 + case "$host_os" in
13020 + openbsd2.[89] | openbsd2.[89].*)
13021 + shlibpath_overrides_runpath=no
13024 + shlibpath_overrides_runpath=yes
13028 + shlibpath_overrides_runpath=yes
13030 + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
13031 + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
13032 + shlibpath_var=LD_LIBRARY_PATH
13036 + libname_spec='$name'
13037 + need_lib_prefix=no
13038 + library_names_spec='$libname.dll $libname.a'
13039 + dynamic_linker='OS/2 ld.exe'
13040 + shlibpath_var=LIBPATH
13043 +osf3* | osf4* | osf5*)
13046 + soname_spec='${libname}${release}.so'
13047 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
13048 + shlibpath_var=LD_LIBRARY_PATH
13049 + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
13050 + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
13055 + soname_spec='${libname}${release}.so$major'
13056 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
13057 + shlibpath_var=LD_LIBRARY_PATH
13061 + version_type=linux
13062 + need_lib_prefix=no
13064 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
13065 + soname_spec='${libname}${release}.so$major'
13066 + shlibpath_var=LD_LIBRARY_PATH
13067 + shlibpath_overrides_runpath=yes
13068 + hardcode_into_libs=yes
13069 + # ldd complains unless libraries are executable
13070 + postinstall_cmds='chmod +x $lib'
13074 + version_type=sunos
13075 + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
13076 + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
13077 + shlibpath_var=LD_LIBRARY_PATH
13078 + shlibpath_overrides_runpath=yes
13079 + if test "$with_gnu_ld" = yes; then
13080 + need_lib_prefix=no
13085 +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
13086 + version_type=linux
13087 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
13088 + soname_spec='${libname}${release}.so$major'
13089 + shlibpath_var=LD_LIBRARY_PATH
13090 + case $host_vendor in
13092 + shlibpath_overrides_runpath=no
13095 + need_lib_prefix=no
13097 + shlibpath_overrides_runpath=no
13098 + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
13104 + version_type=linux
13105 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
13106 + soname_spec='${libname}${release}.so$major'
13107 + shlibpath_var=LD_LIBRARY_PATH
13111 + version_type=linux
13112 + need_lib_prefix=no
13114 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
13115 + soname_spec='${libname}${release}.so$major'
13116 + shlibpath_var=LD_LIBRARY_PATH
13120 + if test -d /usr/nec ;then
13121 + version_type=linux
13122 + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
13123 + soname_spec='$libname.so.$major'
13124 + shlibpath_var=LD_LIBRARY_PATH
13129 + dynamic_linker=no
13132 +echo "$as_me:$LINENO: result: $dynamic_linker" >&5
13133 +echo "${ECHO_T}$dynamic_linker" >&6
13134 +test "$dynamic_linker" = no && can_build_shared=no
13136 +# Report the final consequences.
13137 +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
13138 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
13139 +echo "$as_me:$LINENO: result: $can_build_shared" >&5
13140 +echo "${ECHO_T}$can_build_shared" >&6
13142 +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
13143 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
13144 +test "$can_build_shared" = "no" && enable_shared=no
13146 +# On AIX, shared libraries and static libraries use the same namespace, and
13147 +# are all built from PIC.
13148 +case "$host_os" in
13150 + test "$enable_shared" = yes && enable_static=no
13151 + if test -n "$RANLIB"; then
13152 + archive_cmds="$archive_cmds~\$RANLIB \$lib"
13153 + postinstall_cmds='$RANLIB $lib'
13158 + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
13159 + test "$enable_shared" = yes && enable_static=no
13163 +echo "$as_me:$LINENO: result: $enable_shared" >&5
13164 +echo "${ECHO_T}$enable_shared" >&6
13166 +echo "$as_me:$LINENO: checking whether to build static libraries" >&5
13167 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
13168 +# Make sure either enable_shared or enable_static is yes.
13169 +test "$enable_shared" = yes || enable_static=yes
13170 +echo "$as_me:$LINENO: result: $enable_static" >&5
13171 +echo "${ECHO_T}$enable_static" >&6
13173 +if test "$hardcode_action" = relink; then
13174 + # Fast installation is not supported
13175 + enable_fast_install=no
13176 +elif test "$shlibpath_overrides_runpath" = yes ||
13177 + test "$enable_shared" = no; then
13178 + # Fast installation is not necessary
13179 + enable_fast_install=needless
13182 +variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
13183 +if test "$GCC" = yes; then
13184 + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
13187 +if test "x$enable_dlopen" != xyes; then
13188 + enable_dlopen=unknown
13189 + enable_dlopen_self=unknown
13190 + enable_dlopen_self_static=unknown
13193 + lt_cv_dlopen_libs=
13197 + lt_cv_dlopen="load_add_on"
13198 + lt_cv_dlopen_libs=
13199 + lt_cv_dlopen_self=yes
13202 + cygwin* | mingw* | pw32*)
13203 + lt_cv_dlopen="LoadLibrary"
13204 + lt_cv_dlopen_libs=
13208 + echo "$as_me:$LINENO: checking for shl_load" >&5
13209 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
13210 +if test "${ac_cv_func_shl_load+set}" = set; then
13211 + echo $ECHO_N "(cached) $ECHO_C" >&6
13213 + cat >conftest.$ac_ext <<_ACEOF
13214 +#line $LINENO "configure"
13215 +#include "confdefs.h"
13216 +/* System header to define __stub macros and hopefully few prototypes,
13217 + which can conflict with char shl_load (); below. */
13218 +#include <assert.h>
13219 +/* Override any gcc2 internal prototype to avoid an error. */
13220 +#ifdef __cplusplus
13223 +/* We use char because int might match the return type of a gcc2
13224 + builtin and then its argument prototype would still apply. */
13231 +/* The GNU C library defines this for functions which it implements
13232 + to always fail with ENOSYS. Some functions are actually named
13233 + something starting with __ and the normal name is an alias. */
13234 +#if defined (__stub_shl_load) || defined (__stub___shl_load)
13244 +rm -f conftest.$ac_objext conftest$ac_exeext
13245 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13246 + (eval $ac_link) 2>&5
13248 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13249 + (exit $ac_status); } &&
13250 + { ac_try='test -s conftest$ac_exeext'
13251 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
13252 + (eval $ac_try) 2>&5
13254 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13255 + (exit $ac_status); }; }; then
13256 + ac_cv_func_shl_load=yes
13258 + echo "$as_me: failed program was:" >&5
13259 +cat conftest.$ac_ext >&5
13260 +ac_cv_func_shl_load=no
13262 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
13264 +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
13265 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6
13266 +if test $ac_cv_func_shl_load = yes; then
13267 + lt_cv_dlopen="shl_load"
13269 + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
13270 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
13271 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then
13272 + echo $ECHO_N "(cached) $ECHO_C" >&6
13274 + ac_check_lib_save_LIBS=$LIBS
13275 +LIBS="-ldld $LIBS"
13276 +cat >conftest.$ac_ext <<_ACEOF
13277 +#line $LINENO "configure"
13278 +#include "confdefs.h"
13280 +/* Override any gcc2 internal prototype to avoid an error. */
13281 +#ifdef __cplusplus
13284 +/* We use char because int might match the return type of a gcc2
13285 + builtin and then its argument prototype would still apply. */
13295 +rm -f conftest.$ac_objext conftest$ac_exeext
13296 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13297 + (eval $ac_link) 2>&5
13299 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13300 + (exit $ac_status); } &&
13301 + { ac_try='test -s conftest$ac_exeext'
13302 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
13303 + (eval $ac_try) 2>&5
13305 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13306 + (exit $ac_status); }; }; then
13307 + ac_cv_lib_dld_shl_load=yes
13309 + echo "$as_me: failed program was:" >&5
13310 +cat conftest.$ac_ext >&5
13311 +ac_cv_lib_dld_shl_load=no
13313 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
13314 +LIBS=$ac_check_lib_save_LIBS
13316 +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
13317 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
13318 +if test $ac_cv_lib_dld_shl_load = yes; then
13319 + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
13321 + echo "$as_me:$LINENO: checking for dlopen" >&5
13322 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
13323 +if test "${ac_cv_func_dlopen+set}" = set; then
13324 + echo $ECHO_N "(cached) $ECHO_C" >&6
13326 + cat >conftest.$ac_ext <<_ACEOF
13327 +#line $LINENO "configure"
13328 +#include "confdefs.h"
13329 +/* System header to define __stub macros and hopefully few prototypes,
13330 + which can conflict with char dlopen (); below. */
13331 +#include <assert.h>
13332 +/* Override any gcc2 internal prototype to avoid an error. */
13333 +#ifdef __cplusplus
13336 +/* We use char because int might match the return type of a gcc2
13337 + builtin and then its argument prototype would still apply. */
13344 +/* The GNU C library defines this for functions which it implements
13345 + to always fail with ENOSYS. Some functions are actually named
13346 + something starting with __ and the normal name is an alias. */
13347 +#if defined (__stub_dlopen) || defined (__stub___dlopen)
13357 +rm -f conftest.$ac_objext conftest$ac_exeext
13358 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13359 + (eval $ac_link) 2>&5
13361 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13362 + (exit $ac_status); } &&
13363 + { ac_try='test -s conftest$ac_exeext'
13364 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
13365 + (eval $ac_try) 2>&5
13367 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13368 + (exit $ac_status); }; }; then
13369 + ac_cv_func_dlopen=yes
13371 + echo "$as_me: failed program was:" >&5
13372 +cat conftest.$ac_ext >&5
13373 +ac_cv_func_dlopen=no
13375 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
13377 +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
13378 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6
13379 +if test $ac_cv_func_dlopen = yes; then
13380 + lt_cv_dlopen="dlopen"
13382 + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
13383 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
13384 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then
13385 + echo $ECHO_N "(cached) $ECHO_C" >&6
13387 + ac_check_lib_save_LIBS=$LIBS
13389 +cat >conftest.$ac_ext <<_ACEOF
13390 +#line $LINENO "configure"
13391 +#include "confdefs.h"
13393 +/* Override any gcc2 internal prototype to avoid an error. */
13394 +#ifdef __cplusplus
13397 +/* We use char because int might match the return type of a gcc2
13398 + builtin and then its argument prototype would still apply. */
13408 +rm -f conftest.$ac_objext conftest$ac_exeext
13409 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13410 + (eval $ac_link) 2>&5
13412 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13413 + (exit $ac_status); } &&
13414 + { ac_try='test -s conftest$ac_exeext'
13415 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
13416 + (eval $ac_try) 2>&5
13418 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13419 + (exit $ac_status); }; }; then
13420 + ac_cv_lib_dl_dlopen=yes
13422 + echo "$as_me: failed program was:" >&5
13423 +cat conftest.$ac_ext >&5
13424 +ac_cv_lib_dl_dlopen=no
13426 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
13427 +LIBS=$ac_check_lib_save_LIBS
13429 +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
13430 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
13431 +if test $ac_cv_lib_dl_dlopen = yes; then
13432 + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
13434 + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
13435 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
13436 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then
13437 + echo $ECHO_N "(cached) $ECHO_C" >&6
13439 + ac_check_lib_save_LIBS=$LIBS
13440 +LIBS="-lsvld $LIBS"
13441 +cat >conftest.$ac_ext <<_ACEOF
13442 +#line $LINENO "configure"
13443 +#include "confdefs.h"
13445 +/* Override any gcc2 internal prototype to avoid an error. */
13446 +#ifdef __cplusplus
13449 +/* We use char because int might match the return type of a gcc2
13450 + builtin and then its argument prototype would still apply. */
13460 +rm -f conftest.$ac_objext conftest$ac_exeext
13461 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13462 + (eval $ac_link) 2>&5
13464 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13465 + (exit $ac_status); } &&
13466 + { ac_try='test -s conftest$ac_exeext'
13467 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
13468 + (eval $ac_try) 2>&5
13470 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13471 + (exit $ac_status); }; }; then
13472 + ac_cv_lib_svld_dlopen=yes
13474 + echo "$as_me: failed program was:" >&5
13475 +cat conftest.$ac_ext >&5
13476 +ac_cv_lib_svld_dlopen=no
13478 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
13479 +LIBS=$ac_check_lib_save_LIBS
13481 +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
13482 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
13483 +if test $ac_cv_lib_svld_dlopen = yes; then
13484 + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
13486 + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
13487 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
13488 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then
13489 + echo $ECHO_N "(cached) $ECHO_C" >&6
13491 + ac_check_lib_save_LIBS=$LIBS
13492 +LIBS="-ldld $LIBS"
13493 +cat >conftest.$ac_ext <<_ACEOF
13494 +#line $LINENO "configure"
13495 +#include "confdefs.h"
13497 +/* Override any gcc2 internal prototype to avoid an error. */
13498 +#ifdef __cplusplus
13501 +/* We use char because int might match the return type of a gcc2
13502 + builtin and then its argument prototype would still apply. */
13512 +rm -f conftest.$ac_objext conftest$ac_exeext
13513 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13514 + (eval $ac_link) 2>&5
13516 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13517 + (exit $ac_status); } &&
13518 + { ac_try='test -s conftest$ac_exeext'
13519 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
13520 + (eval $ac_try) 2>&5
13522 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13523 + (exit $ac_status); }; }; then
13524 + ac_cv_lib_dld_dld_link=yes
13526 + echo "$as_me: failed program was:" >&5
13527 +cat conftest.$ac_ext >&5
13528 +ac_cv_lib_dld_dld_link=no
13530 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
13531 +LIBS=$ac_check_lib_save_LIBS
13533 +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
13534 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
13535 +if test $ac_cv_lib_dld_dld_link = yes; then
13536 + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
13557 + if test "x$lt_cv_dlopen" != xno; then
13558 + enable_dlopen=yes
13563 + case $lt_cv_dlopen in
13565 + save_CPPFLAGS="$CPPFLAGS"
13566 + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
13568 + save_LDFLAGS="$LDFLAGS"
13569 + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
13571 + save_LIBS="$LIBS"
13572 + LIBS="$lt_cv_dlopen_libs $LIBS"
13574 + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
13575 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
13576 +if test "${lt_cv_dlopen_self+set}" = set; then
13577 + echo $ECHO_N "(cached) $ECHO_C" >&6
13579 + if test "$cross_compiling" = yes; then :
13580 + lt_cv_dlopen_self=cross
13582 + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
13583 + lt_status=$lt_dlunknown
13584 + cat > conftest.$ac_ext <<EOF
13585 +#line __oline__ "configure"
13586 +#include "confdefs.h"
13589 +#include <dlfcn.h>
13592 +#include <stdio.h>
13594 +#ifdef RTLD_GLOBAL
13595 +# define LT_DLGLOBAL RTLD_GLOBAL
13598 +# define LT_DLGLOBAL DL_GLOBAL
13600 +# define LT_DLGLOBAL 0
13604 +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
13605 + find out it does not work in some platform. */
13606 +#ifndef LT_DLLAZY_OR_NOW
13608 +# define LT_DLLAZY_OR_NOW RTLD_LAZY
13611 +# define LT_DLLAZY_OR_NOW DL_LAZY
13614 +# define LT_DLLAZY_OR_NOW RTLD_NOW
13617 +# define LT_DLLAZY_OR_NOW DL_NOW
13619 +# define LT_DLLAZY_OR_NOW 0
13626 +#ifdef __cplusplus
13627 +extern "C" void exit (int);
13630 +void fnord() { int i=42;}
13633 + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
13634 + int status = $lt_dlunknown;
13638 + if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
13639 + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
13640 + /* dlclose (self); */
13646 + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13647 + (eval $ac_link) 2>&5
13649 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13650 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
13651 + (./conftest; exit; ) 2>/dev/null
13653 + case x$lt_status in
13654 + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
13655 + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
13656 + x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
13659 + # compilation failed
13660 + lt_cv_dlopen_self=no
13667 +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
13668 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6
13670 + if test "x$lt_cv_dlopen_self" = xyes; then
13671 + LDFLAGS="$LDFLAGS $link_static_flag"
13672 + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
13673 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
13674 +if test "${lt_cv_dlopen_self_static+set}" = set; then
13675 + echo $ECHO_N "(cached) $ECHO_C" >&6
13677 + if test "$cross_compiling" = yes; then :
13678 + lt_cv_dlopen_self_static=cross
13680 + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
13681 + lt_status=$lt_dlunknown
13682 + cat > conftest.$ac_ext <<EOF
13683 +#line __oline__ "configure"
13684 +#include "confdefs.h"
13687 +#include <dlfcn.h>
13690 +#include <stdio.h>
13692 +#ifdef RTLD_GLOBAL
13693 +# define LT_DLGLOBAL RTLD_GLOBAL
13696 +# define LT_DLGLOBAL DL_GLOBAL
13698 +# define LT_DLGLOBAL 0
13702 +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
13703 + find out it does not work in some platform. */
13704 +#ifndef LT_DLLAZY_OR_NOW
13706 +# define LT_DLLAZY_OR_NOW RTLD_LAZY
13709 +# define LT_DLLAZY_OR_NOW DL_LAZY
13712 +# define LT_DLLAZY_OR_NOW RTLD_NOW
13715 +# define LT_DLLAZY_OR_NOW DL_NOW
13717 +# define LT_DLLAZY_OR_NOW 0
13724 +#ifdef __cplusplus
13725 +extern "C" void exit (int);
13728 +void fnord() { int i=42;}
13731 + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
13732 + int status = $lt_dlunknown;
13736 + if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
13737 + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
13738 + /* dlclose (self); */
13744 + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13745 + (eval $ac_link) 2>&5
13747 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13748 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
13749 + (./conftest; exit; ) 2>/dev/null
13751 + case x$lt_status in
13752 + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
13753 + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
13754 + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
13757 + # compilation failed
13758 + lt_cv_dlopen_self_static=no
13765 +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
13766 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
13769 + CPPFLAGS="$save_CPPFLAGS"
13770 + LDFLAGS="$save_LDFLAGS"
13771 + LIBS="$save_LIBS"
13775 + case $lt_cv_dlopen_self in
13776 + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
13777 + *) enable_dlopen_self=unknown ;;
13780 + case $lt_cv_dlopen_self_static in
13781 + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
13782 + *) enable_dlopen_self_static=unknown ;;
13787 +if test "$enable_shared" = yes && test "$GCC" = yes; then
13788 + case $archive_cmds in
13790 + # FIXME: we may have to deal with multi-command sequences.
13793 + # Test whether the compiler implicitly links with -lc since on some
13794 + # systems, -lgcc has to come before -lc. If gcc already passes -lc
13795 + # to ld, don't add -lc before -lgcc.
13796 + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
13797 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
13798 + if test "${lt_cv_archive_cmds_need_lc+set}" = set; then
13799 + echo $ECHO_N "(cached) $ECHO_C" >&6
13802 + echo 'static int dummy;' > conftest.$ac_ext
13804 + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
13805 + (eval $ac_compile) 2>&5
13807 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13808 + (exit $ac_status); }; then
13811 + libobjs=conftest.$ac_objext
13813 + wl=$lt_cv_prog_cc_wl
13814 + compiler_flags=-v
13819 + save_allow_undefined_flag=$allow_undefined_flag
13820 + allow_undefined_flag=
13821 + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
13822 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
13824 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13825 + (exit $ac_status); }
13827 + lt_cv_archive_cmds_need_lc=no
13829 + lt_cv_archive_cmds_need_lc=yes
13831 + allow_undefined_flag=$save_allow_undefined_flag
13833 + cat conftest.err 1>&5
13837 + echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5
13838 +echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6
13842 +need_lc=${lt_cv_archive_cmds_need_lc-yes}
13844 +# The second clause should only fire when bootstrapping the
13845 +# libtool distribution, otherwise you forgot to ship ltmain.sh
13846 +# with your package, and you will get complaints that there are
13847 +# no rules to generate ltmain.sh.
13848 +if test -f "$ltmain"; then
13851 + # If there is no Makefile yet, we rely on a make rule to execute
13852 + # `config.status --recheck' to rerun these tests and create the
13853 + # libtool script then.
13854 + test -f Makefile && make "$ltmain"
13857 +if test -f "$ltmain"; then
13858 + trap "$rm \"${ofile}T\"; exit 1" 1 2 15
13859 + $rm -f "${ofile}T"
13861 + echo creating $ofile
13863 + # Now quote all the things that may contain metacharacters while being
13864 + # careful not to overquote the AC_SUBSTed values. We take copies of the
13865 + # variables and quote the copies for generation of the libtool script.
13866 + for var in echo old_CC old_CFLAGS \
13867 + AR AR_FLAGS CC LD LN_S NM SHELL \
13868 + reload_flag reload_cmds wl \
13869 + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
13870 + thread_safe_flag_spec whole_archive_flag_spec libname_spec \
13871 + library_names_spec soname_spec \
13872 + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
13873 + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
13874 + postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
13875 + old_striplib striplib file_magic_cmd export_symbols_cmds \
13876 + deplibs_check_method allow_undefined_flag no_undefined_flag \
13877 + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
13878 + global_symbol_to_c_name_address \
13879 + hardcode_libdir_flag_spec hardcode_libdir_separator \
13880 + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
13881 + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
13884 + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
13885 + old_postinstall_cmds | old_postuninstall_cmds | \
13886 + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
13887 + extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
13888 + postinstall_cmds | postuninstall_cmds | \
13889 + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
13890 + # Double-quote double-evaled strings.
13891 + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
13894 + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
13899 + cat <<__EOF__ > "${ofile}T"
13902 +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
13903 +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
13904 +# NOTE: Changes made to this file will be lost: look at ltmain.sh.
13906 +# Copyright (C) 1996-2000 Free Software Foundation, Inc.
13907 +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
13909 +# This program is free software; you can redistribute it and/or modify
13910 +# it under the terms of the GNU General Public License as published by
13911 +# the Free Software Foundation; either version 2 of the License, or
13912 +# (at your option) any later version.
13914 +# This program is distributed in the hope that it will be useful, but
13915 +# WITHOUT ANY WARRANTY; without even the implied warranty of
13916 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13917 +# General Public License for more details.
13919 +# You should have received a copy of the GNU General Public License
13920 +# along with this program; if not, write to the Free Software
13921 +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
13923 +# As a special exception to the GNU General Public License, if you
13924 +# distribute this file as part of a program that contains a
13925 +# configuration script generated by Autoconf, you may include it under
13926 +# the same distribution terms that you use for the rest of that program.
13928 +# Sed that helps us avoid accidentally triggering echo(1) options like -n.
13929 +Xsed="sed -e s/^X//"
13931 +# The HP-UX ksh and POSIX shell print the target directory to stdout
13932 +# if CDPATH is set.
13933 +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
13935 +# ### BEGIN LIBTOOL CONFIG
13937 +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
13939 +# Shell to use when invoking shell scripts.
13942 +# Whether or not to build shared libraries.
13943 +build_libtool_libs=$enable_shared
13945 +# Whether or not to build static libraries.
13946 +build_old_libs=$enable_static
13948 +# Whether or not to add -lc for building shared libraries.
13949 +build_libtool_need_lc=$need_lc
13951 +# Whether or not to optimize for fast installation.
13952 +fast_install=$enable_fast_install
13954 +# The host system.
13955 +host_alias=$host_alias
13958 +# An echo program that does not interpret backslashes.
13963 +AR_FLAGS=$lt_AR_FLAGS
13965 +# The default C compiler.
13968 +# Is the compiler the GNU C compiler?
13971 +# The linker used to build libraries.
13974 +# Whether we need hard or soft links.
13977 +# A BSD-compatible nm program.
13980 +# A symbol stripping program
13983 +# Used to examine libraries when file_magic_cmd begins "file"
13984 +MAGIC_CMD=$MAGIC_CMD
13986 +# Used on cygwin: DLL creation program.
13987 +DLLTOOL="$DLLTOOL"
13989 +# Used on cygwin: object dumper.
13990 +OBJDUMP="$OBJDUMP"
13992 +# Used on cygwin: assembler.
13995 +# The name of the directory that contains temporary libtool files.
13998 +# How to create reloadable object files.
13999 +reload_flag=$lt_reload_flag
14000 +reload_cmds=$lt_reload_cmds
14002 +# How to pass a linker flag through the compiler.
14005 +# Object file suffix (normally "o").
14006 +objext="$ac_objext"
14008 +# Old archive suffix (normally "a").
14011 +# Executable file suffix (normally "").
14014 +# Additional compiler flags for building library objects.
14015 +pic_flag=$lt_pic_flag
14016 +pic_mode=$pic_mode
14018 +# Does compiler simultaneously support -c and -o options?
14019 +compiler_c_o=$lt_compiler_c_o
14021 +# Can we write directly to a .lo ?
14022 +compiler_o_lo=$lt_compiler_o_lo
14024 +# Must we lock files when doing compilation ?
14025 +need_locks=$lt_need_locks
14027 +# Do we need the lib prefix for modules?
14028 +need_lib_prefix=$need_lib_prefix
14030 +# Do we need a version for libraries?
14031 +need_version=$need_version
14033 +# Whether dlopen is supported.
14034 +dlopen_support=$enable_dlopen
14036 +# Whether dlopen of programs is supported.
14037 +dlopen_self=$enable_dlopen_self
14039 +# Whether dlopen of statically linked programs is supported.
14040 +dlopen_self_static=$enable_dlopen_self_static
14042 +# Compiler flag to prevent dynamic linking.
14043 +link_static_flag=$lt_link_static_flag
14045 +# Compiler flag to turn off builtin functions.
14046 +no_builtin_flag=$lt_no_builtin_flag
14048 +# Compiler flag to allow reflexive dlopens.
14049 +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
14051 +# Compiler flag to generate shared objects directly from archives.
14052 +whole_archive_flag_spec=$lt_whole_archive_flag_spec
14054 +# Compiler flag to generate thread-safe objects.
14055 +thread_safe_flag_spec=$lt_thread_safe_flag_spec
14057 +# Library versioning type.
14058 +version_type=$version_type
14060 +# Format of library name prefix.
14061 +libname_spec=$lt_libname_spec
14063 +# List of archive names. First name is the real one, the rest are links.
14064 +# The last name is the one that the linker finds with -lNAME.
14065 +library_names_spec=$lt_library_names_spec
14067 +# The coded name of the library, if different from the real name.
14068 +soname_spec=$lt_soname_spec
14070 +# Commands used to build and install an old-style archive.
14072 +old_archive_cmds=$lt_old_archive_cmds
14073 +old_postinstall_cmds=$lt_old_postinstall_cmds
14074 +old_postuninstall_cmds=$lt_old_postuninstall_cmds
14076 +# Create an old-style archive from a shared archive.
14077 +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
14079 +# Create a temporary old-style archive to link instead of a shared archive.
14080 +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
14082 +# Commands used to build and install a shared archive.
14083 +archive_cmds=$lt_archive_cmds
14084 +archive_expsym_cmds=$lt_archive_expsym_cmds
14085 +postinstall_cmds=$lt_postinstall_cmds
14086 +postuninstall_cmds=$lt_postuninstall_cmds
14088 +# Commands to strip libraries.
14089 +old_striplib=$lt_old_striplib
14090 +striplib=$lt_striplib
14092 +# Method to check whether dependent libraries are shared objects.
14093 +deplibs_check_method=$lt_deplibs_check_method
14095 +# Command to use when deplibs_check_method == file_magic.
14096 +file_magic_cmd=$lt_file_magic_cmd
14098 +# Flag that allows shared libraries with undefined symbols to be built.
14099 +allow_undefined_flag=$lt_allow_undefined_flag
14101 +# Flag that forces no undefined symbols.
14102 +no_undefined_flag=$lt_no_undefined_flag
14104 +# Commands used to finish a libtool library installation in a directory.
14105 +finish_cmds=$lt_finish_cmds
14107 +# Same as above, but a single script fragment to be evaled but not shown.
14108 +finish_eval=$lt_finish_eval
14110 +# Take the output of nm and produce a listing of raw symbols and C names.
14111 +global_symbol_pipe=$lt_global_symbol_pipe
14113 +# Transform the output of nm in a proper C declaration
14114 +global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
14116 +# Transform the output of nm in a C name address pair
14117 +global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
14119 +# This is the shared library runtime path variable.
14120 +runpath_var=$runpath_var
14122 +# This is the shared library path variable.
14123 +shlibpath_var=$shlibpath_var
14125 +# Is shlibpath searched before the hard-coded library search path?
14126 +shlibpath_overrides_runpath=$shlibpath_overrides_runpath
14128 +# How to hardcode a shared library path into an executable.
14129 +hardcode_action=$hardcode_action
14131 +# Whether we should hardcode library paths into libraries.
14132 +hardcode_into_libs=$hardcode_into_libs
14134 +# Flag to hardcode \$libdir into a binary during linking.
14135 +# This must work even if \$libdir does not exist.
14136 +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
14138 +# Whether we need a single -rpath flag with a separated argument.
14139 +hardcode_libdir_separator=$lt_hardcode_libdir_separator
14141 +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
14142 +# resulting binary.
14143 +hardcode_direct=$hardcode_direct
14145 +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
14146 +# resulting binary.
14147 +hardcode_minus_L=$hardcode_minus_L
14149 +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
14150 +# the resulting binary.
14151 +hardcode_shlibpath_var=$hardcode_shlibpath_var
14153 +# Variables whose values should be saved in libtool wrapper scripts and
14154 +# restored at relink time.
14155 +variables_saved_for_relink="$variables_saved_for_relink"
14157 +# Whether libtool must link a program against all its dependency libraries.
14158 +link_all_deplibs=$link_all_deplibs
14160 +# Compile-time system search path for libraries
14161 +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
14163 +# Run-time system search path for libraries
14164 +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
14166 +# Fix the shell variable \$srcfile for the compiler.
14167 +fix_srcfile_path="$fix_srcfile_path"
14169 +# Set to yes if exported symbols are required.
14170 +always_export_symbols=$always_export_symbols
14172 +# The commands to list exported symbols.
14173 +export_symbols_cmds=$lt_export_symbols_cmds
14175 +# The commands to extract the exported symbol list from a shared archive.
14176 +extract_expsyms_cmds=$lt_extract_expsyms_cmds
14178 +# Symbols that should not be listed in the preloaded symbols.
14179 +exclude_expsyms=$lt_exclude_expsyms
14181 +# Symbols that must always be exported.
14182 +include_expsyms=$lt_include_expsyms
14184 +# ### END LIBTOOL CONFIG
14190 + cat <<\EOF >> "${ofile}T"
14192 +# AIX sometimes has problems with the GCC collect2 program. For some
14193 +# reason, if we set the COLLECT_NAMES environment variable, the problems
14194 +# vanish in a puff of smoke.
14195 +if test "X${COLLECT_NAMES+set}" != Xset; then
14197 + export COLLECT_NAMES
14204 + cygwin* | mingw* | pw32* | os2*)
14205 + cat <<'EOF' >> "${ofile}T"
14206 + # This is a source program that is used to create dlls on Windows
14207 + # Don't remove nor modify the starting and closing comments
14208 +# /* ltdll.c starts here */
14209 +# #define WIN32_LEAN_AND_MEAN
14210 +# #include <windows.h>
14211 +# #undef WIN32_LEAN_AND_MEAN
14212 +# #include <stdio.h>
14214 +# #ifndef __CYGWIN__
14215 +# # ifdef __CYGWIN32__
14216 +# # define __CYGWIN__ __CYGWIN32__
14220 +# #ifdef __cplusplus
14223 +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
14224 +# #ifdef __cplusplus
14228 +# #ifdef __CYGWIN__
14229 +# #include <cygwin/cygwin_dll.h>
14230 +# DECLARE_CYGWIN_DLL( DllMain );
14232 +# HINSTANCE __hDllInstance_base;
14235 +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
14237 +# __hDllInstance_base = hInst;
14240 +# /* ltdll.c ends here */
14241 + # This is a source program that is used to create import libraries
14242 + # on Windows for dlls which lack them. Don't remove nor modify the
14243 + # starting and closing comments
14244 +# /* impgen.c starts here */
14245 +# /* Copyright (C) 1999-2000 Free Software Foundation, Inc.
14247 +# This file is part of GNU libtool.
14249 +# This program is free software; you can redistribute it and/or modify
14250 +# it under the terms of the GNU General Public License as published by
14251 +# the Free Software Foundation; either version 2 of the License, or
14252 +# (at your option) any later version.
14254 +# This program is distributed in the hope that it will be useful,
14255 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
14256 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14257 +# GNU General Public License for more details.
14259 +# You should have received a copy of the GNU General Public License
14260 +# along with this program; if not, write to the Free Software
14261 +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
14264 +# #include <stdio.h> /* for printf() */
14265 +# #include <unistd.h> /* for open(), lseek(), read() */
14266 +# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
14267 +# #include <string.h> /* for strdup() */
14269 +# /* O_BINARY isn't required (or even defined sometimes) under Unix */
14270 +# #ifndef O_BINARY
14271 +# #define O_BINARY 0
14274 +# static unsigned int
14275 +# pe_get16 (fd, offset)
14279 +# unsigned char b[2];
14280 +# lseek (fd, offset, SEEK_SET);
14281 +# read (fd, b, 2);
14282 +# return b[0] + (b[1]<<8);
14285 +# static unsigned int
14286 +# pe_get32 (fd, offset)
14290 +# unsigned char b[4];
14291 +# lseek (fd, offset, SEEK_SET);
14292 +# read (fd, b, 4);
14293 +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
14296 +# static unsigned int
14300 +# unsigned char *b = ptr;
14301 +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
14305 +# main (argc, argv)
14310 +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
14311 +# unsigned long export_rva, export_size, nsections, secptr, expptr;
14312 +# unsigned long name_rvas, nexp;
14313 +# unsigned char *expdata, *erva;
14314 +# char *filename, *dll_name;
14316 +# filename = argv[1];
14318 +# dll = open(filename, O_RDONLY|O_BINARY);
14322 +# dll_name = filename;
14324 +# for (i=0; filename[i]; i++)
14325 +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
14326 +# dll_name = filename + i +1;
14328 +# pe_header_offset = pe_get32 (dll, 0x3c);
14329 +# opthdr_ofs = pe_header_offset + 4 + 20;
14330 +# num_entries = pe_get32 (dll, opthdr_ofs + 92);
14332 +# if (num_entries < 1) /* no exports */
14335 +# export_rva = pe_get32 (dll, opthdr_ofs + 96);
14336 +# export_size = pe_get32 (dll, opthdr_ofs + 100);
14337 +# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
14338 +# secptr = (pe_header_offset + 4 + 20 +
14339 +# pe_get16 (dll, pe_header_offset + 4 + 16));
14342 +# for (i = 0; i < nsections; i++)
14345 +# unsigned long secptr1 = secptr + 40 * i;
14346 +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
14347 +# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
14348 +# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
14349 +# lseek(dll, secptr1, SEEK_SET);
14350 +# read(dll, sname, 8);
14351 +# if (vaddr <= export_rva && vaddr+vsize > export_rva)
14353 +# expptr = fptr + (export_rva - vaddr);
14354 +# if (export_rva + export_size > vaddr + vsize)
14355 +# export_size = vsize - (export_rva - vaddr);
14360 +# expdata = (unsigned char*)malloc(export_size);
14361 +# lseek (dll, expptr, SEEK_SET);
14362 +# read (dll, expdata, export_size);
14363 +# erva = expdata - export_rva;
14365 +# nexp = pe_as32 (expdata+24);
14366 +# name_rvas = pe_as32 (expdata+32);
14368 +# printf ("EXPORTS\n");
14369 +# for (i = 0; i<nexp; i++)
14371 +# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
14372 +# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
14377 +# /* impgen.c ends here */
14383 + # We use sed instead of cat because bash on DJGPP gets confused if
14384 + # if finds mixed CR/LF and LF-only lines. Since sed operates in
14385 + # text mode, it properly converts lines to CR/LF. This bash problem
14386 + # is reportedly fixed, but why not run on old versions too?
14387 + sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
14389 + mv -f "${ofile}T" "$ofile" || \
14390 + (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
14391 + chmod +x "$ofile"
14398 +# This can be used to rebuild libtool when needed
14399 +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
14401 +# Always use our own libtool.
14402 +LIBTOOL='$(SHELL) $(top_builddir)/libtool'
14404 +# Prevent multiple expansion
14409 +# Check whether --with-target-subdir or --without-target-subdir was given.
14410 +if test "${with_target_subdir+set}" = set; then
14411 + withval="$with_target_subdir"
14415 +# Check whether --with-cross-host or --without-cross-host was given.
14416 +if test "${with_cross_host+set}" = set; then
14417 + withval="$with_cross_host"
14421 +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
14422 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
14423 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
14424 +if test "${enable_maintainer_mode+set}" = set; then
14425 + enableval="$enable_maintainer_mode"
14426 + USE_MAINTAINER_MODE=$enableval
14428 + USE_MAINTAINER_MODE=no
14430 + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
14431 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
14434 +if test $USE_MAINTAINER_MODE = yes; then
14435 + MAINTAINER_MODE_TRUE=
14436 + MAINTAINER_MODE_FALSE='#'
14438 + MAINTAINER_MODE_TRUE='#'
14439 + MAINTAINER_MODE_FALSE=
14442 + MAINT=$MAINTAINER_MODE_TRUE
14445 +# automake wants to see AC_EXEEXT. But we don't need it. And having
14446 +# it is actually a problem, because the compiler we're passed can't
14447 +# necessarily do a full link. So we fool automake here.
14449 + # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
14450 + # to nothing, so nothing would remain between `then' and `fi' if it
14451 + # were not for the `:' below.
14456 +echo "$as_me:$LINENO: checking for thread model used by GCC" >&5
14457 +echo $ECHO_N "checking for thread model used by GCC... $ECHO_C" >&6
14458 +THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
14459 +if test -z "$THREADS"; then
14462 +echo "$as_me:$LINENO: result: $THREADS" >&5
14463 +echo "${ECHO_T}$THREADS" >&6
14465 +# Check whether --enable-parallel-mark or --disable-parallel-mark was given.
14466 +if test "${enable_parallel_mark+set}" = set; then
14467 + enableval="$enable_parallel_mark"
14468 + case "$THREADS" in
14469 + no | none | single)
14470 + { { echo "$as_me:$LINENO: error: Parallel mark requires --enable-threads=x spec" >&5
14471 +echo "$as_me: error: Parallel mark requires --enable-threads=x spec" >&2;}
14472 + { (exit 1); exit 1; }; }
14478 +INCLUDES=-I${srcdir}/include
14480 +case "$THREADS" in
14481 + no | none | single)
14484 + posix | pthreads)
14486 + THREADLIBS=-lpthread
14488 + x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
14489 + cat >>confdefs.h <<\_ACEOF
14490 +@%:@define GC_LINUX_THREADS 1
14493 + cat >>confdefs.h <<\_ACEOF
14494 +@%:@define _REENTRANT 1
14497 + if test "${enable_parallel_mark}"; then
14498 + cat >>confdefs.h <<\_ACEOF
14499 +@%:@define PARALLEL_MARK 1
14503 + cat >>confdefs.h <<\_ACEOF
14504 +@%:@define THREAD_LOCAL_ALLOC 1
14509 + cat >>confdefs.h <<\_ACEOF
14510 +@%:@define GC_LINUX_THREADS 1
14513 + cat >>confdefs.h <<\_ACEOF
14514 +@%:@define _REENTRANT 1
14519 + { echo "$as_me:$LINENO: WARNING: \"Only HP/UX 11 threads are supported.\"" >&5
14520 +echo "$as_me: WARNING: \"Only HP/UX 11 threads are supported.\"" >&2;}
14521 + cat >>confdefs.h <<\_ACEOF
14522 +@%:@define GC_HPUX_THREADS 1
14525 + cat >>confdefs.h <<\_ACEOF
14526 +@%:@define _POSIX_C_SOURCE 199506L
14529 + if test "${enable_parallel_mark}" = yes; then
14530 + cat >>confdefs.h <<\_ACEOF
14531 +@%:@define PARALLEL_MARK 1
14535 + cat >>confdefs.h <<\_ACEOF
14536 +@%:@define THREAD_LOCAL_ALLOC 1
14539 + THREADLIBS="-lpthread -lrt"
14542 + { echo "$as_me:$LINENO: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&5
14543 +echo "$as_me: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&2;}
14544 + cat >>confdefs.h <<\_ACEOF
14545 +@%:@define GC_FREEBSD_THREADS 1
14548 + INCLUDES="$INCLUDES -pthread"
14549 + THREADLIBS=-pthread
14552 + cat >>confdefs.h <<\_ACEOF
14553 +@%:@define GC_SOLARIS_THREADS 1
14556 + cat >>confdefs.h <<\_ACEOF
14557 +@%:@define GC_SOLARIS_PTHREADS 1
14562 + cat >>confdefs.h <<\_ACEOF
14563 +@%:@define GC_IRIX_THREADS 1
14571 + cat >>confdefs.h <<\_ACEOF
14572 +@%:@define GC_DARWIN_THREADS 1
14575 + cat >>confdefs.h <<\_ACEOF
14576 +@%:@define THREAD_LOCAL_ALLOC 1
14579 + if test "${enable_parallel_mark}" = yes; then
14580 + cat >>confdefs.h <<\_ACEOF
14581 +@%:@define PARALLEL_MARK 1
14589 + cat >>confdefs.h <<\_ACEOF
14590 +@%:@define GC_WIN32_THREADS 1
14593 + cat >>confdefs.h <<\_ACEOF
14594 +@%:@define NO_GETENV 1
14598 + decosf1 | irix | mach | os2 | solaris | dce | vxworks)
14599 + { { echo "$as_me:$LINENO: error: thread package $THREADS not yet supported" >&5
14600 +echo "$as_me: error: thread package $THREADS not yet supported" >&2;}
14601 + { (exit 1); exit 1; }; }
14604 + { { echo "$as_me:$LINENO: error: $THREADS is an unknown thread package" >&5
14605 +echo "$as_me: error: $THREADS is an unknown thread package" >&2;}
14606 + { (exit 1); exit 1; }; }
14612 + powerpc-*-darwin*)
14613 + powerpc_darwin=true
14618 +if test x$powerpc_darwin = xtrue; then
14619 + POWERPC_DARWIN_TRUE=
14620 + POWERPC_DARWIN_FALSE='#'
14622 + POWERPC_DARWIN_TRUE='#'
14623 + POWERPC_DARWIN_FALSE=
14627 +# We never want libdl on darwin. It is a fake libdl that just ends up making
14628 +# dyld calls anyway
14632 + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
14633 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
14634 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then
14635 + echo $ECHO_N "(cached) $ECHO_C" >&6
14637 + ac_check_lib_save_LIBS=$LIBS
14639 +cat >conftest.$ac_ext <<_ACEOF
14640 +#line $LINENO "configure"
14641 +#include "confdefs.h"
14643 +/* Override any gcc2 internal prototype to avoid an error. */
14644 +#ifdef __cplusplus
14647 +/* We use char because int might match the return type of a gcc2
14648 + builtin and then its argument prototype would still apply. */
14658 +rm -f conftest.$ac_objext conftest$ac_exeext
14659 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
14660 + (eval $ac_link) 2>&5
14662 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
14663 + (exit $ac_status); } &&
14664 + { ac_try='test -s conftest$ac_exeext'
14665 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
14666 + (eval $ac_try) 2>&5
14668 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
14669 + (exit $ac_status); }; }; then
14670 + ac_cv_lib_dl_dlopen=yes
14672 + echo "$as_me: failed program was:" >&5
14673 +cat conftest.$ac_ext >&5
14674 +ac_cv_lib_dl_dlopen=no
14676 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
14677 +LIBS=$ac_check_lib_save_LIBS
14679 +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
14680 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
14681 +if test $ac_cv_lib_dl_dlopen = yes; then
14682 + EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl"
14690 +target_all=libgcjgc.la
14696 +# Check whether --with-ecos or --without-ecos was given.
14697 +if test "${with_ecos+set}" = set; then
14698 + withval="$with_ecos"
14699 + TARGET_ECOS="$with_ecos"
14705 +case "$TARGET_ECOS" in
14709 + cat >>confdefs.h <<\_ACEOF
14713 + CXXINCLUDES="-I${TARGET_ECOS}/include"
14714 + addobjs="$addobjs ecos.lo"
14724 + alpha*-*-openbsd*)
14725 + machdep="alpha_mach_dep.lo"
14726 + if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then
14727 + { echo "$as_me:$LINENO: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&5
14728 +echo "$as_me: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&2;}
14729 + # Check whether --enable-shared or --disable-shared was given.
14730 +if test "${enable_shared+set}" = set; then
14731 + enableval="$enable_shared"
14732 + p=${PACKAGE-default}
14733 +case $enableval in
14734 +yes) enable_shared=yes ;;
14735 +no) enable_shared=no ;;
14738 + # Look at the argument we got. We use all the common list separators.
14739 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
14740 + for pkg in $enableval; do
14741 + if test "X$pkg" = "X$p"; then
14742 + enable_shared=yes
14745 + IFS="$ac_save_ifs"
14754 + machdep="alpha_mach_dep.lo"
14756 + i?86-*-solaris2.[89]*)
14757 + cat >>confdefs.h <<\_ACEOF
14758 +@%:@define SOLARIS25_PROC_VDB_BUG_FIXED 1
14763 + machdep="mips_ultrix_mach_dep.lo"
14764 + cat >>confdefs.h <<\_ACEOF
14765 +@%:@define STACKBASE __stackbase
14768 + cat >>confdefs.h <<\_ACEOF
14769 +@%:@define DATASTART_IS_ETEXT 1
14773 + mips-dec-ultrix*)
14774 + machdep="mips_ultrix_mach-dep.lo"
14779 + machdep="mips_sgi_mach_dep.lo"
14780 + cat >>confdefs.h <<\_ACEOF
14781 +@%:@define NO_EXECUTE_PERMISSION 1
14785 + sparc-sun-solaris2.3*)
14786 + machdep="sparc_mach_dep.lo"
14787 + cat >>confdefs.h <<\_ACEOF
14788 +@%:@define SUNOS53_SHARED_LIB 1
14792 + sparc-sun-solaris2.*)
14793 + machdep="sparc_mach_dep.lo"
14796 + machdep="mach_dep.lo ia64_save_regs_in_stack.lo"
14799 +if test x"$machdep" = x; then
14800 + machdep="mach_dep.lo"
14802 +addobjs="$addobjs $machdep"
14806 + sparc-sun-solaris2*)
14807 + if test "$GCC" = yes; then
14809 + for i in $CFLAGS; do
14814 + new_CFLAGS="$new_CFLAGS $i"
14818 + CFLAGS="$new_CFLAGS"
14823 +MY_CFLAGS="$CFLAGS"
14826 +cat >>confdefs.h <<\_ACEOF
14827 +@%:@define SILENT 1
14830 +cat >>confdefs.h <<\_ACEOF
14831 +@%:@define NO_SIGNALS 1
14834 +cat >>confdefs.h <<\_ACEOF
14835 +@%:@define NO_EXECUTE_PERMISSION 1
14838 +cat >>confdefs.h <<\_ACEOF
14839 +@%:@define ALL_INTERIOR_POINTERS 1
14843 +cat >>confdefs.h <<\_ACEOF
14844 +@%:@define JAVA_FINALIZATION 1
14847 +cat >>confdefs.h <<\_ACEOF
14848 +@%:@define GC_GCJ_SUPPORT 1
14851 +cat >>confdefs.h <<\_ACEOF
14852 +@%:@define ATOMIC_UNCOLLECTABLE 1
14856 +if test -n "${with_cross_host}"; then
14857 + cat >>confdefs.h <<\_ACEOF
14858 +@%:@define NO_SIGSET 1
14861 + cat >>confdefs.h <<\_ACEOF
14862 +@%:@define NO_DEBUGGING 1
14867 +# Check whether --enable-full-debug or --disable-full-debug was given.
14868 +if test "${enable_full_debug+set}" = set; then
14869 + enableval="$enable_full_debug"
14870 + if test "$enable_full_debug" = "yes"; then
14871 + { echo "$as_me:$LINENO: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&5
14872 +echo "$as_me: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&2;}
14873 + cat >>confdefs.h <<\_ACEOF
14874 +@%:@define KEEP_BACK_PTRS 1
14877 + cat >>confdefs.h <<\_ACEOF
14878 +@%:@define DBG_HDRS_ALL 1
14883 + cat >>confdefs.h <<\_ACEOF
14884 +@%:@define MAKE_BACK_GRAPH 1
14888 + x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
14889 + cat >>confdefs.h <<\_ACEOF
14890 +@%:@define MAKE_BACK_GRAPH 1
14893 + { echo "$as_me:$LINENO: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&5
14894 +echo "$as_me: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&2;}
14895 + cat >>confdefs.h <<\_ACEOF
14896 +@%:@define SAVE_CALL_COUNT 8
14906 +if test -z "$with_cross_host"; then
14908 + USE_LIBDIR_FALSE='#'
14910 + USE_LIBDIR_TRUE='#'
14911 + USE_LIBDIR_FALSE=
14915 +if test "${multilib}" = "yes"; then
14916 + multilib_arg="--enable-multilib"
14921 + ac_config_files="$ac_config_files Makefile include/Makefile"
14922 + ac_config_commands="$ac_config_commands default"
14923 +cat >confcache <<\_ACEOF
14924 +# This file is a shell script that caches the results of configure
14925 +# tests run on this system so they can be shared between configure
14926 +# scripts and configure runs, see configure's option --config-cache.
14927 +# It is not useful on other systems. If it contains results you don't
14928 +# want to keep, you may remove or edit it.
14930 +# config.status only pays attention to the cache file if you give it
14931 +# the --recheck option to rerun configure.
14933 +# `ac_cv_env_foo' variables (set or unset) will be overridden when
14934 +# loading this file, other *unset* `ac_cv_foo' will be assigned the
14935 +# following values.
14939 +# The following way of writing the cache mishandles newlines in values,
14940 +# but we know of no workaround that is simple, portable, and efficient.
14941 +# So, don't put newlines in cache variables' values.
14942 +# Ultrix sh set writes to stderr and can't be redirected directly,
14943 +# and sets the high bit in the cache file unless we assign to the vars.
14946 + case `(ac_space=' '; set | grep ac_space) 2>&1` in
14948 + # `set' does not quote correctly, so add quotes (double-quote
14949 + # substitution turns \\\\ into \\, and sed turns \\ into \).
14952 + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
14955 + # `set' quotes correctly as required by POSIX, so do not add quotes.
14957 + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
14964 + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
14966 + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
14967 + : end' >>confcache
14968 +if cmp -s $cache_file confcache; then :; else
14969 + if test -w $cache_file; then
14970 + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
14971 + cat confcache >$cache_file
14973 + echo "not updating unwritable cache $cache_file"
14978 +test "x$prefix" = xNONE && prefix=$ac_default_prefix
14979 +# Let make expand exec_prefix.
14980 +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
14982 +# VPATH may cause trouble with some makes, so we remove $(srcdir),
14983 +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
14984 +# trailing colons and then remove the whole line if VPATH becomes empty
14985 +# (actually we leave an empty line to preserve line numbers).
14986 +if test "x$srcdir" = x.; then
14987 + ac_vpsub='/^[ ]*VPATH[ ]*=/{
14988 +s/:*\$(srcdir):*/:/;
14989 +s/:*\${srcdir}:*/:/;
14990 +s/:*@srcdir@:*/:/;
14991 +s/^\([^=]*=[ ]*\):*/\1/;
14997 +# Transform confdefs.h into DEFS.
14998 +# Protect against shell expansion while executing Makefile rules.
14999 +# Protect against Makefile macro expansion.
15001 +# If the first sed substitution is executed (which looks for macros that
15002 +# take arguments), then we branch to the quote section. Otherwise,
15003 +# look for a macro that doesn't take arguments.
15004 +cat >confdef2opt.sed <<\_ACEOF
15007 +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
15009 +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
15013 +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
15019 +# We use echo to avoid assuming a particular line-breaking character.
15020 +# The extra dot is to prevent the shell from consuming trailing
15021 +# line-breaks from the sub-command output. A line-break within
15022 +# single-quotes doesn't work because, if this script is created in a
15023 +# platform that uses two characters for line-breaks (e.g., DOS), tr
15025 +ac_LF_and_DOT=`echo; echo .`
15026 +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
15027 +rm -f confdef2opt.sed
15032 +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue
15033 + # 1. Remove the extension, and $U if already installed.
15034 + ac_i=`echo "$ac_i" |
15035 + sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
15037 + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
15038 + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
15040 +LIB@&t@OBJS=$ac_libobjs
15042 +LTLIBOBJS=$ac_ltlibobjs
15045 +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
15046 + { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
15047 +Usually this means the macro was only invoked conditionally." >&5
15048 +echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
15049 +Usually this means the macro was only invoked conditionally." >&2;}
15050 + { (exit 1); exit 1; }; }
15052 +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
15053 + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
15054 +Usually this means the macro was only invoked conditionally." >&5
15055 +echo "$as_me: error: conditional \"AMDEP\" was never defined.
15056 +Usually this means the macro was only invoked conditionally." >&2;}
15057 + { (exit 1); exit 1; }; }
15059 +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
15060 + { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
15061 +Usually this means the macro was only invoked conditionally." >&5
15062 +echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
15063 +Usually this means the macro was only invoked conditionally." >&2;}
15064 + { (exit 1); exit 1; }; }
15066 +if test -z "${POWERPC_DARWIN_TRUE}" && test -z "${POWERPC_DARWIN_FALSE}"; then
15067 + { { echo "$as_me:$LINENO: error: conditional \"POWERPC_DARWIN\" was never defined.
15068 +Usually this means the macro was only invoked conditionally." >&5
15069 +echo "$as_me: error: conditional \"POWERPC_DARWIN\" was never defined.
15070 +Usually this means the macro was only invoked conditionally." >&2;}
15071 + { (exit 1); exit 1; }; }
15073 +if test -z "${USE_LIBDIR_TRUE}" && test -z "${USE_LIBDIR_FALSE}"; then
15074 + { { echo "$as_me:$LINENO: error: conditional \"USE_LIBDIR\" was never defined.
15075 +Usually this means the macro was only invoked conditionally." >&5
15076 +echo "$as_me: error: conditional \"USE_LIBDIR\" was never defined.
15077 +Usually this means the macro was only invoked conditionally." >&2;}
15078 + { (exit 1); exit 1; }; }
15081 +: ${CONFIG_STATUS=./config.status}
15082 +ac_clean_files_save=$ac_clean_files
15083 +ac_clean_files="$ac_clean_files $CONFIG_STATUS"
15084 +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
15085 +echo "$as_me: creating $CONFIG_STATUS" >&6;}
15086 +cat >$CONFIG_STATUS <<_ACEOF
15088 +# Generated by $as_me.
15089 +# Run this file to recreate the current configuration.
15090 +# Compiler output produced by configure, useful for debugging
15091 +# configure, is in config.log if it exists.
15094 +SHELL=\${CONFIG_SHELL-$SHELL}
15097 +cat >>$CONFIG_STATUS <<\_ACEOF
15098 +## --------------------- ##
15099 +## M4sh Initialization. ##
15100 +## --------------------- ##
15102 +# Be Bourne compatible
15103 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
15106 + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
15107 + # is contrary to our usage. Disable this feature.
15108 + alias -g '${1+"$@"}'='"$@"'
15109 +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
15113 +# Support unset when possible.
15114 +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
15121 +# Work around bugs in pre-3.0 UWIN ksh.
15122 +$as_unset ENV MAIL MAILPATH
15128 +for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME
15130 + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
15131 + eval $as_var=C; export $as_var
15133 + $as_unset $as_var
15137 +# Required to use basename.
15138 +if expr a : '\(a\)' >/dev/null 2>&1; then
15144 +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
15145 + as_basename=basename
15147 + as_basename=false
15151 +# Name of the executable.
15152 +as_me=`$as_basename "$0" ||
15153 +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
15154 + X"$0" : 'X\(//\)$' \| \
15155 + X"$0" : 'X\(/\)$' \| \
15156 + . : '\(.\)' 2>/dev/null ||
15158 + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
15159 + /^X\/\(\/\/\)$/{ s//\1/; q; }
15160 + /^X\/\(\/\).*/{ s//\1/; q; }
15164 +# PATH needs CR, and LINENO needs CR and PATH.
15165 +# Avoid depending upon Character Ranges.
15166 +as_cr_letters='abcdefghijklmnopqrstuvwxyz'
15167 +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
15168 +as_cr_Letters=$as_cr_letters$as_cr_LETTERS
15169 +as_cr_digits='0123456789'
15170 +as_cr_alnum=$as_cr_Letters$as_cr_digits
15172 +# The user is always right.
15173 +if test "${PATH_SEPARATOR+set}" != set; then
15174 + echo "#! /bin/sh" >conftest.sh
15175 + echo "exit 0" >>conftest.sh
15176 + chmod +x conftest.sh
15177 + if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then
15178 + PATH_SEPARATOR=';'
15182 + rm -f conftest.sh
15186 + as_lineno_1=$LINENO
15187 + as_lineno_2=$LINENO
15188 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
15189 + test "x$as_lineno_1" != "x$as_lineno_2" &&
15190 + test "x$as_lineno_3" = "x$as_lineno_2" || {
15191 + # Find who we are. Look in the path if we contain no path at all
15192 + # relative or not.
15194 + *[\\/]* ) as_myself=$0 ;;
15195 + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
15196 +for as_dir in $PATH
15199 + test -z "$as_dir" && as_dir=.
15200 + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
15205 + # We did not find ourselves, most probably we were run as `sh COMMAND'
15206 + # in which case we are not to be found in the path.
15207 + if test "x$as_myself" = x; then
15210 + if test ! -f "$as_myself"; then
15211 + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
15212 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
15213 + { (exit 1); exit 1; }; }
15215 + case $CONFIG_SHELL in
15217 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
15218 +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
15221 + test -z "$as_dir" && as_dir=.
15222 + for as_base in sh bash ksh sh5; do
15225 + if ("$as_dir/$as_base" -c '
15226 + as_lineno_1=$LINENO
15227 + as_lineno_2=$LINENO
15228 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
15229 + test "x$as_lineno_1" != "x$as_lineno_2" &&
15230 + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
15231 + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
15232 + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
15233 + CONFIG_SHELL=$as_dir/$as_base
15234 + export CONFIG_SHELL
15235 + exec "$CONFIG_SHELL" "$0" ${1+"$@"}
15243 + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
15244 + # uniformly replaced by the line number. The first 'sed' inserts a
15245 + # line-number line before each line; the second 'sed' does the real
15246 + # work. The second script uses 'N' to pair each line-number line
15247 + # with the numbered line, and appends trailing '-' during
15248 + # substitution so that $LINENO is not a special case at line end.
15249 + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
15250 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
15251 + sed '=' <$as_myself |
15256 + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
15259 + s,^['$as_cr_digits']*\n,,
15260 + ' >$as_me.lineno &&
15261 + chmod +x $as_me.lineno ||
15262 + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
15263 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
15264 + { (exit 1); exit 1; }; }
15266 + # Don't try to exec as it changes $[0], causing all sort of problems
15267 + # (the dirname of $[0] is not the place where we might find the
15268 + # original and so on. Autoconf is especially sensible to this).
15269 + . ./$as_me.lineno
15270 + # Exit status is that of the last command.
15275 +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
15276 + *c*,-n*) ECHO_N= ECHO_C='
15278 + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
15279 + *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
15282 +if expr a : '\(a\)' >/dev/null 2>&1; then
15288 +rm -f conf$$ conf$$.exe conf$$.file
15290 +if ln -s conf$$.file conf$$ 2>/dev/null; then
15291 + # We could just check for DJGPP; but this test a) works b) is more generic
15292 + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
15293 + if test -f conf$$.exe; then
15294 + # Don't use ln at all; we don't have any links
15299 +elif ln conf$$.file conf$$ 2>/dev/null; then
15304 +rm -f conf$$ conf$$.exe conf$$.file
15306 +if mkdir -p . 2>/dev/null; then
15312 +as_executable_p="test -f"
15314 +# Sed expression to map a string onto a valid CPP name.
15315 +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
15317 +# Sed expression to map a string onto a valid variable name.
15318 +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
15322 +# We need space, tab and new line, in precisely that order.
15332 +# Open the log real soon, to keep \$[0] and so on meaningful, and to
15333 +# report actual input values of CONFIG_FILES etc. instead of their
15334 +# values after options handling. Logging --version etc. is OK.
15335 +exec 5>>config.log
15338 + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
15339 +@%:@@%:@ Running $as_me. @%:@@%:@
15344 +This file was extended by $as_me, which was
15345 +generated by GNU Autoconf 2.54. Invocation command line was
15347 + CONFIG_FILES = $CONFIG_FILES
15348 + CONFIG_HEADERS = $CONFIG_HEADERS
15349 + CONFIG_LINKS = $CONFIG_LINKS
15350 + CONFIG_COMMANDS = $CONFIG_COMMANDS
15354 +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
15358 +# Files that config.status was made for.
15359 +if test -n "$ac_config_files"; then
15360 + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
15363 +if test -n "$ac_config_headers"; then
15364 + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
15367 +if test -n "$ac_config_links"; then
15368 + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
15371 +if test -n "$ac_config_commands"; then
15372 + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
15375 +cat >>$CONFIG_STATUS <<\_ACEOF
15378 +\`$as_me' instantiates files from templates according to the
15379 +current configuration.
15381 +Usage: $0 [OPTIONS] [FILE]...
15383 + -h, --help print this help, then exit
15384 + -V, --version print version number, then exit
15385 + -d, --debug don't remove temporary files
15386 + --recheck update $as_me by reconfiguring in the same conditions
15387 + --file=FILE[:TEMPLATE]
15388 + instantiate the configuration file FILE
15390 +Configuration files:
15393 +Configuration commands:
15396 +Report bugs to <bug-autoconf@gnu.org>."
15399 +cat >>$CONFIG_STATUS <<_ACEOF
15402 +configured by $0, generated by GNU Autoconf 2.54,
15403 + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
15405 +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
15406 +Free Software Foundation, Inc.
15407 +This config.status script is free software; the Free Software Foundation
15408 +gives unlimited permission to copy, distribute and modify it."
15410 +INSTALL="$INSTALL"
15413 +cat >>$CONFIG_STATUS <<\_ACEOF
15414 +# If no file are specified by the user, then we need to provide default
15415 +# value. By we need to know if files were specified by the user.
15416 +ac_need_defaults=:
15417 +while test $# != 0
15421 + ac_option=`expr "x$1" : 'x\([^=]*\)='`
15422 + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
15430 + *) # This is not an option, so the user has probably given explicit
15433 + ac_need_defaults=false;;
15436 + case $ac_option in
15437 + # Handling of the options.
15439 +cat >>$CONFIG_STATUS <<_ACEOF
15440 + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
15441 + echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
15442 + exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
15444 +cat >>$CONFIG_STATUS <<\_ACEOF
15445 + --version | --vers* | -V )
15446 + echo "$ac_cs_version"; exit 0 ;;
15448 + # Conflict between --help and --header
15449 + { { echo "$as_me:$LINENO: error: ambiguous option: $1
15450 +Try \`$0 --help' for more information." >&5
15451 +echo "$as_me: error: ambiguous option: $1
15452 +Try \`$0 --help' for more information." >&2;}
15453 + { (exit 1); exit 1; }; };;
15454 + --help | --hel | -h )
15455 + echo "$ac_cs_usage"; exit 0 ;;
15456 + --debug | --d* | -d )
15458 + --file | --fil | --fi | --f )
15460 + CONFIG_FILES="$CONFIG_FILES $ac_optarg"
15461 + ac_need_defaults=false;;
15462 + --header | --heade | --head | --hea )
15464 + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
15465 + ac_need_defaults=false;;
15467 + # This is an error.
15468 + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
15469 +Try \`$0 --help' for more information." >&5
15470 +echo "$as_me: error: unrecognized option: $1
15471 +Try \`$0 --help' for more information." >&2;}
15472 + { (exit 1); exit 1; }; } ;;
15474 + *) ac_config_targets="$ac_config_targets $1" ;;
15482 +cat >>$CONFIG_STATUS <<_ACEOF
15484 +# INIT-COMMANDS section.
15487 +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
15491 +with_multisubdir=${with_multisubdir}
15492 +ac_configure_args="${multilib_arg} ${ac_configure_args}"
15493 +CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
15494 +gc_basedir=${gc_basedir}
15503 +cat >>$CONFIG_STATUS <<\_ACEOF
15504 +for ac_config_target in $ac_config_targets
15506 + case "$ac_config_target" in
15507 + # Handling of arguments.
15508 + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
15509 + "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
15510 + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
15511 + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
15512 + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
15513 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
15514 + { (exit 1); exit 1; }; };;
15518 +# If the user did not use the arguments to specify the items to instantiate,
15519 +# then the envvar interface is used. Set only those that are not.
15520 +# We use the long form for the default assignment because of an extremely
15521 +# bizarre bug on SunOS 4.1.3.
15522 +if $ac_need_defaults; then
15523 + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
15524 + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
15527 +# Create a temporary directory, and hook for its removal unless debugging.
15530 + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
15531 + trap '{ (exit 1); exit 1; }' 1 2 13 15
15534 +# Create a (secure) tmp directory for tmp files.
15537 + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
15538 + test -n "$tmp" && test -d "$tmp"
15541 + tmp=$TMPDIR/cs$$-$RANDOM
15542 + (umask 077 && mkdir $tmp)
15545 + echo "$me: cannot create a temporary directory in $TMPDIR" >&2
15546 + { (exit 1); exit 1; }
15551 +cat >>$CONFIG_STATUS <<_ACEOF
15554 +# CONFIG_FILES section.
15557 +# No need to generate the scripts if there are no CONFIG_FILES.
15558 +# This happens for instance when ./config.status config.h
15559 +if test -n "\$CONFIG_FILES"; then
15560 + # Protect against being on the right side of a sed subst in config.status.
15561 + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
15562 + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
15563 +s,@SHELL@,$SHELL,;t t
15564 +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
15565 +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
15566 +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
15567 +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
15568 +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
15569 +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
15570 +s,@exec_prefix@,$exec_prefix,;t t
15571 +s,@prefix@,$prefix,;t t
15572 +s,@program_transform_name@,$program_transform_name,;t t
15573 +s,@bindir@,$bindir,;t t
15574 +s,@sbindir@,$sbindir,;t t
15575 +s,@libexecdir@,$libexecdir,;t t
15576 +s,@datadir@,$datadir,;t t
15577 +s,@sysconfdir@,$sysconfdir,;t t
15578 +s,@sharedstatedir@,$sharedstatedir,;t t
15579 +s,@localstatedir@,$localstatedir,;t t
15580 +s,@libdir@,$libdir,;t t
15581 +s,@includedir@,$includedir,;t t
15582 +s,@oldincludedir@,$oldincludedir,;t t
15583 +s,@infodir@,$infodir,;t t
15584 +s,@mandir@,$mandir,;t t
15585 +s,@build_alias@,$build_alias,;t t
15586 +s,@host_alias@,$host_alias,;t t
15587 +s,@target_alias@,$target_alias,;t t
15588 +s,@DEFS@,$DEFS,;t t
15589 +s,@ECHO_C@,$ECHO_C,;t t
15590 +s,@ECHO_N@,$ECHO_N,;t t
15591 +s,@ECHO_T@,$ECHO_T,;t t
15592 +s,@LIBS@,$LIBS,;t t
15593 +s,@gc_basedir@,$gc_basedir,;t t
15594 +s,@build@,$build,;t t
15595 +s,@build_cpu@,$build_cpu,;t t
15596 +s,@build_vendor@,$build_vendor,;t t
15597 +s,@build_os@,$build_os,;t t
15598 +s,@host@,$host,;t t
15599 +s,@host_cpu@,$host_cpu,;t t
15600 +s,@host_vendor@,$host_vendor,;t t
15601 +s,@host_os@,$host_os,;t t
15602 +s,@target@,$target,;t t
15603 +s,@target_cpu@,$target_cpu,;t t
15604 +s,@target_vendor@,$target_vendor,;t t
15605 +s,@target_os@,$target_os,;t t
15606 +s,@mkinstalldirs@,$mkinstalldirs,;t t
15607 +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
15608 +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
15609 +s,@INSTALL_DATA@,$INSTALL_DATA,;t t
15610 +s,@PACKAGE@,$PACKAGE,;t t
15611 +s,@VERSION@,$VERSION,;t t
15612 +s,@ACLOCAL@,$ACLOCAL,;t t
15613 +s,@AUTOCONF@,$AUTOCONF,;t t
15614 +s,@AUTOMAKE@,$AUTOMAKE,;t t
15615 +s,@AUTOHEADER@,$AUTOHEADER,;t t
15616 +s,@MAKEINFO@,$MAKEINFO,;t t
15617 +s,@AMTAR@,$AMTAR,;t t
15618 +s,@install_sh@,$install_sh,;t t
15619 +s,@STRIP@,$STRIP,;t t
15620 +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
15621 +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
15623 +s,@SET_MAKE@,$SET_MAKE,;t t
15625 +s,@ac_ct_AS@,$ac_ct_AS,;t t
15627 +s,@ac_ct_AR@,$ac_ct_AR,;t t
15628 +s,@RANLIB@,$RANLIB,;t t
15629 +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
15630 +s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
15631 +s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
15632 +s,@MAINT@,$MAINT,;t t
15633 +s,@GC_CFLAGS@,$GC_CFLAGS,;t t
15635 +s,@CFLAGS@,$CFLAGS,;t t
15636 +s,@LDFLAGS@,$LDFLAGS,;t t
15637 +s,@CPPFLAGS@,$CPPFLAGS,;t t
15638 +s,@ac_ct_CC@,$ac_ct_CC,;t t
15639 +s,@EXEEXT@,$EXEEXT,;t t
15640 +s,@OBJEXT@,$OBJEXT,;t t
15641 +s,@DEPDIR@,$DEPDIR,;t t
15642 +s,@am__include@,$am__include,;t t
15643 +s,@am__quote@,$am__quote,;t t
15644 +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
15645 +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
15646 +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
15647 +s,@CCDEPMODE@,$CCDEPMODE,;t t
15648 +s,@LN_S@,$LN_S,;t t
15649 +s,@ECHO@,$ECHO,;t t
15651 +s,@EGREP@,$EGREP,;t t
15652 +s,@LIBTOOL@,$LIBTOOL,;t t
15653 +s,@THREADLIBS@,$THREADLIBS,;t t
15654 +s,@POWERPC_DARWIN_TRUE@,$POWERPC_DARWIN_TRUE,;t t
15655 +s,@POWERPC_DARWIN_FALSE@,$POWERPC_DARWIN_FALSE,;t t
15656 +s,@EXTRA_TEST_LIBS@,$EXTRA_TEST_LIBS,;t t
15657 +s,@target_all@,$target_all,;t t
15659 +s,@INCLUDES@,$INCLUDES,;t t
15660 +s,@CXXINCLUDES@,$CXXINCLUDES,;t t
15661 +s,@addobjs@,$addobjs,;t t
15662 +s,@MY_CFLAGS@,$MY_CFLAGS,;t t
15663 +s,@USE_LIBDIR_TRUE@,$USE_LIBDIR_TRUE,;t t
15664 +s,@USE_LIBDIR_FALSE@,$USE_LIBDIR_FALSE,;t t
15665 +s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t
15666 +s,@LTLIBOBJS@,$LTLIBOBJS,;t t
15671 + cat >>$CONFIG_STATUS <<\_ACEOF
15672 + # Split the substitutions into bite-sized pieces for seds with
15673 + # small command number limits, like on Digital OSF/1 and HP-UX.
15674 + ac_max_sed_lines=48
15675 + ac_sed_frag=1 # Number of current file.
15676 + ac_beg=1 # First line for current file.
15677 + ac_end=$ac_max_sed_lines # Line after last line for current file.
15680 + while $ac_more_lines; do
15681 + if test $ac_beg -gt 1; then
15682 + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
15684 + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
15686 + if test ! -s $tmp/subs.frag; then
15687 + ac_more_lines=false
15689 + # The purpose of the label and of the branching condition is to
15690 + # speed up the sed processing (if there are no `@' at all, there
15691 + # is no need to browse any of the substitutions).
15692 + # These are the two extra sed commands mentioned above.
15694 + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
15695 + if test -z "$ac_sed_cmds"; then
15696 + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
15698 + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
15700 + ac_sed_frag=`expr $ac_sed_frag + 1`
15702 + ac_end=`expr $ac_end + $ac_max_sed_lines`
15705 + if test -z "$ac_sed_cmds"; then
15708 +fi # test -n "$CONFIG_FILES"
15711 +cat >>$CONFIG_STATUS <<\_ACEOF
15712 +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
15713 + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
15715 + - | *:- | *:-:* ) # input from stdin
15717 + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
15718 + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
15719 + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
15720 + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
15721 + * ) ac_file_in=$ac_file.in ;;
15724 + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
15725 + ac_dir=`(dirname "$ac_file") 2>/dev/null ||
15726 +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15727 + X"$ac_file" : 'X\(//\)[^/]' \| \
15728 + X"$ac_file" : 'X\(//\)$' \| \
15729 + X"$ac_file" : 'X\(/\)' \| \
15730 + . : '\(.\)' 2>/dev/null ||
15731 +echo X"$ac_file" |
15732 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
15733 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
15734 + /^X\(\/\/\)$/{ s//\1/; q; }
15735 + /^X\(\/\).*/{ s//\1/; q; }
15737 + { if $as_mkdir_p; then
15738 + mkdir -p "$ac_dir"
15742 + while test ! -d "$as_dir"; do
15743 + as_dirs="$as_dir $as_dirs"
15744 + as_dir=`(dirname "$as_dir") 2>/dev/null ||
15745 +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15746 + X"$as_dir" : 'X\(//\)[^/]' \| \
15747 + X"$as_dir" : 'X\(//\)$' \| \
15748 + X"$as_dir" : 'X\(/\)' \| \
15749 + . : '\(.\)' 2>/dev/null ||
15751 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
15752 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
15753 + /^X\(\/\/\)$/{ s//\1/; q; }
15754 + /^X\(\/\).*/{ s//\1/; q; }
15757 + test ! -n "$as_dirs" || mkdir $as_dirs
15758 + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
15759 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
15760 + { (exit 1); exit 1; }; }; }
15764 +if test "$ac_dir" != .; then
15765 + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
15766 + # A "../" for each directory in $ac_dir_suffix.
15767 + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
15769 + ac_dir_suffix= ac_top_builddir=
15773 + .) # No --srcdir option. We are building in place.
15775 + if test -z "$ac_top_builddir"; then
15778 + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
15780 + [\\/]* | ?:[\\/]* ) # Absolute path.
15781 + ac_srcdir=$srcdir$ac_dir_suffix;
15782 + ac_top_srcdir=$srcdir ;;
15783 + *) # Relative path.
15784 + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
15785 + ac_top_srcdir=$ac_top_builddir$srcdir ;;
15787 +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
15789 +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
15790 +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
15791 +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
15792 +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
15796 + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
15797 + *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
15800 + if test x"$ac_file" != x-; then
15801 + { echo "$as_me:$LINENO: creating $ac_file" >&5
15802 +echo "$as_me: creating $ac_file" >&6;}
15805 + # Let's still pretend it is `configure' which instantiates (i.e., don't
15806 + # use $as_me), people would be surprised to read:
15807 + # /* config.h. Generated by config.status. */
15808 + if test x"$ac_file" = x-; then
15811 + configure_input="$ac_file. "
15813 + configure_input=$configure_input"Generated from `echo $ac_file_in |
15814 + sed 's,.*/,,'` by configure."
15816 + # First look for the input files in the build tree, otherwise in the
15818 + ac_file_inputs=`IFS=:
15819 + for f in $ac_file_in; do
15821 + -) echo $tmp/stdin ;;
15823 + # Absolute (can't be DOS-style, as IFS=:)
15824 + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
15825 +echo "$as_me: error: cannot find input file: $f" >&2;}
15826 + { (exit 1); exit 1; }; }
15829 + if test -f "$f"; then
15832 + elif test -f "$srcdir/$f"; then
15837 + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
15838 +echo "$as_me: error: cannot find input file: $f" >&2;}
15839 + { (exit 1); exit 1; }; }
15842 + done` || { (exit 1); exit 1; }
15844 +cat >>$CONFIG_STATUS <<_ACEOF
15848 +cat >>$CONFIG_STATUS <<\_ACEOF
15850 +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
15851 +s,@configure_input@,$configure_input,;t t
15852 +s,@srcdir@,$ac_srcdir,;t t
15853 +s,@abs_srcdir@,$ac_abs_srcdir,;t t
15854 +s,@top_srcdir@,$ac_top_srcdir,;t t
15855 +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
15856 +s,@builddir@,$ac_builddir,;t t
15857 +s,@abs_builddir@,$ac_abs_builddir,;t t
15858 +s,@top_builddir@,$ac_top_builddir,;t t
15859 +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
15860 +s,@INSTALL@,$ac_INSTALL,;t t
15861 +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
15863 + if test x"$ac_file" != x-; then
15864 + mv $tmp/out $ac_file
15872 +cat >>$CONFIG_STATUS <<\_ACEOF
15875 +# CONFIG_COMMANDS section.
15877 +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
15878 + ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
15879 + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
15880 + ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
15881 +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15882 + X"$ac_dest" : 'X\(//\)[^/]' \| \
15883 + X"$ac_dest" : 'X\(//\)$' \| \
15884 + X"$ac_dest" : 'X\(/\)' \| \
15885 + . : '\(.\)' 2>/dev/null ||
15886 +echo X"$ac_dest" |
15887 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
15888 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
15889 + /^X\(\/\/\)$/{ s//\1/; q; }
15890 + /^X\(\/\).*/{ s//\1/; q; }
15894 +if test "$ac_dir" != .; then
15895 + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
15896 + # A "../" for each directory in $ac_dir_suffix.
15897 + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
15899 + ac_dir_suffix= ac_top_builddir=
15903 + .) # No --srcdir option. We are building in place.
15905 + if test -z "$ac_top_builddir"; then
15908 + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
15910 + [\\/]* | ?:[\\/]* ) # Absolute path.
15911 + ac_srcdir=$srcdir$ac_dir_suffix;
15912 + ac_top_srcdir=$srcdir ;;
15913 + *) # Relative path.
15914 + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
15915 + ac_top_srcdir=$ac_top_builddir$srcdir ;;
15917 +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
15919 +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
15920 +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
15921 +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
15922 +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
15925 + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
15926 +echo "$as_me: executing $ac_dest commands" >&6;}
15928 + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
15929 + # Strip MF so we end up with the name of the file.
15930 + mf=`echo "$mf" | sed -e 's/:.*$//'`
15931 + if (sed 1q $mf | fgrep 'generated by automake') > /dev/null 2>&1; then
15932 + dirpart=`(dirname "$mf") 2>/dev/null ||
15933 +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15934 + X"$mf" : 'X\(//\)[^/]' \| \
15935 + X"$mf" : 'X\(//\)$' \| \
15936 + X"$mf" : 'X\(/\)' \| \
15937 + . : '\(.\)' 2>/dev/null ||
15939 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
15940 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
15941 + /^X\(\/\/\)$/{ s//\1/; q; }
15942 + /^X\(\/\).*/{ s//\1/; q; }
15947 + grep '^DEP_FILES *= *[^ @%:@]' < "$mf" > /dev/null || continue
15948 + # Extract the definition of DEP_FILES from the Makefile without
15949 + # running `make'.
15950 + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
15951 + test -z "$DEPDIR" && continue
15952 + # When using ansi2knr, U may be empty or an underscore; expand it
15953 + U=`sed -n -e '/^U = / s///p' < "$mf"`
15954 + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
15955 + # We invoke sed twice because it is the simplest approach to
15956 + # changing $(DEPDIR) to its actual value in the expansion.
15957 + for file in `sed -n -e '
15958 + /^DEP_FILES = .*\\\\$/ {
15959 + s/^DEP_FILES = //
15967 + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
15968 + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
15969 + # Make sure the directory exists.
15970 + test -f "$dirpart/$file" && continue
15971 + fdir=`(dirname "$file") 2>/dev/null ||
15972 +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15973 + X"$file" : 'X\(//\)[^/]' \| \
15974 + X"$file" : 'X\(//\)$' \| \
15975 + X"$file" : 'X\(/\)' \| \
15976 + . : '\(.\)' 2>/dev/null ||
15978 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
15979 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
15980 + /^X\(\/\/\)$/{ s//\1/; q; }
15981 + /^X\(\/\).*/{ s//\1/; q; }
15983 + { if $as_mkdir_p; then
15984 + mkdir -p $dirpart/$fdir
15986 + as_dir=$dirpart/$fdir
15988 + while test ! -d "$as_dir"; do
15989 + as_dirs="$as_dir $as_dirs"
15990 + as_dir=`(dirname "$as_dir") 2>/dev/null ||
15991 +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15992 + X"$as_dir" : 'X\(//\)[^/]' \| \
15993 + X"$as_dir" : 'X\(//\)$' \| \
15994 + X"$as_dir" : 'X\(/\)' \| \
15995 + . : '\(.\)' 2>/dev/null ||
15997 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
15998 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
15999 + /^X\(\/\/\)$/{ s//\1/; q; }
16000 + /^X\(\/\).*/{ s//\1/; q; }
16003 + test ! -n "$as_dirs" || mkdir $as_dirs
16004 + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
16005 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
16006 + { (exit 1); exit 1; }; }; }
16008 + # echo "creating $dirpart/$file"
16009 + echo '# dummy' > "$dirpart/$file"
16014 +echo "$DEFS" > boehm-cflags
16016 +if test -n "$CONFIG_FILES"; then
16017 + LD="${ORIGINAL_LD_FOR_MULTILIBS}"
16018 + ac_file=Makefile . ${gc_basedir}/../config-ml.in
16024 +cat >>$CONFIG_STATUS <<\_ACEOF
16026 +{ (exit 0); exit 0; }
16028 +chmod +x $CONFIG_STATUS
16029 +ac_clean_files=$ac_clean_files_save
16032 +# configure is writing to config.log, and then calls config.status.
16033 +# config.status does its own redirection, appending to config.log.
16034 +# Unfortunately, on DOS this fails, as config.log is still kept open
16035 +# by configure, so config.status won't be able to write to it; its
16036 +# output is simply discarded. So we exec the FD to /dev/null,
16037 +# effectively closing config.log, so it can be properly (re)opened and
16038 +# appended to by config.status. When coming back to configure, we
16039 +# need to make the FD available again.
16040 +if test "$no_create" != yes; then
16043 + $SHELL $CONFIG_STATUS || ac_cs_success=false
16044 + exec 5>>config.log
16045 + # Use ||, not &&, to avoid exiting from the if with $? = 1, which
16046 + # would make configure fail if this is the last instruction.
16047 + $ac_cs_success || { (exit 1); exit 1; }
16050 diff -Nubr boehm-gc/autom4te.cache/requests ../boehm-gc/autom4te.cache/requests
16051 --- boehm-gc/autom4te.cache/requests Wed Dec 31 16:00:00 1969
16052 +++ ../boehm-gc/autom4te.cache/requests Sat May 31 15:09:32 2003
16054 +# This file was created by autom4te-2.54.
16055 +# It contains the lists of macros which have been traced.
16056 +# It can be safely removed.
16063 + '/sw/share/autoconf'
16066 + '/sw/share/autoconf/autoconf/autoconf.m4f',
16071 + 'm4_pattern_forbid' => 1,
16072 + 'AC_C_VOLATILE' => 1,
16073 + 'AC_TYPE_OFF_T' => 1,
16074 + 'AC_FUNC_CLOSEDIR_VOID' => 1,
16075 + 'AC_REPLACE_FNMATCH' => 1,
16076 + 'AC_PROG_LIBTOOL' => 1,
16077 + 'AC_FUNC_STAT' => 1,
16078 + 'AC_FUNC_WAIT3' => 1,
16079 + 'AC_HEADER_TIME' => 1,
16080 + 'AC_FUNC_LSTAT' => 1,
16081 + 'AC_STRUCT_TM' => 1,
16082 + 'AM_AUTOMAKE_VERSION' => 1,
16083 + 'AC_FUNC_GETMNTENT' => 1,
16084 + 'AC_TYPE_MODE_T' => 1,
16085 + 'AC_FUNC_STRTOD' => 1,
16086 + 'AC_CHECK_HEADERS' => 1,
16087 + 'AC_FUNC_STRNLEN' => 1,
16088 + 'AC_PROG_CXX' => 1,
16089 + 'AC_PATH_X' => 1,
16090 + 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
16091 + 'AC_PROG_AWK' => 1,
16092 + 'AC_HEADER_STDC' => 1,
16093 + 'AC_HEADER_MAJOR' => 1,
16094 + 'AC_FUNC_ERROR_AT_LINE' => 1,
16095 + 'AC_PROG_GCC_TRADITIONAL' => 1,
16096 + 'AC_LIBSOURCE' => 1,
16097 + 'AC_FUNC_MBRTOWC' => 1,
16098 + 'AC_STRUCT_ST_BLOCKS' => 1,
16099 + 'AC_TYPE_SIGNAL' => 1,
16100 + 'AC_TYPE_UID_T' => 1,
16101 + 'AC_CONFIG_AUX_DIR' => 1,
16102 + 'AC_PROG_MAKE_SET' => 1,
16103 + 'm4_pattern_allow' => 1,
16104 + 'AC_DEFINE_TRACE_LITERAL' => 1,
16105 + 'AC_FUNC_STRERROR_R' => 1,
16106 + 'AC_PROG_CC' => 1,
16107 + 'AC_FUNC_FORK' => 1,
16108 + 'AC_DECL_SYS_SIGLIST' => 1,
16109 + 'AC_FUNC_STRCOLL' => 1,
16110 + 'AC_FUNC_VPRINTF' => 1,
16111 + 'AC_PROG_YACC' => 1,
16113 + 'AC_STRUCT_TIMEZONE' => 1,
16114 + 'AC_FUNC_CHOWN' => 1,
16116 + 'AC_FUNC_ALLOCA' => 1,
16117 + 'AC_CANONICAL_HOST' => 1,
16118 + 'AC_FUNC_GETPGRP' => 1,
16119 + 'AC_PROG_RANLIB' => 1,
16120 + 'AM_INIT_AUTOMAKE' => 1,
16121 + 'AC_FUNC_SETPGRP' => 1,
16122 + 'AC_CONFIG_SUBDIRS' => 1,
16123 + 'AC_FUNC_MMAP' => 1,
16124 + 'AC_FUNC_REALLOC' => 1,
16125 + 'AC_TYPE_SIZE_T' => 1,
16126 + 'AC_CHECK_TYPES' => 1,
16127 + 'AC_CHECK_MEMBERS' => 1,
16128 + 'AM_MAINTAINER_MODE' => 1,
16129 + 'AC_FUNC_UTIME_NULL' => 1,
16130 + 'AC_FUNC_SELECT_ARGTYPES' => 1,
16131 + 'AC_FUNC_STRFTIME' => 1,
16132 + 'AC_HEADER_STAT' => 1,
16133 + 'AC_C_INLINE' => 1,
16134 + 'AC_PROG_CPP' => 1,
16135 + 'AC_TYPE_PID_T' => 1,
16136 + 'AC_PROG_LEX' => 1,
16137 + 'AC_C_CONST' => 1,
16138 + 'AC_CONFIG_FILES' => 1,
16140 + 'AC_FUNC_SETVBUF_REVERSED' => 1,
16141 + 'AC_PROG_INSTALL' => 1,
16142 + 'AM_GNU_GETTEXT' => 1,
16143 + 'AC_CHECK_LIB' => 1,
16144 + 'AC_FUNC_OBSTACK' => 1,
16145 + 'AC_FUNC_MALLOC' => 1,
16146 + 'AC_FUNC_GETGROUPS' => 1,
16147 + 'AC_FUNC_GETLOADAVG' => 1,
16148 + 'AH_OUTPUT' => 1,
16149 + 'AC_FUNC_FSEEKO' => 1,
16150 + 'AM_PROG_CC_C_O' => 1,
16151 + 'AC_FUNC_MKTIME' => 1,
16152 + 'AC_CANONICAL_SYSTEM' => 1,
16153 + 'AM_CONDITIONAL' => 1,
16154 + 'AC_CONFIG_HEADERS' => 1,
16155 + 'AC_HEADER_SYS_WAIT' => 1,
16156 + 'AC_PROG_LN_S' => 1,
16157 + 'AC_FUNC_MEMCMP' => 1,
16158 + 'm4_include' => 1,
16159 + 'AC_HEADER_DIRENT' => 1,
16160 + 'AC_CHECK_FUNCS' => 1
16167 + '/sw/share/autoconf-2.54'
16170 + '--reload-state=/sw/share/autoconf-2.54/autoconf/autoconf.m4f',
16175 + 'm4_pattern_forbid' => 1,
16176 + 'AC_TYPE_OFF_T' => 1,
16177 + 'AC_PROG_LIBTOOL' => 1,
16178 + 'AC_FUNC_STAT' => 1,
16179 + 'AC_HEADER_TIME' => 1,
16180 + 'AC_FUNC_WAIT3' => 1,
16181 + 'AC_STRUCT_TM' => 1,
16182 + 'AC_FUNC_LSTAT' => 1,
16183 + 'AC_TYPE_MODE_T' => 1,
16184 + 'AC_FUNC_STRTOD' => 1,
16185 + 'AC_CHECK_HEADERS' => 1,
16186 + 'AC_PROG_CXX' => 1,
16187 + 'AC_PATH_X' => 1,
16188 + 'AC_PROG_AWK' => 1,
16189 + 'AC_HEADER_STDC' => 1,
16190 + 'AC_HEADER_MAJOR' => 1,
16191 + 'AC_FUNC_ERROR_AT_LINE' => 1,
16192 + 'AC_PROG_GCC_TRADITIONAL' => 1,
16193 + 'AC_LIBSOURCE' => 1,
16194 + 'AC_STRUCT_ST_BLOCKS' => 1,
16195 + 'AC_TYPE_SIGNAL' => 1,
16196 + 'AC_TYPE_UID_T' => 1,
16197 + 'AC_PROG_MAKE_SET' => 1,
16198 + 'm4_pattern_allow' => 1,
16199 + 'AC_DEFINE_TRACE_LITERAL' => 1,
16200 + 'AM_PROG_LIBTOOL' => 1,
16201 + 'AC_FUNC_STRERROR_R' => 1,
16202 + 'AC_PROG_CC' => 1,
16203 + 'AC_FUNC_FORK' => 1,
16204 + 'AC_DECL_SYS_SIGLIST' => 1,
16205 + 'AC_FUNC_STRCOLL' => 1,
16206 + 'AC_FUNC_VPRINTF' => 1,
16207 + 'AC_PROG_YACC' => 1,
16208 + 'AC_STRUCT_TIMEZONE' => 1,
16209 + 'AC_FUNC_CHOWN' => 1,
16211 + 'AC_FUNC_ALLOCA' => 1,
16212 + 'AC_FUNC_GETPGRP' => 1,
16213 + 'AC_PROG_RANLIB' => 1,
16214 + 'AC_FUNC_SETPGRP' => 1,
16215 + 'AC_FUNC_MMAP' => 1,
16216 + 'AC_TYPE_SIZE_T' => 1,
16217 + 'AC_CHECK_TYPES' => 1,
16218 + 'AC_FUNC_UTIME_NULL' => 1,
16219 + 'AC_FUNC_STRFTIME' => 1,
16220 + 'AC_HEADER_STAT' => 1,
16221 + 'AC_C_INLINE' => 1,
16222 + 'AC_PROG_CPP' => 1,
16223 + 'AC_C_CONST' => 1,
16224 + 'AC_PROG_LEX' => 1,
16225 + 'AC_TYPE_PID_T' => 1,
16226 + 'AC_CONFIG_FILES' => 1,
16228 + 'AC_FUNC_SETVBUF_REVERSED' => 1,
16229 + 'AC_FUNC_FNMATCH' => 1,
16230 + 'AC_PROG_INSTALL' => 1,
16231 + 'AM_GNU_GETTEXT' => 1,
16232 + 'AC_FUNC_OBSTACK' => 1,
16233 + 'AC_CHECK_LIB' => 1,
16234 + 'AC_FUNC_MALLOC' => 1,
16235 + 'AC_FUNC_GETGROUPS' => 1,
16236 + 'AC_FUNC_GETLOADAVG' => 1,
16237 + 'AH_OUTPUT' => 1,
16238 + 'AC_FUNC_FSEEKO' => 1,
16239 + 'AC_FUNC_MKTIME' => 1,
16240 + 'AM_CONDITIONAL' => 1,
16241 + 'AC_CONFIG_HEADERS' => 1,
16242 + 'AC_HEADER_SYS_WAIT' => 1,
16243 + 'AC_PROG_LN_S' => 1,
16244 + 'AC_FUNC_MEMCMP' => 1,
16245 + 'm4_include' => 1,
16246 + 'AC_HEADER_DIRENT' => 1,
16247 + 'AC_CHECK_FUNCS' => 1
16252 diff -Nubr boehm-gc/autom4te.cache/traces.0 ../boehm-gc/autom4te.cache/traces.0
16253 --- boehm-gc/autom4te.cache/traces.0 Wed Dec 31 16:00:00 1969
16254 +++ ../boehm-gc/autom4te.cache/traces.0 Mon May 26 13:14:22 2003
16256 +m4trace:configure.in:16: -1- AC_INIT([gcj_mlc.c])
16257 +m4trace:configure.in:16: -1- m4_pattern_forbid([^_?A[CHUM]_])
16258 +m4trace:configure.in:16: -1- m4_pattern_forbid([_AC_])
16259 +m4trace:configure.in:16: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
16260 +m4trace:configure.in:16: -1- m4_pattern_allow([^AS_FLAGS$])
16261 +m4trace:configure.in:16: -1- m4_pattern_forbid([^_?m4_])
16262 +m4trace:configure.in:16: -1- m4_pattern_forbid([^dnl$])
16263 +m4trace:configure.in:16: -1- m4_pattern_forbid([^_?AS_])
16264 +m4trace:configure.in:16: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
16265 +m4trace:configure.in:16: -1- AC_SUBST([PATH_SEPARATOR])
16266 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
16267 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
16268 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
16269 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
16270 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
16271 +m4trace:configure.in:16: -1- AC_SUBST([exec_prefix], [NONE])
16272 +m4trace:configure.in:16: -1- AC_SUBST([prefix], [NONE])
16273 +m4trace:configure.in:16: -1- AC_SUBST([program_transform_name], [s,x,x,])
16274 +m4trace:configure.in:16: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
16275 +m4trace:configure.in:16: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
16276 +m4trace:configure.in:16: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
16277 +m4trace:configure.in:16: -1- AC_SUBST([datadir], ['${prefix}/share'])
16278 +m4trace:configure.in:16: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
16279 +m4trace:configure.in:16: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
16280 +m4trace:configure.in:16: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
16281 +m4trace:configure.in:16: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
16282 +m4trace:configure.in:16: -1- AC_SUBST([includedir], ['${prefix}/include'])
16283 +m4trace:configure.in:16: -1- AC_SUBST([oldincludedir], ['/usr/include'])
16284 +m4trace:configure.in:16: -1- AC_SUBST([infodir], ['${prefix}/info'])
16285 +m4trace:configure.in:16: -1- AC_SUBST([mandir], ['${prefix}/man'])
16286 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
16287 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
16288 +#undef PACKAGE_NAME])
16289 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
16290 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
16291 +#undef PACKAGE_TARNAME])
16292 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
16293 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
16294 +#undef PACKAGE_VERSION])
16295 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
16296 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
16297 +#undef PACKAGE_STRING])
16298 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
16299 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
16300 +#undef PACKAGE_BUGREPORT])
16301 +m4trace:configure.in:16: -1- AC_SUBST([build_alias])
16302 +m4trace:configure.in:16: -1- AC_SUBST([host_alias])
16303 +m4trace:configure.in:16: -1- AC_SUBST([target_alias])
16304 +m4trace:configure.in:16: -1- AC_SUBST([DEFS])
16305 +m4trace:configure.in:16: -1- AC_SUBST([ECHO_C])
16306 +m4trace:configure.in:16: -1- AC_SUBST([ECHO_N])
16307 +m4trace:configure.in:16: -1- AC_SUBST([ECHO_T])
16308 +m4trace:configure.in:16: -1- AC_SUBST([LIBS])
16309 +m4trace:configure.in:25: -1- AC_CONFIG_AUX_DIR([.])
16310 +m4trace:configure.in:27: -1- AC_SUBST([gc_basedir])
16311 +m4trace:configure.in:27: -1- AC_CONFIG_AUX_DIR([$gc_basedir/..])
16312 +m4trace:configure.in:27: -1- AC_CONFIG_AUX_DIR([..])
16313 +m4trace:configure.in:27: -1- AC_CANONICAL_SYSTEM
16314 +m4trace:configure.in:27: -1- AC_CANONICAL_HOST
16315 +m4trace:configure.in:27: -1- AC_SUBST([build], [$ac_cv_build])
16316 +m4trace:configure.in:27: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
16317 +m4trace:configure.in:27: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
16318 +m4trace:configure.in:27: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
16319 +m4trace:configure.in:27: -1- AC_SUBST([host], [$ac_cv_host])
16320 +m4trace:configure.in:27: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
16321 +m4trace:configure.in:27: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
16322 +m4trace:configure.in:27: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
16323 +m4trace:configure.in:27: -1- AC_SUBST([target], [$ac_cv_target])
16324 +m4trace:configure.in:27: -1- AC_SUBST([target_cpu], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
16325 +m4trace:configure.in:27: -1- AC_SUBST([target_vendor], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
16326 +m4trace:configure.in:27: -1- AC_SUBST([target_os], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
16327 +m4trace:configure.in:27: -1- AC_SUBST([mkinstalldirs])
16328 +m4trace:configure.in:27: -1- AM_INIT_AUTOMAKE([gc], [6.0], [no-define])
16329 +m4trace:configure.in:27: -1- AC_PROG_INSTALL
16330 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM])
16331 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT])
16332 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA])
16333 +m4trace:configure.in:27: -1- AC_SUBST([PACKAGE])
16334 +m4trace:configure.in:27: -1- AC_SUBST([VERSION])
16335 +m4trace:configure.in:27: -2- AC_DEFINE_TRACE_LITERAL([PACKAGE])
16336 +m4trace:configure.in:27: -2- AH_OUTPUT([PACKAGE], [/* Name of package */
16338 +m4trace:configure.in:27: -2- AC_DEFINE_TRACE_LITERAL([VERSION])
16339 +m4trace:configure.in:27: -2- AH_OUTPUT([VERSION], [/* Version number of package */
16341 +m4trace:configure.in:27: -1- AC_SUBST([ACLOCAL])
16342 +m4trace:configure.in:27: -1- AC_SUBST([AUTOCONF])
16343 +m4trace:configure.in:27: -1- AC_SUBST([AUTOMAKE])
16344 +m4trace:configure.in:27: -1- AC_SUBST([AUTOHEADER])
16345 +m4trace:configure.in:27: -1- AC_SUBST([MAKEINFO])
16346 +m4trace:configure.in:27: -1- AC_PROG_MAKE_SET
16347 +m4trace:configure.in:27: -1- AC_SUBST([SET_MAKE])
16348 +m4trace:configure.in:27: -1- AC_SUBST([CC])
16349 +m4trace:configure.in:27: -1- AC_SUBST([CC])
16350 +m4trace:configure.in:27: -1- AC_SUBST([CXX])
16351 +m4trace:configure.in:27: -1- AC_SUBST([AS])
16352 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_AS])
16353 +m4trace:configure.in:27: -1- AC_SUBST([AR])
16354 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_AR])
16355 +m4trace:configure.in:27: -1- AC_SUBST([RANLIB])
16356 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_RANLIB])
16357 +m4trace:configure.in:27: -1- AC_PROG_INSTALL
16358 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM])
16359 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT])
16360 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA])
16361 +m4trace:configure.in:27: -1- AM_MAINTAINER_MODE
16362 +m4trace:configure.in:27: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
16363 +m4trace:configure.in:27: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
16364 +m4trace:configure.in:27: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
16365 +m4trace:configure.in:27: -1- AC_SUBST([MAINT])
16366 +m4trace:configure.in:27: -1- AC_SUBST([GC_CFLAGS])
16367 +m4trace:configure.in:29: -1- AC_PROG_LIBTOOL
16368 +m4trace:configure.in:29: -1- AC_PROG_LN_S
16369 +m4trace:configure.in:29: -1- AC_SUBST([LN_S], [$as_ln_s])
16370 +m4trace:configure.in:29: -1- AC_SUBST([RANLIB])
16371 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_RANLIB])
16372 +m4trace:configure.in:29: -1- AC_SUBST([STRIP])
16373 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_STRIP])
16374 +m4trace:configure.in:29: -1- AC_SUBST([LIBTOOL])
16375 +m4trace:configure.in:29: -1- AC_SUBST([CXXCPP])
16376 +m4trace:configure.in:29: -1- AC_SUBST([CPPFLAGS])
16377 +m4trace:configure.in:29: -1- AC_SUBST([CXXCPP])
16378 +m4trace:configure.in:38: -1- AM_MAINTAINER_MODE
16379 +m4trace:configure.in:38: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
16380 +m4trace:configure.in:38: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
16381 +m4trace:configure.in:38: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
16382 +m4trace:configure.in:38: -1- AC_SUBST([MAINT])
16383 +m4trace:configure.in:77: -1- AC_DEFINE_TRACE_LITERAL([GC_LINUX_THREADS])
16384 +m4trace:configure.in:78: -1- AC_DEFINE_TRACE_LITERAL([_REENTRANT])
16385 +m4trace:configure.in:80: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK])
16386 +m4trace:configure.in:82: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC])
16387 +m4trace:configure.in:85: -1- AC_DEFINE_TRACE_LITERAL([GC_LINUX_THREADS])
16388 +m4trace:configure.in:86: -1- AC_DEFINE_TRACE_LITERAL([_REENTRANT])
16389 +m4trace:configure.in:90: -1- AC_DEFINE_TRACE_LITERAL([GC_HPUX_THREADS])
16390 +m4trace:configure.in:91: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_C_SOURCE])
16391 +m4trace:configure.in:93: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK])
16392 +m4trace:configure.in:95: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC])
16393 +m4trace:configure.in:100: -1- AC_DEFINE_TRACE_LITERAL([GC_FREEBSD_THREADS])
16394 +m4trace:configure.in:105: -1- AC_DEFINE_TRACE_LITERAL([GC_SOLARIS_THREADS])
16395 +m4trace:configure.in:106: -1- AC_DEFINE_TRACE_LITERAL([GC_SOLARIS_PTHREADS])
16396 +m4trace:configure.in:109: -1- AC_DEFINE_TRACE_LITERAL([GC_IRIX_THREADS])
16397 +m4trace:configure.in:117: -1- AC_DEFINE_TRACE_LITERAL([GC_DARWIN_THREADS])
16398 +m4trace:configure.in:118: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC])
16399 +m4trace:configure.in:120: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK])
16400 +m4trace:configure.in:124: -1- AC_DEFINE_TRACE_LITERAL([GC_WIN32_THREADS])
16401 +m4trace:configure.in:125: -1- AC_DEFINE_TRACE_LITERAL([NO_GETENV])
16402 +m4trace:configure.in:134: -1- AC_SUBST([THREADLIBS])
16403 +m4trace:configure.in:141: -1- AM_CONDITIONAL([POWERPC_DARWIN], [test x$powerpc_darwin = xtrue])
16404 +m4trace:configure.in:141: -1- AC_SUBST([POWERPC_DARWIN_TRUE])
16405 +m4trace:configure.in:141: -1- AC_SUBST([POWERPC_DARWIN_FALSE])
16406 +m4trace:configure.in:148: -1- AC_CHECK_LIB([dl], [dlopen], [EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl"])
16407 +m4trace:configure.in:152: -1- AC_SUBST([EXTRA_TEST_LIBS])
16408 +m4trace:configure.in:155: -1- AC_SUBST([target_all])
16409 +m4trace:configure.in:156: -1- AC_SUBST([target_alias])
16410 +m4trace:configure.in:174: -1- AC_DEFINE_TRACE_LITERAL([ECOS])
16411 +m4trace:configure.in:179: -1- AC_SUBST([CXX])
16412 +m4trace:configure.in:181: -1- AC_SUBST([INCLUDES])
16413 +m4trace:configure.in:182: -1- AC_SUBST([CXXINCLUDES])
16414 +m4trace:configure.in:197: -1- AC_DEFINE_TRACE_LITERAL([SOLARIS25_PROC_VDB_BUG_FIXED])
16415 +m4trace:configure.in:201: -1- AC_DEFINE_TRACE_LITERAL([STACKBASE])
16416 +m4trace:configure.in:202: -1- AC_DEFINE_TRACE_LITERAL([DATASTART_IS_ETEXT])
16417 +m4trace:configure.in:211: -1- AC_DEFINE_TRACE_LITERAL([NO_EXECUTE_PERMISSION])
16418 +m4trace:configure.in:215: -1- AC_DEFINE_TRACE_LITERAL([SUNOS53_SHARED_LIB])
16419 +m4trace:configure.in:228: -1- AC_SUBST([addobjs])
16420 +m4trace:configure.in:252: -1- AC_SUBST([MY_CFLAGS])
16421 +m4trace:configure.in:256: -1- AC_DEFINE_TRACE_LITERAL([SILENT])
16422 +m4trace:configure.in:257: -1- AC_DEFINE_TRACE_LITERAL([NO_SIGNALS])
16423 +m4trace:configure.in:258: -1- AC_DEFINE_TRACE_LITERAL([NO_EXECUTE_PERMISSION])
16424 +m4trace:configure.in:259: -1- AC_DEFINE_TRACE_LITERAL([ALL_INTERIOR_POINTERS])
16425 +m4trace:configure.in:262: -1- AC_DEFINE_TRACE_LITERAL([JAVA_FINALIZATION])
16426 +m4trace:configure.in:263: -1- AC_DEFINE_TRACE_LITERAL([GC_GCJ_SUPPORT])
16427 +m4trace:configure.in:264: -1- AC_DEFINE_TRACE_LITERAL([ATOMIC_UNCOLLECTABLE])
16428 +m4trace:configure.in:270: -1- AC_DEFINE_TRACE_LITERAL([NO_SIGSET])
16429 +m4trace:configure.in:271: -1- AC_DEFINE_TRACE_LITERAL([NO_DEBUGGING])
16430 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([KEEP_BACK_PTRS])
16431 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([DBG_HDRS_ALL])
16432 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([MAKE_BACK_GRAPH])
16433 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([MAKE_BACK_GRAPH])
16434 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([SAVE_CALL_COUNT])
16435 +m4trace:configure.in:292: -1- AM_CONDITIONAL([USE_LIBDIR], [test -z "$with_cross_host"])
16436 +m4trace:configure.in:292: -1- AC_SUBST([USE_LIBDIR_TRUE])
16437 +m4trace:configure.in:292: -1- AC_SUBST([USE_LIBDIR_FALSE])
16438 +m4trace:configure.in:317: -1- AC_CONFIG_FILES([Makefile include/Makefile])
16439 +m4trace:configure.in:317: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
16440 +m4trace:configure.in:317: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
16441 diff -Nubr boehm-gc/autom4te.cache/traces.1 ../boehm-gc/autom4te.cache/traces.1
16442 --- boehm-gc/autom4te.cache/traces.1 Wed Dec 31 16:00:00 1969
16443 +++ ../boehm-gc/autom4te.cache/traces.1 Sat May 31 15:09:31 2003
16445 +m4trace:aclocal.m4:166: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
16446 +m4trace:configure.in:16: -1- m4_pattern_forbid([^_?A[CHUM]_])
16447 +m4trace:configure.in:16: -1- m4_pattern_forbid([_AC_])
16448 +m4trace:configure.in:16: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
16449 +m4trace:configure.in:16: -1- m4_pattern_allow([^AS_FLAGS$])
16450 +m4trace:configure.in:16: -1- m4_pattern_forbid([^_?m4_])
16451 +m4trace:configure.in:16: -1- m4_pattern_forbid([^dnl$])
16452 +m4trace:configure.in:16: -1- m4_pattern_forbid([^_?AS_])
16453 +m4trace:configure.in:16: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
16454 +m4trace:configure.in:16: -1- AC_SUBST([PATH_SEPARATOR])
16455 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
16456 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
16457 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
16458 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
16459 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
16460 +m4trace:configure.in:16: -1- AC_SUBST([exec_prefix], [NONE])
16461 +m4trace:configure.in:16: -1- AC_SUBST([prefix], [NONE])
16462 +m4trace:configure.in:16: -1- AC_SUBST([program_transform_name], [s,x,x,])
16463 +m4trace:configure.in:16: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
16464 +m4trace:configure.in:16: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
16465 +m4trace:configure.in:16: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
16466 +m4trace:configure.in:16: -1- AC_SUBST([datadir], ['${prefix}/share'])
16467 +m4trace:configure.in:16: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
16468 +m4trace:configure.in:16: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
16469 +m4trace:configure.in:16: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
16470 +m4trace:configure.in:16: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
16471 +m4trace:configure.in:16: -1- AC_SUBST([includedir], ['${prefix}/include'])
16472 +m4trace:configure.in:16: -1- AC_SUBST([oldincludedir], ['/usr/include'])
16473 +m4trace:configure.in:16: -1- AC_SUBST([infodir], ['${prefix}/info'])
16474 +m4trace:configure.in:16: -1- AC_SUBST([mandir], ['${prefix}/man'])
16475 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
16476 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
16477 +#undef PACKAGE_NAME])
16478 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
16479 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
16480 +#undef PACKAGE_TARNAME])
16481 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
16482 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
16483 +#undef PACKAGE_VERSION])
16484 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
16485 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
16486 +#undef PACKAGE_STRING])
16487 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
16488 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
16489 +#undef PACKAGE_BUGREPORT])
16490 +m4trace:configure.in:16: -1- AC_SUBST([build_alias])
16491 +m4trace:configure.in:16: -1- AC_SUBST([host_alias])
16492 +m4trace:configure.in:16: -1- AC_SUBST([target_alias])
16493 +m4trace:configure.in:16: -1- AC_SUBST([DEFS])
16494 +m4trace:configure.in:16: -1- AC_SUBST([ECHO_C])
16495 +m4trace:configure.in:16: -1- AC_SUBST([ECHO_N])
16496 +m4trace:configure.in:16: -1- AC_SUBST([ECHO_T])
16497 +m4trace:configure.in:16: -1- AC_SUBST([LIBS])
16498 +m4trace:configure.in:27: -1- AC_SUBST([gc_basedir])
16499 +m4trace:configure.in:27: -1- AC_SUBST([build], [$ac_cv_build])
16500 +m4trace:configure.in:27: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
16501 +m4trace:configure.in:27: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
16502 +m4trace:configure.in:27: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
16503 +m4trace:configure.in:27: -1- AC_SUBST([host], [$ac_cv_host])
16504 +m4trace:configure.in:27: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
16505 +m4trace:configure.in:27: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
16506 +m4trace:configure.in:27: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
16507 +m4trace:configure.in:27: -1- AC_SUBST([target], [$ac_cv_target])
16508 +m4trace:configure.in:27: -1- AC_SUBST([target_cpu], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
16509 +m4trace:configure.in:27: -1- AC_SUBST([target_vendor], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
16510 +m4trace:configure.in:27: -1- AC_SUBST([target_os], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
16511 +m4trace:configure.in:27: -1- AC_SUBST([mkinstalldirs])
16512 +m4trace:configure.in:27: -1- AC_PROG_INSTALL
16513 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM])
16514 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT])
16515 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA])
16516 +m4trace:configure.in:27: -1- AC_SUBST([PACKAGE], [gc])
16517 +m4trace:configure.in:27: -1- AC_SUBST([VERSION], [6.1a1])
16518 +m4trace:configure.in:27: -1- AC_SUBST([ACLOCAL])
16519 +m4trace:configure.in:27: -1- AC_SUBST([AUTOCONF])
16520 +m4trace:configure.in:27: -1- AC_SUBST([AUTOMAKE])
16521 +m4trace:configure.in:27: -1- AC_SUBST([AUTOHEADER])
16522 +m4trace:configure.in:27: -1- AC_SUBST([MAKEINFO])
16523 +m4trace:configure.in:27: -1- AC_SUBST([AMTAR])
16524 +m4trace:configure.in:27: -1- AC_SUBST([install_sh])
16525 +m4trace:configure.in:27: -1- AC_SUBST([STRIP])
16526 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_STRIP])
16527 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
16528 +m4trace:configure.in:27: -1- AC_PROG_AWK
16529 +m4trace:configure.in:27: -1- AC_SUBST([AWK])
16530 +m4trace:configure.in:27: -1- AC_PROG_MAKE_SET
16531 +m4trace:configure.in:27: -1- AC_SUBST([SET_MAKE])
16532 +m4trace:configure.in:27: -1- AC_SUBST([AS])
16533 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_AS])
16534 +m4trace:configure.in:27: -1- AC_SUBST([AR])
16535 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_AR])
16536 +m4trace:configure.in:27: -1- AC_SUBST([RANLIB])
16537 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_RANLIB])
16538 +m4trace:configure.in:27: -1- AC_PROG_INSTALL
16539 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM])
16540 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT])
16541 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA])
16542 +m4trace:configure.in:27: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
16543 +m4trace:configure.in:27: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
16544 +m4trace:configure.in:27: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
16545 +m4trace:configure.in:27: -1- AC_SUBST([MAINT])
16546 +m4trace:configure.in:27: -1- AC_SUBST([GC_CFLAGS])
16547 +m4trace:configure.in:29: -1- AM_PROG_LIBTOOL
16548 +m4trace:configure.in:29: -1- AC_PROG_LIBTOOL
16549 +m4trace:configure.in:29: -1- AC_PROG_CC
16550 +m4trace:configure.in:29: -1- AC_SUBST([CC])
16551 +m4trace:configure.in:29: -1- AC_SUBST([CFLAGS])
16552 +m4trace:configure.in:29: -1- AC_SUBST([LDFLAGS])
16553 +m4trace:configure.in:29: -1- AC_SUBST([CPPFLAGS])
16554 +m4trace:configure.in:29: -1- AC_SUBST([CC])
16555 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_CC])
16556 +m4trace:configure.in:29: -1- AC_SUBST([CC])
16557 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_CC])
16558 +m4trace:configure.in:29: -1- AC_SUBST([CC])
16559 +m4trace:configure.in:29: -1- AC_SUBST([CC])
16560 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_CC])
16561 +m4trace:configure.in:29: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
16562 +m4trace:configure.in:29: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
16563 +m4trace:configure.in:29: -1- AC_SUBST([DEPDIR])
16564 +m4trace:configure.in:29: -1- AC_SUBST([am__include])
16565 +m4trace:configure.in:29: -1- AC_SUBST([am__quote])
16566 +m4trace:configure.in:29: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
16567 +m4trace:configure.in:29: -1- AC_SUBST([AMDEP_TRUE])
16568 +m4trace:configure.in:29: -1- AC_SUBST([AMDEP_FALSE])
16569 +m4trace:configure.in:29: -1- AC_SUBST([AMDEPBACKSLASH])
16570 +m4trace:configure.in:29: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
16571 +m4trace:configure.in:29: -1- AC_PROG_LN_S
16572 +m4trace:configure.in:29: -1- AC_SUBST([LN_S], [$as_ln_s])
16573 +m4trace:configure.in:29: -1- AC_SUBST([ECHO])
16574 +m4trace:configure.in:29: -1- AC_SUBST([RANLIB])
16575 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_RANLIB])
16576 +m4trace:configure.in:29: -1- AC_SUBST([STRIP])
16577 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_STRIP])
16578 +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],
16579 + [lt_cv_dlopen="dlopen"],
16580 + [AC_CHECK_LIB([dl], [dlopen],
16581 + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
16582 + [AC_CHECK_LIB([svld], [dlopen],
16583 + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
16584 + [AC_CHECK_LIB([dld], [dld_link],
16585 + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
16590 +m4trace:configure.in:29: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
16591 + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
16592 + [AC_CHECK_LIB([dld], [dld_link],
16593 + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
16596 +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],
16597 + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
16599 +m4trace:configure.in:29: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
16600 +m4trace:configure.in:29: -1- AC_CHECK_HEADERS([dlfcn.h])
16601 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
16602 +#undef HAVE_DLFCN_H])
16603 +m4trace:configure.in:29: -1- AC_HEADER_STDC
16604 +m4trace:configure.in:29: -1- AC_PROG_CPP
16605 +m4trace:configure.in:29: -1- AC_SUBST([CPP])
16606 +m4trace:configure.in:29: -1- AC_SUBST([CPPFLAGS])
16607 +m4trace:configure.in:29: -1- AC_SUBST([CPP])
16608 +m4trace:configure.in:29: -1- AC_SUBST([EGREP])
16609 +m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
16610 +m4trace:configure.in:29: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
16611 +#undef STDC_HEADERS])
16612 +m4trace:configure.in:29: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
16613 + inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
16614 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
16615 +#undef HAVE_SYS_TYPES_H])
16616 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
16617 +#undef HAVE_SYS_STAT_H])
16618 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
16619 +#undef HAVE_STDLIB_H])
16620 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
16621 +#undef HAVE_STRING_H])
16622 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
16623 +#undef HAVE_MEMORY_H])
16624 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
16625 +#undef HAVE_STRINGS_H])
16626 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
16627 +#undef HAVE_INTTYPES_H])
16628 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
16629 +#undef HAVE_STDINT_H])
16630 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
16631 +#undef HAVE_UNISTD_H])
16632 +m4trace:configure.in:29: -1- AC_SUBST([LIBTOOL])
16633 +m4trace:configure.in:38: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
16634 +m4trace:configure.in:38: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
16635 +m4trace:configure.in:38: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
16636 +m4trace:configure.in:38: -1- AC_SUBST([MAINT])
16637 +m4trace:configure.in:77: -1- AC_DEFINE_TRACE_LITERAL([GC_LINUX_THREADS])
16638 +m4trace:configure.in:78: -1- AC_DEFINE_TRACE_LITERAL([_REENTRANT])
16639 +m4trace:configure.in:80: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK])
16640 +m4trace:configure.in:82: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC])
16641 +m4trace:configure.in:85: -1- AC_DEFINE_TRACE_LITERAL([GC_LINUX_THREADS])
16642 +m4trace:configure.in:86: -1- AC_DEFINE_TRACE_LITERAL([_REENTRANT])
16643 +m4trace:configure.in:90: -1- AC_DEFINE_TRACE_LITERAL([GC_HPUX_THREADS])
16644 +m4trace:configure.in:91: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_C_SOURCE])
16645 +m4trace:configure.in:93: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK])
16646 +m4trace:configure.in:95: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC])
16647 +m4trace:configure.in:100: -1- AC_DEFINE_TRACE_LITERAL([GC_FREEBSD_THREADS])
16648 +m4trace:configure.in:105: -1- AC_DEFINE_TRACE_LITERAL([GC_SOLARIS_THREADS])
16649 +m4trace:configure.in:106: -1- AC_DEFINE_TRACE_LITERAL([GC_SOLARIS_PTHREADS])
16650 +m4trace:configure.in:109: -1- AC_DEFINE_TRACE_LITERAL([GC_IRIX_THREADS])
16651 +m4trace:configure.in:115: -1- AC_DEFINE_TRACE_LITERAL([GC_DARWIN_THREADS])
16652 +m4trace:configure.in:116: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC])
16653 +m4trace:configure.in:118: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK])
16654 +m4trace:configure.in:124: -1- AC_DEFINE_TRACE_LITERAL([GC_WIN32_THREADS])
16655 +m4trace:configure.in:125: -1- AC_DEFINE_TRACE_LITERAL([NO_GETENV])
16656 +m4trace:configure.in:134: -1- AC_SUBST([THREADLIBS])
16657 +m4trace:configure.in:141: -1- AM_CONDITIONAL([POWERPC_DARWIN], [test x$powerpc_darwin = xtrue])
16658 +m4trace:configure.in:141: -1- AC_SUBST([POWERPC_DARWIN_TRUE])
16659 +m4trace:configure.in:141: -1- AC_SUBST([POWERPC_DARWIN_FALSE])
16660 +m4trace:configure.in:148: -1- AC_CHECK_LIB([dl], [dlopen], [EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl"])
16661 +m4trace:configure.in:152: -1- AC_SUBST([EXTRA_TEST_LIBS])
16662 +m4trace:configure.in:155: -1- AC_SUBST([target_all])
16663 +m4trace:configure.in:156: -1- AC_SUBST([target_alias])
16664 +m4trace:configure.in:174: -1- AC_DEFINE_TRACE_LITERAL([ECOS])
16665 +m4trace:configure.in:179: -1- AC_SUBST([CXX])
16666 +m4trace:configure.in:181: -1- AC_SUBST([INCLUDES])
16667 +m4trace:configure.in:182: -1- AC_SUBST([CXXINCLUDES])
16668 +m4trace:configure.in:197: -1- AC_DEFINE_TRACE_LITERAL([SOLARIS25_PROC_VDB_BUG_FIXED])
16669 +m4trace:configure.in:201: -1- AC_DEFINE_TRACE_LITERAL([STACKBASE])
16670 +m4trace:configure.in:202: -1- AC_DEFINE_TRACE_LITERAL([DATASTART_IS_ETEXT])
16671 +m4trace:configure.in:211: -1- AC_DEFINE_TRACE_LITERAL([NO_EXECUTE_PERMISSION])
16672 +m4trace:configure.in:215: -1- AC_DEFINE_TRACE_LITERAL([SUNOS53_SHARED_LIB])
16673 +m4trace:configure.in:228: -1- AC_SUBST([addobjs])
16674 +m4trace:configure.in:252: -1- AC_SUBST([MY_CFLAGS])
16675 +m4trace:configure.in:256: -1- AC_DEFINE_TRACE_LITERAL([SILENT])
16676 +m4trace:configure.in:257: -1- AC_DEFINE_TRACE_LITERAL([NO_SIGNALS])
16677 +m4trace:configure.in:258: -1- AC_DEFINE_TRACE_LITERAL([NO_EXECUTE_PERMISSION])
16678 +m4trace:configure.in:259: -1- AC_DEFINE_TRACE_LITERAL([ALL_INTERIOR_POINTERS])
16679 +m4trace:configure.in:262: -1- AC_DEFINE_TRACE_LITERAL([JAVA_FINALIZATION])
16680 +m4trace:configure.in:263: -1- AC_DEFINE_TRACE_LITERAL([GC_GCJ_SUPPORT])
16681 +m4trace:configure.in:264: -1- AC_DEFINE_TRACE_LITERAL([ATOMIC_UNCOLLECTABLE])
16682 +m4trace:configure.in:270: -1- AC_DEFINE_TRACE_LITERAL([NO_SIGSET])
16683 +m4trace:configure.in:271: -1- AC_DEFINE_TRACE_LITERAL([NO_DEBUGGING])
16684 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([KEEP_BACK_PTRS])
16685 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([DBG_HDRS_ALL])
16686 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([MAKE_BACK_GRAPH])
16687 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([MAKE_BACK_GRAPH])
16688 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([SAVE_CALL_COUNT])
16689 +m4trace:configure.in:292: -1- AM_CONDITIONAL([USE_LIBDIR], [test -z "$with_cross_host"])
16690 +m4trace:configure.in:292: -1- AC_SUBST([USE_LIBDIR_TRUE])
16691 +m4trace:configure.in:292: -1- AC_SUBST([USE_LIBDIR_FALSE])
16692 +m4trace:configure.in:317: -1- AC_CONFIG_FILES([Makefile include/Makefile])
16693 +m4trace:configure.in:317: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
16694 +m4trace:configure.in:317: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
16695 diff -Nubr boehm-gc/backgraph.c ../boehm-gc/backgraph.c
16696 --- boehm-gc/backgraph.c Wed Jan 30 18:48:45 2002
16697 +++ ../boehm-gc/backgraph.c Mon May 26 12:48:52 2003
16698 @@ -307,6 +307,7 @@
16700 while (currentp < (word *)(p + gc_descr)) {
16701 word current = *currentp++;
16702 + FIXUP_POINTER(current);
16703 if (current >= (word)GC_least_plausible_heap_addr &&
16704 current <= (word)GC_greatest_plausible_heap_addr) {
16705 ptr_t target = GC_base((GC_PTR)current);
16706 diff -Nubr boehm-gc/configure ../boehm-gc/configure
16707 --- boehm-gc/configure Tue May 13 17:18:14 2003
16708 +++ ../boehm-gc/configure Sat May 31 21:21:37 2003
16710 program_transform_name=s,x,x,
16717 @@ -176,7 +175,6 @@
16718 --help print this message
16719 --no-create do not create output files
16720 --quiet, --silent do not print \`checking...' messages
16721 - --site-file=FILE use FILE as the site file
16722 --version print the version of autoconf that created configure
16723 Directory and file names:
16724 --prefix=PREFIX install architecture-independent files in PREFIX
16725 @@ -347,11 +345,6 @@
16726 -site=* | --site=* | --sit=*)
16727 site="$ac_optarg" ;;
16729 - -site-file | --site-file | --site-fil | --site-fi | --site-f)
16730 - ac_prev=sitefile ;;
16731 - -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*)
16732 - sitefile="$ac_optarg" ;;
16734 -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
16736 -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
16737 @@ -517,16 +510,12 @@
16738 srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
16740 # Prefer explicitly selected file to automatically selected ones.
16741 -if test -z "$sitefile"; then
16742 - if test -z "$CONFIG_SITE"; then
16743 +if test -z "$CONFIG_SITE"; then
16744 if test "x$prefix" != xNONE; then
16745 CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
16747 CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
16751 - CONFIG_SITE="$sitefile"
16753 for ac_site_file in $CONFIG_SITE; do
16754 if test -r "$ac_site_file"; then
16755 @@ -604,7 +593,7 @@
16756 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
16757 # ./install, which can be erroneously created by make from ./install.sh.
16758 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
16759 -echo "configure:608: checking for a BSD compatible install" >&5
16760 +echo "configure:597: checking for a BSD compatible install" >&5
16761 if test -z "$INSTALL"; then
16762 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
16763 echo $ac_n "(cached) $ac_c" 1>&6
16764 @@ -657,7 +646,7 @@
16765 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
16767 echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
16768 -echo "configure:661: checking whether build environment is sane" >&5
16769 +echo "configure:650: checking whether build environment is sane" >&5
16772 echo timestamp > conftestfile
16773 @@ -714,7 +703,7 @@
16774 test "$program_transform_name" = "" && program_transform_name="s,x,x,"
16776 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
16777 -echo "configure:718: checking whether ${MAKE-make} sets \${MAKE}" >&5
16778 +echo "configure:707: checking whether ${MAKE-make} sets \${MAKE}" >&5
16779 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
16780 if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
16781 echo $ac_n "(cached) $ac_c" 1>&6
16782 @@ -747,12 +736,12 @@
16785 echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
16786 -echo "configure:751: checking for Cygwin environment" >&5
16787 +echo "configure:740: checking for Cygwin environment" >&5
16788 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
16789 echo $ac_n "(cached) $ac_c" 1>&6
16791 cat > conftest.$ac_ext <<EOF
16792 -#line 756 "configure"
16793 +#line 745 "configure"
16794 #include "confdefs.h"
16797 @@ -763,7 +752,7 @@
16801 -if { (eval echo configure:767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
16802 +if { (eval echo configure:756: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
16806 @@ -780,19 +769,19 @@
16808 test "$ac_cv_cygwin" = yes && CYGWIN=yes
16809 echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
16810 -echo "configure:784: checking for mingw32 environment" >&5
16811 +echo "configure:773: checking for mingw32 environment" >&5
16812 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
16813 echo $ac_n "(cached) $ac_c" 1>&6
16815 cat > conftest.$ac_ext <<EOF
16816 -#line 789 "configure"
16817 +#line 778 "configure"
16818 #include "confdefs.h"
16821 return __MINGW32__;
16824 -if { (eval echo configure:796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
16825 +if { (eval echo configure:785: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
16829 @@ -903,7 +892,7 @@
16832 echo $ac_n "checking host system type""... $ac_c" 1>&6
16833 -echo "configure:907: checking host system type" >&5
16834 +echo "configure:896: checking host system type" >&5
16837 case "$host_alias" in
16838 @@ -924,7 +913,7 @@
16839 echo "$ac_t""$host" 1>&6
16841 echo $ac_n "checking target system type""... $ac_c" 1>&6
16842 -echo "configure:928: checking target system type" >&5
16843 +echo "configure:917: checking target system type" >&5
16845 target_alias=$target
16846 case "$target_alias" in
16847 @@ -942,7 +931,7 @@
16848 echo "$ac_t""$target" 1>&6
16850 echo $ac_n "checking build system type""... $ac_c" 1>&6
16851 -echo "configure:946: checking build system type" >&5
16852 +echo "configure:935: checking build system type" >&5
16855 case "$build_alias" in
16856 @@ -982,7 +971,7 @@
16858 missing_dir=`cd $ac_aux_dir && pwd`
16859 echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
16860 -echo "configure:986: checking for working aclocal" >&5
16861 +echo "configure:975: checking for working aclocal" >&5
16862 # Run test in a subshell; some versions of sh will print an error if
16863 # an executable is not found, even if stderr is redirected.
16864 # Redirect stdin to placate older versions of autoconf. Sigh.
16865 @@ -995,7 +984,7 @@
16868 echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
16869 -echo "configure:999: checking for working autoconf" >&5
16870 +echo "configure:988: checking for working autoconf" >&5
16871 # Run test in a subshell; some versions of sh will print an error if
16872 # an executable is not found, even if stderr is redirected.
16873 # Redirect stdin to placate older versions of autoconf. Sigh.
16874 @@ -1008,7 +997,7 @@
16877 echo $ac_n "checking for working automake""... $ac_c" 1>&6
16878 -echo "configure:1012: checking for working automake" >&5
16879 +echo "configure:1001: checking for working automake" >&5
16880 # Run test in a subshell; some versions of sh will print an error if
16881 # an executable is not found, even if stderr is redirected.
16882 # Redirect stdin to placate older versions of autoconf. Sigh.
16883 @@ -1021,7 +1010,7 @@
16886 echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
16887 -echo "configure:1025: checking for working autoheader" >&5
16888 +echo "configure:1014: checking for working autoheader" >&5
16889 # Run test in a subshell; some versions of sh will print an error if
16890 # an executable is not found, even if stderr is redirected.
16891 # Redirect stdin to placate older versions of autoconf. Sigh.
16892 @@ -1034,7 +1023,7 @@
16895 echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
16896 -echo "configure:1038: checking for working makeinfo" >&5
16897 +echo "configure:1027: checking for working makeinfo" >&5
16898 # Run test in a subshell; some versions of sh will print an error if
16899 # an executable is not found, even if stderr is redirected.
16900 # Redirect stdin to placate older versions of autoconf. Sigh.
16901 @@ -1060,7 +1049,7 @@
16902 # Extract the first word of "gcc", so it can be a program name with args.
16903 set dummy gcc; ac_word=$2
16904 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
16905 -echo "configure:1064: checking for $ac_word" >&5
16906 +echo "configure:1053: checking for $ac_word" >&5
16907 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
16908 echo $ac_n "(cached) $ac_c" 1>&6
16910 @@ -1090,7 +1079,7 @@
16911 # Extract the first word of "cc", so it can be a program name with args.
16912 set dummy cc; ac_word=$2
16913 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
16914 -echo "configure:1094: checking for $ac_word" >&5
16915 +echo "configure:1083: checking for $ac_word" >&5
16916 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
16917 echo $ac_n "(cached) $ac_c" 1>&6
16919 @@ -1139,7 +1128,7 @@
16922 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
16923 -echo "configure:1143: checking whether we are using GNU C" >&5
16924 +echo "configure:1132: checking whether we are using GNU C" >&5
16925 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
16926 echo $ac_n "(cached) $ac_c" 1>&6
16928 @@ -1148,7 +1137,7 @@
16932 -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
16933 +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
16937 @@ -1163,7 +1152,7 @@
16938 ac_save_CFLAGS="$CFLAGS"
16940 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
16941 -echo "configure:1167: checking whether ${CC-cc} accepts -g" >&5
16942 +echo "configure:1156: checking whether ${CC-cc} accepts -g" >&5
16943 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
16944 echo $ac_n "(cached) $ac_c" 1>&6
16946 @@ -1200,7 +1189,7 @@
16947 # Extract the first word of "$ac_prog", so it can be a program name with args.
16948 set dummy $ac_prog; ac_word=$2
16949 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
16950 -echo "configure:1204: checking for $ac_word" >&5
16951 +echo "configure:1193: checking for $ac_word" >&5
16952 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
16953 echo $ac_n "(cached) $ac_c" 1>&6
16955 @@ -1233,7 +1222,7 @@
16956 test -z "$CXX" && { echo "configure: error: no acceptable c++ found in \$PATH" 1>&2; exit 1; }
16958 echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
16959 -echo "configure:1237: checking whether we are using GNU C++" >&5
16960 +echo "configure:1226: checking whether we are using GNU C++" >&5
16961 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
16962 echo $ac_n "(cached) $ac_c" 1>&6
16964 @@ -1242,7 +1231,7 @@
16968 -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
16969 +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
16973 @@ -1257,7 +1246,7 @@
16974 ac_save_CXXFLAGS="$CXXFLAGS"
16976 echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
16977 -echo "configure:1261: checking whether ${CXX-g++} accepts -g" >&5
16978 +echo "configure:1250: checking whether ${CXX-g++} accepts -g" >&5
16979 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
16980 echo $ac_n "(cached) $ac_c" 1>&6
16982 @@ -1290,7 +1279,7 @@
16983 # NEWLIB_CONFIGURE, which doesn't work because that means that it will
16984 # be run before AC_CANONICAL_HOST.
16985 echo $ac_n "checking build system type""... $ac_c" 1>&6
16986 -echo "configure:1294: checking build system type" >&5
16987 +echo "configure:1283: checking build system type" >&5
16990 case "$build_alias" in
16991 @@ -1311,7 +1300,7 @@
16992 # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
16993 set dummy ${ac_tool_prefix}as; ac_word=$2
16994 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
16995 -echo "configure:1315: checking for $ac_word" >&5
16996 +echo "configure:1304: checking for $ac_word" >&5
16997 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
16998 echo $ac_n "(cached) $ac_c" 1>&6
17000 @@ -1343,7 +1332,7 @@
17001 # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
17002 set dummy ${ac_tool_prefix}ar; ac_word=$2
17003 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
17004 -echo "configure:1347: checking for $ac_word" >&5
17005 +echo "configure:1336: checking for $ac_word" >&5
17006 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
17007 echo $ac_n "(cached) $ac_c" 1>&6
17009 @@ -1375,7 +1364,7 @@
17010 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
17011 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
17012 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
17013 -echo "configure:1379: checking for $ac_word" >&5
17014 +echo "configure:1368: checking for $ac_word" >&5
17015 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
17016 echo $ac_n "(cached) $ac_c" 1>&6
17018 @@ -1407,7 +1396,7 @@
17019 # Extract the first word of "ranlib", so it can be a program name with args.
17020 set dummy ranlib; ac_word=$2
17021 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
17022 -echo "configure:1411: checking for $ac_word" >&5
17023 +echo "configure:1400: checking for $ac_word" >&5
17024 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
17025 echo $ac_n "(cached) $ac_c" 1>&6
17027 @@ -1452,7 +1441,7 @@
17028 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
17029 # ./install, which can be erroneously created by make from ./install.sh.
17030 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
17031 -echo "configure:1456: checking for a BSD compatible install" >&5
17032 +echo "configure:1445: checking for a BSD compatible install" >&5
17033 if test -z "$INSTALL"; then
17034 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
17035 echo $ac_n "(cached) $ac_c" 1>&6
17036 @@ -1506,7 +1495,7 @@
17039 echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
17040 -echo "configure:1510: checking whether to enable maintainer-specific portions of Makefiles" >&5
17041 +echo "configure:1499: checking whether to enable maintainer-specific portions of Makefiles" >&5
17042 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
17043 if test "${enable_maintainer_mode+set}" = set; then
17044 enableval="$enable_maintainer_mode"
17045 @@ -1544,7 +1533,7 @@
17048 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
17049 -echo "configure:1548: checking for executable suffix" >&5
17050 +echo "configure:1537: checking for executable suffix" >&5
17051 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
17052 echo $ac_n "(cached) $ac_c" 1>&6
17054 @@ -1554,10 +1543,10 @@
17056 echo 'int main () { return 0; }' > conftest.$ac_ext
17058 - if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
17059 + if { (eval echo configure:1547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
17060 for file in conftest.*; do
17062 - *.c | *.o | *.obj | *.ilk | *.pdb) ;;
17063 + *.c | *.o | *.obj) ;;
17064 *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
17067 @@ -1676,7 +1665,7 @@
17068 if test "$GCC" = yes; then
17069 # Check if gcc -print-prog-name=ld gives a path.
17070 echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
17071 -echo "configure:1680: checking for ld used by GCC" >&5
17072 +echo "configure:1669: checking for ld used by GCC" >&5
17075 # gcc leaves a trailing carriage return which upsets mingw
17076 @@ -1706,10 +1695,10 @@
17078 elif test "$with_gnu_ld" = yes; then
17079 echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
17080 -echo "configure:1710: checking for GNU ld" >&5
17081 +echo "configure:1699: checking for GNU ld" >&5
17083 echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
17084 -echo "configure:1713: checking for non-GNU ld" >&5
17085 +echo "configure:1702: checking for non-GNU ld" >&5
17087 if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then
17088 echo $ac_n "(cached) $ac_c" 1>&6
17089 @@ -1744,7 +1733,7 @@
17091 test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
17092 echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
17093 -echo "configure:1748: checking if the linker ($LD) is GNU ld" >&5
17094 +echo "configure:1737: checking if the linker ($LD) is GNU ld" >&5
17095 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then
17096 echo $ac_n "(cached) $ac_c" 1>&6
17098 @@ -1761,7 +1750,7 @@
17101 echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
17102 -echo "configure:1765: checking for $LD option to reload object files" >&5
17103 +echo "configure:1754: checking for $LD option to reload object files" >&5
17104 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then
17105 echo $ac_n "(cached) $ac_c" 1>&6
17107 @@ -1773,7 +1762,7 @@
17108 test -n "$reload_flag" && reload_flag=" $reload_flag"
17110 echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
17111 -echo "configure:1777: checking for BSD-compatible nm" >&5
17112 +echo "configure:1766: checking for BSD-compatible nm" >&5
17113 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then
17114 echo $ac_n "(cached) $ac_c" 1>&6
17116 @@ -1811,7 +1800,7 @@
17117 echo "$ac_t""$NM" 1>&6
17119 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
17120 -echo "configure:1815: checking whether ln -s works" >&5
17121 +echo "configure:1804: checking whether ln -s works" >&5
17122 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
17123 echo $ac_n "(cached) $ac_c" 1>&6
17125 @@ -1832,7 +1821,7 @@
17128 echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
17129 -echo "configure:1836: checking how to recognise dependant libraries" >&5
17130 +echo "configure:1825: checking how to recognise dependant libraries" >&5
17131 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then
17132 echo $ac_n "(cached) $ac_c" 1>&6
17134 @@ -2005,13 +1994,13 @@
17135 deplibs_check_method=$lt_cv_deplibs_check_method
17137 echo $ac_n "checking for object suffix""... $ac_c" 1>&6
17138 -echo "configure:2009: checking for object suffix" >&5
17139 +echo "configure:1998: checking for object suffix" >&5
17140 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then
17141 echo $ac_n "(cached) $ac_c" 1>&6
17144 echo 'int i = 1;' > conftest.$ac_ext
17145 -if { (eval echo configure:2015: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17146 +if { (eval echo configure:2004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17147 for ac_file in conftest.*; do
17150 @@ -2035,7 +2024,7 @@
17152 if test "$file_magic_cmd" = '$MAGIC_CMD'; then
17153 echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6
17154 -echo "configure:2039: checking for ${ac_tool_prefix}file" >&5
17155 +echo "configure:2028: checking for ${ac_tool_prefix}file" >&5
17156 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
17157 echo $ac_n "(cached) $ac_c" 1>&6
17159 @@ -2097,7 +2086,7 @@
17160 if test -z "$lt_cv_path_MAGIC_CMD"; then
17161 if test -n "$ac_tool_prefix"; then
17162 echo $ac_n "checking for file""... $ac_c" 1>&6
17163 -echo "configure:2101: checking for file" >&5
17164 +echo "configure:2090: checking for file" >&5
17165 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
17166 echo $ac_n "(cached) $ac_c" 1>&6
17168 @@ -2168,7 +2157,7 @@
17169 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
17170 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
17171 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
17172 -echo "configure:2172: checking for $ac_word" >&5
17173 +echo "configure:2161: checking for $ac_word" >&5
17174 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
17175 echo $ac_n "(cached) $ac_c" 1>&6
17177 @@ -2200,7 +2189,7 @@
17178 # Extract the first word of "ranlib", so it can be a program name with args.
17179 set dummy ranlib; ac_word=$2
17180 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
17181 -echo "configure:2204: checking for $ac_word" >&5
17182 +echo "configure:2193: checking for $ac_word" >&5
17183 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
17184 echo $ac_n "(cached) $ac_c" 1>&6
17186 @@ -2235,7 +2224,7 @@
17187 # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
17188 set dummy ${ac_tool_prefix}strip; ac_word=$2
17189 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
17190 -echo "configure:2239: checking for $ac_word" >&5
17191 +echo "configure:2228: checking for $ac_word" >&5
17192 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
17193 echo $ac_n "(cached) $ac_c" 1>&6
17195 @@ -2267,7 +2256,7 @@
17196 # Extract the first word of "strip", so it can be a program name with args.
17197 set dummy strip; ac_word=$2
17198 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
17199 -echo "configure:2271: checking for $ac_word" >&5
17200 +echo "configure:2260: checking for $ac_word" >&5
17201 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
17202 echo $ac_n "(cached) $ac_c" 1>&6
17204 @@ -2334,21 +2323,8 @@
17207 # Find out which ABI we are using.
17208 - echo '#line 2338 "configure"' > conftest.$ac_ext
17209 - if { (eval echo configure:2339: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17210 - if test "$lt_cv_prog_gnu_ld" = yes; then
17211 - case `/usr/bin/file conftest.$ac_objext` in
17213 - LD="${LD-ld} -melf32bsmip"
17216 - LD="${LD-ld} -melf32bmipn32"
17219 - LD="${LD-ld} -melf64bmip"
17223 + echo '#line 2327 "configure"' > conftest.$ac_ext
17224 + if { (eval echo configure:2328: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17225 case `/usr/bin/file conftest.$ac_objext` in
17228 @@ -2361,14 +2337,13 @@
17237 # Find out which ABI we are using.
17238 echo 'int i;' > conftest.$ac_ext
17239 - if { (eval echo configure:2372: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17240 + if { (eval echo configure:2347: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17241 case "`/usr/bin/file conftest.o`" in
17243 HPUX_IA64_MODE="32"
17244 @@ -2384,7 +2359,7 @@
17245 x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
17246 # Find out which ABI we are using.
17247 echo 'int i;' > conftest.$ac_ext
17248 - if { (eval echo configure:2388: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17249 + if { (eval echo configure:2363: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17250 case "`/usr/bin/file conftest.o`" in
17253 @@ -2428,7 +2403,7 @@
17254 SAVE_CFLAGS="$CFLAGS"
17255 CFLAGS="$CFLAGS -belf"
17256 echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
17257 -echo "configure:2432: checking whether the C compiler needs -belf" >&5
17258 +echo "configure:2407: checking whether the C compiler needs -belf" >&5
17259 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
17260 echo $ac_n "(cached) $ac_c" 1>&6
17262 @@ -2441,14 +2416,14 @@
17263 cross_compiling=$ac_cv_prog_cc_cross
17265 cat > conftest.$ac_ext <<EOF
17266 -#line 2445 "configure"
17267 +#line 2420 "configure"
17268 #include "confdefs.h"
17274 -if { (eval echo configure:2452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
17275 +if { (eval echo configure:2427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
17277 lt_cv_cc_needs_belf=yes
17279 @@ -2478,7 +2453,7 @@
17282 echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
17283 -echo "configure:2482: checking how to run the C++ preprocessor" >&5
17284 +echo "configure:2457: checking how to run the C++ preprocessor" >&5
17285 if test -z "$CXXCPP"; then
17286 if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
17287 echo $ac_n "(cached) $ac_c" 1>&6
17288 @@ -2491,12 +2466,12 @@
17289 cross_compiling=$ac_cv_prog_cxx_cross
17290 CXXCPP="${CXX-g++} -E"
17291 cat > conftest.$ac_ext <<EOF
17292 -#line 2495 "configure"
17293 +#line 2470 "configure"
17294 #include "confdefs.h"
17295 #include <stdlib.h>
17297 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
17298 -{ (eval echo configure:2500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
17299 +{ (eval echo configure:2475: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
17300 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
17301 if test -z "$ac_err"; then
17303 @@ -2643,7 +2618,7 @@
17306 echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
17307 -echo "configure:2647: checking whether to enable maintainer-specific portions of Makefiles" >&5
17308 +echo "configure:2622: checking whether to enable maintainer-specific portions of Makefiles" >&5
17309 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
17310 if test "${enable_maintainer_mode+set}" = set; then
17311 enableval="$enable_maintainer_mode"
17312 @@ -2676,7 +2651,7 @@
17315 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
17316 -echo "configure:2680: checking for executable suffix" >&5
17317 +echo "configure:2655: checking for executable suffix" >&5
17318 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
17319 echo $ac_n "(cached) $ac_c" 1>&6
17321 @@ -2686,10 +2661,10 @@
17323 echo 'int main () { return 0; }' > conftest.$ac_ext
17325 - if { (eval echo configure:2690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
17326 + if { (eval echo configure:2665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
17327 for file in conftest.*; do
17329 - *.c | *.o | *.obj | *.ilk | *.pdb) ;;
17330 + *.c | *.o | *.obj) ;;
17331 *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
17334 @@ -2709,7 +2684,7 @@
17337 echo $ac_n "checking for thread model used by GCC""... $ac_c" 1>&6
17338 -echo "configure:2713: checking for thread model used by GCC" >&5
17339 +echo "configure:2688: checking for thread model used by GCC" >&5
17340 THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
17341 if test -z "$THREADS"; then
17343 @@ -2818,6 +2793,22 @@
17348 + cat >> confdefs.h <<\EOF
17349 +#define GC_DARWIN_THREADS 1
17352 + cat >> confdefs.h <<\EOF
17353 +#define THREAD_LOCAL_ALLOC 1
17356 + if test "${enable_parallel_mark}" = yes; then
17357 + cat >> confdefs.h <<\EOF
17358 +#define PARALLEL_MARK 1
17366 @@ -2829,12 +2820,6 @@
17367 #define NO_GETENV 1
17370 - if test $enable_shared = yes; then
17371 - cat >> confdefs.h <<\EOF
17377 decosf1 | irix | mach | os2 | solaris | dce | vxworks)
17378 { echo "configure: error: thread package $THREADS not yet supported" 1>&2; exit 1; }
17379 @@ -2845,8 +2830,28 @@
17383 -echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
17384 -echo "configure:2850: checking for dlopen in -ldl" >&5
17386 + powerpc-*-darwin*)
17387 + powerpc_darwin=true
17392 +if test x$powerpc_darwin = xtrue; then
17393 + POWERPC_DARWIN_TRUE=
17394 + POWERPC_DARWIN_FALSE='#'
17396 + POWERPC_DARWIN_TRUE='#'
17397 + POWERPC_DARWIN_FALSE=
17400 +# We never want libdl on darwin. It is a fake libdl that just ends up making
17401 +# dyld calls anyway
17405 + echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
17406 +echo "configure:2855: checking for dlopen in -ldl" >&5
17407 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
17408 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
17409 echo $ac_n "(cached) $ac_c" 1>&6
17410 @@ -2854,7 +2859,7 @@
17411 ac_save_LIBS="$LIBS"
17413 cat > conftest.$ac_ext <<EOF
17414 -#line 2858 "configure"
17415 +#line 2863 "configure"
17416 #include "confdefs.h"
17417 /* Override any gcc2 internal prototype to avoid an error. */
17418 /* We use char because int might match the return type of a gcc2
17419 @@ -2865,7 +2870,7 @@
17423 -if { (eval echo configure:2869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
17424 +if { (eval echo configure:2874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
17426 eval "ac_cv_lib_$ac_lib_var=yes"
17428 @@ -2885,6 +2890,9 @@
17429 echo "$ac_t""no" 1>&6
17437 target_all=libgcjgc.la
17438 @@ -3100,17 +3108,15 @@
17442 -if test -n "$with_cross_host" &&
17443 - test x"$with_cross_host" != x"no"; then
17444 - toolexecdir='$(exec_prefix)/$(target_alias)'
17445 - toolexeclibdir='$(toolexecdir)/lib'
17447 - toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
17448 - toolexeclibdir='$(libdir)'
17450 -toolexeclibdir=$toolexeclibdir/`$CC -print-multi-os-directory`
17453 +if test -z "$with_cross_host"; then
17455 + USE_LIBDIR_FALSE='#'
17457 + USE_LIBDIR_TRUE='#'
17458 + USE_LIBDIR_FALSE=
17461 if test "${multilib}" = "yes"; then
17462 multilib_arg="--enable-multilib"
17463 @@ -3307,14 +3313,16 @@
17464 s%@LIBTOOL@%$LIBTOOL%g
17465 s%@CXXCPP@%$CXXCPP%g
17466 s%@THREADLIBS@%$THREADLIBS%g
17467 +s%@POWERPC_DARWIN_TRUE@%$POWERPC_DARWIN_TRUE%g
17468 +s%@POWERPC_DARWIN_FALSE@%$POWERPC_DARWIN_FALSE%g
17469 s%@EXTRA_TEST_LIBS@%$EXTRA_TEST_LIBS%g
17470 s%@target_all@%$target_all%g
17471 s%@INCLUDES@%$INCLUDES%g
17472 s%@CXXINCLUDES@%$CXXINCLUDES%g
17473 s%@addobjs@%$addobjs%g
17474 s%@MY_CFLAGS@%$MY_CFLAGS%g
17475 -s%@toolexecdir@%$toolexecdir%g
17476 -s%@toolexeclibdir@%$toolexeclibdir%g
17477 +s%@USE_LIBDIR_TRUE@%$USE_LIBDIR_TRUE%g
17478 +s%@USE_LIBDIR_FALSE@%$USE_LIBDIR_FALSE%g
17482 @@ -3323,7 +3331,7 @@
17484 # Split the substitutions into bite-sized pieces for seds with
17485 # small command number limits, like on Digital OSF/1 and HP-UX.
17486 -ac_max_sed_cmds=60 # Maximum number of lines to put in a sed script.
17487 +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
17488 ac_file=1 # Number of current file.
17489 ac_beg=1 # First line for current file.
17490 ac_end=$ac_max_sed_cmds # Line after last line for current file.
17491 @@ -3425,7 +3433,6 @@
17492 CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
17493 gc_basedir=${gc_basedir}
17495 -ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}"
17499 diff -Nubr boehm-gc/configure.in ../boehm-gc/configure.in
17500 --- boehm-gc/configure.in Mon Apr 28 13:55:07 2003
17501 +++ ../boehm-gc/configure.in Mon May 26 13:33:22 2003
17503 -# Copyright (c) 1999, 2000, 2001, 2002, 2003 by Red Hat, Inc. All rights reserved.
17504 +# Copyright (c) 1999, 2000, 2001, 2002 by Red Hat, Inc. All rights reserved.
17506 # THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
17507 # OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
17508 @@ -111,14 +111,18 @@
17513 + AC_DEFINE(GC_DARWIN_THREADS)
17514 + AC_DEFINE(THREAD_LOCAL_ALLOC)
17515 + if test "${enable_parallel_mark}" = yes; then
17516 + AC_DEFINE(PARALLEL_MARK)
17522 AC_DEFINE(GC_WIN32_THREADS)
17523 AC_DEFINE(NO_GETENV)
17524 - if test $enable_shared = yes; then
17525 - AC_DEFINE(GC_DLL)
17528 decosf1 | irix | mach | os2 | solaris | dce | vxworks)
17529 AC_MSG_ERROR(thread package $THREADS not yet supported)
17530 @@ -129,7 +133,22 @@
17532 AC_SUBST(THREADLIBS)
17534 -AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl")
17536 + powerpc-*-darwin*)
17537 + powerpc_darwin=true
17540 +AM_CONDITIONAL(POWERPC_DARWIN,test x$powerpc_darwin = xtrue)
17542 +# We never want libdl on darwin. It is a fake libdl that just ends up making
17543 +# dyld calls anyway
17547 + AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl")
17551 AC_SUBST(EXTRA_TEST_LIBS)
17553 target_all=libgcjgc.la
17554 @@ -270,17 +289,7 @@
17558 -if test -n "$with_cross_host" &&
17559 - test x"$with_cross_host" != x"no"; then
17560 - toolexecdir='$(exec_prefix)/$(target_alias)'
17561 - toolexeclibdir='$(toolexecdir)/lib'
17563 - toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
17564 - toolexeclibdir='$(libdir)'
17566 -toolexeclibdir=$toolexeclibdir/`$CC -print-multi-os-directory`
17567 -AC_SUBST(toolexecdir)
17568 -AC_SUBST(toolexeclibdir)
17569 +AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host")
17571 if test "${multilib}" = "yes"; then
17572 multilib_arg="--enable-multilib"
17573 @@ -304,6 +313,5 @@
17574 CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
17575 gc_basedir=${gc_basedir}
17577 -ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}"
17580 diff -Nubr boehm-gc/configure.in~ ../boehm-gc/configure.in~
17581 --- boehm-gc/configure.in~ Wed Dec 31 16:00:00 1969
17582 +++ ../boehm-gc/configure.in~ Mon May 26 13:33:22 2003
17584 +# Copyright (c) 1999, 2000, 2001, 2002 by Red Hat, Inc. All rights reserved.
17586 +# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
17587 +# OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
17589 +# Permission is hereby granted to use or copy this program
17590 +# for any purpose, provided the above notices are retained on all copies.
17591 +# Permission to modify the code and to distribute modified code is granted,
17592 +# provided the above notices are retained, and a notice that the code was
17593 +# modified is included with the above copyright notice.
17595 +# Original author: Tom Tromey
17597 +dnl Process this file with autoconf to produce configure.
17599 +AC_INIT(gcj_mlc.c)
17601 +# This works around the fact that libtool configuration may change LD
17602 +# for this particular configuration, but some shells, instead of
17603 +# keeping the changes in LD private, export them just because LD is
17605 +ORIGINAL_LD_FOR_MULTILIBS=$LD
17607 +dnl Can't be done in GC_CONFIGURE because that confuses automake.
17608 +AC_CONFIG_AUX_DIR(.)
17614 +dnl We use these options to decide which functions to include.
17615 +AC_ARG_WITH(target-subdir,
17616 +[ --with-target-subdir=SUBDIR
17617 + configuring with a cross compiler])
17618 +AC_ARG_WITH(cross-host,
17619 +[ --with-cross-host=HOST configuring with a cross compiler])
17621 +AM_MAINTAINER_MODE
17622 +# automake wants to see AC_EXEEXT. But we don't need it. And having
17623 +# it is actually a problem, because the compiler we're passed can't
17624 +# necessarily do a full link. So we fool automake here.
17626 + # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
17627 + # to nothing, so nothing would remain between `then' and `fi' if it
17628 + # were not for the `:' below.
17633 +AC_MSG_CHECKING([for thread model used by GCC])
17634 +THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
17635 +if test -z "$THREADS"; then
17638 +AC_MSG_RESULT([$THREADS])
17640 +AC_ARG_ENABLE(parallel-mark,
17641 +[ --enable-parallel-mark parallelize marking and free list construction],
17642 + [case "$THREADS" in
17643 + no | none | single)
17644 + AC_MSG_ERROR([Parallel mark requires --enable-threads=x spec])
17649 +INCLUDES=-I${srcdir}/include
17651 +case "$THREADS" in
17652 + no | none | single)
17655 + posix | pthreads)
17657 + THREADLIBS=-lpthread
17659 + x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
17660 + AC_DEFINE(GC_LINUX_THREADS)
17661 + AC_DEFINE(_REENTRANT)
17662 + if test "${enable_parallel_mark}"; then
17663 + AC_DEFINE(PARALLEL_MARK)
17665 + AC_DEFINE(THREAD_LOCAL_ALLOC)
17668 + AC_DEFINE(GC_LINUX_THREADS)
17669 + AC_DEFINE(_REENTRANT)
17672 + AC_MSG_WARN("Only HP/UX 11 threads are supported.")
17673 + AC_DEFINE(GC_HPUX_THREADS)
17674 + AC_DEFINE(_POSIX_C_SOURCE,199506L)
17675 + if test "${enable_parallel_mark}" = yes; then
17676 + AC_DEFINE(PARALLEL_MARK)
17678 + AC_DEFINE(THREAD_LOCAL_ALLOC)
17679 + THREADLIBS="-lpthread -lrt"
17682 + AC_MSG_WARN("FreeBSD does not yet fully support threads with Boehm GC.")
17683 + AC_DEFINE(GC_FREEBSD_THREADS)
17684 + INCLUDES="$INCLUDES -pthread"
17685 + THREADLIBS=-pthread
17688 + AC_DEFINE(GC_SOLARIS_THREADS)
17689 + AC_DEFINE(GC_SOLARIS_PTHREADS)
17692 + AC_DEFINE(GC_IRIX_THREADS)
17700 + AC_DEFINE(GC_DARWIN_THREADS)
17701 + AC_DEFINE(THREAD_LOCAL_ALLOC)
17702 + if test "${enable_parallel_mark}" = yes; then
17703 + AC_DEFINE(PARALLEL_MARK)
17707 + AC_DEFINE(GC_WIN32_THREADS)
17708 + AC_DEFINE(NO_GETENV)
17710 + decosf1 | irix | mach | os2 | solaris | dce | vxworks)
17711 + AC_MSG_ERROR(thread package $THREADS not yet supported)
17714 + AC_MSG_ERROR($THREADS is an unknown thread package)
17717 +AC_SUBST(THREADLIBS)
17720 + powerpc-*-darwin*)
17721 + powerpc_darwin=true
17724 +AM_CONDITIONAL(POWERPC_DARWIN,test x$powerpc_darwin = xtrue)
17726 +# We never want libdl on darwin. It is a fake libdl that just ends up making
17727 +# dyld calls anyway
17731 + AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl")
17735 +AC_SUBST(EXTRA_TEST_LIBS)
17737 +target_all=libgcjgc.la
17738 +AC_SUBST(target_all)
17739 +AC_SUBST(target_alias)
17741 +dnl If the target is an eCos system, use the appropriate eCos
17743 +dnl FIXME: this should not be a local option but a global target
17744 +dnl system; at present there is no eCos target.
17747 +[ --with-ecos enable runtime eCos target support],
17748 +TARGET_ECOS="$with_ecos"
17753 +case "$TARGET_ECOS" in
17758 + CXXINCLUDES="-I${TARGET_ECOS}/include"
17759 + addobjs="$addobjs ecos.lo"
17764 +AC_SUBST(INCLUDES)
17765 +AC_SUBST(CXXINCLUDES)
17769 + alpha*-*-openbsd*)
17770 + machdep="alpha_mach_dep.lo"
17771 + if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then
17772 + AC_MSG_WARN(OpenBSD/Alpha without dlopen(). Shared library support is disabled)
17773 + AM_DISABLE_SHARED
17777 + machdep="alpha_mach_dep.lo"
17779 + i?86-*-solaris2.[[89]]*)
17780 + AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED)
17783 + machdep="mips_ultrix_mach_dep.lo"
17784 + AC_DEFINE(STACKBASE, __stackbase)
17785 + AC_DEFINE(DATASTART_IS_ETEXT)
17787 + mips-dec-ultrix*)
17788 + machdep="mips_ultrix_mach-dep.lo"
17793 + machdep="mips_sgi_mach_dep.lo"
17794 + AC_DEFINE(NO_EXECUTE_PERMISSION)
17796 + sparc-sun-solaris2.3*)
17797 + machdep="sparc_mach_dep.lo"
17798 + AC_DEFINE(SUNOS53_SHARED_LIB)
17800 + sparc-sun-solaris2.*)
17801 + machdep="sparc_mach_dep.lo"
17804 + machdep="mach_dep.lo ia64_save_regs_in_stack.lo"
17807 +if test x"$machdep" = x; then
17808 + machdep="mach_dep.lo"
17810 +addobjs="$addobjs $machdep"
17813 +dnl As of 4.13a2, the collector will not properly work on Solaris when
17814 +dnl built with gcc and -O. So we remove -O in the appropriate case.
17816 + sparc-sun-solaris2*)
17817 + if test "$GCC" = yes; then
17819 + for i in $CFLAGS; do
17824 + new_CFLAGS="$new_CFLAGS $i"
17828 + CFLAGS="$new_CFLAGS"
17833 +dnl We need to override the top-level CFLAGS. This is how we do it.
17834 +MY_CFLAGS="$CFLAGS"
17835 +AC_SUBST(MY_CFLAGS)
17837 +dnl Include defines that have become de facto standard.
17838 +dnl ALL_INTERIOR_POINTERS can be overridden in startup code.
17840 +AC_DEFINE(NO_SIGNALS)
17841 +AC_DEFINE(NO_EXECUTE_PERMISSION)
17842 +AC_DEFINE(ALL_INTERIOR_POINTERS)
17844 +dnl By default, make the library as general as possible.
17845 +AC_DEFINE(JAVA_FINALIZATION)
17846 +AC_DEFINE(GC_GCJ_SUPPORT)
17847 +AC_DEFINE(ATOMIC_UNCOLLECTABLE)
17849 +dnl This is something of a hack. When cross-compiling we turn off
17850 +dnl some functionality. These is only correct when targetting an
17851 +dnl embedded system. FIXME.
17852 +if test -n "${with_cross_host}"; then
17853 + AC_DEFINE(NO_SIGSET)
17854 + AC_DEFINE(NO_DEBUGGING)
17857 +AC_ARG_ENABLE(full-debug,
17858 +[ --enable-full-debug include full support for pointer backtracing etc.],
17859 +[ if test "$enable_full_debug" = "yes"; then
17860 + AC_MSG_WARN("Must define GC_DEBUG and use debug alloc. in clients.")
17861 + AC_DEFINE(KEEP_BACK_PTRS)
17862 + AC_DEFINE(DBG_HDRS_ALL)
17865 + AC_DEFINE(MAKE_BACK_GRAPH)
17867 + x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
17868 + AC_DEFINE(MAKE_BACK_GRAPH)
17869 + AC_MSG_WARN("Client must not use -fomit-frame-pointer.")
17870 + AC_DEFINE(SAVE_CALL_COUNT, 8)
17875 +AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host")
17877 +if test "${multilib}" = "yes"; then
17878 + multilib_arg="--enable-multilib"
17883 +AC_OUTPUT(Makefile include/Makefile, [
17884 +dnl Put all the -D options in a file.
17885 +echo "$DEFS" > boehm-cflags
17887 +if test -n "$CONFIG_FILES"; then
17888 + LD="${ORIGINAL_LD_FOR_MULTILIBS}"
17889 + ac_file=Makefile . ${gc_basedir}/../config-ml.in
17894 +with_multisubdir=${with_multisubdir}
17895 +ac_configure_args="${multilib_arg} ${ac_configure_args}"
17896 +CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
17897 +gc_basedir=${gc_basedir}
17901 diff -Nubr boehm-gc/cord/CVS/Entries ../boehm-gc/cord/CVS/Entries
17902 --- boehm-gc/cord/CVS/Entries Wed Dec 31 16:00:00 1969
17903 +++ ../boehm-gc/cord/CVS/Entries Mon May 26 12:46:21 2003
17905 +/cordbscs.c/1.2/Fri Sep 14 00:43:44 2001//
17906 +/cordprnt.c/1.2/Fri Sep 14 00:43:45 2001//
17907 +/cordtest.c/1.2/Fri Sep 14 00:43:45 2001//
17908 +/cordxtra.c/1.2/Fri Sep 14 00:43:45 2001//
17909 +/de.c/1.2/Fri Sep 14 00:43:45 2001//
17910 +/de_cmds.h/1.2/Fri Sep 14 00:43:45 2001//
17911 +/de_win.ICO/1.2/Fri Sep 14 00:43:45 2001/-kb/
17912 +/de_win.RC/1.2/Fri Sep 14 00:43:45 2001//
17913 +/de_win.c/1.2/Fri Sep 14 00:43:45 2001//
17914 +/de_win.h/1.2/Fri Sep 14 00:43:46 2001//
17916 diff -Nubr boehm-gc/cord/CVS/Repository ../boehm-gc/cord/CVS/Repository
17917 --- boehm-gc/cord/CVS/Repository Wed Dec 31 16:00:00 1969
17918 +++ ../boehm-gc/cord/CVS/Repository Sun May 25 12:49:07 2003
17920 +/cvs/root/gcc3/gcc3/boehm-gc/cord
17921 diff -Nubr boehm-gc/cord/CVS/Root ../boehm-gc/cord/CVS/Root
17922 --- boehm-gc/cord/CVS/Root Wed Dec 31 16:00:00 1969
17923 +++ ../boehm-gc/cord/CVS/Root Sun May 25 12:49:07 2003
17925 +:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root
17926 diff -Nubr boehm-gc/cord/private/CVS/Entries ../boehm-gc/cord/private/CVS/Entries
17927 --- boehm-gc/cord/private/CVS/Entries Wed Dec 31 16:00:00 1969
17928 +++ ../boehm-gc/cord/private/CVS/Entries Sun May 25 12:49:08 2003
17931 diff -Nubr boehm-gc/cord/private/CVS/Repository ../boehm-gc/cord/private/CVS/Repository
17932 --- boehm-gc/cord/private/CVS/Repository Wed Dec 31 16:00:00 1969
17933 +++ ../boehm-gc/cord/private/CVS/Repository Sun May 25 12:49:08 2003
17935 +/cvs/root/gcc3/gcc3/boehm-gc/cord/private
17936 diff -Nubr boehm-gc/cord/private/CVS/Root ../boehm-gc/cord/private/CVS/Root
17937 --- boehm-gc/cord/private/CVS/Root Wed Dec 31 16:00:00 1969
17938 +++ ../boehm-gc/cord/private/CVS/Root Sun May 25 12:49:08 2003
17940 +:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root
17941 diff -Nubr boehm-gc/darwin_stop_world.c ../boehm-gc/darwin_stop_world.c
17942 --- boehm-gc/darwin_stop_world.c Wed Dec 31 16:00:00 1969
17943 +++ ../boehm-gc/darwin_stop_world.c Sun Jun 1 14:17:58 2003
17945 +#include "private/pthread_support.h"
17947 +# if defined(GC_DARWIN_THREADS)
17949 +#define DEBUG_THREADS 0
17951 +/* From "Inside Mac OS X - Mach-O Runtime Architecture" published by Apple
17953 + "The space beneath the stack pointer, where a new stack frame would normally
17954 + be allocated, is called the red zone. This area as shown in Figure 3-2 may
17955 + be used for any purpose as long as a new stack frame does not need to be
17956 + added to the stack."
17958 + Page 50: "If a leaf procedure's red zone usage would exceed 224 bytes, then
17959 + it must set up a stack frame just like routines that call other routines."
17961 +#define PPC_RED_ZONE_SIZE 224
17963 +void GC_push_all_stacks() {
17969 +# if defined(POWERPC)
17970 + ppc_thread_state_t state;
17972 +# error FIXME for non-ppc OS X
17974 + mach_msg_type_number_t thread_state_count = MACHINE_THREAD_STATE_COUNT;
17976 + me = pthread_self();
17977 + if (!GC_thr_initialized) GC_thr_init();
17979 + for(i=0;i<THREAD_TABLE_SZ;i++) {
17980 + for(p=GC_threads[i];p!=0;p=p->next) {
17981 + if(p -> flags & FINISHED) continue;
17982 + if(pthread_equal(p->id,me)) {
17983 + lo = GC_approx_sp();
17985 + /* Get the thread state (registers, etc) */
17986 + r = thread_get_state(
17987 + p->stop_info.mach_thread,
17988 + MACHINE_THREAD_STATE,
17989 + (natural_t*)&state,
17990 + &thread_state_count);
17991 + if(r != KERN_SUCCESS) ABORT("thread_get_state failed");
17994 + lo = (void*)(state.r1 - PPC_RED_ZONE_SIZE);
17996 + GC_push_one(state.r0);
17997 + GC_push_one(state.r2);
17998 + GC_push_one(state.r3);
17999 + GC_push_one(state.r4);
18000 + GC_push_one(state.r5);
18001 + GC_push_one(state.r6);
18002 + GC_push_one(state.r7);
18003 + GC_push_one(state.r8);
18004 + GC_push_one(state.r9);
18005 + GC_push_one(state.r10);
18006 + GC_push_one(state.r11);
18007 + GC_push_one(state.r12);
18008 + GC_push_one(state.r13);
18009 + GC_push_one(state.r14);
18010 + GC_push_one(state.r15);
18011 + GC_push_one(state.r16);
18012 + GC_push_one(state.r17);
18013 + GC_push_one(state.r18);
18014 + GC_push_one(state.r19);
18015 + GC_push_one(state.r20);
18016 + GC_push_one(state.r21);
18017 + GC_push_one(state.r22);
18018 + GC_push_one(state.r23);
18019 + GC_push_one(state.r24);
18020 + GC_push_one(state.r25);
18021 + GC_push_one(state.r26);
18022 + GC_push_one(state.r27);
18023 + GC_push_one(state.r28);
18024 + GC_push_one(state.r29);
18025 + GC_push_one(state.r30);
18026 + GC_push_one(state.r31);
18028 + # error FIXME for non-PPC darwin
18029 + #endif /* !POWERPC */
18031 + if(p->flags & MAIN_THREAD)
18032 + hi = GC_stackbottom;
18034 + hi = p->stack_end;
18035 + #if DEBUG_THREADS
18036 + GC_printf3("Darwin: Stack for thread 0x%lx = [%lx,%lx)\n",
18037 + (unsigned long) p -> id,
18038 + (unsigned long) lo,
18039 + (unsigned long) hi
18042 + GC_push_all_stack(lo,hi);
18043 + } /* for(p=GC_threads[i]...) */
18044 + } /* for(i=0;i<THREAD_TABLE_SZ...) */
18047 +/* Caller holds allocation lock. */
18048 +void GC_stop_world()
18052 + pthread_t my_thread = pthread_self();
18053 + kern_return_t kern_result;
18055 + #if DEBUG_THREADS
18056 + GC_printf1("Stopping the world from 0x%lx\n", pthread_self());
18059 + /* Make sure all free list construction has stopped before we start. */
18060 + /* No new construction can start, since free list construction is */
18061 + /* required to acquire and release the GC lock before it starts, */
18062 + /* and we have the lock. */
18063 +# ifdef PARALLEL_MARK
18064 + GC_acquire_mark_lock();
18065 + GC_ASSERT(GC_fl_builder_count == 0);
18066 + /* We should have previously waited for it to become zero. */
18067 +# endif /* PARALLEL_MARK */
18069 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
18070 + for (p = GC_threads[i]; p != 0; p = p -> next) {
18071 + if (p -> id == my_thread) continue;
18072 + if (p -> flags & FINISHED) continue;
18073 + if (p -> thread_blocked) /* Will wait */ continue;
18075 + #if DEBUG_THREADS
18076 + GC_printf1("Suspending thread 0x%lx\n", p -> id);
18079 + /* Suspend the thread */
18080 + kern_result = thread_suspend(p->stop_info.mach_thread);
18081 + if(kern_result != KERN_SUCCESS) ABORT("thread_suspend failed");
18085 +# ifdef MPROTECT_VDB
18086 + if(GC_incremental) {
18087 + extern void GC_mprotect_stop();
18088 + GC_mprotect_stop();
18092 +# ifdef PARALLEL_MARK
18093 + GC_release_mark_lock();
18095 + #if DEBUG_THREADS
18096 + GC_printf1("World stopped from 0x%lx\n", pthread_self());
18100 +/* Caller holds allocation lock, and has held it continuously since */
18101 +/* the world stopped. */
18102 +void GC_start_world()
18104 + pthread_t my_thread = pthread_self();
18107 + kern_return_t kern_result;
18109 +# if DEBUG_THREADS
18110 + GC_printf0("World starting\n");
18113 +# ifdef MPROTECT_VDB
18114 + if(GC_incremental) {
18115 + extern void GC_mprotect_resume();
18116 + GC_mprotect_resume();
18120 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
18121 + for (p = GC_threads[i]; p != 0; p = p -> next) {
18122 + if (p -> id == my_thread) continue;
18123 + if (p -> flags & FINISHED) continue;
18124 + if (p -> thread_blocked) continue;
18126 + #if DEBUG_THREADS
18127 + GC_printf1("Resuming 0x%lx\n", p -> id);
18130 + /* Resume the thread */
18131 + kern_result = thread_resume(p->stop_info.mach_thread);
18132 + if(kern_result != KERN_SUCCESS) ABORT("thread_resume failed");
18135 + #if DEBUG_THREADS
18136 + GC_printf0("World started\n");
18140 +void GC_stop_init() {
18145 diff -Nubr boehm-gc/dbg_mlc.c ../boehm-gc/dbg_mlc.c
18146 --- boehm-gc/dbg_mlc.c Tue Feb 12 21:38:39 2002
18147 +++ ../boehm-gc/dbg_mlc.c Mon May 26 12:48:52 2003
18149 # include <stdlib.h>
18151 # if defined(LINUX) || defined(SUNOS4) || defined(SUNOS5) \
18152 - || defined(HPUX) || defined(IRIX) || defined(OSF1)
18153 + || defined(HPUX) || defined(IRIX5) || defined(OSF1)
18154 # define RANDOM() random()
18156 # define RANDOM() (long)rand()
18157 @@ -228,6 +228,8 @@
18159 #endif /* KEEP_BACK_PTRS */
18161 +# define CROSSES_HBLK(p, sz) \
18162 + (((word)(p + sizeof(oh) + sz - 1) ^ (word)p) >= HBLKSIZE)
18163 /* Store debugging info into p. Return displaced pointer. */
18164 /* Assumes we don't hold allocation lock. */
18165 ptr_t GC_store_debug_info(p, sz, string, integer)
18166 @@ -243,6 +245,8 @@
18167 /* But that's expensive. And this way things should only appear */
18168 /* inconsistent while we're in the handler. */
18170 + GC_ASSERT(GC_size(p) >= sizeof(oh) + sz);
18171 + GC_ASSERT(!(SMALL_OBJ(sz) && CROSSES_HBLK(p, sz)));
18172 # ifdef KEEP_BACK_PTRS
18173 ((oh *)p) -> oh_back_ptr = HIDE_BACK_PTR(NOT_MARKED);
18175 @@ -275,6 +279,8 @@
18176 /* There is some argument that we should disable signals here. */
18177 /* But that's expensive. And this way things should only appear */
18178 /* inconsistent while we're in the handler. */
18179 + GC_ASSERT(GC_size(p) >= sizeof(oh) + sz);
18180 + GC_ASSERT(!(SMALL_OBJ(sz) && CROSSES_HBLK(p, sz)));
18181 # ifdef KEEP_BACK_PTRS
18182 ((oh *)p) -> oh_back_ptr = HIDE_BACK_PTR(NOT_MARKED);
18184 @@ -324,10 +330,11 @@
18186 register oh * ohdr = (oh *)GC_base(p);
18188 + GC_ASSERT(!I_HOLD_LOCK());
18189 GC_err_printf1("0x%lx (", ((unsigned long)ohdr + sizeof(oh)));
18190 GC_err_puts(ohdr -> oh_string);
18191 # ifdef SHORT_DBG_HDRS
18192 - GC_err_printf1(":%ld, sz=%ld)\n", (unsigned long)(ohdr -> oh_int));
18193 + GC_err_printf1(":%ld)\n", (unsigned long)(ohdr -> oh_int));
18195 GC_err_printf2(":%ld, sz=%ld)\n", (unsigned long)(ohdr -> oh_int),
18196 (unsigned long)(ohdr -> oh_sz));
18197 @@ -342,6 +349,7 @@
18201 + GC_ASSERT(!I_HOLD_LOCK());
18202 if (GC_HAS_DEBUG_INFO(p)) {
18205 @@ -355,6 +363,7 @@
18207 register oh * ohdr = (oh *)GC_base(p);
18209 + GC_ASSERT(!I_HOLD_LOCK());
18210 GC_err_printf2("0x%lx in object at 0x%lx(", (unsigned long)clobbered_addr,
18212 if (clobbered_addr <= (ptr_t)(&(ohdr -> oh_sz))
18213 @@ -376,14 +385,18 @@
18215 void GC_check_heap_proc GC_PROTO((void));
18217 +void GC_print_all_smashed_proc GC_PROTO((void));
18219 void GC_do_nothing() {}
18221 void GC_start_debugging()
18223 # ifndef SHORT_DBG_HDRS
18224 GC_check_heap = GC_check_heap_proc;
18225 + GC_print_all_smashed = GC_print_all_smashed_proc;
18227 GC_check_heap = GC_do_nothing;
18228 + GC_print_all_smashed = GC_do_nothing;
18230 GC_print_heap_obj = GC_debug_print_heap_obj_proc;
18231 GC_debugging_started = TRUE;
18232 @@ -429,6 +442,62 @@
18233 return (GC_store_debug_info(result, (word)lb, s, (word)i));
18237 + GC_PTR GC_debug_malloc_ignore_off_page(size_t lb, GC_EXTRA_PARAMS)
18239 + GC_PTR GC_debug_malloc_ignore_off_page(lb, s, i)
18243 +# ifdef GC_ADD_CALLER
18244 + --> GC_ADD_CALLER not implemented for K&R C
18248 + GC_PTR result = GC_malloc_ignore_off_page(lb + DEBUG_BYTES);
18250 + if (result == 0) {
18251 + GC_err_printf1("GC_debug_malloc_ignore_off_page(%ld) returning NIL (",
18252 + (unsigned long) lb);
18254 + GC_err_printf1(":%ld)\n", (unsigned long)i);
18257 + if (!GC_debugging_started) {
18258 + GC_start_debugging();
18260 + ADD_CALL_CHAIN(result, ra);
18261 + return (GC_store_debug_info(result, (word)lb, s, (word)i));
18265 + GC_PTR GC_debug_malloc_atomic_ignore_off_page(size_t lb, GC_EXTRA_PARAMS)
18267 + GC_PTR GC_debug_malloc_atomic_ignore_off_page(lb, s, i)
18271 +# ifdef GC_ADD_CALLER
18272 + --> GC_ADD_CALLER not implemented for K&R C
18276 + GC_PTR result = GC_malloc_atomic_ignore_off_page(lb + DEBUG_BYTES);
18278 + if (result == 0) {
18279 + GC_err_printf1("GC_debug_malloc_atomic_ignore_off_page(%ld)"
18280 + " returning NIL (", (unsigned long) lb);
18282 + GC_err_printf1(":%ld)\n", (unsigned long)i);
18285 + if (!GC_debugging_started) {
18286 + GC_start_debugging();
18288 + ADD_CALL_CHAIN(result, ra);
18289 + return (GC_store_debug_info(result, (word)lb, s, (word)i));
18292 # ifdef DBG_HDRS_ALL
18294 * An allocation function for internal use.
18295 @@ -447,7 +516,7 @@
18296 (unsigned long) lb);
18299 - ADD_CALL_CHAIN(result, ra);
18300 + ADD_CALL_CHAIN(result, GC_RETURN_ADDR);
18301 return (GC_store_debug_info_inner(result, (word)lb, "INTERNAL", (word)0));
18304 @@ -461,7 +530,7 @@
18305 (unsigned long) lb);
18308 - ADD_CALL_CHAIN(result, ra);
18309 + ADD_CALL_CHAIN(result, GC_RETURN_ADDR);
18310 return (GC_store_debug_info_inner(result, (word)lb, "INTERNAL", (word)0));
18313 @@ -592,7 +661,7 @@
18317 - GC_PTR result = GC_malloc_uncollectable(lb + DEBUG_BYTES);
18318 + GC_PTR result = GC_malloc_uncollectable(lb + UNCOLLECTABLE_DEBUG_BYTES);
18321 GC_err_printf1("GC_debug_malloc_uncollectable(%ld) returning NIL (",
18322 @@ -618,7 +687,8 @@
18326 - GC_PTR result = GC_malloc_atomic_uncollectable(lb + DEBUG_BYTES);
18328 + GC_malloc_atomic_uncollectable(lb + UNCOLLECTABLE_DEBUG_BYTES);
18332 @@ -774,6 +844,45 @@
18335 #ifndef SHORT_DBG_HDRS
18337 +/* List of smashed objects. We defer printing these, since we can't */
18338 +/* always print them nicely with the allocation lock held. */
18339 +/* We put them here instead of in GC_arrays, since it may be useful to */
18340 +/* be able to look at them with the debugger. */
18341 +#define MAX_SMASHED 20
18342 +ptr_t GC_smashed[MAX_SMASHED];
18343 +unsigned GC_n_smashed = 0;
18345 +# if defined(__STDC__) || defined(__cplusplus)
18346 + void GC_add_smashed(ptr_t smashed)
18348 + void GC_add_smashed(smashed)
18352 + GC_ASSERT(GC_is_marked(GC_base(smashed)));
18353 + GC_smashed[GC_n_smashed] = smashed;
18354 + if (GC_n_smashed < MAX_SMASHED - 1) ++GC_n_smashed;
18355 + /* In case of overflow, we keep the first MAX_SMASHED-1 */
18356 + /* entries plus the last one. */
18357 + GC_have_errors = TRUE;
18360 +/* Print all objects on the list. Clear the list. */
18361 +void GC_print_all_smashed_proc ()
18365 + GC_ASSERT(!I_HOLD_LOCK());
18366 + if (GC_n_smashed == 0) return;
18367 + GC_err_printf0("GC_check_heap_block: found smashed heap objects:\n");
18368 + for (i = 0; i < GC_n_smashed; ++i) {
18369 + GC_print_smashed_obj(GC_base(GC_smashed[i]), GC_smashed[i]);
18370 + GC_smashed[i] = 0;
18372 + GC_n_smashed = 0;
18375 /* Check all marked objects in the given block for validity */
18377 # if defined(__STDC__) || defined(__cplusplus)
18378 @@ -802,11 +911,7 @@
18379 && GC_HAS_DEBUG_INFO((ptr_t)p)) {
18380 ptr_t clobbered = GC_check_annotated_obj((oh *)p);
18382 - if (clobbered != 0) {
18384 - "GC_check_heap_block: found smashed location at ");
18385 - GC_print_smashed_obj((ptr_t)p, clobbered);
18387 + if (clobbered != 0) GC_add_smashed(clobbered);
18391 @@ -819,9 +924,11 @@
18392 void GC_check_heap_proc()
18394 # ifndef SMALL_CONFIG
18395 - if (sizeof(oh) & (2 * sizeof(word) - 1) != 0) {
18396 - ABORT("Alignment problem: object header has inappropriate size\n");
18398 +# ifdef ALIGN_DOUBLE
18399 + GC_STATIC_ASSERT((sizeof(oh) & (2 * sizeof(word) - 1)) == 0);
18401 + GC_STATIC_ASSERT((sizeof(oh) & (sizeof(word) - 1)) == 0);
18404 GC_apply_to_all_blocks(GC_check_heap_block, (word)0);
18406 @@ -908,7 +1015,7 @@
18407 ptr_t base = GC_base(obj);
18408 if (0 == base || (ptr_t)obj - base != sizeof(oh)) {
18410 - "GC_register_finalizer called with non-base-pointer 0x%lx\n",
18411 + "GC_debug_register_finalizer called with non-base-pointer 0x%lx\n",
18415 @@ -940,7 +1047,7 @@
18416 ptr_t base = GC_base(obj);
18417 if (0 == base || (ptr_t)obj - base != sizeof(oh)) {
18419 - "GC_register_finalizer_no_order called with non-base-pointer 0x%lx\n",
18420 + "GC_debug_register_finalizer_no_order called with non-base-pointer 0x%lx\n",
18424 @@ -973,7 +1080,7 @@
18425 ptr_t base = GC_base(obj);
18426 if (0 == base || (ptr_t)obj - base != sizeof(oh)) {
18428 - "GC_register_finalizer_ignore_self called with non-base-pointer 0x%lx\n",
18429 + "GC_debug_register_finalizer_ignore_self called with non-base-pointer 0x%lx\n",
18433 diff -Nubr boehm-gc/doc/CVS/Entries ../boehm-gc/doc/CVS/Entries
18434 --- boehm-gc/doc/CVS/Entries Wed Dec 31 16:00:00 1969
18435 +++ ../boehm-gc/doc/CVS/Entries Sun May 25 12:49:09 2003
18437 +/README/1.4/Thu Mar 14 07:28:30 2002//
18438 +/README.Mac/1.2/Fri Sep 14 00:43:47 2001//
18439 +/README.MacOSX/1.2/Fri Sep 14 00:43:47 2001//
18440 +/README.OS2/1.2/Fri Sep 14 00:43:47 2001//
18441 +/README.amiga/1.2/Fri Sep 14 00:43:47 2001//
18442 +/README.autoconf/1.2/Fri Sep 14 00:43:47 2001//
18443 +/README.changes/1.4/Thu Mar 14 07:28:30 2002//
18444 +/README.contributors/1.2/Fri Sep 14 00:43:48 2001//
18445 +/README.cords/1.2/Fri Sep 14 00:43:48 2001//
18446 +/README.dj/1.2/Fri Sep 14 00:43:48 2001//
18447 +/README.environment/1.4/Sun Apr 21 00:59:00 2002//
18448 +/README.ews4800/1.1.1.1/Thu Mar 14 03:40:19 2002//
18449 +/README.hp/1.2/Fri Sep 14 00:43:48 2001//
18450 +/README.linux/1.2/Fri Sep 14 00:43:48 2001//
18451 +/README.macros/1.2/Fri Sep 14 00:43:48 2001//
18452 +/README.rs6000/1.2/Fri Sep 14 00:43:48 2001//
18453 +/README.sgi/1.2/Fri Sep 14 00:43:49 2001//
18454 +/README.solaris2/1.2/Fri Sep 14 00:43:49 2001//
18455 +/README.uts/1.2/Fri Sep 14 00:43:49 2001//
18456 +/README.win32/1.3/Thu Mar 14 07:28:30 2002//
18457 +/barrett_diagram/1.2/Fri Sep 14 00:43:49 2001//
18458 +/debugging.html/1.3/Thu Mar 14 07:28:30 2002//
18459 +/gc.man/1.2/Fri Sep 14 00:43:49 2001//
18460 +/gcdescr.html/1.2/Fri Sep 14 00:43:49 2001//
18461 +/tree.html/1.2/Fri Sep 14 00:43:49 2001//
18463 diff -Nubr boehm-gc/doc/CVS/Repository ../boehm-gc/doc/CVS/Repository
18464 --- boehm-gc/doc/CVS/Repository Wed Dec 31 16:00:00 1969
18465 +++ ../boehm-gc/doc/CVS/Repository Sun May 25 12:49:08 2003
18467 +/cvs/root/gcc3/gcc3/boehm-gc/doc
18468 diff -Nubr boehm-gc/doc/CVS/Root ../boehm-gc/doc/CVS/Root
18469 --- boehm-gc/doc/CVS/Root Wed Dec 31 16:00:00 1969
18470 +++ ../boehm-gc/doc/CVS/Root Sun May 25 12:49:08 2003
18472 +:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root
18473 diff -Nubr boehm-gc/dyn_load.c ../boehm-gc/dyn_load.c
18474 --- boehm-gc/finalize.c Mon Feb 11 20:37:53 2002
18475 +++ ../boehm-gc/finalize.c Mon May 26 12:48:52 2003
18476 @@ -207,7 +207,8 @@
18480 - new_dl = GC_oom_fn(sizeof(struct disappearing_link));
18481 + new_dl = (struct disappearing_link *)
18482 + GC_oom_fn(sizeof(struct disappearing_link));
18484 GC_finalization_failures++;
18486 @@ -433,7 +434,8 @@
18490 - new_fo = GC_oom_fn(sizeof(struct finalizable_object));
18491 + new_fo = (struct finalizable_object *)
18492 + GC_oom_fn(sizeof(struct finalizable_object));
18494 GC_finalization_failures++;
18496 @@ -759,8 +761,9 @@
18497 /* Should be called without allocation lock. */
18498 int GC_invoke_finalizers()
18500 - register struct finalizable_object * curr_fo;
18501 - register int count = 0;
18502 + struct finalizable_object * curr_fo;
18504 + word mem_freed_before;
18507 while (GC_finalize_now != 0) {
18508 @@ -768,6 +771,9 @@
18512 + if (count == 0) {
18513 + mem_freed_before = GC_mem_freed;
18515 curr_fo = GC_finalize_now;
18517 if (curr_fo != 0) GC_finalize_now = fo_next(curr_fo);
18518 @@ -789,6 +795,11 @@
18519 GC_free((GC_PTR)curr_fo);
18522 + if (count != 0 && mem_freed_before != GC_mem_freed) {
18524 + GC_finalizer_mem_freed += (GC_mem_freed - mem_freed_before);
18530 @@ -801,7 +812,9 @@
18531 if (GC_finalize_now == 0) return;
18532 if (!GC_finalize_on_demand) {
18533 (void) GC_invoke_finalizers();
18535 GC_ASSERT(GC_finalize_now == 0);
18536 +# endif /* Otherwise GC can run concurrently and add more */
18539 if (GC_finalizer_notifier != (void (*) GC_PROTO((void)))0
18540 @@ -839,3 +852,17 @@
18544 +#if !defined(NO_DEBUGGING)
18546 +void GC_print_finalization_stats()
18548 + struct finalizable_object *fo = GC_finalize_now;
18549 + size_t ready = 0;
18551 + GC_printf2("%lu finalization table entries; %lu disappearing links\n",
18552 + GC_fo_entries, GC_dl_entries);
18553 + for (; 0 != fo; fo = fo_next(fo)) ++ready;
18554 + GC_printf1("%lu objects are eligible for immediate finalization\n", ready);
18557 +#endif /* NO_DEBUGGING */
18558 diff -Nubr boehm-gc/gc_dlopen.c ../boehm-gc/gc_dlopen.c
18559 --- boehm-gc/gc_dlopen.c Tue Oct 16 02:01:35 2001
18560 +++ ../boehm-gc/gc_dlopen.c Mon May 26 12:48:52 2003
18561 @@ -19,12 +19,14 @@
18563 * This used to be in dyn_load.c. It was extracted into a separate file
18564 * to avoid having to link against libdl.{a,so} if the client doesn't call
18566 + * dlopen. Of course this fails if the collector is in a dynamic
18570 #include "private/gc_priv.h"
18572 -# if defined(GC_PTHREADS) || defined(GC_SOLARIS_THREADS)
18573 +# if (defined(GC_PTHREADS) && !defined(GC_DARWIN_THREADS)) \
18574 + || defined(GC_SOLARIS_THREADS)
18576 # if defined(dlopen) && !defined(GC_USE_LD_WRAP)
18577 /* To support various threads pkgs, gc.h interposes on dlopen by */
18578 @@ -44,19 +46,14 @@
18579 /* calls in either a multithreaded environment, or if the library */
18580 /* initialization code allocates substantial amounts of GC'ed memory. */
18581 /* But I don't know of a better solution. */
18582 - /* This can still deadlock if the client explicitly starts a GC */
18583 - /* during the dlopen. He shouldn't do that. */
18584 - static GC_bool disable_gc_for_dlopen()
18585 + static void disable_gc_for_dlopen()
18589 - result = GC_dont_gc;
18590 while (GC_incremental && GC_collection_in_progress()) {
18591 GC_collect_a_little_inner(1000);
18593 - GC_dont_gc = TRUE;
18599 /* Redefine dlopen to guarantee mutual exclusion with */
18604 - GC_bool dont_gc_save;
18606 # ifndef USE_PROC_FOR_LIBRARIES
18607 - dont_gc_save = disable_gc_for_dlopen();
18608 + disable_gc_for_dlopen();
18610 # ifdef GC_USE_LD_WRAP
18611 result = (void *)__real_dlopen(path, mode);
18613 result = dlopen(path, mode);
18615 # ifndef USE_PROC_FOR_LIBRARIES
18616 - GC_dont_gc = dont_gc_save;
18617 + GC_enable(); /* undoes disable_gc_for_dlopen */
18621 diff -Nubr boehm-gc/gcj_mlc.c ../boehm-gc/gcj_mlc.c
18622 --- boehm-gc/gcj_mlc.c Mon Feb 11 20:37:53 2002
18623 +++ ../boehm-gc/gcj_mlc.c Mon May 26 12:48:52 2003
18624 @@ -157,6 +157,7 @@
18625 GC_words_allocd += lw;
18627 *(void **)op = ptr_to_struct_containing_descr;
18628 + GC_ASSERT(((void **)op)[1] == 0);
18632 diff -Nubr boehm-gc/if_mach.c ../boehm-gc/if_mach.c
18633 --- boehm-gc/if_mach.c Fri Aug 17 11:30:45 2001
18634 +++ ../boehm-gc/if_mach.c Mon May 26 12:48:52 2003
18636 if (strcmp(MACH_TYPE, argv[1]) != 0) return(0);
18637 if (strcmp(OS_TYPE, "") != 0 && strcmp(argv[2], "") != 0
18638 && strcmp(OS_TYPE, argv[2]) != 0) return(0);
18639 - printf("^^^^Starting command^^^^\n");
18640 + fprintf(stderr, "^^^^Starting command^^^^\n");
18642 execvp(argv[3], argv+3);
18643 perror("Couldn't execute");
18644 diff -Nubr boehm-gc/include/CVS/Entries ../boehm-gc/include/CVS/Entries
18645 --- boehm-gc/include/CVS/Entries Wed Dec 31 16:00:00 1969
18646 +++ ../boehm-gc/include/CVS/Entries Sat May 31 21:17:20 2003
18648 +/Makefile.am/1.1.1.2/Tue Jan 21 20:40:57 2003//
18649 +/Makefile.in/1.1.1.4/Tue Jan 21 20:40:57 2003//
18650 +/gc.h/1.5/Thu Mar 14 07:28:32 2002//
18651 +/gc_cpp.h/1.2/Fri Sep 14 00:43:53 2001//
18652 +/gc_local_alloc.h/1.2/Fri Sep 14 00:43:54 2001//
18653 +/gc_mark.h/1.2/Fri Sep 14 00:43:54 2001//
18654 +/gc_pthread_redirects.h/1.3/Tue Oct 23 03:47:26 2001//
18655 +/gc_typed.h/1.2/Fri Sep 14 00:43:54 2001//
18656 +/new_gc_alloc.h/1.3/Tue Oct 23 03:47:26 2001//
18658 +/cord.h/1.2/Mon May 26 20:28:19 2003//
18659 +/ec.h/1.2/Mon May 26 20:28:19 2003//
18660 +/gc_alloc.h/1.2/Mon May 26 20:28:19 2003//
18661 +/gc_amiga_redirects.h/1.2/Mon May 26 20:28:19 2003//
18662 +/gc_backptr.h/1.2/Mon May 26 20:28:19 2003//
18663 +/gc_gcj.h/1.3/Mon May 26 20:28:19 2003//
18664 +/gc_inl.h/1.2/Mon May 26 20:28:19 2003//
18665 +/gc_inline.h/1.2/Mon May 26 20:28:19 2003//
18666 +/javaxfc.h/1.2/Mon May 26 20:28:19 2003//
18667 +/leak_detector.h/1.3/Mon May 26 20:28:19 2003//
18668 +/weakpointer.h/1.2/Mon May 26 20:28:19 2003//
18669 diff -Nubr boehm-gc/include/CVS/Repository ../boehm-gc/include/CVS/Repository
18670 --- boehm-gc/include/CVS/Repository Wed Dec 31 16:00:00 1969
18671 +++ ../boehm-gc/include/CVS/Repository Sun May 25 12:49:09 2003
18673 +/cvs/root/gcc3/gcc3/boehm-gc/include
18674 diff -Nubr boehm-gc/include/CVS/Root ../boehm-gc/include/CVS/Root
18675 --- boehm-gc/include/CVS/Root Wed Dec 31 16:00:00 1969
18676 +++ ../boehm-gc/include/CVS/Root Sun May 25 12:49:09 2003
18678 +:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root
18679 diff -Nubr boehm-gc/include/Makefile.in ../boehm-gc/include/Makefile.in
18680 --- boehm-gc/include/Makefile.in Tue Dec 31 09:52:45 2002
18681 +++ ../boehm-gc/include/Makefile.in Mon May 26 13:08:48 2003
18683 -# Makefile.in generated automatically by automake 1.4 from Makefile.am
18684 +# Makefile.in generated by automake 1.6.3 from Makefile.am.
18685 +# @configure_input@
18687 -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
18688 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
18689 +# Free Software Foundation, Inc.
18690 # This Makefile.in is free software; the Free Software Foundation
18691 # gives unlimited permission to copy and/or distribute it,
18692 # with or without modifications, as long as this notice is preserved.
18694 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
18695 # PARTICULAR PURPOSE.
18704 includedir = @includedir@
18705 oldincludedir = /usr/include
18709 pkgdatadir = $(datadir)/@PACKAGE@
18710 pkglibdir = $(libdir)/@PACKAGE@
18711 pkgincludedir = $(includedir)/@PACKAGE@
18715 ACLOCAL = @ACLOCAL@
18716 @@ -45,12 +43,16 @@
18717 AUTOMAKE = @AUTOMAKE@
18718 AUTOHEADER = @AUTOHEADER@
18720 +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
18721 INSTALL = @INSTALL@
18722 -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
18723 +INSTALL_PROGRAM = @INSTALL_PROGRAM@
18724 INSTALL_DATA = @INSTALL_DATA@
18725 +install_sh_DATA = $(install_sh) -c -m 644
18726 +install_sh_PROGRAM = $(install_sh) -c
18727 +install_sh_SCRIPT = $(install_sh) -c
18728 INSTALL_SCRIPT = @INSTALL_SCRIPT@
18729 +INSTALL_HEADER = $(INSTALL_DATA)
18730 transform = @program_transform_name@
18735 @@ -63,171 +65,190 @@
18736 host_triplet = @host@
18737 target_alias = @target_alias@
18738 target_triplet = @target@
18742 +PATH_SEPARATOR = @PATH_SEPARATOR@
18751 CXXINCLUDES = @CXXINCLUDES@
18753 DLLTOOL = @DLLTOOL@
18757 EXTRA_TEST_LIBS = @EXTRA_TEST_LIBS@
18760 GCJFLAGS = @GCJFLAGS@
18761 GC_CFLAGS = @GC_CFLAGS@
18762 INCLUDES = @INCLUDES@
18763 +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
18764 LIBTOOL = @LIBTOOL@
18767 -MAKEINFO = @MAKEINFO@
18768 MY_CFLAGS = @MY_CFLAGS@
18769 OBJDUMP = @OBJDUMP@
18771 PACKAGE = @PACKAGE@
18775 THREADLIBS = @THREADLIBS@
18776 VERSION = @VERSION@
18777 addobjs = @addobjs@
18778 +am__include = @am__include@
18779 +am__quote = @am__quote@
18780 gc_basedir = @gc_basedir@
18781 +install_sh = @install_sh@
18782 mkinstalldirs = @mkinstalldirs@
18783 target_all = @target_all@
18785 AUTOMAKE_OPTIONS = foreign
18787 noinst_HEADERS = gc.h gc_backptr.h gc_local_alloc.h \
18788 gc_pthread_redirects.h gc_cpp.h
18791 CONFIG_CLEAN_FILES =
18793 +am__depfiles_maybe =
18795 HEADERS = $(noinst_HEADERS)
18797 -DIST_COMMON = Makefile.am Makefile.in
18801 -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
18807 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
18808 - cd $(top_srcdir) && $(AUTOMAKE) --cygnus include/Makefile
18809 + cd $(top_srcdir) && \
18810 + $(AUTOMAKE) --cygnus include/Makefile
18811 +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
18812 + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
18814 -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
18815 - cd $(top_builddir) \
18816 - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
18817 +mostlyclean-libtool:
18821 + -rm -rf .libs _libs
18823 +distclean-libtool:
18825 +uninstall-info-am:
18832 -ID: $(HEADERS) $(SOURCES) $(LISP)
18833 - list='$(SOURCES) $(HEADERS)'; \
18834 - unique=`for i in $$list; do echo $$i; done | \
18835 - awk ' { files[$$0] = 1; } \
18836 +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
18837 + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
18838 + unique=`for i in $$list; do \
18839 + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
18841 + $(AWK) ' { files[$$0] = 1; } \
18842 END { for (i in files) print i; }'`; \
18843 - here=`pwd` && cd $(srcdir) \
18844 - && mkid -f$$here/ID $$unique $(LISP)
18845 + mkid -fID $$unique
18847 -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
18848 +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
18849 + $(TAGS_FILES) $(LISP)
18852 - list='$(SOURCES) $(HEADERS)'; \
18853 - unique=`for i in $$list; do echo $$i; done | \
18854 - awk ' { files[$$0] = 1; } \
18855 + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
18856 + unique=`for i in $$list; do \
18857 + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
18859 + $(AWK) ' { files[$$0] = 1; } \
18860 END { for (i in files) print i; }'`; \
18861 - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
18862 - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
18867 + test -z "$(ETAGS_ARGS)$$tags$$unique" \
18868 + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
18872 + here=`$(am__cd) $(top_builddir) && pwd` \
18873 + && cd $(top_srcdir) \
18874 + && gtags -i $(GTAGS_ARGS) $$here
18879 -maintainer-clean-tags:
18881 -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
18885 -distdir: $(DISTFILES)
18886 - @for file in $(DISTFILES); do \
18887 - if test -f $$file; then d=.; else d=$(srcdir); fi; \
18888 - if test -d $$d/$$file; then \
18889 - cp -pr $$d/$$file $(distdir)/$$file; \
18891 - test -f $(distdir)/$$file \
18892 - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
18893 - || cp -p $$d/$$file $(distdir)/$$file || :; \
18900 + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
18904 -installcheck: installcheck-am
18906 -install-info: install-info-am
18908 -install-exec: install-exec-am
18909 +all-am: Makefile $(HEADERS)
18912 -install-data: install-data-am
18915 -install-am: all-am
18916 - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
18917 install: install-am
18919 +install-exec: install-exec-am
18920 +install-data: install-data-am
18921 uninstall: uninstall-am
18922 -all-am: Makefile $(HEADERS)
18923 -all-redirect: all-am
18925 - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
18928 +install-am: all-am
18929 + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
18931 +installcheck: installcheck-am
18933 + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
18934 + INSTALL_STRIP_FLAG=-s \
18935 + `test -z '$(STRIP)' || \
18936 + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
18937 mostlyclean-generic:
18942 -rm -f Makefile $(CONFIG_CLEAN_FILES)
18943 - -rm -f config.cache config.log stamp-h stamp-h[0-9]*
18945 maintainer-clean-generic:
18946 -mostlyclean-am: mostlyclean-tags mostlyclean-generic
18947 + @echo "This command is intended for maintainers to use"
18948 + @echo "it deletes files that may require special tools to rebuild."
18951 -mostlyclean: mostlyclean-am
18952 +clean-am: clean-generic clean-libtool mostlyclean-am
18954 -clean-am: clean-tags clean-generic mostlyclean-am
18955 +distclean: distclean-am
18958 +distclean-am: clean-am distclean-generic distclean-libtool \
18961 -distclean-am: distclean-tags distclean-generic clean-am
18965 -distclean: distclean-am
18968 -maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \
18970 - @echo "This command is intended for maintainers to use;"
18971 - @echo "it deletes files that may require special tools to rebuild."
18986 maintainer-clean: maintainer-clean-am
18988 -.PHONY: tags mostlyclean-tags distclean-tags clean-tags \
18989 -maintainer-clean-tags distdir info-am info dvi-am dvi check check-am \
18990 -installcheck-am installcheck install-info-am install-info \
18991 -install-exec-am install-exec install-data-am install-data install-am \
18992 -install uninstall-am uninstall all-redirect all-am all installdirs \
18993 -mostlyclean-generic distclean-generic clean-generic \
18994 -maintainer-clean-generic clean mostlyclean distclean maintainer-clean
18995 +maintainer-clean-am: distclean-am maintainer-clean-generic
18997 +mostlyclean: mostlyclean-am
18999 +mostlyclean-am: mostlyclean-generic mostlyclean-libtool
19003 +.PHONY: GTAGS all all-am check check-am clean clean-generic \
19004 + clean-libtool distclean distclean-generic distclean-libtool \
19005 + distclean-tags dvi dvi-am info info-am install install-am \
19006 + install-data install-data-am install-exec install-exec-am \
19007 + install-info install-info-am install-man install-strip \
19008 + installcheck installcheck-am installdirs maintainer-clean \
19009 + maintainer-clean-generic mostlyclean mostlyclean-generic \
19010 + mostlyclean-libtool tags uninstall uninstall-am \
19011 + uninstall-info-am
19013 # Tell versions [3.59,3.63) of GNU make to not export all variables.
19014 # Otherwise a system limit (for SysV at least) may be exceeded.
19015 diff -Nubr boehm-gc/include/gc.h ../boehm-gc/include/gc.h
19016 --- boehm-gc/include/gc.h Mon Feb 11 20:37:56 2002
19017 +++ ../boehm-gc/include/gc.h Mon May 26 13:28:19 2003
19023 - * Some tests for old macros. These violate our namespace rules and will
19024 - * disappear shortly. Use the GC_ names.
19026 -#if defined(SOLARIS_THREADS) || defined(_SOLARIS_THREADS)
19027 -# define GC_SOLARIS_THREADS
19029 -#if defined(_SOLARIS_PTHREADS)
19030 -# define GC_SOLARIS_PTHREADS
19032 -#if defined(IRIX_THREADS)
19033 -# define GC_IRIX_THREADS
19035 -#if defined(HPUX_THREADS)
19036 -# define GC_HPUX_THREADS
19038 -#if defined(OSF1_THREADS)
19039 -# define GC_OSF1_THREADS
19041 -#if defined(LINUX_THREADS)
19042 -# define GC_LINUX_THREADS
19044 -#if defined(WIN32_THREADS)
19045 -# define GC_WIN32_THREADS
19047 -#if defined(USE_LD_WRAP)
19048 -# define GC_USE_LD_WRAP
19051 -#if !defined(_REENTRANT) && (defined(GC_SOLARIS_THREADS) \
19052 - || defined(GC_SOLARIS_PTHREADS) \
19053 - || defined(GC_HPUX_THREADS) \
19054 - || defined(GC_LINUX_THREADS))
19055 -# define _REENTRANT
19056 - /* Better late than never. This fails if system headers that */
19057 - /* depend on this were previously included. */
19060 -#if defined(GC_SOLARIS_PTHREADS) && !defined(GC_SOLARIS_THREADS)
19061 -# define GC_SOLARIS_THREADS
19064 -# if defined(GC_SOLARIS_PTHREADS) || defined(GC_FREEBSD_THREADS) || \
19065 - defined(GC_IRIX_THREADS) || defined(GC_LINUX_THREADS) || \
19066 - defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS)
19067 -# define GC_PTHREADS
19071 -# include <stddef.h>
19072 -# ifdef _WIN32_WCE
19073 -/* Yet more kluges for WinCE */
19074 -# include <stdlib.h> /* size_t is defined here */
19075 - typedef long ptrdiff_t; /* ptrdiff_t is not defined */
19078 -#if defined(__MINGW32__) &&defined(_DLL) && !defined(GC_NOT_DLL)
19080 -# define GC_API __declspec(dllexport)
19082 -# define GC_API __declspec(dllimport)
19086 -#if (defined(__DMC__) || defined(_MSC_VER)) \
19087 - && (defined(_DLL) && !defined(GC_NOT_DLL) \
19088 - || defined(GC_DLL))
19090 -# define GC_API extern __declspec(dllexport)
19092 -# define GC_API __declspec(dllimport)
19096 -#if defined(__WATCOMC__) && defined(GC_DLL)
19098 -# define GC_API extern __declspec(dllexport)
19100 -# define GC_API extern __declspec(dllimport)
19105 -#define GC_API extern
19107 +# include "gc_config_macros.h"
19109 # if defined(__STDC__) || defined(__cplusplus)
19110 # define GC_PROTO(args) args
19112 /* Env variable GC_NPROC is set to > 1, or */
19113 /* GC_NPROC is not set and this is an MP. */
19114 /* If GC_parallel is set, incremental */
19115 - /* collection is aonly partially functional, */
19116 + /* collection is only partially functional, */
19117 /* and may not be desirable. */
19120 @@ -215,8 +131,14 @@
19121 /* thread, which will call GC_invoke_finalizers */
19124 -GC_API int GC_dont_gc; /* Dont collect unless explicitly requested, e.g. */
19125 - /* because it's not safe. */
19126 +GC_API int GC_dont_gc; /* != 0 ==> Dont collect. In versions 7.2a1+, */
19127 + /* this overrides explicit GC_gcollect() calls. */
19128 + /* Used as a counter, so that nested enabling */
19129 + /* and disabling work correctly. Should */
19130 + /* normally be updated with GC_enable() and */
19131 + /* GC_disable() calls. */
19132 + /* Direct assignment to GC_dont_gc is */
19133 + /* deprecated. */
19135 GC_API int GC_dont_expand;
19136 /* Dont expand heap unless explicitly requested */
19137 @@ -296,15 +218,6 @@
19138 /* Interferes with blacklisting. */
19139 /* Wizards only. */
19141 -/* Public procedures */
19143 -/* Initialize the collector. This is only required when using thread-local
19144 - * allocation, since unlike the regular allocation routines, GC_local_malloc
19145 - * is not self-initializing. If you use GC_local_malloc you should arrange
19146 - * to call this somehow (e.g. from a constructor) before doing any allocation.
19148 -GC_API void GC_init GC_PROTO((void));
19150 GC_API unsigned long GC_time_limit;
19151 /* If incremental collection is enabled, */
19152 /* We try to terminate collections */
19153 @@ -316,9 +229,18 @@
19155 # define GC_TIME_UNLIMITED 999999
19156 /* Setting GC_time_limit to this value */
19157 - /* will disable the "pause time exceeded */
19158 + /* will disable the "pause time exceeded"*/
19161 +/* Public procedures */
19163 +/* Initialize the collector. This is only required when using thread-local
19164 + * allocation, since unlike the regular allocation routines, GC_local_malloc
19165 + * is not self-initializing. If you use GC_local_malloc you should arrange
19166 + * to call this somehow (e.g. from a constructor) before doing any allocation.
19168 +GC_API void GC_init GC_PROTO((void));
19171 * general purpose allocation routines, with roughly malloc calling conv.
19172 * The atomic versions promise that no relevant pointers are contained
19173 @@ -419,17 +341,21 @@
19174 GC_API void GC_add_roots GC_PROTO((char * low_address,
19175 char * high_address_plus_1));
19177 +/* Remove a root segment. Wizards only. */
19178 +GC_API void GC_remove_roots GC_PROTO((char * low_address,
19179 + char * high_address_plus_1));
19181 /* Add a displacement to the set of those considered valid by the */
19182 /* collector. GC_register_displacement(n) means that if p was returned */
19183 /* by GC_malloc, then (char *)p + n will be considered to be a valid */
19184 -/* pointer to n. N must be small and less than the size of p. */
19185 +/* pointer to p. N must be small and less than the size of p. */
19186 /* (All pointers to the interior of objects from the stack are */
19187 /* considered valid in any case. This applies to heap objects and */
19188 /* static data.) */
19189 /* Preferably, this should be called before any other GC procedures. */
19190 /* Calling it later adds to the probability of excess memory */
19192 -/* This is a no-op if the collector was compiled with recognition of */
19193 +/* This is a no-op if the collector has recognition of */
19194 /* arbitrary interior pointers enabled, which is now the default. */
19195 GC_API void GC_register_displacement GC_PROTO((GC_word n));
19197 @@ -464,9 +390,18 @@
19198 GC_API size_t GC_get_bytes_since_gc GC_PROTO((void));
19200 /* Return the total number of bytes allocated in this process. */
19201 -/* Never decreases. */
19202 +/* Never decreases, except due to wrapping. */
19203 GC_API size_t GC_get_total_bytes GC_PROTO((void));
19205 +/* Disable garbage collection. Even GC_gcollect calls will be */
19206 +/* ineffective. */
19207 +GC_API void GC_disable GC_PROTO((void));
19209 +/* Reenable garbage collection. GC_diable() and GC_enable() calls */
19210 +/* nest. Garbage collection is enabled if the number of calls to both */
19211 +/* both functions is equal. */
19212 +GC_API void GC_enable GC_PROTO((void));
19214 /* Enable incremental/generational collection. */
19215 /* Not advisable unless dirty bits are */
19216 /* available or most heap objects are */
19217 @@ -474,7 +409,11 @@
19218 /* Don't use in leak finding mode. */
19219 /* Ignored if GC_dont_gc is true. */
19220 /* Only the generational piece of this is */
19221 -/* functional if GC_parallel is TRUE. */
19222 +/* functional if GC_parallel is TRUE */
19223 +/* or if GC_time_limit is GC_TIME_UNLIMITED. */
19224 +/* Causes GC_local_gcj_malloc() to revert to */
19225 +/* locked allocation. Must be called */
19226 +/* before any GC_local_gcj_malloc() calls. */
19227 GC_API void GC_enable_incremental GC_PROTO((void));
19229 /* Does incremental mode write-protect pages? Returns zero or */
19230 @@ -518,6 +457,42 @@
19231 # define GC_RETURN_ADDR (GC_word)__return_address
19235 +# include <features.h>
19236 +# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
19237 + && !defined(__ia64__)
19238 +# define GC_HAVE_BUILTIN_BACKTRACE
19239 +# define GC_CAN_SAVE_CALL_STACKS
19241 +# if defined(__i386__) || defined(__x86_64__)
19242 +# define GC_CAN_SAVE_CALL_STACKS
19246 +#if defined(__sparc__)
19247 +# define GC_CAN_SAVE_CALL_STACKS
19250 +/* If we're on an a platform on which we can't save call stacks, but */
19251 +/* gcc is normally used, we go ahead and define GC_ADD_CALLER. */
19252 +/* We make this decision independent of whether gcc is actually being */
19253 +/* used, in order to keep the interface consistent, and allow mixing */
19254 +/* of compilers. */
19255 +/* This may also be desirable if it is possible but expensive to */
19256 +/* retrieve the call chain. */
19257 +#if (defined(__linux__) || defined(__NetBSD__) || defined(__OpenBSD__) \
19258 + || defined(__FreeBSD__)) & !defined(GC_CAN_SAVE_CALL_STACKS)
19259 +# define GC_ADD_CALLER
19260 +# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
19261 + /* gcc knows how to retrieve return address, but we don't know */
19262 + /* how to generate call stacks. */
19263 +# define GC_RETURN_ADDR (GC_word)__builtin_return_address(0)
19265 + /* Just pass 0 for gcc compatibility. */
19266 +# define GC_RETURN_ADDR 0
19270 #ifdef GC_ADD_CALLER
19271 # define GC_EXTRAS GC_RETURN_ADDR, __FILE__, __LINE__
19272 # define GC_EXTRA_PARAMS GC_word ra, GC_CONST char * s, int i
19273 @@ -536,18 +511,42 @@
19274 GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS));
19275 GC_API GC_PTR GC_debug_malloc_stubborn
19276 GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS));
19277 +GC_API GC_PTR GC_debug_malloc_ignore_off_page
19278 + GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS));
19279 +GC_API GC_PTR GC_debug_malloc_atomic_ignore_off_page
19280 + GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS));
19281 GC_API void GC_debug_free GC_PROTO((GC_PTR object_addr));
19282 GC_API GC_PTR GC_debug_realloc
19283 GC_PROTO((GC_PTR old_object, size_t new_size_in_bytes,
19286 GC_API void GC_debug_change_stubborn GC_PROTO((GC_PTR));
19287 GC_API void GC_debug_end_stubborn_change GC_PROTO((GC_PTR));
19289 +/* Routines that allocate objects with debug information (like the */
19290 +/* above), but just fill in dummy file and line number information. */
19291 +/* Thus they can serve as drop-in malloc/realloc replacements. This */
19292 +/* can be useful for two reasons: */
19293 +/* 1) It allows the collector to be built with DBG_HDRS_ALL defined */
19294 +/* even if some allocation calls come from 3rd party libraries */
19295 +/* that can't be recompiled. */
19296 +/* 2) On some platforms, the file and line information is redundant, */
19297 +/* since it can be reconstructed from a stack trace. On such */
19298 +/* platforms it may be more convenient not to recompile, e.g. for */
19299 +/* leak detection. This can be accomplished by instructing the */
19300 +/* linker to replace malloc/realloc with these. */
19301 +GC_API GC_PTR GC_debug_malloc_replacement GC_PROTO((size_t size_in_bytes));
19302 +GC_API GC_PTR GC_debug_realloc_replacement
19303 + GC_PROTO((GC_PTR object_addr, size_t size_in_bytes));
19306 # define GC_MALLOC(sz) GC_debug_malloc(sz, GC_EXTRAS)
19307 # define GC_MALLOC_ATOMIC(sz) GC_debug_malloc_atomic(sz, GC_EXTRAS)
19308 -# define GC_MALLOC_UNCOLLECTABLE(sz) GC_debug_malloc_uncollectable(sz, \
19310 +# define GC_MALLOC_UNCOLLECTABLE(sz) \
19311 + GC_debug_malloc_uncollectable(sz, GC_EXTRAS)
19312 +# define GC_MALLOC_IGNORE_OFF_PAGE(sz) \
19313 + GC_debug_malloc_ignore_off_page(sz, GC_EXTRAS)
19314 +# define GC_MALLOC_ATOMIC_IGNORE_OFF_PAGE(sz) \
19315 + GC_debug_malloc_atomic_ignore_off_page(sz, GC_EXTRAS)
19316 # define GC_REALLOC(old, sz) GC_debug_realloc(old, sz, GC_EXTRAS)
19317 # define GC_FREE(p) GC_debug_free(p)
19318 # define GC_REGISTER_FINALIZER(p, f, d, of, od) \
19319 @@ -566,6 +565,10 @@
19320 # define GC_MALLOC(sz) GC_malloc(sz)
19321 # define GC_MALLOC_ATOMIC(sz) GC_malloc_atomic(sz)
19322 # define GC_MALLOC_UNCOLLECTABLE(sz) GC_malloc_uncollectable(sz)
19323 +# define GC_MALLOC_IGNORE_OFF_PAGE(sz) \
19324 + GC_malloc_ignore_off_page(sz)
19325 +# define GC_MALLOC_ATOMIC_IGNORE_OFF_PAGE(sz) \
19326 + GC_malloc_atomic_ignore_off_page(sz)
19327 # define GC_REALLOC(old, sz) GC_realloc(old, sz)
19328 # define GC_FREE(p) GC_free(p)
19329 # define GC_REGISTER_FINALIZER(p, f, d, of, od) \
19330 @@ -644,7 +647,8 @@
19331 /* itself. There is a stylistic argument that this is wrong, */
19332 /* but it's unavoidable for C++, since the compiler may */
19333 /* silently introduce these. It's also benign in that specific */
19335 +/* case. And it helps if finalizable objects are split to */
19336 +/* avoid cycles. */
19337 /* Note that cd will still be viewed as accessible, even if it */
19338 /* refers to the object itself. */
19339 GC_API void GC_register_finalizer_ignore_self
19340 @@ -717,11 +721,6 @@
19341 /* Undoes a registration by either of the above two */
19344 -/* Auxiliary fns to make finalization work correctly with displaced */
19345 -/* pointers introduced by the debugging allocators. */
19346 -GC_API GC_PTR GC_make_closure GC_PROTO((GC_finalization_proc fn, GC_PTR data));
19347 -GC_API void GC_debug_invoke_finalizer GC_PROTO((GC_PTR obj, GC_PTR data));
19349 /* Returns !=0 if GC_invoke_finalizers has something to do. */
19350 GC_API int GC_should_invoke_finalizers GC_PROTO((void));
19352 @@ -739,6 +738,10 @@
19353 GC_API GC_warn_proc GC_set_warn_proc GC_PROTO((GC_warn_proc p));
19354 /* Returns old warning procedure. */
19356 +GC_API GC_word GC_set_free_space_divisor GC_PROTO((GC_word value));
19357 + /* Set free_space_divisor. See above for definition. */
19358 + /* Returns old value. */
19360 /* The following is intended to be used by a higher level */
19361 /* (e.g. Java-like) finalization facility. It is expected */
19362 /* that finalization code will arrange for hidden pointers to */
19363 @@ -875,12 +878,16 @@
19365 #if defined(GC_WIN32_THREADS)
19366 # include <windows.h>
19367 +# include <winbase.h>
19370 * All threads must be created using GC_CreateThread, so that they will be
19371 - * recorded in the thread table.
19372 + * recorded in the thread table. For backwards compatibility, this is not
19373 + * technically true if the GC is built as a dynamic library, since it can
19374 + * and does then use DllMain to keep track of thread creations. But new code
19375 + * should be built to call GC_CreateThread.
19377 - HANDLE WINAPI GC_CreateThread(
19378 + GC_API HANDLE GC_CreateThread(
19379 LPSECURITY_ATTRIBUTES lpThreadAttributes,
19380 DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress,
19381 LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId );
19382 @@ -914,13 +921,18 @@
19383 # define GC_INIT() { extern end, etext; \
19384 GC_noop(&end, &etext); }
19386 -# if (defined(__CYGWIN32__) && defined(GC_USE_DLL)) || defined (_AIX)
19387 +# if defined(__CYGWIN32__) && defined(GC_DLL) || defined (_AIX)
19389 - * Similarly gnu-win32 DLLs need explicit initialization
19390 + * Similarly gnu-win32 DLLs need explicit initialization from
19391 + * the main program, as does AIX.
19393 # define GC_INIT() { GC_add_roots(DATASTART, DATAEND); }
19395 +# if defined(__APPLE__) && defined(__MACH__)
19396 +# define GC_INIT() { GC_init(); }
19403 diff -Nubr boehm-gc/include/gc_allocator.h ../boehm-gc/include/gc_allocator.h
19404 --- boehm-gc/include/gc_allocator.h Wed Dec 31 16:00:00 1969
19405 +++ ../boehm-gc/include/gc_allocator.h Mon May 26 13:28:19 2003
19408 + * Copyright (c) 1996-1997
19409 + * Silicon Graphics Computer Systems, Inc.
19411 + * Permission to use, copy, modify, distribute and sell this software
19412 + * and its documentation for any purpose is hereby granted without fee,
19413 + * provided that the above copyright notice appear in all copies and
19414 + * that both that copyright notice and this permission notice appear
19415 + * in supporting documentation. Silicon Graphics makes no
19416 + * representations about the suitability of this software for any
19417 + * purpose. It is provided "as is" without express or implied warranty.
19419 + * Copyright (c) 2002
19420 + * Hewlett-Packard Company
19422 + * Permission to use, copy, modify, distribute and sell this software
19423 + * and its documentation for any purpose is hereby granted without fee,
19424 + * provided that the above copyright notice appear in all copies and
19425 + * that both that copyright notice and this permission notice appear
19426 + * in supporting documentation. Hewlett-Packard Company makes no
19427 + * representations about the suitability of this software for any
19428 + * purpose. It is provided "as is" without express or implied warranty.
19432 + * This implements standard-conforming allocators that interact with
19433 + * the garbage collector. Gc_alloctor<T> allocates garbage-collectable
19434 + * objects of type T. Traceable_allocator<T> allocates objects that
19435 + * are not temselves garbage collected, but are scanned by the
19436 + * collector for pointers to collectable objects. Traceable_alloc
19437 + * should be used for explicitly managed STL containers that may
19438 + * point to collectable objects.
19440 + * This code was derived from an earlier version of the GNU C++ standard
19441 + * library, which itself was derived from the SGI STL implementation.
19444 +#include "gc.h" // For size_t
19446 +/* First some helpers to allow us to dispatch on whether or not a type
19447 + * is known to be pointerfree.
19448 + * These are private, except that the client may invoke the
19449 + * GC_DECLARE_PTRFREE macro.
19452 +struct GC_true_type {};
19453 +struct GC_false_type {};
19455 +template <class GC_tp>
19456 +struct GC_type_traits {
19457 + GC_false_type GC_is_ptr_free;
19460 +# define GC_DECLARE_PTRFREE(T) \
19461 +template<> struct GC_type_traits<T> { GC_true_type GC_is_ptr_free; }
19463 +GC_DECLARE_PTRFREE(signed char);
19464 +GC_DECLARE_PTRFREE(unsigned char);
19465 +GC_DECLARE_PTRFREE(signed short);
19466 +GC_DECLARE_PTRFREE(unsigned short);
19467 +GC_DECLARE_PTRFREE(signed int);
19468 +GC_DECLARE_PTRFREE(unsigned int);
19469 +GC_DECLARE_PTRFREE(signed long);
19470 +GC_DECLARE_PTRFREE(unsigned long);
19471 +GC_DECLARE_PTRFREE(float);
19472 +GC_DECLARE_PTRFREE(double);
19473 +/* The client may want to add others. */
19475 +// In the following GC_Tp is GC_true_type iff we are allocating a
19476 +// pointerfree object.
19477 +template <class GC_Tp>
19478 +inline void * GC_selective_alloc(size_t n, GC_Tp) {
19479 + return GC_MALLOC(n);
19483 +inline void * GC_selective_alloc<GC_true_type>(size_t n, GC_true_type) {
19484 + return GC_MALLOC_ATOMIC(n);
19487 +/* Now the public gc_allocator<T> class:
19489 +template <class GC_Tp>
19490 +class gc_allocator {
19492 + typedef size_t size_type;
19493 + typedef ptrdiff_t difference_type;
19494 + typedef GC_Tp* pointer;
19495 + typedef const GC_Tp* const_pointer;
19496 + typedef GC_Tp& reference;
19497 + typedef const GC_Tp& const_reference;
19498 + typedef GC_Tp value_type;
19500 + template <class GC_Tp1> struct rebind {
19501 + typedef gc_allocator<GC_Tp1> other;
19504 + gc_allocator() {}
19506 + // I'm not sure why this is needed here in addition to the following.
19507 + // The standard specifies it for the standard allocator, but VC++ rejects
19509 + gc_allocator(const gc_allocator&) throw() {}
19511 + template <class GC_Tp1> gc_allocator(const gc_allocator<GC_Tp1>&) throw() {}
19512 + ~gc_allocator() throw() {}
19514 + pointer address(reference GC_x) const { return &GC_x; }
19515 + const_pointer address(const_reference GC_x) const { return &GC_x; }
19517 + // GC_n is permitted to be 0. The C++ standard says nothing about what
19518 + // the return value is when GC_n == 0.
19519 + GC_Tp* allocate(size_type GC_n, const void* = 0) {
19520 + GC_type_traits<GC_Tp> traits;
19521 + return static_cast<GC_Tp *>
19522 + (GC_selective_alloc(GC_n * sizeof(GC_Tp),
19523 + traits.GC_is_ptr_free));
19526 + // __p is not permitted to be a null pointer.
19527 + void deallocate(pointer __p, size_type GC_n)
19528 + { GC_FREE(__p); }
19530 + size_type max_size() const throw()
19531 + { return size_t(-1) / sizeof(GC_Tp); }
19533 + void construct(pointer __p, const GC_Tp& __val) { new(__p) GC_Tp(__val); }
19534 + void destroy(pointer __p) { __p->~GC_Tp(); }
19538 +class gc_allocator<void> {
19539 + typedef size_t size_type;
19540 + typedef ptrdiff_t difference_type;
19541 + typedef void* pointer;
19542 + typedef const void* const_pointer;
19543 + typedef void value_type;
19545 + template <class GC_Tp1> struct rebind {
19546 + typedef gc_allocator<GC_Tp1> other;
19551 +template <class GC_T1, class GC_T2>
19552 +inline bool operator==(const gc_allocator<GC_T1>&, const gc_allocator<GC_T2>&)
19557 +template <class GC_T1, class GC_T2>
19558 +inline bool operator!=(const gc_allocator<GC_T1>&, const gc_allocator<GC_T2>&)
19564 + * And the public traceable_allocator class.
19567 +// Note that we currently don't specialize the pointer-free case, since a
19568 +// pointer-free traceable container doesn't make that much sense,
19569 +// though it could become an issue due to abstraction boundaries.
19570 +template <class GC_Tp>
19571 +class traceable_allocator {
19573 + typedef size_t size_type;
19574 + typedef ptrdiff_t difference_type;
19575 + typedef GC_Tp* pointer;
19576 + typedef const GC_Tp* const_pointer;
19577 + typedef GC_Tp& reference;
19578 + typedef const GC_Tp& const_reference;
19579 + typedef GC_Tp value_type;
19581 + template <class GC_Tp1> struct rebind {
19582 + typedef traceable_allocator<GC_Tp1> other;
19585 + traceable_allocator() throw() {}
19587 + traceable_allocator(const traceable_allocator&) throw() {}
19589 + template <class GC_Tp1> traceable_allocator
19590 + (const traceable_allocator<GC_Tp1>&) throw() {}
19591 + ~traceable_allocator() throw() {}
19593 + pointer address(reference GC_x) const { return &GC_x; }
19594 + const_pointer address(const_reference GC_x) const { return &GC_x; }
19596 + // GC_n is permitted to be 0. The C++ standard says nothing about what
19597 + // the return value is when GC_n == 0.
19598 + GC_Tp* allocate(size_type GC_n, const void* = 0) {
19599 + return static_cast<GC_Tp*>(GC_MALLOC_UNCOLLECTABLE(GC_n * sizeof(GC_Tp)));
19602 + // __p is not permitted to be a null pointer.
19603 + void deallocate(pointer __p, size_type GC_n)
19604 + { GC_FREE(__p); }
19606 + size_type max_size() const throw()
19607 + { return size_t(-1) / sizeof(GC_Tp); }
19609 + void construct(pointer __p, const GC_Tp& __val) { new(__p) GC_Tp(__val); }
19610 + void destroy(pointer __p) { __p->~GC_Tp(); }
19614 +class traceable_allocator<void> {
19615 + typedef size_t size_type;
19616 + typedef ptrdiff_t difference_type;
19617 + typedef void* pointer;
19618 + typedef const void* const_pointer;
19619 + typedef void value_type;
19621 + template <class GC_Tp1> struct rebind {
19622 + typedef traceable_allocator<GC_Tp1> other;
19627 +template <class GC_T1, class GC_T2>
19628 +inline bool operator==(const traceable_allocator<GC_T1>&, const traceable_allocator<GC_T2>&)
19633 +template <class GC_T1, class GC_T2>
19634 +inline bool operator!=(const traceable_allocator<GC_T1>&, const traceable_allocator<GC_T2>&)
19639 diff -Nubr boehm-gc/include/gc_config_macros.h ../boehm-gc/include/gc_config_macros.h
19640 --- boehm-gc/include/gc_config_macros.h Wed Dec 31 16:00:00 1969
19641 +++ ../boehm-gc/include/gc_config_macros.h Mon May 26 13:28:19 2003
19644 + * This should never be included directly. It is included only from gc.h.
19645 + * We separate it only to make gc.h more suitable as documentation.
19647 + * Some tests for old macros. These violate our namespace rules and will
19648 + * disappear shortly. Use the GC_ names.
19650 +#if defined(SOLARIS_THREADS) || defined(_SOLARIS_THREADS)
19651 +# define GC_SOLARIS_THREADS
19653 +#if defined(_SOLARIS_PTHREADS)
19654 +# define GC_SOLARIS_PTHREADS
19656 +#if defined(IRIX_THREADS)
19657 +# define GC_IRIX_THREADS
19659 +#if defined(DGUX_THREADS)
19660 +# if !defined(GC_DGUX386_THREADS)
19661 +# define GC_DGUX386_THREADS
19664 +#if defined(HPUX_THREADS)
19665 +# define GC_HPUX_THREADS
19667 +#if defined(OSF1_THREADS)
19668 +# define GC_OSF1_THREADS
19670 +#if defined(LINUX_THREADS)
19671 +# define GC_LINUX_THREADS
19673 +#if defined(WIN32_THREADS)
19674 +# define GC_WIN32_THREADS
19676 +#if defined(USE_LD_WRAP)
19677 +# define GC_USE_LD_WRAP
19680 +#if !defined(_REENTRANT) && (defined(GC_SOLARIS_THREADS) \
19681 + || defined(GC_SOLARIS_PTHREADS) \
19682 + || defined(GC_HPUX_THREADS) \
19683 + || defined(GC_LINUX_THREADS))
19684 +# define _REENTRANT
19685 + /* Better late than never. This fails if system headers that */
19686 + /* depend on this were previously included. */
19689 +#if defined(GC_DGUX386_THREADS) && !defined(_POSIX4A_DRAFT10_SOURCE)
19690 +# define _POSIX4A_DRAFT10_SOURCE 1
19693 +# if defined(GC_SOLARIS_PTHREADS) || defined(GC_FREEBSD_THREADS) || \
19694 + defined(GC_IRIX_THREADS) || defined(GC_LINUX_THREADS) || \
19695 + defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) || \
19696 + defined(GC_DGUX386_THREADS) || defined(GC_DARWIN_THREADS) || \
19697 + (defined(GC_WIN32_THREADS) && defined(__CYGWIN32__))
19698 +# define GC_PTHREADS
19701 +#if defined(GC_THREADS) && !defined(GC_PTHREADS)
19702 +# if defined(__linux__)
19703 +# define GC_LINUX_THREADS
19704 +# define GC_PTHREADS
19706 +# if !defined(LINUX) && (defined(_PA_RISC1_1) || defined(_PA_RISC2_0) \
19707 + || defined(hppa) || defined(__HPPA))
19708 +# define GC_HPUX_THREADS
19709 +# define GC_PTHREADS
19711 +# if !defined(__linux__) && (defined(__alpha) || defined(__alpha__))
19712 +# define GC_OSF1_THREADS
19713 +# define GC_PTHREADS
19715 +# if defined(__mips) && !defined(__linux__)
19716 +# define GC_IRIX_THREADS
19717 +# define GC_PTHREADS
19719 +# if defined(__sparc) && !defined(__linux__)
19720 +# define GC_SOLARIS_PTHREADS
19721 +# define GC_PTHREADS
19723 +# if defined(__APPLE__) && defined(__MACH__) && defined(__ppc__)
19724 +# define GC_DARWIN_THREADS
19725 +# define GC_PTHREADS
19727 +# if !defined(GC_PTHREADS) && defined(__FreeBSD__)
19728 +# define GC_FREEBSD_THREADS
19729 +# define GC_PTHREADS
19731 +# if defined(DGUX) && (defined(i386) || defined(__i386__))
19732 +# define GC_DGUX386_THREADS
19733 +# define GC_PTHREADS
19735 +#endif /* GC_THREADS */
19737 +#if defined(GC_THREADS) && !defined(GC_PTHREADS) && defined(MSWIN32)
19738 +# define GC_WIN32_THREADS
19741 +#if defined(GC_SOLARIS_PTHREADS) && !defined(GC_SOLARIS_THREADS)
19742 +# define GC_SOLARIS_THREADS
19746 +# include <stddef.h>
19747 +# ifdef _WIN32_WCE
19748 +/* Yet more kluges for WinCE */
19749 +# include <stdlib.h> /* size_t is defined here */
19750 + typedef long ptrdiff_t; /* ptrdiff_t is not defined */
19753 +#if defined(_DLL) && !defined(GC_NOT_DLL) && !defined(GC_DLL)
19757 +#if defined(__MINGW32__) && defined(GC_DLL)
19759 +# define GC_API __declspec(dllexport)
19761 +# define GC_API __declspec(dllimport)
19765 +#if (defined(__DMC__) || defined(_MSC_VER)) && defined(GC_DLL)
19767 +# define GC_API extern __declspec(dllexport)
19769 +# define GC_API __declspec(dllimport)
19773 +#if defined(__WATCOMC__) && defined(GC_DLL)
19775 +# define GC_API extern __declspec(dllexport)
19777 +# define GC_API extern __declspec(dllimport)
19782 +#define GC_API extern
19785 diff -Nubr boehm-gc/include/gc_cpp.h ../boehm-gc/include/gc_cpp.h
19786 --- boehm-gc/include/gc_cpp.h Fri Aug 17 18:04:43 2001
19787 +++ ../boehm-gc/include/gc_cpp.h Mon May 26 13:28:19 2003
19788 @@ -134,7 +134,9 @@
19791 #ifndef THINK_CPLUS
19795 +# define GC_cdecl _cdecl
19798 #if ! defined( GC_NO_OPERATOR_NEW_ARRAY ) \
19799 @@ -159,12 +161,22 @@
19801 inline void* operator new( size_t size );
19802 inline void* operator new( size_t size, GCPlacement gcp );
19803 + inline void* operator new( size_t size, void *p );
19804 + /* Must be redefined here, since the other overloadings */
19805 + /* hide the global definition. */
19806 inline void operator delete( void* obj );
19807 +# ifndef __BORLANDC__ /* Confuses the Borland compiler. */
19808 + inline void operator delete( void*, void* );
19811 #ifdef GC_OPERATOR_NEW_ARRAY
19812 inline void* operator new[]( size_t size );
19813 inline void* operator new[]( size_t size, GCPlacement gcp );
19814 + inline void* operator new[]( size_t size, void *p );
19815 inline void operator delete[]( void* obj );
19816 +# ifndef __BORLANDC__
19817 + inline void gc::operator delete[]( void*, void* );
19819 #endif /* GC_OPERATOR_NEW_ARRAY */
19822 @@ -176,7 +188,7 @@
19823 inline gc_cleanup();
19824 inline virtual ~gc_cleanup();
19826 - inline static void _cdecl cleanup( void* obj, void* clientData );};
19827 + inline static void GC_cdecl cleanup( void* obj, void* clientData );};
19829 Instances of classes derived from "gc_cleanup" will be allocated
19830 in the collected heap by default. When the collector discovers an
19831 @@ -211,7 +223,6 @@
19832 classes derived from "gc_cleanup" or containing members derived
19833 from "gc_cleanup". */
19835 -#ifdef GC_OPERATOR_NEW_ARRAY
19838 /** This ensures that the system default operator new[] doesn't get
19839 @@ -220,42 +231,24 @@
19840 * There seems to be really redirect new in this environment without
19841 * including this everywhere.
19843 - inline void *operator new[]( size_t size )
19845 - return GC_MALLOC_UNCOLLECTABLE( size );
19848 - inline void operator delete[](void* obj)
19852 + void *operator new[]( size_t size );
19854 - inline void* operator new( size_t size)
19856 - return GC_MALLOC_UNCOLLECTABLE( size);
19858 + void operator delete[](void* obj);
19860 - inline void operator delete(void* obj)
19864 + void* operator new( size_t size);
19866 + void operator delete(void* obj);
19868 -// This new operator is used by VC++ in case of Debug builds !
19869 - inline void* operator new( size_t size,
19870 + // This new operator is used by VC++ in case of Debug builds !
19871 + void* operator new( size_t size,
19873 const char * szFileName,
19877 - return GC_malloc_uncollectable( size );
19879 - return GC_debug_malloc_uncollectable(size, szFileName, nLine);
19884 #endif /* _MSC_VER */
19887 +#ifdef GC_OPERATOR_NEW_ARRAY
19889 inline void* operator new[](
19892 @@ -283,9 +276,15 @@
19894 return GC_MALLOC_UNCOLLECTABLE( size );}
19896 +inline void* gc::operator new( size_t size, void *p ) {
19899 inline void gc::operator delete( void* obj ) {
19902 +#ifndef __BORLANDC__
19903 + inline void gc::operator delete( void*, void* ) {}
19906 #ifdef GC_OPERATOR_NEW_ARRAY
19908 @@ -295,14 +294,21 @@
19909 inline void* gc::operator new[]( size_t size, GCPlacement gcp ) {
19910 return gc::operator new( size, gcp );}
19912 +inline void* gc::operator new[]( size_t size, void *p ) {
19915 inline void gc::operator delete[]( void* obj ) {
19916 gc::operator delete( obj );}
19918 +#ifndef __BORLANDC__
19919 + inline void gc::operator delete[]( void*, void* ) {}
19922 #endif /* GC_OPERATOR_NEW_ARRAY */
19925 inline gc_cleanup::~gc_cleanup() {
19926 - GC_REGISTER_FINALIZER_IGNORE_SELF( GC_base(this), 0, 0, 0, 0 );}
19927 + GC_register_finalizer_ignore_self( GC_base(this), 0, 0, 0, 0 );}
19929 inline void gc_cleanup::cleanup( void* obj, void* displ ) {
19930 ((gc_cleanup*) ((char*) obj + (ptrdiff_t) displ))->~gc_cleanup();}
19931 diff -Nubr boehm-gc/include/gc_local_alloc.h ../boehm-gc/include/gc_local_alloc.h
19932 --- boehm-gc/include/gc_local_alloc.h Fri Aug 17 11:30:50 2001
19933 +++ ../boehm-gc/include/gc_local_alloc.h Mon May 26 13:28:19 2003
19935 * -DTHREAD_LOCAL_ALLOC, which is currently supported only on Linux.
19937 * The debugging allocators use standard, not thread-local allocation.
19939 + * These routines normally require an explicit call to GC_init(), though
19940 + * that may be done from a constructor function.
19943 #ifndef GC_LOCAL_ALLOC_H
19944 diff -Nubr boehm-gc/include/gc_mark.h ../boehm-gc/include/gc_mark.h
19945 --- boehm-gc/include/gc_mark.h Fri Aug 17 11:30:50 2001
19946 +++ ../boehm-gc/include/gc_mark.h Mon May 26 13:28:19 2003
19947 @@ -129,7 +129,9 @@
19948 /* be reserved for exceptional cases. That will ensure that */
19949 /* performance of this call is not extremely performance critical. */
19950 /* (Otherwise we would need to inline GC_mark_and_push completely, */
19951 -/* which would tie the client code to a fixed colllector version.) */
19952 +/* which would tie the client code to a fixed collector version.) */
19953 +/* Note that mark procedures should explicitly call FIXUP_POINTER() */
19954 +/* if required. */
19955 struct GC_ms_entry *GC_mark_and_push
19956 GC_PROTO((GC_PTR obj,
19957 struct GC_ms_entry * mark_stack_ptr,
19958 diff -Nubr boehm-gc/include/gc_pthread_redirects.h ../boehm-gc/include/gc_pthread_redirects.h
19959 --- boehm-gc/include/gc_pthread_redirects.h Tue Oct 16 21:55:28 2001
19960 +++ ../boehm-gc/include/gc_pthread_redirects.h Mon May 26 13:28:19 2003
19961 @@ -52,15 +52,21 @@
19962 int GC_pthread_create(pthread_t *new_thread,
19963 const pthread_attr_t *attr,
19964 void *(*start_routine)(void *), void *arg);
19965 +#ifndef GC_DARWIN_THREADS
19966 int GC_pthread_sigmask(int how, const sigset_t *set, sigset_t *oset);
19968 int GC_pthread_join(pthread_t thread, void **retval);
19969 int GC_pthread_detach(pthread_t thread);
19971 # define pthread_create GC_pthread_create
19972 +#ifndef GC_DARWIN_THREADS
19973 # define pthread_sigmask GC_pthread_sigmask
19975 # define pthread_join GC_pthread_join
19976 # define pthread_detach GC_pthread_detach
19977 +#ifndef GC_DARWIN_THREADS
19978 # define dlopen GC_dlopen
19981 #endif /* GC_xxxxx_THREADS */
19983 diff -Nubr boehm-gc/include/gc_typed.h ../boehm-gc/include/gc_typed.h
19984 --- boehm-gc/include/gc_typed.h Fri Aug 17 11:30:50 2001
19985 +++ ../boehm-gc/include/gc_typed.h Mon May 26 13:28:19 2003
19986 @@ -29,14 +29,21 @@
19990 +#ifdef __cplusplus
19993 typedef GC_word * GC_bitmap;
19994 /* The least significant bit of the first word is one if */
19995 /* the first word in the object may be a pointer. */
19997 +# define GC_WORDSZ (8*sizeof(GC_word))
19998 # define GC_get_bit(bm, index) \
19999 - (((bm)[divWORDSZ(index)] >> modWORDSZ(index)) & 1)
20000 + (((bm)[index/GC_WORDSZ] >> (index%GC_WORDSZ)) & 1)
20001 # define GC_set_bit(bm, index) \
20002 - (bm)[divWORDSZ(index)] |= (word)1 << modWORDSZ(index)
20003 + (bm)[index/GC_WORDSZ] |= ((GC_word)1 << (index%GC_WORDSZ))
20004 +# define GC_WORD_OFFSET(t, f) (offsetof(t,f)/sizeof(GC_word))
20005 +# define GC_WORD_LEN(t) (sizeof(t)/ sizeof(GC_word))
20006 +# define GC_BITMAP_SIZE(t) ((GC_WORD_LEN(t) + GC_WORDSZ-1)/GC_WORDSZ)
20008 typedef GC_word GC_descr;
20011 /* is intended to be called once per type, not once */
20012 /* per allocation. */
20014 +/* It is possible to generate a descriptor for a C type T with */
20015 +/* word aligned pointer fields f1, f2, ... as follows: */
20017 +/* GC_descr T_descr;
20018 +/* GC_word T_bitmap[GC_BITMAP_SIZE(T)] = {0}; */
20019 +/* GC_set_bit(T_bitmap, GC_WORD_OFFSET(T,f1)); */
20020 +/* GC_set_bit(T_bitmap, GC_WORD_OFFSET(T,f2)); */
20022 +/* T_descr = GC_make_descriptor(T_bitmap, GC_WORD_LEN(T)); */
20024 GC_API GC_PTR GC_malloc_explicitly_typed
20025 GC_PROTO((size_t size_in_bytes, GC_descr d));
20026 /* Allocate an object whose layout is described by d. */
20027 @@ -79,15 +96,18 @@
20028 /* Returned object is cleared. */
20031 -# define GC_MALLOC_EXPLICTLY_TYPED(bytes, d) GC_MALLOC(bytes)
20032 -# define GC_CALLOC_EXPLICTLY_TYPED(n, bytes, d) GC_MALLOC(n*bytes)
20033 +# define GC_MALLOC_EXPLICITLY_TYPED(bytes, d) GC_MALLOC(bytes)
20034 +# define GC_CALLOC_EXPLICITLY_TYPED(n, bytes, d) GC_MALLOC(n*bytes)
20036 -# define GC_MALLOC_EXPLICTLY_TYPED(bytes, d) \
20037 +# define GC_MALLOC_EXPLICITLY_TYPED(bytes, d) \
20038 GC_malloc_explicitly_typed(bytes, d)
20039 -# define GC_CALLOC_EXPLICTLY_TYPED(n, bytes, d) \
20040 +# define GC_CALLOC_EXPLICITLY_TYPED(n, bytes, d) \
20041 GC_calloc_explicitly_typed(n, bytes, d)
20042 #endif /* !GC_DEBUG */
20044 +#ifdef __cplusplus
20045 + } /* matches extern "C" */
20048 #endif /* _GC_TYPED_H */
20050 diff -Nubr boehm-gc/include/new_gc_alloc.h ../boehm-gc/include/new_gc_alloc.h
20051 --- boehm-gc/include/new_gc_alloc.h Tue Oct 16 02:01:38 2001
20052 +++ ../boehm-gc/include/new_gc_alloc.h Mon May 26 13:28:19 2003
20057 +/* A hack to deal with gcc 3.1. If you are using gcc3.1 and later, */
20058 +/* you should probably really use gc_allocator.h instead. */
20059 +#if defined (__GNUC__) && \
20060 + (__GNUC > 3 || (__GNUC__ == 3 && (__GNUC_MINOR__ >= 1)))
20061 +# define simple_alloc __simple_alloc
20068 diff -Nubr boehm-gc/include/private/CVS/Entries ../boehm-gc/include/private/CVS/Entries
20069 --- boehm-gc/include/private/CVS/Entries Wed Dec 31 16:00:00 1969
20070 +++ ../boehm-gc/include/private/CVS/Entries Sat May 31 21:17:21 2003
20072 +/dbg_mlc.h/1.3/Thu Mar 14 07:28:33 2002//
20073 +/gc_hdrs.h/1.2/Fri Sep 14 00:43:56 2001//
20074 +/gc_locks.h/1.5/Thu Oct 24 23:42:28 2002//
20075 +/gc_pmark.h/1.3/Thu Mar 14 07:28:33 2002//
20076 +/gc_priv.h/1.7/Fri Aug 2 10:04:39 2002//
20077 +/gcconfig.h/1.10/Thu Oct 24 23:42:28 2002//
20078 +/solaris_threads.h/1.3/Mon Nov 12 19:17:42 2001//
20079 +/specific.h/1.3/Thu Apr 4 07:13:22 2002//
20080 +/cord_pos.h/1.2/Mon May 26 20:28:24 2003//
20082 diff -Nubr boehm-gc/include/private/CVS/Repository ../boehm-gc/include/private/CVS/Repository
20083 --- boehm-gc/include/private/CVS/Repository Wed Dec 31 16:00:00 1969
20084 +++ ../boehm-gc/include/private/CVS/Repository Sun May 25 12:49:09 2003
20086 +/cvs/root/gcc3/gcc3/boehm-gc/include/private
20087 diff -Nubr boehm-gc/include/private/CVS/Root ../boehm-gc/include/private/CVS/Root
20088 --- boehm-gc/include/private/CVS/Root Wed Dec 31 16:00:00 1969
20089 +++ ../boehm-gc/include/private/CVS/Root Sun May 25 12:49:09 2003
20091 +:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root
20092 diff -Nubr boehm-gc/include/private/darwin_semaphore.h ../boehm-gc/include/private/darwin_semaphore.h
20093 --- boehm-gc/include/private/darwin_semaphore.h Wed Dec 31 16:00:00 1969
20094 +++ ../boehm-gc/include/private/darwin_semaphore.h Mon May 26 13:28:24 2003
20096 +#ifndef GC_DARWIN_SEMAPHORE_H
20097 +#define GC_DARWIN_SEMAPHORE_H
20099 +#if !defined(GC_DARWIN_THREADS)
20100 +#error darwin_semaphore.h included with GC_DARWIN_THREADS not defined
20104 + This is a very simple semaphore implementation for darwin. It
20105 + is implemented in terms of pthreads calls so it isn't async signal
20106 + safe. This isn't a problem because signals aren't used to
20107 + suspend threads on darwin.
20111 + pthread_mutex_t mutex;
20112 + pthread_cond_t cond;
20116 +static int sem_init(sem_t *sem, int pshared, int value) {
20119 + GC_abort("sem_init with pshared set");
20120 + sem->value = value;
20122 + ret = pthread_mutex_init(&sem->mutex,NULL);
20123 + if(ret < 0) return -1;
20124 + ret = pthread_cond_init(&sem->cond,NULL);
20125 + if(ret < 0) return -1;
20129 +static int sem_post(sem_t *sem) {
20130 + if(pthread_mutex_lock(&sem->mutex) < 0)
20133 + if(pthread_cond_signal(&sem->cond) < 0) {
20134 + pthread_mutex_unlock(&sem->mutex);
20137 + if(pthread_mutex_unlock(&sem->mutex) < 0)
20142 +static int sem_wait(sem_t *sem) {
20143 + if(pthread_mutex_lock(&sem->mutex) < 0)
20145 + while(sem->value == 0) {
20146 + pthread_cond_wait(&sem->cond,&sem->mutex);
20149 + if(pthread_mutex_unlock(&sem->mutex) < 0)
20154 +static int sem_destroy(sem_t *sem) {
20156 + ret = pthread_cond_destroy(&sem->cond);
20157 + if(ret < 0) return -1;
20158 + ret = pthread_mutex_destroy(&sem->mutex);
20159 + if(ret < 0) return -1;
20164 diff -Nubr boehm-gc/include/private/darwin_stop_world.h ../boehm-gc/include/private/darwin_stop_world.h
20165 --- boehm-gc/include/private/darwin_stop_world.h Wed Dec 31 16:00:00 1969
20166 +++ ../boehm-gc/include/private/darwin_stop_world.h Mon May 26 13:28:24 2003
20168 +#ifndef GC_DARWIN_STOP_WORLD_H
20169 +#define GC_DARWIN_STOP_WORLD_H
20171 +#if !defined(GC_DARWIN_THREADS)
20172 +#error darwin_stop_world.h included without GC_DARWIN_THREADS defined
20175 +#include <mach/mach.h>
20176 +#include <mach/thread_act.h>
20178 +struct thread_stop_info {
20179 + mach_port_t mach_thread;
20183 diff -Nubr boehm-gc/include/private/dbg_mlc.h ../boehm-gc/include/private/dbg_mlc.h
20184 --- boehm-gc/include/private/dbg_mlc.h Mon Feb 11 20:37:57 2002
20185 +++ ../boehm-gc/include/private/dbg_mlc.h Mon May 26 13:28:24 2003
20186 @@ -115,16 +115,24 @@
20188 #ifdef SHORT_DBG_HDRS
20189 # define DEBUG_BYTES (sizeof (oh))
20190 +# define UNCOLLECTABLE_DEBUG_BYTES DEBUG_BYTES
20192 /* Add space for END_FLAG, but use any extra space that was already */
20193 /* added to catch off-the-end pointers. */
20194 -# define DEBUG_BYTES (sizeof (oh) + sizeof (word) - EXTRA_BYTES)
20195 + /* For uncollectable objects, the extra byte is not added. */
20196 +# define UNCOLLECTABLE_DEBUG_BYTES (sizeof (oh) + sizeof (word))
20197 +# define DEBUG_BYTES (UNCOLLECTABLE_DEBUG_BYTES - EXTRA_BYTES)
20199 #define USR_PTR_FROM_BASE(p) ((ptr_t)(p) + sizeof(oh))
20201 /* Round bytes to words without adding extra byte at end. */
20202 #define SIMPLE_ROUNDED_UP_WORDS(n) BYTES_TO_WORDS((n) + WORDS_TO_BYTES(1) - 1)
20204 +/* ADD_CALL_CHAIN stores a (partial) call chain into an object */
20205 +/* header. It may be called with or without the allocation */
20207 +/* PRINT_CALL_CHAIN prints the call chain stored in an object */
20208 +/* to stderr. It requires that we do not hold the lock. */
20209 #ifdef SAVE_CALL_CHAIN
20210 # define ADD_CALL_CHAIN(base, ra) GC_save_callers(((oh *)(base)) -> oh_ci)
20211 # define PRINT_CALL_CHAIN(base) GC_print_callers(((oh *)(base)) -> oh_ci)
20212 diff -Nubr boehm-gc/include/private/gc_hdrs.h ../boehm-gc/include/private/gc_hdrs.h
20213 --- boehm-gc/include/private/gc_hdrs.h Fri Aug 17 18:04:43 2001
20214 +++ ../boehm-gc/include/private/gc_hdrs.h Mon May 26 13:28:24 2003
20216 #define ADVANCE(p, hhdr, source) \
20218 hdr * new_hdr = GC_invalid_header; \
20219 - p = GC_FIND_START(p, hhdr, &new_hdr, (word)source); \
20220 + p = GC_find_start(p, hhdr, &new_hdr); \
20224 diff -Nubr boehm-gc/include/private/gc_locks.h ../boehm-gc/include/private/gc_locks.h
20225 --- boehm-gc/include/private/gc_locks.h Fri Sep 27 13:40:06 2002
20226 +++ ../boehm-gc/include/private/gc_locks.h Mon May 26 13:28:24 2003
20227 @@ -145,23 +145,24 @@
20228 # if defined(POWERPC)
20229 inline static int GC_test_and_set(volatile unsigned int *addr) {
20231 - int temp = 1; // locked value
20232 + int temp = 1; /* locked value */
20234 __asm__ __volatile__(
20235 - "1:\tlwarx %0,0,%3\n" // load and reserve
20236 - "\tcmpwi %0, 0\n" // if load is
20237 - "\tbne 2f\n" // non-zero, return already set
20238 - "\tstwcx. %2,0,%1\n" // else store conditional
20239 - "\tbne- 1b\n" // retry if lost reservation
20240 - "2:\t\n" // oldval is zero if we set
20241 + "1:\tlwarx %0,0,%3\n" /* load and reserve */
20242 + "\tcmpwi %0, 0\n" /* if load is */
20243 + "\tbne 2f\n" /* non-zero, return already set */
20244 + "\tstwcx. %2,0,%1\n" /* else store conditional */
20245 + "\tbne- 1b\n" /* retry if lost reservation */
20246 + "\tsync\n" /* import barrier */
20247 + "2:\t\n" /* oldval is zero if we set */
20248 : "=&r"(oldval), "=p"(addr)
20249 : "r"(temp), "1"(addr)
20251 - return (int)oldval;
20252 + : "cr0","memory");
20255 # define GC_TEST_AND_SET_DEFINED
20256 inline static void GC_clear(volatile unsigned int *addr) {
20257 - __asm__ __volatile__("eieio" ::: "memory");
20258 + __asm__ __volatile__("eieio" : : : "memory");
20261 # define GC_CLEAR_DEFINED
20262 @@ -191,8 +192,11 @@
20265 # define GC_TEST_AND_SET_DEFINED
20266 - /* Should probably also define GC_clear, since it needs */
20267 - /* a memory barrier ?? */
20268 + inline static void GC_clear(volatile unsigned int *addr) {
20269 + __asm__ __volatile__("mb" : : : "memory");
20272 +# define GC_CLEAR_DEFINED
20273 # endif /* ALPHA */
20275 inline static int GC_test_and_set(volatile unsigned int *addr) {
20276 @@ -224,8 +228,16 @@
20278 # endif /* __GNUC__ */
20279 # if (defined(ALPHA) && !defined(__GNUC__))
20280 -# define GC_test_and_set(addr) __cxx_test_and_set_atomic(addr, 1)
20282 + --> We currently assume that if gcc is not used, we are
20283 + --> running under Tru64.
20285 +# include <machine/builtins.h>
20286 +# include <c_asm.h>
20287 +# define GC_test_and_set(addr) __ATOMIC_EXCH_LONG(addr, 1)
20288 # define GC_TEST_AND_SET_DEFINED
20289 +# define GC_clear(addr) { asm("mb"); *(volatile unsigned *)addr = 0; }
20290 +# define GC_CLEAR_DEFINED
20292 # if defined(MSWIN32)
20293 # define GC_test_and_set(addr) InterlockedExchange((LPLONG)addr,1)
20294 @@ -238,7 +250,11 @@
20295 # define GC_TEST_AND_SET_DEFINED
20296 # elif __mips < 3 || !(defined (_ABIN32) || defined(_ABI64)) \
20297 || !defined(_COMPILER_VERSION) || _COMPILER_VERSION < 700
20298 -# define GC_test_and_set(addr) test_and_set(addr, 1)
20300 +# define GC_test_and_set(addr) _test_and_set(addr,1)
20302 +# define GC_test_and_set(addr) test_and_set(addr,1)
20305 # define GC_test_and_set(addr) __test_and_set(addr,1)
20306 # define GC_clear(addr) __lock_release(addr);
20307 @@ -279,7 +295,7 @@
20310 # if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
20311 - && !defined(GC_IRIX_THREADS)
20312 + && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS)
20313 # define NO_THREAD (pthread_t)(-1)
20314 # include <pthread.h>
20315 # if defined(PARALLEL_MARK)
20316 @@ -310,12 +326,12 @@
20319 __asm__ __volatile__("lock; cmpxchgl %2, %0; setz %1"
20320 - : "=m"(*(addr)), "=r"(result)
20321 - : "r" (new_val), "0"(*(addr)), "a"(old) : "memory");
20322 + : "+m"(*(addr)), "=r"(result)
20323 + : "r" (new_val), "a"(old) : "memory");
20324 return (GC_bool) result;
20326 # endif /* !GENERIC_COMPARE_AND_SWAP */
20327 - inline static void GC_memory_write_barrier()
20328 + inline static void GC_memory_barrier()
20330 /* We believe the processor ensures at least processor */
20331 /* consistent ordering. Thus a compiler barrier */
20332 @@ -323,6 +339,37 @@
20333 __asm__ __volatile__("" : : : "memory");
20337 +# if defined(POWERPC)
20338 +# if !defined(GENERIC_COMPARE_AND_SWAP)
20339 + /* Returns TRUE if the comparison succeeded. */
20340 + inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr,
20341 + GC_word old, GC_word new_val)
20343 + int result, dummy;
20344 + __asm__ __volatile__(
20345 + "1:\tlwarx %0,0,%5\n"
20348 + "\tstwcx. %3,0,%2\n"
20355 + : "=&r" (dummy), "=r" (result), "=p" (addr)
20356 + : "r" (new_val), "r" (old), "2"(addr)
20357 + : "cr0","memory");
20358 + return (GC_bool) result;
20360 +# endif /* !GENERIC_COMPARE_AND_SWAP */
20361 + inline static void GC_memory_barrier()
20363 + __asm__ __volatile__("sync" : : : "memory");
20365 +# endif /* POWERPC */
20368 # if !defined(GENERIC_COMPARE_AND_SWAP)
20369 inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr,
20370 @@ -337,12 +384,52 @@
20371 # endif /* !GENERIC_COMPARE_AND_SWAP */
20373 /* Shouldn't be needed; we use volatile stores instead. */
20374 - inline static void GC_memory_write_barrier()
20375 + inline static void GC_memory_barrier()
20377 __asm__ __volatile__("mf" : : : "memory");
20381 +# if defined(ALPHA)
20382 +# if !defined(GENERIC_COMPARE_AND_SWAP)
20383 +# if defined(__GNUC__)
20384 + inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr,
20385 + GC_word old, GC_word new_val)
20387 + unsigned long was_equal;
20388 + unsigned long temp;
20390 + __asm__ __volatile__(
20391 + "1: ldq_l %0,%1\n"
20392 + " cmpeq %0,%4,%2\n"
20399 + :"=&r" (temp), "=m" (*addr), "=&r" (was_equal)
20400 + : "r" (new_val), "Ir" (old)
20402 + return was_equal;
20404 +# else /* !__GNUC__ */
20405 + inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr,
20406 + GC_word old, GC_word new_val)
20408 + return __CMP_STORE_QUAD(addr, old, new_val, addr);
20410 +# endif /* !__GNUC__ */
20411 +# endif /* !GENERIC_COMPARE_AND_SWAP */
20413 + inline static void GC_memory_barrier()
20415 + __asm__ __volatile__("mb" : : : "memory");
20418 +# define GC_memory_barrier() asm("mb")
20419 +# endif /* !__GNUC__ */
20420 +# endif /* ALPHA */
20422 # if !defined(GENERIC_COMPARE_AND_SWAP)
20423 inline static GC_bool GC_compare_and_exchange(volatile C_word *addr,
20424 @@ -434,8 +521,12 @@
20425 { GC_ASSERT(I_HOLD_LOCK()); UNSET_LOCK_HOLDER(); \
20426 pthread_mutex_unlock(&GC_allocate_ml); }
20427 # else /* !GC_ASSERTIONS */
20428 +# if defined(NO_PTHREAD_TRYLOCK)
20429 +# define LOCK() GC_lock();
20430 +# else /* !defined(NO_PTHREAD_TRYLOCK) */
20432 { if (0 != pthread_mutex_trylock(&GC_allocate_ml)) GC_lock(); }
20434 # define UNLOCK() pthread_mutex_unlock(&GC_allocate_ml)
20435 # endif /* !GC_ASSERTIONS */
20436 # endif /* USE_PTHREAD_LOCKS */
20437 @@ -478,11 +569,18 @@
20439 # define EXIT_GC() GC_collecting = 0;
20440 # endif /* GC_IRIX_THREADS */
20441 -# ifdef GC_WIN32_THREADS
20442 +# if defined(GC_WIN32_THREADS)
20443 +# if defined(GC_PTHREADS)
20444 +# include <pthread.h>
20445 + extern pthread_mutex_t GC_allocate_ml;
20446 +# define LOCK() pthread_mutex_lock(&GC_allocate_ml)
20447 +# define UNLOCK() pthread_mutex_unlock(&GC_allocate_ml)
20449 # include <windows.h>
20450 GC_API CRITICAL_SECTION GC_allocate_ml;
20451 # define LOCK() EnterCriticalSection(&GC_allocate_ml);
20452 # define UNLOCK() LeaveCriticalSection(&GC_allocate_ml);
20455 # ifndef SET_LOCK_HOLDER
20456 # define SET_LOCK_HOLDER()
20457 diff -Nubr boehm-gc/include/private/gc_pmark.h ../boehm-gc/include/private/gc_pmark.h
20458 --- boehm-gc/include/private/gc_pmark.h Mon Feb 11 20:37:57 2002
20459 +++ ../boehm-gc/include/private/gc_pmark.h Mon May 26 13:28:24 2003
20460 @@ -137,7 +137,7 @@
20462 # ifdef PRINT_BLACK_LIST
20463 ptr_t GC_find_start(ptr_t current, hdr *hhdr, hdr **new_hdr_p,
20467 ptr_t GC_find_start(ptr_t current, hdr *hhdr, hdr **new_hdr_p);
20469 @@ -145,7 +145,7 @@
20470 ptr_t GC_find_start();
20473 -mse *GC_signal_mark_stack_overflow(mse *msp);
20474 +mse * GC_signal_mark_stack_overflow GC_PROTO((mse *msp));
20476 # ifdef GATHERSTATS
20477 # define ADD_TO_ATOMIC(sz) GC_atomic_in_use += (sz)
20478 @@ -174,14 +174,6 @@
20482 -#ifdef PRINT_BLACK_LIST
20483 -# define GC_FIND_START(current, hhdr, new_hdr_p, source) \
20484 - GC_find_start(current, hhdr, new_hdr_p, source)
20486 -# define GC_FIND_START(current, hhdr, new_hdr_p, source) \
20487 - GC_find_start(current, hhdr, new_hdr_p)
20490 /* Push the contents of current onto the mark stack if it is a valid */
20491 /* ptr to a currently unmarked object. Mark it. */
20492 /* If we assumed a standard-conforming compiler, we could probably */
20493 @@ -195,8 +187,7 @@
20494 GET_HDR(my_current, my_hhdr); \
20495 if (IS_FORWARDING_ADDR_OR_NIL(my_hhdr)) { \
20496 hdr * new_hdr = GC_invalid_header; \
20497 - my_current = GC_FIND_START(my_current, my_hhdr, \
20498 - &new_hdr, (word)source); \
20499 + my_current = GC_find_start(my_current, my_hhdr, &new_hdr); \
20500 my_hhdr = new_hdr; \
20502 PUSH_CONTENTS_HDR(my_current, mark_stack_top, mark_stack_limit, \
20503 @@ -290,21 +281,39 @@
20506 * Push a single value onto mark stack. Mark from the object pointed to by p.
20507 + * Invoke FIXUP_POINTER(p) before any further processing.
20508 * P is considered valid even if it is an interior pointer.
20509 * Previously marked objects are not pushed. Hence we make progress even
20510 * if the mark stack overflows.
20513 +# if NEED_FIXUP_POINTER
20514 + /* Try both the raw version and the fixed up one. */
20515 # define GC_PUSH_ONE_STACK(p, source) \
20516 if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \
20517 && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \
20518 PUSH_ONE_CHECKED_STACK(p, source); \
20520 + FIXUP_POINTER(p); \
20521 + if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \
20522 + && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \
20523 + PUSH_ONE_CHECKED_STACK(p, source); \
20525 +# else /* !NEED_FIXUP_POINTER */
20526 +# define GC_PUSH_ONE_STACK(p, source) \
20527 + if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \
20528 + && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \
20529 + PUSH_ONE_CHECKED_STACK(p, source); \
20535 * As above, but interior pointer recognition as for
20536 * normal for heap pointers.
20538 # define GC_PUSH_ONE_HEAP(p,source) \
20539 + FIXUP_POINTER(p); \
20540 if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \
20541 && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \
20542 GC_mark_stack_top = GC_mark_and_push( \
20543 diff -Nubr boehm-gc/include/private/gc_priv.h ../boehm-gc/include/private/gc_priv.h
20544 --- boehm-gc/include/private/gc_priv.h Tue Mar 4 09:56:49 2003
20545 +++ ../boehm-gc/include/private/gc_priv.h Mon May 26 13:28:24 2003
20551 +# include <sys/types.h>
20552 +# include <sys/time.h>
20553 +# include <sys/resource.h>
20557 # include <sys/types.h>
20558 # include <sys/time.h>
20559 @@ -210,7 +216,6 @@
20560 # define ALIGN_DOUBLE
20564 /* ALIGN_DOUBLE requires MERGE_SIZES at present. */
20565 # if defined(ALIGN_DOUBLE) && !defined(MERGE_SIZES)
20566 # define MERGE_SIZES
20567 @@ -347,7 +352,8 @@
20568 # include <string.h>
20569 # define BCOPY_EXISTS
20571 -# if defined(MACOSX)
20572 +# if defined(DARWIN)
20573 +# include <string.h>
20574 # define BCOPY_EXISTS
20577 @@ -360,68 +366,6 @@
20578 # define BZERO(x,n) bzero((char *)(x),(int)(n))
20581 -/* HBLKSIZE aligned allocation. 0 is taken to mean failure */
20582 -/* space is assumed to be cleared. */
20583 -/* In the case os USE_MMAP, the argument must also be a */
20584 -/* physical page size. */
20585 -/* GET_MEM is currently not assumed to retrieve 0 filled space, */
20586 -/* though we should perhaps take advantage of the case in which */
20588 -struct hblk; /* See below. */
20590 - char * real_malloc();
20591 -# define GET_MEM(bytes) HBLKPTR(real_malloc((size_t)bytes + GC_page_size) \
20592 - + GC_page_size-1)
20595 - void * os2_alloc(size_t bytes);
20596 -# define GET_MEM(bytes) HBLKPTR((ptr_t)os2_alloc((size_t)bytes \
20597 - + GC_page_size) \
20598 - + GC_page_size-1)
20600 -# if defined(NEXT) || defined(MACOSX) || defined(DOS4GW) || \
20601 - (defined(AMIGA) && !defined(GC_AMIGA_FASTALLOC)) || \
20602 - (defined(SUNOS5) && !defined(USE_MMAP))
20603 -# define GET_MEM(bytes) HBLKPTR((size_t) \
20604 - calloc(1, (size_t)bytes + GC_page_size) \
20605 - + GC_page_size-1)
20608 - extern ptr_t GC_win32_get_mem();
20609 -# define GET_MEM(bytes) (struct hblk *)GC_win32_get_mem(bytes)
20612 -# if defined(USE_TEMPORARY_MEMORY)
20613 - extern Ptr GC_MacTemporaryNewPtr(size_t size,
20614 - Boolean clearMemory);
20615 -# define GET_MEM(bytes) HBLKPTR( \
20616 - GC_MacTemporaryNewPtr(bytes + GC_page_size, true) \
20617 - + GC_page_size-1)
20619 -# define GET_MEM(bytes) HBLKPTR( \
20620 - NewPtrClear(bytes + GC_page_size) + GC_page_size-1)
20624 - extern ptr_t GC_wince_get_mem();
20625 -# define GET_MEM(bytes) (struct hblk *)GC_wince_get_mem(bytes)
20627 -# if defined(AMIGA) && defined(GC_AMIGA_FASTALLOC)
20628 - extern void *GC_amiga_get_mem(size_t size);
20629 - define GET_MEM(bytes) HBLKPTR((size_t) \
20630 - GC_amiga_get_mem((size_t)bytes + GC_page_size) \
20631 - + GC_page_size-1)
20633 - extern ptr_t GC_unix_get_mem();
20634 -# define GET_MEM(bytes) (struct hblk *)GC_unix_get_mem(bytes)
20643 /* Delay any interrupts or signals that may abort this thread. Data */
20644 /* structures are in a consistent state outside this pair of calls. */
20645 /* ANSI C allows both to be empty (though the standard isn't very */
20646 @@ -486,7 +430,7 @@
20647 # ifdef SMALL_CONFIG
20648 # define ABORT(msg) abort();
20650 - GC_API void GC_abort();
20651 + GC_API void GC_abort GC_PROTO((GC_CONST char * msg));
20652 # define ABORT(msg) GC_abort(msg);
20655 @@ -646,9 +590,10 @@
20658 # ifdef LARGE_CONFIG
20659 -# define LOG_PHT_ENTRIES 19 /* Collisions likely at 512K blocks, */
20660 - /* which is >= 2GB. Each table takes */
20662 +# define LOG_PHT_ENTRIES 20 /* Collisions likely at 1M blocks, */
20663 + /* which is >= 4GB. Each table takes */
20664 + /* 128KB, some of which may never be */
20667 # ifdef SMALL_CONFIG
20668 # define LOG_PHT_ENTRIES 14 /* Collisions are likely if heap grows */
20669 @@ -656,7 +601,7 @@
20670 /* Each hash table occupies 2K bytes. */
20671 # else /* default "medium" configuration */
20672 # define LOG_PHT_ENTRIES 16 /* Collisions are likely if heap grows */
20673 - /* to more than 16K hblks >= 256MB. */
20674 + /* to more than 64K hblks >= 256MB. */
20675 /* Each hash table occupies 8K bytes. */
20678 @@ -897,6 +842,10 @@
20680 /* Number of explicitly deallocated words of memory */
20681 /* since last collection. */
20682 + word _finalizer_mem_freed;
20683 + /* Words of memory explicitly deallocated while */
20684 + /* finalizers were running. Used to approximate mem. */
20685 + /* explicitly deallocated by finalizers. */
20686 ptr_t _scratch_end_ptr;
20687 ptr_t _scratch_last_end_ptr;
20688 /* Used by headers.c, and can easily appear to point to */
20689 @@ -957,7 +906,7 @@
20690 /* OFFSET_TOO_BIG if the value j would be too */
20691 /* large to fit in the entry. (Note that the */
20692 /* size of these entries matters, both for */
20693 - /* space consumption and for cache utilization. */
20694 + /* space consumption and for cache utilization.) */
20695 # define OFFSET_TOO_BIG 0xfe
20696 # define OBJ_INVALID 0xff
20697 # define MAP_ENTRY(map, bytes) (map)[bytes]
20698 @@ -1067,6 +1016,7 @@
20699 # define GC_words_finalized GC_arrays._words_finalized
20700 # define GC_non_gc_bytes_at_gc GC_arrays._non_gc_bytes_at_gc
20701 # define GC_mem_freed GC_arrays._mem_freed
20702 +# define GC_finalizer_mem_freed GC_arrays._finalizer_mem_freed
20703 # define GC_scratch_end_ptr GC_arrays._scratch_end_ptr
20704 # define GC_scratch_last_end_ptr GC_arrays._scratch_last_end_ptr
20705 # define GC_mark_procs GC_arrays._mark_procs
20706 @@ -1201,17 +1151,19 @@
20707 /* header structure associated with */
20710 -extern GC_bool GC_is_initialized; /* GC_init() has been run. */
20712 extern GC_bool GC_objects_are_marked; /* There are marked objects in */
20715 #ifndef SMALL_CONFIG
20716 extern GC_bool GC_incremental;
20717 /* Using incremental/generational collection. */
20718 +# define TRUE_INCREMENTAL \
20719 + (GC_incremental && GC_time_limit != GC_TIME_UNLIMITED)
20720 + /* True incremental, not just generational, mode */
20722 # define GC_incremental FALSE
20723 /* Hopefully allow optimizer to remove some code. */
20724 +# define TRUE_INCREMENTAL FALSE
20727 extern GC_bool GC_dirty_maintained;
20728 @@ -1229,6 +1181,10 @@
20729 extern long GC_large_alloc_warn_suppressed;
20730 /* Number of warnings suppressed so far. */
20733 + extern GC_bool GC_world_stopped;
20738 # define abs(x) ((x) < 0? (-(x)) : (x))
20739 @@ -1452,6 +1408,7 @@
20740 /* Set all mark bits associated with */
20742 void GC_add_roots_inner GC_PROTO((char * b, char * e, GC_bool tmp));
20743 +void GC_remove_roots_inner GC_PROTO((char * b, char * e));
20744 GC_bool GC_is_static_root GC_PROTO((ptr_t p));
20745 /* Is the address p in one of the registered static */
20746 /* root sections? */
20747 @@ -1624,6 +1581,8 @@
20748 /* until the blocks are available or */
20749 /* until it fails by returning FALSE. */
20751 +extern GC_bool GC_is_initialized; /* GC_init() has been run. */
20753 #if defined(MSWIN32) || defined(MSWINCE)
20754 void GC_deinit GC_PROTO((void));
20755 /* Free any resources allocated by */
20756 @@ -1666,6 +1625,8 @@
20757 /* free list nonempty, and return its */
20760 +void GC_free_inner(GC_PTR p);
20762 void GC_init_headers GC_PROTO((void));
20763 struct hblkhdr * GC_install_header GC_PROTO((struct hblk *h));
20764 /* Install a header for block h. */
20765 @@ -1695,6 +1656,12 @@
20766 /* finalizers to be run, and we haven't called */
20767 /* this procedure yet this GC cycle. */
20769 +GC_API GC_PTR GC_make_closure GC_PROTO((GC_finalization_proc fn, GC_PTR data));
20770 +GC_API void GC_debug_invoke_finalizer GC_PROTO((GC_PTR obj, GC_PTR data));
20771 + /* Auxiliary fns to make finalization work */
20772 + /* correctly with displaced pointers introduced */
20773 + /* by the debugging allocators. */
20775 void GC_add_to_heap GC_PROTO((struct hblk *p, word bytes));
20776 /* Add a HBLKSIZE aligned chunk to the heap. */
20778 @@ -1704,16 +1671,36 @@
20779 /* description of the object to stderr. */
20780 extern void (*GC_check_heap) GC_PROTO((void));
20781 /* Check that all objects in the heap with */
20782 - /* debugging info are intact. Print */
20783 - /* descriptions of any that are not. */
20784 + /* debugging info are intact. */
20785 + /* Add any that are not to GC_smashed list. */
20786 +extern void (*GC_print_all_smashed) GC_PROTO((void));
20787 + /* Print GC_smashed if it's not empty. */
20788 + /* Clear GC_smashed list. */
20789 +extern void GC_print_all_errors GC_PROTO((void));
20790 + /* Print smashed and leaked objects, if any. */
20791 + /* Clear the lists of such objects. */
20792 extern void (*GC_print_heap_obj) GC_PROTO((ptr_t p));
20793 /* If possible print s followed by a more */
20794 /* detailed description of the object */
20795 /* referred to by p. */
20796 +#if defined(LINUX) && defined(__ELF__) && !defined(SMALL_CONFIG)
20797 + void GC_print_address_map GC_PROTO((void));
20798 + /* Print an address map of the process. */
20801 +extern GC_bool GC_have_errors; /* We saw a smashed or leaked object. */
20802 + /* Call error printing routine */
20803 + /* occasionally. */
20804 extern GC_bool GC_print_stats; /* Produce at least some logging output */
20805 /* Set from environment variable. */
20807 +#ifndef NO_DEBUGGING
20808 + extern GC_bool GC_dump_regularly; /* Generate regular debugging dumps. */
20809 +# define COND_DUMP if (GC_dump_regularly) GC_dump();
20811 +# define COND_DUMP
20814 /* Macros used for collector internal allocation. */
20815 /* These assume the collector lock is held. */
20816 #ifdef DBG_HDRS_ALL
20817 @@ -1785,6 +1772,7 @@
20818 void GC_print_hblkfreelist GC_PROTO((void));
20819 void GC_print_heap_sects GC_PROTO((void));
20820 void GC_print_static_roots GC_PROTO((void));
20821 +void GC_print_finalization_stats GC_PROTO((void));
20822 void GC_dump GC_PROTO((void));
20824 #ifdef KEEP_BACK_PTRS
20825 @@ -1866,6 +1854,10 @@
20826 # define GC_ASSERT(expr)
20829 +/* Check a compile time assertion at compile time. The error */
20830 +/* message for failure is a bit baroque, but ... */
20831 +# define GC_STATIC_ASSERT(expr) sizeof(char[(expr)? 1 : -1])
20833 # if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
20834 /* We need additional synchronization facilities from the thread */
20835 /* support. We believe these are less performance critical */
20836 @@ -1911,7 +1903,7 @@
20837 /* in Linux glibc, but it's not exported.) Thus we continue to use */
20838 /* the same hard-coded signals we've always used. */
20839 # if !defined(SIG_SUSPEND)
20840 -# if defined(GC_LINUX_THREADS)
20841 +# if defined(GC_LINUX_THREADS) || defined(GC_DGUX386_THREADS)
20842 # if defined(SPARC) && !defined(SIGPWR)
20843 /* SPARC/Linux doesn't properly define SIGPWR in <signal.h>.
20844 * It is aliased to SIGLOST in asm/signal.h, though. */
20845 diff -Nubr boehm-gc/include/private/gcconfig.h ../boehm-gc/include/private/gcconfig.h
20846 --- boehm-gc/include/private/gcconfig.h Wed Apr 9 17:08:01 2003
20847 +++ ../boehm-gc/include/private/gcconfig.h Mon May 26 13:28:24 2003
20848 @@ -14,10 +14,24 @@
20849 * modified is included with the above copyright notice.
20853 + * This header is private to the gc. It is almost always included from
20854 + * gc_priv.h. However it is possible to include it by itself if just the
20855 + * configuration macros are needed. In that
20856 + * case, a few declarations relying on types declared in gc_priv.h will be
20862 # define GCCONFIG_H
20864 +# ifndef GC_PRIVATE_H
20865 + /* Fake ptr_t declaration, just to avoid compilation errors. */
20866 + /* This avoids many instances if "ifndef GC_PRIVATE_H" below. */
20867 + typedef struct GC_undefined_struct * ptr_t;
20870 /* Machine dependent parameters. Some tuning parameters can be found */
20871 /* near the top of gc_private.h. */
20876 /* Determine the machine type: */
20877 -# if defined(__arm__) || defined(__thumb__)
20878 +# if defined(__XSCALE__)
20880 # if !defined(LINUX)
20883 # if defined(nec_ews) || defined(_nec_ews)
20886 -# if !defined(LINUX) && !defined(EWS4800) && !defined(NETBSD)
20887 -# if defined(ultrix) || defined(__ultrix)
20888 +# if !defined(LINUX) && !defined(EWS4800)
20889 +# if defined(ultrix) || defined(__ultrix) || defined(__NetBSD__)
20892 # if defined(_SYSTYPE_SVR4) || defined(SYSTYPE_SVR4) \
20893 @@ -107,6 +121,16 @@
20896 # endif /* !LINUX */
20897 +# if defined(__NetBSD__) && defined(__MIPSEL__)
20900 +# define mach_type_known
20902 +# if defined(DGUX) && (defined(i386) || defined(__i386__))
20904 +# ifndef _USING_DGUX
20905 +# define _USING_DGUX
20907 # define mach_type_known
20909 # if defined(sequent) && (defined(i386) || defined(__i386__))
20910 @@ -198,6 +222,10 @@
20912 # define mach_type_known
20914 +# if defined(LINUX) && defined(__arm__)
20916 +# define mach_type_known
20918 # if defined(LINUX) && (defined(powerpc) || defined(__powerpc__))
20920 # define mach_type_known
20921 @@ -237,19 +265,19 @@
20923 # define mach_type_known
20925 -# if defined(__MWERKS__) && defined(__powerc)
20926 +# if defined(__MWERKS__) && defined(__powerc) && !defined(__MACH__)
20929 # define mach_type_known
20931 # if defined(macosx) || \
20932 defined(__APPLE__) && defined(__MACH__) && defined(__ppc__)
20936 # define mach_type_known
20938 # if defined(__APPLE__) && defined(__MACH__) && defined(__i386__)
20942 --> Not really supported, but at least we recognize it.
20944 @@ -291,7 +319,7 @@
20946 # define mach_type_known
20948 -# if defined(DGUX)
20949 +# if defined(DGUX) && defined(m88k)
20952 # define mach_type_known
20953 @@ -425,8 +453,6 @@
20954 /* IA64 ==> Intel IPF */
20955 /* (e.g. Itanium) */
20956 /* (LINUX and HPUX) */
20957 - /* IA64_32 ==> IA64 w/32 bit ABI */
20959 /* SH ==> Hitachi SuperH */
20960 /* (LINUX & MSWINCE) */
20961 /* X86_64 ==> AMD x86-64 */
20962 @@ -450,15 +476,17 @@
20963 * defining it to be 1 will always work, but perform poorly.
20965 * DATASTART is the beginning of the data segment.
20966 - * On UNIX systems, the collector will scan the area between DATASTART
20967 + * On some platforms SEARCH_FOR_DATA_START is defined.
20968 + * SEARCH_FOR_DATASTART will cause GC_data_start to
20969 + * be set to an address determined by accessing data backwards from _end
20970 + * until an unmapped page is found. DATASTART will be defined to be
20972 + * On UNIX-like systems, the collector will scan the area between DATASTART
20973 * and DATAEND for root pointers.
20975 * DATAEND, if not `end' where `end' is defined as ``extern int end[];''.
20976 * RTH suggests gaining access to linker script synth'd values with
20977 * this idiom instead of `&end' where `end' is defined as ``extern int end;'' .
20978 - * Otherwise, ``GCC will assume these are in .sdata/.sbss'' and it will, e.g.,
20979 - * cause failures on alpha*-*-* with ``-msmall-data or -fpic'' or mips-*-*
20980 - * without any special options.
20982 * ALIGN_DOUBLE of GC_malloc should return blocks aligned to twice
20983 * the pointer size.
20984 @@ -470,8 +498,13 @@
20985 * 1) define STACK_GROWS_UP if the stack grows toward higher addresses, and
20986 * 2) define exactly one of
20987 * STACKBOTTOM (should be defined to be an expression)
20988 + * LINUX_STACKBOTTOM
20991 + * If STACKBOTTOM is defined, then it's value will be used directly as the
20992 + * stack base. If LINUX_STACKBOTTOM is defined, then it will be determined
20993 + * with a method appropriate for most Linux systems. Currently we look
20994 + * first for __libc_stack_end, and if that fails read it from /proc.
20995 * If either of the last two macros are defined, then STACKBOTTOM is computed
20996 * during collector startup using one of the following two heuristics:
20997 * HEURISTIC1: Take an address inside GC_init's frame, and round it up to
20998 @@ -536,6 +569,9 @@
20999 * An architecture may also define CLEAR_DOUBLE(x) to be a fast way to
21000 * clear the two words at GC_malloc-aligned address x. By default,
21001 * word stores of 0 are used instead.
21003 + * HEAP_START may be defined as the initial address hint for mmap-based
21007 /* If we are using a recent version of gcc, we can use __builtin_unwind_init()
21008 @@ -571,7 +607,7 @@
21009 # define DYNAMIC_LOADING
21010 # include <features.h>
21011 # if defined(__GLIBC__)&& __GLIBC__>=2
21012 -# define LINUX_DATA_START
21013 +# define SEARCH_FOR_DATA_START
21014 # else /* !GLIBC2 */
21015 extern char **__environ;
21016 # define DATASTART ((ptr_t)(&__environ))
21017 @@ -669,23 +705,42 @@
21018 # define ALIGNMENT 4 /* Guess. Can someone verify? */
21019 /* This was 2, but that didn't sound right. */
21020 # define OS_TYPE "LINUX"
21021 -# define DYNAMIC_LOADING
21022 + /* HEURISTIC1 has been reliably reported to fail for a 32-bit */
21023 + /* executable on a 64 bit kernel. */
21024 # define LINUX_STACKBOTTOM
21025 - /* Stack usually starts at 0x80000000 */
21026 -# define LINUX_DATA_START
21027 +# define DYNAMIC_LOADING
21028 +# define SEARCH_FOR_DATA_START
21030 # define DATAEND (_end)
21034 /* There are reasons to suspect this may not be reliable. */
21035 # define ALIGNMENT 4
21036 -# define OS_TYPE "MACOSX"
21037 +# define OS_TYPE "DARWIN"
21038 +# define DYNAMIC_LOADING
21039 + /* XXX: see get_end(3), get_etext() and get_end() should not be used.
21040 + These aren't used when dyld support is enabled (it is by default) */
21041 # define DATASTART ((ptr_t) get_etext())
21042 +# define DATAEND ((ptr_t) get_end())
21043 # define STACKBOTTOM ((ptr_t) 0xc0000000)
21044 -# define DATAEND /* not needed */
21045 -# undef MPROTECT_VDB
21047 +# define USE_MMAP_ANON
21048 +# define USE_ASM_PUSH_REGS
21049 + /* This is potentially buggy. It needs more testing. See the comments in
21051 +# define MPROTECT_VDB
21052 # include <unistd.h>
21053 # define GETPAGESIZE() getpagesize()
21054 +# if defined(USE_PPC_PREFETCH) && defined(__GNUC__)
21055 + /* The performance impact of prefetches is untested */
21056 +# define PREFETCH(x) \
21057 + __asm__ __volatile__ ("dcbt 0,%0" : : "r" ((const void *) (x)))
21058 +# define PREFETCH_FOR_WRITE(x) \
21059 + __asm__ __volatile__ ("dcbtst 0,%0" : : "r" ((const void *) (x)))
21061 + /* There seems to be some issues with trylock hanging on darwin. This
21062 + should be looked into some more */
21063 +# define NO_PTHREAD_TRYLOCK
21066 # define ALIGNMENT 4
21067 @@ -746,8 +801,8 @@
21068 # define OS_TYPE "SUNOS5"
21069 extern int _etext[];
21071 - extern char * GC_SysVGetDataStart();
21072 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, _etext)
21073 + extern ptr_t GC_SysVGetDataStart();
21074 +# define DATASTART GC_SysVGetDataStart(0x10000, _etext)
21075 # define DATAEND (_end)
21076 # if !defined(USE_MMAP) && defined(REDIRECT_MALLOC)
21078 @@ -801,9 +856,9 @@
21081 # define OS_TYPE "DRSNX"
21082 - extern char * GC_SysVGetDataStart();
21083 + extern ptr_t GC_SysVGetDataStart();
21084 extern int etext[];
21085 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, etext)
21086 +# define DATASTART GC_SysVGetDataStart(0x10000, etext)
21087 # define MPROTECT_VDB
21088 # define STACKBOTTOM ((ptr_t) 0xdfff0000)
21089 # define DYNAMIC_LOADING
21090 @@ -819,13 +874,14 @@
21091 extern int _etext[];
21092 # define DATAEND (_end)
21094 + extern ptr_t GC_SysVGetDataStart();
21096 +# define DATASTART GC_SysVGetDataStart(0x100000, _etext)
21097 /* libc_stack_end is not set reliably for sparc64 */
21098 -# define STACKBOTTOM ((ptr_t) 0x80000000000)
21099 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x100000, _etext)
21100 +# define STACKBOTTOM ((ptr_t) 0x80000000000ULL)
21102 +# define DATASTART GC_SysVGetDataStart(0x10000, _etext)
21103 # define LINUX_STACKBOTTOM
21104 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, _etext)
21108 @@ -876,7 +932,7 @@
21110 # define OS_TYPE "SUNOS5"
21111 extern int _etext[], _end[];
21112 - extern char * GC_SysVGetDataStart();
21113 + extern ptr_t GC_SysVGetDataStart();
21114 # define DATASTART GC_SysVGetDataStart(0x1000, _etext)
21115 # define DATAEND (_end)
21116 /* # define STACKBOTTOM ((ptr_t)(_start)) worked through 2.7, */
21117 @@ -921,6 +977,28 @@
21118 # define DYNAMIC_LOADING
21119 # define ELF_CLASS ELFCLASS32
21122 +# define OS_TYPE "DGUX"
21123 + extern int _etext, _end;
21124 + extern ptr_t GC_SysVGetDataStart();
21125 +# define DATASTART GC_SysVGetDataStart(0x1000, &_etext)
21126 +# define DATAEND (&_end)
21127 +# define STACK_GROWS_DOWN
21128 +# define HEURISTIC2
21129 +# include <unistd.h>
21130 +# define GETPAGESIZE() sysconf(_SC_PAGESIZE)
21131 +# define DYNAMIC_LOADING
21134 +# endif /* USE_MMAP */
21135 +# define MAP_FAILED (void *) -1
21137 +# define HEAP_START (ptr_t)0x40000000
21138 +# else /* USE_MMAP */
21139 +# define HEAP_START DATAEND
21140 +# endif /* USE_MMAP */
21141 +# endif /* DGUX */
21145 /* The Intel compiler doesn't like inline assembly */
21146 @@ -944,6 +1022,9 @@
21147 /* possibly because Linux threads is itself a malloc client */
21148 /* and can't deal with the signals. */
21150 +# define HEAP_START 0x1000
21151 + /* This encourages mmap to give us low addresses, */
21152 + /* thus allowing the heap to grow to ~3GB */
21154 # define DYNAMIC_LOADING
21155 # ifdef UNDEFINED /* includes ro data */
21156 @@ -952,7 +1033,7 @@
21158 # include <features.h>
21159 # if defined(__GLIBC__) && __GLIBC__ >= 2
21160 -# define LINUX_DATA_START
21161 +# define SEARCH_FOR_DATA_START
21163 extern char **__environ;
21164 # define DATASTART ((ptr_t)(&__environ))
21165 @@ -1061,16 +1142,9 @@
21167 # define DYNAMIC_LOADING
21169 -/* Handle unmapped hole i386*-*-freebsd[45]* may put between etext and edata. */
21170 extern char etext[];
21171 - extern char edata[];
21172 - extern char end[];
21173 -# define NEED_FIND_LIMIT
21174 -# define DATASTART ((ptr_t)(etext))
21175 -# define MIN(x,y) ((x) < (y) ? (x) : (y))
21176 -# define DATAEND (MIN (GC_find_limit (DATASTART, TRUE), DATASTART2))
21177 -# define DATASTART2 ((ptr_t)(edata))
21178 -# define DATAEND2 ((ptr_t)(end))
21179 + extern char * GC_FreeBSDGetDataStart();
21180 +# define DATASTART GC_FreeBSDGetDataStart(0x1000, &etext)
21183 # define OS_TYPE "NETBSD"
21184 @@ -1149,7 +1223,11 @@
21185 # define DATASTART ((ptr_t)(__data_start))
21186 # define ALIGNMENT 4
21187 # define USE_GENERIC_PUSH_REGS
21188 +# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2 || __GLIBC__ > 2
21189 # define LINUX_STACKBOTTOM
21191 +# define STACKBOTTOM 0x80000000
21193 # endif /* Linux */
21195 # define HEURISTIC2
21196 @@ -1222,15 +1300,21 @@
21197 # define DATAEND /* not needed */
21199 # if defined(NETBSD)
21200 -# define OS_TYPE "NETBSD"
21201 + /* This also checked for __MIPSEL__ . Why? NETBSD recognition */
21202 + /* should be handled at the top of the file. */
21203 # define ALIGNMENT 4
21204 +# define OS_TYPE "NETBSD"
21205 # define HEURISTIC2
21206 # define USE_GENERIC_PUSH_REGS
21207 - extern int _fdata[];
21208 -# define DATASTART ((ptr_t)(_fdata))
21209 - extern int _end[];
21210 -# define DATAEND ((ptr_t)(_end))
21212 + extern int etext[];
21213 +# define DATASTART GC_data_start
21214 +# define NEED_FIND_LIMIT
21215 # define DYNAMIC_LOADING
21217 +# define DATASTART ((ptr_t) 0x10000000)
21218 +# define STACKBOTTOM ((ptr_t) 0x7ffff000)
21219 +# endif /* _ELF_ */
21223 @@ -1239,15 +1323,16 @@
21225 # define ALIGNMENT 8
21226 # define CPP_WORDSZ 64
21227 +# define STACKBOTTOM 0x1000000000000000
21229 # define ALIGNMENT 4
21230 # define CPP_WORDSZ 32
21231 +# define STACKBOTTOM ((ptr_t)((ulong)&errno))
21233 extern int _data[], _end[];
21234 # define DATASTART ((ptr_t)((ulong)_data))
21235 # define DATAEND ((ptr_t)((ulong)_end))
21237 -# define STACKBOTTOM ((ptr_t)((ulong)&errno))
21238 # define USE_GENERIC_PUSH_REGS
21239 # define DYNAMIC_LOADING
21240 /* For really old versions of AIX, this may have to be removed. */
21241 @@ -1311,15 +1396,23 @@
21242 # define OS_TYPE "LINUX"
21243 # define LINUX_STACKBOTTOM
21244 # define DYNAMIC_LOADING
21245 -# define LINUX_DATA_START
21246 +# define SEARCH_FOR_DATA_START
21248 -# define DATAEND (_end)
21249 +# define DATAEND (&_end)
21250 # endif /* LINUX */
21251 # endif /* HP_PA */
21254 # define MACH_TYPE "ALPHA"
21255 # define ALIGNMENT 8
21256 +# define CPP_WORDSZ 64
21258 +# define USE_GENERIC_PUSH_REGS
21259 + /* Gcc and probably the DEC/Compaq compiler spill pointers to preserved */
21260 + /* fp registers in some cases when the target is a 21264. The assembly */
21261 + /* code doesn't handle that yet, and version dependencies make that a */
21262 + /* bit tricky. Do the easy thing for now. */
21265 # define OS_TYPE "NETBSD"
21266 # define HEURISTIC2
21267 @@ -1327,13 +1420,11 @@
21268 # define ELFCLASS32 32
21269 # define ELFCLASS64 64
21270 # define ELF_CLASS ELFCLASS64
21271 -# define CPP_WORDSZ 64
21272 # define DYNAMIC_LOADING
21275 # define OS_TYPE "OPENBSD"
21276 # define HEURISTIC2
21277 -# define CPP_WORDSZ 64
21278 # ifdef __ELF__ /* since OpenBSD/Alpha 2.9 */
21279 # define DATASTART GC_data_start
21280 # define ELFCLASS32 32
21281 @@ -1357,17 +1448,16 @@
21282 extern char edata[];
21284 # define NEED_FIND_LIMIT
21285 -# define DATASTART ((ptr_t)(etext))
21286 +# define DATASTART ((ptr_t)(&etext))
21287 # define DATAEND (GC_find_limit (DATASTART, TRUE))
21288 -# define DATASTART2 ((ptr_t)(edata))
21289 -# define DATAEND2 ((ptr_t)(end))
21290 -# define CPP_WORDSZ 64
21291 +# define DATASTART2 ((ptr_t)(&edata))
21292 +# define DATAEND2 ((ptr_t)(&end))
21295 # define OS_TYPE "OSF1"
21296 # define DATASTART ((ptr_t) 0x140000000)
21298 -# define DATAEND ((ptr_t) _end)
21299 +# define DATAEND ((ptr_t) &_end)
21300 extern char ** environ;
21301 /* round up from the value of environ to the nearest page boundary */
21302 /* Probably breaks if putenv is called before collector */
21303 @@ -1380,17 +1470,17 @@
21304 /* This is currently unused, since we disabled HEURISTIC2 */
21305 extern int __start[];
21306 # define HEURISTIC2_LIMIT ((ptr_t)((word)(__start) & ~(getpagesize()-1)))
21307 -# define CPP_WORDSZ 64
21308 +# ifndef GC_OSF1_THREADS
21309 + /* Unresolved signal issues with threads. */
21310 # define MPROTECT_VDB
21312 # define DYNAMIC_LOADING
21315 # define OS_TYPE "LINUX"
21316 -# define CPP_WORDSZ 64
21317 # define STACKBOTTOM ((ptr_t) 0x120000000)
21319 # define SEARCH_FOR_DATA_START
21320 -# define DATASTART GC_data_start
21321 # define DYNAMIC_LOADING
21323 # define DATASTART ((ptr_t) 0x140000000)
21324 @@ -1468,7 +1558,6 @@
21325 extern char * GC_register_stackbottom;
21326 # define BACKING_STORE_BASE ((ptr_t)GC_register_stackbottom)
21327 # define SEARCH_FOR_DATA_START
21328 -# define DATASTART GC_data_start
21330 # define DYNAMIC_LOADING
21332 @@ -1502,13 +1591,15 @@
21335 # define OS_TYPE "DGUX"
21336 - extern char * GC_SysVGetDataStart();
21337 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, etext)
21338 + extern ptr_t GC_SysVGetDataStart();
21339 +# define DATASTART GC_SysVGetDataStart(0x10000, etext)
21341 # define STACKBOTTOM ((char*)0xf0000000) /* determined empirically */
21345 + /* If this still works, and if anyone cares, this should probably */
21346 + /* be moved to the S390 category. */
21347 # define MACH_TYPE "S370"
21348 # define ALIGNMENT 4 /* Required by hardware */
21349 # define USE_GENERIC_PUSH_REGS
21350 @@ -1517,8 +1608,8 @@
21351 extern int etext[];
21352 extern int _etext[];
21354 - extern char * GC_SysVGetDataStart();
21355 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, _etext)
21356 + extern ptr_t GC_SysVGetDataStart();
21357 +# define DATASTART GC_SysVGetDataStart(0x10000, _etext)
21358 # define DATAEND (_end)
21359 # define HEURISTIC2
21361 @@ -1576,7 +1667,7 @@
21362 # define DYNAMIC_LOADING
21363 # include <features.h>
21364 # if defined(__GLIBC__) && __GLIBC__ >= 2
21365 -# define LINUX_DATA_START
21366 +# define SEARCH_FOR_DATA_START
21368 extern char **__environ;
21369 # define DATASTART ((ptr_t)(&__environ))
21370 @@ -1623,7 +1714,7 @@
21371 # define STACKBOTTOM ((ptr_t) 0x7c000000)
21372 # define USE_GENERIC_PUSH_REGS
21373 # define DYNAMIC_LOADING
21374 -# define LINUX_DATA_START
21375 +# define SEARCH_FOR_DATA_START
21377 # define DATAEND (_end)
21379 @@ -1640,7 +1731,9 @@
21380 # define MACH_TYPE "X86_64"
21381 # define ALIGNMENT 8
21382 # define CPP_WORDSZ 64
21384 # define HBLKSIZE 4096
21386 # define CACHE_LINE_SIZE 64
21387 # define USE_GENERIC_PUSH_REGS
21389 @@ -1660,7 +1753,7 @@
21390 # define DATASTART ((ptr_t)((((word) (_etext)) + 0xfff) & ~0xfff))
21392 # include <features.h>
21393 -# define LINUX_DATA_START
21394 +# define SEARCH_FOR_DATA_START
21396 # define DATAEND (_end)
21398 @@ -1674,19 +1767,6 @@
21402 -#ifdef LINUX_DATA_START
21403 - /* Some Linux distributions arrange to define __data_start. Some */
21404 - /* define data_start as a weak symbol. The latter is technically */
21405 - /* broken, since the user program may define data_start, in which */
21406 - /* case we lose. Nonetheless, we try both, prefering __data_start. */
21407 - /* We assume gcc. */
21408 -# pragma weak __data_start
21409 - extern int __data_start[];
21410 -# pragma weak data_start
21411 - extern int data_start[];
21412 -# define DATASTART ((ptr_t)(__data_start != 0? __data_start : data_start))
21415 #if defined(LINUX) && defined(REDIRECT_MALLOC)
21416 /* Rld appears to allocate some memory with its own allocator, and */
21417 /* some through malloc, which might be redirected. To make this */
21418 @@ -1742,8 +1822,8 @@
21421 # if defined(SVR4) || defined(LINUX) || defined(IRIX) || defined(HPUX) \
21422 - || defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) \
21423 - || defined(BSD) || defined(_AIX) || defined(MACOSX) || defined(OSF1)
21424 + || defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) || defined(DGUX) \
21425 + || defined(BSD) || defined(AIX) || defined(DARWIN) || defined(OSF1)
21426 # define UNIX_LIKE /* Basic Unix-like system calls work. */
21429 @@ -1762,13 +1842,13 @@
21433 -/* Postponed for now. */
21434 + /* Postponed for now. */
21436 # undef MPROTECT_VDB
21439 # ifdef SMALL_CONFIG
21440 -/* Presumably not worth the space it takes. */
21441 + /* Presumably not worth the space it takes. */
21443 # undef MPROTECT_VDB
21445 @@ -1808,8 +1888,9 @@
21446 /* platforms as well, though it should be avoided in win32. */
21447 # endif /* LINUX */
21449 -# if defined(SEARCH_FOR_DATA_START) && defined(GC_PRIVATE_H)
21450 +# if defined(SEARCH_FOR_DATA_START)
21451 extern ptr_t GC_data_start;
21452 +# define DATASTART GC_data_start
21455 # ifndef CLEAR_DOUBLE
21456 @@ -1818,28 +1899,25 @@
21458 # endif /* CLEAR_DOUBLE */
21460 -/* Internally we use GC_SOLARIS_THREADS to test for either old or pthreads. */
21461 + /* Internally we use GC_SOLARIS_THREADS to test for either old or pthreads. */
21462 # if defined(GC_SOLARIS_PTHREADS) && !defined(GC_SOLARIS_THREADS)
21463 # define GC_SOLARIS_THREADS
21466 # if defined(GC_IRIX_THREADS) && !defined(IRIX5)
21467 ---> inconsistent configuration
21468 + --> inconsistent configuration
21470 # if defined(GC_LINUX_THREADS) && !defined(LINUX)
21471 ---> inconsistent configuration
21472 + --> inconsistent configuration
21474 # if defined(GC_SOLARIS_THREADS) && !defined(SUNOS5)
21475 ---> inconsistent configuration
21476 + --> inconsistent configuration
21478 # if defined(GC_HPUX_THREADS) && !defined(HPUX)
21479 ---> inconsistent configuration
21480 + --> inconsistent configuration
21482 -# if defined(GC_WIN32_THREADS) && !defined(MSWIN32)
21483 - /* Ideally CYGWIN32 should work, in addition to MSWIN32. I suspect */
21484 - /* the necessary code is mostly there, but nobody has actually made */
21485 - /* sure the right combination of pieces is compiled in, etc. */
21486 ---> inconsistent configuration
21487 +# if defined(GC_WIN32_THREADS) && !defined(MSWIN32) && !defined(CYGWIN32)
21488 + --> inconsistent configuration
21491 # if defined(PCR) || defined(SRC_M3) || \
21492 @@ -1848,8 +1926,8 @@
21496 -# if defined(HP_PA) || defined(M88K) || defined(POWERPC) && !defined(MACOSX) \
21497 - || defined(LINT) || defined(MSWINCE) \
21498 +# if defined(HP_PA) || defined(M88K) || defined(POWERPC) && !defined(DARWIN) \
21499 + || defined(LINT) || defined(MSWINCE) || defined(ARM32) \
21500 || (defined(I386) && defined(__LCC__))
21501 /* Use setjmp based hack to mark from callee-save registers. */
21502 /* The define should move to the individual platform */
21503 @@ -1862,36 +1940,26 @@
21504 /* include assembly code to do it well. */
21507 -/* Can we save call chain in objects for debugging? */
21508 -/* SET NFRAMES (# of saved frames) and NARGS (#of args for each frame) */
21509 -/* to reasonable values for the platform. */
21510 -/* Set SAVE_CALL_CHAIN if we can. SAVE_CALL_COUNT can be specified at */
21511 -/* build time, though we feel free to adjust it slightly. */
21512 -/* Define NEED_CALLINFO if we either save the call stack or */
21513 -/* GC_ADD_CALLER is defined. */
21515 -# include <features.h>
21516 -# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2
21517 -# define HAVE_BUILTIN_BACKTRACE
21520 + /* Can we save call chain in objects for debugging? */
21521 + /* SET NFRAMES (# of saved frames) and NARGS (#of args for each */
21522 + /* frame) to reasonable values for the platform. */
21523 + /* Set SAVE_CALL_CHAIN if we can. SAVE_CALL_COUNT can be specified */
21524 + /* at build time, though we feel free to adjust it slightly. */
21525 + /* Define NEED_CALLINFO if we either save the call stack or */
21526 + /* GC_ADD_CALLER is defined. */
21527 + /* GC_CAN_SAVE_CALL_STACKS is set in gc.h. */
21530 -# define CAN_SAVE_CALL_STACKS
21531 # define CAN_SAVE_CALL_ARGS
21533 #if (defined(I386) || defined(X86_64)) && defined(LINUX)
21534 /* SAVE_CALL_CHAIN is supported if the code is compiled to save */
21535 /* frame pointers by default, i.e. no -fomit-frame-pointer flag. */
21536 -# define CAN_SAVE_CALL_STACKS
21537 # define CAN_SAVE_CALL_ARGS
21539 -#if defined(HAVE_BUILTIN_BACKTRACE) && !defined(CAN_SAVE_CALL_STACKS)
21540 -# define CAN_SAVE_CALL_STACKS
21543 # if defined(SAVE_CALL_COUNT) && !defined(GC_ADD_CALLER) \
21544 - && defined(CAN_SAVE_CALL_STACKS)
21545 + && defined(GC_CAN_SAVE_CALL_STACKS)
21546 # define SAVE_CALL_CHAIN
21548 # ifdef SAVE_CALL_CHAIN
21549 @@ -1919,5 +1987,97 @@
21550 # if defined(MAKE_BACK_GRAPH) && !defined(DBG_HDRS_ALL)
21551 # define DBG_HDRS_ALL
21554 +# if defined(POINTER_MASK) && !defined(POINTER_SHIFT)
21555 +# define POINTER_SHIFT 0
21558 +# if defined(POINTER_SHIFT) && !defined(POINTER_MASK)
21559 +# define POINTER_MASK ((GC_word)(-1))
21562 +# if !defined(FIXUP_POINTER) && defined(POINTER_MASK)
21563 +# define FIXUP_POINTER(p) (p) = ((p) & (POINTER_MASK) << POINTER_SHIFT)
21566 +# if defined(FIXUP_POINTER)
21567 +# define NEED_FIXUP_POINTER 1
21569 +# define NEED_FIXUP_POINTER 0
21570 +# define FIXUP_POINTER(p)
21573 +#ifdef GC_PRIVATE_H
21574 + /* This relies on some type definitions from gc_priv.h, from */
21575 + /* where it's normally included. */
21577 + /* How to get heap memory from the OS: */
21578 + /* Note that sbrk()-like allocation is preferred, since it */
21579 + /* usually makes it possible to merge consecutively allocated */
21580 + /* chunks. It also avoids unintented recursion with */
21581 + /* -DREDIRECT_MALLOC. */
21582 + /* GET_MEM() returns a HLKSIZE aligned chunk. */
21583 + /* 0 is taken to mean failure. */
21584 + /* In the case os USE_MMAP, the argument must also be a */
21585 + /* physical page size. */
21586 + /* GET_MEM is currently not assumed to retrieve 0 filled space, */
21587 + /* though we should perhaps take advantage of the case in which */
21589 + struct hblk; /* See gc_priv.h. */
21591 + char * real_malloc();
21592 +# define GET_MEM(bytes) HBLKPTR(real_malloc((size_t)bytes + GC_page_size) \
21593 + + GC_page_size-1)
21596 + void * os2_alloc(size_t bytes);
21597 +# define GET_MEM(bytes) HBLKPTR((ptr_t)os2_alloc((size_t)bytes \
21598 + + GC_page_size) \
21599 + + GC_page_size-1)
21601 +# if defined(NEXT) || defined(DOS4GW) || \
21602 + (defined(AMIGA) && !defined(GC_AMIGA_FASTALLOC)) || \
21603 + (defined(SUNOS5) && !defined(USE_MMAP))
21604 +# define GET_MEM(bytes) HBLKPTR((size_t) \
21605 + calloc(1, (size_t)bytes + GC_page_size) \
21606 + + GC_page_size-1)
21609 + extern ptr_t GC_win32_get_mem();
21610 +# define GET_MEM(bytes) (struct hblk *)GC_win32_get_mem(bytes)
21613 +# if defined(USE_TEMPORARY_MEMORY)
21614 + extern Ptr GC_MacTemporaryNewPtr(size_t size,
21615 + Boolean clearMemory);
21616 +# define GET_MEM(bytes) HBLKPTR( \
21617 + GC_MacTemporaryNewPtr(bytes + GC_page_size, true) \
21618 + + GC_page_size-1)
21620 +# define GET_MEM(bytes) HBLKPTR( \
21621 + NewPtrClear(bytes + GC_page_size) + GC_page_size-1)
21625 + extern ptr_t GC_wince_get_mem();
21626 +# define GET_MEM(bytes) (struct hblk *)GC_wince_get_mem(bytes)
21628 +# if defined(AMIGA) && defined(GC_AMIGA_FASTALLOC)
21629 + extern void *GC_amiga_get_mem(size_t size);
21630 + define GET_MEM(bytes) HBLKPTR((size_t) \
21631 + GC_amiga_get_mem((size_t)bytes + GC_page_size) \
21632 + + GC_page_size-1)
21634 + extern ptr_t GC_unix_get_mem();
21635 +# define GET_MEM(bytes) (struct hblk *)GC_unix_get_mem(bytes)
21644 +#endif /* GC_PRIVATE_H */
21646 # endif /* GCCONFIG_H */
21647 diff -Nubr boehm-gc/include/private/pthread_stop_world.h ../boehm-gc/include/private/pthread_stop_world.h
21648 --- boehm-gc/include/private/pthread_stop_world.h Wed Dec 31 16:00:00 1969
21649 +++ ../boehm-gc/include/private/pthread_stop_world.h Mon May 26 13:28:24 2003
21651 +#ifndef GC_PTHREAD_STOP_WORLD_H
21652 +#define GC_PTHREAD_STOP_WORLD_H
21654 +struct thread_stop_info {
21656 + word last_stop_count; /* GC_last_stop_count value when thread */
21657 + /* last successfully handled a suspend */
21659 + ptr_t stack_ptr; /* Valid only when stopped. */
21663 diff -Nubr boehm-gc/include/private/pthread_support.h ../boehm-gc/include/private/pthread_support.h
21664 --- boehm-gc/include/private/pthread_support.h Wed Dec 31 16:00:00 1969
21665 +++ ../boehm-gc/include/private/pthread_support.h Mon May 26 13:28:24 2003
21667 +#ifndef GC_PTHREAD_SUPPORT_H
21668 +#define GC_PTHREAD_SUPPORT_H
21670 +# include "private/gc_priv.h"
21672 +# if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
21673 + && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS)
21675 +#if defined(GC_DARWIN_THREADS)
21676 +# include "private/darwin_stop_world.h"
21678 +# include "private/pthread_stop_world.h"
21681 +/* We use the allocation lock to protect thread-related data structures. */
21683 +/* The set of all known threads. We intercept thread creation and */
21685 +/* Protected by allocation/GC lock. */
21686 +/* Some of this should be declared volatile, but that's inconsistent */
21687 +/* with some library routine declarations. */
21688 +typedef struct GC_Thread_Rep {
21689 + struct GC_Thread_Rep * next; /* More recently allocated threads */
21690 + /* with a given pthread id come */
21691 + /* first. (All but the first are */
21692 + /* guaranteed to be dead, but we may */
21693 + /* not yet have registered the join.) */
21695 + /* Extra bookkeeping information the stopping code uses */
21696 + struct thread_stop_info stop_info;
21699 +# define FINISHED 1 /* Thread has exited. */
21700 +# define DETACHED 2 /* Thread is intended to be detached. */
21701 +# define MAIN_THREAD 4 /* True for the original thread only. */
21702 + short thread_blocked; /* Protected by GC lock. */
21703 + /* Treated as a boolean value. If set, */
21704 + /* thread will acquire GC lock before */
21705 + /* doing any pointer manipulations, and */
21706 + /* has set its sp value. Thus it does */
21707 + /* not need to be sent a signal to stop */
21709 + ptr_t stack_end; /* Cold end of the stack. */
21711 + ptr_t backing_store_end;
21712 + ptr_t backing_store_ptr;
21714 + void * status; /* The value returned from the thread. */
21715 + /* Used only to avoid premature */
21716 + /* reclamation of any data it might */
21718 +# ifdef THREAD_LOCAL_ALLOC
21719 +# if CPP_WORDSZ == 64 && defined(ALIGN_DOUBLE)
21720 +# define GRANULARITY 16
21721 +# define NFREELISTS 49
21723 +# define GRANULARITY 8
21724 +# define NFREELISTS 65
21726 + /* The ith free list corresponds to size i*GRANULARITY */
21727 +# define INDEX_FROM_BYTES(n) ((ADD_SLOP(n) + GRANULARITY - 1)/GRANULARITY)
21728 +# define BYTES_FROM_INDEX(i) ((i) * GRANULARITY - EXTRA_BYTES)
21729 +# define SMALL_ENOUGH(bytes) (ADD_SLOP(bytes) <= \
21730 + (NFREELISTS-1)*GRANULARITY)
21731 + ptr_t ptrfree_freelists[NFREELISTS];
21732 + ptr_t normal_freelists[NFREELISTS];
21733 +# ifdef GC_GCJ_SUPPORT
21734 + ptr_t gcj_freelists[NFREELISTS];
21736 + /* Free lists contain either a pointer or a small count */
21737 + /* reflecting the number of granules allocated at that */
21739 + /* 0 ==> thread-local allocation in use, free list */
21741 + /* > 0, <= DIRECT_GRANULES ==> Using global allocation, */
21742 + /* too few objects of this size have been */
21743 + /* allocated by this thread. */
21744 + /* >= HBLKSIZE => pointer to nonempty free list. */
21745 + /* > DIRECT_GRANULES, < HBLKSIZE ==> transition to */
21746 + /* local alloc, equivalent to 0. */
21747 +# define DIRECT_GRANULES (HBLKSIZE/GRANULARITY)
21748 + /* Don't use local free lists for up to this much */
21749 + /* allocation. */
21753 +# define THREAD_TABLE_SZ 128 /* Must be power of 2 */
21754 +extern volatile GC_thread GC_threads[THREAD_TABLE_SZ];
21756 +extern GC_bool GC_thr_initialized;
21758 +GC_thread GC_lookup_thread(pthread_t id);
21760 +void GC_stop_init();
21762 +#endif /* GC_PTHREADS && !GC_SOLARIS_THREADS.... etc */
21763 +#endif /* GC_PTHREAD_SUPPORT_H */
21764 diff -Nubr boehm-gc/include/private/solaris_threads.h ../boehm-gc/include/private/solaris_threads.h
21765 --- boehm-gc/include/private/solaris_threads.h Tue Oct 23 16:21:39 2001
21766 +++ ../boehm-gc/include/private/solaris_threads.h Mon May 26 13:28:24 2003
21768 # define DETACHED 2 /* Thread is intended to be detached. */
21769 # define CLIENT_OWNS_STACK 4
21770 /* Stack was supplied by client. */
21771 -# define SUSPENDED 8 /* Currently suspended. */
21772 +# define SUSPNDED 8 /* Currently suspended. */
21773 + /* SUSPENDED is used insystem header. */
21777 diff -Nubr boehm-gc/include/private/specific.h ../boehm-gc/include/private/specific.h
21778 --- boehm-gc/include/private/specific.h Fri Mar 29 14:52:13 2002
21779 +++ ../boehm-gc/include/private/specific.h Mon May 26 13:28:24 2003
21781 unsigned hash_val = CACHE_HASH(qtid);
21782 tse * volatile * entry_ptr = key -> cache + hash_val;
21783 tse * entry = *entry_ptr; /* Must be loaded only once. */
21784 - if (entry -> qtid == qtid) {
21785 + if (EXPECT(entry -> qtid == qtid, 1)) {
21786 GC_ASSERT(entry -> thread == pthread_self());
21787 return entry -> value;
21789 diff -Nubr boehm-gc/irix_threads.c ../boehm-gc/irix_threads.c
21790 --- boehm-gc/irix_threads.c Sun May 19 10:36:14 2002
21791 +++ ../boehm-gc/irix_threads.c Mon May 26 12:48:52 2003
21793 #undef pthread_join
21794 #undef pthread_detach
21796 +#ifdef HANDLE_FORK
21797 + --> Not yet supported. Try porting the code from linux_threads.c.
21800 void GC_thr_init();
21803 diff -Nubr boehm-gc/mach_dep.c ../boehm-gc/mach_dep.c
21804 --- boehm-gc/mach_dep.c Thu Jul 18 13:06:00 2002
21805 +++ ../boehm-gc/mach_dep.c Mon May 26 12:48:52 2003
21807 /* on your architecture. Run the test_setjmp program to see whether */
21808 /* there is any chance it will work. */
21810 -#ifndef USE_GENERIC_PUSH_REGS
21811 +#if !defined(USE_GENERIC_PUSH_REGS) && !defined(USE_ASM_PUSH_REGS)
21812 void GC_push_regs()
21815 @@ -228,7 +228,8 @@
21816 || ( defined(I386) && defined(FREEBSD) && defined(__ELF__) ) \
21817 || ( defined(I386) && defined(NETBSD) && defined(__ELF__) ) \
21818 || ( defined(I386) && defined(OPENBSD) && defined(__ELF__) ) \
21819 - || ( defined(I386) && defined(HURD) && defined(__ELF__) )
21820 + || ( defined(I386) && defined(HURD) && defined(__ELF__) ) \
21821 + || ( defined(I386) && defined(DGUX) )
21823 /* This is modified for Linux with ELF (Note: _ELF_ only) */
21824 /* This section handles FreeBSD with ELF. */
21825 @@ -377,7 +378,7 @@
21826 /* other machines... */
21827 # if !defined(M68K) && !defined(VAX) && !defined(RT)
21828 # if !defined(SPARC) && !defined(I386) && !defined(NS32K)
21829 -# if !defined(POWERPC) && !defined(UTS4)
21830 +# if !(defined(POWERPC) && defined(LINUX)) && !defined(UTS4)
21831 # if !defined(PJ) && !(defined(MIPS) && defined(LINUX))
21834 @@ -385,7 +386,7 @@
21838 -#endif /* !USE_GENERIC_PUSH_REGS */
21839 +#endif /* !USE_GENERIC_PUSH_REGS && !USE_ASM_PUSH_REGS */
21841 #if defined(USE_GENERIC_PUSH_REGS)
21842 void GC_generic_push_regs(cold_gc_frame)
21843 diff -Nubr boehm-gc/malloc.c ../boehm-gc/malloc.c
21844 --- boehm-gc/malloc.c Mon Feb 11 20:37:53 2002
21845 +++ ../boehm-gc/malloc.c Mon May 26 12:48:52 2003
21846 @@ -182,6 +182,7 @@
21850 + if (GC_have_errors) GC_print_all_errors();
21851 GC_INVOKE_FINALIZERS();
21852 if (SMALL_OBJ(lb)) {
21854 @@ -294,6 +295,11 @@
21855 return(GENERAL_MALLOC((word)lb, NORMAL));
21857 /* See above comment on signals. */
21858 + GC_ASSERT(0 == obj_link(op)
21859 + || (word)obj_link(op)
21860 + <= (word)GC_greatest_plausible_heap_addr
21861 + && (word)obj_link(op)
21862 + >= (word)GC_least_plausible_heap_addr);
21863 *opp = obj_link(op);
21865 GC_words_allocd += lw;
21866 @@ -338,6 +344,7 @@
21867 return((GC_PTR)REDIRECT_MALLOC(n*lb));
21871 # include <string.h>
21873 char *strdup(const char *s)
21874 @@ -346,11 +353,16 @@
21878 - size_t len = strlen + 1;
21879 + size_t len = strlen(s) + 1;
21880 char * result = ((char *)REDIRECT_MALLOC(len+1));
21881 BCOPY(s, result, len+1);
21884 +#endif /* !defined(strdup) */
21885 + /* If strdup is macro defined, we assume that it actually calls malloc, */
21886 + /* and thus the right thing will happen even without overriding it. */
21887 + /* This seems to be true on most Linux systems. */
21889 # endif /* REDIRECT_MALLOC */
21891 /* Explicitly deallocate an object p. */
21892 @@ -373,6 +385,7 @@
21893 /* Required by ANSI. It's not my fault ... */
21896 + GC_ASSERT(GC_base(p) == p);
21897 # if defined(REDIRECT_MALLOC) && \
21898 (defined(GC_SOLARIS_THREADS) || defined(GC_LINUX_THREADS) \
21899 || defined(__MINGW32__)) /* Should this be MSWIN32 in general? */
21900 @@ -454,7 +467,10 @@
21902 #endif /* THREADS */
21904 -# ifdef REDIRECT_MALLOC
21905 +# if defined(REDIRECT_MALLOC) && !defined(REDIRECT_FREE)
21906 +# define REDIRECT_FREE GC_free
21908 +# ifdef REDIRECT_FREE
21910 void free(GC_PTR p)
21912 @@ -463,7 +479,7 @@
21915 # ifndef IGNORE_FREE
21917 + REDIRECT_FREE(p);
21920 # endif /* REDIRECT_MALLOC */
21921 diff -Nubr boehm-gc/mallocx.c ../boehm-gc/mallocx.c
21922 --- boehm-gc/mallocx.c Fri Aug 17 18:04:43 2001
21923 +++ ../boehm-gc/mallocx.c Mon May 26 12:48:52 2003
21924 @@ -142,7 +142,11 @@
21928 -# if defined(REDIRECT_MALLOC) || defined(REDIRECT_REALLOC)
21929 +# if defined(REDIRECT_MALLOC) && !defined(REDIRECT_REALLOC)
21930 +# define REDIRECT_REALLOC GC_realloc
21933 +# ifdef REDIRECT_REALLOC
21935 GC_PTR realloc(GC_PTR p, size_t lb)
21937 @@ -151,13 +155,9 @@
21941 -# ifdef REDIRECT_REALLOC
21942 return(REDIRECT_REALLOC(p, lb));
21944 - return(GC_realloc(p, lb));
21947 -# endif /* REDIRECT_MALLOC */
21948 +# endif /* REDIRECT_REALLOC */
21951 /* The same thing, except caller does not hold allocation lock. */
21952 @@ -177,6 +177,7 @@
21953 lw = ROUNDED_UP_WORDS(lb);
21954 n_blocks = OBJ_SZ_TO_BLOCKS(lw);
21955 init = GC_obj_kinds[k].ok_init;
21956 + if (GC_have_errors) GC_print_all_errors();
21957 GC_INVOKE_FINALIZERS();
21960 @@ -286,6 +287,7 @@
21964 + if (GC_have_errors) GC_print_all_errors();
21965 GC_INVOKE_FINALIZERS();
21968 @@ -354,6 +356,7 @@
21971 lw = ALIGNED_WORDS(lb);
21972 + if (GC_have_errors) GC_print_all_errors();
21973 GC_INVOKE_FINALIZERS();
21976 @@ -375,6 +378,7 @@
21977 while ((hbp = *rlh) != 0) {
21979 *rlh = hhdr -> hb_next;
21980 + hhdr -> hb_last_reclaimed = (unsigned short) GC_gc_no;
21981 # ifdef PARALLEL_MARK
21983 signed_word my_words_allocd_tmp = GC_words_allocd_tmp;
21984 @@ -574,6 +578,44 @@
21985 return((GC_PTR) op);
21990 +/* Not well tested nor integrated. */
21991 +/* Debug version is tricky and currently missing. */
21992 +#include <limits.h>
21994 +GC_PTR GC_memalign(size_t align, size_t lb)
22000 +# ifdef ALIGN_DOUBLE
22001 + if (align <= WORDS_TO_BYTES(2) && lb > align) return GC_malloc(lb);
22003 + if (align <= WORDS_TO_BYTES(1)) return GC_malloc(lb);
22004 + if (align >= HBLKSIZE/2 || lb >= HBLKSIZE/2) {
22005 + if (align > HBLKSIZE) return GC_oom_fn(LONG_MAX-1024) /* Fail */;
22006 + return GC_malloc(lb <= HBLKSIZE? HBLKSIZE : lb);
22007 + /* Will be HBLKSIZE aligned. */
22009 + /* We could also try to make sure that the real rounded-up object size */
22010 + /* is a multiple of align. That would be correct up to HBLKSIZE. */
22011 + new_lb = lb + align - 1;
22012 + result = GC_malloc(new_lb);
22013 + offset = (word)result % align;
22014 + if (offset != 0) {
22015 + offset = align - offset;
22016 + if (!GC_all_interior_pointers) {
22017 + if (offset >= VALID_OFFSET_SZ) return GC_malloc(HBLKSIZE);
22018 + GC_register_displacement(offset);
22021 + result = (GC_PTR) ((ptr_t)result + offset);
22022 + GC_ASSERT((word)result % align == 0);
22027 # ifdef ATOMIC_UNCOLLECTABLE
22028 /* Allocate lb bytes of pointerfree, untraced, uncollectable data */
22029 diff -Nubr boehm-gc/mark.c ../boehm-gc/mark.c
22030 --- boehm-gc/mark.c Fri Mar 29 14:52:12 2002
22031 +++ ../boehm-gc/mark.c Mon May 26 12:48:52 2003
22033 # include <stdio.h>
22034 # include "private/gc_pmark.h"
22036 +#if defined(MSWIN32) && defined(__GNUC__)
22037 +# include <excpt.h>
22040 /* We put this here to minimize the risk of inlining. */
22043 @@ -261,20 +265,20 @@
22044 /* remains valid until all marking is complete. */
22045 /* A zero value indicates that it's OK to miss some */
22046 /* register values. */
22047 -GC_bool GC_mark_some(cold_gc_frame)
22048 -ptr_t cold_gc_frame;
22049 +/* We hold the allocation lock. In the case of */
22050 +/* incremental collection, the world may not be stopped.*/
22052 + /* For win32, this is called after we establish a structured */
22053 + /* exception handler, in case Windows unmaps one of our root */
22054 + /* segments. See below. In either case, we acquire the */
22055 + /* allocator lock long before we get here. */
22056 + GC_bool GC_mark_some_inner(cold_gc_frame)
22057 + ptr_t cold_gc_frame;
22059 + GC_bool GC_mark_some(cold_gc_frame)
22060 + ptr_t cold_gc_frame;
22063 -#if defined(MSWIN32) && !defined(__GNUC__)
22064 - /* Windows 98 appears to asynchronously create and remove writable */
22065 - /* memory mappings, for reasons we haven't yet understood. Since */
22066 - /* we look for writable regions to determine the root set, we may */
22067 - /* try to mark from an address range that disappeared since we */
22068 - /* started the collection. Thus we have to recover from faults here. */
22069 - /* This code does not appear to be necessary for Windows 95/NT/2000. */
22070 - /* Note that this code should never generate an incremental GC write */
22073 -#endif /* defined(MSWIN32) && !defined(__GNUC__) */
22074 switch(GC_mark_state) {
22077 @@ -395,23 +399,130 @@
22078 ABORT("GC_mark_some: bad state");
22081 -#if defined(MSWIN32) && !defined(__GNUC__)
22090 + EXCEPTION_REGISTRATION ex_reg;
22095 + static EXCEPTION_DISPOSITION mark_ex_handler(
22096 + struct _EXCEPTION_RECORD *ex_rec,
22098 + struct _CONTEXT *context,
22101 + if (ex_rec->ExceptionCode == STATUS_ACCESS_VIOLATION) {
22102 + ext_ex_regn *xer = (ext_ex_regn *)est_frame;
22104 + /* Unwind from the inner function assuming the standard */
22105 + /* function prologue. */
22106 + /* Assumes code has not been compiled with */
22107 + /* -fomit-frame-pointer. */
22108 + context->Esp = context->Ebp;
22109 + context->Ebp = *((DWORD *)context->Esp);
22110 + context->Esp = context->Esp - 8;
22112 + /* Resume execution at the "real" handler within the */
22113 + /* wrapper function. */
22114 + context->Eip = (DWORD )(xer->alt_path);
22116 + return ExceptionContinueExecution;
22119 + return ExceptionContinueSearch;
22122 +# endif /* __GNUC__ */
22125 + GC_bool GC_mark_some(cold_gc_frame)
22126 + ptr_t cold_gc_frame;
22131 + /* Windows 98 appears to asynchronously create and remove */
22132 + /* writable memory mappings, for reasons we haven't yet */
22133 + /* understood. Since we look for writable regions to */
22134 + /* determine the root set, we may try to mark from an */
22135 + /* address range that disappeared since we started the */
22136 + /* collection. Thus we have to recover from faults here. */
22137 + /* This code does not appear to be necessary for Windows */
22138 + /* 95/NT/2000. Note that this code should never generate */
22139 + /* an incremental GC write fault. */
22143 +# else /* __GNUC__ */
22145 + /* Manually install an exception handler since GCC does */
22146 + /* not yet support Structured Exception Handling (SEH) on */
22151 + er.alt_path = &&handle_ex;
22152 + er.ex_reg.handler = mark_ex_handler;
22153 + asm volatile ("movl %%fs:0, %0" : "=r" (er.ex_reg.prev));
22154 + asm volatile ("movl %0, %%fs:0" : : "r" (&er));
22156 +# endif /* __GNUC__ */
22158 + ret_val = GC_mark_some_inner(cold_gc_frame);
22162 } __except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
22163 EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
22165 +# else /* __GNUC__ */
22167 + /* Prevent GCC from considering the following code unreachable */
22168 + /* and thus eliminating it. */
22169 + if (er.alt_path != 0)
22173 + /* Execution resumes from here on an access violation. */
22175 +# endif /* __GNUC__ */
22178 if (GC_print_stats) {
22179 GC_printf0("Caught ACCESS_VIOLATION in marker. "
22180 "Memory mapping disappeared.\n");
22182 # endif /* CONDPRINT */
22184 /* We have bad roots on the stack. Discard mark stack. */
22185 /* Rescan from marked objects. Redetermine roots. */
22186 GC_invalidate_mark_state();
22195 -#endif /* defined(MSWIN32) && !defined(__GNUC__) */
22198 +# else /* __GNUC__ */
22201 + /* Uninstall the exception handler */
22202 + asm volatile ("mov %0, %%fs:0" : : "r" (er.ex_reg.prev));
22204 +# endif /* __GNUC__ */
22208 +#endif /* MSWIN32 */
22211 GC_bool GC_mark_stack_empty()
22212 @@ -434,13 +545,7 @@
22213 /* for the large object. */
22214 /* - just return current if it does not point to a large object. */
22216 -# ifdef PRINT_BLACK_LIST
22217 - ptr_t GC_find_start(current, hhdr, new_hdr_p, source)
22220 - ptr_t GC_find_start(current, hhdr, new_hdr_p)
22223 +ptr_t GC_find_start(current, hhdr, new_hdr_p)
22224 register ptr_t current;
22225 register hdr *hhdr, **new_hdr_p;
22227 @@ -468,7 +573,6 @@
22234 void GC_invalidate_mark_state()
22235 @@ -546,8 +650,8 @@
22236 /* Large length. */
22237 /* Process part of the range to avoid pushing too much on the */
22239 - GC_ASSERT(descr < GC_greatest_plausible_heap_addr
22240 - - GC_least_plausible_heap_addr);
22241 + GC_ASSERT(descr < (word)GC_greatest_plausible_heap_addr
22242 + - (word)GC_least_plausible_heap_addr);
22243 # ifdef PARALLEL_MARK
22244 # define SHARE_BYTES 2048
22245 if (descr > SHARE_BYTES && GC_parallel
22246 @@ -578,6 +682,7 @@
22247 while (descr != 0) {
22248 if ((signed_word)descr < 0) {
22249 current = *current_p;
22250 + FIXUP_POINTER(current);
22251 if ((ptr_t)current >= least_ha && (ptr_t)current < greatest_ha) {
22253 HC_PUSH_CONTENTS((ptr_t)current, mark_stack_top,
22254 @@ -652,6 +757,7 @@
22255 PREFETCH((ptr_t)limit - PREF_DIST*CACHE_LINE_SIZE);
22256 GC_ASSERT(limit >= current_p);
22258 + FIXUP_POINTER(deferred);
22259 limit = (word *)((char *)limit - ALIGNMENT);
22260 if ((ptr_t)deferred >= least_ha && (ptr_t)deferred < greatest_ha) {
22261 PREFETCH(deferred);
22262 @@ -661,6 +767,7 @@
22263 /* Unroll once, so we don't do too many of the prefetches */
22264 /* based on limit. */
22266 + FIXUP_POINTER(deferred);
22267 limit = (word *)((char *)limit - ALIGNMENT);
22268 if ((ptr_t)deferred >= least_ha && (ptr_t)deferred < greatest_ha) {
22269 PREFETCH(deferred);
22270 @@ -675,6 +782,7 @@
22271 /* Since HC_PUSH_CONTENTS expands to a lot of code, */
22273 current = *current_p;
22274 + FIXUP_POINTER(current);
22275 PREFETCH((ptr_t)current_p + PREF_DIST*CACHE_LINE_SIZE);
22276 if ((ptr_t)current >= least_ha && (ptr_t)current < greatest_ha) {
22277 /* Prefetch the contents of the object we just pushed. It's */
22278 @@ -726,22 +834,33 @@
22279 mse *top = local - 1;
22282 + /* Make sure that prior writes to the mark stack are visible. */
22283 + /* On some architectures, the fact that the reads are */
22284 + /* volatile should suffice. */
22285 +# if !defined(IA64) && !defined(HP_PA) && !defined(I386)
22286 + GC_memory_barrier();
22288 GC_ASSERT(high >= low-1 && high - low + 1 <= GC_mark_stack_size);
22289 for (p = low; p <= high && i <= max; ++p) {
22290 word descr = *(volatile word *) &(p -> mse_descr);
22291 + /* In the IA64 memory model, the following volatile store is */
22292 + /* ordered after this read of descr. Thus a thread must read */
22293 + /* the original nonzero value. HP_PA appears to be similar, */
22294 + /* and if I'm reading the P4 spec correctly, X86 is probably */
22295 + /* also OK. In some other cases we need a barrier. */
22296 +# if !defined(IA64) && !defined(HP_PA) && !defined(I386)
22297 + GC_memory_barrier();
22300 *(volatile word *) &(p -> mse_descr) = 0;
22301 + /* More than one thread may get this entry, but that's only */
22302 + /* a minor performance problem. */
22304 top -> mse_descr = descr;
22305 top -> mse_start = p -> mse_start;
22306 GC_ASSERT( top -> mse_descr & GC_DS_TAGS != GC_DS_LENGTH ||
22307 top -> mse_descr < GC_greatest_plausible_heap_addr
22308 - GC_least_plausible_heap_addr);
22309 - /* There is no synchronization here. We assume that at */
22310 - /* least one thread will see the original descriptor. */
22311 - /* Otherwise we need a barrier. */
22312 - /* More than one thread may get this entry, but that's only */
22313 - /* a minor performance problem. */
22314 /* If this is a big object, count it as */
22315 /* size/256 + 1 objects. */
22317 @@ -778,7 +897,7 @@
22318 BCOPY(low, my_start, stack_size * sizeof(mse));
22319 GC_ASSERT(GC_mark_stack_top = my_top);
22320 # if !defined(IA64) && !defined(HP_PA)
22321 - GC_memory_write_barrier();
22322 + GC_memory_barrier();
22324 /* On IA64, the volatile write acts as a release barrier. */
22325 GC_mark_stack_top = my_top + stack_size;
22326 @@ -1342,7 +1461,7 @@
22327 # define GC_least_plausible_heap_addr least_ha
22329 if (top == 0) return;
22330 - /* check all pointers in range and put in push if they appear */
22331 + /* check all pointers in range and push if they appear */
22333 lim = t - 1 /* longword */;
22334 for (p = b; p <= lim; p = (word *)(((char *)p) + ALIGNMENT)) {
22335 @@ -1366,7 +1485,7 @@
22337 ptr_t cold_gc_frame;
22339 - if (GC_all_interior_pointers) {
22340 + if (!NEED_FIXUP_POINTER && GC_all_interior_pointers) {
22341 # define EAGER_BYTES 1024
22342 /* Push the hot end of the stack eagerly, so that register values */
22343 /* saved inside GC frames are marked before they disappear. */
22344 @@ -1375,6 +1494,7 @@
22345 GC_push_all_stack(bottom, top);
22348 + GC_ASSERT(bottom <= cold_gc_frame && cold_gc_frame <= top);
22349 # ifdef STACK_GROWS_DOWN
22350 GC_push_all(cold_gc_frame - sizeof(ptr_t), top);
22351 GC_push_all_eager(bottom, cold_gc_frame);
22352 @@ -1395,7 +1515,7 @@
22356 - if (GC_all_interior_pointers) {
22357 + if (!NEED_FIXUP_POINTER && GC_all_interior_pointers) {
22358 GC_push_all(bottom, top);
22360 GC_push_all_eager(bottom, top);
22361 diff -Nubr boehm-gc/mark_rts.c ../boehm-gc/mark_rts.c
22362 --- boehm-gc/mark_rts.c Mon Mar 3 22:38:29 2003
22363 +++ ../boehm-gc/mark_rts.c Mon May 26 12:48:52 2003
22364 @@ -275,33 +275,72 @@
22367 /* Internal use only; lock held. */
22368 -void GC_remove_tmp_roots()
22369 +static void GC_remove_root_at_pos(i)
22374 - for (i = 0; i < n_root_sets; ) {
22375 - if (GC_static_roots[i].r_tmp) {
22377 - (GC_static_roots[i].r_end - GC_static_roots[i].r_start);
22378 + GC_root_size -= (GC_static_roots[i].r_end - GC_static_roots[i].r_start);
22379 GC_static_roots[i].r_start = GC_static_roots[n_root_sets-1].r_start;
22380 GC_static_roots[i].r_end = GC_static_roots[n_root_sets-1].r_end;
22381 GC_static_roots[i].r_tmp = GC_static_roots[n_root_sets-1].r_tmp;
22387 -# if !defined(MSWIN32) && !defined(MSWINCE)
22391 +#if !defined(MSWIN32) && !defined(MSWINCE)
22392 +static void GC_rebuild_root_index()
22396 for (i = 0; i < RT_SIZE; i++) GC_root_index[i] = 0;
22397 for (i = 0; i < n_root_sets; i++)
22398 add_roots_to_index(GC_static_roots + i);
22402 +/* Internal use only; lock held. */
22403 +void GC_remove_tmp_roots()
22407 + for (i = 0; i < n_root_sets; ) {
22408 + if (GC_static_roots[i].r_tmp) {
22409 + GC_remove_root_at_pos(i);
22415 + #if !defined(MSWIN32) && !defined(MSWINCE)
22416 + GC_rebuild_root_index();
22420 +#if !defined(MSWIN32) && !defined(MSWINCE)
22421 +void GC_remove_roots(b, e)
22422 +char * b; char * e;
22426 + DISABLE_SIGNALS();
22428 + GC_remove_roots_inner(b, e);
22430 + ENABLE_SIGNALS();
22433 +/* Should only be called when the lock is held */
22434 +void GC_remove_roots_inner(b,e)
22435 +char * b; char * e;
22438 + for (i = 0; i < n_root_sets; ) {
22439 + if (GC_static_roots[i].r_start >= (ptr_t)b && GC_static_roots[i].r_end <= (ptr_t)e) {
22440 + GC_remove_root_at_pos(i);
22445 + GC_rebuild_root_index();
22447 +#endif /* !defined(MSWIN32) && !defined(MSWINCE) */
22449 #if defined(MSWIN32) || defined(_WIN32_WCE_EMULATION)
22450 /* Workaround for the OS mapping and unmapping behind our back: */
22451 @@ -573,8 +612,11 @@
22453 /* Mark thread local free lists, even if their mark */
22454 /* descriptor excludes the link field. */
22455 + /* If the world is not stopped, this is unsafe. It is */
22456 + /* also unnecessary, since we will do this again with the */
22457 + /* world stopped. */
22458 # ifdef THREAD_LOCAL_ALLOC
22459 - GC_mark_thread_local_free_lists();
22460 + if (GC_world_stopped) GC_mark_thread_local_free_lists();
22464 diff -Nubr boehm-gc/misc.c ../boehm-gc/misc.c
22465 --- boehm-gc/misc.c Mon Mar 3 22:38:30 2003
22466 +++ ../boehm-gc/misc.c Mon May 26 12:48:52 2003
22468 # ifdef GC_SOLARIS_THREADS
22469 mutex_t GC_allocate_ml; /* Implicitly initialized. */
22471 -# ifdef GC_WIN32_THREADS
22472 -# if !defined(GC_NOT_DLL) && (defined(_DLL) || defined(GC_DLL))
22473 +# if defined(GC_WIN32_THREADS)
22474 +# if defined(GC_PTHREADS)
22475 + pthread_mutex_t GC_allocate_ml = PTHREAD_MUTEX_INITIALIZER;
22476 +# elif defined(GC_DLL)
22477 __declspec(dllexport) CRITICAL_SECTION GC_allocate_ml;
22479 CRITICAL_SECTION GC_allocate_ml;
22481 /* defined here so we don't have to load debug_malloc.o */
22483 void (*GC_check_heap) GC_PROTO((void)) = (void (*) GC_PROTO((void)))0;
22484 +void (*GC_print_all_smashed) GC_PROTO((void)) = (void (*) GC_PROTO((void)))0;
22486 void (*GC_start_call_back) GC_PROTO((void)) = (void (*) GC_PROTO((void)))0;
22488 @@ -109,6 +112,10 @@
22490 GC_bool GC_print_back_height = 0;
22492 +#ifndef NO_DEBUGGING
22493 + GC_bool GC_dump_regularly = 0; /* Generate regular debugging dumps. */
22497 int GC_find_leak = 1;
22499 @@ -137,6 +144,13 @@
22501 extern signed_word GC_mem_found;
22503 +void * GC_project2(arg1, arg2)
22510 # ifdef MERGE_SIZES
22511 /* Set things up so that GC_size_map[i] >= words(i), */
22512 /* but not too much bigger */
22513 @@ -455,7 +469,7 @@
22518 +#if defined(GC_WIN32_THREADS) && !defined(GC_PTHREADS)
22519 if (!GC_is_initialized) InitializeCriticalSection(&GC_allocate_ml);
22520 #endif /* MSWIN32 */
22522 @@ -473,6 +487,15 @@
22523 GC_init_parallel();
22525 # endif /* PARALLEL_MARK || THREAD_LOCAL_ALLOC */
22527 +# if defined(DYNAMIC_LOADING) && defined(DARWIN)
22529 + /* This must be called WITHOUT the allocation lock held
22530 + and before any threads are created */
22531 + extern void GC_init_dyld();
22537 #if defined(MSWIN32) || defined(MSWINCE)
22538 @@ -485,6 +508,22 @@
22540 extern void GC_setpagesize();
22544 +extern GC_bool GC_no_win32_dlls;
22546 +# define GC_no_win32_dlls FALSE
22549 +void GC_exit_check GC_PROTO((void))
22554 +#ifdef SEARCH_FOR_DATA_START
22555 + extern void GC_init_linux_data_start GC_PROTO((void));
22560 extern void GC_set_and_save_fault_handler GC_PROTO((void (*handler)(int)));
22561 @@ -495,12 +534,23 @@
22562 GC_err_printf1("Caught signal %d: looping in handler\n", sig);
22568 -extern GC_bool GC_no_win32_dlls;
22570 -# define GC_no_win32_dlls FALSE
22571 +static GC_bool installed_looping_handler = FALSE;
22573 +void maybe_install_looping_handler()
22575 + /* Install looping handler before the write fault handler, so we */
22576 + /* handle write faults correctly. */
22577 + if (!installed_looping_handler && 0 != GETENV("GC_LOOP_ON_ABORT")) {
22578 + GC_set_and_save_fault_handler(looping_handler);
22579 + installed_looping_handler = TRUE;
22583 +#else /* !UNIX_LIKE */
22585 +# define maybe_install_looping_handler()
22589 void GC_init_inner()
22590 @@ -517,12 +567,19 @@
22591 # if defined(MSWIN32) || defined(MSWINCE)
22592 InitializeCriticalSection(&GC_write_cs);
22595 if (0 != GETENV("GC_PRINT_STATS")) {
22596 GC_print_stats = 1;
22598 +# ifndef NO_DEBUGGING
22599 + if (0 != GETENV("GC_DUMP_REGULARLY")) {
22600 + GC_dump_regularly = 1;
22603 if (0 != GETENV("GC_FIND_LEAK")) {
22606 + atexit(GC_exit_check);
22609 if (0 != GETENV("GC_ALL_INTERIOR_POINTERS")) {
22610 GC_all_interior_pointers = 1;
22611 @@ -560,11 +617,7 @@
22616 - if (0 != GETENV("GC_LOOP_ON_ABORT")) {
22617 - GC_set_and_save_fault_handler(looping_handler);
22620 + maybe_install_looping_handler();
22621 /* Adjust normal object descriptor for extra allocation. */
22622 if (ALIGNMENT > GC_DS_TAGS && EXTRA_BYTES != 0) {
22623 GC_obj_kinds[NORMAL].ok_descriptor = ((word)(-ALIGNMENT) | GC_DS_LENGTH);
22624 @@ -599,11 +652,21 @@
22625 # if defined(LINUX) && defined(IA64)
22626 GC_register_stackbottom = GC_get_register_stack_base();
22629 +# if defined(LINUX) && defined(IA64)
22630 + if (GC_register_stackbottom == 0) {
22631 + WARN("GC_register_stackbottom should be set with GC_stackbottom", 0);
22632 + /* The following is likely to fail, since we rely on */
22633 + /* alignment properties that may not hold with a user set */
22634 + /* GC_stackbottom. */
22635 + GC_register_stackbottom = GC_get_register_stack_base();
22638 - GC_ASSERT(sizeof (ptr_t) == sizeof(word));
22639 - GC_ASSERT(sizeof (signed_word) == sizeof(word));
22640 - GC_ASSERT(sizeof (struct hblk) == HBLKSIZE);
22643 + GC_STATIC_ASSERT(sizeof (ptr_t) == sizeof(word));
22644 + GC_STATIC_ASSERT(sizeof (signed_word) == sizeof(word));
22645 + GC_STATIC_ASSERT(sizeof (struct hblk) == HBLKSIZE);
22647 # if defined(STACK_GROWS_UP) && defined(STACK_GROWS_DOWN)
22649 @@ -642,6 +705,18 @@
22650 initial_heap_sz = divHBLKSZ(initial_heap_sz);
22654 + char * sz_str = GETENV("GC_MAXIMUM_HEAP_SIZE");
22655 + if (sz_str != NULL) {
22656 + word max_heap_sz = (word)atol(sz_str);
22657 + if (max_heap_sz < initial_heap_sz * HBLKSIZE) {
22658 + WARN("Bad maximum heap size %s - ignoring it.\n",
22661 + if (0 == GC_max_retries) GC_max_retries = 2;
22662 + GC_set_max_heap_size(max_heap_sz);
22665 if (!GC_expand_hp_inner(initial_heap_sz)) {
22666 GC_err_printf0("Can't start up: not enough memory\n");
22668 @@ -677,6 +752,7 @@
22669 GC_incremental = TRUE;
22671 # endif /* !SMALL_CONFIG */
22673 /* Get black list set up and/or incrmental GC started */
22674 if (!GC_dont_precollect || GC_incremental) GC_gcollect_inner();
22675 GC_is_initialized = TRUE;
22676 @@ -713,6 +789,7 @@
22678 if (GC_no_win32_dlls) goto out;
22679 # ifndef GC_SOLARIS_THREADS
22680 + maybe_install_looping_handler(); /* Before write fault handler! */
22683 if (!GC_is_initialized) {
22684 @@ -932,6 +1009,17 @@
22688 +# if defined(__STDC__) || defined(__cplusplus)
22689 + GC_word GC_set_free_space_divisor (GC_word value)
22691 + GC_word GC_set_free_space_divisor (value)
22695 + GC_word old = GC_free_space_divisor;
22696 + GC_free_space_divisor = value;
22702 @@ -958,122 +1046,18 @@
22706 -#ifdef NEED_CALLINFO
22708 -#ifdef HAVE_BUILTIN_BACKTRACE
22709 -# include <execinfo.h>
22711 -# include <unistd.h>
22715 -void GC_print_callers (info)
22716 -struct callinfo info[NFRAMES];
22721 - GC_err_printf0("\tCaller at allocation:\n");
22723 - GC_err_printf0("\tCall chain at allocation:\n");
22725 - for (i = 0; i < NFRAMES; i++) {
22726 - if (info[i].ci_pc == 0) break;
22731 - GC_err_printf0("\t\targs: ");
22732 - for (j = 0; j < NARGS; j++) {
22733 - if (j != 0) GC_err_printf0(", ");
22734 - GC_err_printf2("%d (0x%X)", ~(info[i].ci_arg[j]),
22735 - ~(info[i].ci_arg[j]));
22737 - GC_err_printf0("\n");
22740 -# if defined(HAVE_BUILTIN_BACKTRACE) && !defined(REDIRECT_MALLOC)
22741 - /* Unfortunately backtrace_symbols calls malloc, which makes */
22742 - /* it dangersous if that has been redirected. */
22744 - char **sym_name =
22745 - backtrace_symbols((void **)(&(info[i].ci_pc)), 1);
22746 - char *name = sym_name[0];
22747 - GC_bool found_it = (strchr(name, '(') != 0);
22751 -# define EXE_SZ 100
22752 - static char exe_name[EXE_SZ];
22753 -# define CMD_SZ 200
22754 - char cmd_buf[CMD_SZ];
22755 -# define RESULT_SZ 200
22756 - static char result_buf[RESULT_SZ];
22757 - size_t result_len;
22758 - static GC_bool found_exe_name = FALSE;
22759 - static GC_bool will_fail = FALSE;
22761 - /* Unfortunately, this is the common case for the */
22762 - /* main executable. */
22763 - /* Try to get it via a hairy and expensive scheme. */
22764 - /* First we get the name of the executable: */
22765 - if (will_fail) goto out;
22766 - if (!found_exe_name) {
22767 - ret_code = readlink("/proc/self/exe", exe_name, EXE_SZ);
22768 - if (ret_code < 0 || ret_code >= EXE_SZ || exe_name[0] != '/') {
22769 - will_fail = TRUE; /* Dont try again. */
22772 - exe_name[ret_code] = '\0';
22773 - found_exe_name = TRUE;
22775 - /* Then we use popen to start addr2line -e <exe> <addr> */
22776 - /* There are faster ways to do this, but hopefully this */
22777 - /* isn't time critical. */
22778 - sprintf(cmd_buf, "/usr/bin/addr2line -e %s 0x%lx", exe_name,
22779 - (unsigned long)info[i].ci_pc);
22780 - pipe = popen(cmd_buf, "r");
22781 - if (pipe < 0 || fgets(result_buf, RESULT_SZ, pipe) == 0) {
22782 - will_fail = TRUE;
22785 - result_len = strlen(result_buf);
22786 - if (result_buf[result_len - 1] == '\n') --result_len;
22787 - if (result_buf[0] == '?'
22788 - || result_buf[result_len-2] == ':'
22789 - && result_buf[result_len-1] == '0')
22791 - if (result_len < RESULT_SZ - 25) {
22792 - /* Add in hex address */
22793 - sprintf(result_buf + result_len, " [0x%lx]",
22794 - (unsigned long)info[i].ci_pc);
22796 - name = result_buf;
22801 - GC_err_printf1("\t\t%s\n", name);
22805 - GC_err_printf1("\t\t##PC##= 0x%lx\n", info[i].ci_pc);
22810 -#endif /* SAVE_CALL_CHAIN */
22812 -/* Needed by SRC_M3, gcj, and should perhaps be the official interface */
22813 -/* to GC_dont_gc. */
22828 #if !defined(NO_DEBUGGING)
22829 @@ -1088,6 +1072,8 @@
22830 GC_print_hblkfreelist();
22831 GC_printf0("\n***Blocks in use:\n");
22832 GC_print_block_list();
22833 + GC_printf0("\n***Finalization statistics:\n");
22834 + GC_print_finalization_stats();
22837 #endif /* NO_DEBUGGING */
22838 diff -Nubr boehm-gc/os_dep.c ../boehm-gc/os_dep.c
22839 --- boehm-gc/os_dep.c Fri Jul 19 01:54:43 2002
22840 +++ ../boehm-gc/os_dep.c Sat May 31 14:46:38 2003
22841 @@ -80,12 +80,15 @@
22842 # define NEED_FIND_LIMIT
22845 -#ifdef NEED_FIND_LIMIT
22846 -# include <setjmp.h>
22849 #if defined(FREEBSD) && defined(I386)
22850 # include <machine/trap.h>
22851 +# if !defined(PCR)
22852 +# define NEED_FIND_LIMIT
22856 +#ifdef NEED_FIND_LIMIT
22857 +# include <setjmp.h>
22861 @@ -129,6 +132,11 @@
22862 # define jmp_buf sigjmp_buf
22866 +/* for get_etext and friends */
22867 +#include <mach-o/getsect.h>
22871 /* Apparently necessary for djgpp 2.01. May cause problems with */
22872 /* other versions. */
22873 @@ -147,6 +155,155 @@
22874 # define OPT_PROT_EXEC 0
22877 +#if defined(LINUX) && \
22878 + (defined(USE_PROC_FOR_LIBRARIES) || defined(IA64) || !defined(SMALL_CONFIG))
22880 +/* We need to parse /proc/self/maps, either to find dynamic libraries, */
22881 +/* and/or to find the register backing store base (IA64). Do it once */
22886 +/* Repeatedly perform a read call until the buffer is filled or */
22887 +/* we encounter EOF. */
22888 +ssize_t GC_repeat_read(int fd, char *buf, size_t count)
22890 + ssize_t num_read = 0;
22893 + while (num_read < count) {
22894 + result = READ(fd, buf + num_read, count - num_read);
22895 + if (result < 0) return result;
22896 + if (result == 0) break;
22897 + num_read += result;
22903 + * Apply fn to a buffer containing the contents of /proc/self/maps.
22904 + * Return the result of fn or, if we failed, 0.
22907 +word GC_apply_to_maps(word (*fn)(char *))
22912 + char maps_temp[32768];
22915 + /* Read /proc/self/maps */
22916 + /* Note that we may not allocate, and thus can't use stdio. */
22917 + f = open("/proc/self/maps", O_RDONLY);
22918 + if (-1 == f) return 0;
22919 + /* stat() doesn't work for /proc/self/maps, so we have to
22920 + read it to find out how large it is... */
22923 + result = GC_repeat_read(f, maps_temp, sizeof(maps_temp));
22924 + if (result <= 0) return 0;
22925 + maps_size += result;
22926 + } while (result == sizeof(maps_temp));
22928 + if (maps_size > sizeof(maps_temp)) {
22929 + /* If larger than our buffer, close and re-read it. */
22931 + f = open("/proc/self/maps", O_RDONLY);
22932 + if (-1 == f) return 0;
22933 + maps_buf = alloca(maps_size);
22934 + if (NULL == maps_buf) return 0;
22935 + result = GC_repeat_read(f, maps_buf, maps_size);
22936 + if (result <= 0) return 0;
22938 + /* Otherwise use the fixed size buffer */
22939 + maps_buf = maps_temp;
22943 + maps_buf[result] = '\0';
22945 + /* Apply fn to result. */
22946 + return fn(maps_buf);
22949 +#endif /* Need GC_apply_to_maps */
22951 +#if defined(LINUX) && (defined(USE_PROC_FOR_LIBRARIES) || defined(IA64))
22953 +// GC_parse_map_entry parses an entry from /proc/self/maps so we can
22954 +// locate all writable data segments that belong to shared libraries.
22955 +// The format of one of these entries and the fields we care about
22957 +// XXXXXXXX-XXXXXXXX r-xp 00000000 30:05 260537 name of mapping...\n
22958 +// ^^^^^^^^ ^^^^^^^^ ^^^^ ^^
22959 +// start end prot maj_dev
22962 +// For 64 bit ABIs:
22965 +// The parser is called with a pointer to the entry and the return value
22966 +// is either NULL or is advanced to the next entry(the byte after the
22967 +// trailing '\n'.)
22969 +#if CPP_WORDSZ == 32
22970 +# define OFFSET_MAP_START 0
22971 +# define OFFSET_MAP_END 9
22972 +# define OFFSET_MAP_PROT 18
22973 +# define OFFSET_MAP_MAJDEV 32
22974 +# define ADDR_WIDTH 8
22977 +#if CPP_WORDSZ == 64
22978 +# define OFFSET_MAP_START 0
22979 +# define OFFSET_MAP_END 17
22980 +# define OFFSET_MAP_PROT 34
22981 +# define OFFSET_MAP_MAJDEV 56
22982 +# define ADDR_WIDTH 16
22986 + * Assign various fields of the first line in buf_ptr to *start, *end,
22987 + * *prot_buf and *maj_dev. Only *prot_buf may be set for unwritable maps.
22989 +char *GC_parse_map_entry(char *buf_ptr, word *start, word *end,
22990 + char *prot_buf, unsigned int *maj_dev)
22995 + if (buf_ptr == NULL || *buf_ptr == '\0') {
22999 + memcpy(prot_buf, buf_ptr+OFFSET_MAP_PROT, 4); // do the protections first
23000 + prot_buf[4] = '\0';
23002 + if (prot_buf[1] == 'w') { // we can skip all of this if it's not writable
23005 + buf_ptr[OFFSET_MAP_START+ADDR_WIDTH] = '\0';
23006 + *start = strtoul(tok, NULL, 16);
23008 + tok = buf_ptr+OFFSET_MAP_END;
23009 + buf_ptr[OFFSET_MAP_END+ADDR_WIDTH] = '\0';
23010 + *end = strtoul(tok, NULL, 16);
23012 + buf_ptr += OFFSET_MAP_MAJDEV;
23014 + while (*buf_ptr != ':') buf_ptr++;
23015 + *buf_ptr++ = '\0';
23016 + *maj_dev = strtoul(tok, NULL, 16);
23019 + while (*buf_ptr && *buf_ptr++ != '\n');
23024 +#endif /* Need to parse /proc/self/maps. */
23026 #if defined(SEARCH_FOR_DATA_START)
23027 /* The I386 case can be handled without a search. The Alpha case */
23028 /* used to be handled differently as well, but the rules changed */
23029 @@ -154,6 +311,11 @@
23030 /* cover all versions. */
23033 + /* Some Linux distributions arrange to define __data_start. Some */
23034 + /* define data_start as a weak symbol. The latter is technically */
23035 + /* broken, since the user program may define data_start, in which */
23036 + /* case we lose. Nonetheless, we try both, prefering __data_start. */
23037 + /* We assume gcc-compatible pragmas. */
23038 # pragma weak __data_start
23039 extern int __data_start[];
23040 # pragma weak data_start
23041 @@ -169,16 +331,16 @@
23044 /* Try the easy approaches first: */
23045 - if (__data_start != 0) {
23046 - GC_data_start = (ptr_t)__data_start;
23047 + if ((ptr_t)__data_start != 0) {
23048 + GC_data_start = (ptr_t)(__data_start);
23051 - if (data_start != 0) {
23052 - GC_data_start = (ptr_t)data_start;
23053 + if ((ptr_t)data_start != 0) {
23054 + GC_data_start = (ptr_t)(data_start);
23057 # endif /* LINUX */
23058 - GC_data_start = GC_find_limit((ptr_t)_end, FALSE);
23059 + GC_data_start = GC_find_limit((ptr_t)(_end), FALSE);
23063 @@ -617,7 +779,8 @@
23066 /* Return the first nonaddressible location > p (up) or */
23067 - /* the smallest location q s.t. [q,p] is addressible (!up). */
23068 + /* the smallest location q s.t. [q,p) is addressable (!up). */
23069 + /* We assume that p (up) or p-1 (!up) is addressable. */
23070 ptr_t GC_find_limit(p, up)
23073 @@ -650,18 +813,18 @@
23077 -# if defined(ECOS) || defined(NOSYS)
23078 -ptr_t GC_get_stack_base()
23080 +#if defined(ECOS) || defined(NOSYS)
23081 + ptr_t GC_get_stack_base()
23083 return STACKBOTTOM;
23090 #ifdef LINUX_STACKBOTTOM
23092 #include <sys/types.h>
23093 #include <sys/stat.h>
23094 +#include <ctype.h>
23096 # define STAT_SKIP 27 /* Number of fields preceding startstack */
23097 /* field in /proc/self/stat */
23098 @@ -670,6 +833,33 @@
23099 extern ptr_t __libc_stack_end;
23102 + /* Try to read the backing store base from /proc/self/maps. */
23103 + /* We look for the writable mapping with a 0 major device, */
23104 + /* which is as close to our frame as possible, but below it.*/
23105 + static word backing_store_base_from_maps(char *maps)
23107 + char prot_buf[5];
23108 + char *buf_ptr = maps;
23110 + unsigned int maj_dev;
23111 + word current_best = 0;
23115 + buf_ptr = GC_parse_map_entry(buf_ptr, &start, &end, prot_buf, &maj_dev);
23116 + if (buf_ptr == NULL) return current_best;
23117 + if (prot_buf[1] == 'w' && maj_dev == 0) {
23118 + if (end < (word)(&dummy) && start > current_best) current_best = start;
23121 + return current_best;
23124 + static word backing_store_base_from_proc(void)
23126 + return GC_apply_to_maps(backing_store_base_from_maps);
23129 # pragma weak __libc_ia64_register_backing_store_base
23130 extern ptr_t __libc_ia64_register_backing_store_base;
23132 @@ -683,9 +873,15 @@
23133 /* Hence we check for both nonzero address and value. */
23134 return __libc_ia64_register_backing_store_base;
23136 - word result = (word)GC_stackbottom - BACKING_STORE_DISPLACEMENT;
23137 + word result = backing_store_base_from_proc();
23138 + if (0 == result) {
23139 + /* Use dumb heuristics. Works only for default configuration. */
23140 + result = (word)GC_stackbottom - BACKING_STORE_DISPLACEMENT;
23141 result += BACKING_STORE_ALIGNMENT - 1;
23142 result &= ~(BACKING_STORE_ALIGNMENT - 1);
23143 + /* Verify that it's at least readable. If not, we goofed. */
23144 + GC_noop1(*(word *)result);
23146 return (ptr_t)result;
23149 @@ -697,11 +893,8 @@
23150 /* using direct I/O system calls in order to avoid calling malloc */
23151 /* in case REDIRECT_MALLOC is defined. */
23152 # define STAT_BUF_SIZE 4096
23153 -# if defined(GC_USE_LD_WRAP)
23154 -# define STAT_READ __real_read
23156 # define STAT_READ read
23158 + /* Should probably call the real read, if read is wrapped. */
23159 char stat_buf[STAT_BUF_SIZE];
23162 @@ -710,7 +903,16 @@
23164 /* First try the easy way. This should work for glibc 2.2 */
23165 if (0 != &__libc_stack_end) {
23167 + /* Some versions of glibc set the address 16 bytes too */
23168 + /* low while the initialization code is running. */
23169 + if (((word)__libc_stack_end & 0xfff) + 0x10 < 0x1000) {
23170 + return __libc_stack_end + 0x10;
23171 + } /* Otherwise it's not safe to add 16 bytes and we fall */
23172 + /* back to using /proc. */
23174 return __libc_stack_end;
23177 f = open("/proc/self/stat", O_RDONLY);
23178 if (f < 0 || STAT_READ(f, stat_buf, STAT_BUF_SIZE) < 2 * STAT_SKIP) {
23179 @@ -764,8 +966,11 @@
23181 ptr_t GC_get_stack_base()
23183 +# if defined(HEURISTIC1) || defined(HEURISTIC2) || \
23184 + defined(LINUX_STACKBOTTOM) || defined(FREEBSD_STACKBOTTOM)
23189 # define STACKBOTTOM_ALIGNMENT_M1 ((word)STACK_GRAN - 1)
23191 @@ -814,7 +1019,6 @@
23193 # endif /* STACKBOTTOM */
23195 -# endif /* NOSYS ECOS */
23197 # endif /* ! AMIGA, !OS 2, ! MS Windows, !BEOS */
23199 @@ -924,15 +1128,14 @@
23200 /* Unfortunately, we have to handle win32s very differently from NT, */
23201 /* Since VirtualQuery has very different semantics. In particular, */
23202 /* under win32s a VirtualQuery call on an unmapped page returns an */
23203 - /* invalid result. Under GC_register_data_segments is a noop and */
23204 + /* invalid result. Under NT, GC_register_data_segments is a noop and */
23205 /* all real work is done by GC_register_dynamic_libraries. Under */
23206 /* win32s, we cannot find the data segments associated with dll's. */
23207 - /* We rgister the main data segment here. */
23209 - GC_bool GC_no_win32_dlls = TRUE; /* GCC can't do SEH, so we can't use VirtualQuery */
23211 + /* We register the main data segment here. */
23212 GC_bool GC_no_win32_dlls = FALSE;
23214 + /* This used to be set for gcc, to avoid dealing with */
23215 + /* the structured exception handling issues. But we now have */
23216 + /* assembly code to do that right. */
23218 void GC_init_win32()
23220 @@ -965,35 +1168,101 @@
23224 - /* Is p the start of either the malloc heap, or of one of our */
23225 - /* heap sections? */
23226 - GC_bool GC_is_heap_base (ptr_t p)
23229 - register unsigned i;
23231 # ifndef REDIRECT_MALLOC
23232 - static ptr_t malloc_heap_pointer = 0;
23233 + /* We maintain a linked list of AllocationBase values that we know */
23234 + /* correspond to malloc heap sections. Currently this is only called */
23235 + /* during a GC. But there is some hope that for long running */
23236 + /* programs we will eventually see most heap sections. */
23238 - if (0 == malloc_heap_pointer) {
23239 - MEMORY_BASIC_INFORMATION buf;
23240 - void *pTemp = malloc( 1 );
23241 - register DWORD result = VirtualQuery(pTemp, &buf, sizeof(buf));
23242 + /* In the long run, it would be more reliable to occasionally walk */
23243 + /* the malloc heap with HeapWalk on the default heap. But that */
23244 + /* apparently works only for NT-based Windows. */
23247 + /* In the long run, a better data structure would also be nice ... */
23248 + struct GC_malloc_heap_list {
23249 + void * allocation_base;
23250 + struct GC_malloc_heap_list *next;
23251 + } *GC_malloc_heap_l = 0;
23253 + /* Is p the base of one of the malloc heap sections we already know */
23255 + GC_bool GC_is_malloc_heap_base(ptr_t p)
23257 + struct GC_malloc_heap_list *q = GC_malloc_heap_l;
23260 + if (q -> allocation_base == p) return TRUE;
23266 + void *GC_get_allocation_base(void *p)
23268 + MEMORY_BASIC_INFORMATION buf;
23269 + DWORD result = VirtualQuery(p, &buf, sizeof(buf));
23270 if (result != sizeof(buf)) {
23271 ABORT("Weird VirtualQuery result");
23273 - malloc_heap_pointer = (ptr_t)(buf.AllocationBase);
23274 + return buf.AllocationBase;
23276 - if (p == malloc_heap_pointer) return(TRUE);
23278 + size_t GC_max_root_size = 100000; /* Appr. largest root size. */
23280 + void GC_add_current_malloc_heap()
23282 + struct GC_malloc_heap_list *new_l =
23283 + malloc(sizeof(struct GC_malloc_heap_list));
23284 + void * candidate = GC_get_allocation_base(new_l);
23286 + if (new_l == 0) return;
23287 + if (GC_is_malloc_heap_base(candidate)) {
23288 + /* Try a little harder to find malloc heap. */
23289 + size_t req_size = 10000;
23291 + void *p = malloc(req_size);
23292 + if (0 == p) { free(new_l); return; }
23293 + candidate = GC_get_allocation_base(p);
23296 + } while (GC_is_malloc_heap_base(candidate)
23297 + && req_size < GC_max_root_size/10 && req_size < 500000);
23298 + if (GC_is_malloc_heap_base(candidate)) {
23299 + free(new_l); return;
23303 + if (GC_print_stats)
23304 + GC_printf1("Found new system malloc AllocationBase at 0x%lx\n",
23307 + new_l -> allocation_base = candidate;
23308 + new_l -> next = GC_malloc_heap_l;
23309 + GC_malloc_heap_l = new_l;
23311 +# endif /* REDIRECT_MALLOC */
23313 + /* Is p the start of either the malloc heap, or of one of our */
23314 + /* heap sections? */
23315 + GC_bool GC_is_heap_base (ptr_t p)
23320 +# ifndef REDIRECT_MALLOC
23321 + static word last_gc_no = -1;
23323 + if (last_gc_no != GC_gc_no) {
23324 + GC_add_current_malloc_heap();
23325 + last_gc_no = GC_gc_no;
23327 + if (GC_root_size > GC_max_root_size) GC_max_root_size = GC_root_size;
23328 + if (GC_is_malloc_heap_base(p)) return TRUE;
23330 for (i = 0; i < GC_n_heap_bases; i++) {
23331 - if (GC_heap_bases[i] == p) return(TRUE);
23332 + if (GC_heap_bases[i] == p) return TRUE;
23339 @@ -1043,7 +1312,7 @@
23341 # if (defined(SVR4) || defined(AUX) || defined(DGUX) \
23342 || (defined(LINUX) && defined(SPARC))) && !defined(PCR)
23343 -char * GC_SysVGetDataStart(max_page_size, etext_addr)
23344 +ptr_t GC_SysVGetDataStart(max_page_size, etext_addr)
23348 @@ -1069,12 +1338,45 @@
23349 /* string constants in the text segment, but after etext. */
23350 /* Use plan B. Note that we now know there is a gap between */
23351 /* text and data segments, so plan A bought us something. */
23352 - result = (char *)GC_find_limit((ptr_t)(DATAEND) - MIN_PAGE_SIZE, FALSE);
23353 + result = (char *)GC_find_limit((ptr_t)(DATAEND), FALSE);
23355 - return((char *)result);
23356 + return((ptr_t)result);
23360 +# if defined(FREEBSD) && defined(I386) && !defined(PCR)
23361 +/* Its unclear whether this should be identical to the above, or */
23362 +/* whether it should apply to non-X86 architectures. */
23363 +/* For now we don't assume that there is always an empty page after */
23364 +/* etext. But in some cases there actually seems to be slightly more. */
23365 +/* This also deals with holes between read-only data and writable data. */
23366 +ptr_t GC_FreeBSDGetDataStart(max_page_size, etext_addr)
23367 +int max_page_size;
23370 + word text_end = ((word)(etext_addr) + sizeof(word) - 1)
23371 + & ~(sizeof(word) - 1);
23372 + /* etext rounded to word boundary */
23373 + VOLATILE word next_page = (text_end + (word)max_page_size - 1)
23374 + & ~((word)max_page_size - 1);
23375 + VOLATILE ptr_t result = (ptr_t)text_end;
23376 + GC_setup_temporary_fault_handler();
23377 + if (setjmp(GC_jmp_buf) == 0) {
23378 + /* Try reading at the address. */
23379 + /* This should happen before there is another thread. */
23380 + for (; next_page < (word)(DATAEND); next_page += (word)max_page_size)
23381 + *(VOLATILE char *)next_page;
23382 + GC_reset_fault_handler();
23384 + GC_reset_fault_handler();
23385 + /* As above, we go to plan B */
23386 + result = GC_find_limit((ptr_t)(DATAEND), FALSE);
23396 @@ -1086,8 +1388,7 @@
23398 void GC_register_data_segments()
23400 -# if !defined(PCR) && !defined(SRC_M3) && !defined(NEXT) && !defined(MACOS) \
23401 - && !defined(MACOSX)
23402 +# if !defined(PCR) && !defined(SRC_M3) && !defined(MACOS)
23403 # if defined(REDIRECT_MALLOC) && defined(GC_SOLARIS_THREADS)
23404 /* As of Solaris 2.3, the Solaris threads implementation */
23405 /* allocates the data structure for the initial thread with */
23406 @@ -1104,9 +1405,6 @@
23410 -# if !defined(PCR) && (defined(NEXT) || defined(MACOSX))
23411 - GC_add_roots_inner(DATASTART, (char *) get_end(), FALSE);
23413 # if defined(MACOS)
23415 # if defined(THINK_C)
23416 @@ -1216,18 +1514,28 @@
23417 ptr_t GC_unix_get_mem(bytes)
23420 - static GC_bool initialized = FALSE;
23423 static ptr_t last_addr = HEAP_START;
23425 +# ifndef USE_MMAP_ANON
23426 + static GC_bool initialized = FALSE;
23429 if (!initialized) {
23430 fd = open("/dev/zero", O_RDONLY);
23431 + fcntl(fd, F_SETFD, FD_CLOEXEC);
23432 initialized = TRUE;
23436 if (bytes & (GC_page_size -1)) ABORT("Bad GET_MEM arg");
23437 +# ifdef USE_MMAP_ANON
23438 + result = mmap(last_addr, bytes, PROT_READ | PROT_WRITE | OPT_PROT_EXEC,
23439 + GC_MMAP_FLAGS | MAP_ANON, -1, 0/* offset */);
23441 result = mmap(last_addr, bytes, PROT_READ | PROT_WRITE | OPT_PROT_EXEC,
23442 GC_MMAP_FLAGS, fd, 0/* offset */);
23444 if (result == MAP_FAILED) return(0);
23445 last_addr = (ptr_t)result + bytes + GC_page_size - 1;
23446 last_addr = (ptr_t)((word)last_addr & ~(GC_page_size - 1));
23447 @@ -1322,7 +1630,15 @@
23448 result = (ptr_t) GlobalAlloc(0, bytes + HBLKSIZE);
23449 result = (ptr_t)(((word)result + HBLKSIZE) & ~(HBLKSIZE-1));
23451 - result = (ptr_t) VirtualAlloc(NULL, bytes,
23452 + /* VirtualProtect only works on regions returned by a */
23453 + /* single VirtualAlloc call. Thus we allocate one */
23454 + /* extra page, which will prevent merging of blocks */
23455 + /* in separate regions, and eliminate any temptation */
23456 + /* to call VirtualProtect on a range spanning regions. */
23457 + /* This wastes a small amount of memory, and risks */
23458 + /* increased fragmentation. But better alternatives */
23459 + /* would require effort. */
23460 + result = (ptr_t) VirtualAlloc(NULL, bytes + 1,
23461 MEM_COMMIT | MEM_RESERVE,
23462 PAGE_EXECUTE_READWRITE);
23464 @@ -1378,6 +1694,10 @@
23465 /* Reserve more pages */
23466 word res_bytes = (bytes + GC_sysinfo.dwAllocationGranularity-1)
23467 & ~(GC_sysinfo.dwAllocationGranularity-1);
23468 + /* If we ever support MPROTECT_VDB here, we will probably need to */
23469 + /* ensure that res_bytes is strictly > bytes, so that VirtualProtect */
23470 + /* never spans regions. It seems to be OK for a VirtualFree argument */
23471 + /* to span regions, so we should be OK for now. */
23472 result = (ptr_t) VirtualAlloc(NULL, res_bytes,
23473 MEM_RESERVE | MEM_TOP_DOWN,
23474 PAGE_EXECUTE_READWRITE);
23475 @@ -1508,6 +1828,7 @@
23478 if (-1 == zero_descr) zero_descr = open("/dev/zero", O_RDWR);
23479 + fcntl(zero_descr, F_SETFD, FD_CLOEXEC);
23480 if (0 == start_addr) return;
23481 result = mmap(start_addr, len, PROT_READ | PROT_WRITE | OPT_PROT_EXEC,
23482 MAP_FIXED | MAP_PRIVATE, zero_descr, 0);
23483 @@ -1694,7 +2015,6 @@
23484 * make sure that other system calls are similarly protected
23485 * or write only to the stack.
23488 GC_bool GC_dirty_maintained = FALSE;
23490 # ifdef DEFAULT_VDB
23491 @@ -1708,6 +2028,9 @@
23492 /* Initialize virtual dirty bit implementation. */
23493 void GC_dirty_init()
23496 + GC_printf0("Initializing DEFAULT_VDB...\n");
23498 GC_dirty_maintained = TRUE;
23501 @@ -1776,17 +2099,21 @@
23503 * This implementation maintains dirty bits itself by catching write
23504 * faults and keeping track of them. We assume nobody else catches
23505 - * SIGBUS or SIGSEGV. We assume no write faults occur in system calls
23506 - * except as a result of a read system call. This means clients must
23507 - * either ensure that system calls do not touch the heap, or must
23508 - * provide their own wrappers analogous to the one for read.
23509 + * SIGBUS or SIGSEGV. We assume no write faults occur in system calls.
23510 + * This means that clients must ensure that system calls don't write
23511 + * to the write-protected heap. Probably the best way to do this is to
23512 + * ensure that system calls write at most to POINTERFREE objects in the
23513 + * heap, and do even that only if we are on a platform on which those
23514 + * are not protected. Another alternative is to wrap system calls
23515 + * (see example for read below), but the current implementation holds
23516 + * a lock across blocking calls, making it problematic for multithreaded
23518 * We assume the page size is a multiple of HBLKSIZE.
23519 - * This implementation is currently SunOS 4.X and IRIX 5.X specific, though we
23520 - * tried to use portable code where easily possible. It is known
23521 - * not to work under a number of other systems.
23522 + * We prefer them to be the same. We avoid protecting POINTERFREE
23523 + * objects only if they are the same.
23526 -# if !defined(MSWIN32) && !defined(MSWINCE)
23527 +# if !defined(MSWIN32) && !defined(MSWINCE) && !defined(DARWIN)
23529 # include <sys/mman.h>
23530 # include <signal.h>
23531 @@ -1805,6 +2132,23 @@
23536 + /* Using vm_protect (mach syscall) over mprotect (BSD syscall) seems to
23537 + decrease the likelihood of some of the problems described below. */
23538 + #include <mach/vm_map.h>
23539 + extern mach_port_t GC_task_self;
23540 + #define PROTECT(addr,len) \
23541 + if(vm_protect(GC_task_self,(vm_address_t)(addr),(vm_size_t)(len), \
23542 + FALSE,VM_PROT_READ) != KERN_SUCCESS) { \
23543 + ABORT("vm_portect failed"); \
23545 + #define UNPROTECT(addr,len) \
23546 + if(vm_protect(GC_task_self,(vm_address_t)(addr),(vm_size_t)(len), \
23547 + FALSE,VM_PROT_READ|VM_PROT_WRITE) != KERN_SUCCESS) { \
23548 + ABORT("vm_portect failed"); \
23553 # include <signal.h>
23555 @@ -1822,20 +2166,22 @@
23556 &protect_junk)) { \
23557 ABORT("un-VirtualProtect failed"); \
23561 +# endif /* !DARWIN */
23562 +# endif /* MSWIN32 || MSWINCE || DARWIN */
23564 #if defined(SUNOS4) || defined(FREEBSD)
23565 typedef void (* SIG_PF)();
23567 +#endif /* SUNOS4 || FREEBSD */
23569 #if defined(SUNOS5SIGS) || defined(OSF1) || defined(LINUX) \
23570 - || defined(MACOSX) || defined(HURD)
23573 typedef void (* SIG_PF)(int);
23575 typedef void (* SIG_PF)();
23578 +#endif /* SUNOS5SIGS || OSF1 || LINUX || HURD */
23580 #if defined(MSWIN32)
23581 typedef LPTOP_LEVEL_EXCEPTION_FILTER SIG_PF;
23583 @@ -1849,7 +2195,8 @@
23585 #if defined(IRIX5) || defined(OSF1) || defined(HURD)
23586 typedef void (* REAL_SIG_PF)(int, int, struct sigcontext *);
23588 +#endif /* IRIX5 || OSF1 || HURD */
23590 #if defined(SUNOS5SIGS)
23592 # define SIGINFO __siginfo
23593 @@ -1861,13 +2208,14 @@
23595 typedef void (* REAL_SIG_PF)();
23598 +#endif /* SUNOS5SIGS */
23601 # if __GLIBC__ > 2 || __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2
23602 typedef struct sigcontext s_c;
23603 # else /* glibc < 2.2 */
23604 # include <linux/version.h>
23605 -# if (LINUX_VERSION_CODE >= 0x20100) && !defined(M68K) || defined(ALPHA)
23606 +# if (LINUX_VERSION_CODE >= 0x20100) && !defined(M68K) || defined(ALPHA) || defined(ARM32)
23607 typedef struct sigcontext s_c;
23609 typedef struct sigcontext_struct s_c;
23610 @@ -1895,139 +2243,14 @@
23611 return (char *)faultaddr;
23613 # endif /* !ALPHA */
23616 -# if defined(MACOSX) /* Should also test for PowerPC? */
23617 - typedef void (* REAL_SIG_PF)(int, int, struct sigcontext *);
23619 -/* Decodes the machine instruction which was responsible for the sending of the
23620 - SIGBUS signal. Sadly this is the only way to find the faulting address because
23621 - the signal handler doesn't get it directly from the kernel (although it is
23622 - available on the Mach level, but droppped by the BSD personality before it
23623 - calls our signal handler...)
23624 - This code should be able to deal correctly with all PPCs starting from the
23625 - 601 up to and including the G4s (including Velocity Engine). */
23626 -#define EXTRACT_OP1(iw) (((iw) & 0xFC000000) >> 26)
23627 -#define EXTRACT_OP2(iw) (((iw) & 0x000007FE) >> 1)
23628 -#define EXTRACT_REGA(iw) (((iw) & 0x001F0000) >> 16)
23629 -#define EXTRACT_REGB(iw) (((iw) & 0x03E00000) >> 21)
23630 -#define EXTRACT_REGC(iw) (((iw) & 0x0000F800) >> 11)
23631 -#define EXTRACT_DISP(iw) ((short *) &(iw))[1]
23633 -static char *get_fault_addr(struct sigcontext *scp)
23635 - unsigned int instr = *((unsigned int *) scp->sc_ir);
23636 - unsigned int * regs = &((unsigned int *) scp->sc_regs)[2];
23637 - int disp = 0, tmp;
23638 - unsigned int baseA = 0, baseB = 0;
23639 - unsigned int addr, alignmask = 0xFFFFFFFF;
23641 -#ifdef GC_DEBUG_DECODER
23642 - GC_err_printf1("Instruction: 0x%lx\n", instr);
23643 - GC_err_printf1("Opcode 1: d\n", (int)EXTRACT_OP1(instr));
23645 - switch(EXTRACT_OP1(instr)) {
23646 - case 38: /* stb */
23647 - case 39: /* stbu */
23648 - case 54: /* stfd */
23649 - case 55: /* stfdu */
23650 - case 52: /* stfs */
23651 - case 53: /* stfsu */
23652 - case 44: /* sth */
23653 - case 45: /* sthu */
23654 - case 47: /* stmw */
23655 - case 36: /* stw */
23656 - case 37: /* stwu */
23657 - tmp = EXTRACT_REGA(instr);
23659 - baseA = regs[tmp];
23660 - disp = EXTRACT_DISP(instr);
23663 -#ifdef GC_DEBUG_DECODER
23664 - GC_err_printf1("Opcode 2: %d\n", (int)EXTRACT_OP2(instr));
23666 - switch(EXTRACT_OP2(instr)) {
23667 - case 86: /* dcbf */
23668 - case 54: /* dcbst */
23669 - case 1014: /* dcbz */
23670 - case 247: /* stbux */
23671 - case 215: /* stbx */
23672 - case 759: /* stfdux */
23673 - case 727: /* stfdx */
23674 - case 983: /* stfiwx */
23675 - case 695: /* stfsux */
23676 - case 663: /* stfsx */
23677 - case 918: /* sthbrx */
23678 - case 439: /* sthux */
23679 - case 407: /* sthx */
23680 - case 661: /* stswx */
23681 - case 662: /* stwbrx */
23682 - case 150: /* stwcx. */
23683 - case 183: /* stwux */
23684 - case 151: /* stwx */
23685 - case 135: /* stvebx */
23686 - case 167: /* stvehx */
23687 - case 199: /* stvewx */
23688 - case 231: /* stvx */
23689 - case 487: /* stvxl */
23690 - tmp = EXTRACT_REGA(instr);
23692 - baseA = regs[tmp];
23693 - baseB = regs[EXTRACT_REGC(instr)];
23694 - /* determine Altivec alignment mask */
23695 - switch(EXTRACT_OP2(instr)) {
23696 - case 167: /* stvehx */
23697 - alignmask = 0xFFFFFFFE;
23699 - case 199: /* stvewx */
23700 - alignmask = 0xFFFFFFFC;
23702 - case 231: /* stvx */
23703 - alignmask = 0xFFFFFFF0;
23705 - case 487: /* stvxl */
23706 - alignmask = 0xFFFFFFF0;
23710 - case 725: /* stswi */
23711 - tmp = EXTRACT_REGA(instr);
23713 - baseA = regs[tmp];
23715 - default: /* ignore instruction */
23716 -#ifdef GC_DEBUG_DECODER
23717 - GC_err_printf("Ignored by inner handler\n");
23723 - default: /* ignore instruction */
23724 -#ifdef GC_DEBUG_DECODER
23725 - GC_err_printf("Ignored by main handler\n");
23731 - addr = (baseA + baseB) + disp;
23732 - addr &= alignmask;
23733 -#ifdef GC_DEBUG_DECODER
23734 - GC_err_printf1("BaseA: %d\n", baseA);
23735 - GC_err_printf1("BaseB: %d\n", baseB);
23736 - GC_err_printf1("Disp: %d\n", disp);
23737 - GC_err_printf1("Address: %d\n", addr);
23739 - return (char *)addr;
23741 -#endif /* MACOSX */
23742 +# endif /* LINUX */
23745 SIG_PF GC_old_bus_handler;
23746 SIG_PF GC_old_segv_handler; /* Also old MSWIN32 ACCESS_VIOLATION filter */
23747 +#endif /* !DARWIN */
23750 +#if defined(THREADS)
23751 /* We need to lock around the bitmap update in the write fault handler */
23752 /* in order to avoid the risk of losing a bit. We do this with a */
23753 /* test-and-set spin lock if we know how to do that. Otherwise we */
23754 @@ -2076,6 +2299,7 @@
23755 #endif /* !THREADS */
23758 +#if !defined(DARWIN)
23759 # if defined (SUNOS4) || defined(FREEBSD)
23760 void GC_write_fault_handler(sig, code, scp, addr)
23762 @@ -2091,7 +2315,8 @@
23763 # define SIG_OK (sig == SIGBUS)
23764 # define CODE_OK (code == BUS_PAGE_FAULT)
23767 +# endif /* SUNOS4 || FREEBSD */
23769 # if defined(IRIX5) || defined(OSF1) || defined(HURD)
23770 # include <errno.h>
23771 void GC_write_fault_handler(int sig, int code, struct sigcontext *scp)
23772 @@ -2107,7 +2332,8 @@
23773 # define SIG_OK (sig == SIGBUS || sig == SIGSEGV)
23774 # define CODE_OK TRUE
23777 +# endif /* IRIX5 || OSF1 || HURD */
23779 # if defined(LINUX)
23780 # if defined(ALPHA) || defined(M68K)
23781 void GC_write_fault_handler(int sig, int code, s_c * sc)
23782 @@ -2115,15 +2341,20 @@
23783 # if defined(IA64) || defined(HP_PA)
23784 void GC_write_fault_handler(int sig, siginfo_t * si, s_c * scp)
23786 +# if defined(ARM32)
23787 + void GC_write_fault_handler(int sig, int a2, int a3, int a4, s_c sc)
23789 void GC_write_fault_handler(int sig, s_c sc)
23793 # define SIG_OK (sig == SIGSEGV)
23794 # define CODE_OK TRUE
23795 /* Empirically c.trapno == 14, on IA32, but is that useful? */
23796 /* Should probably consider alignment issues on other */
23797 /* architectures. */
23799 +# endif /* LINUX */
23801 # if defined(SUNOS5SIGS)
23803 void GC_write_fault_handler(int sig, struct SIGINFO *scp, void * context)
23804 @@ -2144,13 +2375,7 @@
23805 # define SIG_OK (sig == SIGSEGV)
23806 # define CODE_OK (scp -> si_code == SEGV_ACCERR)
23810 -# if defined(MACOSX)
23811 - void GC_write_fault_handler(int sig, int code, struct sigcontext *scp)
23812 -# define SIG_OK (sig == SIGBUS)
23813 -# define CODE_OK (code == 0 /* experimentally determined */)
23815 +# endif /* SUNOS5SIGS */
23817 # if defined(MSWIN32) || defined(MSWINCE)
23818 LONG WINAPI GC_write_fault_handler(struct _EXCEPTION_POINTERS *exc_info)
23819 @@ -2158,7 +2383,7 @@
23820 STATUS_ACCESS_VIOLATION)
23821 # define CODE_OK (exc_info -> ExceptionRecord -> ExceptionInformation[0] == 1)
23824 +# endif /* MSWIN32 || MSWINCE */
23826 register unsigned i;
23828 @@ -2218,6 +2443,9 @@
23829 # if defined(POWERPC)
23830 char * addr = (char *) (sc.regs->dar);
23832 +# if defined(ARM32)
23833 + char * addr = (char *)sc.fault_address;
23835 --> architecture not supported
23838 @@ -2225,8 +2453,6 @@
23842 -# if defined(MACOSX)
23843 - char * addr = get_fault_addr(scp);
23845 # if defined(MSWIN32) || defined(MSWINCE)
23846 char * addr = (char *) (exc_info -> ExceptionRecord
23847 @@ -2291,9 +2517,6 @@
23848 (*(REAL_SIG_PF)old_handler) (sig, code, scp);
23852 - (*(REAL_SIG_PF)old_handler) (sig, code, scp);
23855 return((*old_handler)(exc_info));
23857 @@ -2335,10 +2558,11 @@
23858 ABORT("Unexpected bus error or segmentation fault");
23861 +#endif /* !DARWIN */
23864 * We hold the allocation lock. We expect block h to be written
23865 - * shortly. Ensure that all pages cvontaining any part of the n hblks
23866 + * shortly. Ensure that all pages containing any part of the n hblks
23867 * starting at h are no longer protected. If is_ptrfree is false,
23868 * also ensure that they will subsequently appear to be dirty.
23870 @@ -2367,6 +2591,7 @@
23871 UNPROTECT(h_trunc, (ptr_t)h_end - (ptr_t)h_trunc);
23874 +#if !defined(DARWIN)
23875 void GC_dirty_init()
23877 # if defined(SUNOS5SIGS) || defined(IRIX5) || defined(LINUX) || \
23878 @@ -2389,13 +2614,6 @@
23879 (void)sigaddset(&act.sa_mask, SIG_SUSPEND);
23880 # endif /* SIG_SUSPEND */
23882 -# if defined(MACOSX)
23883 - struct sigaction act, oldact;
23885 - act.sa_flags = SA_RESTART;
23886 - act.sa_handler = GC_write_fault_handler;
23887 - sigemptyset(&act.sa_mask);
23890 GC_printf0("Inititalizing mprotect virtual dirty bit implementation\n");
23892 @@ -2435,9 +2653,12 @@
23893 sigaction(SIGSEGV, 0, &oldact);
23894 sigaction(SIGSEGV, &act, 0);
23896 - sigaction(SIGSEGV, &act, &oldact);
23898 + int res = sigaction(SIGSEGV, &act, &oldact);
23899 + if (res != 0) ABORT("Sigaction failed");
23902 -# if defined(_sigargs) || defined(HURD)
23903 +# if defined(_sigargs) || defined(HURD) || !defined(SA_SIGINFO)
23904 /* This is Irix 5.x, not 6.x. Irix 5.x does not have */
23905 /* sa_sigaction. */
23906 GC_old_segv_handler = oldact.sa_handler;
23907 @@ -2458,7 +2679,7 @@
23911 -# if defined(MACOSX) || defined(HPUX) || defined(LINUX) || defined(HURD)
23912 +# if defined(HPUX) || defined(LINUX) || defined(HURD)
23913 sigaction(SIGBUS, &act, &oldact);
23914 GC_old_bus_handler = oldact.sa_handler;
23915 if (GC_old_bus_handler == SIG_IGN) {
23916 @@ -2470,7 +2691,7 @@
23917 GC_err_printf0("Replaced other SIGBUS handler\n");
23920 -# endif /* MACOS || HPUX || LINUX */
23921 +# endif /* HPUX || LINUX || HURD */
23922 # if defined(MSWIN32)
23923 GC_old_segv_handler = SetUnhandledExceptionFilter(GC_write_fault_handler);
23924 if (GC_old_segv_handler != NULL) {
23925 @@ -2482,6 +2703,7 @@
23929 +#endif /* !DARWIN */
23931 int GC_incremental_protection_needs()
23933 @@ -2628,15 +2850,23 @@
23934 ((ptr_t)end_block - (ptr_t)start_block) + HBLKSIZE);
23937 -#if !defined(MSWIN32) && !defined(MSWINCE) && !defined(THREADS) \
23938 - && !defined(GC_USE_LD_WRAP)
23941 +/* We no longer wrap read by default, since that was causing too many */
23942 +/* problems. It is preferred that the client instead avoids writing */
23943 +/* to the write-protected heap with a system call. */
23944 +/* This still serves as sample code if you do want to wrap system calls.*/
23946 +#if !defined(MSWIN32) && !defined(MSWINCE) && !defined(GC_USE_LD_WRAP)
23947 /* Replacement for UNIX system call. */
23948 /* Other calls that write to the heap should be handled similarly. */
23949 /* Note that this doesn't work well for blocking reads: It will hold */
23950 -/* tha allocation lock for the entur duration of the call. Multithreaded */
23951 +/* the allocation lock for the entire duration of the call. Multithreaded */
23952 /* clients should really ensure that it won't block, either by setting */
23953 /* the descriptor nonblocking, or by calling select or poll first, to */
23954 /* make sure that input is available. */
23955 +/* Another, preferred alternative is to ensure that system calls never */
23956 +/* write to the protected heap (see above). */
23957 # if defined(__STDC__) && !defined(SUNOS4)
23958 # include <unistd.h>
23959 # include <sys/uio.h>
23960 @@ -2706,6 +2936,8 @@
23961 /* actually calls. */
23967 GC_bool GC_page_was_ever_dirty(h)
23969 @@ -2721,13 +2953,6 @@
23973 -# else /* !MPROTECT_VDB */
23975 -# ifdef GC_USE_LD_WRAP
23976 - ssize_t __wrap_read(int fd, void *buf, size_t nbyte)
23977 - { return __real_read(fd, buf, nbyte); }
23980 # endif /* MPROTECT_VDB */
23983 @@ -2806,6 +3031,7 @@
23985 GC_proc_fd = syscall(SYS_ioctl, fd, PIOCOPENPD, 0);
23987 + syscall(SYS_fcntl, GC_proc_fd, F_SETFD, FD_CLOEXEC);
23988 if (GC_proc_fd < 0) {
23989 ABORT("/proc ioctl failed");
23991 @@ -3045,6 +3271,553 @@
23993 # endif /* PCR_VDB */
23995 +#if defined(MPROTECT_VDB) && defined(DARWIN)
23996 +/* The following sources were used as a *reference* for this exception handling
23998 + 1. Apple's mach/xnu documentation
23999 + 2. Timothy J. Wood's "Mach Exception Handlers 101" post to the
24000 + omnigroup's macosx-dev list.
24001 + www.omnigroup.com/mailman/archive/macosx-dev/2000-June/002030.html
24002 + 3. macosx-nat.c from Apple's GDB source code.
24005 +/* There seem to be numerous problems with darwin's mach exception handling.
24006 + I'm pretty sure they are not problems in my code. Search for
24007 + BROKEN_EXCEPTION_HANDLING for more information. */
24008 +#define BROKEN_EXCEPTION_HANDLING
24010 +#include <mach/mach.h>
24011 +#include <mach/mach_error.h>
24012 +#include <mach/thread_status.h>
24013 +#include <mach/exception.h>
24014 +#include <mach/task.h>
24015 +#include <pthread.h>
24017 +/* These are not defined in any header, although they are documented */
24018 +extern boolean_t exc_server(mach_msg_header_t *,mach_msg_header_t *);
24019 +extern kern_return_t exception_raise(
24020 + mach_port_t,mach_port_t,mach_port_t,
24021 + exception_type_t,exception_data_t,mach_msg_type_number_t);
24022 +extern kern_return_t exception_raise_state(
24023 + mach_port_t,mach_port_t,mach_port_t,
24024 + exception_type_t,exception_data_t,mach_msg_type_number_t,
24025 + thread_state_flavor_t*,thread_state_t,mach_msg_type_number_t,
24026 + thread_state_t,mach_msg_type_number_t*);
24027 +extern kern_return_t exception_raise_state_identity(
24028 + mach_port_t,mach_port_t,mach_port_t,
24029 + exception_type_t,exception_data_t,mach_msg_type_number_t,
24030 + thread_state_flavor_t*,thread_state_t,mach_msg_type_number_t,
24031 + thread_state_t,mach_msg_type_number_t*);
24034 +#define MAX_EXCEPTION_PORTS 16
24036 +static mach_port_t GC_task_self;
24039 + mach_msg_type_number_t count;
24040 + exception_mask_t masks[MAX_EXCEPTION_PORTS];
24041 + exception_handler_t ports[MAX_EXCEPTION_PORTS];
24042 + exception_behavior_t behaviors[MAX_EXCEPTION_PORTS];
24043 + thread_state_flavor_t flavors[MAX_EXCEPTION_PORTS];
24044 +} GC_old_exc_ports;
24047 + mach_port_t exception;
24048 +#if defined(THREADS)
24049 + mach_port_t reply;
24054 + mach_msg_header_t head;
24058 + GC_MP_NORMAL, GC_MP_DISCARDING, GC_MP_STOPPED
24059 +} GC_mprotect_state_t;
24061 +/* FIXME: 1 and 2 seem to be safe to use in the msgh_id field,
24062 + but it isn't documented. Use the source and see if they
24065 +#define ID_RESUME 2
24067 +/* These values are only used on the reply port */
24070 +#if defined(THREADS)
24072 +GC_mprotect_state_t GC_mprotect_state;
24074 +/* The following should ONLY be called when the world is stopped */
24075 +static void GC_mprotect_thread_notify(mach_msg_id_t id) {
24078 + mach_msg_trailer_t trailer;
24080 + mach_msg_return_t r;
24081 + /* remote, local */
24082 + buf.msg.head.msgh_bits =
24083 + MACH_MSGH_BITS(MACH_MSG_TYPE_MAKE_SEND,0);
24084 + buf.msg.head.msgh_size = sizeof(buf.msg);
24085 + buf.msg.head.msgh_remote_port = GC_ports.exception;
24086 + buf.msg.head.msgh_local_port = MACH_PORT_NULL;
24087 + buf.msg.head.msgh_id = id;
24091 + MACH_SEND_MSG|MACH_RCV_MSG|MACH_RCV_LARGE,
24095 + MACH_MSG_TIMEOUT_NONE,
24097 + if(r != MACH_MSG_SUCCESS)
24098 + ABORT("mach_msg failed in GC_mprotect_thread_notify");
24099 + if(buf.msg.head.msgh_id != ID_ACK)
24100 + ABORT("invalid ack in GC_mprotect_thread_notify");
24103 +/* Should only be called by the mprotect thread */
24104 +static void GC_mprotect_thread_reply() {
24106 + mach_msg_return_t r;
24107 + /* remote, local */
24108 + msg.head.msgh_bits =
24109 + MACH_MSGH_BITS(MACH_MSG_TYPE_MAKE_SEND,0);
24110 + msg.head.msgh_size = sizeof(msg);
24111 + msg.head.msgh_remote_port = GC_ports.reply;
24112 + msg.head.msgh_local_port = MACH_PORT_NULL;
24113 + msg.head.msgh_id = ID_ACK;
24121 + MACH_MSG_TIMEOUT_NONE,
24123 + if(r != MACH_MSG_SUCCESS)
24124 + ABORT("mach_msg failed in GC_mprotect_thread_reply");
24127 +void GC_mprotect_stop() {
24128 + GC_mprotect_thread_notify(ID_STOP);
24130 +void GC_mprotect_resume() {
24131 + GC_mprotect_thread_notify(ID_RESUME);
24134 +#else /* !THREADS */
24135 +/* The compiler should optimize away any GC_mprotect_state computations */
24136 +#define GC_mprotect_state GC_MP_NORMAL
24139 +static void *GC_mprotect_thread(void *arg) {
24140 + mach_msg_return_t r;
24141 + /* These two structures contain some private kernel data. We don't need to
24142 + access any of it so we don't bother defining a proper struct. The
24143 + correct definitions are in the xnu source code. */
24145 + mach_msg_header_t head;
24149 + mach_msg_header_t head;
24150 + mach_msg_body_t msgh_body;
24154 + mach_msg_id_t id;
24159 + MACH_RCV_MSG|MACH_RCV_LARGE|
24160 + (GC_mprotect_state == GC_MP_DISCARDING ? MACH_RCV_TIMEOUT : 0),
24163 + GC_ports.exception,
24164 + GC_mprotect_state == GC_MP_DISCARDING ? 0 : MACH_MSG_TIMEOUT_NONE,
24167 + id = r == MACH_MSG_SUCCESS ? msg.head.msgh_id : -1;
24169 +#if defined(THREADS)
24170 + if(GC_mprotect_state == GC_MP_DISCARDING) {
24171 + if(r == MACH_RCV_TIMED_OUT) {
24172 + GC_mprotect_state = GC_MP_STOPPED;
24173 + GC_mprotect_thread_reply();
24176 + if(r == MACH_MSG_SUCCESS && (id == ID_STOP || id == ID_RESUME))
24177 + ABORT("out of order mprotect thread request");
24181 + if(r != MACH_MSG_SUCCESS) {
24182 + GC_err_printf2("mach_msg failed with %d %s\n",
24183 + (int)r,mach_error_string(r));
24184 + ABORT("mach_msg failed");
24188 +#if defined(THREADS)
24190 + if(GC_mprotect_state != GC_MP_NORMAL)
24191 + ABORT("Called mprotect_stop when state wasn't normal");
24192 + GC_mprotect_state = GC_MP_DISCARDING;
24195 + if(GC_mprotect_state != GC_MP_STOPPED)
24196 + ABORT("Called mprotect_resume when state wasn't stopped");
24197 + GC_mprotect_state = GC_MP_NORMAL;
24198 + GC_mprotect_thread_reply();
24200 +#endif /* THREADS */
24202 + /* Handle the message (calls catch_exception_raise) */
24203 + if(!exc_server(&msg.head,&reply.head))
24204 + ABORT("exc_server failed");
24205 + /* Send the reply */
24209 + reply.head.msgh_size,
24212 + MACH_MSG_TIMEOUT_NONE,
24214 + if(r != MACH_MSG_SUCCESS) {
24215 + /* This will fail if the thread dies, but the thread shouldn't
24217 + #ifdef BROKEN_EXCEPTION_HANDLING
24219 + "mach_msg failed with %d %s while sending exc reply\n",
24220 + (int)r,mach_error_string(r));
24222 + ABORT("mach_msg failed while sending exception reply");
24227 + /* NOT REACHED */
24231 +/* All this SIGBUS code shouldn't be necessary. All protection faults should
24232 + be going throught the mach exception handler. However, it seems a SIGBUS is
24233 + occasionally sent for some unknown reason. Even more odd, it seems to be
24234 + meaningless and safe to ignore. */
24235 +#ifdef BROKEN_EXCEPTION_HANDLING
24237 +typedef void (* SIG_PF)();
24238 +static SIG_PF GC_old_bus_handler;
24240 +/* Updates to this aren't atomic, but the SIGBUSs seem pretty rare.
24241 + Even if this doesn't get updated property, it isn't really a problem */
24242 +static int GC_sigbus_count;
24244 +static void GC_darwin_sigbus(int num,siginfo_t *sip,void *context) {
24245 + if(num != SIGBUS) ABORT("Got a non-sigbus signal in the sigbus handler");
24247 + /* Ugh... some seem safe to ignore, but too many in a row probably means
24248 + trouble. GC_sigbus_count is reset for each mach exception that is
24250 + if(GC_sigbus_count >= 8) {
24251 + ABORT("Got more than 8 SIGBUSs in a row!");
24253 + GC_sigbus_count++;
24254 + GC_err_printf0("GC: WARNING: Ignoring SIGBUS.\n");
24257 +#endif /* BROKEN_EXCEPTION_HANDLING */
24259 +void GC_dirty_init() {
24262 + pthread_t thread;
24263 + pthread_attr_t attr;
24264 + exception_mask_t mask;
24266 +# ifdef PRINTSTATS
24267 + GC_printf0("Inititalizing mach/darwin mprotect virtual dirty bit "
24268 + "implementation\n");
24270 +# ifdef BROKEN_EXCEPTION_HANDLING
24271 + GC_err_printf0("GC: WARNING: Enabling workarounds for various darwin "
24272 + "exception handling bugs.\n");
24274 + GC_dirty_maintained = TRUE;
24275 + if (GC_page_size % HBLKSIZE != 0) {
24276 + GC_err_printf0("Page size not multiple of HBLKSIZE\n");
24277 + ABORT("Page size not multiple of HBLKSIZE");
24280 + GC_task_self = me = mach_task_self();
24282 + r = mach_port_allocate(me,MACH_PORT_RIGHT_RECEIVE,&GC_ports.exception);
24283 + if(r != KERN_SUCCESS) ABORT("mach_port_allocate failed (exception port)");
24285 + r = mach_port_insert_right(me,GC_ports.exception,GC_ports.exception,
24286 + MACH_MSG_TYPE_MAKE_SEND);
24287 + if(r != KERN_SUCCESS)
24288 + ABORT("mach_port_insert_right failed (exception port)");
24290 + #if defined(THREADS)
24291 + r = mach_port_allocate(me,MACH_PORT_RIGHT_RECEIVE,&GC_ports.reply);
24292 + if(r != KERN_SUCCESS) ABORT("mach_port_allocate failed (reply port)");
24295 + /* The exceptions we want to catch */
24296 + mask = EXC_MASK_BAD_ACCESS;
24298 + r = task_get_exception_ports(
24301 + GC_old_exc_ports.masks,
24302 + &GC_old_exc_ports.count,
24303 + GC_old_exc_ports.ports,
24304 + GC_old_exc_ports.behaviors,
24305 + GC_old_exc_ports.flavors
24307 + if(r != KERN_SUCCESS) ABORT("task_get_exception_ports failed");
24309 + r = task_set_exception_ports(
24312 + GC_ports.exception,
24313 + EXCEPTION_DEFAULT,
24314 + MACHINE_THREAD_STATE
24316 + if(r != KERN_SUCCESS) ABORT("task_set_exception_ports failed");
24318 + if(pthread_attr_init(&attr) != 0) ABORT("pthread_attr_init failed");
24319 + if(pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED) != 0)
24320 + ABORT("pthread_attr_setdetachedstate failed");
24322 +# undef pthread_create
24323 + /* This will call the real pthread function, not our wrapper */
24324 + if(pthread_create(&thread,&attr,GC_mprotect_thread,NULL) != 0)
24325 + ABORT("pthread_create failed");
24326 + pthread_attr_destroy(&attr);
24328 + /* Setup the sigbus handler for ignoring the meaningless SIGBUSs */
24329 + #ifdef BROKEN_EXCEPTION_HANDLING
24331 + struct sigaction sa, oldsa;
24332 + sa.sa_handler = (SIG_PF)GC_darwin_sigbus;
24333 + sigemptyset(&sa.sa_mask);
24334 + sa.sa_flags = SA_RESTART|SA_SIGINFO;
24335 + if(sigaction(SIGBUS,&sa,&oldsa) < 0) ABORT("sigaction");
24336 + GC_old_bus_handler = (SIG_PF)oldsa.sa_handler;
24337 + if (GC_old_bus_handler != SIG_DFL) {
24338 +# ifdef PRINTSTATS
24339 + GC_err_printf0("Replaced other SIGBUS handler\n");
24343 + #endif /* BROKEN_EXCEPTION_HANDLING */
24346 +/* The source code for Apple's GDB was used as a reference for the exception
24347 + forwarding code. This code is similar to be GDB code only because there is
24348 + only one way to do it. */
24349 +static kern_return_t GC_forward_exception(
24350 + mach_port_t thread,
24351 + mach_port_t task,
24352 + exception_type_t exception,
24353 + exception_data_t data,
24354 + mach_msg_type_number_t data_count
24358 + mach_port_t port;
24359 + exception_behavior_t behavior;
24360 + thread_state_flavor_t flavor;
24362 + thread_state_data_t thread_state;
24363 + mach_msg_type_number_t thread_state_count = THREAD_STATE_MAX;
24365 + for(i=0;i<GC_old_exc_ports.count;i++)
24366 + if(GC_old_exc_ports.masks[i] & (1 << exception))
24368 + if(i==GC_old_exc_ports.count) ABORT("No handler for exception!");
24370 + port = GC_old_exc_ports.ports[i];
24371 + behavior = GC_old_exc_ports.behaviors[i];
24372 + flavor = GC_old_exc_ports.flavors[i];
24374 + if(behavior != EXCEPTION_DEFAULT) {
24375 + r = thread_get_state(thread,flavor,thread_state,&thread_state_count);
24376 + if(r != KERN_SUCCESS)
24377 + ABORT("thread_get_state failed in forward_exception");
24380 + switch(behavior) {
24381 + case EXCEPTION_DEFAULT:
24382 + r = exception_raise(port,thread,task,exception,data,data_count);
24384 + case EXCEPTION_STATE:
24385 + r = exception_raise_state(port,thread,task,exception,data,
24386 + data_count,&flavor,thread_state,thread_state_count,
24387 + thread_state,&thread_state_count);
24389 + case EXCEPTION_STATE_IDENTITY:
24390 + r = exception_raise_state_identity(port,thread,task,exception,data,
24391 + data_count,&flavor,thread_state,thread_state_count,
24392 + thread_state,&thread_state_count);
24395 + r = KERN_FAILURE; /* make gcc happy */
24396 + ABORT("forward_exception: unknown behavior");
24400 + if(behavior != EXCEPTION_DEFAULT) {
24401 + r = thread_set_state(thread,flavor,thread_state,thread_state_count);
24402 + if(r != KERN_SUCCESS)
24403 + ABORT("thread_set_state failed in forward_exception");
24409 +#define FWD() GC_forward_exception(thread,task,exception,code,code_count)
24411 +/* This violates the namespace rules but there isn't anything that can be done
24412 + about it. The exception handling stuff is hard coded to call this */
24414 +catch_exception_raise(
24415 + mach_port_t exception_port,mach_port_t thread,mach_port_t task,
24416 + exception_type_t exception,exception_data_t code,
24417 + mach_msg_type_number_t code_count
24424 + thread_state_flavor_t flavor = PPC_EXCEPTION_STATE;
24425 + mach_msg_type_number_t exc_state_count = PPC_EXCEPTION_STATE_COUNT;
24426 + ppc_exception_state_t exc_state;
24428 +# error FIXME for non-ppc darwin
24432 + if(exception != EXC_BAD_ACCESS || code[0] != KERN_PROTECTION_FAILURE) {
24433 + #ifdef DEBUG_EXCEPTION_HANDLING
24434 + /* We aren't interested, pass it on to the old handler */
24435 + GC_printf3("Exception: 0x%x Code: 0x%x 0x%x in catch....\n",
24437 + code_count > 0 ? code[0] : -1,
24438 + code_count > 1 ? code[1] : -1);
24443 + r = thread_get_state(thread,flavor,
24444 + (natural_t*)&exc_state,&exc_state_count);
24445 + if(r != KERN_SUCCESS) {
24446 + /* The thread is supposed to be suspended while the exception handler
24447 + is called. This shouldn't fail. */
24448 + #ifdef BROKEN_EXCEPTION_HANDLING
24449 + GC_err_printf0("thread_get_state failed in "
24450 + "catch_exception_raise\n");
24451 + return KERN_SUCCESS;
24453 + ABORT("thread_get_state failed in catch_exception_raise");
24457 + /* This is the address that caused the fault */
24458 + addr = (char*) exc_state.dar;
24460 + if((HDR(addr)) == 0) {
24461 + /* Ugh... just like the SIGBUS problem above, it seems we get a bogus
24462 + KERN_PROTECTION_FAILURE every once and a while. We wait till we get
24463 + a bunch in a row before doing anything about it. If a "real" fault
24464 + ever occurres it'll just keep faulting over and over and we'll hit
24465 + the limit pretty quickly. */
24466 + #ifdef BROKEN_EXCEPTION_HANDLING
24467 + static char *last_fault;
24468 + static int last_fault_count;
24470 + if(addr != last_fault) {
24471 + last_fault = addr;
24472 + last_fault_count = 0;
24474 + if(++last_fault_count < 32) {
24475 + if(last_fault_count == 1)
24477 + "GC: WARNING: Ignoring KERN_PROTECTION_FAILURE at %p\n",
24479 + return KERN_SUCCESS;
24482 + GC_err_printf1("Unexpected KERN_PROTECTION_FAILURE at %p\n",addr);
24483 + /* Can't pass it along to the signal handler because that is
24484 + ignoring SIGBUS signals. We also shouldn't call ABORT here as
24485 + signals don't always work too well from the exception handler. */
24486 + GC_err_printf0("Aborting\n");
24487 + exit(EXIT_FAILURE);
24488 + #else /* BROKEN_EXCEPTION_HANDLING */
24489 + /* Pass it along to the next exception handler
24490 + (which should call SIGBUS/SIGSEGV) */
24492 + #endif /* !BROKEN_EXCEPTION_HANDLING */
24495 + #ifdef BROKEN_EXCEPTION_HANDLING
24496 + /* Reset the number of consecutive SIGBUSs */
24497 + GC_sigbus_count = 0;
24500 + if(GC_mprotect_state == GC_MP_NORMAL) { /* common case */
24501 + h = (struct hblk*)((word)addr & ~(GC_page_size-1));
24502 + UNPROTECT(h, GC_page_size);
24503 + for (i = 0; i < divHBLKSZ(GC_page_size); i++) {
24504 + register int index = PHT_HASH(h+i);
24505 + async_set_pht_entry_from_index(GC_dirty_pages, index);
24507 + } else if(GC_mprotect_state == GC_MP_DISCARDING) {
24508 + /* Lie to the thread for now. No sense UNPROTECT()ing the memory
24509 + when we're just going to PROTECT() it again later. The thread
24510 + will just fault again once it resumes */
24512 + /* Shouldn't happen, i don't think */
24513 + GC_printf0("KERN_PROTECTION_FAILURE while world is stopped\n");
24516 + return KERN_SUCCESS;
24520 +/* These should never be called, but just in case... */
24521 +kern_return_t catch_exception_raise_state(mach_port_name_t exception_port,
24522 + int exception, exception_data_t code, mach_msg_type_number_t codeCnt,
24523 + int flavor, thread_state_t old_state, int old_stateCnt,
24524 + thread_state_t new_state, int new_stateCnt)
24526 + ABORT("catch_exception_raise_state");
24527 + return(KERN_INVALID_ARGUMENT);
24529 +kern_return_t catch_exception_raise_state_identity(
24530 + mach_port_name_t exception_port, mach_port_t thread, mach_port_t task,
24531 + int exception, exception_data_t code, mach_msg_type_number_t codeCnt,
24532 + int flavor, thread_state_t old_state, int old_stateCnt,
24533 + thread_state_t new_state, int new_stateCnt)
24535 + ABORT("catch_exception_raise_state_identity");
24536 + return(KERN_INVALID_ARGUMENT);
24540 +#endif /* DARWIN && MPROTECT_VDB */
24542 # ifndef HAVE_INCREMENTAL_PROTECTION_NEEDS
24543 int GC_incremental_protection_needs()
24545 @@ -3105,19 +3878,20 @@
24549 -#ifdef SAVE_CALL_CHAIN
24550 +#ifdef NEED_CALLINFO
24551 /* Fill in the pc and argument information for up to NFRAMES of my */
24552 /* callers. Ignore my frame and my callers frame. */
24555 -# include <features.h>
24556 -# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2
24557 -# define HAVE_BUILTIN_BACKTRACE
24559 +# include <unistd.h>
24562 +#endif /* NEED_CALLINFO */
24564 +#ifdef SAVE_CALL_CHAIN
24566 #if NARGS == 0 && NFRAMES % 2 == 0 /* No padding */ \
24567 - && defined(HAVE_BUILTIN_BACKTRACE)
24568 + && defined(GC_HAVE_BUILTIN_BACKTRACE)
24570 #include <execinfo.h>
24572 @@ -3188,31 +3962,139 @@
24574 #endif /* SAVE_CALL_CHAIN */
24576 -#if defined(LINUX) && defined(__ELF__) && \
24577 - (!defined(SMALL_CONFIG) || defined(USE_PROC_FOR_LIBRARIES))
24578 -#ifdef GC_USE_LD_WRAP
24579 -# define READ __real_read
24581 -# define READ read
24584 +#ifdef NEED_CALLINFO
24586 -/* Repeatedly perform a read call until the buffer is filled or */
24587 -/* we encounter EOF. */
24588 -ssize_t GC_repeat_read(int fd, char *buf, size_t count)
24589 +/* Print info to stderr. We do NOT hold the allocation lock */
24590 +void GC_print_callers (info)
24591 +struct callinfo info[NFRAMES];
24593 - ssize_t num_read = 0;
24596 + static int reentry_count = 0;
24597 + GC_bool stop = FALSE;
24599 - while (num_read < count) {
24600 - result = READ(fd, buf + num_read, count - num_read);
24601 - if (result < 0) return result;
24602 - if (result == 0) break;
24603 - num_read += result;
24609 + GC_err_printf0("\tCaller at allocation:\n");
24611 + GC_err_printf0("\tCall chain at allocation:\n");
24613 + for (i = 0; i < NFRAMES && !stop ; i++) {
24614 + if (info[i].ci_pc == 0) break;
24619 + GC_err_printf0("\t\targs: ");
24620 + for (j = 0; j < NARGS; j++) {
24621 + if (j != 0) GC_err_printf0(", ");
24622 + GC_err_printf2("%d (0x%X)", ~(info[i].ci_arg[j]),
24623 + ~(info[i].ci_arg[j]));
24626 + GC_err_printf0("\n");
24629 + if (reentry_count > 1) {
24630 + /* We were called during an allocation during */
24631 + /* a previous GC_print_callers call; punt. */
24632 + GC_err_printf1("\t\t##PC##= 0x%lx\n", info[i].ci_pc);
24639 +# if defined(GC_HAVE_BUILTIN_BACKTRACE)
24640 + char **sym_name =
24641 + backtrace_symbols((void **)(&(info[i].ci_pc)), 1);
24642 + char *name = sym_name[0];
24645 + char *name = buf;
24646 + sprintf(buf, "##PC##= 0x%lx", info[i].ci_pc);
24648 +# if defined(LINUX) && !defined(SMALL_CONFIG)
24649 + /* Try for a line number. */
24651 +# define EXE_SZ 100
24652 + static char exe_name[EXE_SZ];
24653 +# define CMD_SZ 200
24654 + char cmd_buf[CMD_SZ];
24655 +# define RESULT_SZ 200
24656 + static char result_buf[RESULT_SZ];
24657 + size_t result_len;
24658 + static GC_bool found_exe_name = FALSE;
24659 + static GC_bool will_fail = FALSE;
24661 + /* Try to get it via a hairy and expensive scheme. */
24662 + /* First we get the name of the executable: */
24663 + if (will_fail) goto out;
24664 + if (!found_exe_name) {
24665 + ret_code = readlink("/proc/self/exe", exe_name, EXE_SZ);
24666 + if (ret_code < 0 || ret_code >= EXE_SZ
24667 + || exe_name[0] != '/') {
24668 + will_fail = TRUE; /* Dont try again. */
24671 + exe_name[ret_code] = '\0';
24672 + found_exe_name = TRUE;
24674 + /* Then we use popen to start addr2line -e <exe> <addr> */
24675 + /* There are faster ways to do this, but hopefully this */
24676 + /* isn't time critical. */
24677 + sprintf(cmd_buf, "/usr/bin/addr2line -f -e %s 0x%lx", exe_name,
24678 + (unsigned long)info[i].ci_pc);
24679 + pipe = popen(cmd_buf, "r");
24681 + || (result_len = fread(result_buf, 1, RESULT_SZ - 1, pipe))
24683 + if (pipe != NULL) pclose(pipe);
24684 + will_fail = TRUE;
24687 + if (result_buf[result_len - 1] == '\n') --result_len;
24688 + result_buf[result_len] = 0;
24689 + if (result_buf[0] == '?'
24690 + || result_buf[result_len-2] == ':'
24691 + && result_buf[result_len-1] == '0') {
24695 + /* Get rid of embedded newline, if any. Test for "main" */
24697 + char * nl = strchr(result_buf, '\n');
24698 + if (nl != NULL && nl < result_buf + result_len) {
24701 + if (strncmp(result_buf, "main", nl - result_buf) == 0) {
24705 + if (result_len < RESULT_SZ - 25) {
24706 + /* Add in hex address */
24707 + sprintf(result_buf + result_len, " [0x%lx]",
24708 + (unsigned long)info[i].ci_pc);
24710 + name = result_buf;
24714 +# endif /* LINUX */
24715 + GC_err_printf1("\t\t%s\n", name);
24716 +# if defined(GC_HAVE_BUILTIN_BACKTRACE)
24717 + free(sym_name); /* May call GC_free; that's OK */
24725 -#endif /* LINUX && ... */
24727 +#endif /* NEED_CALLINFO */
24731 #if defined(LINUX) && defined(__ELF__) && !defined(SMALL_CONFIG)
24732 @@ -3220,20 +4102,16 @@
24733 /* Dump /proc/self/maps to GC_stderr, to enable looking up names for
24734 addresses in FIND_LEAK output. */
24736 +static word dump_maps(char *maps)
24738 + GC_err_write(maps, strlen(maps));
24742 void GC_print_address_map()
24746 - char maps_temp[32768];
24747 GC_err_printf0("---------- Begin address map ----------\n");
24748 - f = open("/proc/self/maps", O_RDONLY);
24749 - if (-1 == f) ABORT("Couldn't open /proc/self/maps");
24751 - result = GC_repeat_read(f, maps_temp, sizeof(maps_temp));
24752 - if (result <= 0) ABORT("Couldn't read /proc/self/maps");
24753 - GC_err_write(maps_temp, result);
24754 - } while (result == sizeof(maps_temp));
24756 + GC_apply_to_maps(dump_maps);
24757 GC_err_printf0("---------- End address map ----------\n");
24760 diff -Nubr boehm-gc/powerpc_darwin_mach_dep.s ../boehm-gc/powerpc_darwin_mach_dep.s
24761 --- boehm-gc/powerpc_darwin_mach_dep.s Wed Dec 31 16:00:00 1969
24762 +++ ../boehm-gc/powerpc_darwin_mach_dep.s Mon May 26 12:48:52 2003
24765 +; GC_push_regs function. Under some optimization levels GCC will clobber
24766 +; some of the non-volatile registers before we get a chance to save them
24767 +; therefore, this can't be inline asm.
24771 + .globl _GC_push_regs
24781 + bl L_GC_push_one$stub
24783 + bl L_GC_push_one$stub
24785 + bl L_GC_push_one$stub
24787 + bl L_GC_push_one$stub
24789 + bl L_GC_push_one$stub
24791 + bl L_GC_push_one$stub
24793 + bl L_GC_push_one$stub
24795 + bl L_GC_push_one$stub
24797 + bl L_GC_push_one$stub
24799 + bl L_GC_push_one$stub
24801 + bl L_GC_push_one$stub
24803 + bl L_GC_push_one$stub
24805 + bl L_GC_push_one$stub
24807 + bl L_GC_push_one$stub
24809 + bl L_GC_push_one$stub
24811 + bl L_GC_push_one$stub
24813 + bl L_GC_push_one$stub
24815 + bl L_GC_push_one$stub
24817 + bl L_GC_push_one$stub
24827 +; PIC stuff, generated by GCC
24831 +L_GC_push_one$stub:
24832 + .indirect_symbol _GC_push_one
24834 + bcl 20,31,L0$_GC_push_one
24837 + addis r11,r11,ha16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
24839 + lwz r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11)
24841 + addi r11,r11,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
24844 +.lazy_symbol_pointer
24845 +L_GC_push_one$lazy_ptr:
24846 + .indirect_symbol _GC_push_one
24847 + .long dyld_stub_binding_helper
24848 diff -Nubr boehm-gc/pthread_stop_world.c ../boehm-gc/pthread_stop_world.c
24849 --- boehm-gc/pthread_stop_world.c Wed Dec 31 16:00:00 1969
24850 +++ ../boehm-gc/pthread_stop_world.c Mon May 26 12:48:52 2003
24852 +#include "private/pthread_support.h"
24854 +#if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
24855 + && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS) \
24856 + && !defined(GC_DARWIN_THREADS)
24858 +#include <signal.h>
24859 +#include <semaphore.h>
24860 +#include <errno.h>
24861 +#include <unistd.h>
24866 +# if defined(MAXSIG)
24867 +# define NSIG (MAXSIG+1)
24868 +# elif defined(_NSIG)
24869 +# define NSIG _NSIG
24870 +# elif defined(__SIGRTMAX)
24871 +# define NSIG (__SIGRTMAX+1)
24873 + --> please fix it
24877 +void GC_print_sig_mask()
24879 + sigset_t blocked;
24882 + if (pthread_sigmask(SIG_BLOCK, NULL, &blocked) != 0)
24883 + ABORT("pthread_sigmask");
24884 + GC_printf0("Blocked: ");
24885 + for (i = 1; i < NSIG; i++) {
24886 + if (sigismember(&blocked, i)) { GC_printf1("%ld ",(long) i); }
24888 + GC_printf0("\n");
24893 +word GC_stop_count; /* Incremented at the beginning of GC_stop_world. */
24895 +#ifdef GC_OSF1_THREADS
24896 + GC_bool GC_retry_signals = TRUE;
24898 + GC_bool GC_retry_signals = FALSE;
24902 + * We use signals to stop threads during GC.
24904 + * Suspended threads wait in signal handler for SIG_THR_RESTART.
24905 + * That's more portable than semaphores or condition variables.
24906 + * (We do use sem_post from a signal handler, but that should be portable.)
24908 + * The thread suspension signal SIG_SUSPEND is now defined in gc_priv.h.
24909 + * Note that we can't just stop a thread; we need it to save its stack
24910 + * pointer(s) and acknowledge.
24913 +#ifndef SIG_THR_RESTART
24914 +# if defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS)
24916 +# define SIG_THR_RESTART _SIGRTMIN + 5
24918 +# define SIG_THR_RESTART SIGRTMIN + 5
24921 +# define SIG_THR_RESTART SIGXCPU
24925 +sem_t GC_suspend_ack_sem;
24927 +void GC_suspend_handler(int sig)
24930 + pthread_t my_thread = pthread_self();
24933 +# ifdef PARALLEL_MARK
24934 + word my_mark_no = GC_mark_no;
24935 + /* Marker can't proceed until we acknowledge. Thus this is */
24936 + /* guaranteed to be the mark_no correspending to our */
24937 + /* suspension, i.e. the marker can't have incremented it yet. */
24939 + word my_stop_count = GC_stop_count;
24941 + if (sig != SIG_SUSPEND) ABORT("Bad signal in suspend_handler");
24944 + GC_printf1("Suspending 0x%lx\n", my_thread);
24947 + me = GC_lookup_thread(my_thread);
24948 + /* The lookup here is safe, since I'm doing this on behalf */
24949 + /* of a thread which holds the allocation lock in order */
24950 + /* to stop the world. Thus concurrent modification of the */
24951 + /* data structure is impossible. */
24952 + if (me -> stop_info.last_stop_count == my_stop_count) {
24953 + /* Duplicate signal. OK if we are retrying. */
24954 + if (!GC_retry_signals) {
24955 + WARN("Duplicate suspend signal in thread %lx\n",
24961 + me -> stop_info.stack_ptr = (ptr_t)GC_save_regs_in_stack();
24963 + me -> stop_info.stack_ptr = (ptr_t)(&dummy);
24966 + me -> backing_store_ptr = (ptr_t)GC_save_regs_in_stack();
24969 + /* Tell the thread that wants to stop the world that this */
24970 + /* thread has been stopped. Note that sem_post() is */
24971 + /* the only async-signal-safe primitive in LinuxThreads. */
24972 + sem_post(&GC_suspend_ack_sem);
24973 + me -> stop_info.last_stop_count = my_stop_count;
24975 + /* Wait until that thread tells us to restart by sending */
24976 + /* this thread a SIG_THR_RESTART signal. */
24977 + /* SIG_THR_RESTART should be masked at this point. Thus there */
24978 + /* is no race. */
24979 + if (sigfillset(&mask) != 0) ABORT("sigfillset() failed");
24980 + if (sigdelset(&mask, SIG_THR_RESTART) != 0) ABORT("sigdelset() failed");
24981 +# ifdef NO_SIGNALS
24982 + if (sigdelset(&mask, SIGINT) != 0) ABORT("sigdelset() failed");
24983 + if (sigdelset(&mask, SIGQUIT) != 0) ABORT("sigdelset() failed");
24984 + if (sigdelset(&mask, SIGTERM) != 0) ABORT("sigdelset() failed");
24985 + if (sigdelset(&mask, SIGABRT) != 0) ABORT("sigdelset() failed");
24988 + me->stop_info.signal = 0;
24989 + sigsuspend(&mask); /* Wait for signal */
24990 + } while (me->stop_info.signal != SIG_THR_RESTART);
24991 + /* If the RESTART signal gets lost, we can still lose. That should be */
24992 + /* less likely than losing the SUSPEND signal, since we don't do much */
24993 + /* between the sem_post and sigsuspend. */
24994 + /* We'd need more handshaking to work around that, since we don't want */
24995 + /* to accidentally leave a RESTART signal pending, thus causing us to */
24996 + /* continue prematurely in a future round. */
24999 + GC_printf1("Continuing 0x%lx\n", my_thread);
25003 +void GC_restart_handler(int sig)
25005 + pthread_t my_thread = pthread_self();
25008 + if (sig != SIG_THR_RESTART) ABORT("Bad signal in suspend_handler");
25010 + /* Let the GC_suspend_handler() know that we got a SIG_THR_RESTART. */
25011 + /* The lookup here is safe, since I'm doing this on behalf */
25012 + /* of a thread which holds the allocation lock in order */
25013 + /* to stop the world. Thus concurrent modification of the */
25014 + /* data structure is impossible. */
25015 + me = GC_lookup_thread(my_thread);
25016 + me->stop_info.signal = SIG_THR_RESTART;
25019 + ** Note: even if we didn't do anything useful here,
25020 + ** it would still be necessary to have a signal handler,
25021 + ** rather than ignoring the signals, otherwise
25022 + ** the signals will not be delivered at all, and
25023 + ** will thus not interrupt the sigsuspend() above.
25027 + GC_printf1("In GC_restart_handler for 0x%lx\n", pthread_self());
25032 +# define IF_IA64(x) x
25034 +# define IF_IA64(x)
25036 +/* We hold allocation lock. Should do exactly the right thing if the */
25037 +/* world is stopped. Should not fail if it isn't. */
25038 +void GC_push_all_stacks()
25043 + /* On IA64, we also need to scan the register backing store. */
25044 + IF_IA64(ptr_t bs_lo; ptr_t bs_hi;)
25045 + pthread_t me = pthread_self();
25047 + if (!GC_thr_initialized) GC_thr_init();
25048 + #if DEBUG_THREADS
25049 + GC_printf1("Pushing stacks from thread 0x%lx\n", (unsigned long) me);
25051 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
25052 + for (p = GC_threads[i]; p != 0; p = p -> next) {
25053 + if (p -> flags & FINISHED) continue;
25054 + if (pthread_equal(p -> id, me)) {
25056 + lo = (ptr_t)GC_save_regs_in_stack();
25058 + lo = GC_approx_sp();
25060 + IF_IA64(bs_hi = (ptr_t)GC_save_regs_in_stack();)
25062 + lo = p -> stop_info.stack_ptr;
25063 + IF_IA64(bs_hi = p -> backing_store_ptr;)
25065 + if ((p -> flags & MAIN_THREAD) == 0) {
25066 + hi = p -> stack_end;
25067 + IF_IA64(bs_lo = p -> backing_store_end);
25069 + /* The original stack. */
25070 + hi = GC_stackbottom;
25071 + IF_IA64(bs_lo = BACKING_STORE_BASE;)
25073 + #if DEBUG_THREADS
25074 + GC_printf3("Stack for thread 0x%lx = [%lx,%lx)\n",
25075 + (unsigned long) p -> id,
25076 + (unsigned long) lo, (unsigned long) hi);
25078 + if (0 == lo) ABORT("GC_push_all_stacks: sp not set!\n");
25079 +# ifdef STACK_GROWS_UP
25080 + /* We got them backwards! */
25081 + GC_push_all_stack(hi, lo);
25083 + GC_push_all_stack(lo, hi);
25086 + if (pthread_equal(p -> id, me)) {
25087 + GC_push_all_eager(bs_lo, bs_hi);
25089 + GC_push_all_stack(bs_lo, bs_hi);
25096 +/* There seems to be a very rare thread stopping problem. To help us */
25097 +/* debug that, we save the ids of the stopping thread. */
25098 +pthread_t GC_stopping_thread;
25099 +int GC_stopping_pid;
25101 +/* We hold the allocation lock. Suspend all threads that might */
25102 +/* still be running. Return the number of suspend signals that */
25104 +int GC_suspend_all()
25106 + int n_live_threads = 0;
25110 + pthread_t my_thread = pthread_self();
25112 + GC_stopping_thread = my_thread; /* debugging only. */
25113 + GC_stopping_pid = getpid(); /* debugging only. */
25114 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
25115 + for (p = GC_threads[i]; p != 0; p = p -> next) {
25116 + if (p -> id != my_thread) {
25117 + if (p -> flags & FINISHED) continue;
25118 + if (p -> stop_info.last_stop_count == GC_stop_count) continue;
25119 + if (p -> thread_blocked) /* Will wait */ continue;
25120 + n_live_threads++;
25121 + #if DEBUG_THREADS
25122 + GC_printf1("Sending suspend signal to 0x%lx\n", p -> id);
25125 + result = pthread_kill(p -> id, SIG_SUSPEND);
25128 + /* Not really there anymore. Possible? */
25129 + n_live_threads--;
25134 + ABORT("pthread_kill failed");
25139 + return n_live_threads;
25142 +/* Caller holds allocation lock. */
25143 +void GC_stop_world()
25146 + int n_live_threads;
25149 + #if DEBUG_THREADS
25150 + GC_printf1("Stopping the world from 0x%lx\n", pthread_self());
25153 + /* Make sure all free list construction has stopped before we start. */
25154 + /* No new construction can start, since free list construction is */
25155 + /* required to acquire and release the GC lock before it starts, */
25156 + /* and we have the lock. */
25157 +# ifdef PARALLEL_MARK
25158 + GC_acquire_mark_lock();
25159 + GC_ASSERT(GC_fl_builder_count == 0);
25160 + /* We should have previously waited for it to become zero. */
25161 +# endif /* PARALLEL_MARK */
25163 + n_live_threads = GC_suspend_all();
25165 + if (GC_retry_signals) {
25166 + unsigned long wait_usecs = 0; /* Total wait since retry. */
25167 +# define WAIT_UNIT 3000
25168 +# define RETRY_INTERVAL 100000
25172 + sem_getvalue(&GC_suspend_ack_sem, &ack_count);
25173 + if (ack_count == n_live_threads) break;
25174 + if (wait_usecs > RETRY_INTERVAL) {
25175 + int newly_sent = GC_suspend_all();
25178 + if (GC_print_stats) {
25179 + GC_printf1("Resent %ld signals after timeout\n",
25183 + sem_getvalue(&GC_suspend_ack_sem, &ack_count);
25184 + if (newly_sent < n_live_threads - ack_count) {
25185 + WARN("Lost some threads during GC_stop_world?!\n",0);
25186 + n_live_threads = ack_count + newly_sent;
25190 + usleep(WAIT_UNIT);
25191 + wait_usecs += WAIT_UNIT;
25194 + for (i = 0; i < n_live_threads; i++) {
25195 + if (0 != (code = sem_wait(&GC_suspend_ack_sem))) {
25196 + GC_err_printf1("Sem_wait returned %ld\n", (unsigned long)code);
25197 + ABORT("sem_wait for handler failed");
25200 +# ifdef PARALLEL_MARK
25201 + GC_release_mark_lock();
25203 + #if DEBUG_THREADS
25204 + GC_printf1("World stopped from 0x%lx\n", pthread_self());
25206 + GC_stopping_thread = 0; /* debugging only */
25209 +/* Caller holds allocation lock, and has held it continuously since */
25210 +/* the world stopped. */
25211 +void GC_start_world()
25213 + pthread_t my_thread = pthread_self();
25215 + register GC_thread p;
25216 + register int n_live_threads = 0;
25217 + register int result;
25219 +# if DEBUG_THREADS
25220 + GC_printf0("World starting\n");
25223 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
25224 + for (p = GC_threads[i]; p != 0; p = p -> next) {
25225 + if (p -> id != my_thread) {
25226 + if (p -> flags & FINISHED) continue;
25227 + if (p -> thread_blocked) continue;
25228 + n_live_threads++;
25229 + #if DEBUG_THREADS
25230 + GC_printf1("Sending restart signal to 0x%lx\n", p -> id);
25233 + result = pthread_kill(p -> id, SIG_THR_RESTART);
25236 + /* Not really there anymore. Possible? */
25237 + n_live_threads--;
25242 + ABORT("pthread_kill failed");
25247 + #if DEBUG_THREADS
25248 + GC_printf0("World started\n");
25252 +void GC_stop_init() {
25253 + struct sigaction act;
25255 + if (sem_init(&GC_suspend_ack_sem, 0, 0) != 0)
25256 + ABORT("sem_init failed");
25258 + act.sa_flags = SA_RESTART;
25259 + if (sigfillset(&act.sa_mask) != 0) {
25260 + ABORT("sigfillset() failed");
25262 +# ifdef NO_SIGNALS
25263 + if (sigdelset(&act.sa_mask, SIGINT) != 0
25264 + || sigdelset(&act.sa_mask, SIGQUIT != 0)
25265 + || sigdelset(&act.sa_mask, SIGABRT != 0)
25266 + || sigdelset(&act.sa_mask, SIGTERM != 0)) {
25267 + ABORT("sigdelset() failed");
25271 + /* SIG_THR_RESTART is unmasked by the handler when necessary. */
25272 + act.sa_handler = GC_suspend_handler;
25273 + if (sigaction(SIG_SUSPEND, &act, NULL) != 0) {
25274 + ABORT("Cannot set SIG_SUSPEND handler");
25277 + act.sa_handler = GC_restart_handler;
25278 + if (sigaction(SIG_THR_RESTART, &act, NULL) != 0) {
25279 + ABORT("Cannot set SIG_THR_RESTART handler");
25282 + /* Check for GC_RETRY_SIGNALS. */
25283 + if (0 != GETENV("GC_RETRY_SIGNALS")) {
25284 + GC_retry_signals = TRUE;
25286 + if (0 != GETENV("GC_NO_RETRY_SIGNALS")) {
25287 + GC_retry_signals = FALSE;
25290 + if (GC_print_stats && GC_retry_signals) {
25291 + GC_printf0("Will retry suspend signal if necessary.\n");
25297 diff -Nubr boehm-gc/pthread_support.c ../boehm-gc/pthread_support.c
25298 --- boehm-gc/pthread_support.c Wed Dec 31 16:00:00 1969
25299 +++ ../boehm-gc/pthread_support.c Mon May 26 12:48:52 2003
25302 + * Copyright (c) 1994 by Xerox Corporation. All rights reserved.
25303 + * Copyright (c) 1996 by Silicon Graphics. All rights reserved.
25304 + * Copyright (c) 1998 by Fergus Henderson. All rights reserved.
25305 + * Copyright (c) 2000-2001 by Hewlett-Packard Company. All rights reserved.
25307 + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
25308 + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
25310 + * Permission is hereby granted to use or copy this program
25311 + * for any purpose, provided the above notices are retained on all copies.
25312 + * Permission to modify the code and to distribute modified code is granted,
25313 + * provided the above notices are retained, and a notice that the code was
25314 + * modified is included with the above copyright notice.
25317 + * Support code for LinuxThreads, the clone()-based kernel
25318 + * thread package for Linux which is included in libc6.
25320 + * This code relies on implementation details of LinuxThreads,
25321 + * (i.e. properties not guaranteed by the Pthread standard),
25322 + * though this version now does less of that than the other Pthreads
25325 + * Note that there is a lot of code duplication between linux_threads.c
25326 + * and thread support for some of the other Posix platforms; any changes
25327 + * made here may need to be reflected there too.
25329 + /* DG/UX ix86 support <takis@xfree86.org> */
25331 + * Linux_threads.c now also includes some code to support HPUX and
25332 + * OSF1 (Compaq Tru64 Unix, really). The OSF1 support is not yet
25333 + * functional. The OSF1 code is based on Eric Benson's
25334 + * patch, though that was originally against hpux_irix_threads. The code
25335 + * here is completely untested. With 0.0000001% probability, it might
25338 + * Eric also suggested an alternate basis for a lock implementation in
25340 + * + #elif defined(OSF1)
25341 + * + unsigned long GC_allocate_lock = 0;
25342 + * + msemaphore GC_allocate_semaphore;
25343 + * + # define GC_TRY_LOCK() \
25344 + * + ((msem_lock(&GC_allocate_semaphore, MSEM_IF_NOWAIT) == 0) \
25345 + * + ? (GC_allocate_lock = 1) \
25347 + * + # define GC_LOCK_TAKEN GC_allocate_lock
25350 +/*#define DEBUG_THREADS 1*/
25351 +/*#define GC_ASSERTIONS*/
25353 +# include "private/pthread_support.h"
25355 +# if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
25356 + && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS)
25358 +# if defined(GC_HPUX_THREADS) && !defined(USE_PTHREAD_SPECIFIC) \
25359 + && !defined(USE_HPUX_TLS)
25360 +# define USE_HPUX_TLS
25363 +# if (defined(GC_DGUX386_THREADS) || defined(GC_OSF1_THREADS) || \
25364 + defined(GC_DARWIN_THREADS)) && !defined(USE_PTHREAD_SPECIFIC)
25365 +# define USE_PTHREAD_SPECIFIC
25368 +# if defined(GC_DGUX386_THREADS) && !defined(_POSIX4A_DRAFT10_SOURCE)
25369 +# define _POSIX4A_DRAFT10_SOURCE 1
25372 +# if defined(GC_DGUX386_THREADS) && !defined(_USING_POSIX4A_DRAFT10)
25373 +# define _USING_POSIX4A_DRAFT10 1
25376 +# ifdef THREAD_LOCAL_ALLOC
25377 +# if !defined(USE_PTHREAD_SPECIFIC) && !defined(USE_HPUX_TLS)
25378 +# include "private/specific.h"
25380 +# if defined(USE_PTHREAD_SPECIFIC)
25381 +# define GC_getspecific pthread_getspecific
25382 +# define GC_setspecific pthread_setspecific
25383 +# define GC_key_create pthread_key_create
25384 + typedef pthread_key_t GC_key_t;
25386 +# if defined(USE_HPUX_TLS)
25387 +# define GC_getspecific(x) (x)
25388 +# define GC_setspecific(key, v) ((key) = (v), 0)
25389 +# define GC_key_create(key, d) 0
25390 + typedef void * GC_key_t;
25393 +# include <stdlib.h>
25394 +# include <pthread.h>
25395 +# include <sched.h>
25396 +# include <time.h>
25397 +# include <errno.h>
25398 +# include <unistd.h>
25399 +# include <sys/mman.h>
25400 +# include <sys/time.h>
25401 +# include <sys/types.h>
25402 +# include <sys/stat.h>
25403 +# include <fcntl.h>
25405 +#if defined(GC_DARWIN_THREADS)
25406 +# include "private/darwin_semaphore.h"
25408 +# include <semaphore.h>
25409 +#endif /* !GC_DARWIN_THREADS */
25411 +#if defined(GC_DARWIN_THREADS)
25412 +# include <sys/sysctl.h>
25413 +#endif /* GC_DARWIN_THREADS */
25417 +#if defined(GC_DGUX386_THREADS)
25418 +# include <sys/dg_sys_info.h>
25419 +# include <sys/_int_psem.h>
25420 + /* sem_t is an uint in DG/UX */
25421 + typedef unsigned int sem_t;
25422 +#endif /* GC_DGUX386_THREADS */
25425 +# define __inline__
25428 +#ifdef GC_USE_LD_WRAP
25429 +# define WRAP_FUNC(f) __wrap_##f
25430 +# define REAL_FUNC(f) __real_##f
25432 +# define WRAP_FUNC(f) GC_##f
25433 +# if !defined(GC_DGUX386_THREADS)
25434 +# define REAL_FUNC(f) f
25435 +# else /* GC_DGUX386_THREADS */
25436 +# define REAL_FUNC(f) __d10_##f
25437 +# endif /* GC_DGUX386_THREADS */
25438 +# undef pthread_create
25439 +# if !defined(GC_DARWIN_THREADS)
25440 +# undef pthread_sigmask
25442 +# undef pthread_join
25443 +# undef pthread_detach
25446 +void GC_thr_init();
25448 +static GC_bool parallel_initialized = FALSE;
25450 +void GC_init_parallel();
25452 +# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL)
25454 +/* We don't really support thread-local allocation with DBG_HDRS_ALL */
25456 +#ifdef USE_HPUX_TLS
25459 +GC_key_t GC_thread_key;
25461 +static GC_bool keys_initialized;
25463 +/* Recover the contents of the freelist array fl into the global one gfl.*/
25464 +/* Note that the indexing scheme differs, in that gfl has finer size */
25465 +/* resolution, even if not all entries are used. */
25466 +/* We hold the allocator lock. */
25467 +static void return_freelists(ptr_t *fl, ptr_t *gfl)
25473 + for (i = 1; i < NFREELISTS; ++i) {
25474 + nwords = i * (GRANULARITY/sizeof(word));
25477 + if ((word)q >= HBLKSIZE) {
25478 + if (gfl[nwords] == 0) {
25481 + /* Concatenate: */
25482 + for (; (word)q >= HBLKSIZE; qptr = &(obj_link(q)), q = *qptr);
25483 + GC_ASSERT(0 == q);
25484 + *qptr = gfl[nwords];
25485 + gfl[nwords] = fl[i];
25488 + /* Clear fl[i], since the thread structure may hang around. */
25489 + /* Do it in a way that is likely to trap if we access it. */
25490 + fl[i] = (ptr_t)HBLKSIZE;
25494 +/* We statically allocate a single "size 0" object. It is linked to */
25495 +/* itself, and is thus repeatedly reused for all size 0 allocation */
25496 +/* requests. (Size 0 gcj allocation requests are incorrect, and */
25497 +/* we arrange for those to fault asap.) */
25498 +static ptr_t size_zero_object = (ptr_t)(&size_zero_object);
25500 +/* Each thread structure must be initialized. */
25501 +/* This call must be made from the new thread. */
25502 +/* Caller holds allocation lock. */
25503 +void GC_init_thread_local(GC_thread p)
25507 + if (!keys_initialized) {
25508 + if (0 != GC_key_create(&GC_thread_key, 0)) {
25509 + ABORT("Failed to create key for local allocator");
25511 + keys_initialized = TRUE;
25513 + if (0 != GC_setspecific(GC_thread_key, p)) {
25514 + ABORT("Failed to set thread specific allocation pointers");
25516 + for (i = 1; i < NFREELISTS; ++i) {
25517 + p -> ptrfree_freelists[i] = (ptr_t)1;
25518 + p -> normal_freelists[i] = (ptr_t)1;
25519 +# ifdef GC_GCJ_SUPPORT
25520 + p -> gcj_freelists[i] = (ptr_t)1;
25523 + /* Set up the size 0 free lists. */
25524 + p -> ptrfree_freelists[0] = (ptr_t)(&size_zero_object);
25525 + p -> normal_freelists[0] = (ptr_t)(&size_zero_object);
25526 +# ifdef GC_GCJ_SUPPORT
25527 + p -> gcj_freelists[0] = (ptr_t)(-1);
25531 +#ifdef GC_GCJ_SUPPORT
25532 + extern ptr_t * GC_gcjobjfreelist;
25535 +/* We hold the allocator lock. */
25536 +void GC_destroy_thread_local(GC_thread p)
25538 + /* We currently only do this from the thread itself or from */
25539 + /* the fork handler for a child process. */
25540 +# ifndef HANDLE_FORK
25541 + GC_ASSERT(GC_getspecific(GC_thread_key) == (void *)p);
25543 + return_freelists(p -> ptrfree_freelists, GC_aobjfreelist);
25544 + return_freelists(p -> normal_freelists, GC_objfreelist);
25545 +# ifdef GC_GCJ_SUPPORT
25546 + return_freelists(p -> gcj_freelists, GC_gcjobjfreelist);
25550 +extern GC_PTR GC_generic_malloc_many();
25552 +GC_PTR GC_local_malloc(size_t bytes)
25554 + if (EXPECT(!SMALL_ENOUGH(bytes),0)) {
25555 + return(GC_malloc(bytes));
25557 + int index = INDEX_FROM_BYTES(bytes);
25560 +# if defined(REDIRECT_MALLOC) && !defined(USE_PTHREAD_SPECIFIC)
25561 + GC_key_t k = GC_thread_key;
25565 +# if defined(REDIRECT_MALLOC) && !defined(USE_PTHREAD_SPECIFIC)
25566 + if (EXPECT(0 == k, 0)) {
25567 + /* This can happen if we get called when the world is */
25568 + /* being initialized. Whether we can actually complete */
25569 + /* the initialization then is unclear. */
25570 + GC_init_parallel();
25571 + k = GC_thread_key;
25574 + tsd = GC_getspecific(GC_thread_key);
25575 +# ifdef GC_ASSERTIONS
25577 + GC_ASSERT(tsd == (void *)GC_lookup_thread(pthread_self()));
25580 + my_fl = ((GC_thread)tsd) -> normal_freelists + index;
25581 + my_entry = *my_fl;
25582 + if (EXPECT((word)my_entry >= HBLKSIZE, 1)) {
25583 + ptr_t next = obj_link(my_entry);
25584 + GC_PTR result = (GC_PTR)my_entry;
25586 + obj_link(my_entry) = 0;
25587 + PREFETCH_FOR_WRITE(next);
25589 + } else if ((word)my_entry - 1 < DIRECT_GRANULES) {
25590 + *my_fl = my_entry + index + 1;
25591 + return GC_malloc(bytes);
25593 + GC_generic_malloc_many(BYTES_FROM_INDEX(index), NORMAL, my_fl);
25594 + if (*my_fl == 0) return GC_oom_fn(bytes);
25595 + return GC_local_malloc(bytes);
25600 +GC_PTR GC_local_malloc_atomic(size_t bytes)
25602 + if (EXPECT(!SMALL_ENOUGH(bytes), 0)) {
25603 + return(GC_malloc_atomic(bytes));
25605 + int index = INDEX_FROM_BYTES(bytes);
25606 + ptr_t * my_fl = ((GC_thread)GC_getspecific(GC_thread_key))
25607 + -> ptrfree_freelists + index;
25608 + ptr_t my_entry = *my_fl;
25610 + if (EXPECT((word)my_entry >= HBLKSIZE, 1)) {
25611 + GC_PTR result = (GC_PTR)my_entry;
25612 + *my_fl = obj_link(my_entry);
25614 + } else if ((word)my_entry - 1 < DIRECT_GRANULES) {
25615 + *my_fl = my_entry + index + 1;
25616 + return GC_malloc_atomic(bytes);
25618 + GC_generic_malloc_many(BYTES_FROM_INDEX(index), PTRFREE, my_fl);
25619 + /* *my_fl is updated while the collector is excluded; */
25620 + /* the free list is always visible to the collector as */
25622 + if (*my_fl == 0) return GC_oom_fn(bytes);
25623 + return GC_local_malloc_atomic(bytes);
25628 +#ifdef GC_GCJ_SUPPORT
25630 +#include "include/gc_gcj.h"
25632 +#ifdef GC_ASSERTIONS
25633 + extern GC_bool GC_gcj_malloc_initialized;
25636 +extern int GC_gcj_kind;
25638 +GC_PTR GC_local_gcj_malloc(size_t bytes,
25639 + void * ptr_to_struct_containing_descr)
25641 + GC_ASSERT(GC_gcj_malloc_initialized);
25642 + if (EXPECT(!SMALL_ENOUGH(bytes), 0)) {
25643 + return GC_gcj_malloc(bytes, ptr_to_struct_containing_descr);
25645 + int index = INDEX_FROM_BYTES(bytes);
25646 + ptr_t * my_fl = ((GC_thread)GC_getspecific(GC_thread_key))
25647 + -> gcj_freelists + index;
25648 + ptr_t my_entry = *my_fl;
25649 + if (EXPECT((word)my_entry >= HBLKSIZE, 1)) {
25650 + GC_PTR result = (GC_PTR)my_entry;
25651 + GC_ASSERT(!GC_incremental);
25652 + /* We assert that any concurrent marker will stop us. */
25653 + /* Thus it is impossible for a mark procedure to see the */
25654 + /* allocation of the next object, but to see this object */
25655 + /* still containing a free list pointer. Otherwise the */
25656 + /* marker might find a random "mark descriptor". */
25657 + *(volatile ptr_t *)my_fl = obj_link(my_entry);
25658 + /* We must update the freelist before we store the pointer. */
25659 + /* Otherwise a GC at this point would see a corrupted */
25661 + /* A memory barrier is probably never needed, since the */
25662 + /* action of stopping this thread will cause prior writes */
25663 + /* to complete. */
25664 + GC_ASSERT(((void * volatile *)result)[1] == 0);
25665 + *(void * volatile *)result = ptr_to_struct_containing_descr;
25667 + } else if ((word)my_entry - 1 < DIRECT_GRANULES) {
25668 + if (!GC_incremental) *my_fl = my_entry + index + 1;
25669 + /* In the incremental case, we always have to take this */
25670 + /* path. Thus we leave the counter alone. */
25671 + return GC_gcj_malloc(bytes, ptr_to_struct_containing_descr);
25673 + GC_generic_malloc_many(BYTES_FROM_INDEX(index), GC_gcj_kind, my_fl);
25674 + if (*my_fl == 0) return GC_oom_fn(bytes);
25675 + return GC_local_gcj_malloc(bytes, ptr_to_struct_containing_descr);
25680 +#endif /* GC_GCJ_SUPPORT */
25682 +# else /* !THREAD_LOCAL_ALLOC && !DBG_HDRS_ALL */
25684 +# define GC_destroy_thread_local(t)
25686 +# endif /* !THREAD_LOCAL_ALLOC */
25690 +To make sure that we're using LinuxThreads and not some other thread
25691 +package, we generate a dummy reference to `pthread_kill_other_threads_np'
25692 +(was `__pthread_initial_thread_bos' but that disappeared),
25693 +which is a symbol defined in LinuxThreads, but (hopefully) not in other
25696 +We no longer do this, since this code is now portable enough that it might
25697 +actually work for something else.
25699 +void (*dummy_var_to_force_linux_threads)() = pthread_kill_other_threads_np;
25702 +#if defined(SPARC) || defined(IA64)
25703 + extern word GC_save_regs_in_stack();
25706 +long GC_nprocs = 1; /* Number of processors. We may not have */
25707 + /* access to all of them, but this is as good */
25708 + /* a guess as any ... */
25710 +#ifdef PARALLEL_MARK
25712 +# ifndef MAX_MARKERS
25713 +# define MAX_MARKERS 16
25716 +static ptr_t marker_sp[MAX_MARKERS] = {0};
25718 +void * GC_mark_thread(void * id)
25720 + word my_mark_no = 0;
25722 + marker_sp[(word)id] = GC_approx_sp();
25723 + for (;; ++my_mark_no) {
25724 + /* GC_mark_no is passed only to allow GC_help_marker to terminate */
25725 + /* promptly. This is important if it were called from the signal */
25726 + /* handler or from the GC lock acquisition code. Under Linux, it's */
25727 + /* not safe to call it from a signal handler, since it uses mutexes */
25728 + /* and condition variables. Since it is called only here, the */
25729 + /* argument is unnecessary. */
25730 + if (my_mark_no < GC_mark_no || my_mark_no > GC_mark_no + 2) {
25731 + /* resynchronize if we get far off, e.g. because GC_mark_no */
25733 + my_mark_no = GC_mark_no;
25735 +# ifdef DEBUG_THREADS
25736 + GC_printf1("Starting mark helper for mark number %ld\n", my_mark_no);
25738 + GC_help_marker(my_mark_no);
25742 +extern long GC_markers; /* Number of mark threads we would */
25743 + /* like to have. Includes the */
25744 + /* initiating thread. */
25746 +pthread_t GC_mark_threads[MAX_MARKERS];
25748 +#define PTHREAD_CREATE REAL_FUNC(pthread_create)
25750 +static void start_mark_threads()
25753 + pthread_attr_t attr;
25755 + if (GC_markers > MAX_MARKERS) {
25756 + WARN("Limiting number of mark threads\n", 0);
25757 + GC_markers = MAX_MARKERS;
25759 + if (0 != pthread_attr_init(&attr)) ABORT("pthread_attr_init failed");
25761 + if (0 != pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED))
25762 + ABORT("pthread_attr_setdetachstate failed");
25764 +# if defined(HPUX) || defined(GC_DGUX386_THREADS)
25765 + /* Default stack size is usually too small: fix it. */
25766 + /* Otherwise marker threads or GC may run out of */
25768 +# define MIN_STACK_SIZE (8*HBLKSIZE*sizeof(word))
25773 + if (pthread_attr_getstacksize(&attr, &old_size) != 0)
25774 + ABORT("pthread_attr_getstacksize failed\n");
25775 + if (old_size < MIN_STACK_SIZE) {
25776 + if (pthread_attr_setstacksize(&attr, MIN_STACK_SIZE) != 0)
25777 + ABORT("pthread_attr_setstacksize failed\n");
25780 +# endif /* HPUX || GC_DGUX386_THREADS */
25782 + if (GC_print_stats) {
25783 + GC_printf1("Starting %ld marker threads\n", GC_markers - 1);
25786 + for (i = 0; i < GC_markers - 1; ++i) {
25787 + if (0 != PTHREAD_CREATE(GC_mark_threads + i, &attr,
25788 + GC_mark_thread, (void *)(word)i)) {
25789 + WARN("Marker thread creation failed, errno = %ld.\n", errno);
25794 +#else /* !PARALLEL_MARK */
25796 +static __inline__ void start_mark_threads()
25800 +#endif /* !PARALLEL_MARK */
25802 +/* Defining INSTALL_LOOPING_SEGV_HANDLER causes SIGSEGV and SIGBUS to */
25803 +/* result in an infinite loop in a signal handler. This can be very */
25804 +/* useful for debugging, since (as of RH7) gdb still seems to have */
25805 +/* serious problems with threads. */
25806 +#ifdef INSTALL_LOOPING_SEGV_HANDLER
25807 +void GC_looping_handler(int sig)
25809 + GC_printf3("Signal %ld in thread %lx, pid %ld\n",
25810 + sig, pthread_self(), getpid());
25815 +GC_bool GC_thr_initialized = FALSE;
25817 +volatile GC_thread GC_threads[THREAD_TABLE_SZ];
25819 +void GC_push_thread_structures GC_PROTO((void))
25821 + GC_push_all((ptr_t)(GC_threads), (ptr_t)(GC_threads)+sizeof(GC_threads));
25822 +# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL)
25823 + GC_push_all((ptr_t)(&GC_thread_key),
25824 + (ptr_t)(&GC_thread_key)+sizeof(&GC_thread_key));
25828 +#ifdef THREAD_LOCAL_ALLOC
25829 +/* We must explicitly mark ptrfree and gcj free lists, since the free */
25830 +/* list links wouldn't otherwise be found. We also set them in the */
25831 +/* normal free lists, since that involves touching less memory than if */
25832 +/* we scanned them normally. */
25833 +void GC_mark_thread_local_free_lists(void)
25839 + for (i = 0; i < THREAD_TABLE_SZ; ++i) {
25840 + for (p = GC_threads[i]; 0 != p; p = p -> next) {
25841 + for (j = 1; j < NFREELISTS; ++j) {
25842 + q = p -> ptrfree_freelists[j];
25843 + if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
25844 + q = p -> normal_freelists[j];
25845 + if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
25846 +# ifdef GC_GCJ_SUPPORT
25847 + q = p -> gcj_freelists[j];
25848 + if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
25849 +# endif /* GC_GCJ_SUPPORT */
25854 +#endif /* THREAD_LOCAL_ALLOC */
25856 +static struct GC_Thread_Rep first_thread;
25858 +/* Add a thread to GC_threads. We assume it wasn't already there. */
25859 +/* Caller holds allocation lock. */
25860 +GC_thread GC_new_thread(pthread_t id)
25862 + int hv = ((word)id) % THREAD_TABLE_SZ;
25863 + GC_thread result;
25864 + static GC_bool first_thread_used = FALSE;
25866 + if (!first_thread_used) {
25867 + result = &first_thread;
25868 + first_thread_used = TRUE;
25870 + result = (struct GC_Thread_Rep *)
25871 + GC_INTERNAL_MALLOC(sizeof(struct GC_Thread_Rep), NORMAL);
25873 + if (result == 0) return(0);
25874 + result -> id = id;
25875 + result -> next = GC_threads[hv];
25876 + GC_threads[hv] = result;
25877 + GC_ASSERT(result -> flags == 0 && result -> thread_blocked == 0);
25881 +/* Delete a thread from GC_threads. We assume it is there. */
25882 +/* (The code intentionally traps if it wasn't.) */
25883 +/* Caller holds allocation lock. */
25884 +void GC_delete_thread(pthread_t id)
25886 + int hv = ((word)id) % THREAD_TABLE_SZ;
25887 + register GC_thread p = GC_threads[hv];
25888 + register GC_thread prev = 0;
25890 + while (!pthread_equal(p -> id, id)) {
25895 + GC_threads[hv] = p -> next;
25897 + prev -> next = p -> next;
25899 + GC_INTERNAL_FREE(p);
25902 +/* If a thread has been joined, but we have not yet */
25903 +/* been notified, then there may be more than one thread */
25904 +/* in the table with the same pthread id. */
25905 +/* This is OK, but we need a way to delete a specific one. */
25906 +void GC_delete_gc_thread(pthread_t id, GC_thread gc_id)
25908 + int hv = ((word)id) % THREAD_TABLE_SZ;
25909 + register GC_thread p = GC_threads[hv];
25910 + register GC_thread prev = 0;
25912 + while (p != gc_id) {
25917 + GC_threads[hv] = p -> next;
25919 + prev -> next = p -> next;
25921 + GC_INTERNAL_FREE(p);
25924 +/* Return a GC_thread corresponding to a given thread_t. */
25925 +/* Returns 0 if it's not there. */
25926 +/* Caller holds allocation lock or otherwise inhibits */
25928 +/* If there is more than one thread with the given id we */
25929 +/* return the most recent one. */
25930 +GC_thread GC_lookup_thread(pthread_t id)
25932 + int hv = ((word)id) % THREAD_TABLE_SZ;
25933 + register GC_thread p = GC_threads[hv];
25935 + while (p != 0 && !pthread_equal(p -> id, id)) p = p -> next;
25939 +#ifdef HANDLE_FORK
25940 +/* Remove all entries from the GC_threads table, except the */
25941 +/* one for the current thread. We need to do this in the child */
25942 +/* process after a fork(), since only the current thread */
25943 +/* survives in the child. */
25944 +void GC_remove_all_threads_but_me(void)
25946 + pthread_t self = pthread_self();
25948 + GC_thread p, next, me;
25950 + for (hv = 0; hv < THREAD_TABLE_SZ; ++hv) {
25952 + for (p = GC_threads[hv]; 0 != p; p = next) {
25953 + next = p -> next;
25954 + if (p -> id == self) {
25958 +# ifdef THREAD_LOCAL_ALLOC
25959 + if (!(p -> flags & FINISHED)) {
25960 + GC_destroy_thread_local(p);
25962 +# endif /* THREAD_LOCAL_ALLOC */
25963 + if (p != &first_thread) GC_INTERNAL_FREE(p);
25966 + GC_threads[hv] = me;
25969 +#endif /* HANDLE_FORK */
25971 +#ifdef USE_PROC_FOR_LIBRARIES
25972 +int GC_segment_is_thread_stack(ptr_t lo, ptr_t hi)
25977 +# ifdef PARALLEL_MARK
25978 + for (i = 0; i < GC_markers; ++i) {
25979 + if (marker_sp[i] > lo & marker_sp[i] < hi) return 1;
25982 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
25983 + for (p = GC_threads[i]; p != 0; p = p -> next) {
25984 + if (0 != p -> stack_end) {
25985 +# ifdef STACK_GROWS_UP
25986 + if (p -> stack_end >= lo && p -> stack_end < hi) return 1;
25987 +# else /* STACK_GROWS_DOWN */
25988 + if (p -> stack_end > lo && p -> stack_end <= hi) return 1;
25995 +#endif /* USE_PROC_FOR_LIBRARIES */
25997 +#ifdef GC_LINUX_THREADS
25998 +/* Return the number of processors, or i<= 0 if it can't be determined. */
25999 +int GC_get_nprocs()
26001 + /* Should be "return sysconf(_SC_NPROCESSORS_ONLN);" but that */
26002 + /* appears to be buggy in many cases. */
26003 + /* We look for lines "cpu<n>" in /proc/stat. */
26004 +# define STAT_BUF_SIZE 4096
26005 +# define STAT_READ read
26006 + /* If read is wrapped, this may need to be redefined to call */
26007 + /* the real one. */
26008 + char stat_buf[STAT_BUF_SIZE];
26011 + /* Some old kernels only have a single "cpu nnnn ..." */
26012 + /* entry in /proc/stat. We identify those as */
26013 + /* uniprocessors. */
26014 + size_t i, len = 0;
26016 + f = open("/proc/stat", O_RDONLY);
26017 + if (f < 0 || (len = STAT_READ(f, stat_buf, STAT_BUF_SIZE)) < 100) {
26018 + WARN("Couldn't read /proc/stat\n", 0);
26021 + for (i = 0; i < len - 100; ++i) {
26022 + if (stat_buf[i] == '\n' && stat_buf[i+1] == 'c'
26023 + && stat_buf[i+2] == 'p' && stat_buf[i+3] == 'u') {
26024 + int cpu_no = atoi(stat_buf + i + 4);
26025 + if (cpu_no >= result) result = cpu_no + 1;
26031 +#endif /* GC_LINUX_THREADS */
26033 +/* We hold the GC lock. Wait until an in-progress GC has finished. */
26034 +/* Repeatedly RELEASES GC LOCK in order to wait. */
26035 +/* If wait_for_all is true, then we exit with the GC lock held and no */
26036 +/* collection in progress; otherwise we just wait for the current GC */
26038 +extern GC_bool GC_collection_in_progress();
26039 +void GC_wait_for_gc_completion(GC_bool wait_for_all)
26041 + if (GC_incremental && GC_collection_in_progress()) {
26042 + int old_gc_no = GC_gc_no;
26044 + /* Make sure that no part of our stack is still on the mark stack, */
26045 + /* since it's about to be unmapped. */
26046 + while (GC_incremental && GC_collection_in_progress()
26047 + && (wait_for_all || old_gc_no == GC_gc_no)) {
26049 + GC_collect_a_little_inner(1);
26058 +#ifdef HANDLE_FORK
26059 +/* Procedures called before and after a fork. The goal here is to make */
26060 +/* it safe to call GC_malloc() in a forked child. It's unclear that is */
26061 +/* attainable, since the single UNIX spec seems to imply that one */
26062 +/* should only call async-signal-safe functions, and we probably can't */
26063 +/* quite guarantee that. But we give it our best shot. (That same */
26064 +/* spec also implies that it's not safe to call the system malloc */
26065 +/* between fork() and exec(). Thus we're doing no worse than it. */
26067 +/* Called before a fork() */
26068 +void GC_fork_prepare_proc(void)
26070 + /* Acquire all relevant locks, so that after releasing the locks */
26071 + /* the child will see a consistent state in which monitor */
26072 + /* invariants hold. Unfortunately, we can't acquire libc locks */
26073 + /* we might need, and there seems to be no guarantee that libc */
26074 + /* must install a suitable fork handler. */
26075 + /* Wait for an ongoing GC to finish, since we can't finish it in */
26076 + /* the (one remaining thread in) the child. */
26078 +# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26079 + GC_wait_for_reclaim();
26081 + GC_wait_for_gc_completion(TRUE);
26082 +# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26083 + GC_acquire_mark_lock();
26087 +/* Called in parent after a fork() */
26088 +void GC_fork_parent_proc(void)
26090 +# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26091 + GC_release_mark_lock();
26096 +/* Called in child after a fork() */
26097 +void GC_fork_child_proc(void)
26099 + /* Clean up the thread table, so that just our thread is left. */
26100 +# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26101 + GC_release_mark_lock();
26103 + GC_remove_all_threads_but_me();
26104 +# ifdef PARALLEL_MARK
26105 + /* Turn off parallel marking in the child, since we are probably */
26106 + /* just going to exec, and we would have to restart mark threads. */
26108 + GC_parallel = FALSE;
26109 +# endif /* PARALLEL_MARK */
26112 +#endif /* HANDLE_FORK */
26114 +#if defined(GC_DGUX386_THREADS)
26115 +/* Return the number of processors, or i<= 0 if it can't be determined. */
26116 +int GC_get_nprocs()
26118 + /* <takis@XFree86.Org> */
26120 + struct dg_sys_info_pm_info pm_sysinfo;
26123 + status = dg_sys_info((long int *) &pm_sysinfo,
26124 + DG_SYS_INFO_PM_INFO_TYPE, DG_SYS_INFO_PM_CURRENT_VERSION);
26126 + /* set -1 for error */
26129 + /* Active CPUs */
26130 + numCpus = pm_sysinfo.idle_vp_count;
26132 +# ifdef DEBUG_THREADS
26133 + GC_printf1("Number of active CPUs in this system: %d\n", numCpus);
26137 +#endif /* GC_DGUX386_THREADS */
26139 +/* We hold the allocation lock. */
26140 +void GC_thr_init()
26142 +# ifndef GC_DARWIN_THREADS
26147 + if (GC_thr_initialized) return;
26148 + GC_thr_initialized = TRUE;
26150 +# ifdef HANDLE_FORK
26151 + /* Prepare for a possible fork. */
26152 + pthread_atfork(GC_fork_prepare_proc, GC_fork_parent_proc,
26153 + GC_fork_child_proc);
26154 +# endif /* HANDLE_FORK */
26155 + /* Add the initial thread, so we can stop it. */
26156 + t = GC_new_thread(pthread_self());
26157 +# ifdef GC_DARWIN_THREADS
26158 + t -> stop_info.mach_thread = mach_thread_self();
26160 + t -> stop_info.stack_ptr = (ptr_t)(&dummy);
26162 + t -> flags = DETACHED | MAIN_THREAD;
26166 + /* Set GC_nprocs. */
26168 + char * nprocs_string = GETENV("GC_NPROCS");
26170 + if (nprocs_string != NULL) GC_nprocs = atoi(nprocs_string);
26172 + if (GC_nprocs <= 0) {
26173 +# if defined(GC_HPUX_THREADS)
26174 + GC_nprocs = pthread_num_processors_np();
26176 +# if defined(GC_OSF1_THREADS)
26177 + GC_nprocs = sysconf(_SC_NPROCESSORS_ONLN);
26178 + if (GC_nprocs <= 0) GC_nprocs = 1;
26180 +# if defined(GC_FREEBSD_THREADS)
26183 +# if defined(GC_DARWIN_THREADS)
26185 + size_t len = sizeof(ncpus);
26186 + sysctl((int[2]) {CTL_HW, HW_NCPU}, 2, &ncpus, &len, NULL, 0);
26187 + GC_nprocs = ncpus;
26189 +# if defined(GC_LINUX_THREADS) || defined(GC_DGUX386_THREADS)
26190 + GC_nprocs = GC_get_nprocs();
26193 + if (GC_nprocs <= 0) {
26194 + WARN("GC_get_nprocs() returned %ld\n", GC_nprocs);
26196 +# ifdef PARALLEL_MARK
26200 +# ifdef PARALLEL_MARK
26202 + char * markers_string = GETENV("GC_MARKERS");
26203 + if (markers_string != NULL) {
26204 + GC_markers = atoi(markers_string);
26206 + GC_markers = GC_nprocs;
26211 +# ifdef PARALLEL_MARK
26213 + if (GC_print_stats) {
26214 + GC_printf2("Number of processors = %ld, "
26215 + "number of marker threads = %ld\n", GC_nprocs, GC_markers);
26218 + if (GC_markers == 1) {
26219 + GC_parallel = FALSE;
26221 + if (GC_print_stats) {
26222 + GC_printf0("Single marker thread, turning off parallel marking\n");
26226 + GC_parallel = TRUE;
26227 + /* Disable true incremental collection, but generational is OK. */
26228 + GC_time_limit = GC_TIME_UNLIMITED;
26234 +/* Perform all initializations, including those that */
26235 +/* may require allocation. */
26236 +/* Called without allocation lock. */
26237 +/* Must be called before a second thread is created. */
26238 +/* Called without allocation lock. */
26239 +void GC_init_parallel()
26241 + if (parallel_initialized) return;
26242 + parallel_initialized = TRUE;
26244 + /* GC_init() calls us back, so set flag first. */
26245 + if (!GC_is_initialized) GC_init();
26246 + /* If we are using a parallel marker, start the helper threads. */
26247 +# ifdef PARALLEL_MARK
26248 + if (GC_parallel) start_mark_threads();
26250 + /* Initialize thread local free lists if used. */
26251 +# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL)
26253 + GC_init_thread_local(GC_lookup_thread(pthread_self()));
26259 +#if !defined(GC_DARWIN_THREADS)
26260 +int WRAP_FUNC(pthread_sigmask)(int how, const sigset_t *set, sigset_t *oset)
26262 + sigset_t fudged_set;
26264 + if (set != NULL && (how == SIG_BLOCK || how == SIG_SETMASK)) {
26265 + fudged_set = *set;
26266 + sigdelset(&fudged_set, SIG_SUSPEND);
26267 + set = &fudged_set;
26269 + return(REAL_FUNC(pthread_sigmask)(how, set, oset));
26271 +#endif /* !GC_DARWIN_THREADS */
26273 +/* Wrappers for functions that are likely to block for an appreciable */
26274 +/* length of time. Must be called in pairs, if at all. */
26275 +/* Nothing much beyond the system call itself should be executed */
26276 +/* between these. */
26278 +void GC_start_blocking(void) {
26279 +# define SP_SLOP 128
26282 + me = GC_lookup_thread(pthread_self());
26283 + GC_ASSERT(!(me -> thread_blocked));
26285 + me -> stop_info.stack_ptr = (ptr_t)GC_save_regs_in_stack();
26287 +# ifndef GC_DARWIN_THREADS
26288 + me -> stop_info.stack_ptr = (ptr_t)GC_approx_sp();
26292 + me -> backing_store_ptr = (ptr_t)GC_save_regs_in_stack() + SP_SLOP;
26294 + /* Add some slop to the stack pointer, since the wrapped call may */
26295 + /* end up pushing more callee-save registers. */
26296 +# ifndef GC_DARWIN_THREADS
26297 +# ifdef STACK_GROWS_UP
26298 + me -> stop_info.stack_ptr += SP_SLOP;
26300 + me -> stop_info.stack_ptr -= SP_SLOP;
26303 + me -> thread_blocked = TRUE;
26307 +void GC_end_blocking(void) {
26309 + LOCK(); /* This will block if the world is stopped. */
26310 + me = GC_lookup_thread(pthread_self());
26311 + GC_ASSERT(me -> thread_blocked);
26312 + me -> thread_blocked = FALSE;
26316 +#if defined(GC_DGUX386_THREADS)
26317 +#define __d10_sleep sleep
26318 +#endif /* GC_DGUX386_THREADS */
26320 +/* A wrapper for the standard C sleep function */
26321 +int WRAP_FUNC(sleep) (unsigned int seconds)
26325 + GC_start_blocking();
26326 + result = REAL_FUNC(sleep)(seconds);
26327 + GC_end_blocking();
26331 +struct start_info {
26332 + void *(*start_routine)(void *);
26335 + sem_t registered; /* 1 ==> in our thread table, but */
26336 + /* parent hasn't yet noticed. */
26339 +/* Called at thread exit. */
26340 +/* Never called for main thread. That's OK, since it */
26341 +/* results in at most a tiny one-time leak. And */
26342 +/* linuxthreads doesn't reclaim the main threads */
26343 +/* resources or id anyway. */
26344 +void GC_thread_exit_proc(void *arg)
26349 + me = GC_lookup_thread(pthread_self());
26350 + GC_destroy_thread_local(me);
26351 + if (me -> flags & DETACHED) {
26352 + GC_delete_thread(pthread_self());
26354 + me -> flags |= FINISHED;
26356 +# if defined(THREAD_LOCAL_ALLOC) && !defined(USE_PTHREAD_SPECIFIC) \
26357 + && !defined(USE_HPUX_TLS) && !defined(DBG_HDRS_ALL)
26358 + GC_remove_specific(GC_thread_key);
26360 + GC_wait_for_gc_completion(FALSE);
26364 +int WRAP_FUNC(pthread_join)(pthread_t thread, void **retval)
26367 + GC_thread thread_gc_id;
26370 + thread_gc_id = GC_lookup_thread(thread);
26371 + /* This is guaranteed to be the intended one, since the thread id */
26372 + /* cant have been recycled by pthreads. */
26374 + result = REAL_FUNC(pthread_join)(thread, retval);
26375 +# if defined (GC_FREEBSD_THREADS)
26376 + /* On FreeBSD, the wrapped pthread_join() sometimes returns (what
26377 + appears to be) a spurious EINTR which caused the test and real code
26378 + to gratuitously fail. Having looked at system pthread library source
26379 + code, I see how this return code may be generated. In one path of
26380 + code, pthread_join() just returns the errno setting of the thread
26381 + being joined. This does not match the POSIX specification or the
26382 + local man pages thus I have taken the liberty to catch this one
26383 + spurious return value properly conditionalized on GC_FREEBSD_THREADS. */
26384 + if (result == EINTR) result = 0;
26386 + if (result == 0) {
26388 + /* Here the pthread thread id may have been recycled. */
26389 + GC_delete_gc_thread(thread, thread_gc_id);
26396 +WRAP_FUNC(pthread_detach)(pthread_t thread)
26399 + GC_thread thread_gc_id;
26402 + thread_gc_id = GC_lookup_thread(thread);
26404 + result = REAL_FUNC(pthread_detach)(thread);
26405 + if (result == 0) {
26407 + thread_gc_id -> flags |= DETACHED;
26408 + /* Here the pthread thread id may have been recycled. */
26409 + if (thread_gc_id -> flags & FINISHED) {
26410 + GC_delete_gc_thread(thread, thread_gc_id);
26417 +void * GC_start_routine(void * arg)
26420 + struct start_info * si = arg;
26423 + pthread_t my_pthread;
26424 + void *(*start)(void *);
26427 + my_pthread = pthread_self();
26428 +# ifdef DEBUG_THREADS
26429 + GC_printf1("Starting thread 0x%lx\n", my_pthread);
26430 + GC_printf1("pid = %ld\n", (long) getpid());
26431 + GC_printf1("sp = 0x%lx\n", (long) &arg);
26434 + me = GC_new_thread(my_pthread);
26435 +#ifdef GC_DARWIN_THREADS
26436 + me -> stop_info.mach_thread = mach_thread_self();
26438 + me -> stop_info.stack_ptr = 0;
26440 + me -> flags = si -> flags;
26441 + /* me -> stack_end = GC_linux_stack_base(); -- currently (11/99) */
26442 + /* doesn't work because the stack base in /proc/self/stat is the */
26443 + /* one for the main thread. There is a strong argument that that's */
26444 + /* a kernel bug, but a pervasive one. */
26445 +# ifdef STACK_GROWS_DOWN
26446 + me -> stack_end = (ptr_t)(((word)(&dummy) + (GC_page_size - 1))
26447 + & ~(GC_page_size - 1));
26448 +# ifndef GC_DARWIN_THREADS
26449 + me -> stop_info.stack_ptr = me -> stack_end - 0x10;
26451 + /* Needs to be plausible, since an asynchronous stack mark */
26452 + /* should not crash. */
26454 + me -> stack_end = (ptr_t)((word)(&dummy) & ~(GC_page_size - 1));
26455 + me -> stop_info.stack_ptr = me -> stack_end + 0x10;
26457 + /* This is dubious, since we may be more than a page into the stack, */
26458 + /* and hence skip some of it, though it's not clear that matters. */
26460 + me -> backing_store_end = (ptr_t)
26461 + (GC_save_regs_in_stack() & ~(GC_page_size - 1));
26462 + /* This is also < 100% convincing. We should also read this */
26463 + /* from /proc, but the hook to do so isn't there yet. */
26464 +# endif /* IA64 */
26466 + start = si -> start_routine;
26467 +# ifdef DEBUG_THREADS
26468 + GC_printf1("start_routine = 0x%lx\n", start);
26470 + start_arg = si -> arg;
26471 + sem_post(&(si -> registered)); /* Last action on si. */
26472 + /* OK to deallocate. */
26473 + pthread_cleanup_push(GC_thread_exit_proc, 0);
26474 +# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL)
26476 + GC_init_thread_local(me);
26479 + result = (*start)(start_arg);
26481 + GC_printf1("Finishing thread 0x%x\n", pthread_self());
26483 + me -> status = result;
26484 + me -> flags |= FINISHED;
26485 + pthread_cleanup_pop(1);
26486 + /* Cleanup acquires lock, ensuring that we can't exit */
26487 + /* while a collection that thinks we're alive is trying to stop */
26493 +WRAP_FUNC(pthread_create)(pthread_t *new_thread,
26494 + const pthread_attr_t *attr,
26495 + void *(*start_routine)(void *), void *arg)
26499 + word my_flags = 0;
26500 + struct start_info * si;
26501 + /* This is otherwise saved only in an area mmapped by the thread */
26502 + /* library, which isn't visible to the collector. */
26504 + /* We resist the temptation to muck with the stack size here, */
26505 + /* even if the default is unreasonably small. That's the client's */
26506 + /* responsibility. */
26509 + si = (struct start_info *)GC_INTERNAL_MALLOC(sizeof(struct start_info),
26512 + if (!parallel_initialized) GC_init_parallel();
26513 + if (0 == si) return(ENOMEM);
26514 + sem_init(&(si -> registered), 0, 0);
26515 + si -> start_routine = start_routine;
26518 + if (!GC_thr_initialized) GC_thr_init();
26519 +# ifdef GC_ASSERTIONS
26522 + if (NULL == attr) {
26523 + pthread_attr_t my_attr;
26524 + pthread_attr_init(&my_attr);
26525 + pthread_attr_getstacksize(&my_attr, &stack_size);
26527 + pthread_attr_getstacksize(attr, &stack_size);
26529 + GC_ASSERT(stack_size >= (8*HBLKSIZE*sizeof(word)));
26530 + /* Our threads may need to do some work for the GC. */
26531 + /* Ridiculously small threads won't work, and they */
26532 + /* probably wouldn't work anyway. */
26535 + if (NULL == attr) {
26536 + detachstate = PTHREAD_CREATE_JOINABLE;
26538 + pthread_attr_getdetachstate(attr, &detachstate);
26540 + if (PTHREAD_CREATE_DETACHED == detachstate) my_flags |= DETACHED;
26541 + si -> flags = my_flags;
26543 +# ifdef DEBUG_THREADS
26544 + GC_printf1("About to start new thread from thread 0x%X\n",
26548 + result = REAL_FUNC(pthread_create)(new_thread, attr, GC_start_routine, si);
26550 +# ifdef DEBUG_THREADS
26551 + GC_printf1("Started thread 0x%X\n", *new_thread);
26553 + /* Wait until child has been added to the thread table. */
26554 + /* This also ensures that we hold onto si until the child is done */
26555 + /* with it. Thus it doesn't matter whether it is otherwise */
26556 + /* visible to the collector. */
26557 + while (0 != sem_wait(&(si -> registered))) {
26558 + if (EINTR != errno) ABORT("sem_wait failed");
26560 + sem_destroy(&(si -> registered));
26562 + GC_INTERNAL_FREE(si);
26568 +#ifdef GENERIC_COMPARE_AND_SWAP
26569 + pthread_mutex_t GC_compare_and_swap_lock = PTHREAD_MUTEX_INITIALIZER;
26571 + GC_bool GC_compare_and_exchange(volatile GC_word *addr,
26572 + GC_word old, GC_word new_val)
26575 + pthread_mutex_lock(&GC_compare_and_swap_lock);
26576 + if (*addr == old) {
26582 + pthread_mutex_unlock(&GC_compare_and_swap_lock);
26586 + GC_word GC_atomic_add(volatile GC_word *addr, GC_word how_much)
26589 + pthread_mutex_lock(&GC_compare_and_swap_lock);
26591 + *addr = old + how_much;
26592 + pthread_mutex_unlock(&GC_compare_and_swap_lock);
26596 +#endif /* GENERIC_COMPARE_AND_SWAP */
26597 +/* Spend a few cycles in a way that can't introduce contention with */
26598 +/* othre threads. */
26603 + volatile word dummy = 0;
26606 + for (i = 0; i < 10; ++i) {
26608 + __asm__ __volatile__ (" " : : : "memory");
26610 + /* Something that's unlikely to be optimized away. */
26611 + GC_noop(++dummy);
26616 +#define SPIN_MAX 1024 /* Maximum number of calls to GC_pause before */
26619 +VOLATILE GC_bool GC_collecting = 0;
26620 + /* A hint that we're in the collector and */
26621 + /* holding the allocation lock for an */
26622 + /* extended period. */
26624 +#if !defined(USE_SPIN_LOCK) || defined(PARALLEL_MARK)
26625 +/* If we don't want to use the below spinlock implementation, either */
26626 +/* because we don't have a GC_test_and_set implementation, or because */
26627 +/* we don't want to risk sleeping, we can still try spinning on */
26628 +/* pthread_mutex_trylock for a while. This appears to be very */
26629 +/* beneficial in many cases. */
26630 +/* I suspect that under high contention this is nearly always better */
26631 +/* than the spin lock. But it's a bit slower on a uniprocessor. */
26632 +/* Hence we still default to the spin lock. */
26633 +/* This is also used to acquire the mark lock for the parallel */
26636 +/* Here we use a strict exponential backoff scheme. I don't know */
26637 +/* whether that's better or worse than the above. We eventually */
26638 +/* yield by calling pthread_mutex_lock(); it never makes sense to */
26639 +/* explicitly sleep. */
26641 +void GC_generic_lock(pthread_mutex_t * lock)
26643 +#ifndef NO_PTHREAD_TRYLOCK
26644 + unsigned pause_length = 1;
26647 + if (0 == pthread_mutex_trylock(lock)) return;
26648 + for (; pause_length <= SPIN_MAX; pause_length <<= 1) {
26649 + for (i = 0; i < pause_length; ++i) {
26652 + switch(pthread_mutex_trylock(lock)) {
26658 + ABORT("Unexpected error from pthread_mutex_trylock");
26661 +#endif /* !NO_PTHREAD_TRYLOCK */
26662 + pthread_mutex_lock(lock);
26665 +#endif /* !USE_SPIN_LOCK || PARALLEL_MARK */
26667 +#if defined(USE_SPIN_LOCK)
26669 +/* Reasonably fast spin locks. Basically the same implementation */
26670 +/* as STL alloc.h. This isn't really the right way to do this. */
26671 +/* but until the POSIX scheduling mess gets straightened out ... */
26673 +volatile unsigned int GC_allocate_lock = 0;
26678 +# define low_spin_max 30 /* spin cycles if we suspect uniprocessor */
26679 +# define high_spin_max SPIN_MAX /* spin cycles for multiprocessor */
26680 + static unsigned spin_max = low_spin_max;
26681 + unsigned my_spin_max;
26682 + static unsigned last_spins = 0;
26683 + unsigned my_last_spins;
26686 + if (!GC_test_and_set(&GC_allocate_lock)) {
26689 + my_spin_max = spin_max;
26690 + my_last_spins = last_spins;
26691 + for (i = 0; i < my_spin_max; i++) {
26692 + if (GC_collecting || GC_nprocs == 1) goto yield;
26693 + if (i < my_last_spins/2 || GC_allocate_lock) {
26697 + if (!GC_test_and_set(&GC_allocate_lock)) {
26700 + * Spinning worked. Thus we're probably not being scheduled
26701 + * against the other process with which we were contending.
26702 + * Thus it makes sense to spin longer the next time.
26705 + spin_max = high_spin_max;
26709 + /* We are probably being scheduled against the other process. Sleep. */
26710 + spin_max = low_spin_max;
26712 + for (i = 0;; ++i) {
26713 + if (!GC_test_and_set(&GC_allocate_lock)) {
26716 +# define SLEEP_THRESHOLD 12
26717 + /* Under Linux very short sleeps tend to wait until */
26718 + /* the current time quantum expires. On old Linux */
26719 + /* kernels nanosleep(<= 2ms) just spins under Linux. */
26720 + /* (Under 2.4, this happens only for real-time */
26721 + /* processes.) We want to minimize both behaviors */
26723 + if (i < SLEEP_THRESHOLD) {
26726 + struct timespec ts;
26728 + if (i > 24) i = 24;
26729 + /* Don't wait for more than about 15msecs, even */
26730 + /* under extreme contention. */
26732 + ts.tv_nsec = 1 << i;
26733 + nanosleep(&ts, 0);
26738 +#else /* !USE_SPINLOCK */
26741 +#ifndef NO_PTHREAD_TRYLOCK
26742 + if (1 == GC_nprocs || GC_collecting) {
26743 + pthread_mutex_lock(&GC_allocate_ml);
26745 + GC_generic_lock(&GC_allocate_ml);
26747 +#else /* !NO_PTHREAD_TRYLOCK */
26748 + pthread_mutex_lock(&GC_allocate_ml);
26749 +#endif /* !NO_PTHREAD_TRYLOCK */
26752 +#endif /* !USE_SPINLOCK */
26754 +#if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26756 +#ifdef GC_ASSERTIONS
26757 + pthread_t GC_mark_lock_holder = NO_THREAD;
26761 + /* Ugly workaround for a linux threads bug in the final versions */
26762 + /* of glibc2.1. Pthread_mutex_trylock sets the mutex owner */
26763 + /* field even when it fails to acquire the mutex. This causes */
26764 + /* pthread_cond_wait to die. Remove for glibc2.2. */
26765 + /* According to the man page, we should use */
26766 + /* PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP, but that isn't actually */
26768 + static pthread_mutex_t mark_mutex =
26769 + {0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, {0, 0}};
26771 + static pthread_mutex_t mark_mutex = PTHREAD_MUTEX_INITIALIZER;
26774 +static pthread_cond_t builder_cv = PTHREAD_COND_INITIALIZER;
26776 +void GC_acquire_mark_lock()
26779 + if (pthread_mutex_lock(&mark_mutex) != 0) {
26780 + ABORT("pthread_mutex_lock failed");
26783 + GC_generic_lock(&mark_mutex);
26784 +# ifdef GC_ASSERTIONS
26785 + GC_mark_lock_holder = pthread_self();
26789 +void GC_release_mark_lock()
26791 + GC_ASSERT(GC_mark_lock_holder == pthread_self());
26792 +# ifdef GC_ASSERTIONS
26793 + GC_mark_lock_holder = NO_THREAD;
26795 + if (pthread_mutex_unlock(&mark_mutex) != 0) {
26796 + ABORT("pthread_mutex_unlock failed");
26800 +/* Collector must wait for a freelist builders for 2 reasons: */
26801 +/* 1) Mark bits may still be getting examined without lock. */
26802 +/* 2) Partial free lists referenced only by locals may not be scanned */
26803 +/* correctly, e.g. if they contain "pointer-free" objects, since the */
26804 +/* free-list link may be ignored. */
26805 +void GC_wait_builder()
26807 + GC_ASSERT(GC_mark_lock_holder == pthread_self());
26808 +# ifdef GC_ASSERTIONS
26809 + GC_mark_lock_holder = NO_THREAD;
26811 + if (pthread_cond_wait(&builder_cv, &mark_mutex) != 0) {
26812 + ABORT("pthread_cond_wait failed");
26814 + GC_ASSERT(GC_mark_lock_holder == NO_THREAD);
26815 +# ifdef GC_ASSERTIONS
26816 + GC_mark_lock_holder = pthread_self();
26820 +void GC_wait_for_reclaim()
26822 + GC_acquire_mark_lock();
26823 + while (GC_fl_builder_count > 0) {
26824 + GC_wait_builder();
26826 + GC_release_mark_lock();
26829 +void GC_notify_all_builder()
26831 + GC_ASSERT(GC_mark_lock_holder == pthread_self());
26832 + if (pthread_cond_broadcast(&builder_cv) != 0) {
26833 + ABORT("pthread_cond_broadcast failed");
26837 +#endif /* PARALLEL_MARK || THREAD_LOCAL_ALLOC */
26839 +#ifdef PARALLEL_MARK
26841 +static pthread_cond_t mark_cv = PTHREAD_COND_INITIALIZER;
26843 +void GC_wait_marker()
26845 + GC_ASSERT(GC_mark_lock_holder == pthread_self());
26846 +# ifdef GC_ASSERTIONS
26847 + GC_mark_lock_holder = NO_THREAD;
26849 + if (pthread_cond_wait(&mark_cv, &mark_mutex) != 0) {
26850 + ABORT("pthread_cond_wait failed");
26852 + GC_ASSERT(GC_mark_lock_holder == NO_THREAD);
26853 +# ifdef GC_ASSERTIONS
26854 + GC_mark_lock_holder = pthread_self();
26858 +void GC_notify_all_marker()
26860 + if (pthread_cond_broadcast(&mark_cv) != 0) {
26861 + ABORT("pthread_cond_broadcast failed");
26865 +#endif /* PARALLEL_MARK */
26867 +# endif /* GC_LINUX_THREADS and friends */
26869 diff -Nubr boehm-gc/ptr_chck.c ../boehm-gc/ptr_chck.c
26870 --- boehm-gc/ptr_chck.c Fri Aug 17 11:30:46 2001
26871 +++ ../boehm-gc/ptr_chck.c Mon May 26 12:48:52 2003
26875 sz = WORDS_TO_BYTES(hhdr -> hb_sz);
26876 - if (sz > WORDS_TO_BYTES(MAXOBJSZ)) {
26877 + if (sz > MAXOBJBYTES) {
26878 base = (ptr_t)HBLKPTR(p);
26880 if ((ptr_t)p >= limit) {
26881 @@ -165,7 +165,7 @@
26882 pdispl = HBLKDISPL(p);
26883 map_entry = MAP_ENTRY((hhdr -> hb_map), pdispl);
26884 if (map_entry == OBJ_INVALID
26885 - || sz > MAXOBJSZ && (ptr_t)p >= (ptr_t)h + sz) {
26886 + || sz > MAXOBJBYTES && (ptr_t)p >= (ptr_t)h + sz) {
26890 diff -Nubr boehm-gc/reclaim.c ../boehm-gc/reclaim.c
26891 --- boehm-gc/reclaim.c Fri Mar 29 14:52:12 2002
26892 +++ ../boehm-gc/reclaim.c Mon May 26 12:48:52 2003
26893 @@ -27,10 +27,43 @@
26895 #endif /* PARALLEL_MARK */
26897 -static void report_leak(p, sz)
26900 +/* We defer printing of leaked objects until we're done with the GC */
26901 +/* cycle, since the routine for printing objects needs to run outside */
26902 +/* the collector, e.g. without the allocation lock. */
26903 +#define MAX_LEAKED 40
26904 +ptr_t GC_leaked[MAX_LEAKED];
26905 +unsigned GC_n_leaked = 0;
26907 +GC_bool GC_have_errors = FALSE;
26909 +void GC_add_leaked(leaked)
26912 + if (GC_n_leaked < MAX_LEAKED) {
26913 + GC_have_errors = TRUE;
26914 + GC_leaked[GC_n_leaked++] = leaked;
26915 + /* Make sure it's not reclaimed this cycle */
26916 + GC_set_mark_bit(leaked);
26920 +static GC_bool printing_errors = FALSE;
26921 +/* Print all objects on the list after printing any smashed objs. */
26922 +/* Clear both lists. */
26923 +void GC_print_all_errors ()
26928 + if (printing_errors) {
26932 + printing_errors = TRUE;
26934 + if (GC_debugging_started) GC_print_all_smashed();
26935 + for (i = 0; i < GC_n_leaked; ++i) {
26936 + ptr_t p = GC_leaked[i];
26937 if (HDR(p) -> hb_obj_kind == PTRFREE) {
26938 GC_err_printf0("Leaked atomic object at ");
26940 @@ -38,12 +71,17 @@
26942 GC_print_heap_obj(p);
26943 GC_err_printf0("\n");
26945 + GC_leaked[i] = 0;
26948 + printing_errors = FALSE;
26952 # define FOUND_FREE(hblk, word_no) \
26954 - report_leak((ptr_t)hblk + WORDS_TO_BYTES(word_no), \
26955 - HDR(hblk) -> hb_sz); \
26956 + GC_add_leaked((ptr_t)hblk + WORDS_TO_BYTES(word_no)); \
26960 @@ -866,7 +904,7 @@
26962 * This must be done before dropping a list of free gcj-style objects,
26963 * since may otherwise end up with dangling "descriptor" pointers.
26964 - * It may help for other pointer-containg objects.
26965 + * It may help for other pointer-containing objects.
26967 void GC_clear_fl_links(flp)
26969 diff -Nubr boehm-gc/solaris_pthreads.c ../boehm-gc/solaris_pthreads.c
26970 --- boehm-gc/solaris_pthreads.c Mon Feb 11 20:37:53 2002
26971 +++ ../boehm-gc/solaris_pthreads.c Mon May 26 12:48:52 2003
26974 * Support code for Solaris threads. Provides functionality we wish Sun
26975 * had provided. Relies on some information we probably shouldn't rely on.
26976 - * Modified Peter C. for Solaris Posix Threads.
26977 + * Modified by Peter C. for Solaris Posix Threads.
26979 -/* Boehm, September 14, 1994 4:44 pm PDT */
26981 # if defined(GC_SOLARIS_PTHREADS)
26982 # include "private/gc_priv.h"
26983 diff -Nubr boehm-gc/solaris_threads.c ../boehm-gc/solaris_threads.c
26984 --- boehm-gc/solaris_threads.c Mon Feb 11 20:37:53 2002
26985 +++ ../boehm-gc/solaris_threads.c Mon May 26 12:48:52 2003
26987 # include <unistd.h>
26988 # include <errno.h>
26990 +#ifdef HANDLE_FORK
26991 + --> Not yet supported. Try porting the code from linux_threads.c.
26995 * This is the default size of the LWP arrays. If there are more LWPs
26996 * than this when a stop-the-world GC happens, set_max_lwps will be
26997 @@ -361,7 +365,7 @@
26998 sizeof (prgregset_t)) != 0) {
27001 - for(j = 0; j < NGREG; j++)
27002 + for(j = 0; j < NPRGREG; j++)
27004 GC_printf3("%i: %x -> %x\n", j,
27005 GC_lwp_registers[i][j],
27006 @@ -821,7 +825,7 @@
27008 t = GC_lookup_thread(target_thread);
27009 if (t == 0) ABORT("thread unknown to GC");
27010 - t -> flags |= SUSPENDED;
27011 + t -> flags |= SUSPNDED;
27015 @@ -837,7 +841,7 @@
27017 t = GC_lookup_thread(target_thread);
27018 if (t == 0) ABORT("thread unknown to GC");
27019 - t -> flags &= ~SUSPENDED;
27020 + t -> flags &= ~SUSPNDED;
27024 @@ -923,7 +927,7 @@
27025 my_flags |= CLIENT_OWNS_STACK;
27027 if (flags & THR_DETACHED) my_flags |= DETACHED;
27028 - if (flags & THR_SUSPENDED) my_flags |= SUSPENDED;
27029 + if (flags & THR_SUSPENDED) my_flags |= SUSPNDED;
27030 result = thr_create(stack, stack_size, start_routine,
27031 arg, flags & ~THR_DETACHED, &my_new_thread);
27033 diff -Nubr boehm-gc/tests/CVS/Entries ../boehm-gc/tests/CVS/Entries
27034 --- boehm-gc/tests/CVS/Entries Wed Dec 31 16:00:00 1969
27035 +++ ../boehm-gc/tests/CVS/Entries Sun May 25 12:49:10 2003
27037 +/leak_test.c/1.2/Fri Sep 14 00:43:59 2001//
27038 +/test.c/1.4/Thu Mar 14 07:28:34 2002//
27039 +/test_cpp.cc/1.2/Fri Sep 14 00:43:59 2001//
27040 +/thread_leak_test.c/1.2/Fri Sep 14 00:43:59 2001//
27041 +/trace_test.c/1.2/Fri Sep 14 00:43:59 2001//
27043 diff -Nubr boehm-gc/tests/CVS/Repository ../boehm-gc/tests/CVS/Repository
27044 --- boehm-gc/tests/CVS/Repository Wed Dec 31 16:00:00 1969
27045 +++ ../boehm-gc/tests/CVS/Repository Sun May 25 12:49:10 2003
27047 +/cvs/root/gcc3/gcc3/boehm-gc/tests
27048 diff -Nubr boehm-gc/tests/CVS/Root ../boehm-gc/tests/CVS/Root
27049 --- boehm-gc/tests/CVS/Root Wed Dec 31 16:00:00 1969
27050 +++ ../boehm-gc/tests/CVS/Root Sun May 25 12:49:10 2003
27052 +:pserver:anonymous@anoncvs.opensource.apple.com:/cvs/root
27053 diff -Nubr boehm-gc/threadlibs.c ../boehm-gc/threadlibs.c
27054 --- boehm-gc/threadlibs.c Mon Feb 11 20:37:53 2002
27055 +++ ../boehm-gc/threadlibs.c Mon May 26 12:48:52 2003
27059 # if defined(GC_USE_LD_WRAP)
27060 - printf("-Wl,--wrap -Wl,read -Wl,--wrap -Wl,dlopen "
27061 + printf("-Wl,--wrap -Wl,dlopen "
27062 "-Wl,--wrap -Wl,pthread_create -Wl,--wrap -Wl,pthread_join "
27063 "-Wl,--wrap -Wl,pthread_detach "
27064 "-Wl,--wrap -Wl,pthread_sigmask -Wl,--wrap -Wl,sleep\n");
27066 # if defined(GC_LINUX_THREADS) || defined(GC_IRIX_THREADS) \
27067 - || defined(GC_FREEBSD_THREADS) || defined(GC_SOLARIS_PTHREADS)
27068 + || defined(GC_FREEBSD_THREADS) || defined(GC_SOLARIS_PTHREADS) \
27069 + || defined(GC_MACOSX_THREADS)
27070 printf("-lpthread\n");
27072 # if defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS)
27075 # if defined(GC_SOLARIS_THREADS) && !defined(GC_SOLARIS_PTHREADS)
27076 printf("-lthread -ldl\n");
27078 +# if defined(GC_WIN32_THREADS) && defined(CYGWIN32)
27079 + printf("-lpthread\n");
27081 +# if defined(GC_OSF1_THREADS)
27082 + printf("-lpthread -lrt");
27084 + /* You need GCC 3.0.3 to build this one! */
27085 + /* DG/UX native gcc doesnt know what "-pthread" is */
27086 +# if defined(GC_DGUX386_THREADS)
27087 + printf("-ldl -pthread\n");
27091 diff -Nubr boehm-gc/typd_mlc.c ../boehm-gc/typd_mlc.c
27092 --- boehm-gc/typd_mlc.c Fri Aug 17 11:30:46 2001
27093 +++ ../boehm-gc/typd_mlc.c Mon May 26 12:48:52 2003
27094 @@ -437,6 +437,7 @@
27095 for (; bm != 0; bm >>= 1, current_p++) {
27097 current = *current_p;
27098 + FIXUP_POINTER(current);
27099 if ((ptr_t)current >= least_ha && (ptr_t)current <= greatest_ha) {
27100 PUSH_CONTENTS((ptr_t)current, mark_stack_ptr,
27101 mark_stack_limit, current_p, exit1);
27102 @@ -674,7 +675,7 @@
27103 if( !FASTLOCK_SUCCEEDED() || (op = *opp) == 0 ) {
27105 op = (ptr_t)GENERAL_MALLOC((word)lb, GC_explicit_kind);
27106 - if (0 == op) return(0);
27107 + if (0 == op) return 0;
27108 # ifdef MERGE_SIZES
27109 lw = GC_size_map[lb]; /* May have been uninitialized. */
27111 diff -Nubr boehm-gc/version.h ../boehm-gc/version.h
27112 --- boehm-gc/version.h Mon Feb 11 20:37:53 2002
27113 +++ ../boehm-gc/version.h Mon May 26 12:48:52 2003
27115 -#define GC_VERSION_MAJOR 6
27116 -#define GC_VERSION_MINOR 1
27117 -#define GC_ALPHA_VERSION 3
27118 +/* The version here should match that in configure/configure.in */
27119 +/* Eventually this one may become unnecessary. For now we need */
27120 +/* it to keep the old-style build process working. */
27121 +#define GC_TMP_VERSION_MAJOR 6
27122 +#define GC_TMP_VERSION_MINOR 2
27123 +#define GC_TMP_ALPHA_VERSION 5
27125 +#if defined(GC_VERSION_MAJOR)
27126 +# if GC_TMP_VERSION_MAJOR != GC_VERSION_MAJOR || \
27127 + GC_TMP_VERSION_MINOR != GC_VERSION_MINOR || \
27128 + GC_TMP_ALPHA_VERSION != GC_ALPHA_VERSION
27129 +# error Inconsistent version info. Check version.h and configure.in.
27132 +# define GC_VERSION_MAJOR GC_TMP_VERSION_MAJOR
27133 +# define GC_VERSION_MINOR GC_TMP_VERSION_MINOR
27134 +# define GC_ALPHA_VERSION GC_TMP_ALPHA_VERSION
27137 +#ifndef GC_NOT_ALPHA
27138 # define GC_NOT_ALPHA 0xff
27141 #ifndef GC_NO_VERSION_VAR
27143 diff -Nubr boehm-gc/win32_threads.c ../boehm-gc/win32_threads.c
27144 --- boehm-gc/win32_threads.c Mon Apr 28 13:55:07 2003
27145 +++ ../boehm-gc/win32_threads.c Mon May 26 12:48:52 2003
27148 #include "private/gc_priv.h"
27152 -#include <windows.h>
27154 +# include <errno.h>
27156 + /* Cygwin-specific forward decls */
27157 +# undef pthread_create
27158 +# undef pthread_sigmask
27159 +# undef pthread_join
27162 +# define DEBUG_CYGWIN_THREADS 0
27164 + GC_bool GC_thr_initialized = FALSE;
27165 + void * GC_start_routine(void * arg);
27166 + void GC_thread_exit_proc(void *arg);
27170 -#define MAX_THREADS 64
27171 +#ifndef MAX_THREADS
27172 +# define MAX_THREADS 64
27175 struct thread_entry {
27178 /* !in_use ==> stack == 0 */
27183 + void *status; /* hold exit value until join in case it's a pointer */
27184 + pthread_t pthread_id;
27189 volatile GC_bool GC_please_stop = FALSE;
27191 /* Unlike the other threads implementations, the thread table here */
27192 /* contains no pointers to the collectable heap. Thus we have */
27193 /* no private structures we need to preserve. */
27195 + { int i; /* pthreads may keep a pointer in the thread exit value */
27196 + for (i = 0; i < MAX_THREADS; i++)
27197 + if (thread_table[i].in_use) GC_push_all((ptr_t)&(thread_table[i].status),(ptr_t)(&(thread_table[i].status)+1));
27202 void GC_stop_world()
27204 DWORD thread_id = GetCurrentThreadId();
27208 + if (!GC_thr_initialized) ABORT("GC_stop_world() called before GC_thr_init()");
27211 GC_please_stop = TRUE;
27212 for (i = 0; i < MAX_THREADS; i++)
27213 if (thread_table[i].stack != 0
27214 @@ -53,10 +83,14 @@
27216 if (GetExitCodeThread(thread_table[i].handle,&exitCode) &&
27217 exitCode != STILL_ACTIVE) {
27218 - thread_table[i].stack = 0;
27219 + thread_table[i].stack = 0; /* prevent stack from being pushed */
27221 + /* this breaks pthread_join on Cygwin, which is guaranteed to */
27222 + /* only see user pthreads */
27223 thread_table[i].in_use = FALSE;
27224 CloseHandle(thread_table[i].handle);
27225 BZERO((void *)(&thread_table[i].context), sizeof(CONTEXT));
27229 if (SuspendThread(thread_table[i].handle) == (DWORD)-1)
27230 @@ -335,9 +369,11 @@
27231 if (*lo < start) *lo = start;
27234 -#if !defined(MSWINCE) && !(defined(__MINGW32__) && !defined(_DLL))
27235 +#if !defined(MSWINCE) && defined(GC_DLL)
27237 -HANDLE WINAPI GC_CreateThread(
27238 +/* We register threads from DllMain */
27240 +GC_API HANDLE GC_CreateThread(
27241 LPSECURITY_ATTRIBUTES lpThreadAttributes,
27242 DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress,
27243 LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId )
27244 @@ -346,7 +382,10 @@
27245 lpParameter, dwCreationFlags, lpThreadId);
27248 -#else /* !defined(MSWINCE) && !(defined(__MINGW32__) && !defined(_DLL)) */
27249 +#else /* defined(MSWINCE) || !defined(GC_DLL)) */
27251 +/* We have no DllMain to take care of new threads. Thus we */
27252 +/* must properly intercept thread creation. */
27255 HANDLE child_ready_h, parent_ready_h;
27256 @@ -527,22 +566,11 @@
27258 LONG WINAPI GC_write_fault_handler(struct _EXCEPTION_POINTERS *exc_info);
27263 - * This isn't generally safe, since DllMain is not premptible.
27264 - * If another thread holds the lock while this runs we're in trouble.
27265 - * Pontus Rydin suggests wrapping the thread start routine instead.
27266 +/* threadAttach/threadDetach routines used by both CYGWIN and DLL
27267 + * implementation, since both recieve explicit notification on thread
27268 + * creation/destruction.
27270 -BOOL WINAPI DllMain(HINSTANCE inst, ULONG reason, LPVOID reserved)
27272 - switch (reason) {
27273 - case DLL_PROCESS_ATTACH:
27274 - InitializeCriticalSection(&GC_allocate_ml);
27275 - GC_init(); /* Force initialization before thread attach. */
27276 - /* fall through */
27277 - case DLL_THREAD_ATTACH:
27279 +static void threadAttach() {
27281 /* It appears to be unsafe to acquire a lock here, since this */
27282 /* code is apparently not preeemptible on some systems. */
27283 @@ -554,14 +582,11 @@
27284 /* The following should be a noop according to the win32 */
27285 /* documentation. There is empirical evidence that it */
27287 -# ifdef MPROTECT_VDB
27288 +# if defined(MPROTECT_VDB)
27289 if (GC_incremental) SetUnhandledExceptionFilter(GC_write_fault_handler);
27293 /* cast away volatile qualifier */
27294 - InterlockedExchange((LPLONG) &thread_table[i].in_use, 1) != 0;
27296 + for (i = 0; InterlockedExchange((LONG*)&thread_table[i].in_use,1) != 0; i++) {
27297 /* Compare-and-swap would make this cleaner, but that's not */
27298 /* supported before Windows 98 and NT 4.0. In Windows 2000, */
27299 /* InterlockedExchange is supposed to be replaced by */
27300 @@ -571,11 +596,13 @@
27301 ABORT("too many threads");
27303 thread_table[i].id = GetCurrentThreadId();
27305 + thread_table[i].pthread_id = pthread_self();
27307 if (!DuplicateHandle(GetCurrentProcess(),
27308 GetCurrentThread(),
27309 GetCurrentProcess(),
27310 - /* cast away volatile qualifier */
27311 - (HANDLE *) &thread_table[i].handle,
27312 + (HANDLE*)&thread_table[i].handle,
27315 DUPLICATE_SAME_ACCESS)) {
27316 @@ -584,33 +611,226 @@
27317 ABORT("DuplicateHandle failed");
27319 thread_table[i].stack = GC_get_stack_base();
27320 + if (thread_table[i].stack == NULL)
27321 + ABORT("Failed to find stack base in threadAttach");
27322 /* If this thread is being created while we are trying to stop */
27323 /* the world, wait here. Hopefully this can't happen on any */
27324 /* systems that don't allow us to block here. */
27325 while (GC_please_stop) Sleep(20);
27328 - case DLL_THREAD_DETACH:
27332 +static void threadDetach(DWORD thread_id) {
27334 - DWORD thread_id = GetCurrentThreadId();
27339 - (thread_table[i].stack == 0 || thread_table[i].id != thread_id);
27340 + !thread_table[i].in_use || thread_table[i].id != thread_id;
27342 - if (i >= MAX_THREADS) {
27343 + if (i >= MAX_THREADS ) {
27344 WARN("thread %ld not found on detach", (GC_word)thread_id);
27348 thread_table[i].stack = 0;
27349 thread_table[i].in_use = FALSE;
27350 CloseHandle(thread_table[i].handle);
27351 /* cast away volatile qualifier */
27352 - BZERO((void *) &thread_table[i].context, sizeof(CONTEXT));
27353 + BZERO((void *)&thread_table[i].context, sizeof(CONTEXT));
27360 +/* Called by GC_init() - we hold the allocation lock. */
27361 +void GC_thr_init() {
27362 + if (GC_thr_initialized) return;
27363 + GC_thr_initialized = TRUE;
27366 + /* this might already be handled in GC_init... */
27367 + InitializeCriticalSection(&GC_allocate_ml);
27370 + /* Add the initial thread, so we can stop it. */
27374 +struct start_info {
27375 + void *(*start_routine)(void *);
27379 +int GC_pthread_join(pthread_t pthread_id, void **retval) {
27383 +# if DEBUG_CYGWIN_THREADS
27384 + GC_printf3("thread 0x%x(0x%x) is joining thread 0x%x.\n",(int)pthread_self(),
27385 + GetCurrentThreadId(), (int)pthread_id);
27388 + /* Can't do any table lookups here, because thread being joined
27389 + might not have registered itself yet */
27391 + result = pthread_join(pthread_id, retval);
27394 + for (i = 0; !thread_table[i].in_use || thread_table[i].pthread_id != pthread_id;
27396 + if (i == MAX_THREADS - 1) {
27397 + GC_printf1("Failed to find thread 0x%x in pthread_join()\n", pthread_id);
27398 + ABORT("thread not found on detach");
27402 + threadDetach(thread_table[i].id);
27404 +# if DEBUG_CYGWIN_THREADS
27405 + GC_printf3("thread 0x%x(0x%x) completed join with thread 0x%x.\n",
27406 + (int)pthread_self(), GetCurrentThreadId(), (int)pthread_id);
27412 +/* Cygwin-pthreads calls CreateThread internally, but it's not
27413 + * easily interceptible by us..
27414 + * so intercept pthread_create instead
27417 +GC_pthread_create(pthread_t *new_thread,
27418 + const pthread_attr_t *attr,
27419 + void *(*start_routine)(void *), void *arg) {
27421 + struct start_info * si;
27423 + if (!GC_is_initialized) GC_init();
27424 + /* make sure GC is initialized (i.e. main thread is attached) */
27426 + /* This is otherwise saved only in an area mmapped by the thread */
27427 + /* library, which isn't visible to the collector. */
27428 + si = GC_malloc_uncollectable(sizeof(struct start_info));
27429 + if (0 == si) return(EAGAIN);
27431 + si -> start_routine = start_routine;
27434 +# if DEBUG_CYGWIN_THREADS
27435 + GC_printf2("About to create a thread from 0x%x(0x%x)\n",(int)pthread_self(),
27436 + GetCurrentThreadId);
27438 + result = pthread_create(new_thread, attr, GC_start_routine, si);
27440 + if (result) { /* failure */
27447 +void * GC_start_routine(void * arg)
27449 + struct start_info * si = arg;
27451 + void *(*start)(void *);
27453 + pthread_t pthread_id;
27456 +# if DEBUG_CYGWIN_THREADS
27457 + GC_printf2("thread 0x%x(0x%x) starting...\n",(int)pthread_self(),
27458 + GetCurrentThreadId());
27461 + /* If a GC occurs before the thread is registered, that GC will */
27462 + /* ignore this thread. That's fine, since it will block trying to */
27463 + /* acquire the allocation lock, and won't yet hold interesting */
27466 + /* We register the thread here instead of in the parent, so that */
27467 + /* we don't need to hold the allocation lock during pthread_create. */
27471 + start = si -> start_routine;
27472 + start_arg = si -> arg;
27473 + pthread_id = pthread_self();
27475 + GC_free(si); /* was allocated uncollectable */
27477 + pthread_cleanup_push(GC_thread_exit_proc, pthread_id);
27478 + result = (*start)(start_arg);
27479 + pthread_cleanup_pop(0);
27481 +# if DEBUG_CYGWIN_THREADS
27482 + GC_printf2("thread 0x%x(0x%x) returned from start routine.\n",
27483 + (int)pthread_self(),GetCurrentThreadId());
27487 + for (i = 0; thread_table[i].pthread_id != pthread_id; i++) {
27488 + if (i == MAX_THREADS - 1)
27489 + ABORT("thread not found on exit");
27491 + thread_table[i].status = result;
27497 +void GC_thread_exit_proc(void *arg)
27499 + pthread_t pthread_id = (pthread_t)arg;
27502 +# if DEBUG_CYGWIN_THREADS
27503 + GC_printf2("thread 0x%x(0x%x) called pthread_exit().\n",
27504 + (int)pthread_self(),GetCurrentThreadId());
27508 + for (i = 0; thread_table[i].pthread_id != pthread_id; i++) {
27509 + if (i == MAX_THREADS - 1)
27510 + ABORT("thread not found on exit");
27515 + /* TODO: we need a way to get the exit value after a pthread_exit so we can stash it safely away */
27516 + thread_table[i].status = ???
27520 +/* nothing required here... */
27521 +int GC_pthread_sigmask(int how, const sigset_t *set, sigset_t *oset) {
27522 + return pthread_sigmask(how, set, oset);
27524 +int GC_pthread_detach(pthread_t thread) {
27525 + return pthread_detach(thread);
27527 +#else /* !CYGWIN32 */
27530 + * We avoid acquiring locks here, since this doesn't seem to be preemptable.
27531 + * Pontus Rydin suggests wrapping the thread start routine instead.
27534 +BOOL WINAPI DllMain(HINSTANCE inst, ULONG reason, LPVOID reserved)
27536 + switch (reason) {
27537 + case DLL_PROCESS_ATTACH:
27538 + InitializeCriticalSection(&GC_allocate_ml);
27539 + GC_init(); /* Force initialization before thread attach. */
27540 + /* fall through */
27541 + case DLL_THREAD_ATTACH:
27545 + case DLL_THREAD_DETACH:
27546 + threadDetach(GetCurrentThreadId());
27549 case DLL_PROCESS_DETACH:
27552 @@ -636,8 +856,8 @@
27557 -# endif /* GC_DLL */
27558 +#endif /* GC_DLL */
27559 +#endif /* !CYGWIN32 */
27561 # endif /* !MSWINCE */
27562 --- dyn_load.c Mon Mar 3 22:38:30 2003
27563 +++ dyn_load.c Tue Sep 9 23:24:47 2003
27565 !defined(MSWIN32) && !defined(MSWINCE) && \
27566 !(defined(ALPHA) && defined(OSF1)) && \
27567 !defined(HPUX) && !(defined(LINUX) && defined(__ELF__)) && \
27568 - !defined(RS6000) && !defined(SCO_ELF) && \
27569 + !defined(RS6000) && !defined(SCO_ELF) && !defined(DGUX) && \
27570 !(defined(FREEBSD) && defined(__ELF__)) && \
27571 - !(defined(NETBSD) && defined(__ELF__)) && !defined(HURD)
27572 + !(defined(NETBSD) && defined(__ELF__)) && !defined(HURD) && \
27574 --> We only know how to find data segments of dynamic libraries for the
27575 --> above. Additional SVR4 variants might not be too
27580 #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
27581 - (defined(FREEBSD) && defined(__ELF__)) || \
27582 + (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
27583 (defined(NETBSD) && defined(__ELF__)) || defined(HURD)
27584 # include <stddef.h>
27586 @@ -264,7 +265,7 @@
27587 # endif /* SUNOS */
27589 #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
27590 - (defined(FREEBSD) && defined(__ELF__)) || \
27591 + (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
27592 (defined(NETBSD) && defined(__ELF__)) || defined(HURD)
27595 @@ -282,56 +283,23 @@
27596 /* Repeatedly read until buffer is filled, or EOF is encountered */
27597 /* Defined in os_dep.c. */
27599 -static char *parse_map_entry(char *buf_ptr, word *start, word *end,
27600 +char *GC_parse_map_entry(char *buf_ptr, word *start, word *end,
27601 char *prot_buf, unsigned int *maj_dev);
27602 +word GC_apply_to_maps(word (*fn)(char *));
27603 + /* From os_dep.c */
27605 -void GC_register_dynamic_libraries()
27606 +word GC_register_map_entries(char *maps)
27612 - char maps_temp[32768];
27615 + char *buf_ptr = maps;
27618 - unsigned int maj_dev, min_dev;
27619 + unsigned int maj_dev;
27620 word least_ha, greatest_ha;
27622 word datastart = (word)(DATASTART);
27624 - /* Read /proc/self/maps */
27625 - /* Note that we may not allocate, and thus can't use stdio. */
27626 - f = open("/proc/self/maps", O_RDONLY);
27627 - if (-1 == f) ABORT("Couldn't open /proc/self/maps");
27628 - /* stat() doesn't work for /proc/self/maps, so we have to
27629 - read it to find out how large it is... */
27632 - result = GC_repeat_read(f, maps_temp, sizeof(maps_temp));
27633 - if (result <= 0) ABORT("Couldn't read /proc/self/maps");
27634 - maps_size += result;
27635 - } while (result == sizeof(maps_temp));
27637 - if (maps_size > sizeof(maps_temp)) {
27638 - /* If larger than our buffer, close and re-read it. */
27640 - f = open("/proc/self/maps", O_RDONLY);
27641 - if (-1 == f) ABORT("Couldn't open /proc/self/maps");
27642 - maps_buf = alloca(maps_size);
27643 - if (NULL == maps_buf) ABORT("/proc/self/maps alloca failed");
27644 - result = GC_repeat_read(f, maps_buf, maps_size);
27645 - if (result <= 0) ABORT("Couldn't read /proc/self/maps");
27647 - /* Otherwise use the fixed size buffer */
27648 - maps_buf = maps_temp;
27652 - maps_buf[result] = '\0';
27653 - buf_ptr = maps_buf;
27654 - /* Compute heap bounds. Should be done by add_to_heap? */
27655 + /* Compute heap bounds. FIXME: Should be done by add_to_heap? */
27656 least_ha = (word)(-1);
27658 for (i = 0; i < GC_n_heap_sects; ++i) {
27659 @@ -342,11 +310,10 @@
27661 if (greatest_ha < (word)GC_scratch_last_end_ptr)
27662 greatest_ha = (word)GC_scratch_last_end_ptr;
27665 - buf_ptr = parse_map_entry(buf_ptr, &start, &end, prot_buf, &maj_dev);
27666 - if (buf_ptr == NULL) return;
27669 + buf_ptr = GC_parse_map_entry(buf_ptr, &start, &end, prot_buf, &maj_dev);
27670 + if (buf_ptr == NULL) return 1;
27671 if (prot_buf[1] == 'w') {
27672 /* This is a writable mapping. Add it to */
27673 /* the root set unless it is already otherwise */
27674 @@ -358,16 +325,7 @@
27676 if (GC_segment_is_thread_stack(start, end)) continue;
27678 - /* The rest of this assumes that there is no mapping */
27679 - /* spanning the beginning of the data segment, or extending */
27680 - /* beyond the entire heap at both ends. */
27681 - /* Empirically these assumptions hold. */
27683 - if (start < (word)DATAEND && end > (word)DATAEND) {
27684 - /* Rld may use space at the end of the main data */
27685 - /* segment. Thus we add that in. */
27686 - start = (word)DATAEND;
27688 + /* We no longer exclude the main data segment. */
27689 if (start < least_ha && end > least_ha) {
27692 @@ -378,6 +336,13 @@
27693 GC_add_roots_inner((char *)start, (char *)end, TRUE);
27699 +void GC_register_dynamic_libraries()
27701 + if (!GC_apply_to_maps(GC_register_map_entries))
27702 + ABORT("Failed to read /proc for library registration.");
27705 /* We now take care of the main data segment ourselves: */
27706 @@ -387,60 +352,6 @@
27709 # define HAVE_REGISTER_MAIN_STATIC_DATA
27711 -// parse_map_entry parses an entry from /proc/self/maps so we can
27712 -// locate all writable data segments that belong to shared libraries.
27713 -// The format of one of these entries and the fields we care about
27715 -// XXXXXXXX-XXXXXXXX r-xp 00000000 30:05 260537 name of mapping...\n
27716 -// ^^^^^^^^ ^^^^^^^^ ^^^^ ^^
27717 -// start end prot maj_dev
27720 -// The parser is called with a pointer to the entry and the return value
27721 -// is either NULL or is advanced to the next entry(the byte after the
27722 -// trailing '\n'.)
27724 -#define OFFSET_MAP_START 0
27725 -#define OFFSET_MAP_END 9
27726 -#define OFFSET_MAP_PROT 18
27727 -#define OFFSET_MAP_MAJDEV 32
27729 -static char *parse_map_entry(char *buf_ptr, word *start, word *end,
27730 - char *prot_buf, unsigned int *maj_dev)
27733 - unsigned int val;
27736 - if (buf_ptr == NULL || *buf_ptr == '\0') {
27740 - memcpy(prot_buf, buf_ptr+OFFSET_MAP_PROT, 4); // do the protections first
27741 - prot_buf[4] = '\0';
27743 - if (prot_buf[1] == 'w') { // we can skip all of this if it's not writable
27746 - buf_ptr[OFFSET_MAP_START+8] = '\0';
27747 - *start = strtoul(tok, NULL, 16);
27749 - tok = buf_ptr+OFFSET_MAP_END;
27750 - buf_ptr[OFFSET_MAP_END+8] = '\0';
27751 - *end = strtoul(tok, NULL, 16);
27753 - buf_ptr += OFFSET_MAP_MAJDEV;
27755 - while (*buf_ptr != ':') buf_ptr++;
27756 - *buf_ptr++ = '\0';
27757 - *maj_dev = strtoul(tok, NULL, 16);
27760 - while (*buf_ptr && *buf_ptr++ != '\n');
27765 #endif /* USE_PROC_FOR_LIBRARIES */
27767 @@ -508,6 +419,7 @@
27768 GC_add_roots_inner(DATASTART2, (char *)(DATAEND2), TRUE);
27775 @@ -630,6 +542,7 @@
27776 /* The type is a lie, since the real type doesn't make sense here, */
27777 /* and we only test for NULL. */
27780 /* We use /proc to track down all parts of the address space that are */
27781 /* mapped by the process, and throw out regions we know we shouldn't */
27782 /* worry about. This may also work under other SVR4 variants. */
27783 @@ -1056,7 +969,123 @@
27785 #endif /* RS6000 */
27789 +#define __private_extern__
27790 +#include <mach-o/dyld.h>
27791 +#include <mach-o/getsect.h>
27793 +/*#define DARWIN_DEBUG*/
27795 +const static struct {
27797 + const char *sect;
27798 +} GC_dyld_sections[] = {
27799 + { SEG_DATA, SECT_DATA },
27800 + { SEG_DATA, SECT_BSS },
27801 + { SEG_DATA, SECT_COMMON }
27804 +#ifdef DARWIN_DEBUG
27805 +static const char *GC_dyld_name_for_hdr(struct mach_header *hdr) {
27806 + unsigned long i,c;
27807 + c = _dyld_image_count();
27808 + for(i=0;i<c;i++) if(_dyld_get_image_header(i) == hdr)
27809 + return _dyld_get_image_name(i);
27814 +/* This should never be called by a thread holding the lock */
27815 +static void GC_dyld_image_add(struct mach_header* hdr, unsigned long slide) {
27816 + unsigned long start,end,i;
27817 + const struct section *sec;
27818 + for(i=0;i<sizeof(GC_dyld_sections)/sizeof(GC_dyld_sections[0]);i++) {
27819 + sec = getsectbynamefromheader(
27820 + hdr,GC_dyld_sections[i].seg,GC_dyld_sections[i].sect);
27821 + if(sec == NULL || sec->size == 0) continue;
27822 + start = slide + sec->addr;
27823 + end = start + sec->size;
27824 +# ifdef DARWIN_DEBUG
27825 + GC_printf4("Adding section at %p-%p (%lu bytes) from image %s\n",
27826 + start,end,sec->size,GC_dyld_name_for_hdr(hdr));
27828 + GC_add_roots((char*)start,(char*)end);
27830 +# ifdef DARWIN_DEBUG
27831 + GC_print_static_roots();
27835 +/* This should never be called by a thread holding the lock */
27836 +static void GC_dyld_image_remove(struct mach_header* hdr, unsigned long slide) {
27837 + unsigned long start,end,i;
27838 + const struct section *sec;
27839 + for(i=0;i<sizeof(GC_dyld_sections)/sizeof(GC_dyld_sections[0]);i++) {
27840 + sec = getsectbynamefromheader(
27841 + hdr,GC_dyld_sections[i].seg,GC_dyld_sections[i].sect);
27842 + if(sec == NULL || sec->size == 0) continue;
27843 + start = slide + sec->addr;
27844 + end = start + sec->size;
27845 +# ifdef DARWIN_DEBUG
27846 + GC_printf4("Removing section at %p-%p (%lu bytes) from image %s\n",
27847 + start,end,sec->size,GC_dyld_name_for_hdr(hdr));
27849 + GC_remove_roots((char*)start,(char*)end);
27851 +# ifdef DARWIN_DEBUG
27852 + GC_print_static_roots();
27856 +void GC_register_dynamic_libraries() {
27857 + /* Currently does nothing. The callbacks are setup by GC_init_dyld()
27858 + The dyld library takes it from there. */
27861 +/* The _dyld_* functions have an internal lock so no _dyld functions
27862 + can be called while the world is stopped without the risk of a deadlock.
27863 + Because of this we MUST setup callbacks BEFORE we ever stop the world.
27864 + This should be called BEFORE any thread in created and WITHOUT the
27865 + allocation lock held. */
27867 +void GC_init_dyld() {
27868 + static GC_bool initialized = FALSE;
27870 + if(initialized) return;
27872 +# ifdef DARWIN_DEBUG
27873 + GC_printf0("Forcing full bind of GC code...\n");
27875 + if(!_dyld_bind_fully_image_containing_address((unsigned long*)GC_malloc))
27876 + GC_abort("_dyld_bind_fully_image_containing_addres failed");
27878 +# ifdef DARWIN_DEBUG
27879 + GC_printf0("Registering dyld callbacks...\n");
27882 + /* Apple's Documentation:
27883 + When you call _dyld_register_func_for_add_image, the dynamic linker runtime
27884 + calls the specified callback (func) once for each of the images that is
27885 + currently loaded into the program. When a new image is added to the program,
27886 + your callback is called again with the mach_header for the new image, and the virtual memory slide amount of the new image.
27888 + This WILL properly register existing and all future libraries
27891 + _dyld_register_func_for_add_image(GC_dyld_image_add);
27892 + _dyld_register_func_for_remove_image(GC_dyld_image_remove);
27893 + initialized = TRUE;
27896 +#define HAVE_REGISTER_MAIN_STATIC_DATA
27897 +GC_bool GC_register_main_static_data()
27899 + /* Already done through dyld callbacks */
27903 +#endif /* DARWIN */
27905 #else /* !DYNAMIC_LOADING */