1 diff -urNb boehm-gc/ChangeLog boehm-gc/ChangeLog
2 --- boehm-gc/ChangeLog Tue May 13 17:08:56 2003
3 +++ boehm-gc/ChangeLog Tue Jan 21 22:02:28 2003
5 -2003-05-13 Release Manager
9 -2003-05-13 Release Manager
13 -2003-05-13 Release Manager
17 -2003-05-13 Release Manager
21 -2003-04-28 Mohan Embar <gnustuff@thisiscool.com>
23 - * configure.in: define GC_DLL under mingw if --enable-shared
24 - * configure: rebuilt
25 - * win32_threads.c: add #ifdef GC_DLL around DllMain
27 -2003-04-09 Tom Tromey <tromey@redhat.com>
29 - * include/private/gcconfig.h (LINUX_STACKBOTTOM): Define for
31 - (STACK_GRAN, HEURISTIC1): Don't define for POWERPC.
33 -2003-03-04 Hans Boehm <Hans.Boehm@hp.com>
34 - * include/private/gcconfig.h (GC_data_start): declare when needed.
35 - * include/private/gc_priv.h: Include gcconfig.h after ptr_t
38 -2003-03-03 Hans Boehm <Hans.Boehm@hp.com>
39 - * mark_rts.c (GC_cond_register_dynamic_libraries): add.
40 - (GC_push_roots): explicitly mark free list headers, register
41 - dynamic libraries only if !REGISTER_LIBRARIES_EARLY.
42 - * alloc.c (GC_stopped_mark): Conditionally call
43 - GC_cond_register_dynamic_libraries().
44 - (GC_collect_a_little_inner, GC_try_to_collect_inner): Check GC_dont_gc.
45 - * dyn_load.c (GC_register_main_static_data): define.
46 - (GC_register_dyn_libraries (Linux /proc, Linux ELF versions)):
47 - no longer skip main data. Register main data for static executable.
48 - * misc.c (GC_REGISTER_MAIN_STATIC_DATA): define.
49 - (GC_init_inner): Make main data registration conditional.
50 - * include/private/gc_priv.h (GC_register_main_static_data): declare.
51 - * include/private/gcconfig.h (REGISTER_LIBRARIES_EARLY): define
54 -2003-02-20 Alexandre Oliva <aoliva@redhat.com>
56 - * configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to
58 - * configure: Rebuilt.
60 -2003-02-11 Andreas Tobler <a.tobler@schweiz.ch>
62 - * include/private/gcconfig.h: undefine MPROTECT_VDB for MACOSX
64 -2003-01-27 Alexandre Oliva <aoliva@redhat.com>
66 - * configure.in (toolexecdir, toolexeclibdir): Set and AC_SUBST.
67 - Remove USE_LIBDIR conditional.
68 - * Makefile.am (toolexecdir, toolexeclibdir): Don't override.
69 - * Makefile.in, configure: Rebuilt.
71 2002-12-31 Tom Tromey <tromey@redhat.com>
74 diff -urNb boehm-gc/Makefile.am boehm-gc/Makefile.am
75 --- boehm-gc/Makefile.am Mon Jan 27 17:44:52 2003
76 +++ boehm-gc/Makefile.am Mon May 26 13:08:40 2003
81 +## Install a library built with a cross compiler in tooldir, not
84 +toolexeclibdir = $(libdir)$(MULTISUBDIR)
86 +toolexecdir = $(exec_prefix)/$(target_alias)
87 +toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR)
90 noinst_LTLIBRARIES = libgcjgc.la libgcjgc_convenience.la
92 GC_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
93 dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c irix_threads.c \
94 -linux_threads.c malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
95 +malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
96 obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \
97 solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c \
98 -backgraph.c win32_threads.c
99 +backgraph.c win32_threads.c \
100 +pthread_support.c pthread_stop_world.c darwin_stop_world.c
102 -EXTRA_GC_SOURCES = alpha_mach_dep.s \
103 -mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \
104 -rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
105 -sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
106 +EXTRA_GC_SOURCES = alpha_mach_dep.S \
107 + mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_darwin_mach_dep.s \
108 + rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
109 + sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
112 +asm_libgc_sources = powerpc_darwin_mach_dep.s
117 -libgcjgc_la_SOURCES = $(GC_SOURCES)
118 -libgcjgc_convenience_la_SOURCES = $(GC_SOURCES)
119 +libgcjgc_la_SOURCES = $(GC_SOURCES) $(asm_libgc_sources)
120 +libgcjgc_convenience_la_SOURCES = $(GC_SOURCES) $(asm_libgc_sources)
121 EXTRA_libgcjgc_la_SOURCES = $(EXTRA_GC_SOURCES)
122 EXTRA_libgcjgc_convenience_la_SOURCES = $(EXTRA_GC_SOURCES)
125 $(AM_CPPFLAGS) $(CPPFLAGS) \
126 $(AM_CFLAGS) $(MY_CFLAGS) $(GC_CFLAGS)
127 LINK = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(MY_CFLAGS) $(LDFLAGS) -o $@
129 -AM_CFLAGS = @GC_CFLAGS@
131 # Work around what appears to be a GNU make bug handling MAKEFLAGS
132 # values defined in terms of make variables, as is the case for CC and
133 diff -urNb boehm-gc/Makefile.am~ boehm-gc/Makefile.am~
134 --- boehm-gc/Makefile.am~ Wed Dec 31 16:00:00 1969
135 +++ boehm-gc/Makefile.am~ Thu Oct 24 16:42:27 2002
137 +## Process this file with automake to produce Makefile.in.
139 +## FIXME: `make dist' in this directory will not currently work. Many
140 +## files that should be in the distribution are not mentioned in this
143 +AUTOMAKE_OPTIONS = cygnus
147 +# Multilib support variables.
155 +## Install a library built with a cross compiler in tooldir, not
158 +toolexeclibdir = $(libdir)$(MULTISUBDIR)
160 +toolexecdir = $(exec_prefix)/$(target_alias)
161 +toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR)
164 +noinst_LTLIBRARIES = libgcjgc.la libgcjgc_convenience.la
166 +GC_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
167 +dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c irix_threads.c \
168 +linux_threads.c malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
169 +obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \
170 +solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c \
171 +backgraph.c win32_threads.c
173 +EXTRA_GC_SOURCES = alpha_mach_dep.s \
174 +mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \
175 +rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
176 +sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
178 +libgcjgc_la_SOURCES = $(GC_SOURCES)
179 +libgcjgc_convenience_la_SOURCES = $(GC_SOURCES)
180 +EXTRA_libgcjgc_la_SOURCES = $(EXTRA_GC_SOURCES)
181 +EXTRA_libgcjgc_convenience_la_SOURCES = $(EXTRA_GC_SOURCES)
183 +# Include THREADLIBS here to ensure that the correct versions of
184 +# linuxthread semaphore functions get linked:
185 +libgcjgc_la_LIBADD = @addobjs@ $(THREADLIBS)
186 +libgcjgc_la_DEPENDENCIES = @addobjs@
187 +libgcjgc_la_LDFLAGS = -version-info 1:1:0 -rpath $(toolexeclibdir)
189 +libgcjgc_convenience_la_LIBADD = @addobjs@
190 +libgcjgc_convenience_la_DEPENDENCIES = @addobjs@
192 +AM_CXXFLAGS = @GC_CFLAGS@
193 +AM_CFLAGS = @GC_CFLAGS@
195 +check_PROGRAMS = gctest
196 +# The following hack produces a warning from automake, but we need it in order
197 +# to build a file from a subdirectory. FIXME.
198 +test.o: tests/test.c
199 + $(COMPILE) -c $(srcdir)/tests/test.c
200 +# Using $< in the above seems to fail with the HP/UX on Itanium make.
202 +gctest_OBJECTS = test.o
203 +gctest_LDADD = ./libgcjgc.la $(THREADLIBS) $(EXTRA_TEST_LIBS)
204 +gctest_LDFLAGS = -shared-libgcc
205 +TESTS_ENVIRONMENT = LD_LIBRARY_PATH=../../$(MULTIBUILDTOP)gcc
208 +## FIXME: relies on internal code generated by automake.
209 +all_objs = @addobjs@ $(libgcjgc_la_OBJECTS)
210 +$(all_objs) : include/private/gcconfig.h include/private/gc_priv.h \
211 +include/private/gc_hdrs.h include/gc.h include/gc_gcj.h include/gc_mark.h
213 +## FIXME: we shouldn't have to do this, but automake forces us to.
215 +## We use -Wp,-P to strip #line directives. Irix `as' chokes on
217 + $(LTCOMPILE) -Wp,-P -x assembler-with-cpp -c $<
219 +## We have our own definition of LTCOMPILE because we want to use our
220 +## CFLAGS, not those passed in from the top level make.
221 +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) \
222 + $(AM_CPPFLAGS) $(CPPFLAGS) \
223 + $(AM_CFLAGS) $(MY_CFLAGS) $(GC_CFLAGS)
224 +LINK = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(MY_CFLAGS) $(LDFLAGS) -o $@
226 +AM_CFLAGS = @GC_CFLAGS@
228 +# Work around what appears to be a GNU make bug handling MAKEFLAGS
229 +# values defined in terms of make variables, as is the case for CC and
230 +# friends when we are called from the top level Makefile.
232 + "AR_FLAGS=$(AR_FLAGS)" \
233 + "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
234 + "CFLAGS=$(CFLAGS)" \
235 + "CXXFLAGS=$(CXXFLAGS)" \
236 + "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
237 + "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
238 + "INSTALL=$(INSTALL)" \
239 + "INSTALL_DATA=$(INSTALL_DATA)" \
240 + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
241 + "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
242 + "LDFLAGS=$(LDFLAGS)" \
243 + "LIBCFLAGS=$(LIBCFLAGS)" \
244 + "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
246 + "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
247 + "PICFLAG=$(PICFLAG)" \
248 + "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
250 + "EXPECT=$(EXPECT)" \
251 + "RUNTEST=$(RUNTEST)" \
252 + "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
253 + "exec_prefix=$(exec_prefix)" \
254 + "infodir=$(infodir)" \
255 + "libdir=$(libdir)" \
256 + "prefix=$(prefix)" \
257 + "tooldir=$(tooldir)" \
263 + "LIBCFLAGS=$(LIBCFLAGS)" \
265 + "PICFLAG=$(PICFLAG)" \
266 + "RANLIB=$(RANLIB)" \
267 + "DESTDIR=$(DESTDIR)"
269 +CONFIG_STATUS_DEPENDENCIES = $(srcdir)/configure.host
272 +.PHONY: all-multi mostlyclean-multi clean-multi distclean-multi \
273 + maintainer-clean-multi
276 +install-am: install-multi
277 +mostlyclean-am: mostlyclean-multi
278 +clean-am: clean-multi
279 +distclean-am: distclean-multi
280 +maintainer-clean-am: maintainer-clean-multi
283 + : $(MAKE) ; exec $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do
285 + $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do
287 + $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean
289 + $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean
291 + $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean
292 +maintainer-clean-multi:
293 + $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean
296 diff -urNb boehm-gc/Makefile.in boehm-gc/Makefile.in
297 --- boehm-gc/Makefile.in Tue May 13 17:18:14 2003
298 +++ boehm-gc/Makefile.in Mon May 26 13:08:48 2003
300 -# Makefile.in generated automatically by automake 1.4 from Makefile.am
301 +# Makefile.in generated by automake 1.6.3 from Makefile.am.
304 -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
305 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
306 +# Free Software Foundation, Inc.
307 # This Makefile.in is free software; the Free Software Foundation
308 # gives unlimited permission to copy and/or distribute it,
309 # with or without modifications, as long as this notice is preserved.
311 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
312 # PARTICULAR PURPOSE.
321 includedir = @includedir@
322 oldincludedir = /usr/include
326 pkgdatadir = $(datadir)/@PACKAGE@
327 pkglibdir = $(libdir)/@PACKAGE@
328 pkgincludedir = $(includedir)/@PACKAGE@
334 AUTOMAKE = @AUTOMAKE@
335 AUTOHEADER = @AUTOHEADER@
337 +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
339 -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
340 +INSTALL_PROGRAM = @INSTALL_PROGRAM@
341 INSTALL_DATA = @INSTALL_DATA@
342 +install_sh_DATA = $(install_sh) -c -m 644
343 +install_sh_PROGRAM = $(install_sh) -c
344 +install_sh_SCRIPT = $(install_sh) -c
345 INSTALL_SCRIPT = @INSTALL_SCRIPT@
346 +INSTALL_HEADER = $(INSTALL_DATA)
347 transform = @program_transform_name@
353 host_triplet = @host@
354 target_alias = @target_alias@
355 target_triplet = @target@
359 +PATH_SEPARATOR = @PATH_SEPARATOR@
368 CXXINCLUDES = @CXXINCLUDES@
374 EXTRA_TEST_LIBS = @EXTRA_TEST_LIBS@
377 GCJFLAGS = @GCJFLAGS@
378 GC_CFLAGS = @GC_CFLAGS@
379 INCLUDES = @INCLUDES@
380 +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
384 -MAKEINFO = @MAKEINFO@
385 MY_CFLAGS = @MY_CFLAGS@
392 THREADLIBS = @THREADLIBS@
395 +am__include = @am__include@
396 +am__quote = @am__quote@
397 gc_basedir = @gc_basedir@
398 +install_sh = @install_sh@
399 mkinstalldirs = @mkinstalldirs@
400 target_all = @target_all@
401 -toolexecdir = @toolexecdir@
402 -toolexeclibdir = @toolexeclibdir@
404 AUTOMAKE_OPTIONS = cygnus
406 @@ -108,24 +120,32 @@
410 +@USE_LIBDIR_TRUE@toolexeclibdir = $(libdir)$(MULTISUBDIR)
411 +@USE_LIBDIR_FALSE@toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR)
412 +@USE_LIBDIR_FALSE@toolexecdir = $(exec_prefix)/$(target_alias)
414 noinst_LTLIBRARIES = libgcjgc.la libgcjgc_convenience.la
416 GC_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
417 dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c irix_threads.c \
418 -linux_threads.c malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
419 +malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
420 obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \
421 solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c \
422 -backgraph.c win32_threads.c
423 +backgraph.c win32_threads.c \
424 +pthread_support.c pthread_stop_world.c darwin_stop_world.c
427 +EXTRA_GC_SOURCES = alpha_mach_dep.S \
428 + mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_darwin_mach_dep.s \
429 + rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
430 + sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
432 -EXTRA_GC_SOURCES = alpha_mach_dep.s \
433 -mips_sgi_mach_dep.S mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \
434 -rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
435 -sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
437 +@POWERPC_DARWIN_TRUE@asm_libgc_sources = powerpc_darwin_mach_dep.s
438 +@POWERPC_DARWIN_FALSE@asm_libgc_sources =
440 -libgcjgc_la_SOURCES = $(GC_SOURCES)
441 -libgcjgc_convenience_la_SOURCES = $(GC_SOURCES)
442 +libgcjgc_la_SOURCES = $(GC_SOURCES) $(asm_libgc_sources)
443 +libgcjgc_convenience_la_SOURCES = $(GC_SOURCES) $(asm_libgc_sources)
444 EXTRA_libgcjgc_la_SOURCES = $(EXTRA_GC_SOURCES)
445 EXTRA_libgcjgc_convenience_la_SOURCES = $(EXTRA_GC_SOURCES)
447 @@ -139,12 +159,11 @@
448 libgcjgc_convenience_la_DEPENDENCIES = @addobjs@
450 AM_CXXFLAGS = @GC_CFLAGS@
452 AM_CFLAGS = @GC_CFLAGS@
454 check_PROGRAMS = gctest
455 -# Using $< in the above seems to fail with the HP/UX on Itanium make.
457 +# Using $< in the above seems to fail with the HP/UX on Itanium make.
458 gctest_OBJECTS = test.o
459 gctest_LDADD = ./libgcjgc.la $(THREADLIBS) $(EXTRA_TEST_LIBS)
460 gctest_LDFLAGS = -shared-libgcc
461 @@ -204,104 +223,127 @@
462 CONFIG_STATUS_DEPENDENCIES = $(srcdir)/configure.host
466 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
468 LTLIBRARIES = $(noinst_LTLIBRARIES)
470 +am__objects_1 = allchblk.lo alloc.lo blacklst.lo checksums.lo dbg_mlc.lo \
471 + dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo headers.lo \
472 + irix_threads.lo malloc.lo mallocx.lo mark.lo mark_rts.lo \
473 + misc.lo new_hblk.lo obj_map.lo os_dep.lo pcr_interface.lo \
474 + ptr_chck.lo real_malloc.lo reclaim.lo solaris_pthreads.lo \
475 + solaris_threads.lo specific.lo stubborn.lo typd_mlc.lo \
476 + backgraph.lo win32_threads.lo pthread_support.lo \
477 + pthread_stop_world.lo darwin_stop_world.lo
478 +@POWERPC_DARWIN_TRUE@am__objects_2 = powerpc_darwin_mach_dep.lo
479 +@POWERPC_DARWIN_FALSE@am__objects_2 =
480 +am_libgcjgc_la_OBJECTS = $(am__objects_1) $(am__objects_2)
481 +libgcjgc_la_OBJECTS = $(am_libgcjgc_la_OBJECTS)
482 +libgcjgc_convenience_la_LDFLAGS =
483 +am_libgcjgc_convenience_la_OBJECTS = $(am__objects_1) $(am__objects_2)
484 +libgcjgc_convenience_la_OBJECTS = $(am_libgcjgc_convenience_la_OBJECTS)
485 +check_PROGRAMS = gctest$(EXEEXT)
486 +gctest_DEPENDENCIES = ./libgcjgc.la
488 -DEFS = @DEFS@ -I. -I$(srcdir)
490 +DEFAULT_INCLUDES = -I. -I$(srcdir)
491 CPPFLAGS = @CPPFLAGS@
494 -libgcjgc_la_OBJECTS = allchblk.lo alloc.lo blacklst.lo checksums.lo \
495 -dbg_mlc.lo dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo headers.lo \
496 -irix_threads.lo linux_threads.lo malloc.lo mallocx.lo mark.lo \
497 -mark_rts.lo misc.lo new_hblk.lo obj_map.lo os_dep.lo pcr_interface.lo \
498 -ptr_chck.lo real_malloc.lo reclaim.lo solaris_pthreads.lo \
499 -solaris_threads.lo specific.lo stubborn.lo typd_mlc.lo backgraph.lo \
501 -libgcjgc_convenience_la_LDFLAGS =
502 -libgcjgc_convenience_la_OBJECTS = allchblk.lo alloc.lo blacklst.lo \
503 -checksums.lo dbg_mlc.lo dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo \
504 -headers.lo irix_threads.lo linux_threads.lo malloc.lo mallocx.lo \
505 -mark.lo mark_rts.lo misc.lo new_hblk.lo obj_map.lo os_dep.lo \
506 -pcr_interface.lo ptr_chck.lo real_malloc.lo reclaim.lo \
507 -solaris_pthreads.lo solaris_threads.lo specific.lo stubborn.lo \
508 -typd_mlc.lo backgraph.lo win32_threads.lo
509 -check_PROGRAMS = gctest$(EXEEXT)
510 -gctest_DEPENDENCIES = ./libgcjgc.la
512 -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
514 +am__depfiles_maybe =
515 +CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS)
516 +LTCCASCOMPILE = $(LIBTOOL) --mode=compile $(CCAS) $(AM_CCASFLAGS) \
518 +CCASFLAGS = @CCASFLAGS@
519 +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
520 + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
522 -DIST_COMMON = ChangeLog Makefile.am Makefile.in acinclude.m4 aclocal.m4 \
523 -config.guess config.sub configure configure.in install-sh ltconfig \
524 -ltmain.sh mkinstalldirs
527 -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
532 +DIST_SOURCES = $(libgcjgc_la_SOURCES) $(EXTRA_libgcjgc_la_SOURCES) \
533 + $(libgcjgc_convenience_la_SOURCES) \
534 + $(EXTRA_libgcjgc_convenience_la_SOURCES)
536 +RECURSIVE_TARGETS = info-recursive dvi-recursive \
537 + uninstall-info-recursive all-recursive install-data-recursive \
538 + install-exec-recursive installdirs-recursive install-recursive \
539 + uninstall-recursive check-recursive installcheck-recursive
540 SOURCES = $(libgcjgc_la_SOURCES) $(EXTRA_libgcjgc_la_SOURCES) $(libgcjgc_convenience_la_SOURCES) $(EXTRA_libgcjgc_convenience_la_SOURCES)
541 -OBJECTS = $(libgcjgc_la_OBJECTS) $(libgcjgc_convenience_la_OBJECTS)
547 .SUFFIXES: .S .c .lo .o .obj .s
548 -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
549 - cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile
551 -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
552 - cd $(top_builddir) \
553 - && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
555 -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
556 - cd $(srcdir) && $(ACLOCAL)
557 +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
559 +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
560 + cd $(top_srcdir) && \
561 + $(AUTOMAKE) --cygnus Makefile
562 +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
563 + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
565 -config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
566 +$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
567 $(SHELL) ./config.status --recheck
568 -$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
569 +$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
570 cd $(srcdir) && $(AUTOCONF)
572 -mostlyclean-noinstLTLIBRARIES:
573 +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
574 + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
576 clean-noinstLTLIBRARIES:
577 -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
578 + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
579 + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
580 + test -z "$dir" && dir=.; \
581 + echo "rm -f \"$${dir}/so_locations\""; \
582 + rm -f "$${dir}/so_locations"; \
584 +libgcjgc.la: $(libgcjgc_la_OBJECTS) $(libgcjgc_la_DEPENDENCIES)
585 + $(LINK) $(libgcjgc_la_LDFLAGS) $(libgcjgc_la_OBJECTS) $(libgcjgc_la_LIBADD) $(LIBS)
586 +libgcjgc_convenience.la: $(libgcjgc_convenience_la_OBJECTS) $(libgcjgc_convenience_la_DEPENDENCIES)
587 + $(LINK) $(libgcjgc_convenience_la_LDFLAGS) $(libgcjgc_convenience_la_OBJECTS) $(libgcjgc_convenience_la_LIBADD) $(LIBS)
589 -distclean-noinstLTLIBRARIES:
591 -maintainer-clean-noinstLTLIBRARIES:
595 +clean-checkPROGRAMS:
596 + @list='$(check_PROGRAMS)'; for p in $$list; do \
597 + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
598 + echo " rm -f $$p $$f"; \
601 +gctest$(EXEEXT): $(gctest_OBJECTS) $(gctest_DEPENDENCIES)
602 + @rm -f gctest$(EXEEXT)
603 + $(LINK) $(gctest_LDFLAGS) $(gctest_OBJECTS) $(gctest_LDADD) $(LIBS)
605 -# FIXME: We should only use cygpath when building on Windows,
606 -# and only if it is available.
608 - $(COMPILE) -c `cygpath -w $<`
609 +mostlyclean-compile:
610 + -rm -f *.$(OBJEXT) core *.core
619 + $(CCASCOMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
621 -mostlyclean-compile:
622 - -rm -f *.o core *.core
625 + $(CCASCOMPILE) -c `cygpath -w $<`
629 + $(LTCCASCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
634 + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
636 -maintainer-clean-compile:
638 + $(COMPILE) -c `cygpath -w $<`
641 - $(LIBTOOL) --mode=compile $(COMPILE) -c $<
642 + $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
645 - $(LIBTOOL) --mode=compile $(COMPILE) -c $<
647 + $(CCASCOMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
650 + $(CCASCOMPILE) -c `cygpath -w $<`
659 -maintainer-clean-libtool:
661 -libgcjgc.la: $(libgcjgc_la_OBJECTS) $(libgcjgc_la_DEPENDENCIES)
662 - $(LINK) $(libgcjgc_la_LDFLAGS) $(libgcjgc_la_OBJECTS) $(libgcjgc_la_LIBADD) $(LIBS)
664 -libgcjgc_convenience.la: $(libgcjgc_convenience_la_OBJECTS) $(libgcjgc_convenience_la_DEPENDENCIES)
665 - $(LINK) $(libgcjgc_convenience_la_LDFLAGS) $(libgcjgc_convenience_la_OBJECTS) $(libgcjgc_convenience_la_LIBADD) $(LIBS)
667 -mostlyclean-checkPROGRAMS:
669 -clean-checkPROGRAMS:
670 - -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
672 -distclean-checkPROGRAMS:
674 -maintainer-clean-checkPROGRAMS:
676 -gctest$(EXEEXT): $(gctest_OBJECTS) $(gctest_DEPENDENCIES)
677 - @rm -f gctest$(EXEEXT)
678 - $(LINK) $(gctest_LDFLAGS) $(gctest_OBJECTS) $(gctest_LDADD) $(LIBS)
682 # This directory's subdirectories are mostly independent; you can cd
683 # into them and run `make' without going through this Makefile.
685 # (1) if the variable is set in `config.status', edit `config.status'
686 # (which will cause the Makefiles to be regenerated when you run `make');
687 # (2) otherwise, pass the desired values on the `make' command line.
691 -all-recursive install-data-recursive install-exec-recursive \
692 -installdirs-recursive install-recursive uninstall-recursive install-info-recursive \
693 -check-recursive installcheck-recursive info-recursive dvi-recursive:
694 - @set fnord $(MAKEFLAGS); amf=$$2; \
695 +$(RECURSIVE_TARGETS):
696 + @set fnord $$MAKEFLAGS; amf=$$2; \
698 target=`echo $@ | sed s/-recursive//`; \
699 list='$(SUBDIRS)'; for subdir in $$list; do \
700 @@ -364,13 +382,18 @@
702 mostlyclean-recursive clean-recursive distclean-recursive \
703 maintainer-clean-recursive:
704 - @set fnord $(MAKEFLAGS); amf=$$2; \
705 + @set fnord $$MAKEFLAGS; amf=$$2; \
707 - rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
709 + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
710 + *) list='$(SUBDIRS)' ;; \
712 + rev=''; for subdir in $$list; do \
713 + if test "$$subdir" = "."; then :; else \
714 rev="$$subdir $$rev"; \
715 - test "$$subdir" = "." && dot_seen=yes; \
718 - test "$$dot_seen" = "no" && rev=". $$rev"; \
720 target=`echo $@ | sed s/-recursive//`; \
721 for subdir in $$rev; do \
722 echo "Making $$target in $$subdir"; \
723 @@ -387,17 +410,22 @@
724 test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
732 -ID: $(HEADERS) $(SOURCES) $(LISP)
733 - list='$(SOURCES) $(HEADERS)'; \
734 - unique=`for i in $$list; do echo $$i; done | \
735 - awk ' { files[$$0] = 1; } \
736 +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
737 + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
738 + unique=`for i in $$list; do \
739 + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
741 + $(AWK) ' { files[$$0] = 1; } \
742 END { for (i in files) print i; }'`; \
743 - here=`pwd` && cd $(srcdir) \
744 - && mkid -f$$here/ID $$unique $(LISP)
747 -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
748 +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
749 + $(TAGS_FILES) $(LISP)
752 list='$(SUBDIRS)'; for subdir in $$list; do \
753 @@ -405,193 +433,163 @@
754 test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
757 - list='$(SOURCES) $(HEADERS)'; \
758 - unique=`for i in $$list; do echo $$i; done | \
759 - awk ' { files[$$0] = 1; } \
760 + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
761 + unique=`for i in $$list; do \
762 + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
764 + $(AWK) ' { files[$$0] = 1; } \
765 END { for (i in files) print i; }'`; \
766 - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
767 - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
772 + test -z "$(ETAGS_ARGS)$$tags$$unique" \
773 + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
777 + here=`$(am__cd) $(top_builddir) && pwd` \
778 + && cd $(top_srcdir) \
779 + && gtags -i $(GTAGS_ARGS) $$here
783 + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
785 -maintainer-clean-tags:
787 -distdir = $(PACKAGE)-$(VERSION)
788 -top_distdir = $(distdir)
790 -# This target untars the dist file and tries a VPATH configuration. Then
791 -# it guarantees that the distribution is self-contained by making another
795 - GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
796 - mkdir $(distdir)/=build
797 - mkdir $(distdir)/=inst
798 - dc_install_base=`cd $(distdir)/=inst && pwd`; \
799 - cd $(distdir)/=build \
800 - && ../configure --srcdir=.. --prefix=$$dc_install_base \
801 - && $(MAKE) $(AM_MAKEFLAGS) \
802 - && $(MAKE) $(AM_MAKEFLAGS) dvi \
803 - && $(MAKE) $(AM_MAKEFLAGS) check \
804 - && $(MAKE) $(AM_MAKEFLAGS) install \
805 - && $(MAKE) $(AM_MAKEFLAGS) installcheck \
806 - && $(MAKE) $(AM_MAKEFLAGS) dist
808 - @banner="$(distdir).tar.gz is ready for distribution"; \
809 - dashes=`echo "$$banner" | sed s/./=/g`; \
814 - -chmod -R a+r $(distdir)
815 - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
818 - -chmod -R a+r $(distdir)
819 - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
821 -distdir: $(DISTFILES)
824 - -chmod 777 $(distdir)
825 - @for file in $(DISTFILES); do \
826 - if test -f $$file; then d=.; else d=$(srcdir); fi; \
827 - if test -d $$d/$$file; then \
828 - cp -pr $$d/$$file $(distdir)/$$file; \
830 - test -f $(distdir)/$$file \
831 - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
832 - || cp -p $$d/$$file $(distdir)/$$file || :; \
835 - for subdir in $(SUBDIRS); do \
836 - if test "$$subdir" = .; then :; else \
837 - test -d $(distdir)/$$subdir \
838 - || mkdir $(distdir)/$$subdir \
840 - chmod 777 $(distdir)/$$subdir; \
841 - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
845 check-TESTS: $(TESTS)
846 - @failed=0; all=0; \
847 + @failed=0; all=0; xfail=0; xpass=0; \
848 srcdir=$(srcdir); export srcdir; \
849 - for tst in $(TESTS); do \
850 - if test -f $$tst; then dir=.; \
851 - else dir="$(srcdir)"; fi; \
852 - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \
854 + if test -n "$$list"; then \
855 + for tst in $$list; do \
856 + if test -f ./$$tst; then dir=./; \
857 + elif test -f $$tst; then dir=; \
858 + else dir="$(srcdir)/"; fi; \
859 + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
860 all=`expr $$all + 1`; \
861 + case " $(XFAIL_TESTS) " in \
863 + xpass=`expr $$xpass + 1`; \
864 + failed=`expr $$failed + 1`; \
865 + echo "XPASS: $$tst"; \
868 echo "PASS: $$tst"; \
871 elif test $$? -ne 77; then \
872 all=`expr $$all + 1`; \
873 + case " $(XFAIL_TESTS) " in \
875 + xfail=`expr $$xfail + 1`; \
876 + echo "XFAIL: $$tst"; \
879 failed=`expr $$failed + 1`; \
880 echo "FAIL: $$tst"; \
885 if test "$$failed" -eq 0; then \
886 + if test "$$xfail" -eq 0; then \
887 banner="All $$all tests passed"; \
889 + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
892 + if test "$$xpass" -eq 0; then \
893 banner="$$failed of $$all tests failed"; \
895 + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
898 dashes=`echo "$$banner" | sed s/./=/g`; \
902 - test "$$failed" -eq 0
904 -info: info-recursive
907 + test "$$failed" -eq 0; \
909 check-am: $(check_PROGRAMS)
910 $(MAKE) $(AM_MAKEFLAGS) check-TESTS
911 check: check-recursive
913 -installcheck: installcheck-recursive
915 -install-info: install-info-recursive
917 -install-exec: install-exec-recursive
920 -install-data: install-data-recursive
923 - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
924 -install: install-recursive
926 -uninstall: uninstall-recursive
927 all-am: Makefile $(LTLIBRARIES)
928 -all-redirect: all-recursive
930 - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
931 installdirs: installdirs-recursive
934 +install: install-recursive
935 +install-exec: install-exec-recursive
936 +install-data: install-data-recursive
937 +uninstall: uninstall-recursive
939 +installcheck: installcheck-recursive
941 + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
942 + INSTALL_STRIP_FLAG=-s \
943 + `test -z '$(STRIP)' || \
944 + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
950 -rm -f Makefile $(CONFIG_CLEAN_FILES)
951 - -rm -f config.cache config.log stamp-h stamp-h[0-9]*
953 maintainer-clean-generic:
954 -mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \
955 - mostlyclean-libtool mostlyclean-checkPROGRAMS \
956 - mostlyclean-tags mostlyclean-generic
957 + @echo "This command is intended for maintainers to use"
958 + @echo "it deletes files that may require special tools to rebuild."
959 +clean: clean-recursive
961 -mostlyclean: mostlyclean-recursive
962 +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
963 + clean-noinstLTLIBRARIES mostlyclean-am
965 -clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \
966 - clean-checkPROGRAMS clean-tags clean-generic \
968 +distclean: distclean-recursive
969 + -rm -f $(am__CONFIG_DISTCLEAN_FILES)
970 +distclean-am: clean-am distclean-compile distclean-generic \
971 + distclean-libtool distclean-tags
973 -clean: clean-recursive
976 -distclean-am: distclean-noinstLTLIBRARIES distclean-compile \
977 - distclean-libtool distclean-checkPROGRAMS \
978 - distclean-tags distclean-generic clean-am
982 -distclean: distclean-recursive
983 - -rm -f config.status
984 +info: info-recursive
986 -maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \
987 - maintainer-clean-compile maintainer-clean-libtool \
988 - maintainer-clean-checkPROGRAMS maintainer-clean-tags \
989 - maintainer-clean-generic distclean-am
990 - @echo "This command is intended for maintainers to use;"
991 - @echo "it deletes files that may require special tools to rebuild."
1004 maintainer-clean: maintainer-clean-recursive
1005 - -rm -f config.status
1006 + -rm -f $(am__CONFIG_DISTCLEAN_FILES)
1007 + -rm -rf autom4te.cache
1008 +maintainer-clean-am: distclean-am maintainer-clean-generic
1010 -.PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \
1011 -clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \
1012 -mostlyclean-compile distclean-compile clean-compile \
1013 -maintainer-clean-compile mostlyclean-libtool distclean-libtool \
1014 -clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \
1015 -distclean-checkPROGRAMS clean-checkPROGRAMS \
1016 -maintainer-clean-checkPROGRAMS install-data-recursive \
1017 -uninstall-data-recursive install-exec-recursive \
1018 -uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
1019 -all-recursive check-recursive installcheck-recursive info-recursive \
1020 -dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \
1021 -maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
1022 -distclean-tags clean-tags maintainer-clean-tags distdir check-TESTS \
1023 -info-am info dvi-am dvi check check-am installcheck-am installcheck \
1024 -install-info-am install-info install-exec-am install-exec \
1025 -install-data-am install-data install-am install uninstall-am uninstall \
1026 -all-redirect all-am all installdirs-am installdirs mostlyclean-generic \
1027 -distclean-generic clean-generic maintainer-clean-generic clean \
1028 -mostlyclean distclean maintainer-clean
1029 +mostlyclean: mostlyclean-recursive
1031 +mostlyclean-am: mostlyclean-compile mostlyclean-generic \
1032 + mostlyclean-libtool
1036 +uninstall-info: uninstall-info-recursive
1038 +.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-TESTS check-am \
1039 + clean clean-checkPROGRAMS clean-generic clean-libtool \
1040 + clean-noinstLTLIBRARIES clean-recursive distclean \
1041 + distclean-compile distclean-generic distclean-libtool \
1042 + distclean-recursive distclean-tags dvi dvi-am dvi-recursive \
1043 + info info-am info-recursive install install-am install-data \
1044 + install-data-am install-data-recursive install-exec \
1045 + install-exec-am install-exec-recursive install-info \
1046 + install-info-am install-man install-recursive install-strip \
1047 + installcheck installcheck-am installdirs installdirs-am \
1048 + installdirs-recursive maintainer-clean maintainer-clean-generic \
1049 + maintainer-clean-recursive mostlyclean mostlyclean-compile \
1050 + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
1051 + tags tags-recursive uninstall uninstall-am uninstall-info-am \
1052 + uninstall-info-recursive uninstall-recursive
1054 # The following hack produces a warning from automake, but we need it in order
1055 # to build a file from a subdirectory. FIXME.
1057 $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean
1058 maintainer-clean-multi:
1059 $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean
1061 # Tell versions [3.59,3.63) of GNU make to not export all variables.
1062 # Otherwise a system limit (for SysV at least) may be exceeded.
1064 diff -urNb boehm-gc/allchblk.c boehm-gc/allchblk.c
1065 --- boehm-gc/allchblk.c Mon Apr 8 17:39:15 2002
1066 +++ boehm-gc/allchblk.c Mon May 26 12:48:52 2003
1068 struct hblk * GC_hblkfreelist[N_HBLK_FLS+1] = { 0 };
1072 word GC_free_bytes[N_HBLK_FLS+1] = { 0 };
1073 /* Number of free bytes on each list. */
1075 /* Is bytes + the number of free bytes on lists n .. N_HBLK_FLS */
1076 /* > GC_max_large_allocd_bytes? */
1077 - GC_bool GC_enough_large_bytes_left(bytes,n)
1081 + static GC_bool GC_enough_large_bytes_left(bytes,n)
1085 @@ -583,11 +587,11 @@
1086 if (!GC_use_entire_heap
1087 && size_avail != size_needed
1088 && USED_HEAP_SIZE >= GC_requested_heapsize
1089 - && !GC_incremental && GC_should_collect()) {
1090 + && !TRUE_INCREMENTAL && GC_should_collect()) {
1094 - /* If we enough large blocks left to cover any */
1095 + /* If we have enough large blocks left to cover any */
1096 /* previous request for large blocks, we go ahead */
1097 /* and split. Assuming a steady state, that should */
1098 /* be safe. It means that we can use the full */
1099 @@ -595,6 +599,12 @@
1100 if (!GC_enough_large_bytes_left(GC_large_allocd_bytes, n)) {
1103 + /* If we are deallocating lots of memory from */
1104 + /* finalizers, fail and collect sooner rather */
1106 + if (GC_finalizer_mem_freed > (GC_heapsize >> 4)) {
1109 # endif /* !USE_MUNMAP */
1111 /* If the next heap block is obviously better, go on. */
1112 diff -urNb boehm-gc/alloc.c boehm-gc/alloc.c
1113 --- boehm-gc/alloc.c Mon Mar 3 22:38:30 2003
1114 +++ boehm-gc/alloc.c Mon May 26 12:48:52 2003
1116 GC_bool GC_need_full_gc = FALSE;
1117 /* Need full GC do to heap growth. */
1120 + GC_bool GC_world_stopped = FALSE;
1121 +# define IF_THREADS(x) x
1123 +# define IF_THREADS(x)
1126 word GC_used_heap_size_after_full = 0;
1128 char * GC_copyright[] =
1130 unsigned long time_diff;
1132 if ((count++ & 3) != 0) return(0);
1134 GET_TIME(current_time);
1135 time_diff = MS_TIME_DIFF(current_time,GC_start_time);
1136 if (time_diff >= GC_time_limit) {
1144 #endif /* !SMALL_CONFIG */
1146 + (GC_large_free_bytes >> 2)
1147 /* use a bit more of large empty heap */
1149 - if (GC_incremental) {
1150 + if (TRUE_INCREMENTAL) {
1151 return scan_size / (2 * GC_free_space_divisor);
1153 return scan_size / GC_free_space_divisor;
1155 /* managed object should not alter result, assuming the client */
1156 /* is playing by the rules. */
1157 result = (signed_word)GC_words_allocd
1158 - - (signed_word)GC_mem_freed - expl_managed;
1159 + - (signed_word)GC_mem_freed
1160 + + (signed_word)GC_finalizer_mem_freed - expl_managed;
1161 if (result > (signed_word)GC_words_allocd) {
1162 result = GC_words_allocd;
1163 /* probably client bug or unfortunate scheduling */
1166 if (GC_should_collect()) {
1167 if (!GC_incremental) {
1168 - GC_notify_full_gc();
1169 GC_gcollect_inner();
1172 @@ -302,10 +307,14 @@
1174 * Stop the world garbage collection. Assumes lock held, signals disabled.
1175 * If stop_func is not GC_never_stop_func, then abort if stop_func returns TRUE.
1176 + * Return TRUE if we successfully completed the collection.
1178 GC_bool GC_try_to_collect_inner(stop_func)
1179 GC_stop_func stop_func;
1182 + CLOCK_TYPE start_time, current_time;
1184 if (GC_dont_gc) return FALSE;
1185 if (GC_incremental && GC_collection_in_progress()) {
1187 @@ -320,8 +329,10 @@
1188 GC_collect_a_little_inner(1);
1191 + if (stop_func == GC_never_stop_func) GC_notify_full_gc();
1193 if (GC_print_stats) {
1194 + if (GC_print_stats) GET_TIME(start_time);
1196 "Initiating full world-stop collection %lu after %ld allocd bytes\n",
1197 (unsigned long) GC_gc_no+1,
1198 @@ -360,6 +371,13 @@
1201 GC_finish_collection();
1202 +# if defined(CONDPRINT)
1203 + if (GC_print_stats) {
1204 + GET_TIME(current_time);
1205 + GC_printf1("Complete collection took %lu msecs\n",
1206 + MS_TIME_DIFF(current_time,start_time));
1213 result = (int)GC_collection_in_progress();
1216 + if (!result && GC_debugging_started) GC_print_all_smashed();
1220 @@ -448,16 +467,17 @@
1221 CLOCK_TYPE start_time, current_time;
1224 -# if defined(REGISTER_LIBRARIES_EARLY)
1225 - GC_cond_register_dynamic_libraries();
1229 GET_TIME(start_time);
1231 # if defined(CONDPRINT) && !defined(PRINTTIMES)
1232 if (GC_print_stats) GET_TIME(start_time);
1234 +# if defined(REGISTER_LIBRARIES_EARLY)
1235 + GC_cond_register_dynamic_libraries();
1238 + IF_THREADS(GC_world_stopped = TRUE);
1240 if (GC_print_stats) {
1241 GC_printf1("--> Marking for collection %lu ",
1245 GC_deficit = i; /* Give the mutator a chance. */
1246 + IF_THREADS(GC_world_stopped = FALSE);
1254 + IF_THREADS(GC_world_stopped = FALSE);
1257 GET_TIME(current_time);
1258 GC_printf1("World-stopped marking took %lu msecs\n",
1268 GC_print_address_map();
1273 /* Mark all objects on the free list. All objects should be */
1274 /* marked when we're done. */
1276 GC_words_allocd = 0;
1277 GC_words_wasted = 0;
1279 + GC_finalizer_mem_freed = 0;
1287 + if (GC_debugging_started) GC_print_all_smashed();
1288 GC_INVOKE_FINALIZERS();
1291 @@ -741,14 +766,17 @@
1295 - if(result) GC_INVOKE_FINALIZERS();
1297 + if (GC_debugging_started) GC_print_all_smashed();
1298 + GC_INVOKE_FINALIZERS();
1303 void GC_gcollect GC_PROTO(())
1305 - GC_notify_full_gc();
1306 (void)GC_try_to_collect(GC_never_stop_func);
1307 + if (GC_have_errors) GC_print_all_errors();
1310 word GC_n_heap_sects = 0; /* Number of sections currently in heap. */
1313 if (!GC_incremental && !GC_dont_gc &&
1314 (GC_dont_expand && GC_words_allocd > 0 || GC_should_collect())) {
1315 - GC_notify_full_gc();
1316 GC_gcollect_inner();
1318 word blocks_to_get = GC_heapsize/(HBLKSIZE*GC_free_space_divisor)
1319 @@ -975,7 +1002,6 @@
1320 && !GC_expand_hp_inner(needed_blocks)) {
1321 if (GC_fail_count++ < GC_max_retries) {
1322 WARN("Out of Memory! Trying to continue ...\n", 0);
1323 - GC_notify_full_gc();
1324 GC_gcollect_inner();
1326 # if !defined(AMIGA) || !defined(GC_AMIGA_FASTALLOC)
1327 @@ -1005,14 +1031,15 @@
1331 - register ptr_t * flh = &(GC_obj_kinds[kind].ok_freelist[sz]);
1332 + ptr_t * flh = &(GC_obj_kinds[kind].ok_freelist[sz]);
1333 + GC_bool tried_minor = FALSE;
1335 if (sz == 0) return(0);
1339 /* Do our share of marking work */
1340 - if(GC_incremental && !GC_dont_gc) GC_collect_a_little_inner(1);
1341 + if(TRUE_INCREMENTAL) GC_collect_a_little_inner(1);
1342 /* Sweep blocks for objects of this size */
1343 GC_continue_reclaim(sz, kind);
1345 @@ -1021,13 +1048,21 @@
1349 + if (GC_incremental && GC_time_limit == GC_TIME_UNLIMITED
1350 + && ! tried_minor ) {
1351 + GC_collect_a_little_inner(1);
1352 + tried_minor = TRUE;
1354 if (!GC_collect_or_expand((word)1,FALSE)) {
1362 + /* Successful allocation; reset failure count. */
1363 + GC_fail_count = 0;
1367 diff -urNb boehm-gc/alpha_mach_dep.s boehm-gc/alpha_mach_dep.s
1368 --- boehm-gc/alpha_mach_dep.s Fri Aug 17 11:30:45 2001
1369 +++ boehm-gc/alpha_mach_dep.s Mon May 26 12:48:52 2003
1371 + # $Id: darwin-gc.patch,v 1.1 2003/09/13 04:00:51 megacz Exp $
1375 diff -urNb boehm-gc/autom4te.cache/output.0 boehm-gc/autom4te.cache/output.0
1376 --- boehm-gc/autom4te.cache/output.0 Wed Dec 31 16:00:00 1969
1377 +++ boehm-gc/autom4te.cache/output.0 Mon May 26 13:14:22 2003
1380 +@%:@ Guess values for system-dependent variables and create Makefiles.
1381 +@%:@ Generated by GNU Autoconf 2.57.
1383 +@%:@ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
1384 +@%:@ Free Software Foundation, Inc.
1385 +@%:@ This configure script is free software; the Free Software Foundation
1386 +@%:@ gives unlimited permission to copy, distribute and modify it.
1387 +## --------------------- ##
1388 +## M4sh Initialization. ##
1389 +## --------------------- ##
1391 +# Be Bourne compatible
1392 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
1395 + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
1396 + # is contrary to our usage. Disable this feature.
1397 + alias -g '${1+"$@"}'='"$@"'
1398 +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
1402 +# Support unset when possible.
1403 +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
1410 +# Work around bugs in pre-3.0 UWIN ksh.
1411 +$as_unset ENV MAIL MAILPATH
1418 + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
1419 + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
1420 + LC_TELEPHONE LC_TIME
1422 + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
1423 + eval $as_var=C; export $as_var
1429 +# Required to use basename.
1430 +if expr a : '\(a\)' >/dev/null 2>&1; then
1436 +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
1437 + as_basename=basename
1443 +# Name of the executable.
1444 +as_me=`$as_basename "$0" ||
1445 +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
1446 + X"$0" : 'X\(//\)$' \| \
1447 + X"$0" : 'X\(/\)$' \| \
1448 + . : '\(.\)' 2>/dev/null ||
1450 + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
1451 + /^X\/\(\/\/\)$/{ s//\1/; q; }
1452 + /^X\/\(\/\).*/{ s//\1/; q; }
1456 +# PATH needs CR, and LINENO needs CR and PATH.
1457 +# Avoid depending upon Character Ranges.
1458 +as_cr_letters='abcdefghijklmnopqrstuvwxyz'
1459 +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1460 +as_cr_Letters=$as_cr_letters$as_cr_LETTERS
1461 +as_cr_digits='0123456789'
1462 +as_cr_alnum=$as_cr_Letters$as_cr_digits
1464 +# The user is always right.
1465 +if test "${PATH_SEPARATOR+set}" != set; then
1466 + echo "#! /bin/sh" >conf$$.sh
1467 + echo "exit 0" >>conf$$.sh
1468 + chmod +x conf$$.sh
1469 + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
1470 + PATH_SEPARATOR=';'
1478 + as_lineno_1=$LINENO
1479 + as_lineno_2=$LINENO
1480 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
1481 + test "x$as_lineno_1" != "x$as_lineno_2" &&
1482 + test "x$as_lineno_3" = "x$as_lineno_2" || {
1483 + # Find who we are. Look in the path if we contain no path at all
1484 + # relative or not.
1486 + *[\\/]* ) as_myself=$0 ;;
1487 + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
1488 +for as_dir in $PATH
1491 + test -z "$as_dir" && as_dir=.
1492 + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
1497 + # We did not find ourselves, most probably we were run as `sh COMMAND'
1498 + # in which case we are not to be found in the path.
1499 + if test "x$as_myself" = x; then
1502 + if test ! -f "$as_myself"; then
1503 + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
1504 + { (exit 1); exit 1; }; }
1506 + case $CONFIG_SHELL in
1508 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
1509 +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
1512 + test -z "$as_dir" && as_dir=.
1513 + for as_base in sh bash ksh sh5; do
1516 + if ("$as_dir/$as_base" -c '
1517 + as_lineno_1=$LINENO
1518 + as_lineno_2=$LINENO
1519 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
1520 + test "x$as_lineno_1" != "x$as_lineno_2" &&
1521 + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
1522 + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
1523 + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
1524 + CONFIG_SHELL=$as_dir/$as_base
1525 + export CONFIG_SHELL
1526 + exec "$CONFIG_SHELL" "$0" ${1+"$@"}
1534 + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
1535 + # uniformly replaced by the line number. The first 'sed' inserts a
1536 + # line-number line before each line; the second 'sed' does the real
1537 + # work. The second script uses 'N' to pair each line-number line
1538 + # with the numbered line, and appends trailing '-' during
1539 + # substitution so that $LINENO is not a special case at line end.
1540 + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
1541 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
1542 + sed '=' <$as_myself |
1547 + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
1550 + s,^['$as_cr_digits']*\n,,
1551 + ' >$as_me.lineno &&
1552 + chmod +x $as_me.lineno ||
1553 + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
1554 + { (exit 1); exit 1; }; }
1556 + # Don't try to exec as it changes $[0], causing all sort of problems
1557 + # (the dirname of $[0] is not the place where we might find the
1558 + # original and so on. Autoconf is especially sensible to this).
1560 + # Exit status is that of the last command.
1565 +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
1566 + *c*,-n*) ECHO_N= ECHO_C='
1568 + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
1569 + *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
1572 +if expr a : '\(a\)' >/dev/null 2>&1; then
1578 +rm -f conf$$ conf$$.exe conf$$.file
1580 +if ln -s conf$$.file conf$$ 2>/dev/null; then
1581 + # We could just check for DJGPP; but this test a) works b) is more generic
1582 + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
1583 + if test -f conf$$.exe; then
1584 + # Don't use ln at all; we don't have any links
1589 +elif ln conf$$.file conf$$ 2>/dev/null; then
1594 +rm -f conf$$ conf$$.exe conf$$.file
1596 +if mkdir -p . 2>/dev/null; then
1602 +as_executable_p="test -f"
1604 +# Sed expression to map a string onto a valid CPP name.
1605 +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
1607 +# Sed expression to map a string onto a valid variable name.
1608 +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
1612 +# We need space, tab and new line, in precisely that order.
1621 +# Name of the host.
1622 +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
1623 +# so uname gets run too.
1624 +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
1631 +ac_default_prefix=/usr/local
1632 +ac_config_libobj_dir=.
1637 +SHELL=${CONFIG_SHELL-/bin/sh}
1639 +# Maximum number of lines to put in a shell here document.
1640 +# This variable seems obsolete. It should probably be removed, and
1641 +# only ac_max_sed_lines should be used.
1642 +: ${ac_max_here_lines=38}
1644 +# Identity of this package.
1651 +ac_unique_file="gcj_mlc.c"
1652 +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'
1655 +# Initialize some variables set by options.
1657 +ac_init_version=false
1658 +# The variables have the same names as the options, with
1659 +# dashes changed to underlines.
1660 +cache_file=/dev/null
1665 +program_prefix=NONE
1666 +program_suffix=NONE
1667 +program_transform_name=s,x,x,
1675 +# Installation directory options.
1676 +# These are left unexpanded so users can "make install exec_prefix=/foo"
1677 +# and all the variables that are supposed to be based on exec_prefix
1678 +# by default will actually change.
1679 +# Use braces instead of parens because sh, perl, etc. also accept them.
1680 +bindir='${exec_prefix}/bin'
1681 +sbindir='${exec_prefix}/sbin'
1682 +libexecdir='${exec_prefix}/libexec'
1683 +datadir='${prefix}/share'
1684 +sysconfdir='${prefix}/etc'
1685 +sharedstatedir='${prefix}/com'
1686 +localstatedir='${prefix}/var'
1687 +libdir='${exec_prefix}/lib'
1688 +includedir='${prefix}/include'
1689 +oldincludedir='/usr/include'
1690 +infodir='${prefix}/info'
1691 +mandir='${prefix}/man'
1696 + # If the previous option needs an argument, assign it.
1697 + if test -n "$ac_prev"; then
1698 + eval "$ac_prev=\$ac_option"
1703 + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
1705 + # Accept the important Cygnus configure options, so we can diagnose typos.
1707 + case $ac_option in
1709 + -bindir | --bindir | --bindi | --bind | --bin | --bi)
1711 + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
1712 + bindir=$ac_optarg ;;
1714 + -build | --build | --buil | --bui | --bu)
1715 + ac_prev=build_alias ;;
1716 + -build=* | --build=* | --buil=* | --bui=* | --bu=*)
1717 + build_alias=$ac_optarg ;;
1719 + -cache-file | --cache-file | --cache-fil | --cache-fi \
1720 + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
1721 + ac_prev=cache_file ;;
1722 + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
1723 + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
1724 + cache_file=$ac_optarg ;;
1726 + --config-cache | -C)
1727 + cache_file=config.cache ;;
1729 + -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
1730 + ac_prev=datadir ;;
1731 + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
1733 + datadir=$ac_optarg ;;
1735 + -disable-* | --disable-*)
1736 + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
1737 + # Reject names that are not valid shell variable names.
1738 + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
1739 + { echo "$as_me: error: invalid feature name: $ac_feature" >&2
1740 + { (exit 1); exit 1; }; }
1741 + ac_feature=`echo $ac_feature | sed 's/-/_/g'`
1742 + eval "enable_$ac_feature=no" ;;
1744 + -enable-* | --enable-*)
1745 + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
1746 + # Reject names that are not valid shell variable names.
1747 + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
1748 + { echo "$as_me: error: invalid feature name: $ac_feature" >&2
1749 + { (exit 1); exit 1; }; }
1750 + ac_feature=`echo $ac_feature | sed 's/-/_/g'`
1751 + case $ac_option in
1752 + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
1753 + *) ac_optarg=yes ;;
1755 + eval "enable_$ac_feature='$ac_optarg'" ;;
1757 + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
1758 + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
1759 + | --exec | --exe | --ex)
1760 + ac_prev=exec_prefix ;;
1761 + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
1762 + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
1763 + | --exec=* | --exe=* | --ex=*)
1764 + exec_prefix=$ac_optarg ;;
1766 + -gas | --gas | --ga | --g)
1767 + # Obsolete; use --with-gas.
1770 + -help | --help | --hel | --he | -h)
1771 + ac_init_help=long ;;
1772 + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
1773 + ac_init_help=recursive ;;
1774 + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
1775 + ac_init_help=short ;;
1777 + -host | --host | --hos | --ho)
1778 + ac_prev=host_alias ;;
1779 + -host=* | --host=* | --hos=* | --ho=*)
1780 + host_alias=$ac_optarg ;;
1782 + -includedir | --includedir | --includedi | --included | --include \
1783 + | --includ | --inclu | --incl | --inc)
1784 + ac_prev=includedir ;;
1785 + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
1786 + | --includ=* | --inclu=* | --incl=* | --inc=*)
1787 + includedir=$ac_optarg ;;
1789 + -infodir | --infodir | --infodi | --infod | --info | --inf)
1790 + ac_prev=infodir ;;
1791 + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
1792 + infodir=$ac_optarg ;;
1794 + -libdir | --libdir | --libdi | --libd)
1796 + -libdir=* | --libdir=* | --libdi=* | --libd=*)
1797 + libdir=$ac_optarg ;;
1799 + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
1800 + | --libexe | --libex | --libe)
1801 + ac_prev=libexecdir ;;
1802 + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
1803 + | --libexe=* | --libex=* | --libe=*)
1804 + libexecdir=$ac_optarg ;;
1806 + -localstatedir | --localstatedir | --localstatedi | --localstated \
1807 + | --localstate | --localstat | --localsta | --localst \
1808 + | --locals | --local | --loca | --loc | --lo)
1809 + ac_prev=localstatedir ;;
1810 + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
1811 + | --localstate=* | --localstat=* | --localsta=* | --localst=* \
1812 + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
1813 + localstatedir=$ac_optarg ;;
1815 + -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
1817 + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
1818 + mandir=$ac_optarg ;;
1820 + -nfp | --nfp | --nf)
1821 + # Obsolete; use --without-fp.
1824 + -no-create | --no-create | --no-creat | --no-crea | --no-cre \
1825 + | --no-cr | --no-c | -n)
1828 + -no-recursion | --no-recursion | --no-recursio | --no-recursi \
1829 + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
1830 + no_recursion=yes ;;
1832 + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
1833 + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
1834 + | --oldin | --oldi | --old | --ol | --o)
1835 + ac_prev=oldincludedir ;;
1836 + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
1837 + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
1838 + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
1839 + oldincludedir=$ac_optarg ;;
1841 + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
1843 + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
1844 + prefix=$ac_optarg ;;
1846 + -program-prefix | --program-prefix | --program-prefi | --program-pref \
1847 + | --program-pre | --program-pr | --program-p)
1848 + ac_prev=program_prefix ;;
1849 + -program-prefix=* | --program-prefix=* | --program-prefi=* \
1850 + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
1851 + program_prefix=$ac_optarg ;;
1853 + -program-suffix | --program-suffix | --program-suffi | --program-suff \
1854 + | --program-suf | --program-su | --program-s)
1855 + ac_prev=program_suffix ;;
1856 + -program-suffix=* | --program-suffix=* | --program-suffi=* \
1857 + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
1858 + program_suffix=$ac_optarg ;;
1860 + -program-transform-name | --program-transform-name \
1861 + | --program-transform-nam | --program-transform-na \
1862 + | --program-transform-n | --program-transform- \
1863 + | --program-transform | --program-transfor \
1864 + | --program-transfo | --program-transf \
1865 + | --program-trans | --program-tran \
1866 + | --progr-tra | --program-tr | --program-t)
1867 + ac_prev=program_transform_name ;;
1868 + -program-transform-name=* | --program-transform-name=* \
1869 + | --program-transform-nam=* | --program-transform-na=* \
1870 + | --program-transform-n=* | --program-transform-=* \
1871 + | --program-transform=* | --program-transfor=* \
1872 + | --program-transfo=* | --program-transf=* \
1873 + | --program-trans=* | --program-tran=* \
1874 + | --progr-tra=* | --program-tr=* | --program-t=*)
1875 + program_transform_name=$ac_optarg ;;
1877 + -q | -quiet | --quiet | --quie | --qui | --qu | --q \
1878 + | -silent | --silent | --silen | --sile | --sil)
1881 + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
1882 + ac_prev=sbindir ;;
1883 + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
1884 + | --sbi=* | --sb=*)
1885 + sbindir=$ac_optarg ;;
1887 + -sharedstatedir | --sharedstatedir | --sharedstatedi \
1888 + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
1889 + | --sharedst | --shareds | --shared | --share | --shar \
1891 + ac_prev=sharedstatedir ;;
1892 + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
1893 + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
1894 + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
1895 + | --sha=* | --sh=*)
1896 + sharedstatedir=$ac_optarg ;;
1898 + -site | --site | --sit)
1900 + -site=* | --site=* | --sit=*)
1901 + site=$ac_optarg ;;
1903 + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
1905 + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
1906 + srcdir=$ac_optarg ;;
1908 + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
1909 + | --syscon | --sysco | --sysc | --sys | --sy)
1910 + ac_prev=sysconfdir ;;
1911 + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
1912 + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
1913 + sysconfdir=$ac_optarg ;;
1915 + -target | --target | --targe | --targ | --tar | --ta | --t)
1916 + ac_prev=target_alias ;;
1917 + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
1918 + target_alias=$ac_optarg ;;
1920 + -v | -verbose | --verbose | --verbos | --verbo | --verb)
1923 + -version | --version | --versio | --versi | --vers | -V)
1924 + ac_init_version=: ;;
1926 + -with-* | --with-*)
1927 + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
1928 + # Reject names that are not valid shell variable names.
1929 + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
1930 + { echo "$as_me: error: invalid package name: $ac_package" >&2
1931 + { (exit 1); exit 1; }; }
1932 + ac_package=`echo $ac_package| sed 's/-/_/g'`
1933 + case $ac_option in
1934 + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
1935 + *) ac_optarg=yes ;;
1937 + eval "with_$ac_package='$ac_optarg'" ;;
1939 + -without-* | --without-*)
1940 + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
1941 + # Reject names that are not valid shell variable names.
1942 + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
1943 + { echo "$as_me: error: invalid package name: $ac_package" >&2
1944 + { (exit 1); exit 1; }; }
1945 + ac_package=`echo $ac_package | sed 's/-/_/g'`
1946 + eval "with_$ac_package=no" ;;
1949 + # Obsolete; use --with-x.
1952 + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
1953 + | --x-incl | --x-inc | --x-in | --x-i)
1954 + ac_prev=x_includes ;;
1955 + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
1956 + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
1957 + x_includes=$ac_optarg ;;
1959 + -x-libraries | --x-libraries | --x-librarie | --x-librari \
1960 + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
1961 + ac_prev=x_libraries ;;
1962 + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
1963 + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
1964 + x_libraries=$ac_optarg ;;
1966 + -*) { echo "$as_me: error: unrecognized option: $ac_option
1967 +Try \`$0 --help' for more information." >&2
1968 + { (exit 1); exit 1; }; }
1972 + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
1973 + # Reject names that are not valid shell variable names.
1974 + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
1975 + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
1976 + { (exit 1); exit 1; }; }
1977 + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
1978 + eval "$ac_envvar='$ac_optarg'"
1979 + export $ac_envvar ;;
1982 + # FIXME: should be removed in autoconf 3.0.
1983 + echo "$as_me: WARNING: you should use --build, --host, --target" >&2
1984 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1985 + echo "$as_me: WARNING: invalid host type: $ac_option" >&2
1986 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
1992 +if test -n "$ac_prev"; then
1993 + ac_option=--`echo $ac_prev | sed 's/_/-/g'`
1994 + { echo "$as_me: error: missing argument to $ac_option" >&2
1995 + { (exit 1); exit 1; }; }
1998 +# Be sure to have absolute paths.
1999 +for ac_var in exec_prefix prefix
2001 + eval ac_val=$`echo $ac_var`
2003 + [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
2004 + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
2005 + { (exit 1); exit 1; }; };;
2009 +# Be sure to have absolute paths.
2010 +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
2011 + localstatedir libdir includedir oldincludedir infodir mandir
2013 + eval ac_val=$`echo $ac_var`
2015 + [\\/$]* | ?:[\\/]* ) ;;
2016 + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
2017 + { (exit 1); exit 1; }; };;
2021 +# There might be people who depend on the old broken behavior: `$host'
2022 +# used to hold the argument of --host etc.
2023 +# FIXME: To remove some day.
2026 +target=$target_alias
2028 +# FIXME: To remove some day.
2029 +if test "x$host_alias" != x; then
2030 + if test "x$build_alias" = x; then
2031 + cross_compiling=maybe
2032 + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
2033 + If a cross compiler is detected then cross compile mode will be used." >&2
2034 + elif test "x$build_alias" != "x$host_alias"; then
2035 + cross_compiling=yes
2040 +test -n "$host_alias" && ac_tool_prefix=$host_alias-
2042 +test "$silent" = yes && exec 6>/dev/null
2045 +# Find the source files, if location was not specified.
2046 +if test -z "$srcdir"; then
2047 + ac_srcdir_defaulted=yes
2048 + # Try the directory containing this script, then its parent.
2049 + ac_confdir=`(dirname "$0") 2>/dev/null ||
2050 +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
2051 + X"$0" : 'X\(//\)[^/]' \| \
2052 + X"$0" : 'X\(//\)$' \| \
2053 + X"$0" : 'X\(/\)' \| \
2054 + . : '\(.\)' 2>/dev/null ||
2056 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
2057 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
2058 + /^X\(\/\/\)$/{ s//\1/; q; }
2059 + /^X\(\/\).*/{ s//\1/; q; }
2061 + srcdir=$ac_confdir
2062 + if test ! -r $srcdir/$ac_unique_file; then
2066 + ac_srcdir_defaulted=no
2068 +if test ! -r $srcdir/$ac_unique_file; then
2069 + if test "$ac_srcdir_defaulted" = yes; then
2070 + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
2071 + { (exit 1); exit 1; }; }
2073 + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
2074 + { (exit 1); exit 1; }; }
2077 +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
2078 + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
2079 + { (exit 1); exit 1; }; }
2080 +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
2081 +ac_env_build_alias_set=${build_alias+set}
2082 +ac_env_build_alias_value=$build_alias
2083 +ac_cv_env_build_alias_set=${build_alias+set}
2084 +ac_cv_env_build_alias_value=$build_alias
2085 +ac_env_host_alias_set=${host_alias+set}
2086 +ac_env_host_alias_value=$host_alias
2087 +ac_cv_env_host_alias_set=${host_alias+set}
2088 +ac_cv_env_host_alias_value=$host_alias
2089 +ac_env_target_alias_set=${target_alias+set}
2090 +ac_env_target_alias_value=$target_alias
2091 +ac_cv_env_target_alias_set=${target_alias+set}
2092 +ac_cv_env_target_alias_value=$target_alias
2093 +ac_env_CXXCPP_set=${CXXCPP+set}
2094 +ac_env_CXXCPP_value=$CXXCPP
2095 +ac_cv_env_CXXCPP_set=${CXXCPP+set}
2096 +ac_cv_env_CXXCPP_value=$CXXCPP
2097 +ac_env_CPPFLAGS_set=${CPPFLAGS+set}
2098 +ac_env_CPPFLAGS_value=$CPPFLAGS
2099 +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
2100 +ac_cv_env_CPPFLAGS_value=$CPPFLAGS
2103 +# Report the --help message.
2105 +if test "$ac_init_help" = "long"; then
2106 + # Omit some internal or obsolete options to make the list less imposing.
2107 + # This message is too long to be a string in the A/UX 3.1 sh.
2109 +\`configure' configures this package to adapt to many kinds of systems.
2111 +Usage: $0 [OPTION]... [VAR=VALUE]...
2113 +To assign environment variables (e.g., CC, CFLAGS...), specify them as
2114 +VAR=VALUE. See below for descriptions of some of the useful variables.
2116 +Defaults for the options are specified in brackets.
2119 + -h, --help display this help and exit
2120 + --help=short display options specific to this package
2121 + --help=recursive display the short help of all the included packages
2122 + -V, --version display version information and exit
2123 + -q, --quiet, --silent do not print \`checking...' messages
2124 + --cache-file=FILE cache test results in FILE [disabled]
2125 + -C, --config-cache alias for \`--cache-file=config.cache'
2126 + -n, --no-create do not create output files
2127 + --srcdir=DIR find the sources in DIR [configure dir or \`..']
2132 +Installation directories:
2133 + --prefix=PREFIX install architecture-independent files in PREFIX
2134 + [$ac_default_prefix]
2135 + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
2138 +By default, \`make install' will install all the files in
2139 +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
2140 +an installation prefix other than \`$ac_default_prefix' using \`--prefix',
2141 +for instance \`--prefix=\$HOME'.
2143 +For better control, use the options below.
2145 +Fine tuning of the installation directories:
2146 + --bindir=DIR user executables [EPREFIX/bin]
2147 + --sbindir=DIR system admin executables [EPREFIX/sbin]
2148 + --libexecdir=DIR program executables [EPREFIX/libexec]
2149 + --datadir=DIR read-only architecture-independent data [PREFIX/share]
2150 + --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
2151 + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
2152 + --localstatedir=DIR modifiable single-machine data [PREFIX/var]
2153 + --libdir=DIR object code libraries [EPREFIX/lib]
2154 + --includedir=DIR C header files [PREFIX/include]
2155 + --oldincludedir=DIR C header files for non-gcc [/usr/include]
2156 + --infodir=DIR info documentation [PREFIX/info]
2157 + --mandir=DIR man documentation [PREFIX/man]
2163 + --program-prefix=PREFIX prepend PREFIX to installed program names
2164 + --program-suffix=SUFFIX append SUFFIX to installed program names
2165 + --program-transform-name=PROGRAM run sed PROGRAM on installed program names
2168 + --build=BUILD configure for building on BUILD [guessed]
2169 + --host=HOST cross-compile to build programs to run on HOST [BUILD]
2170 + --target=TARGET configure for building compilers for TARGET [HOST]
2174 +if test -n "$ac_init_help"; then
2179 + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
2180 + --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
2181 + --enable-multilib build many library versions (default)
2182 + --enable-maintainer-mode enable make rules and dependencies not useful
2183 + (and sometimes confusing) to the casual installer
2184 + --enable-shared=PKGS build shared libraries default=yes
2185 + --enable-static=PKGS build static libraries default=yes
2186 + --enable-fast-install=PKGS optimize for fast installation default=yes
2187 + --disable-libtool-lock avoid locking (might break parallel builds)
2188 + --enable-parallel-mark parallelize marking and free list construction
2189 + --enable-shared=PKGS build shared libraries default=no
2190 + --enable-full-debug include full support for pointer backtracing etc.
2193 + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
2194 + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
2195 + --with-gnu-ld assume the C compiler uses GNU ld default=no
2196 + --with-pic try to use only PIC/non-PIC objects default=use both
2197 + --with-target-subdir=SUBDIR
2198 + configuring with a cross compiler
2199 + --with-cross-host=HOST configuring with a cross compiler
2200 + --with-ecos enable runtime eCos target support
2202 +Some influential environment variables:
2203 + CXXCPP C++ preprocessor
2204 + CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
2205 + headers in a nonstandard directory <include dir>
2207 +Use these variables to override the choices made by `configure' or to help
2208 +it to find libraries and programs with nonstandard names/locations.
2213 +if test "$ac_init_help" = "recursive"; then
2214 + # If there are subdirs, report their specific --help.
2216 + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
2217 + test -d $ac_dir || continue
2220 +if test "$ac_dir" != .; then
2221 + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
2222 + # A "../" for each directory in $ac_dir_suffix.
2223 + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
2225 + ac_dir_suffix= ac_top_builddir=
2229 + .) # No --srcdir option. We are building in place.
2231 + if test -z "$ac_top_builddir"; then
2234 + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
2236 + [\\/]* | ?:[\\/]* ) # Absolute path.
2237 + ac_srcdir=$srcdir$ac_dir_suffix;
2238 + ac_top_srcdir=$srcdir ;;
2239 + *) # Relative path.
2240 + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
2241 + ac_top_srcdir=$ac_top_builddir$srcdir ;;
2243 +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
2245 +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
2246 +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
2247 +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
2248 +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
2251 + # Check for guested configure; otherwise get Cygnus style configure.
2252 + if test -f $ac_srcdir/configure.gnu; then
2254 + $SHELL $ac_srcdir/configure.gnu --help=recursive
2255 + elif test -f $ac_srcdir/configure; then
2257 + $SHELL $ac_srcdir/configure --help=recursive
2258 + elif test -f $ac_srcdir/configure.ac ||
2259 + test -f $ac_srcdir/configure.in; then
2261 + $ac_configure --help
2263 + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
2269 +test -n "$ac_init_help" && exit 0
2270 +if $ac_init_version; then
2273 +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
2274 +Free Software Foundation, Inc.
2275 +This configure script is free software; the Free Software Foundation
2276 +gives unlimited permission to copy, distribute and modify it.
2282 +This file contains any messages produced by compilers while
2283 +running configure, to aid debugging if configure makes a mistake.
2285 +It was created by $as_me, which was
2286 +generated by GNU Autoconf 2.57. Invocation command line was
2293 +@%:@@%:@ --------- @%:@@%:@
2294 +@%:@@%:@ Platform. @%:@@%:@
2295 +@%:@@%:@ --------- @%:@@%:@
2297 +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
2298 +uname -m = `(uname -m) 2>/dev/null || echo unknown`
2299 +uname -r = `(uname -r) 2>/dev/null || echo unknown`
2300 +uname -s = `(uname -s) 2>/dev/null || echo unknown`
2301 +uname -v = `(uname -v) 2>/dev/null || echo unknown`
2303 +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
2304 +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
2306 +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
2307 +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
2308 +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
2309 +hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
2310 +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
2311 +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
2312 +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
2316 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2317 +for as_dir in $PATH
2320 + test -z "$as_dir" && as_dir=.
2321 + echo "PATH: $as_dir"
2329 +@%:@@%:@ ----------- @%:@@%:@
2330 +@%:@@%:@ Core tests. @%:@@%:@
2331 +@%:@@%:@ ----------- @%:@@%:@
2336 +# Keep a trace of the command line.
2337 +# Strip out --no-create and --no-recursion so they do not pile up.
2338 +# Strip out --silent because we don't want to record it for future runs.
2339 +# Also quote any args containing shell meta-characters.
2340 +# Make two passes to allow for proper duplicate-argument suppression.
2342 +ac_configure_args0=
2343 +ac_configure_args1=
2345 +ac_must_keep_next=false
2351 + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
2352 + -q | -quiet | --quiet | --quie | --qui | --qu | --q \
2353 + | -silent | --silent | --silen | --sile | --sil)
2355 + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
2356 + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
2359 + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
2361 + ac_configure_args1="$ac_configure_args1 '$ac_arg'"
2362 + if test $ac_must_keep_next = true; then
2363 + ac_must_keep_next=false # Got value, back to normal.
2366 + *=* | --config-cache | -C | -disable-* | --disable-* \
2367 + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
2368 + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
2369 + | -with-* | --with-* | -without-* | --without-* | --x)
2370 + case "$ac_configure_args0 " in
2371 + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
2374 + -* ) ac_must_keep_next=true ;;
2377 + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
2378 + # Get rid of the leading space.
2384 +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
2385 +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
2387 +# When interrupted or exit'd, cleanup temporary files, and complete
2388 +# config.log. We remove comments because anyway the quotes in there
2389 +# would cause problems or look ugly.
2390 +# WARNING: Be sure not to use single quotes in there, as some shells,
2391 +# such as our DU 5.0 friend, will then `close' the trap.
2392 +trap 'exit_status=$?
2393 + # Save into config.log some information that might help in debugging.
2398 +@%:@@%:@ ---------------- @%:@@%:@
2399 +@%:@@%:@ Cache variables. @%:@@%:@
2400 +@%:@@%:@ ---------------- @%:@@%:@
2403 + # The following way of writing the cache mishandles newlines in values,
2406 + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
2409 + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
2410 + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
2414 + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
2421 +@%:@@%:@ ----------------- @%:@@%:@
2422 +@%:@@%:@ Output variables. @%:@@%:@
2423 +@%:@@%:@ ----------------- @%:@@%:@
2426 + for ac_var in $ac_subst_vars
2428 + eval ac_val=$`echo $ac_var`
2429 + echo "$ac_var='"'"'$ac_val'"'"'"
2433 + if test -n "$ac_subst_files"; then
2435 +@%:@@%:@ ------------- @%:@@%:@
2436 +@%:@@%:@ Output files. @%:@@%:@
2437 +@%:@@%:@ ------------- @%:@@%:@
2440 + for ac_var in $ac_subst_files
2442 + eval ac_val=$`echo $ac_var`
2443 + echo "$ac_var='"'"'$ac_val'"'"'"
2448 + if test -s confdefs.h; then
2450 +@%:@@%:@ ----------- @%:@@%:@
2451 +@%:@@%:@ confdefs.h. @%:@@%:@
2452 +@%:@@%:@ ----------- @%:@@%:@
2455 + sed "/^$/d" confdefs.h | sort
2458 + test "$ac_signal" != 0 &&
2459 + echo "$as_me: caught signal $ac_signal"
2460 + echo "$as_me: exit $exit_status"
2462 + rm -f core core.* *.core &&
2463 + rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
2466 +for ac_signal in 1 2 13 15; do
2467 + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
2471 +# confdefs.h avoids OS command line length limits that DEFS can exceed.
2472 +rm -rf conftest* confdefs.h
2473 +# AIX cpp loses on an empty file, so make sure it contains at least a newline.
2476 +# Predefined preprocessor variables.
2478 +cat >>confdefs.h <<_ACEOF
2479 +@%:@define PACKAGE_NAME "$PACKAGE_NAME"
2483 +cat >>confdefs.h <<_ACEOF
2484 +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
2488 +cat >>confdefs.h <<_ACEOF
2489 +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
2493 +cat >>confdefs.h <<_ACEOF
2494 +@%:@define PACKAGE_STRING "$PACKAGE_STRING"
2498 +cat >>confdefs.h <<_ACEOF
2499 +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
2503 +# Let the site file select an alternate cache file if it wants to.
2504 +# Prefer explicitly selected file to automatically selected ones.
2505 +if test -z "$CONFIG_SITE"; then
2506 + if test "x$prefix" != xNONE; then
2507 + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
2509 + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
2512 +for ac_site_file in $CONFIG_SITE; do
2513 + if test -r "$ac_site_file"; then
2514 + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
2515 +echo "$as_me: loading site script $ac_site_file" >&6;}
2516 + sed 's/^/| /' "$ac_site_file" >&5
2521 +if test -r "$cache_file"; then
2522 + # Some versions of bash will fail to source /dev/null (special
2523 + # files actually), so we avoid doing that.
2524 + if test -f "$cache_file"; then
2525 + { echo "$as_me:$LINENO: loading cache $cache_file" >&5
2526 +echo "$as_me: loading cache $cache_file" >&6;}
2527 + case $cache_file in
2528 + [\\/]* | ?:[\\/]* ) . $cache_file;;
2529 + *) . ./$cache_file;;
2533 + { echo "$as_me:$LINENO: creating cache $cache_file" >&5
2534 +echo "$as_me: creating cache $cache_file" >&6;}
2538 +# Check that the precious variables saved in the cache have kept the same
2540 +ac_cache_corrupted=false
2541 +for ac_var in `(set) 2>&1 |
2542 + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
2543 + eval ac_old_set=\$ac_cv_env_${ac_var}_set
2544 + eval ac_new_set=\$ac_env_${ac_var}_set
2545 + eval ac_old_val="\$ac_cv_env_${ac_var}_value"
2546 + eval ac_new_val="\$ac_env_${ac_var}_value"
2547 + case $ac_old_set,$ac_new_set in
2549 + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
2550 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
2551 + ac_cache_corrupted=: ;;
2553 + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
2554 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
2555 + ac_cache_corrupted=: ;;
2558 + if test "x$ac_old_val" != "x$ac_new_val"; then
2559 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
2560 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
2561 + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
2562 +echo "$as_me: former value: $ac_old_val" >&2;}
2563 + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
2564 +echo "$as_me: current value: $ac_new_val" >&2;}
2565 + ac_cache_corrupted=:
2568 + # Pass precious variables to config.status.
2569 + if test "$ac_new_set" = set; then
2570 + case $ac_new_val in
2571 + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
2572 + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
2573 + *) ac_arg=$ac_var=$ac_new_val ;;
2575 + case " $ac_configure_args " in
2576 + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
2577 + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
2581 +if $ac_cache_corrupted; then
2582 + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
2583 +echo "$as_me: error: changes in the environment can compromise the build" >&2;}
2584 + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
2585 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
2586 + { (exit 1); exit 1; }; }
2590 +ac_cpp='$CPP $CPPFLAGS'
2591 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
2592 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
2593 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
2614 +# This works around the fact that libtool configuration may change LD
2615 +# for this particular configuration, but some shells, instead of
2616 +# keeping the changes in LD private, export them just because LD is
2618 +ORIGINAL_LD_FOR_MULTILIBS=$LD
2621 +for ac_dir in . $srcdir/.; do
2622 + if test -f $ac_dir/install-sh; then
2623 + ac_aux_dir=$ac_dir
2624 + ac_install_sh="$ac_aux_dir/install-sh -c"
2626 + elif test -f $ac_dir/install.sh; then
2627 + ac_aux_dir=$ac_dir
2628 + ac_install_sh="$ac_aux_dir/install.sh -c"
2630 + elif test -f $ac_dir/shtool; then
2631 + ac_aux_dir=$ac_dir
2632 + ac_install_sh="$ac_aux_dir/shtool install -c"
2636 +if test -z "$ac_aux_dir"; then
2637 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in . $srcdir/." >&5
2638 +echo "$as_me: error: cannot find install-sh or install.sh in . $srcdir/." >&2;}
2639 + { (exit 1); exit 1; }; }
2641 +ac_config_guess="$SHELL $ac_aux_dir/config.guess"
2642 +ac_config_sub="$SHELL $ac_aux_dir/config.sub"
2643 +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
2646 +# Make sure we can run config.sub.
2647 +$ac_config_sub sun4 >/dev/null 2>&1 ||
2648 + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
2649 +echo "$as_me: error: cannot run $ac_config_sub" >&2;}
2650 + { (exit 1); exit 1; }; }
2652 +echo "$as_me:$LINENO: checking build system type" >&5
2653 +echo $ECHO_N "checking build system type... $ECHO_C" >&6
2654 +if test "${ac_cv_build+set}" = set; then
2655 + echo $ECHO_N "(cached) $ECHO_C" >&6
2657 + ac_cv_build_alias=$build_alias
2658 +test -z "$ac_cv_build_alias" &&
2659 + ac_cv_build_alias=`$ac_config_guess`
2660 +test -z "$ac_cv_build_alias" &&
2661 + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
2662 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
2663 + { (exit 1); exit 1; }; }
2664 +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
2665 + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
2666 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
2667 + { (exit 1); exit 1; }; }
2670 +echo "$as_me:$LINENO: result: $ac_cv_build" >&5
2671 +echo "${ECHO_T}$ac_cv_build" >&6
2673 +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
2674 +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
2675 +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
2678 +echo "$as_me:$LINENO: checking host system type" >&5
2679 +echo $ECHO_N "checking host system type... $ECHO_C" >&6
2680 +if test "${ac_cv_host+set}" = set; then
2681 + echo $ECHO_N "(cached) $ECHO_C" >&6
2683 + ac_cv_host_alias=$host_alias
2684 +test -z "$ac_cv_host_alias" &&
2685 + ac_cv_host_alias=$ac_cv_build_alias
2686 +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
2687 + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
2688 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
2689 + { (exit 1); exit 1; }; }
2692 +echo "$as_me:$LINENO: result: $ac_cv_host" >&5
2693 +echo "${ECHO_T}$ac_cv_host" >&6
2695 +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
2696 +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
2697 +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
2700 +# Find a good install program. We prefer a C program (faster),
2701 +# so one script is as good as another. But avoid the broken or
2702 +# incompatible versions:
2703 +# SysV /etc/install, /usr/sbin/install
2704 +# SunOS /usr/etc/install
2705 +# IRIX /sbin/install
2707 +# AmigaOS /C/install, which installs bootblocks on floppy discs
2708 +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
2709 +# AFS /usr/afsws/bin/install, which mishandles nonexistent args
2710 +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
2711 +# ./install, which can be erroneously created by make from ./install.sh.
2712 +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
2713 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
2714 +if test -z "$INSTALL"; then
2715 +if test "${ac_cv_path_install+set}" = set; then
2716 + echo $ECHO_N "(cached) $ECHO_C" >&6
2718 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2719 +for as_dir in $PATH
2722 + test -z "$as_dir" && as_dir=.
2723 + # Account for people who put trailing slashes in PATH elements.
2725 + ./ | .// | /cC/* | \
2726 + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
2729 + # OSF1 and SCO ODT 3.0 have their own names for install.
2730 + # Don't use installbsd from OSF since it installs stuff as root
2732 + for ac_prog in ginstall scoinst install; do
2733 + for ac_exec_ext in '' $ac_executable_extensions; do
2734 + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
2735 + if test $ac_prog = install &&
2736 + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
2737 + # AIX install. It has an incompatible calling convention.
2739 + elif test $ac_prog = install &&
2740 + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
2741 + # program-specific install script used by HP pwplus--don't use.
2744 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
2756 + if test "${ac_cv_path_install+set}" = set; then
2757 + INSTALL=$ac_cv_path_install
2759 + # As a last resort, use the slow shell script. We don't cache a
2760 + # path for INSTALL within a source directory, because that will
2761 + # break other packages using the cache if that directory is
2762 + # removed, or if the path is relative.
2763 + INSTALL=$ac_install_sh
2766 +echo "$as_me:$LINENO: result: $INSTALL" >&5
2767 +echo "${ECHO_T}$INSTALL" >&6
2769 +# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
2770 +# It thinks the first close brace ends the variable substitution.
2771 +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
2773 +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
2775 +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
2777 +echo "$as_me:$LINENO: checking whether build environment is sane" >&5
2778 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
2781 +echo timestamp > conftestfile
2782 +# Do `set' in a subshell so we don't clobber the current shell's
2783 +# arguments. Must try -L first in case configure is actually a
2784 +# symlink; some systems play weird games with the mod time of symlinks
2785 +# (eg FreeBSD returns the mod time of the symlink's containing
2788 + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
2789 + if test "$*" = "X"; then
2791 + set X `ls -t $srcdir/configure conftestfile`
2793 + if test "$*" != "X $srcdir/configure conftestfile" \
2794 + && test "$*" != "X conftestfile $srcdir/configure"; then
2796 + # If neither matched, then we have a broken ls. This can happen
2797 + # if, for instance, CONFIG_SHELL is bash and it inherits a
2798 + # broken ls alias from the environment. This has actually
2799 + # happened. Such a system could not be considered "sane".
2800 + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
2801 +alias in your environment" >&5
2802 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
2803 +alias in your environment" >&2;}
2804 + { (exit 1); exit 1; }; }
2807 + test "$2" = conftestfile
2813 + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
2814 +Check your system clock" >&5
2815 +echo "$as_me: error: newly created file is older than distributed files!
2816 +Check your system clock" >&2;}
2817 + { (exit 1); exit 1; }; }
2820 +echo "$as_me:$LINENO: result: yes" >&5
2821 +echo "${ECHO_T}yes" >&6
2822 +test "$program_prefix" != NONE &&
2823 + program_transform_name="s,^,$program_prefix,;$program_transform_name"
2824 +# Use a double $ so make ignores it.
2825 +test "$program_suffix" != NONE &&
2826 + program_transform_name="s,\$,$program_suffix,;$program_transform_name"
2827 +# Double any \ or $. echo might interpret backslashes.
2828 +# By default was `s,x,x', remove it if useless.
2829 +cat <<\_ACEOF >conftest.sed
2830 +s/[\\$]/&&/g;s/;s,x,x,$//
2832 +program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
2835 +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
2836 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
2837 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
2838 +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
2839 + echo $ECHO_N "(cached) $ECHO_C" >&6
2841 + cat >conftest.make <<\_ACEOF
2843 + @echo 'ac_maketemp="$(MAKE)"'
2845 +# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
2846 +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
2847 +if test -n "$ac_maketemp"; then
2848 + eval ac_cv_prog_make_${ac_make}_set=yes
2850 + eval ac_cv_prog_make_${ac_make}_set=no
2852 +rm -f conftest.make
2854 +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
2855 + echo "$as_me:$LINENO: result: yes" >&5
2856 +echo "${ECHO_T}yes" >&6
2859 + echo "$as_me:$LINENO: result: no" >&5
2860 +echo "${ECHO_T}no" >&6
2861 + SET_MAKE="MAKE=${MAKE-make}"
2865 +# Check whether --enable-multilib or --disable-multilib was given.
2866 +if test "${enable_multilib+set}" = set; then
2867 + enableval="$enable_multilib"
2868 + case "${enableval}" in
2869 + yes) multilib=yes ;;
2870 + no) multilib=no ;;
2871 + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for multilib option" >&5
2872 +echo "$as_me: error: bad value ${enableval} for multilib option" >&2;}
2873 + { (exit 1); exit 1; }; } ;;
2879 +if test "${srcdir}" = "."; then
2880 + if test "${with_target_subdir}" != "." -a -n "${with_target_subdir}"; then
2881 + gc_basedir="${srcdir}/${with_multisrctop}../."
2883 + gc_basedir="${srcdir}/${with_multisrctop}."
2886 + gc_basedir="${srcdir}/."
2890 +for ac_dir in $gc_basedir/.. $srcdir/$gc_basedir/..; do
2891 + if test -f $ac_dir/install-sh; then
2892 + ac_aux_dir=$ac_dir
2893 + ac_install_sh="$ac_aux_dir/install-sh -c"
2895 + elif test -f $ac_dir/install.sh; then
2896 + ac_aux_dir=$ac_dir
2897 + ac_install_sh="$ac_aux_dir/install.sh -c"
2899 + elif test -f $ac_dir/shtool; then
2900 + ac_aux_dir=$ac_dir
2901 + ac_install_sh="$ac_aux_dir/shtool install -c"
2905 +if test -z "$ac_aux_dir"; then
2906 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $gc_basedir/.. $srcdir/$gc_basedir/.." >&5
2907 +echo "$as_me: error: cannot find install-sh or install.sh in $gc_basedir/.. $srcdir/$gc_basedir/.." >&2;}
2908 + { (exit 1); exit 1; }; }
2910 +ac_config_guess="$SHELL $ac_aux_dir/config.guess"
2911 +ac_config_sub="$SHELL $ac_aux_dir/config.sub"
2912 +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
2915 + # This overrides the previous occurrence for automake, but not for
2916 + # autoconf, which is exactly what we want.
2918 +for ac_dir in .. $srcdir/..; do
2919 + if test -f $ac_dir/install-sh; then
2920 + ac_aux_dir=$ac_dir
2921 + ac_install_sh="$ac_aux_dir/install-sh -c"
2923 + elif test -f $ac_dir/install.sh; then
2924 + ac_aux_dir=$ac_dir
2925 + ac_install_sh="$ac_aux_dir/install.sh -c"
2927 + elif test -f $ac_dir/shtool; then
2928 + ac_aux_dir=$ac_dir
2929 + ac_install_sh="$ac_aux_dir/shtool install -c"
2933 +if test -z "$ac_aux_dir"; then
2934 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in .. $srcdir/.." >&5
2935 +echo "$as_me: error: cannot find install-sh or install.sh in .. $srcdir/.." >&2;}
2936 + { (exit 1); exit 1; }; }
2938 +ac_config_guess="$SHELL $ac_aux_dir/config.guess"
2939 +ac_config_sub="$SHELL $ac_aux_dir/config.sub"
2940 +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
2944 +echo "$as_me:$LINENO: checking target system type" >&5
2945 +echo $ECHO_N "checking target system type... $ECHO_C" >&6
2946 +if test "${ac_cv_target+set}" = set; then
2947 + echo $ECHO_N "(cached) $ECHO_C" >&6
2949 + ac_cv_target_alias=$target_alias
2950 +test "x$ac_cv_target_alias" = "x" &&
2951 + ac_cv_target_alias=$ac_cv_host_alias
2952 +ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
2953 + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
2954 +echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
2955 + { (exit 1); exit 1; }; }
2958 +echo "$as_me:$LINENO: result: $ac_cv_target" >&5
2959 +echo "${ECHO_T}$ac_cv_target" >&6
2960 +target=$ac_cv_target
2961 +target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
2962 +target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
2963 +target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
2966 +# The aliases save the names the user supplied, while $host etc.
2967 +# will get canonicalized.
2968 +test -n "$target_alias" &&
2969 + test "$program_prefix$program_suffix$program_transform_name" = \
2971 + program_prefix=${target_alias}-
2973 +# This works around an automake problem.
2974 +mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs"
2982 +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
2983 + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
2984 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
2985 + { (exit 1); exit 1; }; }
2990 +missing_dir=`cd $ac_aux_dir && pwd`
2991 +echo "$as_me:$LINENO: checking for working aclocal" >&5
2992 +echo $ECHO_N "checking for working aclocal... $ECHO_C" >&6
2993 +# Run test in a subshell; some versions of sh will print an error if
2994 +# an executable is not found, even if stderr is redirected.
2995 +# Redirect stdin to placate older versions of autoconf. Sigh.
2996 +if (aclocal --version) < /dev/null > /dev/null 2>&1; then
2998 + echo "$as_me:$LINENO: result: found" >&5
2999 +echo "${ECHO_T}found" >&6
3001 + ACLOCAL="$missing_dir/missing aclocal"
3002 + echo "$as_me:$LINENO: result: missing" >&5
3003 +echo "${ECHO_T}missing" >&6
3006 +echo "$as_me:$LINENO: checking for working autoconf" >&5
3007 +echo $ECHO_N "checking for working autoconf... $ECHO_C" >&6
3008 +# Run test in a subshell; some versions of sh will print an error if
3009 +# an executable is not found, even if stderr is redirected.
3010 +# Redirect stdin to placate older versions of autoconf. Sigh.
3011 +if (autoconf --version) < /dev/null > /dev/null 2>&1; then
3013 + echo "$as_me:$LINENO: result: found" >&5
3014 +echo "${ECHO_T}found" >&6
3016 + AUTOCONF="$missing_dir/missing autoconf"
3017 + echo "$as_me:$LINENO: result: missing" >&5
3018 +echo "${ECHO_T}missing" >&6
3021 +echo "$as_me:$LINENO: checking for working automake" >&5
3022 +echo $ECHO_N "checking for working automake... $ECHO_C" >&6
3023 +# Run test in a subshell; some versions of sh will print an error if
3024 +# an executable is not found, even if stderr is redirected.
3025 +# Redirect stdin to placate older versions of autoconf. Sigh.
3026 +if (automake --version) < /dev/null > /dev/null 2>&1; then
3028 + echo "$as_me:$LINENO: result: found" >&5
3029 +echo "${ECHO_T}found" >&6
3031 + AUTOMAKE="$missing_dir/missing automake"
3032 + echo "$as_me:$LINENO: result: missing" >&5
3033 +echo "${ECHO_T}missing" >&6
3036 +echo "$as_me:$LINENO: checking for working autoheader" >&5
3037 +echo $ECHO_N "checking for working autoheader... $ECHO_C" >&6
3038 +# Run test in a subshell; some versions of sh will print an error if
3039 +# an executable is not found, even if stderr is redirected.
3040 +# Redirect stdin to placate older versions of autoconf. Sigh.
3041 +if (autoheader --version) < /dev/null > /dev/null 2>&1; then
3042 + AUTOHEADER=autoheader
3043 + echo "$as_me:$LINENO: result: found" >&5
3044 +echo "${ECHO_T}found" >&6
3046 + AUTOHEADER="$missing_dir/missing autoheader"
3047 + echo "$as_me:$LINENO: result: missing" >&5
3048 +echo "${ECHO_T}missing" >&6
3051 +echo "$as_me:$LINENO: checking for working makeinfo" >&5
3052 +echo $ECHO_N "checking for working makeinfo... $ECHO_C" >&6
3053 +# Run test in a subshell; some versions of sh will print an error if
3054 +# an executable is not found, even if stderr is redirected.
3055 +# Redirect stdin to placate older versions of autoconf. Sigh.
3056 +if (makeinfo --version) < /dev/null > /dev/null 2>&1; then
3058 + echo "$as_me:$LINENO: result: found" >&5
3059 +echo "${ECHO_T}found" >&6
3061 + MAKEINFO="$missing_dir/missing makeinfo"
3062 + echo "$as_me:$LINENO: result: missing" >&5
3063 +echo "${ECHO_T}missing" >&6
3068 +# FIXME: We temporarily define our own version of AC_PROG_CC. This is
3069 +# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
3070 +# are probably using a cross compiler, which will not be able to fully
3071 +# link an executable. This should really be fixed in autoconf
3077 +# Extract the first word of "gcc", so it can be a program name with args.
3078 +set dummy gcc; ac_word=$2
3079 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3080 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3081 +if test "${ac_cv_prog_CC+set}" = set; then
3082 + echo $ECHO_N "(cached) $ECHO_C" >&6
3084 + if test -n "$CC"; then
3085 + ac_cv_prog_CC="$CC" # Let the user override the test.
3087 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3088 +for as_dir in $PATH
3091 + test -z "$as_dir" && as_dir=.
3092 + for ac_exec_ext in '' $ac_executable_extensions; do
3093 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3094 + ac_cv_prog_CC="gcc"
3095 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3104 +if test -n "$CC"; then
3105 + echo "$as_me:$LINENO: result: $CC" >&5
3106 +echo "${ECHO_T}$CC" >&6
3108 + echo "$as_me:$LINENO: result: no" >&5
3109 +echo "${ECHO_T}no" >&6
3112 +if test -z "$CC"; then
3113 + # Extract the first word of "cc", so it can be a program name with args.
3114 +set dummy cc; ac_word=$2
3115 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3116 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3117 +if test "${ac_cv_prog_CC+set}" = set; then
3118 + echo $ECHO_N "(cached) $ECHO_C" >&6
3120 + if test -n "$CC"; then
3121 + ac_cv_prog_CC="$CC" # Let the user override the test.
3123 + ac_prog_rejected=no
3124 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3125 +for as_dir in $PATH
3128 + test -z "$as_dir" && as_dir=.
3129 + for ac_exec_ext in '' $ac_executable_extensions; do
3130 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3131 + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
3132 + ac_prog_rejected=yes
3135 + ac_cv_prog_CC="cc"
3136 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3142 +if test $ac_prog_rejected = yes; then
3143 + # We found a bogon in the path, so make sure we never use it.
3144 + set dummy $ac_cv_prog_CC
3146 + if test $@%:@ != 0; then
3147 + # We chose a different compiler from the bogus one.
3148 + # However, it has the same basename, so the bogon will be chosen
3149 + # first if we set CC to just the basename; use the full file name.
3151 + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
3157 +if test -n "$CC"; then
3158 + echo "$as_me:$LINENO: result: $CC" >&5
3159 +echo "${ECHO_T}$CC" >&6
3161 + echo "$as_me:$LINENO: result: no" >&5
3162 +echo "${ECHO_T}no" >&6
3165 + test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable cc found in \$PATH" >&5
3166 +echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
3167 + { (exit 1); exit 1; }; }
3172 +if test $ac_cv_c_compiler_gnu = yes; then
3174 + ac_test_CFLAGS="${CFLAGS+set}"
3175 + ac_save_CFLAGS="$CFLAGS"
3178 + if test "$ac_test_CFLAGS" = set; then
3179 + CFLAGS="$ac_save_CFLAGS"
3180 + elif test $ac_cv_prog_cc_g = yes; then
3187 + test "${CFLAGS+set}" = set || CFLAGS="-g"
3191 +# Likewise for AC_PROG_CXX.
3195 +for ac_prog in $CCC c++ g++ gcc CC cxx cc++
3197 + # Extract the first word of "$ac_prog", so it can be a program name with args.
3198 +set dummy $ac_prog; ac_word=$2
3199 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3200 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3201 +if test "${ac_cv_prog_CXX+set}" = set; then
3202 + echo $ECHO_N "(cached) $ECHO_C" >&6
3204 + if test -n "$CXX"; then
3205 + ac_cv_prog_CXX="$CXX" # Let the user override the test.
3207 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3208 +for as_dir in $PATH
3211 + test -z "$as_dir" && as_dir=.
3212 + for ac_exec_ext in '' $ac_executable_extensions; do
3213 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3214 + ac_cv_prog_CXX="$ac_prog"
3215 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3223 +CXX=$ac_cv_prog_CXX
3224 +if test -n "$CXX"; then
3225 + echo "$as_me:$LINENO: result: $CXX" >&5
3226 +echo "${ECHO_T}$CXX" >&6
3228 + echo "$as_me:$LINENO: result: no" >&5
3229 +echo "${ECHO_T}no" >&6
3232 + test -n "$CXX" && break
3234 +test -n "$CXX" || CXX="gcc"
3236 +test -z "$CXX" && { { echo "$as_me:$LINENO: error: no acceptable c++ found in \$PATH" >&5
3237 +echo "$as_me: error: no acceptable c++ found in \$PATH" >&2;}
3238 + { (exit 1); exit 1; }; }
3242 +if test $ac_cv_cxx_compiler_gnu = yes; then
3244 + ac_test_CXXFLAGS="${CXXFLAGS+set}"
3245 + ac_save_CXXFLAGS="$CXXFLAGS"
3248 + if test "$ac_test_CXXFLAGS" = set; then
3249 + CXXFLAGS="$ac_save_CXXFLAGS"
3250 + elif test $ac_cv_prog_cxx_g = yes; then
3257 + test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
3261 +# AC_CHECK_TOOL does AC_REQUIRE (AC_CANONICAL_BUILD). If we don't
3262 +# run it explicitly here, it will be run implicitly before
3263 +# NEWLIB_CONFIGURE, which doesn't work because that means that it will
3264 +# be run before AC_CANONICAL_HOST.
3267 +if test -n "$ac_tool_prefix"; then
3268 + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
3269 +set dummy ${ac_tool_prefix}as; ac_word=$2
3270 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3271 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3272 +if test "${ac_cv_prog_AS+set}" = set; then
3273 + echo $ECHO_N "(cached) $ECHO_C" >&6
3275 + if test -n "$AS"; then
3276 + ac_cv_prog_AS="$AS" # Let the user override the test.
3278 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3279 +for as_dir in $PATH
3282 + test -z "$as_dir" && as_dir=.
3283 + for ac_exec_ext in '' $ac_executable_extensions; do
3284 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3285 + ac_cv_prog_AS="${ac_tool_prefix}as"
3286 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3295 +if test -n "$AS"; then
3296 + echo "$as_me:$LINENO: result: $AS" >&5
3297 +echo "${ECHO_T}$AS" >&6
3299 + echo "$as_me:$LINENO: result: no" >&5
3300 +echo "${ECHO_T}no" >&6
3304 +if test -z "$ac_cv_prog_AS"; then
3306 + # Extract the first word of "as", so it can be a program name with args.
3307 +set dummy as; ac_word=$2
3308 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3309 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3310 +if test "${ac_cv_prog_ac_ct_AS+set}" = set; then
3311 + echo $ECHO_N "(cached) $ECHO_C" >&6
3313 + if test -n "$ac_ct_AS"; then
3314 + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
3316 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3317 +for as_dir in $PATH
3320 + test -z "$as_dir" && as_dir=.
3321 + for ac_exec_ext in '' $ac_executable_extensions; do
3322 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3323 + ac_cv_prog_ac_ct_AS="as"
3324 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3332 +ac_ct_AS=$ac_cv_prog_ac_ct_AS
3333 +if test -n "$ac_ct_AS"; then
3334 + echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
3335 +echo "${ECHO_T}$ac_ct_AS" >&6
3337 + echo "$as_me:$LINENO: result: no" >&5
3338 +echo "${ECHO_T}no" >&6
3343 + AS="$ac_cv_prog_AS"
3346 +if test -n "$ac_tool_prefix"; then
3347 + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
3348 +set dummy ${ac_tool_prefix}ar; ac_word=$2
3349 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3350 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3351 +if test "${ac_cv_prog_AR+set}" = set; then
3352 + echo $ECHO_N "(cached) $ECHO_C" >&6
3354 + if test -n "$AR"; then
3355 + ac_cv_prog_AR="$AR" # Let the user override the test.
3357 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3358 +for as_dir in $PATH
3361 + test -z "$as_dir" && as_dir=.
3362 + for ac_exec_ext in '' $ac_executable_extensions; do
3363 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3364 + ac_cv_prog_AR="${ac_tool_prefix}ar"
3365 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3374 +if test -n "$AR"; then
3375 + echo "$as_me:$LINENO: result: $AR" >&5
3376 +echo "${ECHO_T}$AR" >&6
3378 + echo "$as_me:$LINENO: result: no" >&5
3379 +echo "${ECHO_T}no" >&6
3383 +if test -z "$ac_cv_prog_AR"; then
3385 + # Extract the first word of "ar", so it can be a program name with args.
3386 +set dummy ar; ac_word=$2
3387 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3388 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3389 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
3390 + echo $ECHO_N "(cached) $ECHO_C" >&6
3392 + if test -n "$ac_ct_AR"; then
3393 + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
3395 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3396 +for as_dir in $PATH
3399 + test -z "$as_dir" && as_dir=.
3400 + for ac_exec_ext in '' $ac_executable_extensions; do
3401 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3402 + ac_cv_prog_ac_ct_AR="ar"
3403 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3411 +ac_ct_AR=$ac_cv_prog_ac_ct_AR
3412 +if test -n "$ac_ct_AR"; then
3413 + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
3414 +echo "${ECHO_T}$ac_ct_AR" >&6
3416 + echo "$as_me:$LINENO: result: no" >&5
3417 +echo "${ECHO_T}no" >&6
3422 + AR="$ac_cv_prog_AR"
3425 +if test -n "$ac_tool_prefix"; then
3426 + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
3427 +set dummy ${ac_tool_prefix}ranlib; ac_word=$2
3428 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3429 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3430 +if test "${ac_cv_prog_RANLIB+set}" = set; then
3431 + echo $ECHO_N "(cached) $ECHO_C" >&6
3433 + if test -n "$RANLIB"; then
3434 + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
3436 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3437 +for as_dir in $PATH
3440 + test -z "$as_dir" && as_dir=.
3441 + for ac_exec_ext in '' $ac_executable_extensions; do
3442 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3443 + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
3444 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3452 +RANLIB=$ac_cv_prog_RANLIB
3453 +if test -n "$RANLIB"; then
3454 + echo "$as_me:$LINENO: result: $RANLIB" >&5
3455 +echo "${ECHO_T}$RANLIB" >&6
3457 + echo "$as_me:$LINENO: result: no" >&5
3458 +echo "${ECHO_T}no" >&6
3462 +if test -z "$ac_cv_prog_RANLIB"; then
3463 + ac_ct_RANLIB=$RANLIB
3464 + # Extract the first word of "ranlib", so it can be a program name with args.
3465 +set dummy ranlib; ac_word=$2
3466 +echo "$as_me:$LINENO: checking for $ac_word" >&5
3467 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3468 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
3469 + echo $ECHO_N "(cached) $ECHO_C" >&6
3471 + if test -n "$ac_ct_RANLIB"; then
3472 + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
3474 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3475 +for as_dir in $PATH
3478 + test -z "$as_dir" && as_dir=.
3479 + for ac_exec_ext in '' $ac_executable_extensions; do
3480 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3481 + ac_cv_prog_ac_ct_RANLIB="ranlib"
3482 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3488 + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
3491 +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
3492 +if test -n "$ac_ct_RANLIB"; then
3493 + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
3494 +echo "${ECHO_T}$ac_ct_RANLIB" >&6
3496 + echo "$as_me:$LINENO: result: no" >&5
3497 +echo "${ECHO_T}no" >&6
3500 + RANLIB=$ac_ct_RANLIB
3502 + RANLIB="$ac_cv_prog_RANLIB"
3506 +# Find a good install program. We prefer a C program (faster),
3507 +# so one script is as good as another. But avoid the broken or
3508 +# incompatible versions:
3509 +# SysV /etc/install, /usr/sbin/install
3510 +# SunOS /usr/etc/install
3511 +# IRIX /sbin/install
3513 +# AmigaOS /C/install, which installs bootblocks on floppy discs
3514 +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
3515 +# AFS /usr/afsws/bin/install, which mishandles nonexistent args
3516 +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
3517 +# ./install, which can be erroneously created by make from ./install.sh.
3518 +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
3519 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
3520 +if test -z "$INSTALL"; then
3521 +if test "${ac_cv_path_install+set}" = set; then
3522 + echo $ECHO_N "(cached) $ECHO_C" >&6
3524 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3525 +for as_dir in $PATH
3528 + test -z "$as_dir" && as_dir=.
3529 + # Account for people who put trailing slashes in PATH elements.
3531 + ./ | .// | /cC/* | \
3532 + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
3535 + # OSF1 and SCO ODT 3.0 have their own names for install.
3536 + # Don't use installbsd from OSF since it installs stuff as root
3538 + for ac_prog in ginstall scoinst install; do
3539 + for ac_exec_ext in '' $ac_executable_extensions; do
3540 + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
3541 + if test $ac_prog = install &&
3542 + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
3543 + # AIX install. It has an incompatible calling convention.
3545 + elif test $ac_prog = install &&
3546 + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
3547 + # program-specific install script used by HP pwplus--don't use.
3550 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
3562 + if test "${ac_cv_path_install+set}" = set; then
3563 + INSTALL=$ac_cv_path_install
3565 + # As a last resort, use the slow shell script. We don't cache a
3566 + # path for INSTALL within a source directory, because that will
3567 + # break other packages using the cache if that directory is
3568 + # removed, or if the path is relative.
3569 + INSTALL=$ac_install_sh
3572 +echo "$as_me:$LINENO: result: $INSTALL" >&5
3573 +echo "${ECHO_T}$INSTALL" >&6
3575 +# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
3576 +# It thinks the first close brace ends the variable substitution.
3577 +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
3579 +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
3581 +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
3584 +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
3585 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
3586 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
3587 +if test "${enable_maintainer_mode+set}" = set; then
3588 + enableval="$enable_maintainer_mode"
3589 + USE_MAINTAINER_MODE=$enableval
3591 + USE_MAINTAINER_MODE=no
3593 + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
3594 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
3597 +if test $USE_MAINTAINER_MODE = yes; then
3598 + MAINTAINER_MODE_TRUE=
3599 + MAINTAINER_MODE_FALSE='#'
3601 + MAINTAINER_MODE_TRUE='#'
3602 + MAINTAINER_MODE_FALSE=
3604 + MAINT=$MAINTAINER_MODE_TRUE
3608 +# We need AC_EXEEXT to keep automake happy in cygnus mode. However,
3609 +# at least currently, we never actually build a program, so we never
3610 +# need to use $(EXEEXT). Moreover, the test for EXEEXT normally
3611 +# fails, because we are probably configuring with a cross compiler
3612 +# which can't create executables. So we include AC_EXEEXT to keep
3613 +# automake happy, but we don't execute it, since we don't care about
3616 + # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
3617 + # to nothing, so nothing would remain between `then' and `fi' if it
3618 + # were not for the `:' below.
3623 +. ${srcdir}/configure.host
3625 +case ${gc_basedir} in
3626 +/* | A-Za-z:/\\*) gc_flagbasedir=${gc_basedir} ;;
3627 +*) gc_flagbasedir='$(top_builddir)/'${gc_basedir} ;;
3630 +gc_cflags="${gc_cflags} -I"'$(top_builddir)'"/./targ-include -I${gc_flagbasedir}/libc/include"
3633 + gc_cflags="${gc_cflags} -I${gc_flagbasedir}/../winsup/include"
3638 +GC_CFLAGS=${gc_cflags}
3642 +# Check whether --enable-shared or --disable-shared was given.
3643 +if test "${enable_shared+set}" = set; then
3644 + enableval="$enable_shared"
3645 + p=${PACKAGE-default}
3647 +yes) enable_shared=yes ;;
3648 +no) enable_shared=no ;;
3651 + # Look at the argument we got. We use all the common list separators.
3652 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
3653 + for pkg in $enableval; do
3654 + if test "X$pkg" = "X$p"; then
3658 + IFS="$ac_save_ifs"
3664 +# Check whether --enable-static or --disable-static was given.
3665 +if test "${enable_static+set}" = set; then
3666 + enableval="$enable_static"
3667 + p=${PACKAGE-default}
3669 +yes) enable_static=yes ;;
3670 +no) enable_static=no ;;
3673 + # Look at the argument we got. We use all the common list separators.
3674 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
3675 + for pkg in $enableval; do
3676 + if test "X$pkg" = "X$p"; then
3680 + IFS="$ac_save_ifs"
3686 +# Check whether --enable-fast-install or --disable-fast-install was given.
3687 +if test "${enable_fast_install+set}" = set; then
3688 + enableval="$enable_fast_install"
3689 + p=${PACKAGE-default}
3691 +yes) enable_fast_install=yes ;;
3692 +no) enable_fast_install=no ;;
3694 + enable_fast_install=no
3695 + # Look at the argument we got. We use all the common list separators.
3696 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
3697 + for pkg in $enableval; do
3698 + if test "X$pkg" = "X$p"; then
3699 + enable_fast_install=yes
3702 + IFS="$ac_save_ifs"
3706 + enable_fast_install=yes
3709 +# Check whether --with-gnu-ld or --without-gnu-ld was given.
3710 +if test "${with_gnu_ld+set}" = set; then
3711 + withval="$with_gnu_ld"
3712 + test "$withval" = no || with_gnu_ld=yes
3717 +if test "$GCC" = yes; then
3718 + # Check if gcc -print-prog-name=ld gives a path.
3719 + echo "$as_me:$LINENO: checking for ld used by GCC" >&5
3720 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
3723 + # gcc leaves a trailing carriage return which upsets mingw
3724 + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
3726 + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
3729 + # Accept absolute paths.
3730 + [\\/]* | [A-Za-z]:[\\/]*)
3731 + re_direlt='/[^/][^/]*/\.\./'
3732 + # Canonicalize the path of ld
3733 + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
3734 + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
3735 + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
3737 + test -z "$LD" && LD="$ac_prog"
3740 + # If it fails, then pretend we aren't using GCC.
3744 + # If it is relative, then search for the first ld in PATH.
3745 + with_gnu_ld=unknown
3748 +elif test "$with_gnu_ld" = yes; then
3749 + echo "$as_me:$LINENO: checking for GNU ld" >&5
3750 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
3752 + echo "$as_me:$LINENO: checking for non-GNU ld" >&5
3753 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
3755 +if test "${lt_cv_path_LD+set}" = set; then
3756 + echo $ECHO_N "(cached) $ECHO_C" >&6
3758 + if test -z "$LD"; then
3759 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
3760 + for ac_dir in $PATH; do
3761 + test -z "$ac_dir" && ac_dir=.
3762 + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
3763 + lt_cv_path_LD="$ac_dir/$ac_prog"
3764 + # Check to see if the program is GNU ld. I'd rather use --version,
3765 + # but apparently some GNU ld's only accept -v.
3766 + # Break only if it was the GNU/non-GNU ld that we prefer.
3767 + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
3768 + test "$with_gnu_ld" != no && break
3770 + test "$with_gnu_ld" != yes && break
3774 + IFS="$ac_save_ifs"
3776 + lt_cv_path_LD="$LD" # Let the user override the test with a path.
3780 +LD="$lt_cv_path_LD"
3781 +if test -n "$LD"; then
3782 + echo "$as_me:$LINENO: result: $LD" >&5
3783 +echo "${ECHO_T}$LD" >&6
3785 + echo "$as_me:$LINENO: result: no" >&5
3786 +echo "${ECHO_T}no" >&6
3788 +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
3789 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
3790 + { (exit 1); exit 1; }; }
3791 +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
3792 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
3793 +if test "${lt_cv_prog_gnu_ld+set}" = set; then
3794 + echo $ECHO_N "(cached) $ECHO_C" >&6
3796 + # I'd rather use --version here, but apparently some GNU ld's only accept -v.
3797 +if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
3798 + lt_cv_prog_gnu_ld=yes
3800 + lt_cv_prog_gnu_ld=no
3803 +echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
3804 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
3805 +with_gnu_ld=$lt_cv_prog_gnu_ld
3808 +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
3809 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
3810 +if test "${lt_cv_ld_reload_flag+set}" = set; then
3811 + echo $ECHO_N "(cached) $ECHO_C" >&6
3813 + lt_cv_ld_reload_flag='-r'
3815 +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
3816 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
3817 +reload_flag=$lt_cv_ld_reload_flag
3818 +test -n "$reload_flag" && reload_flag=" $reload_flag"
3820 +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
3821 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
3822 +if test "${lt_cv_path_NM+set}" = set; then
3823 + echo $ECHO_N "(cached) $ECHO_C" >&6
3825 + if test -n "$NM"; then
3826 + # Let the user override the test.
3827 + lt_cv_path_NM="$NM"
3829 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
3830 + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
3831 + test -z "$ac_dir" && ac_dir=.
3832 + tmp_nm=$ac_dir/${ac_tool_prefix}nm
3833 + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
3834 + # Check to see if the nm accepts a BSD-compat flag.
3835 + # Adding the `sed 1q' prevents false positives on HP-UX, which says:
3836 + # nm: unknown option "B" ignored
3837 + # Tru64's nm complains that /dev/null is an invalid object file
3838 + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
3839 + lt_cv_path_NM="$tmp_nm -B"
3841 + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
3842 + lt_cv_path_NM="$tmp_nm -p"
3845 + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
3846 + continue # so that we can try to find one that supports BSD flags
3850 + IFS="$ac_save_ifs"
3851 + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
3855 +NM="$lt_cv_path_NM"
3856 +echo "$as_me:$LINENO: result: $NM" >&5
3857 +echo "${ECHO_T}$NM" >&6
3859 +echo "$as_me:$LINENO: checking whether ln -s works" >&5
3860 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
3862 +if test "$LN_S" = "ln -s"; then
3863 + echo "$as_me:$LINENO: result: yes" >&5
3864 +echo "${ECHO_T}yes" >&6
3866 + echo "$as_me:$LINENO: result: no, using $LN_S" >&5
3867 +echo "${ECHO_T}no, using $LN_S" >&6
3870 +echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
3871 +echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6
3872 +if test "${lt_cv_deplibs_check_method+set}" = set; then
3873 + echo $ECHO_N "(cached) $ECHO_C" >&6
3875 + lt_cv_file_magic_cmd='$MAGIC_CMD'
3876 +lt_cv_file_magic_test_file=
3877 +lt_cv_deplibs_check_method='unknown'
3878 +# Need to set the preceding variable on all platforms that support
3879 +# interlibrary dependencies.
3880 +# 'none' -- dependencies not supported.
3881 +# `unknown' -- same as none, but documents that we really don't know.
3882 +# 'pass_all' -- all dependencies passed with no checks.
3883 +# 'test_compile' -- check by making test program.
3884 +# 'file_magic [regex]' -- check by looking for files in library path
3885 +# which responds to the $file_magic_cmd with a given egrep regex.
3886 +# If you have `file' or equivalent on your system and you're not sure
3887 +# whether `pass_all' will *always* work, you probably want this one.
3891 + lt_cv_deplibs_check_method=pass_all
3895 + lt_cv_deplibs_check_method=pass_all
3899 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
3900 + lt_cv_file_magic_cmd='/usr/bin/file -L'
3901 + lt_cv_file_magic_test_file=/shlib/libc.so
3904 +cygwin* | mingw* |pw32*)
3905 + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
3906 + lt_cv_file_magic_cmd='$OBJDUMP -f'
3909 +darwin* | rhapsody*)
3910 + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
3911 + lt_cv_file_magic_cmd='/usr/bin/file -L'
3912 + case "$host_os" in
3913 + rhapsody* | darwin1.012)
3914 + lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System'
3916 + *) # Darwin 1.3 on
3917 + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
3923 + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
3926 + # Not sure whether the presence of OpenBSD here was a mistake.
3927 + # Let's accept both of them until this is cleared up.
3928 + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
3929 + lt_cv_file_magic_cmd=/usr/bin/file
3930 + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
3934 + lt_cv_deplibs_check_method=pass_all
3939 + lt_cv_deplibs_check_method=pass_all
3942 +hpux10.20*|hpux11*)
3945 + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
3946 + lt_cv_file_magic_cmd=/usr/bin/file
3947 + lt_cv_file_magic_test_file=/usr/lib/libc.sl
3950 + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
3951 + lt_cv_file_magic_cmd=/usr/bin/file
3952 + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
3960 + # this will be overridden with pass_all, but let us keep it just in case
3961 + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
3965 + *-32|*"-32 ") libmagic=32-bit;;
3966 + *-n32|*"-n32 ") libmagic=N32;;
3967 + *-64|*"-64 ") libmagic=64-bit;;
3968 + *) libmagic=never-match;;
3970 + # this will be overridden with pass_all, but let us keep it just in case
3971 + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"
3974 + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
3975 + lt_cv_deplibs_check_method=pass_all
3978 +# This must be Linux ELF.
3981 + alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
3982 + lt_cv_deplibs_check_method=pass_all ;;
3984 + # glibc up to 2.1.1 does not perform some relocations on ARM
3985 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
3987 + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
3991 + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
3992 + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
3994 + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'
3999 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
4000 + lt_cv_file_magic_cmd=/usr/bin/file
4001 + lt_cv_file_magic_test_file=/usr/lib/libnls.so
4004 +osf3* | osf4* | osf5*)
4005 + # this will be overridden with pass_all, but let us keep it just in case
4006 + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
4007 + lt_cv_file_magic_test_file=/shlib/libc.so
4008 + lt_cv_deplibs_check_method=pass_all
4012 + lt_cv_deplibs_check_method=pass_all
4016 + lt_cv_deplibs_check_method=pass_all
4017 + lt_cv_file_magic_test_file=/lib/libc.so
4020 +sysv5uw[78]* | sysv4*uw2*)
4021 + lt_cv_deplibs_check_method=pass_all
4024 +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
4025 + case $host_vendor in
4027 + lt_cv_deplibs_check_method=pass_all
4030 + 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]'
4031 + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
4038 +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
4039 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
4040 +file_magic_cmd=$lt_cv_file_magic_cmd
4041 +deplibs_check_method=$lt_cv_deplibs_check_method
4046 +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
4048 +# Only perform the check for file, if the check method requires it
4049 +case $deplibs_check_method in
4051 + if test "$file_magic_cmd" = '$MAGIC_CMD'; then
4052 + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
4053 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
4054 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
4055 + echo $ECHO_N "(cached) $ECHO_C" >&6
4057 + case $MAGIC_CMD in
4059 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
4062 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
4065 + ac_save_MAGIC_CMD="$MAGIC_CMD"
4066 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
4067 + ac_dummy="/usr/bin:$PATH"
4068 + for ac_dir in $ac_dummy; do
4069 + test -z "$ac_dir" && ac_dir=.
4070 + if test -f $ac_dir/${ac_tool_prefix}file; then
4071 + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
4072 + if test -n "$file_magic_test_file"; then
4073 + case $deplibs_check_method in
4075 + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
4076 + MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
4077 + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
4078 + egrep "$file_magic_regex" > /dev/null; then
4083 +*** Warning: the command libtool uses to detect shared libraries,
4084 +*** $file_magic_cmd, produces output that libtool cannot recognize.
4085 +*** The result is that libtool may fail to recognize shared libraries
4086 +*** as such. This will affect the creation of libtool libraries that
4087 +*** depend on shared libraries, but programs linked with such libtool
4088 +*** libraries will work regardless of this problem. Nevertheless, you
4089 +*** may want to report the problem to your system manager and/or to
4090 +*** bug-libtool@gnu.org
4099 + IFS="$ac_save_ifs"
4100 + MAGIC_CMD="$ac_save_MAGIC_CMD"
4105 +MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
4106 +if test -n "$MAGIC_CMD"; then
4107 + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
4108 +echo "${ECHO_T}$MAGIC_CMD" >&6
4110 + echo "$as_me:$LINENO: result: no" >&5
4111 +echo "${ECHO_T}no" >&6
4114 +if test -z "$lt_cv_path_MAGIC_CMD"; then
4115 + if test -n "$ac_tool_prefix"; then
4116 + echo "$as_me:$LINENO: checking for file" >&5
4117 +echo $ECHO_N "checking for file... $ECHO_C" >&6
4118 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
4119 + echo $ECHO_N "(cached) $ECHO_C" >&6
4121 + case $MAGIC_CMD in
4123 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
4126 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
4129 + ac_save_MAGIC_CMD="$MAGIC_CMD"
4130 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
4131 + ac_dummy="/usr/bin:$PATH"
4132 + for ac_dir in $ac_dummy; do
4133 + test -z "$ac_dir" && ac_dir=.
4134 + if test -f $ac_dir/file; then
4135 + lt_cv_path_MAGIC_CMD="$ac_dir/file"
4136 + if test -n "$file_magic_test_file"; then
4137 + case $deplibs_check_method in
4139 + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
4140 + MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
4141 + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
4142 + egrep "$file_magic_regex" > /dev/null; then
4147 +*** Warning: the command libtool uses to detect shared libraries,
4148 +*** $file_magic_cmd, produces output that libtool cannot recognize.
4149 +*** The result is that libtool may fail to recognize shared libraries
4150 +*** as such. This will affect the creation of libtool libraries that
4151 +*** depend on shared libraries, but programs linked with such libtool
4152 +*** libraries will work regardless of this problem. Nevertheless, you
4153 +*** may want to report the problem to your system manager and/or to
4154 +*** bug-libtool@gnu.org
4163 + IFS="$ac_save_ifs"
4164 + MAGIC_CMD="$ac_save_MAGIC_CMD"
4169 +MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
4170 +if test -n "$MAGIC_CMD"; then
4171 + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
4172 +echo "${ECHO_T}$MAGIC_CMD" >&6
4174 + echo "$as_me:$LINENO: result: no" >&5
4175 +echo "${ECHO_T}no" >&6
4187 +if test -n "$ac_tool_prefix"; then
4188 + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
4189 +set dummy ${ac_tool_prefix}ranlib; ac_word=$2
4190 +echo "$as_me:$LINENO: checking for $ac_word" >&5
4191 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4192 +if test "${ac_cv_prog_RANLIB+set}" = set; then
4193 + echo $ECHO_N "(cached) $ECHO_C" >&6
4195 + if test -n "$RANLIB"; then
4196 + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
4198 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4199 +for as_dir in $PATH
4202 + test -z "$as_dir" && as_dir=.
4203 + for ac_exec_ext in '' $ac_executable_extensions; do
4204 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4205 + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
4206 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4214 +RANLIB=$ac_cv_prog_RANLIB
4215 +if test -n "$RANLIB"; then
4216 + echo "$as_me:$LINENO: result: $RANLIB" >&5
4217 +echo "${ECHO_T}$RANLIB" >&6
4219 + echo "$as_me:$LINENO: result: no" >&5
4220 +echo "${ECHO_T}no" >&6
4224 +if test -z "$ac_cv_prog_RANLIB"; then
4225 + ac_ct_RANLIB=$RANLIB
4226 + # Extract the first word of "ranlib", so it can be a program name with args.
4227 +set dummy ranlib; ac_word=$2
4228 +echo "$as_me:$LINENO: checking for $ac_word" >&5
4229 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4230 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
4231 + echo $ECHO_N "(cached) $ECHO_C" >&6
4233 + if test -n "$ac_ct_RANLIB"; then
4234 + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
4236 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4237 +for as_dir in $PATH
4240 + test -z "$as_dir" && as_dir=.
4241 + for ac_exec_ext in '' $ac_executable_extensions; do
4242 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4243 + ac_cv_prog_ac_ct_RANLIB="ranlib"
4244 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4250 + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
4253 +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
4254 +if test -n "$ac_ct_RANLIB"; then
4255 + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
4256 +echo "${ECHO_T}$ac_ct_RANLIB" >&6
4258 + echo "$as_me:$LINENO: result: no" >&5
4259 +echo "${ECHO_T}no" >&6
4262 + RANLIB=$ac_ct_RANLIB
4264 + RANLIB="$ac_cv_prog_RANLIB"
4267 +if test -n "$ac_tool_prefix"; then
4268 + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
4269 +set dummy ${ac_tool_prefix}strip; ac_word=$2
4270 +echo "$as_me:$LINENO: checking for $ac_word" >&5
4271 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4272 +if test "${ac_cv_prog_STRIP+set}" = set; then
4273 + echo $ECHO_N "(cached) $ECHO_C" >&6
4275 + if test -n "$STRIP"; then
4276 + ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
4278 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4279 +for as_dir in $PATH
4282 + test -z "$as_dir" && as_dir=.
4283 + for ac_exec_ext in '' $ac_executable_extensions; do
4284 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4285 + ac_cv_prog_STRIP="${ac_tool_prefix}strip"
4286 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4294 +STRIP=$ac_cv_prog_STRIP
4295 +if test -n "$STRIP"; then
4296 + echo "$as_me:$LINENO: result: $STRIP" >&5
4297 +echo "${ECHO_T}$STRIP" >&6
4299 + echo "$as_me:$LINENO: result: no" >&5
4300 +echo "${ECHO_T}no" >&6
4304 +if test -z "$ac_cv_prog_STRIP"; then
4305 + ac_ct_STRIP=$STRIP
4306 + # Extract the first word of "strip", so it can be a program name with args.
4307 +set dummy strip; ac_word=$2
4308 +echo "$as_me:$LINENO: checking for $ac_word" >&5
4309 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4310 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
4311 + echo $ECHO_N "(cached) $ECHO_C" >&6
4313 + if test -n "$ac_ct_STRIP"; then
4314 + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
4316 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4317 +for as_dir in $PATH
4320 + test -z "$as_dir" && as_dir=.
4321 + for ac_exec_ext in '' $ac_executable_extensions; do
4322 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4323 + ac_cv_prog_ac_ct_STRIP="strip"
4324 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4330 + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
4333 +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
4334 +if test -n "$ac_ct_STRIP"; then
4335 + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
4336 +echo "${ECHO_T}$ac_ct_STRIP" >&6
4338 + echo "$as_me:$LINENO: result: no" >&5
4339 +echo "${ECHO_T}no" >&6
4342 + STRIP=$ac_ct_STRIP
4344 + STRIP="$ac_cv_prog_STRIP"
4348 +# Check for any special flags to pass to ltconfig.
4349 +libtool_flags="--cache-file=$cache_file"
4350 +test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
4351 +test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
4352 +test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
4353 +test "$GCC" = yes && libtool_flags="$libtool_flags --with-gcc"
4354 +test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
4357 +# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
4358 +if test "${enable_libtool_lock+set}" = set; then
4359 + enableval="$enable_libtool_lock"
4362 +test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
4363 +test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
4366 +# Check whether --with-pic or --without-pic was given.
4367 +if test "${with_pic+set}" = set; then
4368 + withval="$with_pic"
4369 + pic_mode="$withval"
4373 +test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic"
4374 +test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
4376 +# Some flags need to be propagated to the compiler or linker for good
4380 + # Find out which ABI we are using.
4381 + echo '#line __oline__ "configure"' > conftest.$ac_ext
4382 + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
4383 + (eval $ac_compile) 2>&5
4385 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4386 + (exit $ac_status); }; then
4387 + case `/usr/bin/file conftest.$ac_objext` in
4392 + LD="${LD-ld} -n32"
4403 + # Find out which ABI we are using.
4404 + echo 'int i;' > conftest.$ac_ext
4405 + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
4406 + (eval $ac_compile) 2>&5
4408 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4409 + (exit $ac_status); }; then
4410 + case "`/usr/bin/file conftest.o`" in
4412 + HPUX_IA64_MODE="32"
4415 + HPUX_IA64_MODE="64"
4422 +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
4423 + # Find out which ABI we are using.
4424 + echo 'int i;' > conftest.$ac_ext
4425 + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
4426 + (eval $ac_compile) 2>&5
4428 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4429 + (exit $ac_status); }; then
4430 + case "`/usr/bin/file conftest.o`" in
4434 + LD="${LD-ld} -m elf_i386"
4437 + LD="${LD-ld} -m elf32ppclinux"
4440 + LD="${LD-ld} -m elf_s390"
4443 + LD="${LD-ld} -m elf32_sparc"
4450 + LD="${LD-ld} -m elf_x86_64"
4452 + ppc*-*linux*|powerpc*-*linux*)
4453 + LD="${LD-ld} -m elf64ppc"
4456 + LD="${LD-ld} -m elf64_s390"
4459 + LD="${LD-ld} -m elf64_sparc"
4469 + # On SCO OpenServer 5, we need -belf to get full-featured binaries.
4470 + SAVE_CFLAGS="$CFLAGS"
4471 + CFLAGS="$CFLAGS -belf"
4472 + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
4473 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
4474 +if test "${lt_cv_cc_needs_belf+set}" = set; then
4475 + echo $ECHO_N "(cached) $ECHO_C" >&6
4480 +ac_cpp='$CPP $CPPFLAGS'
4481 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4482 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4483 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
4485 + cat >conftest.$ac_ext <<_ACEOF
4486 +#line $LINENO "configure"
4489 +cat confdefs.h >>conftest.$ac_ext
4490 +cat >>conftest.$ac_ext <<_ACEOF
4491 +/* end confdefs.h. */
4501 +rm -f conftest.$ac_objext conftest$ac_exeext
4502 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
4503 + (eval $ac_link) 2>&5
4505 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4506 + (exit $ac_status); } &&
4507 + { ac_try='test -s conftest$ac_exeext'
4508 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
4509 + (eval $ac_try) 2>&5
4511 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4512 + (exit $ac_status); }; }; then
4513 + lt_cv_cc_needs_belf=yes
4515 + echo "$as_me: failed program was:" >&5
4516 +sed 's/^/| /' conftest.$ac_ext >&5
4518 +lt_cv_cc_needs_belf=no
4520 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
4522 +ac_cpp='$CPP $CPPFLAGS'
4523 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4524 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4525 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
4528 +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
4529 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
4530 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then
4531 + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
4532 + CFLAGS="$SAVE_CFLAGS"
4540 +# Save cache, so that ltconfig can load it
4541 +cat >confcache <<\_ACEOF
4542 +# This file is a shell script that caches the results of configure
4543 +# tests run on this system so they can be shared between configure
4544 +# scripts and configure runs, see configure's option --config-cache.
4545 +# It is not useful on other systems. If it contains results you don't
4546 +# want to keep, you may remove or edit it.
4548 +# config.status only pays attention to the cache file if you give it
4549 +# the --recheck option to rerun configure.
4551 +# `ac_cv_env_foo' variables (set or unset) will be overridden when
4552 +# loading this file, other *unset* `ac_cv_foo' will be assigned the
4553 +# following values.
4557 +# The following way of writing the cache mishandles newlines in values,
4558 +# but we know of no workaround that is simple, portable, and efficient.
4559 +# So, don't put newlines in cache variables' values.
4560 +# Ultrix sh set writes to stderr and can't be redirected directly,
4561 +# and sets the high bit in the cache file unless we assign to the vars.
4564 + case `(ac_space=' '; set | grep ac_space) 2>&1` in
4566 + # `set' does not quote correctly, so add quotes (double-quote
4567 + # substitution turns \\\\ into \\, and sed turns \\ into \).
4570 + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
4573 + # `set' quotes correctly as required by POSIX, so do not add quotes.
4575 + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
4582 + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
4584 + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
4585 + : end' >>confcache
4586 +if diff $cache_file confcache >/dev/null 2>&1; then :; else
4587 + if test -w $cache_file; then
4588 + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
4589 + cat confcache >$cache_file
4591 + echo "not updating unwritable cache $cache_file"
4596 +# Actually configure libtool. ac_aux_dir is where install-sh is found.
4597 +AR="$AR" LTCC="$CC" CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
4598 +MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
4599 +LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \
4600 +AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \
4601 +objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \
4602 +deplibs_check_method="$deplibs_check_method" file_magic_cmd="$file_magic_cmd" \
4603 +${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
4604 +$libtool_flags --no-verify --build="$build" $ac_aux_dir/ltmain.sh $host \
4605 +|| { { echo "$as_me:$LINENO: error: libtool configure failed" >&5
4606 +echo "$as_me: error: libtool configure failed" >&2;}
4607 + { (exit 1); exit 1; }; }
4609 +# Reload cache, that may have been modified by ltconfig
4610 +if test -r "$cache_file"; then
4611 + # Some versions of bash will fail to source /dev/null (special
4612 + # files actually), so we avoid doing that.
4613 + if test -f "$cache_file"; then
4614 + { echo "$as_me:$LINENO: loading cache $cache_file" >&5
4615 +echo "$as_me: loading cache $cache_file" >&6;}
4616 + case $cache_file in
4617 + [\\/]* | ?:[\\/]* ) . $cache_file;;
4618 + *) . ./$cache_file;;
4622 + { echo "$as_me:$LINENO: creating cache $cache_file" >&5
4623 +echo "$as_me: creating cache $cache_file" >&6;}
4628 +# This can be used to rebuild libtool when needed
4629 +LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh $ac_aux_dir/ltcf-c.sh"
4631 +# Always use our own libtool.
4632 +LIBTOOL='$(SHELL) $(top_builddir)/libtool'
4634 +# Redirect the config.log output again, so that the ltconfig log is not
4635 +# clobbered by the next message.
4636 +exec 5>>./config.log
4639 +ac_cpp='$CXXCPP $CPPFLAGS'
4640 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4641 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4642 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
4643 +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
4644 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
4645 +if test -z "$CXXCPP"; then
4646 + if test "${ac_cv_prog_CXXCPP+set}" = set; then
4647 + echo $ECHO_N "(cached) $ECHO_C" >&6
4649 + # Double quotes because CXXCPP needs to be expanded
4650 + for CXXCPP in "$CXX -E" "/lib/cpp"
4652 + ac_preproc_ok=false
4653 +for ac_cxx_preproc_warn_flag in '' yes
4655 + # Use a header file that comes with gcc, so configuring glibc
4656 + # with a fresh cross-compiler works.
4657 + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
4658 + # <limits.h> exists even on freestanding compilers.
4659 + # On the NeXT, cc -E runs the code through the compiler's parser,
4660 + # not just through cpp. "Syntax error" is here to catch this case.
4661 + cat >conftest.$ac_ext <<_ACEOF
4662 +#line $LINENO "configure"
4665 +cat confdefs.h >>conftest.$ac_ext
4666 +cat >>conftest.$ac_ext <<_ACEOF
4667 +/* end confdefs.h. */
4669 +@%:@ include <limits.h>
4671 +@%:@ include <assert.h>
4675 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
4676 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
4678 + grep -v '^ *+' conftest.er1 >conftest.err
4679 + rm -f conftest.er1
4680 + cat conftest.err >&5
4681 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4682 + (exit $ac_status); } >/dev/null; then
4683 + if test -s conftest.err; then
4684 + ac_cpp_err=$ac_cxx_preproc_warn_flag
4691 +if test -z "$ac_cpp_err"; then
4694 + echo "$as_me: failed program was:" >&5
4695 +sed 's/^/| /' conftest.$ac_ext >&5
4697 + # Broken: fails on valid input.
4700 +rm -f conftest.err conftest.$ac_ext
4702 + # OK, works on sane cases. Now check whether non-existent headers
4703 + # can be detected and how.
4704 + cat >conftest.$ac_ext <<_ACEOF
4705 +#line $LINENO "configure"
4708 +cat confdefs.h >>conftest.$ac_ext
4709 +cat >>conftest.$ac_ext <<_ACEOF
4710 +/* end confdefs.h. */
4711 +@%:@include <ac_nonexistent.h>
4713 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
4714 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
4716 + grep -v '^ *+' conftest.er1 >conftest.err
4717 + rm -f conftest.er1
4718 + cat conftest.err >&5
4719 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4720 + (exit $ac_status); } >/dev/null; then
4721 + if test -s conftest.err; then
4722 + ac_cpp_err=$ac_cxx_preproc_warn_flag
4729 +if test -z "$ac_cpp_err"; then
4730 + # Broken: success on invalid input.
4733 + echo "$as_me: failed program was:" >&5
4734 +sed 's/^/| /' conftest.$ac_ext >&5
4736 + # Passes both tests.
4740 +rm -f conftest.err conftest.$ac_ext
4743 +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
4744 +rm -f conftest.err conftest.$ac_ext
4745 +if $ac_preproc_ok; then
4750 + ac_cv_prog_CXXCPP=$CXXCPP
4753 + CXXCPP=$ac_cv_prog_CXXCPP
4755 + ac_cv_prog_CXXCPP=$CXXCPP
4757 +echo "$as_me:$LINENO: result: $CXXCPP" >&5
4758 +echo "${ECHO_T}$CXXCPP" >&6
4759 +ac_preproc_ok=false
4760 +for ac_cxx_preproc_warn_flag in '' yes
4762 + # Use a header file that comes with gcc, so configuring glibc
4763 + # with a fresh cross-compiler works.
4764 + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
4765 + # <limits.h> exists even on freestanding compilers.
4766 + # On the NeXT, cc -E runs the code through the compiler's parser,
4767 + # not just through cpp. "Syntax error" is here to catch this case.
4768 + cat >conftest.$ac_ext <<_ACEOF
4769 +#line $LINENO "configure"
4772 +cat confdefs.h >>conftest.$ac_ext
4773 +cat >>conftest.$ac_ext <<_ACEOF
4774 +/* end confdefs.h. */
4776 +@%:@ include <limits.h>
4778 +@%:@ include <assert.h>
4782 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
4783 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
4785 + grep -v '^ *+' conftest.er1 >conftest.err
4786 + rm -f conftest.er1
4787 + cat conftest.err >&5
4788 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4789 + (exit $ac_status); } >/dev/null; then
4790 + if test -s conftest.err; then
4791 + ac_cpp_err=$ac_cxx_preproc_warn_flag
4798 +if test -z "$ac_cpp_err"; then
4801 + echo "$as_me: failed program was:" >&5
4802 +sed 's/^/| /' conftest.$ac_ext >&5
4804 + # Broken: fails on valid input.
4807 +rm -f conftest.err conftest.$ac_ext
4809 + # OK, works on sane cases. Now check whether non-existent headers
4810 + # can be detected and how.
4811 + cat >conftest.$ac_ext <<_ACEOF
4812 +#line $LINENO "configure"
4815 +cat confdefs.h >>conftest.$ac_ext
4816 +cat >>conftest.$ac_ext <<_ACEOF
4817 +/* end confdefs.h. */
4818 +@%:@include <ac_nonexistent.h>
4820 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
4821 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
4823 + grep -v '^ *+' conftest.er1 >conftest.err
4824 + rm -f conftest.er1
4825 + cat conftest.err >&5
4826 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
4827 + (exit $ac_status); } >/dev/null; then
4828 + if test -s conftest.err; then
4829 + ac_cpp_err=$ac_cxx_preproc_warn_flag
4836 +if test -z "$ac_cpp_err"; then
4837 + # Broken: success on invalid input.
4840 + echo "$as_me: failed program was:" >&5
4841 +sed 's/^/| /' conftest.$ac_ext >&5
4843 + # Passes both tests.
4847 +rm -f conftest.err conftest.$ac_ext
4850 +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
4851 +rm -f conftest.err conftest.$ac_ext
4852 +if $ac_preproc_ok; then
4855 + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
4856 +See \`config.log' for more details." >&5
4857 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
4858 +See \`config.log' for more details." >&2;}
4859 + { (exit 1); exit 1; }; }
4863 +ac_cpp='$CPP $CPPFLAGS'
4864 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4865 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4866 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
4870 +LIBTOOL_DEPS=$LIBTOOL_DEPS" $ac_aux_dir/ltcf-cxx.sh"
4872 +lt_save_CFLAGS="$CFLAGS"
4873 +AR="$AR" LTCC="$CC" CC="$CXX" CXX="$CXX" CFLAGS="$CXXFLAGS" CPPFLAGS="$CPPFLAGS" \
4874 +MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
4875 +LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \
4876 +AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \
4877 +objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \
4878 +deplibs_check_method="$deplibs_check_method" \
4879 +file_magic_cmd="$file_magic_cmd" \
4880 +${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig -o libtool $libtool_flags \
4881 +--build="$build" --add-tag=CXX $ac_aux_dir/ltcf-cxx.sh $host \
4882 +|| { { echo "$as_me:$LINENO: error: libtool tag configuration failed" >&5
4883 +echo "$as_me: error: libtool tag configuration failed" >&2;}
4884 + { (exit 1); exit 1; }; }
4886 +CFLAGS="$lt_save_CFLAGS"
4888 +# Redirect the config.log output again, so that the ltconfig log is not
4889 +# clobbered by the next message.
4890 +exec 5>>./config.log
4899 +# Check whether --with-target-subdir or --without-target-subdir was given.
4900 +if test "${with_target_subdir+set}" = set; then
4901 + withval="$with_target_subdir"
4905 +# Check whether --with-cross-host or --without-cross-host was given.
4906 +if test "${with_cross_host+set}" = set; then
4907 + withval="$with_cross_host"
4911 +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
4912 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
4913 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
4914 +if test "${enable_maintainer_mode+set}" = set; then
4915 + enableval="$enable_maintainer_mode"
4916 + USE_MAINTAINER_MODE=$enableval
4918 + USE_MAINTAINER_MODE=no
4920 + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
4921 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
4924 +if test $USE_MAINTAINER_MODE = yes; then
4925 + MAINTAINER_MODE_TRUE=
4926 + MAINTAINER_MODE_FALSE='#'
4928 + MAINTAINER_MODE_TRUE='#'
4929 + MAINTAINER_MODE_FALSE=
4931 + MAINT=$MAINTAINER_MODE_TRUE
4934 +# automake wants to see AC_EXEEXT. But we don't need it. And having
4935 +# it is actually a problem, because the compiler we're passed can't
4936 +# necessarily do a full link. So we fool automake here.
4938 + # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
4939 + # to nothing, so nothing would remain between `then' and `fi' if it
4940 + # were not for the `:' below.
4945 +echo "$as_me:$LINENO: checking for thread model used by GCC" >&5
4946 +echo $ECHO_N "checking for thread model used by GCC... $ECHO_C" >&6
4947 +THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
4948 +if test -z "$THREADS"; then
4951 +echo "$as_me:$LINENO: result: $THREADS" >&5
4952 +echo "${ECHO_T}$THREADS" >&6
4954 +# Check whether --enable-parallel-mark or --disable-parallel-mark was given.
4955 +if test "${enable_parallel_mark+set}" = set; then
4956 + enableval="$enable_parallel_mark"
4957 + case "$THREADS" in
4958 + no | none | single)
4959 + { { echo "$as_me:$LINENO: error: Parallel mark requires --enable-threads=x spec" >&5
4960 +echo "$as_me: error: Parallel mark requires --enable-threads=x spec" >&2;}
4961 + { (exit 1); exit 1; }; }
4967 +INCLUDES=-I${srcdir}/include
4970 + no | none | single)
4975 + THREADLIBS=-lpthread
4977 + x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
4978 + cat >>confdefs.h <<\_ACEOF
4979 +@%:@define GC_LINUX_THREADS 1
4982 + cat >>confdefs.h <<\_ACEOF
4983 +@%:@define _REENTRANT 1
4986 + if test "${enable_parallel_mark}"; then
4987 + cat >>confdefs.h <<\_ACEOF
4988 +@%:@define PARALLEL_MARK 1
4992 + cat >>confdefs.h <<\_ACEOF
4993 +@%:@define THREAD_LOCAL_ALLOC 1
4998 + cat >>confdefs.h <<\_ACEOF
4999 +@%:@define GC_LINUX_THREADS 1
5002 + cat >>confdefs.h <<\_ACEOF
5003 +@%:@define _REENTRANT 1
5008 + { echo "$as_me:$LINENO: WARNING: \"Only HP/UX 11 threads are supported.\"" >&5
5009 +echo "$as_me: WARNING: \"Only HP/UX 11 threads are supported.\"" >&2;}
5010 + cat >>confdefs.h <<\_ACEOF
5011 +@%:@define GC_HPUX_THREADS 1
5014 + cat >>confdefs.h <<\_ACEOF
5015 +@%:@define _POSIX_C_SOURCE 199506L
5018 + if test "${enable_parallel_mark}" = yes; then
5019 + cat >>confdefs.h <<\_ACEOF
5020 +@%:@define PARALLEL_MARK 1
5024 + cat >>confdefs.h <<\_ACEOF
5025 +@%:@define THREAD_LOCAL_ALLOC 1
5028 + THREADLIBS="-lpthread -lrt"
5031 + { echo "$as_me:$LINENO: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&5
5032 +echo "$as_me: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&2;}
5033 + cat >>confdefs.h <<\_ACEOF
5034 +@%:@define GC_FREEBSD_THREADS 1
5037 + INCLUDES="$INCLUDES -pthread"
5038 + THREADLIBS=-pthread
5041 + cat >>confdefs.h <<\_ACEOF
5042 +@%:@define GC_SOLARIS_THREADS 1
5045 + cat >>confdefs.h <<\_ACEOF
5046 +@%:@define GC_SOLARIS_PTHREADS 1
5051 + cat >>confdefs.h <<\_ACEOF
5052 +@%:@define GC_IRIX_THREADS 1
5062 + cat >>confdefs.h <<\_ACEOF
5063 +@%:@define GC_DARWIN_THREADS 1
5066 + cat >>confdefs.h <<\_ACEOF
5067 +@%:@define THREAD_LOCAL_ALLOC 1
5070 + if test "${enable_parallel_mark}" = yes; then
5071 + cat >>confdefs.h <<\_ACEOF
5072 +@%:@define PARALLEL_MARK 1
5078 + cat >>confdefs.h <<\_ACEOF
5079 +@%:@define GC_WIN32_THREADS 1
5082 + cat >>confdefs.h <<\_ACEOF
5083 +@%:@define NO_GETENV 1
5087 + decosf1 | irix | mach | os2 | solaris | dce | vxworks)
5088 + { { echo "$as_me:$LINENO: error: thread package $THREADS not yet supported" >&5
5089 +echo "$as_me: error: thread package $THREADS not yet supported" >&2;}
5090 + { (exit 1); exit 1; }; }
5093 + { { echo "$as_me:$LINENO: error: $THREADS is an unknown thread package" >&5
5094 +echo "$as_me: error: $THREADS is an unknown thread package" >&2;}
5095 + { (exit 1); exit 1; }; }
5101 + powerpc-*-darwin*)
5102 + powerpc_darwin=true
5107 +if test x$powerpc_darwin = xtrue; then
5108 + POWERPC_DARWIN_TRUE=
5109 + POWERPC_DARWIN_FALSE='#'
5111 + POWERPC_DARWIN_TRUE='#'
5112 + POWERPC_DARWIN_FALSE=
5115 +# We never want libdl on darwin. It is a fake libdl that just ends up making
5116 +# dyld calls anyway
5120 + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
5121 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
5122 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then
5123 + echo $ECHO_N "(cached) $ECHO_C" >&6
5125 + ac_check_lib_save_LIBS=$LIBS
5127 +cat >conftest.$ac_ext <<_ACEOF
5128 +#line $LINENO "configure"
5131 +cat confdefs.h >>conftest.$ac_ext
5132 +cat >>conftest.$ac_ext <<_ACEOF
5133 +/* end confdefs.h. */
5135 +/* Override any gcc2 internal prototype to avoid an error. */
5139 +/* We use char because int might match the return type of a gcc2
5140 + builtin and then its argument prototype would still apply. */
5150 +rm -f conftest.$ac_objext conftest$ac_exeext
5151 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
5152 + (eval $ac_link) 2>&5
5154 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
5155 + (exit $ac_status); } &&
5156 + { ac_try='test -s conftest$ac_exeext'
5157 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5158 + (eval $ac_try) 2>&5
5160 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
5161 + (exit $ac_status); }; }; then
5162 + ac_cv_lib_dl_dlopen=yes
5164 + echo "$as_me: failed program was:" >&5
5165 +sed 's/^/| /' conftest.$ac_ext >&5
5167 +ac_cv_lib_dl_dlopen=no
5169 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
5170 +LIBS=$ac_check_lib_save_LIBS
5172 +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
5173 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
5174 +if test $ac_cv_lib_dl_dlopen = yes; then
5175 + EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl"
5183 +target_all=libgcjgc.la
5189 +# Check whether --with-ecos or --without-ecos was given.
5190 +if test "${with_ecos+set}" = set; then
5191 + withval="$with_ecos"
5192 + TARGET_ECOS="$with_ecos"
5198 +case "$TARGET_ECOS" in
5202 + cat >>confdefs.h <<\_ACEOF
5206 + CXXINCLUDES="-I${TARGET_ECOS}/include"
5207 + addobjs="$addobjs ecos.lo"
5217 + alpha*-*-openbsd*)
5218 + machdep="alpha_mach_dep.lo"
5219 + if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then
5220 + { echo "$as_me:$LINENO: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&5
5221 +echo "$as_me: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&2;}
5222 + # Check whether --enable-shared or --disable-shared was given.
5223 +if test "${enable_shared+set}" = set; then
5224 + enableval="$enable_shared"
5225 + p=${PACKAGE-default}
5227 +yes) enable_shared=yes ;;
5228 +no) enable_shared=no ;;
5231 + # Look at the argument we got. We use all the common list separators.
5232 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
5233 + for pkg in $enableval; do
5234 + if test "X$pkg" = "X$p"; then
5238 + IFS="$ac_save_ifs"
5247 + machdep="alpha_mach_dep.lo"
5249 + i?86-*-solaris2.[89]*)
5250 + cat >>confdefs.h <<\_ACEOF
5251 +@%:@define SOLARIS25_PROC_VDB_BUG_FIXED 1
5256 + machdep="mips_ultrix_mach_dep.lo"
5257 + cat >>confdefs.h <<\_ACEOF
5258 +@%:@define STACKBASE __stackbase
5261 + cat >>confdefs.h <<\_ACEOF
5262 +@%:@define DATASTART_IS_ETEXT 1
5267 + machdep="mips_ultrix_mach-dep.lo"
5272 + machdep="mips_sgi_mach_dep.lo"
5273 + cat >>confdefs.h <<\_ACEOF
5274 +@%:@define NO_EXECUTE_PERMISSION 1
5278 + sparc-sun-solaris2.3*)
5279 + machdep="sparc_mach_dep.lo"
5280 + cat >>confdefs.h <<\_ACEOF
5281 +@%:@define SUNOS53_SHARED_LIB 1
5285 + sparc-sun-solaris2.*)
5286 + machdep="sparc_mach_dep.lo"
5289 + machdep="mach_dep.lo ia64_save_regs_in_stack.lo"
5292 +if test x"$machdep" = x; then
5293 + machdep="mach_dep.lo"
5295 +addobjs="$addobjs $machdep"
5299 + sparc-sun-solaris2*)
5300 + if test "$GCC" = yes; then
5302 + for i in $CFLAGS; do
5307 + new_CFLAGS="$new_CFLAGS $i"
5311 + CFLAGS="$new_CFLAGS"
5316 +MY_CFLAGS="$CFLAGS"
5319 +cat >>confdefs.h <<\_ACEOF
5320 +@%:@define SILENT 1
5323 +cat >>confdefs.h <<\_ACEOF
5324 +@%:@define NO_SIGNALS 1
5327 +cat >>confdefs.h <<\_ACEOF
5328 +@%:@define NO_EXECUTE_PERMISSION 1
5331 +cat >>confdefs.h <<\_ACEOF
5332 +@%:@define ALL_INTERIOR_POINTERS 1
5336 +cat >>confdefs.h <<\_ACEOF
5337 +@%:@define JAVA_FINALIZATION 1
5340 +cat >>confdefs.h <<\_ACEOF
5341 +@%:@define GC_GCJ_SUPPORT 1
5344 +cat >>confdefs.h <<\_ACEOF
5345 +@%:@define ATOMIC_UNCOLLECTABLE 1
5349 +if test -n "${with_cross_host}"; then
5350 + cat >>confdefs.h <<\_ACEOF
5351 +@%:@define NO_SIGSET 1
5354 + cat >>confdefs.h <<\_ACEOF
5355 +@%:@define NO_DEBUGGING 1
5360 +# Check whether --enable-full-debug or --disable-full-debug was given.
5361 +if test "${enable_full_debug+set}" = set; then
5362 + enableval="$enable_full_debug"
5363 + if test "$enable_full_debug" = "yes"; then
5364 + { echo "$as_me:$LINENO: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&5
5365 +echo "$as_me: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&2;}
5366 + cat >>confdefs.h <<\_ACEOF
5367 +@%:@define KEEP_BACK_PTRS 1
5370 + cat >>confdefs.h <<\_ACEOF
5371 +@%:@define DBG_HDRS_ALL 1
5376 + cat >>confdefs.h <<\_ACEOF
5377 +@%:@define MAKE_BACK_GRAPH 1
5381 + x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
5382 + cat >>confdefs.h <<\_ACEOF
5383 +@%:@define MAKE_BACK_GRAPH 1
5386 + { echo "$as_me:$LINENO: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&5
5387 +echo "$as_me: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&2;}
5388 + cat >>confdefs.h <<\_ACEOF
5389 +@%:@define SAVE_CALL_COUNT 8
5399 +if test -z "$with_cross_host"; then
5401 + USE_LIBDIR_FALSE='#'
5403 + USE_LIBDIR_TRUE='#'
5407 +if test "${multilib}" = "yes"; then
5408 + multilib_arg="--enable-multilib"
5413 + ac_config_files="$ac_config_files Makefile include/Makefile"
5414 + ac_config_commands="$ac_config_commands default"
5415 +cat >confcache <<\_ACEOF
5416 +# This file is a shell script that caches the results of configure
5417 +# tests run on this system so they can be shared between configure
5418 +# scripts and configure runs, see configure's option --config-cache.
5419 +# It is not useful on other systems. If it contains results you don't
5420 +# want to keep, you may remove or edit it.
5422 +# config.status only pays attention to the cache file if you give it
5423 +# the --recheck option to rerun configure.
5425 +# `ac_cv_env_foo' variables (set or unset) will be overridden when
5426 +# loading this file, other *unset* `ac_cv_foo' will be assigned the
5427 +# following values.
5431 +# The following way of writing the cache mishandles newlines in values,
5432 +# but we know of no workaround that is simple, portable, and efficient.
5433 +# So, don't put newlines in cache variables' values.
5434 +# Ultrix sh set writes to stderr and can't be redirected directly,
5435 +# and sets the high bit in the cache file unless we assign to the vars.
5438 + case `(ac_space=' '; set | grep ac_space) 2>&1` in
5440 + # `set' does not quote correctly, so add quotes (double-quote
5441 + # substitution turns \\\\ into \\, and sed turns \\ into \).
5444 + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
5447 + # `set' quotes correctly as required by POSIX, so do not add quotes.
5449 + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
5456 + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
5458 + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
5459 + : end' >>confcache
5460 +if diff $cache_file confcache >/dev/null 2>&1; then :; else
5461 + if test -w $cache_file; then
5462 + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
5463 + cat confcache >$cache_file
5465 + echo "not updating unwritable cache $cache_file"
5470 +test "x$prefix" = xNONE && prefix=$ac_default_prefix
5471 +# Let make expand exec_prefix.
5472 +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
5474 +# VPATH may cause trouble with some makes, so we remove $(srcdir),
5475 +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
5476 +# trailing colons and then remove the whole line if VPATH becomes empty
5477 +# (actually we leave an empty line to preserve line numbers).
5478 +if test "x$srcdir" = x.; then
5479 + ac_vpsub='/^[ ]*VPATH[ ]*=/{
5480 +s/:*\$(srcdir):*/:/;
5481 +s/:*\${srcdir}:*/:/;
5483 +s/^\([^=]*=[ ]*\):*/\1/;
5489 +# Transform confdefs.h into DEFS.
5490 +# Protect against shell expansion while executing Makefile rules.
5491 +# Protect against Makefile macro expansion.
5493 +# If the first sed substitution is executed (which looks for macros that
5494 +# take arguments), then we branch to the quote section. Otherwise,
5495 +# look for a macro that doesn't take arguments.
5496 +cat >confdef2opt.sed <<\_ACEOF
5499 +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
5501 +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
5505 +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
5511 +# We use echo to avoid assuming a particular line-breaking character.
5512 +# The extra dot is to prevent the shell from consuming trailing
5513 +# line-breaks from the sub-command output. A line-break within
5514 +# single-quotes doesn't work because, if this script is created in a
5515 +# platform that uses two characters for line-breaks (e.g., DOS), tr
5517 +ac_LF_and_DOT=`echo; echo .`
5518 +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
5519 +rm -f confdef2opt.sed
5524 +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue
5525 + # 1. Remove the extension, and $U if already installed.
5526 + ac_i=`echo "$ac_i" |
5527 + sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
5529 + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
5530 + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
5532 +LIB@&t@OBJS=$ac_libobjs
5534 +LTLIBOBJS=$ac_ltlibobjs
5538 +: ${CONFIG_STATUS=./config.status}
5539 +ac_clean_files_save=$ac_clean_files
5540 +ac_clean_files="$ac_clean_files $CONFIG_STATUS"
5541 +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
5542 +echo "$as_me: creating $CONFIG_STATUS" >&6;}
5543 +cat >$CONFIG_STATUS <<_ACEOF
5545 +# Generated by $as_me.
5546 +# Run this file to recreate the current configuration.
5547 +# Compiler output produced by configure, useful for debugging
5548 +# configure, is in config.log if it exists.
5551 +ac_cs_recheck=false
5553 +SHELL=\${CONFIG_SHELL-$SHELL}
5556 +cat >>$CONFIG_STATUS <<\_ACEOF
5557 +## --------------------- ##
5558 +## M4sh Initialization. ##
5559 +## --------------------- ##
5561 +# Be Bourne compatible
5562 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
5565 + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
5566 + # is contrary to our usage. Disable this feature.
5567 + alias -g '${1+"$@"}'='"$@"'
5568 +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
5572 +# Support unset when possible.
5573 +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
5580 +# Work around bugs in pre-3.0 UWIN ksh.
5581 +$as_unset ENV MAIL MAILPATH
5588 + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
5589 + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
5590 + LC_TELEPHONE LC_TIME
5592 + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
5593 + eval $as_var=C; export $as_var
5599 +# Required to use basename.
5600 +if expr a : '\(a\)' >/dev/null 2>&1; then
5606 +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
5607 + as_basename=basename
5613 +# Name of the executable.
5614 +as_me=`$as_basename "$0" ||
5615 +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
5616 + X"$0" : 'X\(//\)$' \| \
5617 + X"$0" : 'X\(/\)$' \| \
5618 + . : '\(.\)' 2>/dev/null ||
5620 + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
5621 + /^X\/\(\/\/\)$/{ s//\1/; q; }
5622 + /^X\/\(\/\).*/{ s//\1/; q; }
5626 +# PATH needs CR, and LINENO needs CR and PATH.
5627 +# Avoid depending upon Character Ranges.
5628 +as_cr_letters='abcdefghijklmnopqrstuvwxyz'
5629 +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
5630 +as_cr_Letters=$as_cr_letters$as_cr_LETTERS
5631 +as_cr_digits='0123456789'
5632 +as_cr_alnum=$as_cr_Letters$as_cr_digits
5634 +# The user is always right.
5635 +if test "${PATH_SEPARATOR+set}" != set; then
5636 + echo "#! /bin/sh" >conf$$.sh
5637 + echo "exit 0" >>conf$$.sh
5638 + chmod +x conf$$.sh
5639 + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
5640 + PATH_SEPARATOR=';'
5648 + as_lineno_1=$LINENO
5649 + as_lineno_2=$LINENO
5650 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
5651 + test "x$as_lineno_1" != "x$as_lineno_2" &&
5652 + test "x$as_lineno_3" = "x$as_lineno_2" || {
5653 + # Find who we are. Look in the path if we contain no path at all
5654 + # relative or not.
5656 + *[\\/]* ) as_myself=$0 ;;
5657 + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5658 +for as_dir in $PATH
5661 + test -z "$as_dir" && as_dir=.
5662 + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
5667 + # We did not find ourselves, most probably we were run as `sh COMMAND'
5668 + # in which case we are not to be found in the path.
5669 + if test "x$as_myself" = x; then
5672 + if test ! -f "$as_myself"; then
5673 + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
5674 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
5675 + { (exit 1); exit 1; }; }
5677 + case $CONFIG_SHELL in
5679 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5680 +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
5683 + test -z "$as_dir" && as_dir=.
5684 + for as_base in sh bash ksh sh5; do
5687 + if ("$as_dir/$as_base" -c '
5688 + as_lineno_1=$LINENO
5689 + as_lineno_2=$LINENO
5690 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
5691 + test "x$as_lineno_1" != "x$as_lineno_2" &&
5692 + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
5693 + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
5694 + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
5695 + CONFIG_SHELL=$as_dir/$as_base
5696 + export CONFIG_SHELL
5697 + exec "$CONFIG_SHELL" "$0" ${1+"$@"}
5705 + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
5706 + # uniformly replaced by the line number. The first 'sed' inserts a
5707 + # line-number line before each line; the second 'sed' does the real
5708 + # work. The second script uses 'N' to pair each line-number line
5709 + # with the numbered line, and appends trailing '-' during
5710 + # substitution so that $LINENO is not a special case at line end.
5711 + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
5712 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
5713 + sed '=' <$as_myself |
5718 + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
5721 + s,^['$as_cr_digits']*\n,,
5722 + ' >$as_me.lineno &&
5723 + chmod +x $as_me.lineno ||
5724 + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
5725 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
5726 + { (exit 1); exit 1; }; }
5728 + # Don't try to exec as it changes $[0], causing all sort of problems
5729 + # (the dirname of $[0] is not the place where we might find the
5730 + # original and so on. Autoconf is especially sensible to this).
5732 + # Exit status is that of the last command.
5737 +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
5738 + *c*,-n*) ECHO_N= ECHO_C='
5740 + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
5741 + *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
5744 +if expr a : '\(a\)' >/dev/null 2>&1; then
5750 +rm -f conf$$ conf$$.exe conf$$.file
5752 +if ln -s conf$$.file conf$$ 2>/dev/null; then
5753 + # We could just check for DJGPP; but this test a) works b) is more generic
5754 + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
5755 + if test -f conf$$.exe; then
5756 + # Don't use ln at all; we don't have any links
5761 +elif ln conf$$.file conf$$ 2>/dev/null; then
5766 +rm -f conf$$ conf$$.exe conf$$.file
5768 +if mkdir -p . 2>/dev/null; then
5774 +as_executable_p="test -f"
5776 +# Sed expression to map a string onto a valid CPP name.
5777 +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
5779 +# Sed expression to map a string onto a valid variable name.
5780 +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
5784 +# We need space, tab and new line, in precisely that order.
5794 +# Open the log real soon, to keep \$[0] and so on meaningful, and to
5795 +# report actual input values of CONFIG_FILES etc. instead of their
5796 +# values after options handling. Logging --version etc. is OK.
5800 + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
5801 +@%:@@%:@ Running $as_me. @%:@@%:@
5806 +This file was extended by $as_me, which was
5807 +generated by GNU Autoconf 2.57. Invocation command line was
5809 + CONFIG_FILES = $CONFIG_FILES
5810 + CONFIG_HEADERS = $CONFIG_HEADERS
5811 + CONFIG_LINKS = $CONFIG_LINKS
5812 + CONFIG_COMMANDS = $CONFIG_COMMANDS
5816 +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
5820 +# Files that config.status was made for.
5821 +if test -n "$ac_config_files"; then
5822 + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
5825 +if test -n "$ac_config_headers"; then
5826 + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
5829 +if test -n "$ac_config_links"; then
5830 + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
5833 +if test -n "$ac_config_commands"; then
5834 + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
5837 +cat >>$CONFIG_STATUS <<\_ACEOF
5840 +\`$as_me' instantiates files from templates according to the
5841 +current configuration.
5843 +Usage: $0 [OPTIONS] [FILE]...
5845 + -h, --help print this help, then exit
5846 + -V, --version print version number, then exit
5847 + -q, --quiet do not print progress messages
5848 + -d, --debug don't remove temporary files
5849 + --recheck update $as_me by reconfiguring in the same conditions
5850 + --file=FILE[:TEMPLATE]
5851 + instantiate the configuration file FILE
5853 +Configuration files:
5856 +Configuration commands:
5859 +Report bugs to <bug-autoconf@gnu.org>."
5862 +cat >>$CONFIG_STATUS <<_ACEOF
5865 +configured by $0, generated by GNU Autoconf 2.57,
5866 + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
5868 +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
5869 +Free Software Foundation, Inc.
5870 +This config.status script is free software; the Free Software Foundation
5871 +gives unlimited permission to copy, distribute and modify it."
5876 +cat >>$CONFIG_STATUS <<\_ACEOF
5877 +# If no file are specified by the user, then we need to provide default
5878 +# value. By we need to know if files were specified by the user.
5884 + ac_option=`expr "x$1" : 'x\([^=]*\)='`
5885 + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
5893 + *) # This is not an option, so the user has probably given explicit
5896 + ac_need_defaults=false;;
5899 + case $ac_option in
5900 + # Handling of the options.
5902 +cat >>$CONFIG_STATUS <<\_ACEOF
5903 + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
5904 + ac_cs_recheck=: ;;
5905 + --version | --vers* | -V )
5906 + echo "$ac_cs_version"; exit 0 ;;
5908 + # Conflict between --help and --header
5909 + { { echo "$as_me:$LINENO: error: ambiguous option: $1
5910 +Try \`$0 --help' for more information." >&5
5911 +echo "$as_me: error: ambiguous option: $1
5912 +Try \`$0 --help' for more information." >&2;}
5913 + { (exit 1); exit 1; }; };;
5914 + --help | --hel | -h )
5915 + echo "$ac_cs_usage"; exit 0 ;;
5916 + --debug | --d* | -d )
5918 + --file | --fil | --fi | --f )
5920 + CONFIG_FILES="$CONFIG_FILES $ac_optarg"
5921 + ac_need_defaults=false;;
5922 + --header | --heade | --head | --hea )
5924 + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
5925 + ac_need_defaults=false;;
5926 + -q | -quiet | --quiet | --quie | --qui | --qu | --q \
5927 + | -silent | --silent | --silen | --sile | --sil | --si | --s)
5930 + # This is an error.
5931 + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
5932 +Try \`$0 --help' for more information." >&5
5933 +echo "$as_me: error: unrecognized option: $1
5934 +Try \`$0 --help' for more information." >&2;}
5935 + { (exit 1); exit 1; }; } ;;
5937 + *) ac_config_targets="$ac_config_targets $1" ;;
5943 +ac_configure_extra_args=
5945 +if $ac_cs_silent; then
5947 + ac_configure_extra_args="$ac_configure_extra_args --silent"
5951 +cat >>$CONFIG_STATUS <<_ACEOF
5952 +if \$ac_cs_recheck; then
5953 + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
5954 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
5959 +cat >>$CONFIG_STATUS <<_ACEOF
5961 +# INIT-COMMANDS section.
5967 +with_multisubdir=${with_multisubdir}
5968 +ac_configure_args="${multilib_arg} ${ac_configure_args}"
5969 +CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
5970 +gc_basedir=${gc_basedir}
5979 +cat >>$CONFIG_STATUS <<\_ACEOF
5980 +for ac_config_target in $ac_config_targets
5982 + case "$ac_config_target" in
5983 + # Handling of arguments.
5984 + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
5985 + "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
5986 + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
5987 + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
5988 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
5989 + { (exit 1); exit 1; }; };;
5993 +# If the user did not use the arguments to specify the items to instantiate,
5994 +# then the envvar interface is used. Set only those that are not.
5995 +# We use the long form for the default assignment because of an extremely
5996 +# bizarre bug on SunOS 4.1.3.
5997 +if $ac_need_defaults; then
5998 + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
5999 + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
6002 +# Have a temporary directory for convenience. Make it in the build tree
6003 +# simply because there is no reason to put it here, and in addition,
6004 +# creating and moving files from /tmp can sometimes cause problems.
6005 +# Create a temporary directory, and hook for its removal unless debugging.
6008 + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
6009 + trap '{ (exit 1); exit 1; }' 1 2 13 15
6012 +# Create a (secure) tmp directory for tmp files.
6015 + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
6016 + test -n "$tmp" && test -d "$tmp"
6019 + tmp=./confstat$$-$RANDOM
6020 + (umask 077 && mkdir $tmp)
6023 + echo "$me: cannot create a temporary directory in ." >&2
6024 + { (exit 1); exit 1; }
6029 +cat >>$CONFIG_STATUS <<_ACEOF
6032 +# CONFIG_FILES section.
6035 +# No need to generate the scripts if there are no CONFIG_FILES.
6036 +# This happens for instance when ./config.status config.h
6037 +if test -n "\$CONFIG_FILES"; then
6038 + # Protect against being on the right side of a sed subst in config.status.
6039 + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
6040 + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
6041 +s,@SHELL@,$SHELL,;t t
6042 +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
6043 +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
6044 +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
6045 +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
6046 +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
6047 +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
6048 +s,@exec_prefix@,$exec_prefix,;t t
6049 +s,@prefix@,$prefix,;t t
6050 +s,@program_transform_name@,$program_transform_name,;t t
6051 +s,@bindir@,$bindir,;t t
6052 +s,@sbindir@,$sbindir,;t t
6053 +s,@libexecdir@,$libexecdir,;t t
6054 +s,@datadir@,$datadir,;t t
6055 +s,@sysconfdir@,$sysconfdir,;t t
6056 +s,@sharedstatedir@,$sharedstatedir,;t t
6057 +s,@localstatedir@,$localstatedir,;t t
6058 +s,@libdir@,$libdir,;t t
6059 +s,@includedir@,$includedir,;t t
6060 +s,@oldincludedir@,$oldincludedir,;t t
6061 +s,@infodir@,$infodir,;t t
6062 +s,@mandir@,$mandir,;t t
6063 +s,@build_alias@,$build_alias,;t t
6064 +s,@host_alias@,$host_alias,;t t
6065 +s,@target_alias@,$target_alias,;t t
6066 +s,@DEFS@,$DEFS,;t t
6067 +s,@ECHO_C@,$ECHO_C,;t t
6068 +s,@ECHO_N@,$ECHO_N,;t t
6069 +s,@ECHO_T@,$ECHO_T,;t t
6070 +s,@LIBS@,$LIBS,;t t
6071 +s,@gc_basedir@,$gc_basedir,;t t
6072 +s,@build@,$build,;t t
6073 +s,@build_cpu@,$build_cpu,;t t
6074 +s,@build_vendor@,$build_vendor,;t t
6075 +s,@build_os@,$build_os,;t t
6076 +s,@host@,$host,;t t
6077 +s,@host_cpu@,$host_cpu,;t t
6078 +s,@host_vendor@,$host_vendor,;t t
6079 +s,@host_os@,$host_os,;t t
6080 +s,@target@,$target,;t t
6081 +s,@target_cpu@,$target_cpu,;t t
6082 +s,@target_vendor@,$target_vendor,;t t
6083 +s,@target_os@,$target_os,;t t
6084 +s,@mkinstalldirs@,$mkinstalldirs,;t t
6085 +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
6086 +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
6087 +s,@INSTALL_DATA@,$INSTALL_DATA,;t t
6088 +s,@PACKAGE@,$PACKAGE,;t t
6089 +s,@VERSION@,$VERSION,;t t
6090 +s,@ACLOCAL@,$ACLOCAL,;t t
6091 +s,@AUTOCONF@,$AUTOCONF,;t t
6092 +s,@AUTOMAKE@,$AUTOMAKE,;t t
6093 +s,@AUTOHEADER@,$AUTOHEADER,;t t
6094 +s,@MAKEINFO@,$MAKEINFO,;t t
6095 +s,@SET_MAKE@,$SET_MAKE,;t t
6099 +s,@ac_ct_AS@,$ac_ct_AS,;t t
6101 +s,@ac_ct_AR@,$ac_ct_AR,;t t
6102 +s,@RANLIB@,$RANLIB,;t t
6103 +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
6104 +s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
6105 +s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
6106 +s,@MAINT@,$MAINT,;t t
6107 +s,@GC_CFLAGS@,$GC_CFLAGS,;t t
6108 +s,@LN_S@,$LN_S,;t t
6109 +s,@STRIP@,$STRIP,;t t
6110 +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
6111 +s,@LIBTOOL@,$LIBTOOL,;t t
6112 +s,@CXXCPP@,$CXXCPP,;t t
6113 +s,@CPPFLAGS@,$CPPFLAGS,;t t
6114 +s,@THREADLIBS@,$THREADLIBS,;t t
6115 +s,@POWERPC_DARWIN_TRUE@,$POWERPC_DARWIN_TRUE,;t t
6116 +s,@POWERPC_DARWIN_FALSE@,$POWERPC_DARWIN_FALSE,;t t
6117 +s,@EXTRA_TEST_LIBS@,$EXTRA_TEST_LIBS,;t t
6118 +s,@target_all@,$target_all,;t t
6119 +s,@INCLUDES@,$INCLUDES,;t t
6120 +s,@CXXINCLUDES@,$CXXINCLUDES,;t t
6121 +s,@addobjs@,$addobjs,;t t
6122 +s,@MY_CFLAGS@,$MY_CFLAGS,;t t
6123 +s,@USE_LIBDIR_TRUE@,$USE_LIBDIR_TRUE,;t t
6124 +s,@USE_LIBDIR_FALSE@,$USE_LIBDIR_FALSE,;t t
6125 +s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t
6126 +s,@LTLIBOBJS@,$LTLIBOBJS,;t t
6131 + cat >>$CONFIG_STATUS <<\_ACEOF
6132 + # Split the substitutions into bite-sized pieces for seds with
6133 + # small command number limits, like on Digital OSF/1 and HP-UX.
6134 + ac_max_sed_lines=48
6135 + ac_sed_frag=1 # Number of current file.
6136 + ac_beg=1 # First line for current file.
6137 + ac_end=$ac_max_sed_lines # Line after last line for current file.
6140 + while $ac_more_lines; do
6141 + if test $ac_beg -gt 1; then
6142 + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
6144 + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
6146 + if test ! -s $tmp/subs.frag; then
6147 + ac_more_lines=false
6149 + # The purpose of the label and of the branching condition is to
6150 + # speed up the sed processing (if there are no `@' at all, there
6151 + # is no need to browse any of the substitutions).
6152 + # These are the two extra sed commands mentioned above.
6154 + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
6155 + if test -z "$ac_sed_cmds"; then
6156 + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
6158 + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
6160 + ac_sed_frag=`expr $ac_sed_frag + 1`
6162 + ac_end=`expr $ac_end + $ac_max_sed_lines`
6165 + if test -z "$ac_sed_cmds"; then
6168 +fi # test -n "$CONFIG_FILES"
6171 +cat >>$CONFIG_STATUS <<\_ACEOF
6172 +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
6173 + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
6175 + - | *:- | *:-:* ) # input from stdin
6177 + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
6178 + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
6179 + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
6180 + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
6181 + * ) ac_file_in=$ac_file.in ;;
6184 + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
6185 + ac_dir=`(dirname "$ac_file") 2>/dev/null ||
6186 +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
6187 + X"$ac_file" : 'X\(//\)[^/]' \| \
6188 + X"$ac_file" : 'X\(//\)$' \| \
6189 + X"$ac_file" : 'X\(/\)' \| \
6190 + . : '\(.\)' 2>/dev/null ||
6192 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
6193 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
6194 + /^X\(\/\/\)$/{ s//\1/; q; }
6195 + /^X\(\/\).*/{ s//\1/; q; }
6197 + { if $as_mkdir_p; then
6198 + mkdir -p "$ac_dir"
6202 + while test ! -d "$as_dir"; do
6203 + as_dirs="$as_dir $as_dirs"
6204 + as_dir=`(dirname "$as_dir") 2>/dev/null ||
6205 +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
6206 + X"$as_dir" : 'X\(//\)[^/]' \| \
6207 + X"$as_dir" : 'X\(//\)$' \| \
6208 + X"$as_dir" : 'X\(/\)' \| \
6209 + . : '\(.\)' 2>/dev/null ||
6211 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
6212 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
6213 + /^X\(\/\/\)$/{ s//\1/; q; }
6214 + /^X\(\/\).*/{ s//\1/; q; }
6217 + test ! -n "$as_dirs" || mkdir $as_dirs
6218 + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
6219 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
6220 + { (exit 1); exit 1; }; }; }
6224 +if test "$ac_dir" != .; then
6225 + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
6226 + # A "../" for each directory in $ac_dir_suffix.
6227 + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
6229 + ac_dir_suffix= ac_top_builddir=
6233 + .) # No --srcdir option. We are building in place.
6235 + if test -z "$ac_top_builddir"; then
6238 + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
6240 + [\\/]* | ?:[\\/]* ) # Absolute path.
6241 + ac_srcdir=$srcdir$ac_dir_suffix;
6242 + ac_top_srcdir=$srcdir ;;
6243 + *) # Relative path.
6244 + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
6245 + ac_top_srcdir=$ac_top_builddir$srcdir ;;
6247 +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
6249 +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
6250 +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
6251 +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
6252 +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
6256 + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
6257 + *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
6260 + if test x"$ac_file" != x-; then
6261 + { echo "$as_me:$LINENO: creating $ac_file" >&5
6262 +echo "$as_me: creating $ac_file" >&6;}
6265 + # Let's still pretend it is `configure' which instantiates (i.e., don't
6266 + # use $as_me), people would be surprised to read:
6267 + # /* config.h. Generated by config.status. */
6268 + if test x"$ac_file" = x-; then
6271 + configure_input="$ac_file. "
6273 + configure_input=$configure_input"Generated from `echo $ac_file_in |
6274 + sed 's,.*/,,'` by configure."
6276 + # First look for the input files in the build tree, otherwise in the
6278 + ac_file_inputs=`IFS=:
6279 + for f in $ac_file_in; do
6281 + -) echo $tmp/stdin ;;
6283 + # Absolute (can't be DOS-style, as IFS=:)
6284 + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
6285 +echo "$as_me: error: cannot find input file: $f" >&2;}
6286 + { (exit 1); exit 1; }; }
6289 + if test -f "$f"; then
6292 + elif test -f "$srcdir/$f"; then
6297 + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
6298 +echo "$as_me: error: cannot find input file: $f" >&2;}
6299 + { (exit 1); exit 1; }; }
6302 + done` || { (exit 1); exit 1; }
6304 +cat >>$CONFIG_STATUS <<_ACEOF
6308 +cat >>$CONFIG_STATUS <<\_ACEOF
6310 +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
6311 +s,@configure_input@,$configure_input,;t t
6312 +s,@srcdir@,$ac_srcdir,;t t
6313 +s,@abs_srcdir@,$ac_abs_srcdir,;t t
6314 +s,@top_srcdir@,$ac_top_srcdir,;t t
6315 +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
6316 +s,@builddir@,$ac_builddir,;t t
6317 +s,@abs_builddir@,$ac_abs_builddir,;t t
6318 +s,@top_builddir@,$ac_top_builddir,;t t
6319 +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
6320 +s,@INSTALL@,$ac_INSTALL,;t t
6321 +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
6323 + if test x"$ac_file" != x-; then
6324 + mv $tmp/out $ac_file
6332 +cat >>$CONFIG_STATUS <<\_ACEOF
6335 +# CONFIG_COMMANDS section.
6337 +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
6338 + ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
6339 + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
6340 + ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
6341 +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
6342 + X"$ac_dest" : 'X\(//\)[^/]' \| \
6343 + X"$ac_dest" : 'X\(//\)$' \| \
6344 + X"$ac_dest" : 'X\(/\)' \| \
6345 + . : '\(.\)' 2>/dev/null ||
6347 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
6348 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
6349 + /^X\(\/\/\)$/{ s//\1/; q; }
6350 + /^X\(\/\).*/{ s//\1/; q; }
6354 +if test "$ac_dir" != .; then
6355 + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
6356 + # A "../" for each directory in $ac_dir_suffix.
6357 + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
6359 + ac_dir_suffix= ac_top_builddir=
6363 + .) # No --srcdir option. We are building in place.
6365 + if test -z "$ac_top_builddir"; then
6368 + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
6370 + [\\/]* | ?:[\\/]* ) # Absolute path.
6371 + ac_srcdir=$srcdir$ac_dir_suffix;
6372 + ac_top_srcdir=$srcdir ;;
6373 + *) # Relative path.
6374 + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
6375 + ac_top_srcdir=$ac_top_builddir$srcdir ;;
6377 +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
6379 +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
6380 +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
6381 +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
6382 +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
6385 + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
6386 +echo "$as_me: executing $ac_dest commands" >&6;}
6389 +echo "$DEFS" > boehm-cflags
6391 +if test -n "$CONFIG_FILES"; then
6392 + LD="${ORIGINAL_LD_FOR_MULTILIBS}"
6393 + ac_file=Makefile . ${gc_basedir}/../config-ml.in
6399 +cat >>$CONFIG_STATUS <<\_ACEOF
6401 +{ (exit 0); exit 0; }
6403 +chmod +x $CONFIG_STATUS
6404 +ac_clean_files=$ac_clean_files_save
6407 +# configure is writing to config.log, and then calls config.status.
6408 +# config.status does its own redirection, appending to config.log.
6409 +# Unfortunately, on DOS this fails, as config.log is still kept open
6410 +# by configure, so config.status won't be able to write to it; its
6411 +# output is simply discarded. So we exec the FD to /dev/null,
6412 +# effectively closing config.log, so it can be properly (re)opened and
6413 +# appended to by config.status. When coming back to configure, we
6414 +# need to make the FD available again.
6415 +if test "$no_create" != yes; then
6417 + ac_config_status_args=
6418 + test "$silent" = yes &&
6419 + ac_config_status_args="$ac_config_status_args --quiet"
6421 + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
6422 + exec 5>>config.log
6423 + # Use ||, not &&, to avoid exiting from the if with $? = 1, which
6424 + # would make configure fail if this is the last instruction.
6425 + $ac_cs_success || { (exit 1); exit 1; }
6428 diff -urNb boehm-gc/autom4te.cache/output.1 boehm-gc/autom4te.cache/output.1
6429 --- boehm-gc/autom4te.cache/output.1 Wed Dec 31 16:00:00 1969
6430 +++ boehm-gc/autom4te.cache/output.1 Sat May 31 15:09:31 2003
6433 +@%:@ Guess values for system-dependent variables and create Makefiles.
6434 +@%:@ Generated by GNU Autoconf 2.54.
6436 +@%:@ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
6437 +@%:@ Free Software Foundation, Inc.
6438 +@%:@ This configure script is free software; the Free Software Foundation
6439 +@%:@ gives unlimited permission to copy, distribute and modify it.
6440 +## --------------------- ##
6441 +## M4sh Initialization. ##
6442 +## --------------------- ##
6444 +# Be Bourne compatible
6445 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
6448 + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
6449 + # is contrary to our usage. Disable this feature.
6450 + alias -g '${1+"$@"}'='"$@"'
6451 +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
6455 +# Support unset when possible.
6456 +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
6463 +# Work around bugs in pre-3.0 UWIN ksh.
6464 +$as_unset ENV MAIL MAILPATH
6470 +for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME
6472 + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
6473 + eval $as_var=C; export $as_var
6479 +# Required to use basename.
6480 +if expr a : '\(a\)' >/dev/null 2>&1; then
6486 +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
6487 + as_basename=basename
6493 +# Name of the executable.
6494 +as_me=`$as_basename "$0" ||
6495 +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
6496 + X"$0" : 'X\(//\)$' \| \
6497 + X"$0" : 'X\(/\)$' \| \
6498 + . : '\(.\)' 2>/dev/null ||
6500 + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
6501 + /^X\/\(\/\/\)$/{ s//\1/; q; }
6502 + /^X\/\(\/\).*/{ s//\1/; q; }
6506 +# PATH needs CR, and LINENO needs CR and PATH.
6507 +# Avoid depending upon Character Ranges.
6508 +as_cr_letters='abcdefghijklmnopqrstuvwxyz'
6509 +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
6510 +as_cr_Letters=$as_cr_letters$as_cr_LETTERS
6511 +as_cr_digits='0123456789'
6512 +as_cr_alnum=$as_cr_Letters$as_cr_digits
6514 +# The user is always right.
6515 +if test "${PATH_SEPARATOR+set}" != set; then
6516 + echo "#! /bin/sh" >conftest.sh
6517 + echo "exit 0" >>conftest.sh
6518 + chmod +x conftest.sh
6519 + if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then
6520 + PATH_SEPARATOR=';'
6528 + as_lineno_1=$LINENO
6529 + as_lineno_2=$LINENO
6530 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
6531 + test "x$as_lineno_1" != "x$as_lineno_2" &&
6532 + test "x$as_lineno_3" = "x$as_lineno_2" || {
6533 + # Find who we are. Look in the path if we contain no path at all
6534 + # relative or not.
6536 + *[\\/]* ) as_myself=$0 ;;
6537 + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6538 +for as_dir in $PATH
6541 + test -z "$as_dir" && as_dir=.
6542 + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
6547 + # We did not find ourselves, most probably we were run as `sh COMMAND'
6548 + # in which case we are not to be found in the path.
6549 + if test "x$as_myself" = x; then
6552 + if test ! -f "$as_myself"; then
6553 + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
6554 + { (exit 1); exit 1; }; }
6556 + case $CONFIG_SHELL in
6558 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6559 +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
6562 + test -z "$as_dir" && as_dir=.
6563 + for as_base in sh bash ksh sh5; do
6566 + if ("$as_dir/$as_base" -c '
6567 + as_lineno_1=$LINENO
6568 + as_lineno_2=$LINENO
6569 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
6570 + test "x$as_lineno_1" != "x$as_lineno_2" &&
6571 + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
6572 + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
6573 + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
6574 + CONFIG_SHELL=$as_dir/$as_base
6575 + export CONFIG_SHELL
6576 + exec "$CONFIG_SHELL" "$0" ${1+"$@"}
6584 + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
6585 + # uniformly replaced by the line number. The first 'sed' inserts a
6586 + # line-number line before each line; the second 'sed' does the real
6587 + # work. The second script uses 'N' to pair each line-number line
6588 + # with the numbered line, and appends trailing '-' during
6589 + # substitution so that $LINENO is not a special case at line end.
6590 + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
6591 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
6592 + sed '=' <$as_myself |
6597 + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
6600 + s,^['$as_cr_digits']*\n,,
6601 + ' >$as_me.lineno &&
6602 + chmod +x $as_me.lineno ||
6603 + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
6604 + { (exit 1); exit 1; }; }
6606 + # Don't try to exec as it changes $[0], causing all sort of problems
6607 + # (the dirname of $[0] is not the place where we might find the
6608 + # original and so on. Autoconf is especially sensible to this).
6610 + # Exit status is that of the last command.
6615 +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
6616 + *c*,-n*) ECHO_N= ECHO_C='
6618 + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
6619 + *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
6622 +if expr a : '\(a\)' >/dev/null 2>&1; then
6628 +rm -f conf$$ conf$$.exe conf$$.file
6630 +if ln -s conf$$.file conf$$ 2>/dev/null; then
6631 + # We could just check for DJGPP; but this test a) works b) is more generic
6632 + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
6633 + if test -f conf$$.exe; then
6634 + # Don't use ln at all; we don't have any links
6639 +elif ln conf$$.file conf$$ 2>/dev/null; then
6644 +rm -f conf$$ conf$$.exe conf$$.file
6646 +if mkdir -p . 2>/dev/null; then
6652 +as_executable_p="test -f"
6654 +# Sed expression to map a string onto a valid CPP name.
6655 +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
6657 +# Sed expression to map a string onto a valid variable name.
6658 +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
6662 +# We need space, tab and new line, in precisely that order.
6671 +# Find the correct PATH separator. Usually this is `:', but
6672 +# DJGPP uses `;' like DOS.
6673 +if test "X${PATH_SEPARATOR+set}" != Xset; then
6674 + UNAME=${UNAME-`uname 2>/dev/null`}
6676 + *-DOS) lt_cv_sys_path_separator=';' ;;
6677 + *) lt_cv_sys_path_separator=':' ;;
6679 + PATH_SEPARATOR=$lt_cv_sys_path_separator
6683 +# Check that we are running under the correct shell.
6684 +SHELL=${CONFIG_SHELL-/bin/sh}
6688 + # Remove one level of quotation (which was required for Make).
6689 + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
6694 +if test "X$1" = X--no-reexec; then
6695 + # Discard the --no-reexec flag, and continue.
6697 +elif test "X$1" = X--fallback-echo; then
6698 + # Avoid inline document here, it may be left over
6700 +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
6701 + # Yippee, $echo works!
6704 + # Restart under the correct shell.
6705 + exec $SHELL "$0" --no-reexec ${1+"$@"}
6708 +if test "X$1" = X--fallback-echo; then
6709 + # used as fallback echo
6717 +# The HP-UX ksh and POSIX shell print the target directory to stdout
6718 +# if CDPATH is set.
6719 +if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
6721 +if test -z "$ECHO"; then
6722 +if test "X${echo_test_string+set}" != Xset; then
6723 +# find a string as large as possible, as long as the shell can cope with it
6724 + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
6725 + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
6726 + if (echo_test_string="`eval $cmd`") 2>/dev/null &&
6727 + echo_test_string="`eval $cmd`" &&
6728 + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
6735 +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
6736 + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
6737 + test "X$echo_testing_string" = "X$echo_test_string"; then
6740 + # The Solaris, AIX, and Digital Unix default echo programs unquote
6741 + # backslashes. This makes it impossible to quote backslashes using
6742 + # echo "$something" | sed 's/\\/\\\\/g'
6744 + # So, first we look for a working echo in the user's PATH.
6746 + IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR
6747 + for dir in $PATH /usr/ucb; do
6748 + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
6749 + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
6750 + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
6751 + test "X$echo_testing_string" = "X$echo_test_string"; then
6758 + if test "X$echo" = Xecho; then
6759 + # We didn't find a better echo, so look for alternatives.
6760 + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
6761 + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
6762 + test "X$echo_testing_string" = "X$echo_test_string"; then
6763 + # This shell has a builtin print -r that does the trick.
6765 + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
6766 + test "X$CONFIG_SHELL" != X/bin/ksh; then
6767 + # If we have ksh, try running configure again with it.
6768 + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
6769 + export ORIGINAL_CONFIG_SHELL
6770 + CONFIG_SHELL=/bin/ksh
6771 + export CONFIG_SHELL
6772 + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
6774 + # Try using printf.
6775 + echo='printf %s\n'
6776 + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
6777 + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
6778 + test "X$echo_testing_string" = "X$echo_test_string"; then
6779 + # Cool, printf works
6781 + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
6782 + test "X$echo_testing_string" = 'X\t' &&
6783 + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
6784 + test "X$echo_testing_string" = "X$echo_test_string"; then
6785 + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
6786 + export CONFIG_SHELL
6787 + SHELL="$CONFIG_SHELL"
6789 + echo="$CONFIG_SHELL $0 --fallback-echo"
6790 + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
6791 + test "X$echo_testing_string" = 'X\t' &&
6792 + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
6793 + test "X$echo_testing_string" = "X$echo_test_string"; then
6794 + echo="$CONFIG_SHELL $0 --fallback-echo"
6796 + # maybe with a smaller string...
6799 + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
6800 + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
6807 + if test "$prev" != 'sed 50q "$0"'; then
6808 + echo_test_string=`eval $prev`
6809 + export echo_test_string
6810 + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
6812 + # Oops. We lost completely, so just stick with echo.
6821 +# Copy echo and quote the copy suitably for passing to libtool from
6822 +# the Makefile, instead of quoting the original, which is used later.
6824 +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
6825 + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
6830 +# Name of the host.
6831 +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
6832 +# so uname gets run too.
6833 +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
6840 +ac_default_prefix=/usr/local
6841 +ac_config_libobj_dir=.
6846 +SHELL=${CONFIG_SHELL-/bin/sh}
6848 +# Maximum number of lines to put in a shell here document.
6849 +# This variable seems obsolete. It should probably be removed, and
6850 +# only ac_max_sed_lines should be used.
6851 +: ${ac_max_here_lines=38}
6853 +# Identity of this package.
6860 +ac_unique_file="gcj_mlc.c"
6861 +# Factoring default headers for most tests.
6862 +ac_includes_default="\
6864 +#if HAVE_SYS_TYPES_H
6865 +# include <sys/types.h>
6867 +#if HAVE_SYS_STAT_H
6868 +# include <sys/stat.h>
6871 +# include <stdlib.h>
6872 +# include <stddef.h>
6875 +# include <stdlib.h>
6879 +# if !STDC_HEADERS && HAVE_MEMORY_H
6880 +# include <memory.h>
6882 +# include <string.h>
6885 +# include <strings.h>
6887 +#if HAVE_INTTYPES_H
6888 +# include <inttypes.h>
6891 +# include <stdint.h>
6895 +# include <unistd.h>
6898 +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'
6901 +# Initialize some variables set by options.
6903 +ac_init_version=false
6904 +# The variables have the same names as the options, with
6905 +# dashes changed to underlines.
6906 +cache_file=/dev/null
6911 +program_prefix=NONE
6912 +program_suffix=NONE
6913 +program_transform_name=s,x,x,
6921 +# Installation directory options.
6922 +# These are left unexpanded so users can "make install exec_prefix=/foo"
6923 +# and all the variables that are supposed to be based on exec_prefix
6924 +# by default will actually change.
6925 +# Use braces instead of parens because sh, perl, etc. also accept them.
6926 +bindir='${exec_prefix}/bin'
6927 +sbindir='${exec_prefix}/sbin'
6928 +libexecdir='${exec_prefix}/libexec'
6929 +datadir='${prefix}/share'
6930 +sysconfdir='${prefix}/etc'
6931 +sharedstatedir='${prefix}/com'
6932 +localstatedir='${prefix}/var'
6933 +libdir='${exec_prefix}/lib'
6934 +includedir='${prefix}/include'
6935 +oldincludedir='/usr/include'
6936 +infodir='${prefix}/info'
6937 +mandir='${prefix}/man'
6942 + # If the previous option needs an argument, assign it.
6943 + if test -n "$ac_prev"; then
6944 + eval "$ac_prev=\$ac_option"
6949 + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
6951 + # Accept the important Cygnus configure options, so we can diagnose typos.
6953 + case $ac_option in
6955 + -bindir | --bindir | --bindi | --bind | --bin | --bi)
6957 + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
6958 + bindir=$ac_optarg ;;
6960 + -build | --build | --buil | --bui | --bu)
6961 + ac_prev=build_alias ;;
6962 + -build=* | --build=* | --buil=* | --bui=* | --bu=*)
6963 + build_alias=$ac_optarg ;;
6965 + -cache-file | --cache-file | --cache-fil | --cache-fi \
6966 + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
6967 + ac_prev=cache_file ;;
6968 + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
6969 + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
6970 + cache_file=$ac_optarg ;;
6972 + --config-cache | -C)
6973 + cache_file=config.cache ;;
6975 + -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
6976 + ac_prev=datadir ;;
6977 + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
6979 + datadir=$ac_optarg ;;
6981 + -disable-* | --disable-*)
6982 + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
6983 + # Reject names that are not valid shell variable names.
6984 + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
6985 + { echo "$as_me: error: invalid feature name: $ac_feature" >&2
6986 + { (exit 1); exit 1; }; }
6987 + ac_feature=`echo $ac_feature | sed 's/-/_/g'`
6988 + eval "enable_$ac_feature=no" ;;
6990 + -enable-* | --enable-*)
6991 + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
6992 + # Reject names that are not valid shell variable names.
6993 + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
6994 + { echo "$as_me: error: invalid feature name: $ac_feature" >&2
6995 + { (exit 1); exit 1; }; }
6996 + ac_feature=`echo $ac_feature | sed 's/-/_/g'`
6997 + case $ac_option in
6998 + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
6999 + *) ac_optarg=yes ;;
7001 + eval "enable_$ac_feature='$ac_optarg'" ;;
7003 + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
7004 + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
7005 + | --exec | --exe | --ex)
7006 + ac_prev=exec_prefix ;;
7007 + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
7008 + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
7009 + | --exec=* | --exe=* | --ex=*)
7010 + exec_prefix=$ac_optarg ;;
7012 + -gas | --gas | --ga | --g)
7013 + # Obsolete; use --with-gas.
7016 + -help | --help | --hel | --he | -h)
7017 + ac_init_help=long ;;
7018 + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
7019 + ac_init_help=recursive ;;
7020 + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
7021 + ac_init_help=short ;;
7023 + -host | --host | --hos | --ho)
7024 + ac_prev=host_alias ;;
7025 + -host=* | --host=* | --hos=* | --ho=*)
7026 + host_alias=$ac_optarg ;;
7028 + -includedir | --includedir | --includedi | --included | --include \
7029 + | --includ | --inclu | --incl | --inc)
7030 + ac_prev=includedir ;;
7031 + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
7032 + | --includ=* | --inclu=* | --incl=* | --inc=*)
7033 + includedir=$ac_optarg ;;
7035 + -infodir | --infodir | --infodi | --infod | --info | --inf)
7036 + ac_prev=infodir ;;
7037 + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
7038 + infodir=$ac_optarg ;;
7040 + -libdir | --libdir | --libdi | --libd)
7042 + -libdir=* | --libdir=* | --libdi=* | --libd=*)
7043 + libdir=$ac_optarg ;;
7045 + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
7046 + | --libexe | --libex | --libe)
7047 + ac_prev=libexecdir ;;
7048 + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
7049 + | --libexe=* | --libex=* | --libe=*)
7050 + libexecdir=$ac_optarg ;;
7052 + -localstatedir | --localstatedir | --localstatedi | --localstated \
7053 + | --localstate | --localstat | --localsta | --localst \
7054 + | --locals | --local | --loca | --loc | --lo)
7055 + ac_prev=localstatedir ;;
7056 + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
7057 + | --localstate=* | --localstat=* | --localsta=* | --localst=* \
7058 + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
7059 + localstatedir=$ac_optarg ;;
7061 + -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
7063 + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
7064 + mandir=$ac_optarg ;;
7066 + -nfp | --nfp | --nf)
7067 + # Obsolete; use --without-fp.
7070 + -no-create | --no-create | --no-creat | --no-crea | --no-cre \
7071 + | --no-cr | --no-c | -n)
7074 + -no-recursion | --no-recursion | --no-recursio | --no-recursi \
7075 + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
7076 + no_recursion=yes ;;
7078 + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
7079 + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
7080 + | --oldin | --oldi | --old | --ol | --o)
7081 + ac_prev=oldincludedir ;;
7082 + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
7083 + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
7084 + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
7085 + oldincludedir=$ac_optarg ;;
7087 + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
7089 + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
7090 + prefix=$ac_optarg ;;
7092 + -program-prefix | --program-prefix | --program-prefi | --program-pref \
7093 + | --program-pre | --program-pr | --program-p)
7094 + ac_prev=program_prefix ;;
7095 + -program-prefix=* | --program-prefix=* | --program-prefi=* \
7096 + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
7097 + program_prefix=$ac_optarg ;;
7099 + -program-suffix | --program-suffix | --program-suffi | --program-suff \
7100 + | --program-suf | --program-su | --program-s)
7101 + ac_prev=program_suffix ;;
7102 + -program-suffix=* | --program-suffix=* | --program-suffi=* \
7103 + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
7104 + program_suffix=$ac_optarg ;;
7106 + -program-transform-name | --program-transform-name \
7107 + | --program-transform-nam | --program-transform-na \
7108 + | --program-transform-n | --program-transform- \
7109 + | --program-transform | --program-transfor \
7110 + | --program-transfo | --program-transf \
7111 + | --program-trans | --program-tran \
7112 + | --progr-tra | --program-tr | --program-t)
7113 + ac_prev=program_transform_name ;;
7114 + -program-transform-name=* | --program-transform-name=* \
7115 + | --program-transform-nam=* | --program-transform-na=* \
7116 + | --program-transform-n=* | --program-transform-=* \
7117 + | --program-transform=* | --program-transfor=* \
7118 + | --program-transfo=* | --program-transf=* \
7119 + | --program-trans=* | --program-tran=* \
7120 + | --progr-tra=* | --program-tr=* | --program-t=*)
7121 + program_transform_name=$ac_optarg ;;
7123 + -q | -quiet | --quiet | --quie | --qui | --qu | --q \
7124 + | -silent | --silent | --silen | --sile | --sil)
7127 + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
7128 + ac_prev=sbindir ;;
7129 + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
7130 + | --sbi=* | --sb=*)
7131 + sbindir=$ac_optarg ;;
7133 + -sharedstatedir | --sharedstatedir | --sharedstatedi \
7134 + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
7135 + | --sharedst | --shareds | --shared | --share | --shar \
7137 + ac_prev=sharedstatedir ;;
7138 + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
7139 + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
7140 + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
7141 + | --sha=* | --sh=*)
7142 + sharedstatedir=$ac_optarg ;;
7144 + -site | --site | --sit)
7146 + -site=* | --site=* | --sit=*)
7147 + site=$ac_optarg ;;
7149 + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
7151 + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
7152 + srcdir=$ac_optarg ;;
7154 + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
7155 + | --syscon | --sysco | --sysc | --sys | --sy)
7156 + ac_prev=sysconfdir ;;
7157 + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
7158 + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
7159 + sysconfdir=$ac_optarg ;;
7161 + -target | --target | --targe | --targ | --tar | --ta | --t)
7162 + ac_prev=target_alias ;;
7163 + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
7164 + target_alias=$ac_optarg ;;
7166 + -v | -verbose | --verbose | --verbos | --verbo | --verb)
7169 + -version | --version | --versio | --versi | --vers | -V)
7170 + ac_init_version=: ;;
7172 + -with-* | --with-*)
7173 + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
7174 + # Reject names that are not valid shell variable names.
7175 + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
7176 + { echo "$as_me: error: invalid package name: $ac_package" >&2
7177 + { (exit 1); exit 1; }; }
7178 + ac_package=`echo $ac_package| sed 's/-/_/g'`
7179 + case $ac_option in
7180 + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
7181 + *) ac_optarg=yes ;;
7183 + eval "with_$ac_package='$ac_optarg'" ;;
7185 + -without-* | --without-*)
7186 + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
7187 + # Reject names that are not valid shell variable names.
7188 + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
7189 + { echo "$as_me: error: invalid package name: $ac_package" >&2
7190 + { (exit 1); exit 1; }; }
7191 + ac_package=`echo $ac_package | sed 's/-/_/g'`
7192 + eval "with_$ac_package=no" ;;
7195 + # Obsolete; use --with-x.
7198 + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
7199 + | --x-incl | --x-inc | --x-in | --x-i)
7200 + ac_prev=x_includes ;;
7201 + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
7202 + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
7203 + x_includes=$ac_optarg ;;
7205 + -x-libraries | --x-libraries | --x-librarie | --x-librari \
7206 + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
7207 + ac_prev=x_libraries ;;
7208 + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
7209 + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
7210 + x_libraries=$ac_optarg ;;
7212 + -*) { echo "$as_me: error: unrecognized option: $ac_option
7213 +Try \`$0 --help' for more information." >&2
7214 + { (exit 1); exit 1; }; }
7218 + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
7219 + # Reject names that are not valid shell variable names.
7220 + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
7221 + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
7222 + { (exit 1); exit 1; }; }
7223 + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
7224 + eval "$ac_envvar='$ac_optarg'"
7225 + export $ac_envvar ;;
7228 + # FIXME: should be removed in autoconf 3.0.
7229 + echo "$as_me: WARNING: you should use --build, --host, --target" >&2
7230 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
7231 + echo "$as_me: WARNING: invalid host type: $ac_option" >&2
7232 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
7238 +if test -n "$ac_prev"; then
7239 + ac_option=--`echo $ac_prev | sed 's/_/-/g'`
7240 + { echo "$as_me: error: missing argument to $ac_option" >&2
7241 + { (exit 1); exit 1; }; }
7244 +# Be sure to have absolute paths.
7245 +for ac_var in exec_prefix prefix
7247 + eval ac_val=$`echo $ac_var`
7249 + [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
7250 + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
7251 + { (exit 1); exit 1; }; };;
7255 +# Be sure to have absolute paths.
7256 +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
7257 + localstatedir libdir includedir oldincludedir infodir mandir
7259 + eval ac_val=$`echo $ac_var`
7261 + [\\/$]* | ?:[\\/]* ) ;;
7262 + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
7263 + { (exit 1); exit 1; }; };;
7267 +# There might be people who depend on the old broken behavior: `$host'
7268 +# used to hold the argument of --host etc.
7269 +# FIXME: To remove some day.
7272 +target=$target_alias
7274 +# FIXME: To remove some day.
7275 +if test "x$host_alias" != x; then
7276 + if test "x$build_alias" = x; then
7277 + cross_compiling=maybe
7278 + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
7279 + If a cross compiler is detected then cross compile mode will be used." >&2
7280 + elif test "x$build_alias" != "x$host_alias"; then
7281 + cross_compiling=yes
7286 +test -n "$host_alias" && ac_tool_prefix=$host_alias-
7288 +test "$silent" = yes && exec 6>/dev/null
7291 +# Find the source files, if location was not specified.
7292 +if test -z "$srcdir"; then
7293 + ac_srcdir_defaulted=yes
7294 + # Try the directory containing this script, then its parent.
7295 + ac_confdir=`(dirname "$0") 2>/dev/null ||
7296 +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
7297 + X"$0" : 'X\(//\)[^/]' \| \
7298 + X"$0" : 'X\(//\)$' \| \
7299 + X"$0" : 'X\(/\)' \| \
7300 + . : '\(.\)' 2>/dev/null ||
7302 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
7303 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
7304 + /^X\(\/\/\)$/{ s//\1/; q; }
7305 + /^X\(\/\).*/{ s//\1/; q; }
7307 + srcdir=$ac_confdir
7308 + if test ! -r $srcdir/$ac_unique_file; then
7312 + ac_srcdir_defaulted=no
7314 +if test ! -r $srcdir/$ac_unique_file; then
7315 + if test "$ac_srcdir_defaulted" = yes; then
7316 + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
7317 + { (exit 1); exit 1; }; }
7319 + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
7320 + { (exit 1); exit 1; }; }
7323 +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
7324 + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
7325 + { (exit 1); exit 1; }; }
7326 +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
7327 +ac_env_build_alias_set=${build_alias+set}
7328 +ac_env_build_alias_value=$build_alias
7329 +ac_cv_env_build_alias_set=${build_alias+set}
7330 +ac_cv_env_build_alias_value=$build_alias
7331 +ac_env_host_alias_set=${host_alias+set}
7332 +ac_env_host_alias_value=$host_alias
7333 +ac_cv_env_host_alias_set=${host_alias+set}
7334 +ac_cv_env_host_alias_value=$host_alias
7335 +ac_env_target_alias_set=${target_alias+set}
7336 +ac_env_target_alias_value=$target_alias
7337 +ac_cv_env_target_alias_set=${target_alias+set}
7338 +ac_cv_env_target_alias_value=$target_alias
7339 +ac_env_CC_set=${CC+set}
7340 +ac_env_CC_value=$CC
7341 +ac_cv_env_CC_set=${CC+set}
7342 +ac_cv_env_CC_value=$CC
7343 +ac_env_CFLAGS_set=${CFLAGS+set}
7344 +ac_env_CFLAGS_value=$CFLAGS
7345 +ac_cv_env_CFLAGS_set=${CFLAGS+set}
7346 +ac_cv_env_CFLAGS_value=$CFLAGS
7347 +ac_env_LDFLAGS_set=${LDFLAGS+set}
7348 +ac_env_LDFLAGS_value=$LDFLAGS
7349 +ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
7350 +ac_cv_env_LDFLAGS_value=$LDFLAGS
7351 +ac_env_CPPFLAGS_set=${CPPFLAGS+set}
7352 +ac_env_CPPFLAGS_value=$CPPFLAGS
7353 +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
7354 +ac_cv_env_CPPFLAGS_value=$CPPFLAGS
7355 +ac_env_CPP_set=${CPP+set}
7356 +ac_env_CPP_value=$CPP
7357 +ac_cv_env_CPP_set=${CPP+set}
7358 +ac_cv_env_CPP_value=$CPP
7361 +# Report the --help message.
7363 +if test "$ac_init_help" = "long"; then
7364 + # Omit some internal or obsolete options to make the list less imposing.
7365 + # This message is too long to be a string in the A/UX 3.1 sh.
7367 +\`configure' configures this package to adapt to many kinds of systems.
7369 +Usage: $0 [OPTION]... [VAR=VALUE]...
7371 +To assign environment variables (e.g., CC, CFLAGS...), specify them as
7372 +VAR=VALUE. See below for descriptions of some of the useful variables.
7374 +Defaults for the options are specified in brackets.
7377 + -h, --help display this help and exit
7378 + --help=short display options specific to this package
7379 + --help=recursive display the short help of all the included packages
7380 + -V, --version display version information and exit
7381 + -q, --quiet, --silent do not print \`checking...' messages
7382 + --cache-file=FILE cache test results in FILE [disabled]
7383 + -C, --config-cache alias for \`--cache-file=config.cache'
7384 + -n, --no-create do not create output files
7385 + --srcdir=DIR find the sources in DIR [configure dir or \`..']
7390 +Installation directories:
7391 + --prefix=PREFIX install architecture-independent files in PREFIX
7392 + [$ac_default_prefix]
7393 + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
7396 +By default, \`make install' will install all the files in
7397 +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
7398 +an installation prefix other than \`$ac_default_prefix' using \`--prefix',
7399 +for instance \`--prefix=\$HOME'.
7401 +For better control, use the options below.
7403 +Fine tuning of the installation directories:
7404 + --bindir=DIR user executables [EPREFIX/bin]
7405 + --sbindir=DIR system admin executables [EPREFIX/sbin]
7406 + --libexecdir=DIR program executables [EPREFIX/libexec]
7407 + --datadir=DIR read-only architecture-independent data [PREFIX/share]
7408 + --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
7409 + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
7410 + --localstatedir=DIR modifiable single-machine data [PREFIX/var]
7411 + --libdir=DIR object code libraries [EPREFIX/lib]
7412 + --includedir=DIR C header files [PREFIX/include]
7413 + --oldincludedir=DIR C header files for non-gcc [/usr/include]
7414 + --infodir=DIR info documentation [PREFIX/info]
7415 + --mandir=DIR man documentation [PREFIX/man]
7421 + --program-prefix=PREFIX prepend PREFIX to installed program names
7422 + --program-suffix=SUFFIX append SUFFIX to installed program names
7423 + --program-transform-name=PROGRAM run sed PROGRAM on installed program names
7426 + --build=BUILD configure for building on BUILD [guessed]
7427 + --host=HOST cross-compile to build programs to run on HOST [BUILD]
7428 + --target=TARGET configure for building compilers for TARGET [HOST]
7432 +if test -n "$ac_init_help"; then
7437 + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
7438 + --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
7439 + --enable-multilib build many library versions (default)
7440 + --enable-maintainer-mode enable make rules and dependencies not useful
7441 + (and sometimes confusing) to the casual installer
7442 + --enable-shared=PKGS build shared libraries default=yes
7443 + --enable-static=PKGS build static libraries default=yes
7444 + --enable-fast-install=PKGS optimize for fast installation default=yes
7445 + --disable-dependency-tracking Speeds up one-time builds
7446 + --enable-dependency-tracking Do not reject slow dependency extractors
7447 + --disable-libtool-lock avoid locking (might break parallel builds)
7448 + --enable-parallel-mark parallelize marking and free list construction
7449 + --enable-shared=PKGS build shared libraries default=no
7450 + --enable-full-debug include full support for pointer backtracing etc.
7453 + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
7454 + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
7455 + --with-gnu-ld assume the C compiler uses GNU ld default=no
7456 + --with-pic try to use only PIC/non-PIC objects default=use both
7457 + --with-target-subdir=SUBDIR
7458 + configuring with a cross compiler
7459 + --with-cross-host=HOST configuring with a cross compiler
7460 + --with-ecos enable runtime eCos target support
7462 +Some influential environment variables:
7463 + CC C compiler command
7464 + CFLAGS C compiler flags
7465 + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
7466 + nonstandard directory <lib dir>
7467 + CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
7468 + headers in a nonstandard directory <include dir>
7469 + CPP C preprocessor
7471 +Use these variables to override the choices made by `configure' or to help
7472 +it to find libraries and programs with nonstandard names/locations.
7477 +if test "$ac_init_help" = "recursive"; then
7478 + # If there are subdirs, report their specific --help.
7480 + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
7481 + test -d $ac_dir || continue
7484 +if test "$ac_dir" != .; then
7485 + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
7486 + # A "../" for each directory in $ac_dir_suffix.
7487 + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
7489 + ac_dir_suffix= ac_top_builddir=
7493 + .) # No --srcdir option. We are building in place.
7495 + if test -z "$ac_top_builddir"; then
7498 + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
7500 + [\\/]* | ?:[\\/]* ) # Absolute path.
7501 + ac_srcdir=$srcdir$ac_dir_suffix;
7502 + ac_top_srcdir=$srcdir ;;
7503 + *) # Relative path.
7504 + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
7505 + ac_top_srcdir=$ac_top_builddir$srcdir ;;
7507 +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
7509 +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
7510 +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
7511 +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
7512 +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
7515 + # Check for guested configure; otherwise get Cygnus style configure.
7516 + if test -f $ac_srcdir/configure.gnu; then
7518 + $SHELL $ac_srcdir/configure.gnu --help=recursive
7519 + elif test -f $ac_srcdir/configure; then
7521 + $SHELL $ac_srcdir/configure --help=recursive
7522 + elif test -f $ac_srcdir/configure.ac ||
7523 + test -f $ac_srcdir/configure.in; then
7525 + $ac_configure --help
7527 + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
7533 +test -n "$ac_init_help" && exit 0
7534 +if $ac_init_version; then
7537 +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
7538 +Free Software Foundation, Inc.
7539 +This configure script is free software; the Free Software Foundation
7540 +gives unlimited permission to copy, distribute and modify it.
7546 +This file contains any messages produced by compilers while
7547 +running configure, to aid debugging if configure makes a mistake.
7549 +It was created by $as_me, which was
7550 +generated by GNU Autoconf 2.54. Invocation command line was
7557 +@%:@@%:@ --------- @%:@@%:@
7558 +@%:@@%:@ Platform. @%:@@%:@
7559 +@%:@@%:@ --------- @%:@@%:@
7561 +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
7562 +uname -m = `(uname -m) 2>/dev/null || echo unknown`
7563 +uname -r = `(uname -r) 2>/dev/null || echo unknown`
7564 +uname -s = `(uname -s) 2>/dev/null || echo unknown`
7565 +uname -v = `(uname -v) 2>/dev/null || echo unknown`
7567 +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
7568 +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
7570 +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
7571 +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
7572 +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
7573 +hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
7574 +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
7575 +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
7576 +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
7580 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7581 +for as_dir in $PATH
7584 + test -z "$as_dir" && as_dir=.
7585 + echo "PATH: $as_dir"
7593 +@%:@@%:@ ----------- @%:@@%:@
7594 +@%:@@%:@ Core tests. @%:@@%:@
7595 +@%:@@%:@ ----------- @%:@@%:@
7600 +# Keep a trace of the command line.
7601 +# Strip out --no-create and --no-recursion so they do not pile up.
7602 +# Also quote any args containing shell meta-characters.
7608 + -no-create | --no-create | --no-creat | --no-crea | --no-cre \
7609 + | --no-cr | --no-c | -n ) continue ;;
7610 + -no-recursion | --no-recursion | --no-recursio | --no-recursi \
7611 + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
7613 + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
7614 + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
7616 + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
7617 + # Get rid of the leading space.
7621 +# When interrupted or exit'd, cleanup temporary files, and complete
7622 +# config.log. We remove comments because anyway the quotes in there
7623 +# would cause problems or look ugly.
7624 +# WARNING: Be sure not to use single quotes in there, as some shells,
7625 +# such as our DU 5.0 friend, will then `close' the trap.
7626 +trap 'exit_status=$?
7627 + # Save into config.log some information that might help in debugging.
7632 +@%:@@%:@ ---------------- @%:@@%:@
7633 +@%:@@%:@ Cache variables. @%:@@%:@
7634 +@%:@@%:@ ---------------- @%:@@%:@
7637 + # The following way of writing the cache mishandles newlines in values,
7640 + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
7643 + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
7644 + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
7648 + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
7655 +@%:@@%:@ ----------------- @%:@@%:@
7656 +@%:@@%:@ Output variables. @%:@@%:@
7657 +@%:@@%:@ ----------------- @%:@@%:@
7660 + for ac_var in $ac_subst_vars
7662 + eval ac_val=$`echo $ac_var`
7663 + echo "$ac_var='"'"'$ac_val'"'"'"
7667 + if test -n "$ac_subst_files"; then
7669 +@%:@@%:@ ------------- @%:@@%:@
7670 +@%:@@%:@ Output files. @%:@@%:@
7671 +@%:@@%:@ ------------- @%:@@%:@
7674 + for ac_var in $ac_subst_files
7676 + eval ac_val=$`echo $ac_var`
7677 + echo "$ac_var='"'"'$ac_val'"'"'"
7682 + if test -s confdefs.h; then
7684 +@%:@@%:@ ----------- @%:@@%:@
7685 +@%:@@%:@ confdefs.h. @%:@@%:@
7686 +@%:@@%:@ ----------- @%:@@%:@
7689 + sed "/^$/d" confdefs.h | sort
7692 + test "$ac_signal" != 0 &&
7693 + echo "$as_me: caught signal $ac_signal"
7694 + echo "$as_me: exit $exit_status"
7696 + rm -f core core.* *.core &&
7697 + rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
7700 +for ac_signal in 1 2 13 15; do
7701 + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
7705 +# confdefs.h avoids OS command line length limits that DEFS can exceed.
7706 +rm -rf conftest* confdefs.h
7707 +# AIX cpp loses on an empty file, so make sure it contains at least a newline.
7710 +# Predefined preprocessor variables.
7712 +cat >>confdefs.h <<_ACEOF
7713 +@%:@define PACKAGE_NAME "$PACKAGE_NAME"
7717 +cat >>confdefs.h <<_ACEOF
7718 +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
7722 +cat >>confdefs.h <<_ACEOF
7723 +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
7727 +cat >>confdefs.h <<_ACEOF
7728 +@%:@define PACKAGE_STRING "$PACKAGE_STRING"
7732 +cat >>confdefs.h <<_ACEOF
7733 +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
7737 +# Let the site file select an alternate cache file if it wants to.
7738 +# Prefer explicitly selected file to automatically selected ones.
7739 +if test -z "$CONFIG_SITE"; then
7740 + if test "x$prefix" != xNONE; then
7741 + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
7743 + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
7746 +for ac_site_file in $CONFIG_SITE; do
7747 + if test -r "$ac_site_file"; then
7748 + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
7749 +echo "$as_me: loading site script $ac_site_file" >&6;}
7750 + sed 's/^/| /' "$ac_site_file" >&5
7755 +if test -r "$cache_file"; then
7756 + # Some versions of bash will fail to source /dev/null (special
7757 + # files actually), so we avoid doing that.
7758 + if test -f "$cache_file"; then
7759 + { echo "$as_me:$LINENO: loading cache $cache_file" >&5
7760 +echo "$as_me: loading cache $cache_file" >&6;}
7761 + case $cache_file in
7762 + [\\/]* | ?:[\\/]* ) . $cache_file;;
7763 + *) . ./$cache_file;;
7767 + { echo "$as_me:$LINENO: creating cache $cache_file" >&5
7768 +echo "$as_me: creating cache $cache_file" >&6;}
7772 +# Check that the precious variables saved in the cache have kept the same
7774 +ac_cache_corrupted=false
7775 +for ac_var in `(set) 2>&1 |
7776 + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
7777 + eval ac_old_set=\$ac_cv_env_${ac_var}_set
7778 + eval ac_new_set=\$ac_env_${ac_var}_set
7779 + eval ac_old_val="\$ac_cv_env_${ac_var}_value"
7780 + eval ac_new_val="\$ac_env_${ac_var}_value"
7781 + case $ac_old_set,$ac_new_set in
7783 + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
7784 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
7785 + ac_cache_corrupted=: ;;
7787 + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
7788 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
7789 + ac_cache_corrupted=: ;;
7792 + if test "x$ac_old_val" != "x$ac_new_val"; then
7793 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
7794 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
7795 + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
7796 +echo "$as_me: former value: $ac_old_val" >&2;}
7797 + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
7798 +echo "$as_me: current value: $ac_new_val" >&2;}
7799 + ac_cache_corrupted=:
7802 + # Pass precious variables to config.status.
7803 + if test "$ac_new_set" = set; then
7804 + case $ac_new_val in
7805 + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
7806 + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
7807 + *) ac_arg=$ac_var=$ac_new_val ;;
7809 + case " $ac_configure_args " in
7810 + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
7811 + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
7815 +if $ac_cache_corrupted; then
7816 + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
7817 +echo "$as_me: error: changes in the environment can compromise the build" >&2;}
7818 + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
7819 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
7820 + { (exit 1); exit 1; }; }
7824 +ac_cpp='$CPP $CPPFLAGS'
7825 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7826 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7827 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
7848 +# This works around the fact that libtool configuration may change LD
7849 +# for this particular configuration, but some shells, instead of
7850 +# keeping the changes in LD private, export them just because LD is
7852 +ORIGINAL_LD_FOR_MULTILIBS=$LD
7855 +for ac_dir in . $srcdir/.; do
7856 + if test -f $ac_dir/install-sh; then
7857 + ac_aux_dir=$ac_dir
7858 + ac_install_sh="$ac_aux_dir/install-sh -c"
7860 + elif test -f $ac_dir/install.sh; then
7861 + ac_aux_dir=$ac_dir
7862 + ac_install_sh="$ac_aux_dir/install.sh -c"
7864 + elif test -f $ac_dir/shtool; then
7865 + ac_aux_dir=$ac_dir
7866 + ac_install_sh="$ac_aux_dir/shtool install -c"
7870 +if test -z "$ac_aux_dir"; then
7871 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in . $srcdir/." >&5
7872 +echo "$as_me: error: cannot find install-sh or install.sh in . $srcdir/." >&2;}
7873 + { (exit 1); exit 1; }; }
7875 +ac_config_guess="$SHELL $ac_aux_dir/config.guess"
7876 +ac_config_sub="$SHELL $ac_aux_dir/config.sub"
7877 +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
7880 +# Make sure we can run config.sub.
7881 +$ac_config_sub sun4 >/dev/null 2>&1 ||
7882 + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
7883 +echo "$as_me: error: cannot run $ac_config_sub" >&2;}
7884 + { (exit 1); exit 1; }; }
7886 +echo "$as_me:$LINENO: checking build system type" >&5
7887 +echo $ECHO_N "checking build system type... $ECHO_C" >&6
7888 +if test "${ac_cv_build+set}" = set; then
7889 + echo $ECHO_N "(cached) $ECHO_C" >&6
7891 + ac_cv_build_alias=$build_alias
7892 +test -z "$ac_cv_build_alias" &&
7893 + ac_cv_build_alias=`$ac_config_guess`
7894 +test -z "$ac_cv_build_alias" &&
7895 + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
7896 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
7897 + { (exit 1); exit 1; }; }
7898 +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
7899 + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
7900 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
7901 + { (exit 1); exit 1; }; }
7904 +echo "$as_me:$LINENO: result: $ac_cv_build" >&5
7905 +echo "${ECHO_T}$ac_cv_build" >&6
7907 +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
7908 +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
7909 +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
7912 +echo "$as_me:$LINENO: checking host system type" >&5
7913 +echo $ECHO_N "checking host system type... $ECHO_C" >&6
7914 +if test "${ac_cv_host+set}" = set; then
7915 + echo $ECHO_N "(cached) $ECHO_C" >&6
7917 + ac_cv_host_alias=$host_alias
7918 +test -z "$ac_cv_host_alias" &&
7919 + ac_cv_host_alias=$ac_cv_build_alias
7920 +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
7921 + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
7922 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
7923 + { (exit 1); exit 1; }; }
7926 +echo "$as_me:$LINENO: result: $ac_cv_host" >&5
7927 +echo "${ECHO_T}$ac_cv_host" >&6
7929 +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
7930 +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
7931 +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
7934 +am__api_version="1.6"
7935 +# Find a good install program. We prefer a C program (faster),
7936 +# so one script is as good as another. But avoid the broken or
7937 +# incompatible versions:
7938 +# SysV /etc/install, /usr/sbin/install
7939 +# SunOS /usr/etc/install
7940 +# IRIX /sbin/install
7942 +# AmigaOS /C/install, which installs bootblocks on floppy discs
7943 +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
7944 +# AFS /usr/afsws/bin/install, which mishandles nonexistent args
7945 +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
7946 +# ./install, which can be erroneously created by make from ./install.sh.
7947 +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
7948 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
7949 +if test -z "$INSTALL"; then
7950 +if test "${ac_cv_path_install+set}" = set; then
7951 + echo $ECHO_N "(cached) $ECHO_C" >&6
7953 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7954 +for as_dir in $PATH
7957 + test -z "$as_dir" && as_dir=.
7958 + # Account for people who put trailing slashes in PATH elements.
7960 + ./ | .// | /cC/* | \
7961 + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
7964 + # OSF1 and SCO ODT 3.0 have their own names for install.
7965 + # Don't use installbsd from OSF since it installs stuff as root
7967 + for ac_prog in ginstall scoinst install; do
7968 + for ac_exec_ext in '' $ac_executable_extensions; do
7969 + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
7970 + if test $ac_prog = install &&
7971 + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
7972 + # AIX install. It has an incompatible calling convention.
7974 + elif test $ac_prog = install &&
7975 + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
7976 + # program-specific install script used by HP pwplus--don't use.
7979 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
7991 + if test "${ac_cv_path_install+set}" = set; then
7992 + INSTALL=$ac_cv_path_install
7994 + # As a last resort, use the slow shell script. We don't cache a
7995 + # path for INSTALL within a source directory, because that will
7996 + # break other packages using the cache if that directory is
7997 + # removed, or if the path is relative.
7998 + INSTALL=$ac_install_sh
8001 +echo "$as_me:$LINENO: result: $INSTALL" >&5
8002 +echo "${ECHO_T}$INSTALL" >&6
8004 +# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
8005 +# It thinks the first close brace ends the variable substitution.
8006 +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
8008 +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
8010 +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
8012 +echo "$as_me:$LINENO: checking whether build environment is sane" >&5
8013 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
8016 +echo timestamp > conftest.file
8017 +# Do `set' in a subshell so we don't clobber the current shell's
8018 +# arguments. Must try -L first in case configure is actually a
8019 +# symlink; some systems play weird games with the mod time of symlinks
8020 +# (eg FreeBSD returns the mod time of the symlink's containing
8023 + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
8024 + if test "$*" = "X"; then
8026 + set X `ls -t $srcdir/configure conftest.file`
8028 + rm -f conftest.file
8029 + if test "$*" != "X $srcdir/configure conftest.file" \
8030 + && test "$*" != "X conftest.file $srcdir/configure"; then
8032 + # If neither matched, then we have a broken ls. This can happen
8033 + # if, for instance, CONFIG_SHELL is bash and it inherits a
8034 + # broken ls alias from the environment. This has actually
8035 + # happened. Such a system could not be considered "sane".
8036 + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
8037 +alias in your environment" >&5
8038 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
8039 +alias in your environment" >&2;}
8040 + { (exit 1); exit 1; }; }
8043 + test "$2" = conftest.file
8049 + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
8050 +Check your system clock" >&5
8051 +echo "$as_me: error: newly created file is older than distributed files!
8052 +Check your system clock" >&2;}
8053 + { (exit 1); exit 1; }; }
8055 +echo "$as_me:$LINENO: result: yes" >&5
8056 +echo "${ECHO_T}yes" >&6
8057 +test "$program_prefix" != NONE &&
8058 + program_transform_name="s,^,$program_prefix,;$program_transform_name"
8059 +# Use a double $ so make ignores it.
8060 +test "$program_suffix" != NONE &&
8061 + program_transform_name="s,\$,$program_suffix,;$program_transform_name"
8062 +# Double any \ or $. echo might interpret backslashes.
8063 +# By default was `s,x,x', remove it if useless.
8064 +cat <<\_ACEOF >conftest.sed
8065 +s/[\\$]/&&/g;s/;s,x,x,$//
8067 +program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
8071 +# expand $ac_aux_dir to an absolute path
8072 +am_aux_dir=`cd $ac_aux_dir && pwd`
8074 +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
8075 +# Use eval to expand $SHELL
8076 +if eval "$MISSING --run true"; then
8077 + am_missing_run="$MISSING --run "
8080 + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
8081 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
8084 +for ac_prog in gawk mawk nawk awk
8086 + # Extract the first word of "$ac_prog", so it can be a program name with args.
8087 +set dummy $ac_prog; ac_word=$2
8088 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8089 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8090 +if test "${ac_cv_prog_AWK+set}" = set; then
8091 + echo $ECHO_N "(cached) $ECHO_C" >&6
8093 + if test -n "$AWK"; then
8094 + ac_cv_prog_AWK="$AWK" # Let the user override the test.
8096 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8097 +for as_dir in $PATH
8100 + test -z "$as_dir" && as_dir=.
8101 + for ac_exec_ext in '' $ac_executable_extensions; do
8102 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8103 + ac_cv_prog_AWK="$ac_prog"
8104 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8112 +AWK=$ac_cv_prog_AWK
8113 +if test -n "$AWK"; then
8114 + echo "$as_me:$LINENO: result: $AWK" >&5
8115 +echo "${ECHO_T}$AWK" >&6
8117 + echo "$as_me:$LINENO: result: no" >&5
8118 +echo "${ECHO_T}no" >&6
8121 + test -n "$AWK" && break
8124 +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \${MAKE}" >&5
8125 +echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
8126 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
8127 +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
8128 + echo $ECHO_N "(cached) $ECHO_C" >&6
8130 + cat >conftest.make <<\_ACEOF
8132 + @echo 'ac_maketemp="${MAKE}"'
8134 +# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
8135 +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
8136 +if test -n "$ac_maketemp"; then
8137 + eval ac_cv_prog_make_${ac_make}_set=yes
8139 + eval ac_cv_prog_make_${ac_make}_set=no
8141 +rm -f conftest.make
8143 +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
8144 + echo "$as_me:$LINENO: result: yes" >&5
8145 +echo "${ECHO_T}yes" >&6
8148 + echo "$as_me:$LINENO: result: no" >&5
8149 +echo "${ECHO_T}no" >&6
8150 + SET_MAKE="MAKE=${MAKE-make}"
8154 +# Check whether --enable-multilib or --disable-multilib was given.
8155 +if test "${enable_multilib+set}" = set; then
8156 + enableval="$enable_multilib"
8157 + case "${enableval}" in
8158 + yes) multilib=yes ;;
8159 + no) multilib=no ;;
8160 + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for multilib option" >&5
8161 +echo "$as_me: error: bad value ${enableval} for multilib option" >&2;}
8162 + { (exit 1); exit 1; }; } ;;
8168 +if test "${srcdir}" = "."; then
8169 + if test "${with_target_subdir}" != "." -a -n "${with_target_subdir}"; then
8170 + gc_basedir="${srcdir}/${with_multisrctop}../."
8172 + gc_basedir="${srcdir}/${with_multisrctop}."
8175 + gc_basedir="${srcdir}/."
8179 +for ac_dir in $gc_basedir/.. $srcdir/$gc_basedir/..; do
8180 + if test -f $ac_dir/install-sh; then
8181 + ac_aux_dir=$ac_dir
8182 + ac_install_sh="$ac_aux_dir/install-sh -c"
8184 + elif test -f $ac_dir/install.sh; then
8185 + ac_aux_dir=$ac_dir
8186 + ac_install_sh="$ac_aux_dir/install.sh -c"
8188 + elif test -f $ac_dir/shtool; then
8189 + ac_aux_dir=$ac_dir
8190 + ac_install_sh="$ac_aux_dir/shtool install -c"
8194 +if test -z "$ac_aux_dir"; then
8195 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $gc_basedir/.. $srcdir/$gc_basedir/.." >&5
8196 +echo "$as_me: error: cannot find install-sh or install.sh in $gc_basedir/.. $srcdir/$gc_basedir/.." >&2;}
8197 + { (exit 1); exit 1; }; }
8199 +ac_config_guess="$SHELL $ac_aux_dir/config.guess"
8200 +ac_config_sub="$SHELL $ac_aux_dir/config.sub"
8201 +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
8204 + # This overrides the previous occurrence for automake, but not for
8205 + # autoconf, which is exactly what we want.
8207 +for ac_dir in .. $srcdir/..; do
8208 + if test -f $ac_dir/install-sh; then
8209 + ac_aux_dir=$ac_dir
8210 + ac_install_sh="$ac_aux_dir/install-sh -c"
8212 + elif test -f $ac_dir/install.sh; then
8213 + ac_aux_dir=$ac_dir
8214 + ac_install_sh="$ac_aux_dir/install.sh -c"
8216 + elif test -f $ac_dir/shtool; then
8217 + ac_aux_dir=$ac_dir
8218 + ac_install_sh="$ac_aux_dir/shtool install -c"
8222 +if test -z "$ac_aux_dir"; then
8223 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in .. $srcdir/.." >&5
8224 +echo "$as_me: error: cannot find install-sh or install.sh in .. $srcdir/.." >&2;}
8225 + { (exit 1); exit 1; }; }
8227 +ac_config_guess="$SHELL $ac_aux_dir/config.guess"
8228 +ac_config_sub="$SHELL $ac_aux_dir/config.sub"
8229 +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
8233 +echo "$as_me:$LINENO: checking target system type" >&5
8234 +echo $ECHO_N "checking target system type... $ECHO_C" >&6
8235 +if test "${ac_cv_target+set}" = set; then
8236 + echo $ECHO_N "(cached) $ECHO_C" >&6
8238 + ac_cv_target_alias=$target_alias
8239 +test "x$ac_cv_target_alias" = "x" &&
8240 + ac_cv_target_alias=$ac_cv_host_alias
8241 +ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
8242 + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
8243 +echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
8244 + { (exit 1); exit 1; }; }
8247 +echo "$as_me:$LINENO: result: $ac_cv_target" >&5
8248 +echo "${ECHO_T}$ac_cv_target" >&6
8249 +target=$ac_cv_target
8250 +target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
8251 +target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
8252 +target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
8255 +# The aliases save the names the user supplied, while $host etc.
8256 +# will get canonicalized.
8257 +test -n "$target_alias" &&
8258 + test "$program_prefix$program_suffix$program_transform_name" = \
8260 + program_prefix=${target_alias}-
8262 +# This works around an automake problem.
8263 +mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs"
8266 + # test to see if srcdir already configured
8267 +if test "`cd $srcdir && pwd`" != "`pwd`" &&
8268 + test -f $srcdir/config.status; then
8269 + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
8270 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
8271 + { (exit 1); exit 1; }; }
8274 +# Define the identity of the package.
8279 +# Some tools Automake needs.
8281 +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
8284 +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
8287 +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
8290 +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
8293 +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
8296 +AMTAR=${AMTAR-"${am_missing_run}tar"}
8298 +install_sh=${install_sh-"$am_aux_dir/install-sh"}
8300 +# Installed binaries are usually stripped using `strip' when the user
8301 +# run `make install-strip'. However `strip' might not be the right
8302 +# tool to use in cross-compilation environments, therefore Automake
8303 +# will honor the `STRIP' environment variable to overrule this program.
8304 +if test "$cross_compiling" != no; then
8305 + if test -n "$ac_tool_prefix"; then
8306 + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
8307 +set dummy ${ac_tool_prefix}strip; ac_word=$2
8308 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8309 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8310 +if test "${ac_cv_prog_STRIP+set}" = set; then
8311 + echo $ECHO_N "(cached) $ECHO_C" >&6
8313 + if test -n "$STRIP"; then
8314 + ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
8316 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8317 +for as_dir in $PATH
8320 + test -z "$as_dir" && as_dir=.
8321 + for ac_exec_ext in '' $ac_executable_extensions; do
8322 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8323 + ac_cv_prog_STRIP="${ac_tool_prefix}strip"
8324 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8332 +STRIP=$ac_cv_prog_STRIP
8333 +if test -n "$STRIP"; then
8334 + echo "$as_me:$LINENO: result: $STRIP" >&5
8335 +echo "${ECHO_T}$STRIP" >&6
8337 + echo "$as_me:$LINENO: result: no" >&5
8338 +echo "${ECHO_T}no" >&6
8342 +if test -z "$ac_cv_prog_STRIP"; then
8343 + ac_ct_STRIP=$STRIP
8344 + # Extract the first word of "strip", so it can be a program name with args.
8345 +set dummy strip; ac_word=$2
8346 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8347 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8348 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
8349 + echo $ECHO_N "(cached) $ECHO_C" >&6
8351 + if test -n "$ac_ct_STRIP"; then
8352 + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
8354 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8355 +for as_dir in $PATH
8358 + test -z "$as_dir" && as_dir=.
8359 + for ac_exec_ext in '' $ac_executable_extensions; do
8360 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8361 + ac_cv_prog_ac_ct_STRIP="strip"
8362 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8368 + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
8371 +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
8372 +if test -n "$ac_ct_STRIP"; then
8373 + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
8374 +echo "${ECHO_T}$ac_ct_STRIP" >&6
8376 + echo "$as_me:$LINENO: result: no" >&5
8377 +echo "${ECHO_T}no" >&6
8380 + STRIP=$ac_ct_STRIP
8382 + STRIP="$ac_cv_prog_STRIP"
8386 +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
8388 +# We need awk for the "check" target. The system "awk" is bad on
8394 +# AC_CHECK_TOOL does AC_REQUIRE (AC_CANONICAL_BUILD). If we don't
8395 +# run it explicitly here, it will be run implicitly before
8396 +# NEWLIB_CONFIGURE, which doesn't work because that means that it will
8397 +# be run before AC_CANONICAL_HOST.
8400 +if test -n "$ac_tool_prefix"; then
8401 + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
8402 +set dummy ${ac_tool_prefix}as; ac_word=$2
8403 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8404 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8405 +if test "${ac_cv_prog_AS+set}" = set; then
8406 + echo $ECHO_N "(cached) $ECHO_C" >&6
8408 + if test -n "$AS"; then
8409 + ac_cv_prog_AS="$AS" # Let the user override the test.
8411 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8412 +for as_dir in $PATH
8415 + test -z "$as_dir" && as_dir=.
8416 + for ac_exec_ext in '' $ac_executable_extensions; do
8417 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8418 + ac_cv_prog_AS="${ac_tool_prefix}as"
8419 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8428 +if test -n "$AS"; then
8429 + echo "$as_me:$LINENO: result: $AS" >&5
8430 +echo "${ECHO_T}$AS" >&6
8432 + echo "$as_me:$LINENO: result: no" >&5
8433 +echo "${ECHO_T}no" >&6
8437 +if test -z "$ac_cv_prog_AS"; then
8439 + # Extract the first word of "as", so it can be a program name with args.
8440 +set dummy as; ac_word=$2
8441 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8442 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8443 +if test "${ac_cv_prog_ac_ct_AS+set}" = set; then
8444 + echo $ECHO_N "(cached) $ECHO_C" >&6
8446 + if test -n "$ac_ct_AS"; then
8447 + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
8449 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8450 +for as_dir in $PATH
8453 + test -z "$as_dir" && as_dir=.
8454 + for ac_exec_ext in '' $ac_executable_extensions; do
8455 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8456 + ac_cv_prog_ac_ct_AS="as"
8457 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8465 +ac_ct_AS=$ac_cv_prog_ac_ct_AS
8466 +if test -n "$ac_ct_AS"; then
8467 + echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
8468 +echo "${ECHO_T}$ac_ct_AS" >&6
8470 + echo "$as_me:$LINENO: result: no" >&5
8471 +echo "${ECHO_T}no" >&6
8476 + AS="$ac_cv_prog_AS"
8479 +if test -n "$ac_tool_prefix"; then
8480 + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
8481 +set dummy ${ac_tool_prefix}ar; ac_word=$2
8482 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8483 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8484 +if test "${ac_cv_prog_AR+set}" = set; then
8485 + echo $ECHO_N "(cached) $ECHO_C" >&6
8487 + if test -n "$AR"; then
8488 + ac_cv_prog_AR="$AR" # Let the user override the test.
8490 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8491 +for as_dir in $PATH
8494 + test -z "$as_dir" && as_dir=.
8495 + for ac_exec_ext in '' $ac_executable_extensions; do
8496 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8497 + ac_cv_prog_AR="${ac_tool_prefix}ar"
8498 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8507 +if test -n "$AR"; then
8508 + echo "$as_me:$LINENO: result: $AR" >&5
8509 +echo "${ECHO_T}$AR" >&6
8511 + echo "$as_me:$LINENO: result: no" >&5
8512 +echo "${ECHO_T}no" >&6
8516 +if test -z "$ac_cv_prog_AR"; then
8518 + # Extract the first word of "ar", so it can be a program name with args.
8519 +set dummy ar; ac_word=$2
8520 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8521 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8522 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
8523 + echo $ECHO_N "(cached) $ECHO_C" >&6
8525 + if test -n "$ac_ct_AR"; then
8526 + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
8528 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8529 +for as_dir in $PATH
8532 + test -z "$as_dir" && as_dir=.
8533 + for ac_exec_ext in '' $ac_executable_extensions; do
8534 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8535 + ac_cv_prog_ac_ct_AR="ar"
8536 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8544 +ac_ct_AR=$ac_cv_prog_ac_ct_AR
8545 +if test -n "$ac_ct_AR"; then
8546 + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
8547 +echo "${ECHO_T}$ac_ct_AR" >&6
8549 + echo "$as_me:$LINENO: result: no" >&5
8550 +echo "${ECHO_T}no" >&6
8555 + AR="$ac_cv_prog_AR"
8558 +if test -n "$ac_tool_prefix"; then
8559 + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
8560 +set dummy ${ac_tool_prefix}ranlib; ac_word=$2
8561 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8562 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8563 +if test "${ac_cv_prog_RANLIB+set}" = set; then
8564 + echo $ECHO_N "(cached) $ECHO_C" >&6
8566 + if test -n "$RANLIB"; then
8567 + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
8569 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8570 +for as_dir in $PATH
8573 + test -z "$as_dir" && as_dir=.
8574 + for ac_exec_ext in '' $ac_executable_extensions; do
8575 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8576 + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
8577 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8585 +RANLIB=$ac_cv_prog_RANLIB
8586 +if test -n "$RANLIB"; then
8587 + echo "$as_me:$LINENO: result: $RANLIB" >&5
8588 +echo "${ECHO_T}$RANLIB" >&6
8590 + echo "$as_me:$LINENO: result: no" >&5
8591 +echo "${ECHO_T}no" >&6
8595 +if test -z "$ac_cv_prog_RANLIB"; then
8596 + ac_ct_RANLIB=$RANLIB
8597 + # Extract the first word of "ranlib", so it can be a program name with args.
8598 +set dummy ranlib; ac_word=$2
8599 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8600 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8601 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
8602 + echo $ECHO_N "(cached) $ECHO_C" >&6
8604 + if test -n "$ac_ct_RANLIB"; then
8605 + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
8607 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8608 +for as_dir in $PATH
8611 + test -z "$as_dir" && as_dir=.
8612 + for ac_exec_ext in '' $ac_executable_extensions; do
8613 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8614 + ac_cv_prog_ac_ct_RANLIB="ranlib"
8615 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8621 + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
8624 +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
8625 +if test -n "$ac_ct_RANLIB"; then
8626 + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
8627 +echo "${ECHO_T}$ac_ct_RANLIB" >&6
8629 + echo "$as_me:$LINENO: result: no" >&5
8630 +echo "${ECHO_T}no" >&6
8633 + RANLIB=$ac_ct_RANLIB
8635 + RANLIB="$ac_cv_prog_RANLIB"
8639 +# Find a good install program. We prefer a C program (faster),
8640 +# so one script is as good as another. But avoid the broken or
8641 +# incompatible versions:
8642 +# SysV /etc/install, /usr/sbin/install
8643 +# SunOS /usr/etc/install
8644 +# IRIX /sbin/install
8646 +# AmigaOS /C/install, which installs bootblocks on floppy discs
8647 +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
8648 +# AFS /usr/afsws/bin/install, which mishandles nonexistent args
8649 +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
8650 +# ./install, which can be erroneously created by make from ./install.sh.
8651 +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
8652 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
8653 +if test -z "$INSTALL"; then
8654 +if test "${ac_cv_path_install+set}" = set; then
8655 + echo $ECHO_N "(cached) $ECHO_C" >&6
8657 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8658 +for as_dir in $PATH
8661 + test -z "$as_dir" && as_dir=.
8662 + # Account for people who put trailing slashes in PATH elements.
8664 + ./ | .// | /cC/* | \
8665 + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
8668 + # OSF1 and SCO ODT 3.0 have their own names for install.
8669 + # Don't use installbsd from OSF since it installs stuff as root
8671 + for ac_prog in ginstall scoinst install; do
8672 + for ac_exec_ext in '' $ac_executable_extensions; do
8673 + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
8674 + if test $ac_prog = install &&
8675 + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
8676 + # AIX install. It has an incompatible calling convention.
8678 + elif test $ac_prog = install &&
8679 + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
8680 + # program-specific install script used by HP pwplus--don't use.
8683 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
8695 + if test "${ac_cv_path_install+set}" = set; then
8696 + INSTALL=$ac_cv_path_install
8698 + # As a last resort, use the slow shell script. We don't cache a
8699 + # path for INSTALL within a source directory, because that will
8700 + # break other packages using the cache if that directory is
8701 + # removed, or if the path is relative.
8702 + INSTALL=$ac_install_sh
8705 +echo "$as_me:$LINENO: result: $INSTALL" >&5
8706 +echo "${ECHO_T}$INSTALL" >&6
8708 +# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
8709 +# It thinks the first close brace ends the variable substitution.
8710 +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
8712 +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
8714 +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
8717 +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
8718 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
8719 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
8720 +if test "${enable_maintainer_mode+set}" = set; then
8721 + enableval="$enable_maintainer_mode"
8722 + USE_MAINTAINER_MODE=$enableval
8724 + USE_MAINTAINER_MODE=no
8726 + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
8727 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
8730 +if test $USE_MAINTAINER_MODE = yes; then
8731 + MAINTAINER_MODE_TRUE=
8732 + MAINTAINER_MODE_FALSE='#'
8734 + MAINTAINER_MODE_TRUE='#'
8735 + MAINTAINER_MODE_FALSE=
8738 + MAINT=$MAINTAINER_MODE_TRUE
8742 +# We need AC_EXEEXT to keep automake happy in cygnus mode. However,
8743 +# at least currently, we never actually build a program, so we never
8744 +# need to use $(EXEEXT). Moreover, the test for EXEEXT normally
8745 +# fails, because we are probably configuring with a cross compiler
8746 +# which can't create executables. So we include AC_EXEEXT to keep
8747 +# automake happy, but we don't execute it, since we don't care about
8750 + # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
8751 + # to nothing, so nothing would remain between `then' and `fi' if it
8752 + # were not for the `:' below.
8757 +. ${srcdir}/configure.host
8759 +case ${gc_basedir} in
8760 +/* | A-Za-z:/\\*) gc_flagbasedir=${gc_basedir} ;;
8761 +*) gc_flagbasedir='$(top_builddir)/'${gc_basedir} ;;
8764 +gc_cflags="${gc_cflags} -I"'$(top_builddir)'"/./targ-include -I${gc_flagbasedir}/libc/include"
8767 + gc_cflags="${gc_cflags} -I${gc_flagbasedir}/../winsup/include"
8772 +GC_CFLAGS=${gc_cflags}
8776 +# Check whether --enable-shared or --disable-shared was given.
8777 +if test "${enable_shared+set}" = set; then
8778 + enableval="$enable_shared"
8779 + p=${PACKAGE-default}
8781 +yes) enable_shared=yes ;;
8782 +no) enable_shared=no ;;
8785 + # Look at the argument we got. We use all the common list separators.
8786 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
8787 + for pkg in $enableval; do
8788 + if test "X$pkg" = "X$p"; then
8792 + IFS="$ac_save_ifs"
8798 +# Check whether --enable-static or --disable-static was given.
8799 +if test "${enable_static+set}" = set; then
8800 + enableval="$enable_static"
8801 + p=${PACKAGE-default}
8803 +yes) enable_static=yes ;;
8804 +no) enable_static=no ;;
8807 + # Look at the argument we got. We use all the common list separators.
8808 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
8809 + for pkg in $enableval; do
8810 + if test "X$pkg" = "X$p"; then
8814 + IFS="$ac_save_ifs"
8820 +# Check whether --enable-fast-install or --disable-fast-install was given.
8821 +if test "${enable_fast_install+set}" = set; then
8822 + enableval="$enable_fast_install"
8823 + p=${PACKAGE-default}
8825 +yes) enable_fast_install=yes ;;
8826 +no) enable_fast_install=no ;;
8828 + enable_fast_install=no
8829 + # Look at the argument we got. We use all the common list separators.
8830 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
8831 + for pkg in $enableval; do
8832 + if test "X$pkg" = "X$p"; then
8833 + enable_fast_install=yes
8836 + IFS="$ac_save_ifs"
8840 + enable_fast_install=yes
8842 +rm -f .deps 2>/dev/null
8843 +mkdir .deps 2>/dev/null
8844 +if test -d .deps; then
8847 + # MS-DOS does not allow filenames that begin with a dot.
8850 +rmdir .deps 2>/dev/null
8853 + ac_config_commands="$ac_config_commands depfiles"
8856 +am_make=${MAKE-make}
8857 +cat > confinc << 'END'
8861 +# If we don't find an include directive, just comment out the code.
8862 +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
8863 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
8867 +# First try GNU make style include.
8868 +echo "include confinc" > confmf
8869 +# We grep out `Entering directory' and `Leaving directory'
8870 +# messages which can occur if `w' ends up in MAKEFLAGS.
8871 +# In particular we don't look at `^make:' because GNU make might
8872 +# be invoked under some other name (usually "gmake"), in which
8873 +# case it prints its new name instead of `make'.
8874 +if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then
8875 + am__include=include
8879 +# Now try BSD make style include.
8880 +if test "$am__include" = "#"; then
8881 + echo '.include "confinc"' > confmf
8882 + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
8883 + am__include=.include
8890 +echo "$as_me:$LINENO: result: $_am_result" >&5
8891 +echo "${ECHO_T}$_am_result" >&6
8892 +rm -f confinc confmf
8894 +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
8895 +if test "${enable_dependency_tracking+set}" = set; then
8896 + enableval="$enable_dependency_tracking"
8899 +if test "x$enable_dependency_tracking" != xno; then
8900 + am_depcomp="$ac_aux_dir/depcomp"
8901 + AMDEPBACKSLASH='\'
8905 +if test "x$enable_dependency_tracking" != xno; then
8916 +ac_cpp='$CPP $CPPFLAGS'
8917 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
8918 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
8919 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
8920 +if test -n "$ac_tool_prefix"; then
8921 + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
8922 +set dummy ${ac_tool_prefix}gcc; ac_word=$2
8923 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8924 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8925 +if test "${ac_cv_prog_CC+set}" = set; then
8926 + echo $ECHO_N "(cached) $ECHO_C" >&6
8928 + if test -n "$CC"; then
8929 + ac_cv_prog_CC="$CC" # Let the user override the test.
8931 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8932 +for as_dir in $PATH
8935 + test -z "$as_dir" && as_dir=.
8936 + for ac_exec_ext in '' $ac_executable_extensions; do
8937 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8938 + ac_cv_prog_CC="${ac_tool_prefix}gcc"
8939 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8948 +if test -n "$CC"; then
8949 + echo "$as_me:$LINENO: result: $CC" >&5
8950 +echo "${ECHO_T}$CC" >&6
8952 + echo "$as_me:$LINENO: result: no" >&5
8953 +echo "${ECHO_T}no" >&6
8957 +if test -z "$ac_cv_prog_CC"; then
8959 + # Extract the first word of "gcc", so it can be a program name with args.
8960 +set dummy gcc; ac_word=$2
8961 +echo "$as_me:$LINENO: checking for $ac_word" >&5
8962 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
8963 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
8964 + echo $ECHO_N "(cached) $ECHO_C" >&6
8966 + if test -n "$ac_ct_CC"; then
8967 + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
8969 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8970 +for as_dir in $PATH
8973 + test -z "$as_dir" && as_dir=.
8974 + for ac_exec_ext in '' $ac_executable_extensions; do
8975 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
8976 + ac_cv_prog_ac_ct_CC="gcc"
8977 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
8985 +ac_ct_CC=$ac_cv_prog_ac_ct_CC
8986 +if test -n "$ac_ct_CC"; then
8987 + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
8988 +echo "${ECHO_T}$ac_ct_CC" >&6
8990 + echo "$as_me:$LINENO: result: no" >&5
8991 +echo "${ECHO_T}no" >&6
8996 + CC="$ac_cv_prog_CC"
8999 +if test -z "$CC"; then
9000 + if test -n "$ac_tool_prefix"; then
9001 + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
9002 +set dummy ${ac_tool_prefix}cc; ac_word=$2
9003 +echo "$as_me:$LINENO: checking for $ac_word" >&5
9004 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
9005 +if test "${ac_cv_prog_CC+set}" = set; then
9006 + echo $ECHO_N "(cached) $ECHO_C" >&6
9008 + if test -n "$CC"; then
9009 + ac_cv_prog_CC="$CC" # Let the user override the test.
9011 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9012 +for as_dir in $PATH
9015 + test -z "$as_dir" && as_dir=.
9016 + for ac_exec_ext in '' $ac_executable_extensions; do
9017 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
9018 + ac_cv_prog_CC="${ac_tool_prefix}cc"
9019 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9028 +if test -n "$CC"; then
9029 + echo "$as_me:$LINENO: result: $CC" >&5
9030 +echo "${ECHO_T}$CC" >&6
9032 + echo "$as_me:$LINENO: result: no" >&5
9033 +echo "${ECHO_T}no" >&6
9037 +if test -z "$ac_cv_prog_CC"; then
9039 + # Extract the first word of "cc", so it can be a program name with args.
9040 +set dummy cc; ac_word=$2
9041 +echo "$as_me:$LINENO: checking for $ac_word" >&5
9042 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
9043 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
9044 + echo $ECHO_N "(cached) $ECHO_C" >&6
9046 + if test -n "$ac_ct_CC"; then
9047 + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
9049 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9050 +for as_dir in $PATH
9053 + test -z "$as_dir" && as_dir=.
9054 + for ac_exec_ext in '' $ac_executable_extensions; do
9055 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
9056 + ac_cv_prog_ac_ct_CC="cc"
9057 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9065 +ac_ct_CC=$ac_cv_prog_ac_ct_CC
9066 +if test -n "$ac_ct_CC"; then
9067 + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
9068 +echo "${ECHO_T}$ac_ct_CC" >&6
9070 + echo "$as_me:$LINENO: result: no" >&5
9071 +echo "${ECHO_T}no" >&6
9076 + CC="$ac_cv_prog_CC"
9080 +if test -z "$CC"; then
9081 + # Extract the first word of "cc", so it can be a program name with args.
9082 +set dummy cc; 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_CC+set}" = set; then
9086 + echo $ECHO_N "(cached) $ECHO_C" >&6
9088 + if test -n "$CC"; then
9089 + ac_cv_prog_CC="$CC" # Let the user override the test.
9091 + ac_prog_rejected=no
9092 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9093 +for as_dir in $PATH
9096 + test -z "$as_dir" && as_dir=.
9097 + for ac_exec_ext in '' $ac_executable_extensions; do
9098 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
9099 + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
9100 + ac_prog_rejected=yes
9103 + ac_cv_prog_CC="cc"
9104 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9110 +if test $ac_prog_rejected = yes; then
9111 + # We found a bogon in the path, so make sure we never use it.
9112 + set dummy $ac_cv_prog_CC
9114 + if test $@%:@ != 0; then
9115 + # We chose a different compiler from the bogus one.
9116 + # However, it has the same basename, so the bogon will be chosen
9117 + # first if we set CC to just the basename; use the full file name.
9119 + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
9125 +if test -n "$CC"; then
9126 + echo "$as_me:$LINENO: result: $CC" >&5
9127 +echo "${ECHO_T}$CC" >&6
9129 + echo "$as_me:$LINENO: result: no" >&5
9130 +echo "${ECHO_T}no" >&6
9134 +if test -z "$CC"; then
9135 + if test -n "$ac_tool_prefix"; then
9138 + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
9139 +set dummy $ac_tool_prefix$ac_prog; ac_word=$2
9140 +echo "$as_me:$LINENO: checking for $ac_word" >&5
9141 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
9142 +if test "${ac_cv_prog_CC+set}" = set; then
9143 + echo $ECHO_N "(cached) $ECHO_C" >&6
9145 + if test -n "$CC"; then
9146 + ac_cv_prog_CC="$CC" # Let the user override the test.
9148 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9149 +for as_dir in $PATH
9152 + test -z "$as_dir" && as_dir=.
9153 + for ac_exec_ext in '' $ac_executable_extensions; do
9154 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
9155 + ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
9156 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9165 +if test -n "$CC"; then
9166 + echo "$as_me:$LINENO: result: $CC" >&5
9167 +echo "${ECHO_T}$CC" >&6
9169 + echo "$as_me:$LINENO: result: no" >&5
9170 +echo "${ECHO_T}no" >&6
9173 + test -n "$CC" && break
9176 +if test -z "$CC"; then
9180 + # Extract the first word of "$ac_prog", so it can be a program name with args.
9181 +set dummy $ac_prog; ac_word=$2
9182 +echo "$as_me:$LINENO: checking for $ac_word" >&5
9183 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
9184 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
9185 + echo $ECHO_N "(cached) $ECHO_C" >&6
9187 + if test -n "$ac_ct_CC"; then
9188 + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
9190 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9191 +for as_dir in $PATH
9194 + test -z "$as_dir" && as_dir=.
9195 + for ac_exec_ext in '' $ac_executable_extensions; do
9196 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
9197 + ac_cv_prog_ac_ct_CC="$ac_prog"
9198 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9206 +ac_ct_CC=$ac_cv_prog_ac_ct_CC
9207 +if test -n "$ac_ct_CC"; then
9208 + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
9209 +echo "${ECHO_T}$ac_ct_CC" >&6
9211 + echo "$as_me:$LINENO: result: no" >&5
9212 +echo "${ECHO_T}no" >&6
9215 + test -n "$ac_ct_CC" && break
9224 +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5
9225 +echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;}
9226 + { (exit 1); exit 1; }; }
9228 +# Provide some information about the compiler.
9229 +echo "$as_me:$LINENO:" \
9230 + "checking for C compiler version" >&5
9231 +ac_compiler=`set X $ac_compile; echo $2`
9232 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
9233 + (eval $ac_compiler --version </dev/null >&5) 2>&5
9235 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9236 + (exit $ac_status); }
9237 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
9238 + (eval $ac_compiler -v </dev/null >&5) 2>&5
9240 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9241 + (exit $ac_status); }
9242 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
9243 + (eval $ac_compiler -V </dev/null >&5) 2>&5
9245 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9246 + (exit $ac_status); }
9248 +cat >conftest.$ac_ext <<_ACEOF
9249 +#line $LINENO "configure"
9250 +#include "confdefs.h"
9260 +ac_clean_files_save=$ac_clean_files
9261 +ac_clean_files="$ac_clean_files a.out a.exe"
9262 +# Try to create an executable without -o first, disregard a.out.
9263 +# It will help us diagnose broken compilers, and finding out an intuition
9265 +echo "$as_me:$LINENO: checking for C compiler default output" >&5
9266 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
9267 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
9268 +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
9269 + (eval $ac_link_default) 2>&5
9271 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9272 + (exit $ac_status); }; then
9273 + # Find the output, starting from the most likely. This scheme is
9274 +# not robust to junk in `.', hence go to wildcards (a.*) only as a last
9277 +# Be careful to initialize this variable, since it used to be cached.
9278 +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
9280 +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.*; do
9281 + test -f "$ac_file" || continue
9283 + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
9284 + a.out ) # We found the default executable, but exeext='' is most
9285 + # certainly right.
9287 + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
9288 + # FIXME: I believe we export ac_cv_exeext for Libtool --akim.
9289 + export ac_cv_exeext
9295 + echo "$as_me: failed program was:" >&5
9296 +cat conftest.$ac_ext >&5
9297 +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
9298 +check \`config.log' for details." >&5
9299 +echo "$as_me: error: C compiler cannot create executables
9300 +check \`config.log' for details." >&2;}
9301 + { (exit 77); exit 77; }; }
9304 +ac_exeext=$ac_cv_exeext
9305 +echo "$as_me:$LINENO: result: $ac_file" >&5
9306 +echo "${ECHO_T}$ac_file" >&6
9308 +# Check the compiler produces executables we can run. If not, either
9309 +# the compiler is broken, or we cross compile.
9310 +echo "$as_me:$LINENO: checking whether the C compiler works" >&5
9311 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
9312 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
9313 +# If not cross compiling, check that we can run a simple program.
9314 +if test "$cross_compiling" != yes; then
9315 + if { ac_try='./$ac_file'
9316 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9317 + (eval $ac_try) 2>&5
9319 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9320 + (exit $ac_status); }; }; then
9321 + cross_compiling=no
9323 + if test "$cross_compiling" = maybe; then
9324 + cross_compiling=yes
9326 + { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
9327 +If you meant to cross compile, use \`--host'." >&5
9328 +echo "$as_me: error: cannot run C compiled programs.
9329 +If you meant to cross compile, use \`--host'." >&2;}
9330 + { (exit 1); exit 1; }; }
9334 +echo "$as_me:$LINENO: result: yes" >&5
9335 +echo "${ECHO_T}yes" >&6
9337 +rm -f a.out a.exe conftest$ac_cv_exeext
9338 +ac_clean_files=$ac_clean_files_save
9339 +# Check the compiler produces executables we can run. If not, either
9340 +# the compiler is broken, or we cross compile.
9341 +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
9342 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
9343 +echo "$as_me:$LINENO: result: $cross_compiling" >&5
9344 +echo "${ECHO_T}$cross_compiling" >&6
9346 +echo "$as_me:$LINENO: checking for suffix of executables" >&5
9347 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
9348 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
9349 + (eval $ac_link) 2>&5
9351 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9352 + (exit $ac_status); }; then
9353 + # If both `conftest.exe' and `conftest' are `present' (well, observable)
9354 +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
9355 +# work properly (i.e., refer to `conftest.exe'), while it won't with
9357 +for ac_file in conftest.exe conftest conftest.*; do
9358 + test -f "$ac_file" || continue
9360 + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
9361 + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
9362 + export ac_cv_exeext
9368 + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5
9369 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;}
9370 + { (exit 1); exit 1; }; }
9373 +rm -f conftest$ac_cv_exeext
9374 +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
9375 +echo "${ECHO_T}$ac_cv_exeext" >&6
9377 +rm -f conftest.$ac_ext
9378 +EXEEXT=$ac_cv_exeext
9380 +echo "$as_me:$LINENO: checking for suffix of object files" >&5
9381 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
9382 +if test "${ac_cv_objext+set}" = set; then
9383 + echo $ECHO_N "(cached) $ECHO_C" >&6
9385 + cat >conftest.$ac_ext <<_ACEOF
9386 +#line $LINENO "configure"
9387 +#include "confdefs.h"
9397 +rm -f conftest.o conftest.obj
9398 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9399 + (eval $ac_compile) 2>&5
9401 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9402 + (exit $ac_status); }; then
9403 + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
9405 + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
9406 + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
9411 + echo "$as_me: failed program was:" >&5
9412 +cat conftest.$ac_ext >&5
9413 +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5
9414 +echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;}
9415 + { (exit 1); exit 1; }; }
9418 +rm -f conftest.$ac_cv_objext conftest.$ac_ext
9420 +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
9421 +echo "${ECHO_T}$ac_cv_objext" >&6
9422 +OBJEXT=$ac_cv_objext
9424 +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
9425 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
9426 +if test "${ac_cv_c_compiler_gnu+set}" = set; then
9427 + echo $ECHO_N "(cached) $ECHO_C" >&6
9429 + cat >conftest.$ac_ext <<_ACEOF
9430 +#line $LINENO "configure"
9431 +#include "confdefs.h"
9444 +rm -f conftest.$ac_objext
9445 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9446 + (eval $ac_compile) 2>&5
9448 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9449 + (exit $ac_status); } &&
9450 + { ac_try='test -s conftest.$ac_objext'
9451 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9452 + (eval $ac_try) 2>&5
9454 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9455 + (exit $ac_status); }; }; then
9456 + ac_compiler_gnu=yes
9458 + echo "$as_me: failed program was:" >&5
9459 +cat conftest.$ac_ext >&5
9462 +rm -f conftest.$ac_objext conftest.$ac_ext
9463 +ac_cv_c_compiler_gnu=$ac_compiler_gnu
9466 +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
9467 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
9468 +GCC=`test $ac_compiler_gnu = yes && echo yes`
9469 +ac_test_CFLAGS=${CFLAGS+set}
9470 +ac_save_CFLAGS=$CFLAGS
9472 +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
9473 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
9474 +if test "${ac_cv_prog_cc_g+set}" = set; then
9475 + echo $ECHO_N "(cached) $ECHO_C" >&6
9477 + cat >conftest.$ac_ext <<_ACEOF
9478 +#line $LINENO "configure"
9479 +#include "confdefs.h"
9489 +rm -f conftest.$ac_objext
9490 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9491 + (eval $ac_compile) 2>&5
9493 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9494 + (exit $ac_status); } &&
9495 + { ac_try='test -s conftest.$ac_objext'
9496 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9497 + (eval $ac_try) 2>&5
9499 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9500 + (exit $ac_status); }; }; then
9501 + ac_cv_prog_cc_g=yes
9503 + echo "$as_me: failed program was:" >&5
9504 +cat conftest.$ac_ext >&5
9507 +rm -f conftest.$ac_objext conftest.$ac_ext
9509 +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
9510 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
9511 +if test "$ac_test_CFLAGS" = set; then
9512 + CFLAGS=$ac_save_CFLAGS
9513 +elif test $ac_cv_prog_cc_g = yes; then
9514 + if test "$GCC" = yes; then
9520 + if test "$GCC" = yes; then
9526 +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
9527 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
9528 +if test "${ac_cv_prog_cc_stdc+set}" = set; then
9529 + echo $ECHO_N "(cached) $ECHO_C" >&6
9531 + ac_cv_prog_cc_stdc=no
9533 +cat >conftest.$ac_ext <<_ACEOF
9534 +#line $LINENO "configure"
9535 +#include "confdefs.h"
9536 +#include <stdarg.h>
9538 +#include <sys/types.h>
9539 +#include <sys/stat.h>
9540 +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
9541 +struct buf { int x; };
9542 +FILE * (*rcsopen) (struct buf *, struct stat *, int);
9543 +static char *e (p, i)
9549 +static char *f (char * (*g) (char **, int), char **p, ...)
9554 + s = g (p, va_arg (v,int));
9558 +int test (int i, double x);
9559 +struct s1 {int (*f) (int a);};
9560 +struct s2 {int (*f) (double a);};
9561 +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
9567 +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
9572 +# Don't try gcc -ansi; that turns off useful extensions and
9573 +# breaks some systems' header files.
9574 +# AIX -qlanglvl=ansi
9575 +# Ultrix and OSF/1 -std1
9576 +# HP-UX 10.20 and later -Ae
9577 +# HP-UX older versions -Aa -D_HPUX_SOURCE
9578 +# SVR4 -Xc -D__EXTENSIONS__
9579 +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
9581 + CC="$ac_save_CC $ac_arg"
9582 + rm -f conftest.$ac_objext
9583 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9584 + (eval $ac_compile) 2>&5
9586 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9587 + (exit $ac_status); } &&
9588 + { ac_try='test -s conftest.$ac_objext'
9589 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9590 + (eval $ac_try) 2>&5
9592 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9593 + (exit $ac_status); }; }; then
9594 + ac_cv_prog_cc_stdc=$ac_arg
9597 + echo "$as_me: failed program was:" >&5
9598 +cat conftest.$ac_ext >&5
9600 +rm -f conftest.$ac_objext
9602 +rm -f conftest.$ac_ext conftest.$ac_objext
9607 +case "x$ac_cv_prog_cc_stdc" in
9609 + echo "$as_me:$LINENO: result: none needed" >&5
9610 +echo "${ECHO_T}none needed" >&6 ;;
9612 + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
9613 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
9614 + CC="$CC $ac_cv_prog_cc_stdc" ;;
9617 +# Some people use a C++ compiler to compile C. Since we use `exit',
9618 +# in C++ we need to declare it. In case someone uses the same compiler
9619 +# for both compiling C and C++ we need to have the C++ compiler decide
9620 +# the declaration of exit, since it's the most demanding environment.
9621 +cat >conftest.$ac_ext <<_ACEOF
9622 +@%:@ifndef __cplusplus
9626 +rm -f conftest.$ac_objext
9627 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9628 + (eval $ac_compile) 2>&5
9630 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9631 + (exit $ac_status); } &&
9632 + { ac_try='test -s conftest.$ac_objext'
9633 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9634 + (eval $ac_try) 2>&5
9636 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9637 + (exit $ac_status); }; }; then
9638 + for ac_declaration in \
9640 + '#include <stdlib.h>' \
9641 + 'extern "C" void std::exit (int) throw (); using std::exit;' \
9642 + 'extern "C" void std::exit (int); using std::exit;' \
9643 + 'extern "C" void exit (int) throw ();' \
9644 + 'extern "C" void exit (int);' \
9645 + 'void exit (int);'
9647 + cat >conftest.$ac_ext <<_ACEOF
9648 +#line $LINENO "configure"
9649 +#include "confdefs.h"
9650 +@%:@include <stdlib.h>
9660 +rm -f conftest.$ac_objext
9661 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9662 + (eval $ac_compile) 2>&5
9664 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9665 + (exit $ac_status); } &&
9666 + { ac_try='test -s conftest.$ac_objext'
9667 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9668 + (eval $ac_try) 2>&5
9670 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9671 + (exit $ac_status); }; }; then
9674 + echo "$as_me: failed program was:" >&5
9675 +cat conftest.$ac_ext >&5
9678 +rm -f conftest.$ac_objext conftest.$ac_ext
9679 + cat >conftest.$ac_ext <<_ACEOF
9680 +#line $LINENO "configure"
9681 +#include "confdefs.h"
9691 +rm -f conftest.$ac_objext
9692 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9693 + (eval $ac_compile) 2>&5
9695 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9696 + (exit $ac_status); } &&
9697 + { ac_try='test -s conftest.$ac_objext'
9698 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
9699 + (eval $ac_try) 2>&5
9701 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
9702 + (exit $ac_status); }; }; then
9705 + echo "$as_me: failed program was:" >&5
9706 +cat conftest.$ac_ext >&5
9708 +rm -f conftest.$ac_objext conftest.$ac_ext
9711 +if test -n "$ac_declaration"; then
9712 + echo '#ifdef __cplusplus' >>confdefs.h
9713 + echo $ac_declaration >>confdefs.h
9714 + echo '#endif' >>confdefs.h
9718 + echo "$as_me: failed program was:" >&5
9719 +cat conftest.$ac_ext >&5
9721 +rm -f conftest.$ac_objext conftest.$ac_ext
9723 +ac_cpp='$CPP $CPPFLAGS'
9724 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
9725 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
9726 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
9728 +depcc="$CC" am_compiler_list=
9730 +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
9731 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
9732 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
9733 + echo $ECHO_N "(cached) $ECHO_C" >&6
9735 + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
9736 + # We make a subdir and do the tests there. Otherwise we can end up
9737 + # making bogus files that we don't know about and never remove. For
9738 + # instance it was reported that on HP-UX the gcc test will end up
9739 + # making a dummy file named `D' -- because `-MD' means `put the output
9741 + mkdir conftest.dir
9742 + # Copy depcomp to subdir because otherwise we won't find it if we're
9743 + # using a relative directory.
9744 + cp "$am_depcomp" conftest.dir
9747 + am_cv_CC_dependencies_compiler_type=none
9748 + if test "$am_compiler_list" = ""; then
9749 + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
9751 + for depmode in $am_compiler_list; do
9752 + # We need to recreate these files for each test, as the compiler may
9753 + # overwrite some of them when testing with obscure command lines.
9754 + # This happens at least with the AIX C compiler.
9755 + echo '#include "conftest.h"' > conftest.c
9756 + echo 'int i;' > conftest.h
9757 + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf
9761 + # after this tag, mechanisms are not by side-effect, so they'll
9762 + # only be used when explicitly requested
9763 + if test "x$enable_dependency_tracking" = xyes; then
9771 + # We check with `-c' and `-o' for the sake of the "dashmstdout"
9772 + # mode. It turns out that the SunPro C++ compiler does not properly
9773 + # handle `-M -o', and we need to detect this.
9774 + if depmode=$depmode \
9775 + source=conftest.c object=conftest.o \
9776 + depfile=conftest.Po tmpdepfile=conftest.TPo \
9777 + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 &&
9778 + grep conftest.h conftest.Po > /dev/null 2>&1 &&
9779 + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
9780 + am_cv_CC_dependencies_compiler_type=$depmode
9786 + rm -rf conftest.dir
9788 + am_cv_CC_dependencies_compiler_type=none
9792 +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
9793 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
9794 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
9797 +# Find the correct PATH separator. Usually this is `:', but
9798 +# DJGPP uses `;' like DOS.
9799 +if test "X${PATH_SEPARATOR+set}" != Xset; then
9800 + UNAME=${UNAME-`uname 2>/dev/null`}
9802 + *-DOS) lt_cv_sys_path_separator=';' ;;
9803 + *) lt_cv_sys_path_separator=':' ;;
9805 + PATH_SEPARATOR=$lt_cv_sys_path_separator
9809 +# Check whether --with-gnu-ld or --without-gnu-ld was given.
9810 +if test "${with_gnu_ld+set}" = set; then
9811 + withval="$with_gnu_ld"
9812 + test "$withval" = no || with_gnu_ld=yes
9817 +if test "$GCC" = yes; then
9818 + # Check if gcc -print-prog-name=ld gives a path.
9819 + echo "$as_me:$LINENO: checking for ld used by GCC" >&5
9820 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
9823 + # gcc leaves a trailing carriage return which upsets mingw
9824 + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
9826 + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
9829 + # Accept absolute paths.
9830 + [\\/]* | [A-Za-z]:[\\/]*)
9831 + re_direlt='/[^/][^/]*/\.\./'
9832 + # Canonicalize the path of ld
9833 + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
9834 + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
9835 + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
9837 + test -z "$LD" && LD="$ac_prog"
9840 + # If it fails, then pretend we aren't using GCC.
9844 + # If it is relative, then search for the first ld in PATH.
9845 + with_gnu_ld=unknown
9848 +elif test "$with_gnu_ld" = yes; then
9849 + echo "$as_me:$LINENO: checking for GNU ld" >&5
9850 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
9852 + echo "$as_me:$LINENO: checking for non-GNU ld" >&5
9853 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
9855 +if test "${lt_cv_path_LD+set}" = set; then
9856 + echo $ECHO_N "(cached) $ECHO_C" >&6
9858 + if test -z "$LD"; then
9859 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
9860 + for ac_dir in $PATH; do
9861 + test -z "$ac_dir" && ac_dir=.
9862 + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
9863 + lt_cv_path_LD="$ac_dir/$ac_prog"
9864 + # Check to see if the program is GNU ld. I'd rather use --version,
9865 + # but apparently some GNU ld's only accept -v.
9866 + # Break only if it was the GNU/non-GNU ld that we prefer.
9867 + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
9868 + test "$with_gnu_ld" != no && break
9870 + test "$with_gnu_ld" != yes && break
9874 + IFS="$ac_save_ifs"
9876 + lt_cv_path_LD="$LD" # Let the user override the test with a path.
9880 +LD="$lt_cv_path_LD"
9881 +if test -n "$LD"; then
9882 + echo "$as_me:$LINENO: result: $LD" >&5
9883 +echo "${ECHO_T}$LD" >&6
9885 + echo "$as_me:$LINENO: result: no" >&5
9886 +echo "${ECHO_T}no" >&6
9888 +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
9889 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
9890 + { (exit 1); exit 1; }; }
9891 +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
9892 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
9893 +if test "${lt_cv_prog_gnu_ld+set}" = set; then
9894 + echo $ECHO_N "(cached) $ECHO_C" >&6
9896 + # I'd rather use --version here, but apparently some GNU ld's only accept -v.
9897 +if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
9898 + lt_cv_prog_gnu_ld=yes
9900 + lt_cv_prog_gnu_ld=no
9903 +echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
9904 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
9905 +with_gnu_ld=$lt_cv_prog_gnu_ld
9908 +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
9909 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
9910 +if test "${lt_cv_ld_reload_flag+set}" = set; then
9911 + echo $ECHO_N "(cached) $ECHO_C" >&6
9913 + lt_cv_ld_reload_flag='-r'
9915 +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
9916 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
9917 +reload_flag=$lt_cv_ld_reload_flag
9918 +test -n "$reload_flag" && reload_flag=" $reload_flag"
9920 +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
9921 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
9922 +if test "${lt_cv_path_NM+set}" = set; then
9923 + echo $ECHO_N "(cached) $ECHO_C" >&6
9925 + if test -n "$NM"; then
9926 + # Let the user override the test.
9927 + lt_cv_path_NM="$NM"
9929 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
9930 + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
9931 + test -z "$ac_dir" && ac_dir=.
9932 + tmp_nm=$ac_dir/${ac_tool_prefix}nm
9933 + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
9934 + # Check to see if the nm accepts a BSD-compat flag.
9935 + # Adding the `sed 1q' prevents false positives on HP-UX, which says:
9936 + # nm: unknown option "B" ignored
9937 + # Tru64's nm complains that /dev/null is an invalid object file
9938 + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
9939 + lt_cv_path_NM="$tmp_nm -B"
9941 + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
9942 + lt_cv_path_NM="$tmp_nm -p"
9945 + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
9946 + continue # so that we can try to find one that supports BSD flags
9950 + IFS="$ac_save_ifs"
9951 + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
9955 +NM="$lt_cv_path_NM"
9956 +echo "$as_me:$LINENO: result: $NM" >&5
9957 +echo "${ECHO_T}$NM" >&6
9959 +echo "$as_me:$LINENO: checking whether ln -s works" >&5
9960 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
9962 +if test "$LN_S" = "ln -s"; then
9963 + echo "$as_me:$LINENO: result: yes" >&5
9964 +echo "${ECHO_T}yes" >&6
9966 + echo "$as_me:$LINENO: result: no, using $LN_S" >&5
9967 +echo "${ECHO_T}no, using $LN_S" >&6
9970 +echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
9971 +echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6
9972 +if test "${lt_cv_deplibs_check_method+set}" = set; then
9973 + echo $ECHO_N "(cached) $ECHO_C" >&6
9975 + lt_cv_file_magic_cmd='$MAGIC_CMD'
9976 +lt_cv_file_magic_test_file=
9977 +lt_cv_deplibs_check_method='unknown'
9978 +# Need to set the preceding variable on all platforms that support
9979 +# interlibrary dependencies.
9980 +# 'none' -- dependencies not supported.
9981 +# `unknown' -- same as none, but documents that we really don't know.
9982 +# 'pass_all' -- all dependencies passed with no checks.
9983 +# 'test_compile' -- check by making test program.
9984 +# 'file_magic [[regex]]' -- check by looking for files in library path
9985 +# which responds to the $file_magic_cmd with a given egrep regex.
9986 +# If you have `file' or equivalent on your system and you're not sure
9987 +# whether `pass_all' will *always* work, you probably want this one.
9991 + lt_cv_deplibs_check_method=pass_all
9995 + lt_cv_deplibs_check_method=pass_all
9999 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
10000 + lt_cv_file_magic_cmd='/usr/bin/file -L'
10001 + lt_cv_file_magic_test_file=/shlib/libc.so
10004 +cygwin* | mingw* | pw32*)
10005 + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
10006 + lt_cv_file_magic_cmd='$OBJDUMP -f'
10009 +darwin* | rhapsody*)
10010 + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
10011 + lt_cv_file_magic_cmd='/usr/bin/file -L'
10012 + case "$host_os" in
10013 + rhapsody* | darwin1.[012])
10014 + lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System'
10016 + *) # Darwin 1.3 on
10017 + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
10023 + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
10024 + case $host_cpu in
10026 + # Not sure whether the presence of OpenBSD here was a mistake.
10027 + # Let's accept both of them until this is cleared up.
10028 + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
10029 + lt_cv_file_magic_cmd=/usr/bin/file
10030 + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
10034 + lt_cv_deplibs_check_method=pass_all
10039 + lt_cv_deplibs_check_method=pass_all
10042 +hpux10.20*|hpux11*)
10043 + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
10044 + lt_cv_file_magic_cmd=/usr/bin/file
10045 + lt_cv_file_magic_test_file=/usr/lib/libc.sl
10051 + # this will be overridden with pass_all, but let us keep it just in case
10052 + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
10056 + *-32|*"-32 ") libmagic=32-bit;;
10057 + *-n32|*"-n32 ") libmagic=N32;;
10058 + *-64|*"-64 ") libmagic=64-bit;;
10059 + *) libmagic=never-match;;
10061 + # this will be overridden with pass_all, but let us keep it just in case
10062 + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"
10065 + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
10066 + lt_cv_deplibs_check_method=pass_all
10069 +# This must be Linux ELF.
10071 + case $host_cpu in
10072 + alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
10073 + lt_cv_deplibs_check_method=pass_all ;;
10075 + # glibc up to 2.1.1 does not perform some relocations on ARM
10076 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
10078 + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
10082 + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
10083 + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
10085 + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'
10090 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
10091 + lt_cv_file_magic_cmd=/usr/bin/file
10092 + lt_cv_file_magic_test_file=/usr/lib/libnls.so
10096 + lt_cv_file_magic_cmd=/usr/bin/file
10097 + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
10098 + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
10099 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
10101 + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
10105 +osf3* | osf4* | osf5*)
10106 + # this will be overridden with pass_all, but let us keep it just in case
10107 + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
10108 + lt_cv_file_magic_test_file=/shlib/libc.so
10109 + lt_cv_deplibs_check_method=pass_all
10113 + lt_cv_deplibs_check_method=pass_all
10117 + lt_cv_deplibs_check_method=pass_all
10118 + lt_cv_file_magic_test_file=/lib/libc.so
10121 +sysv5uw[78]* | sysv4*uw2*)
10122 + lt_cv_deplibs_check_method=pass_all
10125 +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
10126 + case $host_vendor in
10128 + 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]'
10129 + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
10132 + lt_cv_deplibs_check_method=pass_all
10135 + lt_cv_file_magic_cmd='/bin/file'
10136 + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
10139 + lt_cv_file_magic_cmd='/bin/file'
10140 + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
10141 + lt_cv_file_magic_test_file=/lib/libc.so
10148 +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
10149 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
10150 +file_magic_cmd=$lt_cv_file_magic_cmd
10151 +deplibs_check_method=$lt_cv_deplibs_check_method
10159 +# Check for command to grab the raw symbol name followed by C symbol from nm.
10160 +echo "$as_me:$LINENO: checking command to parse $NM output" >&5
10161 +echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6
10162 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
10163 + echo $ECHO_N "(cached) $ECHO_C" >&6
10166 +# These are sane defaults that work on at least a few old systems.
10167 +# [They come from Ultrix. What could be older than Ultrix?!! ;)]
10169 +# Character class describing NM global symbol codes.
10170 +symcode='[BCDEGRST]'
10172 +# Regexp to match symbols that can be accessed directly from C.
10173 +sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
10175 +# Transform the above into a raw symbol and a C symbol.
10176 +symxfrm='\1 \2\3 \3'
10178 +# Transform an extracted symbol line into a proper C declaration
10179 +lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
10181 +# Transform an extracted symbol line into symbol name and symbol address
10182 +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'"
10184 +# Define system-specific variables.
10189 +cygwin* | mingw* | pw32*)
10190 + symcode='[ABCDGISTW]'
10192 +hpux*) # Its linker distinguishes data from code symbols
10193 + lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
10194 + 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'"
10197 + symcode='[BCDEGRST]'
10199 +solaris* | sysv5*)
10203 + symcode='[DFNSTU]'
10207 +# Handle CRLF in mingw tool chain
10211 + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
10215 +# If we're using GNU nm, then use its standard symbol codes.
10216 +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
10217 + symcode='[ABCDGISTW]'
10220 +# Try without a prefix undercore, then with it.
10221 +for ac_symprfx in "" "_"; do
10223 + # Write the raw and C identifiers.
10224 +lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
10226 + # Check to see that the pipe works correctly.
10229 + cat > conftest.$ac_ext <<EOF
10230 +#ifdef __cplusplus
10234 +void nm_test_func(){}
10235 +#ifdef __cplusplus
10238 +int main(){nm_test_var='a';nm_test_func();return(0);}
10241 + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
10242 + (eval $ac_compile) 2>&5
10244 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10245 + (exit $ac_status); }; then
10246 + # Now try to grab the symbols.
10247 + nlist=conftest.nm
10248 + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
10249 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
10251 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10252 + (exit $ac_status); } && test -s "$nlist"; then
10253 + # Try sorting and uniquifying the output.
10254 + if sort "$nlist" | uniq > "$nlist"T; then
10255 + mv -f "$nlist"T "$nlist"
10260 + # Make sure that we snagged all the symbols we need.
10261 + if egrep ' nm_test_var$' "$nlist" >/dev/null; then
10262 + if egrep ' nm_test_func$' "$nlist" >/dev/null; then
10263 + cat <<EOF > conftest.$ac_ext
10264 +#ifdef __cplusplus
10269 + # Now generate the symbol file.
10270 + eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
10272 + cat <<EOF >> conftest.$ac_ext
10273 +#if defined (__STDC__) && __STDC__
10274 +# define lt_ptr void *
10276 +# define lt_ptr char *
10280 +/* The mapping between symbol names and symbols. */
10282 + const char *name;
10285 +lt_preloaded_symbols[] =
10288 + sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext
10289 + cat <<\EOF >> conftest.$ac_ext
10293 +#ifdef __cplusplus
10297 + # Now try linking the two files.
10298 + mv conftest.$ac_objext conftstm.$ac_objext
10299 + save_LIBS="$LIBS"
10300 + save_CFLAGS="$CFLAGS"
10301 + LIBS="conftstm.$ac_objext"
10302 + CFLAGS="$CFLAGS$no_builtin_flag"
10303 + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10304 + (eval $ac_link) 2>&5
10306 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10307 + (exit $ac_status); } && test -s conftest; then
10310 + LIBS="$save_LIBS"
10311 + CFLAGS="$save_CFLAGS"
10313 + echo "cannot find nm_test_func in $nlist" >&5
10316 + echo "cannot find nm_test_var in $nlist" >&5
10319 + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
10322 + echo "$progname: failed program was:" >&5
10323 + cat conftest.$ac_ext >&5
10325 + rm -f conftest* conftst*
10327 + # Do not use the global_symbol_pipe unless it works.
10328 + if test "$pipe_works" = yes; then
10331 + lt_cv_sys_global_symbol_pipe=
10337 +global_symbol_pipe="$lt_cv_sys_global_symbol_pipe"
10338 +if test -z "$lt_cv_sys_global_symbol_pipe"; then
10339 + global_symbol_to_cdecl=
10340 + global_symbol_to_c_name_address=
10342 + global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl"
10343 + global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address"
10345 +if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address";
10347 + echo "$as_me:$LINENO: result: failed" >&5
10348 +echo "${ECHO_T}failed" >&6
10350 + echo "$as_me:$LINENO: result: ok" >&5
10351 +echo "${ECHO_T}ok" >&6
10355 +ac_cpp='$CPP $CPPFLAGS'
10356 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
10357 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
10358 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
10359 +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
10360 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
10361 +# On Suns, sometimes $CPP names a directory.
10362 +if test -n "$CPP" && test -d "$CPP"; then
10365 +if test -z "$CPP"; then
10366 + if test "${ac_cv_prog_CPP+set}" = set; then
10367 + echo $ECHO_N "(cached) $ECHO_C" >&6
10369 + # Double quotes because CPP needs to be expanded
10370 + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
10372 + ac_preproc_ok=false
10373 +for ac_c_preproc_warn_flag in '' yes
10375 + # Use a header file that comes with gcc, so configuring glibc
10376 + # with a fresh cross-compiler works.
10377 + # On the NeXT, cc -E runs the code through the compiler's parser,
10378 + # not just through cpp. "Syntax error" is here to catch this case.
10379 + cat >conftest.$ac_ext <<_ACEOF
10380 +#line $LINENO "configure"
10381 +#include "confdefs.h"
10382 +@%:@include <assert.h>
10385 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
10386 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
10388 + grep -v '^ *+' conftest.er1 >conftest.err
10389 + rm -f conftest.er1
10390 + cat conftest.err >&5
10391 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10392 + (exit $ac_status); } >/dev/null; then
10393 + if test -s conftest.err; then
10394 + ac_cpp_err=$ac_c_preproc_warn_flag
10401 +if test -z "$ac_cpp_err"; then
10404 + echo "$as_me: failed program was:" >&5
10405 + cat conftest.$ac_ext >&5
10406 + # Broken: fails on valid input.
10409 +rm -f conftest.err conftest.$ac_ext
10411 + # OK, works on sane cases. Now check whether non-existent headers
10412 + # can be detected and how.
10413 + cat >conftest.$ac_ext <<_ACEOF
10414 +#line $LINENO "configure"
10415 +#include "confdefs.h"
10416 +@%:@include <ac_nonexistent.h>
10418 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
10419 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
10421 + grep -v '^ *+' conftest.er1 >conftest.err
10422 + rm -f conftest.er1
10423 + cat conftest.err >&5
10424 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10425 + (exit $ac_status); } >/dev/null; then
10426 + if test -s conftest.err; then
10427 + ac_cpp_err=$ac_c_preproc_warn_flag
10434 +if test -z "$ac_cpp_err"; then
10435 + # Broken: success on invalid input.
10438 + echo "$as_me: failed program was:" >&5
10439 + cat conftest.$ac_ext >&5
10440 + # Passes both tests.
10444 +rm -f conftest.err conftest.$ac_ext
10447 +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
10448 +rm -f conftest.err conftest.$ac_ext
10449 +if $ac_preproc_ok; then
10454 + ac_cv_prog_CPP=$CPP
10457 + CPP=$ac_cv_prog_CPP
10459 + ac_cv_prog_CPP=$CPP
10461 +echo "$as_me:$LINENO: result: $CPP" >&5
10462 +echo "${ECHO_T}$CPP" >&6
10463 +ac_preproc_ok=false
10464 +for ac_c_preproc_warn_flag in '' yes
10466 + # Use a header file that comes with gcc, so configuring glibc
10467 + # with a fresh cross-compiler works.
10468 + # On the NeXT, cc -E runs the code through the compiler's parser,
10469 + # not just through cpp. "Syntax error" is here to catch this case.
10470 + cat >conftest.$ac_ext <<_ACEOF
10471 +#line $LINENO "configure"
10472 +#include "confdefs.h"
10473 +@%:@include <assert.h>
10476 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
10477 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
10479 + grep -v '^ *+' conftest.er1 >conftest.err
10480 + rm -f conftest.er1
10481 + cat conftest.err >&5
10482 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10483 + (exit $ac_status); } >/dev/null; then
10484 + if test -s conftest.err; then
10485 + ac_cpp_err=$ac_c_preproc_warn_flag
10492 +if test -z "$ac_cpp_err"; then
10495 + echo "$as_me: failed program was:" >&5
10496 + cat conftest.$ac_ext >&5
10497 + # Broken: fails on valid input.
10500 +rm -f conftest.err conftest.$ac_ext
10502 + # OK, works on sane cases. Now check whether non-existent headers
10503 + # can be detected and how.
10504 + cat >conftest.$ac_ext <<_ACEOF
10505 +#line $LINENO "configure"
10506 +#include "confdefs.h"
10507 +@%:@include <ac_nonexistent.h>
10509 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
10510 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
10512 + grep -v '^ *+' conftest.er1 >conftest.err
10513 + rm -f conftest.er1
10514 + cat conftest.err >&5
10515 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10516 + (exit $ac_status); } >/dev/null; then
10517 + if test -s conftest.err; then
10518 + ac_cpp_err=$ac_c_preproc_warn_flag
10525 +if test -z "$ac_cpp_err"; then
10526 + # Broken: success on invalid input.
10529 + echo "$as_me: failed program was:" >&5
10530 + cat conftest.$ac_ext >&5
10531 + # Passes both tests.
10535 +rm -f conftest.err conftest.$ac_ext
10538 +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
10539 +rm -f conftest.err conftest.$ac_ext
10540 +if $ac_preproc_ok; then
10543 + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5
10544 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
10545 + { (exit 1); exit 1; }; }
10549 +ac_cpp='$CPP $CPPFLAGS'
10550 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
10551 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
10552 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
10555 +echo "$as_me:$LINENO: checking for egrep" >&5
10556 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6
10557 +if test "${ac_cv_prog_egrep+set}" = set; then
10558 + echo $ECHO_N "(cached) $ECHO_C" >&6
10560 + if echo a | (grep -E '(a|b)') >/dev/null 2>&1
10561 + then ac_cv_prog_egrep='grep -E'
10562 + else ac_cv_prog_egrep='egrep'
10565 +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
10566 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6
10567 + EGREP=$ac_cv_prog_egrep
10570 +echo "$as_me:$LINENO: checking for ANSI C header files" >&5
10571 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
10572 +if test "${ac_cv_header_stdc+set}" = set; then
10573 + echo $ECHO_N "(cached) $ECHO_C" >&6
10575 + cat >conftest.$ac_ext <<_ACEOF
10576 +#line $LINENO "configure"
10577 +#include "confdefs.h"
10578 +#include <stdlib.h>
10579 +#include <stdarg.h>
10580 +#include <string.h>
10581 +#include <float.h>
10584 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
10585 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
10587 + grep -v '^ *+' conftest.er1 >conftest.err
10588 + rm -f conftest.er1
10589 + cat conftest.err >&5
10590 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10591 + (exit $ac_status); } >/dev/null; then
10592 + if test -s conftest.err; then
10593 + ac_cpp_err=$ac_c_preproc_warn_flag
10600 +if test -z "$ac_cpp_err"; then
10601 + ac_cv_header_stdc=yes
10603 + echo "$as_me: failed program was:" >&5
10604 + cat conftest.$ac_ext >&5
10605 + ac_cv_header_stdc=no
10607 +rm -f conftest.err conftest.$ac_ext
10609 +if test $ac_cv_header_stdc = yes; then
10610 + # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
10611 + cat >conftest.$ac_ext <<_ACEOF
10612 +#line $LINENO "configure"
10613 +#include "confdefs.h"
10614 +#include <string.h>
10617 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
10618 + $EGREP "memchr" >/dev/null 2>&1; then
10621 + ac_cv_header_stdc=no
10627 +if test $ac_cv_header_stdc = yes; then
10628 + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
10629 + cat >conftest.$ac_ext <<_ACEOF
10630 +#line $LINENO "configure"
10631 +#include "confdefs.h"
10632 +#include <stdlib.h>
10635 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
10636 + $EGREP "free" >/dev/null 2>&1; then
10639 + ac_cv_header_stdc=no
10645 +if test $ac_cv_header_stdc = yes; then
10646 + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
10647 + if test "$cross_compiling" = yes; then
10650 + cat >conftest.$ac_ext <<_ACEOF
10651 +#line $LINENO "configure"
10652 +#include "confdefs.h"
10653 +#include <ctype.h>
10654 +#if ((' ' & 0x0FF) == 0x020)
10655 +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
10656 +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
10658 +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
10659 + || ('j' <= (c) && (c) <= 'r') \
10660 + || ('s' <= (c) && (c) <= 'z'))
10661 +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
10664 +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
10669 + for (i = 0; i < 256; i++)
10670 + if (XOR (islower (i), ISLOWER (i))
10671 + || toupper (i) != TOUPPER (i))
10676 +rm -f conftest$ac_exeext
10677 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10678 + (eval $ac_link) 2>&5
10680 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10681 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
10682 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10683 + (eval $ac_try) 2>&5
10685 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10686 + (exit $ac_status); }; }; then
10689 + echo "$as_me: program exited with status $ac_status" >&5
10690 +echo "$as_me: failed program was:" >&5
10691 +cat conftest.$ac_ext >&5
10692 +( exit $ac_status )
10693 +ac_cv_header_stdc=no
10695 +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
10699 +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
10700 +echo "${ECHO_T}$ac_cv_header_stdc" >&6
10701 +if test $ac_cv_header_stdc = yes; then
10703 +cat >>confdefs.h <<\_ACEOF
10704 +@%:@define STDC_HEADERS 1
10709 +# On IRIX 5.3, sys/types and inttypes.h are conflicting.
10719 +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
10720 + inttypes.h stdint.h unistd.h
10722 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
10723 +echo "$as_me:$LINENO: checking for $ac_header" >&5
10724 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
10725 +if eval "test \"\${$as_ac_Header+set}\" = set"; then
10726 + echo $ECHO_N "(cached) $ECHO_C" >&6
10728 + cat >conftest.$ac_ext <<_ACEOF
10729 +#line $LINENO "configure"
10730 +#include "confdefs.h"
10731 +$ac_includes_default
10733 +@%:@include <$ac_header>
10735 +rm -f conftest.$ac_objext
10736 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
10737 + (eval $ac_compile) 2>&5
10739 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10740 + (exit $ac_status); } &&
10741 + { ac_try='test -s conftest.$ac_objext'
10742 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10743 + (eval $ac_try) 2>&5
10745 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10746 + (exit $ac_status); }; }; then
10747 + eval "$as_ac_Header=yes"
10749 + echo "$as_me: failed program was:" >&5
10750 +cat conftest.$ac_ext >&5
10751 +eval "$as_ac_Header=no"
10753 +rm -f conftest.$ac_objext conftest.$ac_ext
10755 +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
10756 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
10757 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
10758 + cat >>confdefs.h <<_ACEOF
10759 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
10768 +for ac_header in dlfcn.h
10770 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
10771 +if eval "test \"\${$as_ac_Header+set}\" = set"; then
10772 + echo "$as_me:$LINENO: checking for $ac_header" >&5
10773 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
10774 +if eval "test \"\${$as_ac_Header+set}\" = set"; then
10775 + echo $ECHO_N "(cached) $ECHO_C" >&6
10777 +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
10778 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
10780 + # Is the header compilable?
10781 +echo "$as_me:$LINENO: checking $ac_header usability" >&5
10782 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
10783 +cat >conftest.$ac_ext <<_ACEOF
10784 +#line $LINENO "configure"
10785 +#include "confdefs.h"
10786 +$ac_includes_default
10787 +@%:@include <$ac_header>
10789 +rm -f conftest.$ac_objext
10790 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
10791 + (eval $ac_compile) 2>&5
10793 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10794 + (exit $ac_status); } &&
10795 + { ac_try='test -s conftest.$ac_objext'
10796 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
10797 + (eval $ac_try) 2>&5
10799 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10800 + (exit $ac_status); }; }; then
10801 + ac_header_compiler=yes
10803 + echo "$as_me: failed program was:" >&5
10804 +cat conftest.$ac_ext >&5
10805 +ac_header_compiler=no
10807 +rm -f conftest.$ac_objext conftest.$ac_ext
10808 +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
10809 +echo "${ECHO_T}$ac_header_compiler" >&6
10811 +# Is the header present?
10812 +echo "$as_me:$LINENO: checking $ac_header presence" >&5
10813 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
10814 +cat >conftest.$ac_ext <<_ACEOF
10815 +#line $LINENO "configure"
10816 +#include "confdefs.h"
10817 +@%:@include <$ac_header>
10819 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
10820 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
10822 + grep -v '^ *+' conftest.er1 >conftest.err
10823 + rm -f conftest.er1
10824 + cat conftest.err >&5
10825 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
10826 + (exit $ac_status); } >/dev/null; then
10827 + if test -s conftest.err; then
10828 + ac_cpp_err=$ac_c_preproc_warn_flag
10835 +if test -z "$ac_cpp_err"; then
10836 + ac_header_preproc=yes
10838 + echo "$as_me: failed program was:" >&5
10839 + cat conftest.$ac_ext >&5
10840 + ac_header_preproc=no
10842 +rm -f conftest.err conftest.$ac_ext
10843 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
10844 +echo "${ECHO_T}$ac_header_preproc" >&6
10846 +# So? What about this header?
10847 +case $ac_header_compiler:$ac_header_preproc in
10849 + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
10850 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
10851 + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
10852 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
10854 + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
10855 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
10856 + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
10857 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
10858 + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
10859 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
10861 +echo "$as_me:$LINENO: checking for $ac_header" >&5
10862 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
10863 +if eval "test \"\${$as_ac_Header+set}\" = set"; then
10864 + echo $ECHO_N "(cached) $ECHO_C" >&6
10866 + eval "$as_ac_Header=$ac_header_preproc"
10868 +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
10869 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
10872 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
10873 + cat >>confdefs.h <<_ACEOF
10874 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
10885 +# Only perform the check for file, if the check method requires it
10886 +case $deplibs_check_method in
10888 + if test "$file_magic_cmd" = '$MAGIC_CMD'; then
10889 + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
10890 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
10891 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
10892 + echo $ECHO_N "(cached) $ECHO_C" >&6
10894 + case $MAGIC_CMD in
10896 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
10899 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
10902 + ac_save_MAGIC_CMD="$MAGIC_CMD"
10903 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
10904 + ac_dummy="/usr/bin:$PATH"
10905 + for ac_dir in $ac_dummy; do
10906 + test -z "$ac_dir" && ac_dir=.
10907 + if test -f $ac_dir/${ac_tool_prefix}file; then
10908 + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
10909 + if test -n "$file_magic_test_file"; then
10910 + case $deplibs_check_method in
10912 + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
10913 + MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
10914 + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
10915 + egrep "$file_magic_regex" > /dev/null; then
10920 +*** Warning: the command libtool uses to detect shared libraries,
10921 +*** $file_magic_cmd, produces output that libtool cannot recognize.
10922 +*** The result is that libtool may fail to recognize shared libraries
10923 +*** as such. This will affect the creation of libtool libraries that
10924 +*** depend on shared libraries, but programs linked with such libtool
10925 +*** libraries will work regardless of this problem. Nevertheless, you
10926 +*** may want to report the problem to your system manager and/or to
10927 +*** bug-libtool@gnu.org
10936 + IFS="$ac_save_ifs"
10937 + MAGIC_CMD="$ac_save_MAGIC_CMD"
10942 +MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
10943 +if test -n "$MAGIC_CMD"; then
10944 + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
10945 +echo "${ECHO_T}$MAGIC_CMD" >&6
10947 + echo "$as_me:$LINENO: result: no" >&5
10948 +echo "${ECHO_T}no" >&6
10951 +if test -z "$lt_cv_path_MAGIC_CMD"; then
10952 + if test -n "$ac_tool_prefix"; then
10953 + echo "$as_me:$LINENO: checking for file" >&5
10954 +echo $ECHO_N "checking for file... $ECHO_C" >&6
10955 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
10956 + echo $ECHO_N "(cached) $ECHO_C" >&6
10958 + case $MAGIC_CMD in
10960 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
10963 + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
10966 + ac_save_MAGIC_CMD="$MAGIC_CMD"
10967 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
10968 + ac_dummy="/usr/bin:$PATH"
10969 + for ac_dir in $ac_dummy; do
10970 + test -z "$ac_dir" && ac_dir=.
10971 + if test -f $ac_dir/file; then
10972 + lt_cv_path_MAGIC_CMD="$ac_dir/file"
10973 + if test -n "$file_magic_test_file"; then
10974 + case $deplibs_check_method in
10976 + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
10977 + MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
10978 + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
10979 + egrep "$file_magic_regex" > /dev/null; then
10984 +*** Warning: the command libtool uses to detect shared libraries,
10985 +*** $file_magic_cmd, produces output that libtool cannot recognize.
10986 +*** The result is that libtool may fail to recognize shared libraries
10987 +*** as such. This will affect the creation of libtool libraries that
10988 +*** depend on shared libraries, but programs linked with such libtool
10989 +*** libraries will work regardless of this problem. Nevertheless, you
10990 +*** may want to report the problem to your system manager and/or to
10991 +*** bug-libtool@gnu.org
11000 + IFS="$ac_save_ifs"
11001 + MAGIC_CMD="$ac_save_MAGIC_CMD"
11006 +MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
11007 +if test -n "$MAGIC_CMD"; then
11008 + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
11009 +echo "${ECHO_T}$MAGIC_CMD" >&6
11011 + echo "$as_me:$LINENO: result: no" >&5
11012 +echo "${ECHO_T}no" >&6
11024 +if test -n "$ac_tool_prefix"; then
11025 + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
11026 +set dummy ${ac_tool_prefix}ranlib; ac_word=$2
11027 +echo "$as_me:$LINENO: checking for $ac_word" >&5
11028 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
11029 +if test "${ac_cv_prog_RANLIB+set}" = set; then
11030 + echo $ECHO_N "(cached) $ECHO_C" >&6
11032 + if test -n "$RANLIB"; then
11033 + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
11035 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11036 +for as_dir in $PATH
11039 + test -z "$as_dir" && as_dir=.
11040 + for ac_exec_ext in '' $ac_executable_extensions; do
11041 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11042 + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
11043 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
11051 +RANLIB=$ac_cv_prog_RANLIB
11052 +if test -n "$RANLIB"; then
11053 + echo "$as_me:$LINENO: result: $RANLIB" >&5
11054 +echo "${ECHO_T}$RANLIB" >&6
11056 + echo "$as_me:$LINENO: result: no" >&5
11057 +echo "${ECHO_T}no" >&6
11061 +if test -z "$ac_cv_prog_RANLIB"; then
11062 + ac_ct_RANLIB=$RANLIB
11063 + # Extract the first word of "ranlib", so it can be a program name with args.
11064 +set dummy ranlib; ac_word=$2
11065 +echo "$as_me:$LINENO: checking for $ac_word" >&5
11066 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
11067 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
11068 + echo $ECHO_N "(cached) $ECHO_C" >&6
11070 + if test -n "$ac_ct_RANLIB"; then
11071 + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
11073 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11074 +for as_dir in $PATH
11077 + test -z "$as_dir" && as_dir=.
11078 + for ac_exec_ext in '' $ac_executable_extensions; do
11079 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11080 + ac_cv_prog_ac_ct_RANLIB="ranlib"
11081 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
11087 + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
11090 +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
11091 +if test -n "$ac_ct_RANLIB"; then
11092 + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
11093 +echo "${ECHO_T}$ac_ct_RANLIB" >&6
11095 + echo "$as_me:$LINENO: result: no" >&5
11096 +echo "${ECHO_T}no" >&6
11099 + RANLIB=$ac_ct_RANLIB
11101 + RANLIB="$ac_cv_prog_RANLIB"
11104 +if test -n "$ac_tool_prefix"; then
11105 + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
11106 +set dummy ${ac_tool_prefix}strip; ac_word=$2
11107 +echo "$as_me:$LINENO: checking for $ac_word" >&5
11108 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
11109 +if test "${ac_cv_prog_STRIP+set}" = set; then
11110 + echo $ECHO_N "(cached) $ECHO_C" >&6
11112 + if test -n "$STRIP"; then
11113 + ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
11115 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11116 +for as_dir in $PATH
11119 + test -z "$as_dir" && as_dir=.
11120 + for ac_exec_ext in '' $ac_executable_extensions; do
11121 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11122 + ac_cv_prog_STRIP="${ac_tool_prefix}strip"
11123 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
11131 +STRIP=$ac_cv_prog_STRIP
11132 +if test -n "$STRIP"; then
11133 + echo "$as_me:$LINENO: result: $STRIP" >&5
11134 +echo "${ECHO_T}$STRIP" >&6
11136 + echo "$as_me:$LINENO: result: no" >&5
11137 +echo "${ECHO_T}no" >&6
11141 +if test -z "$ac_cv_prog_STRIP"; then
11142 + ac_ct_STRIP=$STRIP
11143 + # Extract the first word of "strip", so it can be a program name with args.
11144 +set dummy strip; ac_word=$2
11145 +echo "$as_me:$LINENO: checking for $ac_word" >&5
11146 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
11147 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
11148 + echo $ECHO_N "(cached) $ECHO_C" >&6
11150 + if test -n "$ac_ct_STRIP"; then
11151 + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
11153 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11154 +for as_dir in $PATH
11157 + test -z "$as_dir" && as_dir=.
11158 + for ac_exec_ext in '' $ac_executable_extensions; do
11159 + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11160 + ac_cv_prog_ac_ct_STRIP="strip"
11161 + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
11167 + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
11170 +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
11171 +if test -n "$ac_ct_STRIP"; then
11172 + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
11173 +echo "${ECHO_T}$ac_ct_STRIP" >&6
11175 + echo "$as_me:$LINENO: result: no" >&5
11176 +echo "${ECHO_T}no" >&6
11179 + STRIP=$ac_ct_STRIP
11181 + STRIP="$ac_cv_prog_STRIP"
11186 +enable_win32_dll=no
11188 +# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
11189 +if test "${enable_libtool_lock+set}" = set; then
11190 + enableval="$enable_libtool_lock"
11193 +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
11195 +# Some flags need to be propagated to the compiler or linker for good
11196 +# libtool support.
11199 + # Find out which ABI we are using.
11200 + echo '#line __oline__ "configure"' > conftest.$ac_ext
11201 + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
11202 + (eval $ac_compile) 2>&5
11204 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11205 + (exit $ac_status); }; then
11206 + case `/usr/bin/file conftest.$ac_objext` in
11208 + LD="${LD-ld} -32"
11211 + LD="${LD-ld} -n32"
11214 + LD="${LD-ld} -64"
11222 + # On SCO OpenServer 5, we need -belf to get full-featured binaries.
11223 + SAVE_CFLAGS="$CFLAGS"
11224 + CFLAGS="$CFLAGS -belf"
11225 + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
11226 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
11227 +if test "${lt_cv_cc_needs_belf+set}" = set; then
11228 + echo $ECHO_N "(cached) $ECHO_C" >&6
11233 +ac_cpp='$CPP $CPPFLAGS'
11234 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11235 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11236 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
11238 + cat >conftest.$ac_ext <<_ACEOF
11239 +#line $LINENO "configure"
11240 +#include "confdefs.h"
11250 +rm -f conftest.$ac_objext conftest$ac_exeext
11251 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
11252 + (eval $ac_link) 2>&5
11254 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11255 + (exit $ac_status); } &&
11256 + { ac_try='test -s conftest$ac_exeext'
11257 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11258 + (eval $ac_try) 2>&5
11260 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11261 + (exit $ac_status); }; }; then
11262 + lt_cv_cc_needs_belf=yes
11264 + echo "$as_me: failed program was:" >&5
11265 +cat conftest.$ac_ext >&5
11266 +lt_cv_cc_needs_belf=no
11268 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
11270 +ac_cpp='$CPP $CPPFLAGS'
11271 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11272 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11273 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
11276 +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
11277 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
11278 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then
11279 + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
11280 + CFLAGS="$SAVE_CFLAGS"
11287 +# Sed substitution that helps us do robust quoting. It backslashifies
11288 +# metacharacters that are still active within double-quoted strings.
11289 +Xsed='sed -e s/^X//'
11290 +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
11292 +# Same as above, but do not quote variable references.
11293 +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
11295 +# Sed substitution to delay expansion of an escaped shell variable in a
11296 +# double_quote_subst'ed string.
11297 +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
11302 +# Global variables:
11303 +default_ofile=libtool
11304 +can_build_shared=yes
11306 +# All known linkers require a `.a' archive for static linking (except M$VC,
11307 +# which needs '.lib').
11309 +ltmain="$ac_aux_dir/ltmain.sh"
11310 +ofile="$default_ofile"
11311 +with_gnu_ld="$lt_cv_prog_gnu_ld"
11312 +need_locks="$enable_libtool_lock"
11315 +old_CFLAGS="$CFLAGS"
11317 +# Set sane defaults for various variables
11318 +test -z "$AR" && AR=ar
11319 +test -z "$AR_FLAGS" && AR_FLAGS=cru
11320 +test -z "$AS" && AS=as
11321 +test -z "$CC" && CC=cc
11322 +test -z "$DLLTOOL" && DLLTOOL=dlltool
11323 +test -z "$LD" && LD=ld
11324 +test -z "$LN_S" && LN_S="ln -s"
11325 +test -z "$MAGIC_CMD" && MAGIC_CMD=file
11326 +test -z "$NM" && NM=nm
11327 +test -z "$OBJDUMP" && OBJDUMP=objdump
11328 +test -z "$RANLIB" && RANLIB=:
11329 +test -z "$STRIP" && STRIP=:
11330 +test -z "$ac_objext" && ac_objext=o
11332 +if test x"$host" != x"$build"; then
11333 + ac_tool_prefix=${host_alias}-
11338 +# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
11341 +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
11346 + # AIX sometimes has problems with the GCC collect2 program. For some
11347 + # reason, if we set the COLLECT_NAMES environment variable, the problems
11348 + # vanish in a puff of smoke.
11349 + if test "X${COLLECT_NAMES+set}" != Xset; then
11351 + export COLLECT_NAMES
11356 +# Determine commands to create old-style static archives.
11357 +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
11358 +old_postinstall_cmds='chmod 644 $oldlib'
11359 +old_postuninstall_cmds=
11361 +if test -n "$RANLIB"; then
11364 + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
11367 + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
11370 + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
11373 +# Allow CC to be a program name with arguments.
11377 +echo "$as_me:$LINENO: checking for objdir" >&5
11378 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6
11379 +rm -f .libs 2>/dev/null
11380 +mkdir .libs 2>/dev/null
11381 +if test -d .libs; then
11384 + # MS-DOS does not allow filenames that begin with a dot.
11387 +rmdir .libs 2>/dev/null
11388 +echo "$as_me:$LINENO: result: $objdir" >&5
11389 +echo "${ECHO_T}$objdir" >&6
11393 +# Check whether --with-pic or --without-pic was given.
11394 +if test "${with_pic+set}" = set; then
11395 + withval="$with_pic"
11396 + pic_mode="$withval"
11400 +test -z "$pic_mode" && pic_mode=default
11402 +# We assume here that the value for lt_cv_prog_cc_pic will not be cached
11403 +# in isolation, and that seeing it set (from the cache) indicates that
11404 +# the associated values are set (in the cache) correctly too.
11405 +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
11406 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
11407 +if test "${lt_cv_prog_cc_pic+set}" = set; then
11408 + echo $ECHO_N "(cached) $ECHO_C" >&6
11410 + lt_cv_prog_cc_pic=
11411 + lt_cv_prog_cc_shlib=
11412 + lt_cv_prog_cc_wl=
11413 + lt_cv_prog_cc_static=
11414 + lt_cv_prog_cc_no_builtin=
11415 + lt_cv_prog_cc_can_build_shared=$can_build_shared
11417 + if test "$GCC" = yes; then
11418 + lt_cv_prog_cc_wl='-Wl,'
11419 + lt_cv_prog_cc_static='-static'
11423 + # Below there is a dirty hack to force normal static linking with -ldl
11424 + # The problem is because libdl dynamically linked with both libc and
11425 + # libC (AIX C++ library), which obviously doesn't included in libraries
11426 + # list by gcc. This cause undefined symbols with -static flags.
11427 + # This hack allows C programs to be linked with "-static -ldl", but
11428 + # not sure about C++ programs.
11429 + lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC"
11432 + # FIXME: we need at least 68020 code to build shared libraries, but
11433 + # adding the `-m68020' flag to GCC prevents building anything better,
11434 + # like `-m68040'.
11435 + lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
11437 + beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
11438 + # PIC is the default for these OSes.
11440 + darwin* | rhapsody*)
11441 + # PIC is the default on this platform
11442 + # Common symbols not allowed in MH_DYLIB files
11443 + lt_cv_prog_cc_pic='-fno-common'
11445 + cygwin* | mingw* | pw32* | os2*)
11446 + # This hack is so that the source file can tell whether it is being
11447 + # built for inclusion in a dll (and should export symbols for example).
11448 + lt_cv_prog_cc_pic='-DDLL_EXPORT'
11451 + if test -d /usr/nec; then
11452 + lt_cv_prog_cc_pic=-Kconform_pic
11456 + lt_cv_prog_cc_pic='-fPIC'
11460 + # PORTME Check for PIC flags for the system compiler.
11462 + aix3* | aix4* | aix5*)
11463 + lt_cv_prog_cc_wl='-Wl,'
11464 + # All AIX code is PIC.
11465 + if test "$host_cpu" = ia64; then
11466 + # AIX 5 now supports IA64 processor
11467 + lt_cv_prog_cc_static='-Bstatic'
11469 + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
11473 + hpux9* | hpux10* | hpux11*)
11474 + # Is there a better lt_cv_prog_cc_static that works with the bundled CC?
11475 + lt_cv_prog_cc_wl='-Wl,'
11476 + lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive"
11477 + lt_cv_prog_cc_pic='+Z'
11481 + lt_cv_prog_cc_wl='-Wl,'
11482 + lt_cv_prog_cc_static='-non_shared'
11483 + # PIC (with -KPIC) is the default.
11486 + cygwin* | mingw* | pw32* | os2*)
11487 + # This hack is so that the source file can tell whether it is being
11488 + # built for inclusion in a dll (and should export symbols for example).
11489 + lt_cv_prog_cc_pic='-DDLL_EXPORT'
11493 + lt_cv_prog_cc_pic='-KPIC'
11494 + lt_cv_prog_cc_static='-Bstatic'
11497 + osf3* | osf4* | osf5*)
11498 + # All OSF/1 code is PIC.
11499 + lt_cv_prog_cc_wl='-Wl,'
11500 + lt_cv_prog_cc_static='-non_shared'
11504 + lt_cv_prog_cc_pic='-Kpic'
11505 + lt_cv_prog_cc_static='-dn'
11506 + lt_cv_prog_cc_shlib='-belf'
11510 + lt_cv_prog_cc_pic='-KPIC'
11511 + lt_cv_prog_cc_static='-Bstatic'
11512 + lt_cv_prog_cc_wl='-Wl,'
11516 + lt_cv_prog_cc_pic='-PIC'
11517 + lt_cv_prog_cc_static='-Bstatic'
11518 + lt_cv_prog_cc_wl='-Qoption ld '
11521 + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
11522 + lt_cv_prog_cc_pic='-KPIC'
11523 + lt_cv_prog_cc_static='-Bstatic'
11524 + if test "x$host_vendor" = xsni; then
11525 + lt_cv_prog_cc_wl='-LD'
11527 + lt_cv_prog_cc_wl='-Wl,'
11532 + lt_cv_prog_cc_pic='-pic'
11533 + lt_cv_prog_cc_static='-Bstatic'
11537 + if test -d /usr/nec ;then
11538 + lt_cv_prog_cc_pic='-Kconform_pic'
11539 + lt_cv_prog_cc_static='-Bstatic'
11544 + lt_cv_prog_cc_can_build_shared=no
11551 +if test -z "$lt_cv_prog_cc_pic"; then
11552 + echo "$as_me:$LINENO: result: none" >&5
11553 +echo "${ECHO_T}none" >&6
11555 + echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5
11556 +echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6
11558 + # Check to make sure the pic_flag actually works.
11559 + echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
11560 +echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6
11561 + if test "${lt_cv_prog_cc_pic_works+set}" = set; then
11562 + echo $ECHO_N "(cached) $ECHO_C" >&6
11564 + save_CFLAGS="$CFLAGS"
11565 + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
11566 + cat >conftest.$ac_ext <<_ACEOF
11567 +#line $LINENO "configure"
11568 +#include "confdefs.h"
11578 +rm -f conftest.$ac_objext
11579 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
11580 + (eval $ac_compile) 2>&5
11582 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11583 + (exit $ac_status); } &&
11584 + { ac_try='test -s conftest.$ac_objext'
11585 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11586 + (eval $ac_try) 2>&5
11588 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11589 + (exit $ac_status); }; }; then
11591 + hpux9* | hpux10* | hpux11*)
11592 + # On HP-UX, both CC and GCC only warn that PIC is supported... then
11593 + # they create non-PIC objects. So, if there were any warnings, we
11594 + # assume that PIC is not supported.
11595 + if test -s conftest.err; then
11596 + lt_cv_prog_cc_pic_works=no
11598 + lt_cv_prog_cc_pic_works=yes
11602 + lt_cv_prog_cc_pic_works=yes
11607 + echo "$as_me: failed program was:" >&5
11608 +cat conftest.$ac_ext >&5
11609 + lt_cv_prog_cc_pic_works=no
11612 +rm -f conftest.$ac_objext conftest.$ac_ext
11613 + CFLAGS="$save_CFLAGS"
11618 + if test "X$lt_cv_prog_cc_pic_works" = Xno; then
11619 + lt_cv_prog_cc_pic=
11620 + lt_cv_prog_cc_can_build_shared=no
11622 + lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic"
11625 + echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5
11626 +echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6
11629 +# Check for any special shared library compilation flags.
11630 +if test -n "$lt_cv_prog_cc_shlib"; then
11631 + { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5
11632 +echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;}
11633 + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then :
11635 + { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
11636 +echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
11637 + lt_cv_prog_cc_can_build_shared=no
11641 +echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
11642 +echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6
11643 +if test "${lt_cv_prog_cc_static_works+set}" = set; then
11644 + echo $ECHO_N "(cached) $ECHO_C" >&6
11646 + lt_cv_prog_cc_static_works=no
11647 + save_LDFLAGS="$LDFLAGS"
11648 + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
11649 + cat >conftest.$ac_ext <<_ACEOF
11650 +#line $LINENO "configure"
11651 +#include "confdefs.h"
11661 +rm -f conftest.$ac_objext conftest$ac_exeext
11662 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
11663 + (eval $ac_link) 2>&5
11665 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11666 + (exit $ac_status); } &&
11667 + { ac_try='test -s conftest$ac_exeext'
11668 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11669 + (eval $ac_try) 2>&5
11671 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11672 + (exit $ac_status); }; }; then
11673 + lt_cv_prog_cc_static_works=yes
11675 + echo "$as_me: failed program was:" >&5
11676 +cat conftest.$ac_ext >&5
11678 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
11679 + LDFLAGS="$save_LDFLAGS"
11684 +# Belt *and* braces to stop my trousers falling down:
11685 +test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static=
11686 +echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5
11687 +echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6
11689 +pic_flag="$lt_cv_prog_cc_pic"
11690 +special_shlib_compile_flags="$lt_cv_prog_cc_shlib"
11691 +wl="$lt_cv_prog_cc_wl"
11692 +link_static_flag="$lt_cv_prog_cc_static"
11693 +no_builtin_flag="$lt_cv_prog_cc_no_builtin"
11694 +can_build_shared="$lt_cv_prog_cc_can_build_shared"
11697 +# Check to see if options -o and -c are simultaneously supported by compiler
11698 +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
11699 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
11700 +if test "${lt_cv_compiler_c_o+set}" = set; then
11701 + echo $ECHO_N "(cached) $ECHO_C" >&6
11704 +$rm -r conftest 2>/dev/null
11707 +echo "int some_variable = 0;" > conftest.$ac_ext
11709 +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
11710 +# that will create temporary files in the current directory regardless of
11711 +# the output directory. Thus, making CWD read-only will cause this test
11712 +# to fail, enabling locking or at least warning the user not to do parallel
11715 +save_CFLAGS="$CFLAGS"
11716 +CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
11718 +if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
11719 + # The compiler can only warn and ignore the option if not recognized
11720 + # So say no if there are warnings
11721 + if test -s out/conftest.err; then
11722 + lt_cv_compiler_c_o=no
11724 + lt_cv_compiler_c_o=yes
11727 + # Append any errors to the config.log.
11728 + cat out/conftest.err 1>&5
11729 + lt_cv_compiler_c_o=no
11731 +CFLAGS="$save_CFLAGS"
11733 +$rm conftest* out/*
11737 +$rm -r conftest 2>/dev/null
11741 +compiler_c_o=$lt_cv_compiler_c_o
11742 +echo "$as_me:$LINENO: result: $compiler_c_o" >&5
11743 +echo "${ECHO_T}$compiler_c_o" >&6
11745 +if test x"$compiler_c_o" = x"yes"; then
11746 + # Check to see if we can write to a .lo
11747 + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5
11748 +echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6
11749 + if test "${lt_cv_compiler_o_lo+set}" = set; then
11750 + echo $ECHO_N "(cached) $ECHO_C" >&6
11753 + lt_cv_compiler_o_lo=no
11754 + save_CFLAGS="$CFLAGS"
11755 + CFLAGS="$CFLAGS -c -o conftest.lo"
11756 + save_objext="$ac_objext"
11758 + cat >conftest.$ac_ext <<_ACEOF
11759 +#line $LINENO "configure"
11760 +#include "confdefs.h"
11765 +int some_variable = 0;
11770 +rm -f conftest.$ac_objext
11771 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
11772 + (eval $ac_compile) 2>&5
11774 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11775 + (exit $ac_status); } &&
11776 + { ac_try='test -s conftest.$ac_objext'
11777 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11778 + (eval $ac_try) 2>&5
11780 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11781 + (exit $ac_status); }; }; then
11782 + # The compiler can only warn and ignore the option if not recognized
11783 + # So say no if there are warnings
11784 + if test -s conftest.err; then
11785 + lt_cv_compiler_o_lo=no
11787 + lt_cv_compiler_o_lo=yes
11791 + echo "$as_me: failed program was:" >&5
11792 +cat conftest.$ac_ext >&5
11794 +rm -f conftest.$ac_objext conftest.$ac_ext
11795 + ac_objext="$save_objext"
11796 + CFLAGS="$save_CFLAGS"
11800 + compiler_o_lo=$lt_cv_compiler_o_lo
11801 + echo "$as_me:$LINENO: result: $compiler_o_lo" >&5
11802 +echo "${ECHO_T}$compiler_o_lo" >&6
11807 +# Check to see if we can do hard links to lock some files if needed
11808 +hard_links="nottested"
11809 +if test "$compiler_c_o" = no && test "$need_locks" != no; then
11810 + # do not overwrite the value of need_locks provided by the user
11811 + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
11812 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
11815 + ln conftest.a conftest.b 2>/dev/null && hard_links=no
11817 + ln conftest.a conftest.b 2>&5 || hard_links=no
11818 + ln conftest.a conftest.b 2>/dev/null && hard_links=no
11819 + echo "$as_me:$LINENO: result: $hard_links" >&5
11820 +echo "${ECHO_T}$hard_links" >&6
11821 + if test "$hard_links" = no; then
11822 + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
11823 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
11830 +if test "$GCC" = yes; then
11831 + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
11832 + echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
11833 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
11834 + echo "int some_variable = 0;" > conftest.$ac_ext
11835 + save_CFLAGS="$CFLAGS"
11836 + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
11837 + compiler_rtti_exceptions=no
11838 + cat >conftest.$ac_ext <<_ACEOF
11839 +#line $LINENO "configure"
11840 +#include "confdefs.h"
11845 +int some_variable = 0;
11850 +rm -f conftest.$ac_objext
11851 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
11852 + (eval $ac_compile) 2>&5
11854 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11855 + (exit $ac_status); } &&
11856 + { ac_try='test -s conftest.$ac_objext'
11857 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
11858 + (eval $ac_try) 2>&5
11860 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
11861 + (exit $ac_status); }; }; then
11862 + # The compiler can only warn and ignore the option if not recognized
11863 + # So say no if there are warnings
11864 + if test -s conftest.err; then
11865 + compiler_rtti_exceptions=no
11867 + compiler_rtti_exceptions=yes
11871 + echo "$as_me: failed program was:" >&5
11872 +cat conftest.$ac_ext >&5
11874 +rm -f conftest.$ac_objext conftest.$ac_ext
11875 + CFLAGS="$save_CFLAGS"
11876 + echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5
11877 +echo "${ECHO_T}$compiler_rtti_exceptions" >&6
11879 + if test "$compiler_rtti_exceptions" = "yes"; then
11880 + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
11882 + no_builtin_flag=' -fno-builtin'
11886 +# See if the linker supports building shared libraries.
11887 +echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5
11888 +echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6
11890 +allow_undefined_flag=
11891 +no_undefined_flag=
11892 +need_lib_prefix=unknown
11893 +need_version=unknown
11894 +# when you set need_version to no, make sure it does not cause -set_version
11895 +# flags to be left without arguments
11897 +archive_expsym_cmds=
11898 +old_archive_from_new_cmds=
11899 +old_archive_from_expsyms_cmds=
11900 +export_dynamic_flag_spec=
11901 +whole_archive_flag_spec=
11902 +thread_safe_flag_spec=
11903 +hardcode_into_libs=no
11904 +hardcode_libdir_flag_spec=
11905 +hardcode_libdir_separator=
11906 +hardcode_direct=no
11907 +hardcode_minus_L=no
11908 +hardcode_shlibpath_var=unsupported
11910 +link_all_deplibs=unknown
11911 +always_export_symbols=no
11912 +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
11913 +# include_expsyms should be a list of space-separated symbols to be *always*
11914 +# included in the symbol list
11916 +# exclude_expsyms can be an egrep regular expression of symbols to exclude
11917 +# it will be wrapped by ` (' and `)$', so one must not match beginning or
11918 +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
11919 +# as well as any symbol that contains `d'.
11920 +exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
11921 +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
11922 +# platforms (ab)use it in PIC code, but their linkers get confused if
11923 +# the symbol is explicitly referenced. Since portable code cannot
11924 +# rely on this symbol name, it's probably fine to never include it in
11925 +# preloaded symbol tables.
11926 +extract_expsyms_cmds=
11929 +cygwin* | mingw* | pw32*)
11930 + # FIXME: the MSVC++ port hasn't been tested in a loooong time
11931 + # When not using gcc, we currently assume that we are using
11932 + # Microsoft Visual C++.
11933 + if test "$GCC" != yes; then
11943 +if test "$with_gnu_ld" = yes; then
11944 + # If archive_cmds runs LD, not CC, wlarc should be empty
11947 + # See if GNU ld supports shared libraries.
11949 + aix3* | aix4* | aix5*)
11950 + # On AIX, the GNU linker is very broken
11951 + # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available.
11955 +*** Warning: the GNU linker, at least up to release 2.9.1, is reported
11956 +*** to be unable to reliably create shared libraries on AIX.
11957 +*** Therefore, libtool is disabling shared libraries support. If you
11958 +*** really care for shared libraries, you may want to modify your PATH
11959 +*** so that a non-GNU linker is found, and then restart.
11965 + 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)'
11966 + hardcode_libdir_flag_spec='-L$libdir'
11967 + hardcode_minus_L=yes
11969 + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
11970 + # that the semantics of dynamic libraries on AmigaOS, at least up
11971 + # to version 4, is to share data among multiple programs linked
11972 + # with the same dynamic library. Since this doesn't match the
11973 + # behavior of shared libraries on other platforms, we can use
11979 + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
11980 + allow_undefined_flag=unsupported
11981 + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
11982 + # support --undefined. This deserves some investigation. FIXME
11983 + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
11989 + cygwin* | mingw* | pw32*)
11990 + # hardcode_libdir_flag_spec is actually meaningless, as there is
11991 + # no search path for DLLs.
11992 + hardcode_libdir_flag_spec='-L$libdir'
11993 + allow_undefined_flag=unsupported
11994 + always_export_symbols=yes
11996 + extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
11997 + sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~
11998 + test -f $output_objdir/impgen.exe || (cd $output_objdir && \
11999 + if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
12000 + else $CC -o impgen impgen.c ; fi)~
12001 + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
12003 + old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
12005 + # cygwin and mingw dlls have different entry points and sets of symbols
12007 + # FIXME: what about values for MSVC?
12008 + dll_entry=__cygwin_dll_entry@12
12009 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
12013 + dll_entry=_DllMainCRTStartup@12
12014 + dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
12018 + # mingw and cygwin differ, and it's simplest to just exclude the union
12019 + # of the two symbol sets.
12020 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
12022 + # recent cygwin and mingw systems supply a stub DllMain which the user
12023 + # can override, but on older systems we have to supply one (in ltdll.c)
12024 + if test "x$lt_cv_need_dllmain" = "xyes"; then
12025 + ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext "
12026 + 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~
12027 + test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
12033 + # Extract the symbol export list from an `--export-all' def file,
12034 + # then regenerate the def file from the symbol export list, so that
12035 + # the compiled dll only exports the symbol export list.
12036 + # Be careful not to strip the DATA tag left be newer dlltools.
12037 + export_symbols_cmds="$ltdll_cmds"'
12038 + $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
12039 + sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
12041 + # If the export-symbols file already is a .def file (1st line
12042 + # is EXPORTS), use it as is.
12043 + # If DATA tags from a recent dlltool are present, honour them!
12044 + archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then
12045 + cp $export_symbols $output_objdir/$soname-def;
12047 + echo EXPORTS > $output_objdir/$soname-def;
12049 + cat $export_symbols | while read symbol; do
12050 + set dummy \$symbol;
12052 + 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
12053 + *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;;
12055 + _lt_hint=`expr 1 + \$_lt_hint`;
12059 + $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~
12060 + $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~
12061 + $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~
12062 + $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~
12063 + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
12067 + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
12068 + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
12071 + archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
12072 + archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
12076 + solaris* | sysv5*)
12077 + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
12081 +*** Warning: The releases 2.8.* of the GNU linker cannot reliably
12082 +*** create shared libraries on Solaris systems. Therefore, libtool
12083 +*** is disabling shared libraries support. We urge you to upgrade GNU
12084 +*** binutils to release 2.9.1 or newer. Another option is to modify
12085 +*** your PATH or compiler configuration so that the native linker is
12086 +*** used, and then restart.
12089 + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
12090 + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
12091 + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
12098 + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
12100 + hardcode_direct=yes
12101 + hardcode_shlibpath_var=no
12105 + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
12106 + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
12107 + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
12114 + if test "$ld_shlibs" = yes; then
12115 + runpath_var=LD_RUN_PATH
12116 + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
12117 + export_dynamic_flag_spec='${wl}--export-dynamic'
12119 + cygwin* | mingw* | pw32*)
12120 + # dlltool doesn't understand --whole-archive et. al.
12121 + whole_archive_flag_spec=
12124 + # ancient GNU ld didn't support --whole-archive et. al.
12125 + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
12126 + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
12128 + whole_archive_flag_spec=
12134 + # PORTME fill in a description of your system's linker (not GNU ld)
12137 + allow_undefined_flag=unsupported
12138 + always_export_symbols=yes
12139 + 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'
12140 + # Note: this linker hardcodes the directories in LIBPATH if there
12141 + # are no directories specified by -L.
12142 + hardcode_minus_L=yes
12143 + if test "$GCC" = yes && test -z "$link_static_flag"; then
12144 + # Neither direct hardcoding nor static linking is supported with a
12145 + # broken collect2.
12146 + hardcode_direct=unsupported
12151 + if test "$host_cpu" = ia64; then
12152 + # On IA64, the linker does run time linking by default, so we don't
12153 + # have to do anything special.
12154 + aix_use_runtimelinking=no
12155 + exp_sym_flag='-Bexport'
12158 + aix_use_runtimelinking=no
12160 + # Test if we are trying to use run time linking or normal
12161 + # AIX style linking. If -brtl is somewhere in LDFLAGS, we
12162 + # need to do runtime linking.
12163 + case $host_os in aix4.[23]|aix4.[23].*|aix5*)
12164 + for ld_flag in $LDFLAGS; do
12165 + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
12166 + aix_use_runtimelinking=yes
12172 + exp_sym_flag='-bexport'
12173 + no_entry_flag='-bnoentry'
12176 + # When large executables or shared objects are built, AIX ld can
12177 + # have problems creating the table of contents. If linking a library
12178 + # or program results in "error TOC overflow" add -mminimal-toc to
12179 + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
12180 + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
12182 + hardcode_direct=yes
12184 + hardcode_libdir_separator=':'
12185 + if test "$GCC" = yes; then
12186 + case $host_os in aix4.[012]|aix4.[012].*)
12187 + collect2name=`${CC} -print-prog-name=collect2`
12188 + if test -f "$collect2name" && \
12189 + strings "$collect2name" | grep resolve_lib_name >/dev/null
12191 + # We have reworked collect2
12192 + hardcode_direct=yes
12194 + # We have old collect2
12195 + hardcode_direct=unsupported
12196 + # It fails to find uninstalled libraries when the uninstalled
12197 + # path is not listed in the libpath. Setting hardcode_minus_L
12198 + # to unsupported forces relinking
12199 + hardcode_minus_L=yes
12200 + hardcode_libdir_flag_spec='-L$libdir'
12201 + hardcode_libdir_separator=
12205 + shared_flag='-shared'
12208 + if test "$host_cpu" = ia64; then
12209 + shared_flag='${wl}-G'
12211 + if test "$aix_use_runtimelinking" = yes; then
12212 + shared_flag='${wl}-G'
12214 + shared_flag='${wl}-bM:SRE'
12219 + # It seems that -bexpall can do strange things, so it is better to
12220 + # generate a list of symbols to export.
12221 + always_export_symbols=yes
12222 + if test "$aix_use_runtimelinking" = yes; then
12223 + # Warning - without using the other runtime loading flags (-brtl),
12224 + # -berok will link without error, but may produce a broken library.
12225 + allow_undefined_flag='-berok'
12226 + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
12227 + 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"
12229 + if test "$host_cpu" = ia64; then
12230 + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
12231 + allow_undefined_flag="-z nodefs"
12232 + 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"
12234 + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib'
12235 + # Warning - without using the other run time loading flags,
12236 + # -berok will link without error, but may produce a broken library.
12237 + allow_undefined_flag='${wl}-berok'
12238 + # This is a bit strange, but is similar to how AIX traditionally builds
12239 + # it's shared libraries.
12240 + 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'
12246 + 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)'
12247 + hardcode_libdir_flag_spec='-L$libdir'
12248 + hardcode_minus_L=yes
12249 + # see comment about different semantics on the GNU ld section
12253 + cygwin* | mingw* | pw32*)
12254 + # When not using gcc, we currently assume that we are using
12255 + # Microsoft Visual C++.
12256 + # hardcode_libdir_flag_spec is actually meaningless, as there is
12257 + # no search path for DLLs.
12258 + hardcode_libdir_flag_spec=' '
12259 + allow_undefined_flag=unsupported
12260 + # Tell ltmain to make .lib files, not .a files.
12262 + # FIXME: Setting linknames here is a bad hack.
12263 + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
12264 + # The linker will automatically build a .lib file if we build a DLL.
12265 + old_archive_from_new_cmds='true'
12266 + # FIXME: Should let the user specify the lib program.
12267 + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
12268 + fix_srcfile_path='`cygpath -w "$srcfile"`'
12271 + darwin* | rhapsody*)
12272 + case "$host_os" in
12273 + rhapsody* | darwin1.[012])
12274 + allow_undefined_flag='-undefined suppress'
12276 + *) # Darwin 1.3 on
12277 + allow_undefined_flag='-flat_namespace -undefined suppress'
12280 + # FIXME: Relying on posixy $() will cause problems for
12281 + # cross-compilation, but unfortunately the echo tests do not
12282 + # yet detect zsh echo's removal of \ escapes.
12283 + 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'
12284 + # We need to add '_' to the symbols in $export_symbols first
12285 + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols'
12286 + hardcode_direct=yes
12287 + hardcode_shlibpath_var=no
12288 + whole_archive_flag_spec='-all_load $convenience'
12295 + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
12296 + # support. Future versions do this automatically, but an explicit c++rt0.o
12297 + # does not break anything, and helps significantly (at the cost of a little
12300 + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
12301 + hardcode_libdir_flag_spec='-R$libdir'
12302 + hardcode_direct=yes
12303 + hardcode_shlibpath_var=no
12306 + # Unfortunately, older versions of FreeBSD 2 do not have this feature.
12308 + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
12309 + hardcode_direct=yes
12310 + hardcode_minus_L=yes
12311 + hardcode_shlibpath_var=no
12314 + # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
12316 + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
12317 + hardcode_libdir_flag_spec='-R$libdir'
12318 + hardcode_direct=yes
12319 + hardcode_shlibpath_var=no
12322 + hpux9* | hpux10* | hpux11*)
12324 + 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' ;;
12325 + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
12327 + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
12328 + hardcode_libdir_separator=:
12329 + hardcode_direct=yes
12330 + hardcode_minus_L=yes # Not in the search PATH, but as the default
12331 + # location of the library.
12332 + export_dynamic_flag_spec='${wl}-E'
12336 + if test "$GCC" = yes; then
12337 + 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'
12339 + 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'
12341 + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
12342 + hardcode_libdir_separator=:
12343 + link_all_deplibs=yes
12347 + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
12348 + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
12350 + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
12352 + hardcode_libdir_flag_spec='-R$libdir'
12353 + hardcode_direct=yes
12354 + hardcode_shlibpath_var=no
12358 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12359 + hardcode_direct=yes
12360 + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
12361 + hardcode_libdir_separator=:
12362 + hardcode_shlibpath_var=no
12366 + hardcode_direct=yes
12367 + hardcode_shlibpath_var=no
12368 + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
12369 + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags'
12370 + hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
12371 + export_dynamic_flag_spec='${wl}-E'
12373 + case "$host_os" in
12374 + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
12375 + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
12376 + hardcode_libdir_flag_spec='-R$libdir'
12379 + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags'
12380 + hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
12387 + hardcode_libdir_flag_spec='-L$libdir'
12388 + hardcode_minus_L=yes
12389 + allow_undefined_flag=unsupported
12390 + 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'
12391 + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
12395 + if test "$GCC" = yes; then
12396 + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
12397 + 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'
12399 + allow_undefined_flag=' -expect_unresolved \*'
12400 + 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'
12402 + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
12403 + hardcode_libdir_separator=:
12406 + osf4* | osf5*) # as osf3* with the addition of -msym flag
12407 + if test "$GCC" = yes; then
12408 + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
12409 + 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'
12410 + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
12412 + allow_undefined_flag=' -expect_unresolved \*'
12413 + 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'
12414 + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
12415 + $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'
12417 + #Both c and cxx compiler support -rpath directly
12418 + hardcode_libdir_flag_spec='-rpath $libdir'
12420 + hardcode_libdir_separator=:
12424 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12425 + hardcode_shlibpath_var=no
12426 + runpath_var=LD_RUN_PATH
12427 + hardcode_runpath_var=yes
12428 + export_dynamic_flag_spec='${wl}-Bexport'
12432 + # gcc --version < 3.0 without binutils cannot create self contained
12433 + # shared libraries reliably, requiring libgcc.a to resolve some of
12434 + # the object symbols generated in some cases. Libraries that use
12435 + # assert need libgcc.a to resolve __eprintf, for example. Linking
12436 + # a copy of libgcc.a into every shared library to guarantee resolving
12437 + # such symbols causes other problems: According to Tim Van Holder
12438 + # <tim.van.holder@pandora.be>, C++ libraries end up with a separate
12439 + # (to the application) exception stack for one thing.
12440 + no_undefined_flag=' -z defs'
12441 + if test "$GCC" = yes; then
12442 + case `$CC --version 2>/dev/null` in
12446 +*** Warning: Releases of GCC earlier than version 3.0 cannot reliably
12447 +*** create self contained shared libraries on Solaris systems, without
12448 +*** introducing a dependency on libgcc.a. Therefore, libtool is disabling
12449 +*** -no-undefined support, which will at least allow you to build shared
12450 +*** libraries. However, you may find that when you link such libraries
12451 +*** into an application without using GCC, you have to manually add
12452 +*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to
12453 +*** upgrade to a newer version of GCC. Another option is to rebuild your
12454 +*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.
12457 + no_undefined_flag=
12461 + # $CC -shared without GNU ld will not create a library from C++
12462 + # object files and a static libstdc++, better avoid it by now
12463 + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
12464 + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
12465 + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
12466 + hardcode_libdir_flag_spec='-R$libdir'
12467 + hardcode_shlibpath_var=no
12469 + solaris2.[0-5] | solaris2.[0-5].*) ;;
12470 + *) # Supported since Solaris 2.6 (maybe 2.5.1?)
12471 + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
12473 + link_all_deplibs=yes
12477 + if test "x$host_vendor" = xsequent; then
12478 + # Use $CC to link under sequent, because it throws in some extra .o
12479 + # files that make .init and .fini sections work.
12480 + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
12482 + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
12484 + hardcode_libdir_flag_spec='-L$libdir'
12485 + hardcode_direct=yes
12486 + hardcode_minus_L=yes
12487 + hardcode_shlibpath_var=no
12491 + if test "x$host_vendor" = xsno; then
12492 + archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags'
12493 + hardcode_direct=yes # is this really true???
12495 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12496 + hardcode_direct=no #Motorola manual says yes, but my tests say they lie
12498 + runpath_var='LD_RUN_PATH'
12499 + hardcode_shlibpath_var=no
12503 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12504 + hardcode_shlibpath_var=no
12505 + export_dynamic_flag_spec='-Bexport'
12509 + no_undefined_flag=' -z text'
12510 + # $CC -shared without GNU ld will not create a library from C++
12511 + # object files and a static libstdc++, better avoid it by now
12512 + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
12513 + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
12514 + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
12515 + hardcode_libdir_flag_spec=
12516 + hardcode_shlibpath_var=no
12517 + runpath_var='LD_RUN_PATH'
12521 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12522 + hardcode_libdir_flag_spec='-L$libdir'
12523 + hardcode_shlibpath_var=no
12527 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12528 + hardcode_libdir_flag_spec='-L$libdir'
12529 + hardcode_shlibpath_var=no
12533 + if test -d /usr/nec; then
12534 + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
12535 + hardcode_shlibpath_var=no
12536 + runpath_var=LD_RUN_PATH
12537 + hardcode_runpath_var=yes
12543 + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
12544 + hardcode_direct=yes
12545 + hardcode_minus_L=no
12546 + hardcode_shlibpath_var=no
12547 + hardcode_runpath_var=yes
12548 + runpath_var=LD_RUN_PATH
12551 + sysv5uw7* | unixware7*)
12552 + no_undefined_flag='${wl}-z ${wl}text'
12553 + if test "$GCC" = yes; then
12554 + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
12556 + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
12558 + runpath_var='LD_RUN_PATH'
12559 + hardcode_shlibpath_var=no
12567 +echo "$as_me:$LINENO: result: $ld_shlibs" >&5
12568 +echo "${ECHO_T}$ld_shlibs" >&6
12569 +test "$ld_shlibs" = no && can_build_shared=no
12571 +# Check hardcoding attributes.
12572 +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
12573 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
12575 +if test -n "$hardcode_libdir_flag_spec" || \
12576 + test -n "$runpath_var"; then
12578 + # We can hardcode non-existant directories.
12579 + if test "$hardcode_direct" != no &&
12580 + # If the only mechanism to avoid hardcoding is shlibpath_var, we
12581 + # have to relink, otherwise we might link with an installed library
12582 + # when we should be linking with a yet-to-be-installed one
12583 + ## test "$hardcode_shlibpath_var" != no &&
12584 + test "$hardcode_minus_L" != no; then
12585 + # Linking always hardcodes the temporary library directory.
12586 + hardcode_action=relink
12588 + # We can link without hardcoding, and we can hardcode nonexisting dirs.
12589 + hardcode_action=immediate
12592 + # We cannot hardcode anything, or else we can only hardcode existing
12594 + hardcode_action=unsupported
12596 +echo "$as_me:$LINENO: result: $hardcode_action" >&5
12597 +echo "${ECHO_T}$hardcode_action" >&6
12601 +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
12602 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
12603 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
12604 + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
12605 + test -z "$striplib" && striplib="$STRIP --strip-unneeded"
12606 + echo "$as_me:$LINENO: result: yes" >&5
12607 +echo "${ECHO_T}yes" >&6
12609 + echo "$as_me:$LINENO: result: no" >&5
12610 +echo "${ECHO_T}no" >&6
12613 +reload_cmds='$LD$reload_flag -o $output$reload_objs'
12614 +test -z "$deplibs_check_method" && deplibs_check_method=unknown
12616 +# PORTME Fill in your ld.so characteristics
12617 +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
12618 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
12619 +library_names_spec=
12620 +libname_spec='lib$name'
12623 +postuninstall_cmds=
12627 +shlibpath_overrides_runpath=unknown
12629 +dynamic_linker="$host_os ld.so"
12630 +sys_lib_dlsearch_path_spec="/lib /usr/lib"
12631 +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
12635 + version_type=linux
12636 + library_names_spec='${libname}${release}.so$versuffix $libname.a'
12637 + shlibpath_var=LIBPATH
12639 + # AIX has no versioning support, so we append a major version to the name.
12640 + soname_spec='${libname}${release}.so$major'
12644 + version_type=linux
12645 + if test "$host_cpu" = ia64; then
12646 + # AIX 5 supports IA64
12647 + library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so'
12648 + shlibpath_var=LD_LIBRARY_PATH
12650 + # With GCC up to 2.95.x, collect2 would create an import file
12651 + # for dependence libraries. The import file would start with
12652 + # the line `#! .'. This would cause the generated library to
12653 + # depend on `.', always an invalid library. This was fixed in
12654 + # development snapshots of GCC prior to 3.0.
12656 + aix4 | aix4.[01] | aix4.[01].*)
12657 + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
12659 + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
12662 + can_build_shared=no
12666 + # AIX (on Power*) has no versioning support, so currently we can
12667 + # not hardcode correct soname into executable. Probably we can
12668 + # add versioning support to collect2, so additional links can
12669 + # be useful in future.
12670 + if test "$aix_use_runtimelinking" = yes; then
12671 + # If using run time linking (on AIX 4.2 or later) use lib<name>.so
12672 + # instead of lib<name>.a to let people know that these are not
12673 + # typical AIX shared libraries.
12674 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
12676 + # We preserve .a as extension for shared libraries through AIX4.2
12677 + # and later when we are not doing run time linking.
12678 + library_names_spec='${libname}${release}.a $libname.a'
12679 + soname_spec='${libname}${release}.so$major'
12681 + shlibpath_var=LIBPATH
12686 + library_names_spec='$libname.ixlibrary $libname.a'
12687 + # Create ${libname}_ixlibrary.a entries in /sys/libs.
12688 + 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'
12692 + library_names_spec='${libname}.so'
12693 + dynamic_linker="$host_os ld.so"
12694 + shlibpath_var=LIBRARY_PATH
12698 + version_type=linux
12700 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
12701 + soname_spec='${libname}${release}.so$major'
12702 + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
12703 + shlibpath_var=LD_LIBRARY_PATH
12704 + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
12705 + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
12706 + export_dynamic_flag_spec=-rdynamic
12707 + # the default ld.so.conf also contains /usr/contrib/lib and
12708 + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
12709 + # libtool to hard-code these into programs
12712 +cygwin* | mingw* | pw32*)
12713 + version_type=windows
12715 + need_lib_prefix=no
12716 + case $GCC,$host_os in
12718 + library_names_spec='$libname.dll.a'
12719 + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
12720 + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~
12721 + dldir=$destdir/`dirname \$dlpath`~
12722 + test -d \$dldir || mkdir -p \$dldir~
12723 + $install_prog .libs/$dlname \$dldir/$dlname'
12724 + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
12725 + dlpath=$dir/\$dldll~
12729 + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
12730 + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
12733 + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll'
12736 + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
12739 + dynamic_linker='Win32 ld.exe'
12740 + # FIXME: first we should search . and the directory the executable is in
12741 + shlibpath_var=PATH
12744 +darwin* | rhapsody*)
12745 + dynamic_linker="$host_os dyld"
12746 + version_type=darwin
12747 + need_lib_prefix=no
12749 + # FIXME: Relying on posixy $() will cause problems for
12750 + # cross-compilation, but unfortunately the echo tests do not
12751 + # yet detect zsh echo's removal of \ escapes.
12752 + 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)'
12753 + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
12754 + shlibpath_overrides_runpath=yes
12755 + shlibpath_var=DYLD_LIBRARY_PATH
12759 + dynamic_linker=no
12763 + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
12764 + version_type=freebsd-$objformat
12765 + case $version_type in
12767 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
12769 + need_lib_prefix=no
12772 + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
12776 + shlibpath_var=LD_LIBRARY_PATH
12779 + shlibpath_overrides_runpath=yes
12782 + shlibpath_overrides_runpath=no
12783 + hardcode_into_libs=yes
12789 + version_type=linux
12790 + need_lib_prefix=no
12792 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
12793 + soname_spec='${libname}${release}.so$major'
12794 + shlibpath_var=LD_LIBRARY_PATH
12795 + hardcode_into_libs=yes
12798 +hpux9* | hpux10* | hpux11*)
12799 + # Give a soname corresponding to the major version so that dld.sl refuses to
12800 + # link against other versions.
12801 + dynamic_linker="$host_os dld.sl"
12802 + version_type=sunos
12803 + need_lib_prefix=no
12805 + shlibpath_var=SHLIB_PATH
12806 + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
12807 + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
12808 + soname_spec='${libname}${release}.sl$major'
12809 + # HP-UX runs *really* slowly unless shared libraries are mode 555.
12810 + postinstall_cmds='chmod 555 $lib'
12814 + version_type=irix
12815 + need_lib_prefix=no
12817 + soname_spec='${libname}${release}.so$major'
12818 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
12821 + libsuff= shlibsuff=
12824 + case $LD in # libtool.m4 will add one of these switches to LD
12825 + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
12826 + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
12827 + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
12828 + *) libsuff= shlibsuff= libmagic=never-match;;
12832 + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
12833 + shlibpath_overrides_runpath=no
12834 + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
12835 + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
12838 +# No shared lib support for Linux oldld, aout, or coff.
12839 +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
12840 + dynamic_linker=no
12843 +# This must be Linux ELF.
12845 + version_type=linux
12846 + need_lib_prefix=no
12848 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
12849 + soname_spec='${libname}${release}.so$major'
12850 + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
12851 + shlibpath_var=LD_LIBRARY_PATH
12852 + shlibpath_overrides_runpath=no
12853 + # This implies no fast_install, which is unacceptable.
12854 + # Some rework will be needed to allow for fast_install
12855 + # before this can be enabled.
12856 + hardcode_into_libs=yes
12858 + # We used to test for /lib/ld.so.1 and disable shared libraries on
12859 + # powerpc, because MkLinux only supported shared libraries with the
12860 + # GNU dynamic linker. Since this was broken with cross compilers,
12861 + # most powerpc-linux boxes support dynamic linking these days and
12862 + # people can always --disable-shared, the test was removed, and we
12863 + # assume the GNU/Linux dynamic linker is in use.
12864 + dynamic_linker='GNU/Linux ld.so'
12868 + version_type=sunos
12869 + need_lib_prefix=no
12871 + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
12872 + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
12873 + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
12874 + dynamic_linker='NetBSD (a.out) ld.so'
12876 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
12877 + soname_spec='${libname}${release}.so$major'
12878 + dynamic_linker='NetBSD ld.elf_so'
12880 + shlibpath_var=LD_LIBRARY_PATH
12881 + shlibpath_overrides_runpath=yes
12882 + hardcode_into_libs=yes
12886 + version_type=linux
12887 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
12888 + shlibpath_var=LD_LIBRARY_PATH
12889 + shlibpath_overrides_runpath=yes
12893 + version_type=sunos
12894 + need_lib_prefix=no
12896 + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
12897 + case "$host_os" in
12898 + openbsd2.[89] | openbsd2.[89].*)
12899 + shlibpath_overrides_runpath=no
12902 + shlibpath_overrides_runpath=yes
12906 + shlibpath_overrides_runpath=yes
12908 + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
12909 + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
12910 + shlibpath_var=LD_LIBRARY_PATH
12914 + libname_spec='$name'
12915 + need_lib_prefix=no
12916 + library_names_spec='$libname.dll $libname.a'
12917 + dynamic_linker='OS/2 ld.exe'
12918 + shlibpath_var=LIBPATH
12921 +osf3* | osf4* | osf5*)
12924 + soname_spec='${libname}${release}.so'
12925 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
12926 + shlibpath_var=LD_LIBRARY_PATH
12927 + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
12928 + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
12933 + soname_spec='${libname}${release}.so$major'
12934 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
12935 + shlibpath_var=LD_LIBRARY_PATH
12939 + version_type=linux
12940 + need_lib_prefix=no
12942 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
12943 + soname_spec='${libname}${release}.so$major'
12944 + shlibpath_var=LD_LIBRARY_PATH
12945 + shlibpath_overrides_runpath=yes
12946 + hardcode_into_libs=yes
12947 + # ldd complains unless libraries are executable
12948 + postinstall_cmds='chmod +x $lib'
12952 + version_type=sunos
12953 + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
12954 + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
12955 + shlibpath_var=LD_LIBRARY_PATH
12956 + shlibpath_overrides_runpath=yes
12957 + if test "$with_gnu_ld" = yes; then
12958 + need_lib_prefix=no
12963 +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
12964 + version_type=linux
12965 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
12966 + soname_spec='${libname}${release}.so$major'
12967 + shlibpath_var=LD_LIBRARY_PATH
12968 + case $host_vendor in
12970 + shlibpath_overrides_runpath=no
12973 + need_lib_prefix=no
12975 + shlibpath_overrides_runpath=no
12976 + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
12982 + version_type=linux
12983 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
12984 + soname_spec='${libname}${release}.so$major'
12985 + shlibpath_var=LD_LIBRARY_PATH
12989 + version_type=linux
12990 + need_lib_prefix=no
12992 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
12993 + soname_spec='${libname}${release}.so$major'
12994 + shlibpath_var=LD_LIBRARY_PATH
12998 + if test -d /usr/nec ;then
12999 + version_type=linux
13000 + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
13001 + soname_spec='$libname.so.$major'
13002 + shlibpath_var=LD_LIBRARY_PATH
13007 + dynamic_linker=no
13010 +echo "$as_me:$LINENO: result: $dynamic_linker" >&5
13011 +echo "${ECHO_T}$dynamic_linker" >&6
13012 +test "$dynamic_linker" = no && can_build_shared=no
13014 +# Report the final consequences.
13015 +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
13016 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
13017 +echo "$as_me:$LINENO: result: $can_build_shared" >&5
13018 +echo "${ECHO_T}$can_build_shared" >&6
13020 +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
13021 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
13022 +test "$can_build_shared" = "no" && enable_shared=no
13024 +# On AIX, shared libraries and static libraries use the same namespace, and
13025 +# are all built from PIC.
13026 +case "$host_os" in
13028 + test "$enable_shared" = yes && enable_static=no
13029 + if test -n "$RANLIB"; then
13030 + archive_cmds="$archive_cmds~\$RANLIB \$lib"
13031 + postinstall_cmds='$RANLIB $lib'
13036 + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
13037 + test "$enable_shared" = yes && enable_static=no
13041 +echo "$as_me:$LINENO: result: $enable_shared" >&5
13042 +echo "${ECHO_T}$enable_shared" >&6
13044 +echo "$as_me:$LINENO: checking whether to build static libraries" >&5
13045 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
13046 +# Make sure either enable_shared or enable_static is yes.
13047 +test "$enable_shared" = yes || enable_static=yes
13048 +echo "$as_me:$LINENO: result: $enable_static" >&5
13049 +echo "${ECHO_T}$enable_static" >&6
13051 +if test "$hardcode_action" = relink; then
13052 + # Fast installation is not supported
13053 + enable_fast_install=no
13054 +elif test "$shlibpath_overrides_runpath" = yes ||
13055 + test "$enable_shared" = no; then
13056 + # Fast installation is not necessary
13057 + enable_fast_install=needless
13060 +variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
13061 +if test "$GCC" = yes; then
13062 + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
13065 +if test "x$enable_dlopen" != xyes; then
13066 + enable_dlopen=unknown
13067 + enable_dlopen_self=unknown
13068 + enable_dlopen_self_static=unknown
13071 + lt_cv_dlopen_libs=
13075 + lt_cv_dlopen="load_add_on"
13076 + lt_cv_dlopen_libs=
13077 + lt_cv_dlopen_self=yes
13080 + cygwin* | mingw* | pw32*)
13081 + lt_cv_dlopen="LoadLibrary"
13082 + lt_cv_dlopen_libs=
13086 + echo "$as_me:$LINENO: checking for shl_load" >&5
13087 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
13088 +if test "${ac_cv_func_shl_load+set}" = set; then
13089 + echo $ECHO_N "(cached) $ECHO_C" >&6
13091 + cat >conftest.$ac_ext <<_ACEOF
13092 +#line $LINENO "configure"
13093 +#include "confdefs.h"
13094 +/* System header to define __stub macros and hopefully few prototypes,
13095 + which can conflict with char shl_load (); below. */
13096 +#include <assert.h>
13097 +/* Override any gcc2 internal prototype to avoid an error. */
13098 +#ifdef __cplusplus
13101 +/* We use char because int might match the return type of a gcc2
13102 + builtin and then its argument prototype would still apply. */
13109 +/* The GNU C library defines this for functions which it implements
13110 + to always fail with ENOSYS. Some functions are actually named
13111 + something starting with __ and the normal name is an alias. */
13112 +#if defined (__stub_shl_load) || defined (__stub___shl_load)
13122 +rm -f conftest.$ac_objext conftest$ac_exeext
13123 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13124 + (eval $ac_link) 2>&5
13126 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13127 + (exit $ac_status); } &&
13128 + { ac_try='test -s conftest$ac_exeext'
13129 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
13130 + (eval $ac_try) 2>&5
13132 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13133 + (exit $ac_status); }; }; then
13134 + ac_cv_func_shl_load=yes
13136 + echo "$as_me: failed program was:" >&5
13137 +cat conftest.$ac_ext >&5
13138 +ac_cv_func_shl_load=no
13140 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
13142 +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
13143 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6
13144 +if test $ac_cv_func_shl_load = yes; then
13145 + lt_cv_dlopen="shl_load"
13147 + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
13148 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
13149 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then
13150 + echo $ECHO_N "(cached) $ECHO_C" >&6
13152 + ac_check_lib_save_LIBS=$LIBS
13153 +LIBS="-ldld $LIBS"
13154 +cat >conftest.$ac_ext <<_ACEOF
13155 +#line $LINENO "configure"
13156 +#include "confdefs.h"
13158 +/* Override any gcc2 internal prototype to avoid an error. */
13159 +#ifdef __cplusplus
13162 +/* We use char because int might match the return type of a gcc2
13163 + builtin and then its argument prototype would still apply. */
13173 +rm -f conftest.$ac_objext conftest$ac_exeext
13174 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13175 + (eval $ac_link) 2>&5
13177 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13178 + (exit $ac_status); } &&
13179 + { ac_try='test -s conftest$ac_exeext'
13180 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
13181 + (eval $ac_try) 2>&5
13183 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13184 + (exit $ac_status); }; }; then
13185 + ac_cv_lib_dld_shl_load=yes
13187 + echo "$as_me: failed program was:" >&5
13188 +cat conftest.$ac_ext >&5
13189 +ac_cv_lib_dld_shl_load=no
13191 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
13192 +LIBS=$ac_check_lib_save_LIBS
13194 +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
13195 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
13196 +if test $ac_cv_lib_dld_shl_load = yes; then
13197 + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
13199 + echo "$as_me:$LINENO: checking for dlopen" >&5
13200 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
13201 +if test "${ac_cv_func_dlopen+set}" = set; then
13202 + echo $ECHO_N "(cached) $ECHO_C" >&6
13204 + cat >conftest.$ac_ext <<_ACEOF
13205 +#line $LINENO "configure"
13206 +#include "confdefs.h"
13207 +/* System header to define __stub macros and hopefully few prototypes,
13208 + which can conflict with char dlopen (); below. */
13209 +#include <assert.h>
13210 +/* Override any gcc2 internal prototype to avoid an error. */
13211 +#ifdef __cplusplus
13214 +/* We use char because int might match the return type of a gcc2
13215 + builtin and then its argument prototype would still apply. */
13222 +/* The GNU C library defines this for functions which it implements
13223 + to always fail with ENOSYS. Some functions are actually named
13224 + something starting with __ and the normal name is an alias. */
13225 +#if defined (__stub_dlopen) || defined (__stub___dlopen)
13235 +rm -f conftest.$ac_objext conftest$ac_exeext
13236 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13237 + (eval $ac_link) 2>&5
13239 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13240 + (exit $ac_status); } &&
13241 + { ac_try='test -s conftest$ac_exeext'
13242 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
13243 + (eval $ac_try) 2>&5
13245 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13246 + (exit $ac_status); }; }; then
13247 + ac_cv_func_dlopen=yes
13249 + echo "$as_me: failed program was:" >&5
13250 +cat conftest.$ac_ext >&5
13251 +ac_cv_func_dlopen=no
13253 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
13255 +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
13256 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6
13257 +if test $ac_cv_func_dlopen = yes; then
13258 + lt_cv_dlopen="dlopen"
13260 + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
13261 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
13262 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then
13263 + echo $ECHO_N "(cached) $ECHO_C" >&6
13265 + ac_check_lib_save_LIBS=$LIBS
13267 +cat >conftest.$ac_ext <<_ACEOF
13268 +#line $LINENO "configure"
13269 +#include "confdefs.h"
13271 +/* Override any gcc2 internal prototype to avoid an error. */
13272 +#ifdef __cplusplus
13275 +/* We use char because int might match the return type of a gcc2
13276 + builtin and then its argument prototype would still apply. */
13286 +rm -f conftest.$ac_objext conftest$ac_exeext
13287 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13288 + (eval $ac_link) 2>&5
13290 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13291 + (exit $ac_status); } &&
13292 + { ac_try='test -s conftest$ac_exeext'
13293 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
13294 + (eval $ac_try) 2>&5
13296 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13297 + (exit $ac_status); }; }; then
13298 + ac_cv_lib_dl_dlopen=yes
13300 + echo "$as_me: failed program was:" >&5
13301 +cat conftest.$ac_ext >&5
13302 +ac_cv_lib_dl_dlopen=no
13304 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
13305 +LIBS=$ac_check_lib_save_LIBS
13307 +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
13308 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
13309 +if test $ac_cv_lib_dl_dlopen = yes; then
13310 + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
13312 + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
13313 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
13314 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then
13315 + echo $ECHO_N "(cached) $ECHO_C" >&6
13317 + ac_check_lib_save_LIBS=$LIBS
13318 +LIBS="-lsvld $LIBS"
13319 +cat >conftest.$ac_ext <<_ACEOF
13320 +#line $LINENO "configure"
13321 +#include "confdefs.h"
13323 +/* Override any gcc2 internal prototype to avoid an error. */
13324 +#ifdef __cplusplus
13327 +/* We use char because int might match the return type of a gcc2
13328 + builtin and then its argument prototype would still apply. */
13338 +rm -f conftest.$ac_objext conftest$ac_exeext
13339 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13340 + (eval $ac_link) 2>&5
13342 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13343 + (exit $ac_status); } &&
13344 + { ac_try='test -s conftest$ac_exeext'
13345 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
13346 + (eval $ac_try) 2>&5
13348 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13349 + (exit $ac_status); }; }; then
13350 + ac_cv_lib_svld_dlopen=yes
13352 + echo "$as_me: failed program was:" >&5
13353 +cat conftest.$ac_ext >&5
13354 +ac_cv_lib_svld_dlopen=no
13356 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
13357 +LIBS=$ac_check_lib_save_LIBS
13359 +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
13360 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
13361 +if test $ac_cv_lib_svld_dlopen = yes; then
13362 + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
13364 + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
13365 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
13366 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then
13367 + echo $ECHO_N "(cached) $ECHO_C" >&6
13369 + ac_check_lib_save_LIBS=$LIBS
13370 +LIBS="-ldld $LIBS"
13371 +cat >conftest.$ac_ext <<_ACEOF
13372 +#line $LINENO "configure"
13373 +#include "confdefs.h"
13375 +/* Override any gcc2 internal prototype to avoid an error. */
13376 +#ifdef __cplusplus
13379 +/* We use char because int might match the return type of a gcc2
13380 + builtin and then its argument prototype would still apply. */
13390 +rm -f conftest.$ac_objext conftest$ac_exeext
13391 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13392 + (eval $ac_link) 2>&5
13394 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13395 + (exit $ac_status); } &&
13396 + { ac_try='test -s conftest$ac_exeext'
13397 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
13398 + (eval $ac_try) 2>&5
13400 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13401 + (exit $ac_status); }; }; then
13402 + ac_cv_lib_dld_dld_link=yes
13404 + echo "$as_me: failed program was:" >&5
13405 +cat conftest.$ac_ext >&5
13406 +ac_cv_lib_dld_dld_link=no
13408 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
13409 +LIBS=$ac_check_lib_save_LIBS
13411 +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
13412 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
13413 +if test $ac_cv_lib_dld_dld_link = yes; then
13414 + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
13435 + if test "x$lt_cv_dlopen" != xno; then
13436 + enable_dlopen=yes
13441 + case $lt_cv_dlopen in
13443 + save_CPPFLAGS="$CPPFLAGS"
13444 + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
13446 + save_LDFLAGS="$LDFLAGS"
13447 + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
13449 + save_LIBS="$LIBS"
13450 + LIBS="$lt_cv_dlopen_libs $LIBS"
13452 + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
13453 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
13454 +if test "${lt_cv_dlopen_self+set}" = set; then
13455 + echo $ECHO_N "(cached) $ECHO_C" >&6
13457 + if test "$cross_compiling" = yes; then :
13458 + lt_cv_dlopen_self=cross
13460 + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
13461 + lt_status=$lt_dlunknown
13462 + cat > conftest.$ac_ext <<EOF
13463 +#line __oline__ "configure"
13464 +#include "confdefs.h"
13467 +#include <dlfcn.h>
13470 +#include <stdio.h>
13472 +#ifdef RTLD_GLOBAL
13473 +# define LT_DLGLOBAL RTLD_GLOBAL
13476 +# define LT_DLGLOBAL DL_GLOBAL
13478 +# define LT_DLGLOBAL 0
13482 +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
13483 + find out it does not work in some platform. */
13484 +#ifndef LT_DLLAZY_OR_NOW
13486 +# define LT_DLLAZY_OR_NOW RTLD_LAZY
13489 +# define LT_DLLAZY_OR_NOW DL_LAZY
13492 +# define LT_DLLAZY_OR_NOW RTLD_NOW
13495 +# define LT_DLLAZY_OR_NOW DL_NOW
13497 +# define LT_DLLAZY_OR_NOW 0
13504 +#ifdef __cplusplus
13505 +extern "C" void exit (int);
13508 +void fnord() { int i=42;}
13511 + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
13512 + int status = $lt_dlunknown;
13516 + if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
13517 + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
13518 + /* dlclose (self); */
13524 + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13525 + (eval $ac_link) 2>&5
13527 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13528 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
13529 + (./conftest; exit; ) 2>/dev/null
13531 + case x$lt_status in
13532 + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
13533 + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
13534 + x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
13537 + # compilation failed
13538 + lt_cv_dlopen_self=no
13545 +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
13546 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6
13548 + if test "x$lt_cv_dlopen_self" = xyes; then
13549 + LDFLAGS="$LDFLAGS $link_static_flag"
13550 + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
13551 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
13552 +if test "${lt_cv_dlopen_self_static+set}" = set; then
13553 + echo $ECHO_N "(cached) $ECHO_C" >&6
13555 + if test "$cross_compiling" = yes; then :
13556 + lt_cv_dlopen_self_static=cross
13558 + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
13559 + lt_status=$lt_dlunknown
13560 + cat > conftest.$ac_ext <<EOF
13561 +#line __oline__ "configure"
13562 +#include "confdefs.h"
13565 +#include <dlfcn.h>
13568 +#include <stdio.h>
13570 +#ifdef RTLD_GLOBAL
13571 +# define LT_DLGLOBAL RTLD_GLOBAL
13574 +# define LT_DLGLOBAL DL_GLOBAL
13576 +# define LT_DLGLOBAL 0
13580 +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
13581 + find out it does not work in some platform. */
13582 +#ifndef LT_DLLAZY_OR_NOW
13584 +# define LT_DLLAZY_OR_NOW RTLD_LAZY
13587 +# define LT_DLLAZY_OR_NOW DL_LAZY
13590 +# define LT_DLLAZY_OR_NOW RTLD_NOW
13593 +# define LT_DLLAZY_OR_NOW DL_NOW
13595 +# define LT_DLLAZY_OR_NOW 0
13602 +#ifdef __cplusplus
13603 +extern "C" void exit (int);
13606 +void fnord() { int i=42;}
13609 + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
13610 + int status = $lt_dlunknown;
13614 + if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
13615 + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
13616 + /* dlclose (self); */
13622 + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
13623 + (eval $ac_link) 2>&5
13625 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13626 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
13627 + (./conftest; exit; ) 2>/dev/null
13629 + case x$lt_status in
13630 + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
13631 + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
13632 + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
13635 + # compilation failed
13636 + lt_cv_dlopen_self_static=no
13643 +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
13644 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
13647 + CPPFLAGS="$save_CPPFLAGS"
13648 + LDFLAGS="$save_LDFLAGS"
13649 + LIBS="$save_LIBS"
13653 + case $lt_cv_dlopen_self in
13654 + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
13655 + *) enable_dlopen_self=unknown ;;
13658 + case $lt_cv_dlopen_self_static in
13659 + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
13660 + *) enable_dlopen_self_static=unknown ;;
13665 +if test "$enable_shared" = yes && test "$GCC" = yes; then
13666 + case $archive_cmds in
13668 + # FIXME: we may have to deal with multi-command sequences.
13671 + # Test whether the compiler implicitly links with -lc since on some
13672 + # systems, -lgcc has to come before -lc. If gcc already passes -lc
13673 + # to ld, don't add -lc before -lgcc.
13674 + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
13675 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
13676 + if test "${lt_cv_archive_cmds_need_lc+set}" = set; then
13677 + echo $ECHO_N "(cached) $ECHO_C" >&6
13680 + echo 'static int dummy;' > conftest.$ac_ext
13682 + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
13683 + (eval $ac_compile) 2>&5
13685 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13686 + (exit $ac_status); }; then
13689 + libobjs=conftest.$ac_objext
13691 + wl=$lt_cv_prog_cc_wl
13692 + compiler_flags=-v
13697 + save_allow_undefined_flag=$allow_undefined_flag
13698 + allow_undefined_flag=
13699 + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
13700 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
13702 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
13703 + (exit $ac_status); }
13705 + lt_cv_archive_cmds_need_lc=no
13707 + lt_cv_archive_cmds_need_lc=yes
13709 + allow_undefined_flag=$save_allow_undefined_flag
13711 + cat conftest.err 1>&5
13715 + echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5
13716 +echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6
13720 +need_lc=${lt_cv_archive_cmds_need_lc-yes}
13722 +# The second clause should only fire when bootstrapping the
13723 +# libtool distribution, otherwise you forgot to ship ltmain.sh
13724 +# with your package, and you will get complaints that there are
13725 +# no rules to generate ltmain.sh.
13726 +if test -f "$ltmain"; then
13729 + # If there is no Makefile yet, we rely on a make rule to execute
13730 + # `config.status --recheck' to rerun these tests and create the
13731 + # libtool script then.
13732 + test -f Makefile && make "$ltmain"
13735 +if test -f "$ltmain"; then
13736 + trap "$rm \"${ofile}T\"; exit 1" 1 2 15
13737 + $rm -f "${ofile}T"
13739 + echo creating $ofile
13741 + # Now quote all the things that may contain metacharacters while being
13742 + # careful not to overquote the AC_SUBSTed values. We take copies of the
13743 + # variables and quote the copies for generation of the libtool script.
13744 + for var in echo old_CC old_CFLAGS \
13745 + AR AR_FLAGS CC LD LN_S NM SHELL \
13746 + reload_flag reload_cmds wl \
13747 + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
13748 + thread_safe_flag_spec whole_archive_flag_spec libname_spec \
13749 + library_names_spec soname_spec \
13750 + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
13751 + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
13752 + postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
13753 + old_striplib striplib file_magic_cmd export_symbols_cmds \
13754 + deplibs_check_method allow_undefined_flag no_undefined_flag \
13755 + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
13756 + global_symbol_to_c_name_address \
13757 + hardcode_libdir_flag_spec hardcode_libdir_separator \
13758 + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
13759 + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
13762 + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
13763 + old_postinstall_cmds | old_postuninstall_cmds | \
13764 + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
13765 + extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
13766 + postinstall_cmds | postuninstall_cmds | \
13767 + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
13768 + # Double-quote double-evaled strings.
13769 + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
13772 + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
13777 + cat <<__EOF__ > "${ofile}T"
13780 +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
13781 +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
13782 +# NOTE: Changes made to this file will be lost: look at ltmain.sh.
13784 +# Copyright (C) 1996-2000 Free Software Foundation, Inc.
13785 +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
13787 +# This program is free software; you can redistribute it and/or modify
13788 +# it under the terms of the GNU General Public License as published by
13789 +# the Free Software Foundation; either version 2 of the License, or
13790 +# (at your option) any later version.
13792 +# This program is distributed in the hope that it will be useful, but
13793 +# WITHOUT ANY WARRANTY; without even the implied warranty of
13794 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13795 +# General Public License for more details.
13797 +# You should have received a copy of the GNU General Public License
13798 +# along with this program; if not, write to the Free Software
13799 +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
13801 +# As a special exception to the GNU General Public License, if you
13802 +# distribute this file as part of a program that contains a
13803 +# configuration script generated by Autoconf, you may include it under
13804 +# the same distribution terms that you use for the rest of that program.
13806 +# Sed that helps us avoid accidentally triggering echo(1) options like -n.
13807 +Xsed="sed -e s/^X//"
13809 +# The HP-UX ksh and POSIX shell print the target directory to stdout
13810 +# if CDPATH is set.
13811 +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
13813 +# ### BEGIN LIBTOOL CONFIG
13815 +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
13817 +# Shell to use when invoking shell scripts.
13820 +# Whether or not to build shared libraries.
13821 +build_libtool_libs=$enable_shared
13823 +# Whether or not to build static libraries.
13824 +build_old_libs=$enable_static
13826 +# Whether or not to add -lc for building shared libraries.
13827 +build_libtool_need_lc=$need_lc
13829 +# Whether or not to optimize for fast installation.
13830 +fast_install=$enable_fast_install
13832 +# The host system.
13833 +host_alias=$host_alias
13836 +# An echo program that does not interpret backslashes.
13841 +AR_FLAGS=$lt_AR_FLAGS
13843 +# The default C compiler.
13846 +# Is the compiler the GNU C compiler?
13849 +# The linker used to build libraries.
13852 +# Whether we need hard or soft links.
13855 +# A BSD-compatible nm program.
13858 +# A symbol stripping program
13861 +# Used to examine libraries when file_magic_cmd begins "file"
13862 +MAGIC_CMD=$MAGIC_CMD
13864 +# Used on cygwin: DLL creation program.
13865 +DLLTOOL="$DLLTOOL"
13867 +# Used on cygwin: object dumper.
13868 +OBJDUMP="$OBJDUMP"
13870 +# Used on cygwin: assembler.
13873 +# The name of the directory that contains temporary libtool files.
13876 +# How to create reloadable object files.
13877 +reload_flag=$lt_reload_flag
13878 +reload_cmds=$lt_reload_cmds
13880 +# How to pass a linker flag through the compiler.
13883 +# Object file suffix (normally "o").
13884 +objext="$ac_objext"
13886 +# Old archive suffix (normally "a").
13889 +# Executable file suffix (normally "").
13892 +# Additional compiler flags for building library objects.
13893 +pic_flag=$lt_pic_flag
13894 +pic_mode=$pic_mode
13896 +# Does compiler simultaneously support -c and -o options?
13897 +compiler_c_o=$lt_compiler_c_o
13899 +# Can we write directly to a .lo ?
13900 +compiler_o_lo=$lt_compiler_o_lo
13902 +# Must we lock files when doing compilation ?
13903 +need_locks=$lt_need_locks
13905 +# Do we need the lib prefix for modules?
13906 +need_lib_prefix=$need_lib_prefix
13908 +# Do we need a version for libraries?
13909 +need_version=$need_version
13911 +# Whether dlopen is supported.
13912 +dlopen_support=$enable_dlopen
13914 +# Whether dlopen of programs is supported.
13915 +dlopen_self=$enable_dlopen_self
13917 +# Whether dlopen of statically linked programs is supported.
13918 +dlopen_self_static=$enable_dlopen_self_static
13920 +# Compiler flag to prevent dynamic linking.
13921 +link_static_flag=$lt_link_static_flag
13923 +# Compiler flag to turn off builtin functions.
13924 +no_builtin_flag=$lt_no_builtin_flag
13926 +# Compiler flag to allow reflexive dlopens.
13927 +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
13929 +# Compiler flag to generate shared objects directly from archives.
13930 +whole_archive_flag_spec=$lt_whole_archive_flag_spec
13932 +# Compiler flag to generate thread-safe objects.
13933 +thread_safe_flag_spec=$lt_thread_safe_flag_spec
13935 +# Library versioning type.
13936 +version_type=$version_type
13938 +# Format of library name prefix.
13939 +libname_spec=$lt_libname_spec
13941 +# List of archive names. First name is the real one, the rest are links.
13942 +# The last name is the one that the linker finds with -lNAME.
13943 +library_names_spec=$lt_library_names_spec
13945 +# The coded name of the library, if different from the real name.
13946 +soname_spec=$lt_soname_spec
13948 +# Commands used to build and install an old-style archive.
13950 +old_archive_cmds=$lt_old_archive_cmds
13951 +old_postinstall_cmds=$lt_old_postinstall_cmds
13952 +old_postuninstall_cmds=$lt_old_postuninstall_cmds
13954 +# Create an old-style archive from a shared archive.
13955 +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
13957 +# Create a temporary old-style archive to link instead of a shared archive.
13958 +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
13960 +# Commands used to build and install a shared archive.
13961 +archive_cmds=$lt_archive_cmds
13962 +archive_expsym_cmds=$lt_archive_expsym_cmds
13963 +postinstall_cmds=$lt_postinstall_cmds
13964 +postuninstall_cmds=$lt_postuninstall_cmds
13966 +# Commands to strip libraries.
13967 +old_striplib=$lt_old_striplib
13968 +striplib=$lt_striplib
13970 +# Method to check whether dependent libraries are shared objects.
13971 +deplibs_check_method=$lt_deplibs_check_method
13973 +# Command to use when deplibs_check_method == file_magic.
13974 +file_magic_cmd=$lt_file_magic_cmd
13976 +# Flag that allows shared libraries with undefined symbols to be built.
13977 +allow_undefined_flag=$lt_allow_undefined_flag
13979 +# Flag that forces no undefined symbols.
13980 +no_undefined_flag=$lt_no_undefined_flag
13982 +# Commands used to finish a libtool library installation in a directory.
13983 +finish_cmds=$lt_finish_cmds
13985 +# Same as above, but a single script fragment to be evaled but not shown.
13986 +finish_eval=$lt_finish_eval
13988 +# Take the output of nm and produce a listing of raw symbols and C names.
13989 +global_symbol_pipe=$lt_global_symbol_pipe
13991 +# Transform the output of nm in a proper C declaration
13992 +global_symbol_to_cdecl=$lt_global_symbol_to_cdecl
13994 +# Transform the output of nm in a C name address pair
13995 +global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address
13997 +# This is the shared library runtime path variable.
13998 +runpath_var=$runpath_var
14000 +# This is the shared library path variable.
14001 +shlibpath_var=$shlibpath_var
14003 +# Is shlibpath searched before the hard-coded library search path?
14004 +shlibpath_overrides_runpath=$shlibpath_overrides_runpath
14006 +# How to hardcode a shared library path into an executable.
14007 +hardcode_action=$hardcode_action
14009 +# Whether we should hardcode library paths into libraries.
14010 +hardcode_into_libs=$hardcode_into_libs
14012 +# Flag to hardcode \$libdir into a binary during linking.
14013 +# This must work even if \$libdir does not exist.
14014 +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
14016 +# Whether we need a single -rpath flag with a separated argument.
14017 +hardcode_libdir_separator=$lt_hardcode_libdir_separator
14019 +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
14020 +# resulting binary.
14021 +hardcode_direct=$hardcode_direct
14023 +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
14024 +# resulting binary.
14025 +hardcode_minus_L=$hardcode_minus_L
14027 +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
14028 +# the resulting binary.
14029 +hardcode_shlibpath_var=$hardcode_shlibpath_var
14031 +# Variables whose values should be saved in libtool wrapper scripts and
14032 +# restored at relink time.
14033 +variables_saved_for_relink="$variables_saved_for_relink"
14035 +# Whether libtool must link a program against all its dependency libraries.
14036 +link_all_deplibs=$link_all_deplibs
14038 +# Compile-time system search path for libraries
14039 +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
14041 +# Run-time system search path for libraries
14042 +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
14044 +# Fix the shell variable \$srcfile for the compiler.
14045 +fix_srcfile_path="$fix_srcfile_path"
14047 +# Set to yes if exported symbols are required.
14048 +always_export_symbols=$always_export_symbols
14050 +# The commands to list exported symbols.
14051 +export_symbols_cmds=$lt_export_symbols_cmds
14053 +# The commands to extract the exported symbol list from a shared archive.
14054 +extract_expsyms_cmds=$lt_extract_expsyms_cmds
14056 +# Symbols that should not be listed in the preloaded symbols.
14057 +exclude_expsyms=$lt_exclude_expsyms
14059 +# Symbols that must always be exported.
14060 +include_expsyms=$lt_include_expsyms
14062 +# ### END LIBTOOL CONFIG
14068 + cat <<\EOF >> "${ofile}T"
14070 +# AIX sometimes has problems with the GCC collect2 program. For some
14071 +# reason, if we set the COLLECT_NAMES environment variable, the problems
14072 +# vanish in a puff of smoke.
14073 +if test "X${COLLECT_NAMES+set}" != Xset; then
14075 + export COLLECT_NAMES
14082 + cygwin* | mingw* | pw32* | os2*)
14083 + cat <<'EOF' >> "${ofile}T"
14084 + # This is a source program that is used to create dlls on Windows
14085 + # Don't remove nor modify the starting and closing comments
14086 +# /* ltdll.c starts here */
14087 +# #define WIN32_LEAN_AND_MEAN
14088 +# #include <windows.h>
14089 +# #undef WIN32_LEAN_AND_MEAN
14090 +# #include <stdio.h>
14092 +# #ifndef __CYGWIN__
14093 +# # ifdef __CYGWIN32__
14094 +# # define __CYGWIN__ __CYGWIN32__
14098 +# #ifdef __cplusplus
14101 +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
14102 +# #ifdef __cplusplus
14106 +# #ifdef __CYGWIN__
14107 +# #include <cygwin/cygwin_dll.h>
14108 +# DECLARE_CYGWIN_DLL( DllMain );
14110 +# HINSTANCE __hDllInstance_base;
14113 +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
14115 +# __hDllInstance_base = hInst;
14118 +# /* ltdll.c ends here */
14119 + # This is a source program that is used to create import libraries
14120 + # on Windows for dlls which lack them. Don't remove nor modify the
14121 + # starting and closing comments
14122 +# /* impgen.c starts here */
14123 +# /* Copyright (C) 1999-2000 Free Software Foundation, Inc.
14125 +# This file is part of GNU libtool.
14127 +# This program is free software; you can redistribute it and/or modify
14128 +# it under the terms of the GNU General Public License as published by
14129 +# the Free Software Foundation; either version 2 of the License, or
14130 +# (at your option) any later version.
14132 +# This program is distributed in the hope that it will be useful,
14133 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
14134 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14135 +# GNU General Public License for more details.
14137 +# You should have received a copy of the GNU General Public License
14138 +# along with this program; if not, write to the Free Software
14139 +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
14142 +# #include <stdio.h> /* for printf() */
14143 +# #include <unistd.h> /* for open(), lseek(), read() */
14144 +# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
14145 +# #include <string.h> /* for strdup() */
14147 +# /* O_BINARY isn't required (or even defined sometimes) under Unix */
14148 +# #ifndef O_BINARY
14149 +# #define O_BINARY 0
14152 +# static unsigned int
14153 +# pe_get16 (fd, offset)
14157 +# unsigned char b[2];
14158 +# lseek (fd, offset, SEEK_SET);
14159 +# read (fd, b, 2);
14160 +# return b[0] + (b[1]<<8);
14163 +# static unsigned int
14164 +# pe_get32 (fd, offset)
14168 +# unsigned char b[4];
14169 +# lseek (fd, offset, SEEK_SET);
14170 +# read (fd, b, 4);
14171 +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
14174 +# static unsigned int
14178 +# unsigned char *b = ptr;
14179 +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
14183 +# main (argc, argv)
14188 +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
14189 +# unsigned long export_rva, export_size, nsections, secptr, expptr;
14190 +# unsigned long name_rvas, nexp;
14191 +# unsigned char *expdata, *erva;
14192 +# char *filename, *dll_name;
14194 +# filename = argv[1];
14196 +# dll = open(filename, O_RDONLY|O_BINARY);
14200 +# dll_name = filename;
14202 +# for (i=0; filename[i]; i++)
14203 +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
14204 +# dll_name = filename + i +1;
14206 +# pe_header_offset = pe_get32 (dll, 0x3c);
14207 +# opthdr_ofs = pe_header_offset + 4 + 20;
14208 +# num_entries = pe_get32 (dll, opthdr_ofs + 92);
14210 +# if (num_entries < 1) /* no exports */
14213 +# export_rva = pe_get32 (dll, opthdr_ofs + 96);
14214 +# export_size = pe_get32 (dll, opthdr_ofs + 100);
14215 +# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
14216 +# secptr = (pe_header_offset + 4 + 20 +
14217 +# pe_get16 (dll, pe_header_offset + 4 + 16));
14220 +# for (i = 0; i < nsections; i++)
14223 +# unsigned long secptr1 = secptr + 40 * i;
14224 +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
14225 +# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
14226 +# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
14227 +# lseek(dll, secptr1, SEEK_SET);
14228 +# read(dll, sname, 8);
14229 +# if (vaddr <= export_rva && vaddr+vsize > export_rva)
14231 +# expptr = fptr + (export_rva - vaddr);
14232 +# if (export_rva + export_size > vaddr + vsize)
14233 +# export_size = vsize - (export_rva - vaddr);
14238 +# expdata = (unsigned char*)malloc(export_size);
14239 +# lseek (dll, expptr, SEEK_SET);
14240 +# read (dll, expdata, export_size);
14241 +# erva = expdata - export_rva;
14243 +# nexp = pe_as32 (expdata+24);
14244 +# name_rvas = pe_as32 (expdata+32);
14246 +# printf ("EXPORTS\n");
14247 +# for (i = 0; i<nexp; i++)
14249 +# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
14250 +# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
14255 +# /* impgen.c ends here */
14261 + # We use sed instead of cat because bash on DJGPP gets confused if
14262 + # if finds mixed CR/LF and LF-only lines. Since sed operates in
14263 + # text mode, it properly converts lines to CR/LF. This bash problem
14264 + # is reportedly fixed, but why not run on old versions too?
14265 + sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1)
14267 + mv -f "${ofile}T" "$ofile" || \
14268 + (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T")
14269 + chmod +x "$ofile"
14276 +# This can be used to rebuild libtool when needed
14277 +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
14279 +# Always use our own libtool.
14280 +LIBTOOL='$(SHELL) $(top_builddir)/libtool'
14282 +# Prevent multiple expansion
14287 +# Check whether --with-target-subdir or --without-target-subdir was given.
14288 +if test "${with_target_subdir+set}" = set; then
14289 + withval="$with_target_subdir"
14293 +# Check whether --with-cross-host or --without-cross-host was given.
14294 +if test "${with_cross_host+set}" = set; then
14295 + withval="$with_cross_host"
14299 +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
14300 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
14301 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
14302 +if test "${enable_maintainer_mode+set}" = set; then
14303 + enableval="$enable_maintainer_mode"
14304 + USE_MAINTAINER_MODE=$enableval
14306 + USE_MAINTAINER_MODE=no
14308 + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
14309 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
14312 +if test $USE_MAINTAINER_MODE = yes; then
14313 + MAINTAINER_MODE_TRUE=
14314 + MAINTAINER_MODE_FALSE='#'
14316 + MAINTAINER_MODE_TRUE='#'
14317 + MAINTAINER_MODE_FALSE=
14320 + MAINT=$MAINTAINER_MODE_TRUE
14323 +# automake wants to see AC_EXEEXT. But we don't need it. And having
14324 +# it is actually a problem, because the compiler we're passed can't
14325 +# necessarily do a full link. So we fool automake here.
14327 + # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
14328 + # to nothing, so nothing would remain between `then' and `fi' if it
14329 + # were not for the `:' below.
14334 +echo "$as_me:$LINENO: checking for thread model used by GCC" >&5
14335 +echo $ECHO_N "checking for thread model used by GCC... $ECHO_C" >&6
14336 +THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
14337 +if test -z "$THREADS"; then
14340 +echo "$as_me:$LINENO: result: $THREADS" >&5
14341 +echo "${ECHO_T}$THREADS" >&6
14343 +# Check whether --enable-parallel-mark or --disable-parallel-mark was given.
14344 +if test "${enable_parallel_mark+set}" = set; then
14345 + enableval="$enable_parallel_mark"
14346 + case "$THREADS" in
14347 + no | none | single)
14348 + { { echo "$as_me:$LINENO: error: Parallel mark requires --enable-threads=x spec" >&5
14349 +echo "$as_me: error: Parallel mark requires --enable-threads=x spec" >&2;}
14350 + { (exit 1); exit 1; }; }
14356 +INCLUDES=-I${srcdir}/include
14358 +case "$THREADS" in
14359 + no | none | single)
14362 + posix | pthreads)
14364 + THREADLIBS=-lpthread
14366 + x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
14367 + cat >>confdefs.h <<\_ACEOF
14368 +@%:@define GC_LINUX_THREADS 1
14371 + cat >>confdefs.h <<\_ACEOF
14372 +@%:@define _REENTRANT 1
14375 + if test "${enable_parallel_mark}"; then
14376 + cat >>confdefs.h <<\_ACEOF
14377 +@%:@define PARALLEL_MARK 1
14381 + cat >>confdefs.h <<\_ACEOF
14382 +@%:@define THREAD_LOCAL_ALLOC 1
14387 + cat >>confdefs.h <<\_ACEOF
14388 +@%:@define GC_LINUX_THREADS 1
14391 + cat >>confdefs.h <<\_ACEOF
14392 +@%:@define _REENTRANT 1
14397 + { echo "$as_me:$LINENO: WARNING: \"Only HP/UX 11 threads are supported.\"" >&5
14398 +echo "$as_me: WARNING: \"Only HP/UX 11 threads are supported.\"" >&2;}
14399 + cat >>confdefs.h <<\_ACEOF
14400 +@%:@define GC_HPUX_THREADS 1
14403 + cat >>confdefs.h <<\_ACEOF
14404 +@%:@define _POSIX_C_SOURCE 199506L
14407 + if test "${enable_parallel_mark}" = yes; then
14408 + cat >>confdefs.h <<\_ACEOF
14409 +@%:@define PARALLEL_MARK 1
14413 + cat >>confdefs.h <<\_ACEOF
14414 +@%:@define THREAD_LOCAL_ALLOC 1
14417 + THREADLIBS="-lpthread -lrt"
14420 + { echo "$as_me:$LINENO: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&5
14421 +echo "$as_me: WARNING: \"FreeBSD does not yet fully support threads with Boehm GC.\"" >&2;}
14422 + cat >>confdefs.h <<\_ACEOF
14423 +@%:@define GC_FREEBSD_THREADS 1
14426 + INCLUDES="$INCLUDES -pthread"
14427 + THREADLIBS=-pthread
14430 + cat >>confdefs.h <<\_ACEOF
14431 +@%:@define GC_SOLARIS_THREADS 1
14434 + cat >>confdefs.h <<\_ACEOF
14435 +@%:@define GC_SOLARIS_PTHREADS 1
14440 + cat >>confdefs.h <<\_ACEOF
14441 +@%:@define GC_IRIX_THREADS 1
14449 + cat >>confdefs.h <<\_ACEOF
14450 +@%:@define GC_DARWIN_THREADS 1
14453 + cat >>confdefs.h <<\_ACEOF
14454 +@%:@define THREAD_LOCAL_ALLOC 1
14457 + if test "${enable_parallel_mark}" = yes; then
14458 + cat >>confdefs.h <<\_ACEOF
14459 +@%:@define PARALLEL_MARK 1
14467 + cat >>confdefs.h <<\_ACEOF
14468 +@%:@define GC_WIN32_THREADS 1
14471 + cat >>confdefs.h <<\_ACEOF
14472 +@%:@define NO_GETENV 1
14476 + decosf1 | irix | mach | os2 | solaris | dce | vxworks)
14477 + { { echo "$as_me:$LINENO: error: thread package $THREADS not yet supported" >&5
14478 +echo "$as_me: error: thread package $THREADS not yet supported" >&2;}
14479 + { (exit 1); exit 1; }; }
14482 + { { echo "$as_me:$LINENO: error: $THREADS is an unknown thread package" >&5
14483 +echo "$as_me: error: $THREADS is an unknown thread package" >&2;}
14484 + { (exit 1); exit 1; }; }
14490 + powerpc-*-darwin*)
14491 + powerpc_darwin=true
14496 +if test x$powerpc_darwin = xtrue; then
14497 + POWERPC_DARWIN_TRUE=
14498 + POWERPC_DARWIN_FALSE='#'
14500 + POWERPC_DARWIN_TRUE='#'
14501 + POWERPC_DARWIN_FALSE=
14505 +# We never want libdl on darwin. It is a fake libdl that just ends up making
14506 +# dyld calls anyway
14510 + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
14511 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
14512 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then
14513 + echo $ECHO_N "(cached) $ECHO_C" >&6
14515 + ac_check_lib_save_LIBS=$LIBS
14517 +cat >conftest.$ac_ext <<_ACEOF
14518 +#line $LINENO "configure"
14519 +#include "confdefs.h"
14521 +/* Override any gcc2 internal prototype to avoid an error. */
14522 +#ifdef __cplusplus
14525 +/* We use char because int might match the return type of a gcc2
14526 + builtin and then its argument prototype would still apply. */
14536 +rm -f conftest.$ac_objext conftest$ac_exeext
14537 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
14538 + (eval $ac_link) 2>&5
14540 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
14541 + (exit $ac_status); } &&
14542 + { ac_try='test -s conftest$ac_exeext'
14543 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
14544 + (eval $ac_try) 2>&5
14546 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
14547 + (exit $ac_status); }; }; then
14548 + ac_cv_lib_dl_dlopen=yes
14550 + echo "$as_me: failed program was:" >&5
14551 +cat conftest.$ac_ext >&5
14552 +ac_cv_lib_dl_dlopen=no
14554 +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
14555 +LIBS=$ac_check_lib_save_LIBS
14557 +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
14558 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
14559 +if test $ac_cv_lib_dl_dlopen = yes; then
14560 + EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl"
14568 +target_all=libgcjgc.la
14574 +# Check whether --with-ecos or --without-ecos was given.
14575 +if test "${with_ecos+set}" = set; then
14576 + withval="$with_ecos"
14577 + TARGET_ECOS="$with_ecos"
14583 +case "$TARGET_ECOS" in
14587 + cat >>confdefs.h <<\_ACEOF
14591 + CXXINCLUDES="-I${TARGET_ECOS}/include"
14592 + addobjs="$addobjs ecos.lo"
14602 + alpha*-*-openbsd*)
14603 + machdep="alpha_mach_dep.lo"
14604 + if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then
14605 + { echo "$as_me:$LINENO: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&5
14606 +echo "$as_me: WARNING: OpenBSD/Alpha without dlopen(). Shared library support is disabled" >&2;}
14607 + # Check whether --enable-shared or --disable-shared was given.
14608 +if test "${enable_shared+set}" = set; then
14609 + enableval="$enable_shared"
14610 + p=${PACKAGE-default}
14611 +case $enableval in
14612 +yes) enable_shared=yes ;;
14613 +no) enable_shared=no ;;
14616 + # Look at the argument we got. We use all the common list separators.
14617 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
14618 + for pkg in $enableval; do
14619 + if test "X$pkg" = "X$p"; then
14620 + enable_shared=yes
14623 + IFS="$ac_save_ifs"
14632 + machdep="alpha_mach_dep.lo"
14634 + i?86-*-solaris2.[89]*)
14635 + cat >>confdefs.h <<\_ACEOF
14636 +@%:@define SOLARIS25_PROC_VDB_BUG_FIXED 1
14641 + machdep="mips_ultrix_mach_dep.lo"
14642 + cat >>confdefs.h <<\_ACEOF
14643 +@%:@define STACKBASE __stackbase
14646 + cat >>confdefs.h <<\_ACEOF
14647 +@%:@define DATASTART_IS_ETEXT 1
14651 + mips-dec-ultrix*)
14652 + machdep="mips_ultrix_mach-dep.lo"
14657 + machdep="mips_sgi_mach_dep.lo"
14658 + cat >>confdefs.h <<\_ACEOF
14659 +@%:@define NO_EXECUTE_PERMISSION 1
14663 + sparc-sun-solaris2.3*)
14664 + machdep="sparc_mach_dep.lo"
14665 + cat >>confdefs.h <<\_ACEOF
14666 +@%:@define SUNOS53_SHARED_LIB 1
14670 + sparc-sun-solaris2.*)
14671 + machdep="sparc_mach_dep.lo"
14674 + machdep="mach_dep.lo ia64_save_regs_in_stack.lo"
14677 +if test x"$machdep" = x; then
14678 + machdep="mach_dep.lo"
14680 +addobjs="$addobjs $machdep"
14684 + sparc-sun-solaris2*)
14685 + if test "$GCC" = yes; then
14687 + for i in $CFLAGS; do
14692 + new_CFLAGS="$new_CFLAGS $i"
14696 + CFLAGS="$new_CFLAGS"
14701 +MY_CFLAGS="$CFLAGS"
14704 +cat >>confdefs.h <<\_ACEOF
14705 +@%:@define SILENT 1
14708 +cat >>confdefs.h <<\_ACEOF
14709 +@%:@define NO_SIGNALS 1
14712 +cat >>confdefs.h <<\_ACEOF
14713 +@%:@define NO_EXECUTE_PERMISSION 1
14716 +cat >>confdefs.h <<\_ACEOF
14717 +@%:@define ALL_INTERIOR_POINTERS 1
14721 +cat >>confdefs.h <<\_ACEOF
14722 +@%:@define JAVA_FINALIZATION 1
14725 +cat >>confdefs.h <<\_ACEOF
14726 +@%:@define GC_GCJ_SUPPORT 1
14729 +cat >>confdefs.h <<\_ACEOF
14730 +@%:@define ATOMIC_UNCOLLECTABLE 1
14734 +if test -n "${with_cross_host}"; then
14735 + cat >>confdefs.h <<\_ACEOF
14736 +@%:@define NO_SIGSET 1
14739 + cat >>confdefs.h <<\_ACEOF
14740 +@%:@define NO_DEBUGGING 1
14745 +# Check whether --enable-full-debug or --disable-full-debug was given.
14746 +if test "${enable_full_debug+set}" = set; then
14747 + enableval="$enable_full_debug"
14748 + if test "$enable_full_debug" = "yes"; then
14749 + { echo "$as_me:$LINENO: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&5
14750 +echo "$as_me: WARNING: \"Must define GC_DEBUG and use debug alloc. in clients.\"" >&2;}
14751 + cat >>confdefs.h <<\_ACEOF
14752 +@%:@define KEEP_BACK_PTRS 1
14755 + cat >>confdefs.h <<\_ACEOF
14756 +@%:@define DBG_HDRS_ALL 1
14761 + cat >>confdefs.h <<\_ACEOF
14762 +@%:@define MAKE_BACK_GRAPH 1
14766 + x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
14767 + cat >>confdefs.h <<\_ACEOF
14768 +@%:@define MAKE_BACK_GRAPH 1
14771 + { echo "$as_me:$LINENO: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&5
14772 +echo "$as_me: WARNING: \"Client must not use -fomit-frame-pointer.\"" >&2;}
14773 + cat >>confdefs.h <<\_ACEOF
14774 +@%:@define SAVE_CALL_COUNT 8
14784 +if test -z "$with_cross_host"; then
14786 + USE_LIBDIR_FALSE='#'
14788 + USE_LIBDIR_TRUE='#'
14789 + USE_LIBDIR_FALSE=
14793 +if test "${multilib}" = "yes"; then
14794 + multilib_arg="--enable-multilib"
14799 + ac_config_files="$ac_config_files Makefile include/Makefile"
14800 + ac_config_commands="$ac_config_commands default"
14801 +cat >confcache <<\_ACEOF
14802 +# This file is a shell script that caches the results of configure
14803 +# tests run on this system so they can be shared between configure
14804 +# scripts and configure runs, see configure's option --config-cache.
14805 +# It is not useful on other systems. If it contains results you don't
14806 +# want to keep, you may remove or edit it.
14808 +# config.status only pays attention to the cache file if you give it
14809 +# the --recheck option to rerun configure.
14811 +# `ac_cv_env_foo' variables (set or unset) will be overridden when
14812 +# loading this file, other *unset* `ac_cv_foo' will be assigned the
14813 +# following values.
14817 +# The following way of writing the cache mishandles newlines in values,
14818 +# but we know of no workaround that is simple, portable, and efficient.
14819 +# So, don't put newlines in cache variables' values.
14820 +# Ultrix sh set writes to stderr and can't be redirected directly,
14821 +# and sets the high bit in the cache file unless we assign to the vars.
14824 + case `(ac_space=' '; set | grep ac_space) 2>&1` in
14826 + # `set' does not quote correctly, so add quotes (double-quote
14827 + # substitution turns \\\\ into \\, and sed turns \\ into \).
14830 + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
14833 + # `set' quotes correctly as required by POSIX, so do not add quotes.
14835 + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
14842 + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
14844 + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
14845 + : end' >>confcache
14846 +if cmp -s $cache_file confcache; then :; else
14847 + if test -w $cache_file; then
14848 + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
14849 + cat confcache >$cache_file
14851 + echo "not updating unwritable cache $cache_file"
14856 +test "x$prefix" = xNONE && prefix=$ac_default_prefix
14857 +# Let make expand exec_prefix.
14858 +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
14860 +# VPATH may cause trouble with some makes, so we remove $(srcdir),
14861 +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
14862 +# trailing colons and then remove the whole line if VPATH becomes empty
14863 +# (actually we leave an empty line to preserve line numbers).
14864 +if test "x$srcdir" = x.; then
14865 + ac_vpsub='/^[ ]*VPATH[ ]*=/{
14866 +s/:*\$(srcdir):*/:/;
14867 +s/:*\${srcdir}:*/:/;
14868 +s/:*@srcdir@:*/:/;
14869 +s/^\([^=]*=[ ]*\):*/\1/;
14875 +# Transform confdefs.h into DEFS.
14876 +# Protect against shell expansion while executing Makefile rules.
14877 +# Protect against Makefile macro expansion.
14879 +# If the first sed substitution is executed (which looks for macros that
14880 +# take arguments), then we branch to the quote section. Otherwise,
14881 +# look for a macro that doesn't take arguments.
14882 +cat >confdef2opt.sed <<\_ACEOF
14885 +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
14887 +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
14891 +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
14897 +# We use echo to avoid assuming a particular line-breaking character.
14898 +# The extra dot is to prevent the shell from consuming trailing
14899 +# line-breaks from the sub-command output. A line-break within
14900 +# single-quotes doesn't work because, if this script is created in a
14901 +# platform that uses two characters for line-breaks (e.g., DOS), tr
14903 +ac_LF_and_DOT=`echo; echo .`
14904 +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
14905 +rm -f confdef2opt.sed
14910 +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue
14911 + # 1. Remove the extension, and $U if already installed.
14912 + ac_i=`echo "$ac_i" |
14913 + sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
14915 + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
14916 + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
14918 +LIB@&t@OBJS=$ac_libobjs
14920 +LTLIBOBJS=$ac_ltlibobjs
14923 +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
14924 + { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
14925 +Usually this means the macro was only invoked conditionally." >&5
14926 +echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
14927 +Usually this means the macro was only invoked conditionally." >&2;}
14928 + { (exit 1); exit 1; }; }
14930 +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
14931 + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
14932 +Usually this means the macro was only invoked conditionally." >&5
14933 +echo "$as_me: error: conditional \"AMDEP\" was never defined.
14934 +Usually this means the macro was only invoked conditionally." >&2;}
14935 + { (exit 1); exit 1; }; }
14937 +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
14938 + { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
14939 +Usually this means the macro was only invoked conditionally." >&5
14940 +echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
14941 +Usually this means the macro was only invoked conditionally." >&2;}
14942 + { (exit 1); exit 1; }; }
14944 +if test -z "${POWERPC_DARWIN_TRUE}" && test -z "${POWERPC_DARWIN_FALSE}"; then
14945 + { { echo "$as_me:$LINENO: error: conditional \"POWERPC_DARWIN\" was never defined.
14946 +Usually this means the macro was only invoked conditionally." >&5
14947 +echo "$as_me: error: conditional \"POWERPC_DARWIN\" was never defined.
14948 +Usually this means the macro was only invoked conditionally." >&2;}
14949 + { (exit 1); exit 1; }; }
14951 +if test -z "${USE_LIBDIR_TRUE}" && test -z "${USE_LIBDIR_FALSE}"; then
14952 + { { echo "$as_me:$LINENO: error: conditional \"USE_LIBDIR\" was never defined.
14953 +Usually this means the macro was only invoked conditionally." >&5
14954 +echo "$as_me: error: conditional \"USE_LIBDIR\" was never defined.
14955 +Usually this means the macro was only invoked conditionally." >&2;}
14956 + { (exit 1); exit 1; }; }
14959 +: ${CONFIG_STATUS=./config.status}
14960 +ac_clean_files_save=$ac_clean_files
14961 +ac_clean_files="$ac_clean_files $CONFIG_STATUS"
14962 +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
14963 +echo "$as_me: creating $CONFIG_STATUS" >&6;}
14964 +cat >$CONFIG_STATUS <<_ACEOF
14966 +# Generated by $as_me.
14967 +# Run this file to recreate the current configuration.
14968 +# Compiler output produced by configure, useful for debugging
14969 +# configure, is in config.log if it exists.
14972 +SHELL=\${CONFIG_SHELL-$SHELL}
14975 +cat >>$CONFIG_STATUS <<\_ACEOF
14976 +## --------------------- ##
14977 +## M4sh Initialization. ##
14978 +## --------------------- ##
14980 +# Be Bourne compatible
14981 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
14984 + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
14985 + # is contrary to our usage. Disable this feature.
14986 + alias -g '${1+"$@"}'='"$@"'
14987 +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
14991 +# Support unset when possible.
14992 +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
14999 +# Work around bugs in pre-3.0 UWIN ksh.
15000 +$as_unset ENV MAIL MAILPATH
15006 +for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME
15008 + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
15009 + eval $as_var=C; export $as_var
15011 + $as_unset $as_var
15015 +# Required to use basename.
15016 +if expr a : '\(a\)' >/dev/null 2>&1; then
15022 +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
15023 + as_basename=basename
15025 + as_basename=false
15029 +# Name of the executable.
15030 +as_me=`$as_basename "$0" ||
15031 +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
15032 + X"$0" : 'X\(//\)$' \| \
15033 + X"$0" : 'X\(/\)$' \| \
15034 + . : '\(.\)' 2>/dev/null ||
15036 + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
15037 + /^X\/\(\/\/\)$/{ s//\1/; q; }
15038 + /^X\/\(\/\).*/{ s//\1/; q; }
15042 +# PATH needs CR, and LINENO needs CR and PATH.
15043 +# Avoid depending upon Character Ranges.
15044 +as_cr_letters='abcdefghijklmnopqrstuvwxyz'
15045 +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
15046 +as_cr_Letters=$as_cr_letters$as_cr_LETTERS
15047 +as_cr_digits='0123456789'
15048 +as_cr_alnum=$as_cr_Letters$as_cr_digits
15050 +# The user is always right.
15051 +if test "${PATH_SEPARATOR+set}" != set; then
15052 + echo "#! /bin/sh" >conftest.sh
15053 + echo "exit 0" >>conftest.sh
15054 + chmod +x conftest.sh
15055 + if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then
15056 + PATH_SEPARATOR=';'
15060 + rm -f conftest.sh
15064 + as_lineno_1=$LINENO
15065 + as_lineno_2=$LINENO
15066 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
15067 + test "x$as_lineno_1" != "x$as_lineno_2" &&
15068 + test "x$as_lineno_3" = "x$as_lineno_2" || {
15069 + # Find who we are. Look in the path if we contain no path at all
15070 + # relative or not.
15072 + *[\\/]* ) as_myself=$0 ;;
15073 + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
15074 +for as_dir in $PATH
15077 + test -z "$as_dir" && as_dir=.
15078 + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
15083 + # We did not find ourselves, most probably we were run as `sh COMMAND'
15084 + # in which case we are not to be found in the path.
15085 + if test "x$as_myself" = x; then
15088 + if test ! -f "$as_myself"; then
15089 + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
15090 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
15091 + { (exit 1); exit 1; }; }
15093 + case $CONFIG_SHELL in
15095 + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
15096 +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
15099 + test -z "$as_dir" && as_dir=.
15100 + for as_base in sh bash ksh sh5; do
15103 + if ("$as_dir/$as_base" -c '
15104 + as_lineno_1=$LINENO
15105 + as_lineno_2=$LINENO
15106 + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
15107 + test "x$as_lineno_1" != "x$as_lineno_2" &&
15108 + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
15109 + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
15110 + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
15111 + CONFIG_SHELL=$as_dir/$as_base
15112 + export CONFIG_SHELL
15113 + exec "$CONFIG_SHELL" "$0" ${1+"$@"}
15121 + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
15122 + # uniformly replaced by the line number. The first 'sed' inserts a
15123 + # line-number line before each line; the second 'sed' does the real
15124 + # work. The second script uses 'N' to pair each line-number line
15125 + # with the numbered line, and appends trailing '-' during
15126 + # substitution so that $LINENO is not a special case at line end.
15127 + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
15128 + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
15129 + sed '=' <$as_myself |
15134 + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
15137 + s,^['$as_cr_digits']*\n,,
15138 + ' >$as_me.lineno &&
15139 + chmod +x $as_me.lineno ||
15140 + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
15141 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
15142 + { (exit 1); exit 1; }; }
15144 + # Don't try to exec as it changes $[0], causing all sort of problems
15145 + # (the dirname of $[0] is not the place where we might find the
15146 + # original and so on. Autoconf is especially sensible to this).
15147 + . ./$as_me.lineno
15148 + # Exit status is that of the last command.
15153 +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
15154 + *c*,-n*) ECHO_N= ECHO_C='
15156 + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
15157 + *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
15160 +if expr a : '\(a\)' >/dev/null 2>&1; then
15166 +rm -f conf$$ conf$$.exe conf$$.file
15168 +if ln -s conf$$.file conf$$ 2>/dev/null; then
15169 + # We could just check for DJGPP; but this test a) works b) is more generic
15170 + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
15171 + if test -f conf$$.exe; then
15172 + # Don't use ln at all; we don't have any links
15177 +elif ln conf$$.file conf$$ 2>/dev/null; then
15182 +rm -f conf$$ conf$$.exe conf$$.file
15184 +if mkdir -p . 2>/dev/null; then
15190 +as_executable_p="test -f"
15192 +# Sed expression to map a string onto a valid CPP name.
15193 +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
15195 +# Sed expression to map a string onto a valid variable name.
15196 +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
15200 +# We need space, tab and new line, in precisely that order.
15210 +# Open the log real soon, to keep \$[0] and so on meaningful, and to
15211 +# report actual input values of CONFIG_FILES etc. instead of their
15212 +# values after options handling. Logging --version etc. is OK.
15213 +exec 5>>config.log
15216 + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
15217 +@%:@@%:@ Running $as_me. @%:@@%:@
15222 +This file was extended by $as_me, which was
15223 +generated by GNU Autoconf 2.54. Invocation command line was
15225 + CONFIG_FILES = $CONFIG_FILES
15226 + CONFIG_HEADERS = $CONFIG_HEADERS
15227 + CONFIG_LINKS = $CONFIG_LINKS
15228 + CONFIG_COMMANDS = $CONFIG_COMMANDS
15232 +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
15236 +# Files that config.status was made for.
15237 +if test -n "$ac_config_files"; then
15238 + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
15241 +if test -n "$ac_config_headers"; then
15242 + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
15245 +if test -n "$ac_config_links"; then
15246 + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
15249 +if test -n "$ac_config_commands"; then
15250 + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
15253 +cat >>$CONFIG_STATUS <<\_ACEOF
15256 +\`$as_me' instantiates files from templates according to the
15257 +current configuration.
15259 +Usage: $0 [OPTIONS] [FILE]...
15261 + -h, --help print this help, then exit
15262 + -V, --version print version number, then exit
15263 + -d, --debug don't remove temporary files
15264 + --recheck update $as_me by reconfiguring in the same conditions
15265 + --file=FILE[:TEMPLATE]
15266 + instantiate the configuration file FILE
15268 +Configuration files:
15271 +Configuration commands:
15274 +Report bugs to <bug-autoconf@gnu.org>."
15277 +cat >>$CONFIG_STATUS <<_ACEOF
15280 +configured by $0, generated by GNU Autoconf 2.54,
15281 + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
15283 +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
15284 +Free Software Foundation, Inc.
15285 +This config.status script is free software; the Free Software Foundation
15286 +gives unlimited permission to copy, distribute and modify it."
15288 +INSTALL="$INSTALL"
15291 +cat >>$CONFIG_STATUS <<\_ACEOF
15292 +# If no file are specified by the user, then we need to provide default
15293 +# value. By we need to know if files were specified by the user.
15294 +ac_need_defaults=:
15295 +while test $# != 0
15299 + ac_option=`expr "x$1" : 'x\([^=]*\)='`
15300 + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
15308 + *) # This is not an option, so the user has probably given explicit
15311 + ac_need_defaults=false;;
15314 + case $ac_option in
15315 + # Handling of the options.
15317 +cat >>$CONFIG_STATUS <<_ACEOF
15318 + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
15319 + echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
15320 + exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
15322 +cat >>$CONFIG_STATUS <<\_ACEOF
15323 + --version | --vers* | -V )
15324 + echo "$ac_cs_version"; exit 0 ;;
15326 + # Conflict between --help and --header
15327 + { { echo "$as_me:$LINENO: error: ambiguous option: $1
15328 +Try \`$0 --help' for more information." >&5
15329 +echo "$as_me: error: ambiguous option: $1
15330 +Try \`$0 --help' for more information." >&2;}
15331 + { (exit 1); exit 1; }; };;
15332 + --help | --hel | -h )
15333 + echo "$ac_cs_usage"; exit 0 ;;
15334 + --debug | --d* | -d )
15336 + --file | --fil | --fi | --f )
15338 + CONFIG_FILES="$CONFIG_FILES $ac_optarg"
15339 + ac_need_defaults=false;;
15340 + --header | --heade | --head | --hea )
15342 + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
15343 + ac_need_defaults=false;;
15345 + # This is an error.
15346 + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
15347 +Try \`$0 --help' for more information." >&5
15348 +echo "$as_me: error: unrecognized option: $1
15349 +Try \`$0 --help' for more information." >&2;}
15350 + { (exit 1); exit 1; }; } ;;
15352 + *) ac_config_targets="$ac_config_targets $1" ;;
15360 +cat >>$CONFIG_STATUS <<_ACEOF
15362 +# INIT-COMMANDS section.
15365 +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
15369 +with_multisubdir=${with_multisubdir}
15370 +ac_configure_args="${multilib_arg} ${ac_configure_args}"
15371 +CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
15372 +gc_basedir=${gc_basedir}
15381 +cat >>$CONFIG_STATUS <<\_ACEOF
15382 +for ac_config_target in $ac_config_targets
15384 + case "$ac_config_target" in
15385 + # Handling of arguments.
15386 + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
15387 + "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
15388 + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
15389 + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
15390 + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
15391 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
15392 + { (exit 1); exit 1; }; };;
15396 +# If the user did not use the arguments to specify the items to instantiate,
15397 +# then the envvar interface is used. Set only those that are not.
15398 +# We use the long form for the default assignment because of an extremely
15399 +# bizarre bug on SunOS 4.1.3.
15400 +if $ac_need_defaults; then
15401 + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
15402 + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
15405 +# Create a temporary directory, and hook for its removal unless debugging.
15408 + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
15409 + trap '{ (exit 1); exit 1; }' 1 2 13 15
15412 +# Create a (secure) tmp directory for tmp files.
15415 + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
15416 + test -n "$tmp" && test -d "$tmp"
15419 + tmp=$TMPDIR/cs$$-$RANDOM
15420 + (umask 077 && mkdir $tmp)
15423 + echo "$me: cannot create a temporary directory in $TMPDIR" >&2
15424 + { (exit 1); exit 1; }
15429 +cat >>$CONFIG_STATUS <<_ACEOF
15432 +# CONFIG_FILES section.
15435 +# No need to generate the scripts if there are no CONFIG_FILES.
15436 +# This happens for instance when ./config.status config.h
15437 +if test -n "\$CONFIG_FILES"; then
15438 + # Protect against being on the right side of a sed subst in config.status.
15439 + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
15440 + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
15441 +s,@SHELL@,$SHELL,;t t
15442 +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
15443 +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
15444 +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
15445 +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
15446 +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
15447 +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
15448 +s,@exec_prefix@,$exec_prefix,;t t
15449 +s,@prefix@,$prefix,;t t
15450 +s,@program_transform_name@,$program_transform_name,;t t
15451 +s,@bindir@,$bindir,;t t
15452 +s,@sbindir@,$sbindir,;t t
15453 +s,@libexecdir@,$libexecdir,;t t
15454 +s,@datadir@,$datadir,;t t
15455 +s,@sysconfdir@,$sysconfdir,;t t
15456 +s,@sharedstatedir@,$sharedstatedir,;t t
15457 +s,@localstatedir@,$localstatedir,;t t
15458 +s,@libdir@,$libdir,;t t
15459 +s,@includedir@,$includedir,;t t
15460 +s,@oldincludedir@,$oldincludedir,;t t
15461 +s,@infodir@,$infodir,;t t
15462 +s,@mandir@,$mandir,;t t
15463 +s,@build_alias@,$build_alias,;t t
15464 +s,@host_alias@,$host_alias,;t t
15465 +s,@target_alias@,$target_alias,;t t
15466 +s,@DEFS@,$DEFS,;t t
15467 +s,@ECHO_C@,$ECHO_C,;t t
15468 +s,@ECHO_N@,$ECHO_N,;t t
15469 +s,@ECHO_T@,$ECHO_T,;t t
15470 +s,@LIBS@,$LIBS,;t t
15471 +s,@gc_basedir@,$gc_basedir,;t t
15472 +s,@build@,$build,;t t
15473 +s,@build_cpu@,$build_cpu,;t t
15474 +s,@build_vendor@,$build_vendor,;t t
15475 +s,@build_os@,$build_os,;t t
15476 +s,@host@,$host,;t t
15477 +s,@host_cpu@,$host_cpu,;t t
15478 +s,@host_vendor@,$host_vendor,;t t
15479 +s,@host_os@,$host_os,;t t
15480 +s,@target@,$target,;t t
15481 +s,@target_cpu@,$target_cpu,;t t
15482 +s,@target_vendor@,$target_vendor,;t t
15483 +s,@target_os@,$target_os,;t t
15484 +s,@mkinstalldirs@,$mkinstalldirs,;t t
15485 +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
15486 +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
15487 +s,@INSTALL_DATA@,$INSTALL_DATA,;t t
15488 +s,@PACKAGE@,$PACKAGE,;t t
15489 +s,@VERSION@,$VERSION,;t t
15490 +s,@ACLOCAL@,$ACLOCAL,;t t
15491 +s,@AUTOCONF@,$AUTOCONF,;t t
15492 +s,@AUTOMAKE@,$AUTOMAKE,;t t
15493 +s,@AUTOHEADER@,$AUTOHEADER,;t t
15494 +s,@MAKEINFO@,$MAKEINFO,;t t
15495 +s,@AMTAR@,$AMTAR,;t t
15496 +s,@install_sh@,$install_sh,;t t
15497 +s,@STRIP@,$STRIP,;t t
15498 +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
15499 +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
15501 +s,@SET_MAKE@,$SET_MAKE,;t t
15503 +s,@ac_ct_AS@,$ac_ct_AS,;t t
15505 +s,@ac_ct_AR@,$ac_ct_AR,;t t
15506 +s,@RANLIB@,$RANLIB,;t t
15507 +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
15508 +s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
15509 +s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
15510 +s,@MAINT@,$MAINT,;t t
15511 +s,@GC_CFLAGS@,$GC_CFLAGS,;t t
15513 +s,@CFLAGS@,$CFLAGS,;t t
15514 +s,@LDFLAGS@,$LDFLAGS,;t t
15515 +s,@CPPFLAGS@,$CPPFLAGS,;t t
15516 +s,@ac_ct_CC@,$ac_ct_CC,;t t
15517 +s,@EXEEXT@,$EXEEXT,;t t
15518 +s,@OBJEXT@,$OBJEXT,;t t
15519 +s,@DEPDIR@,$DEPDIR,;t t
15520 +s,@am__include@,$am__include,;t t
15521 +s,@am__quote@,$am__quote,;t t
15522 +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
15523 +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
15524 +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
15525 +s,@CCDEPMODE@,$CCDEPMODE,;t t
15526 +s,@LN_S@,$LN_S,;t t
15527 +s,@ECHO@,$ECHO,;t t
15529 +s,@EGREP@,$EGREP,;t t
15530 +s,@LIBTOOL@,$LIBTOOL,;t t
15531 +s,@THREADLIBS@,$THREADLIBS,;t t
15532 +s,@POWERPC_DARWIN_TRUE@,$POWERPC_DARWIN_TRUE,;t t
15533 +s,@POWERPC_DARWIN_FALSE@,$POWERPC_DARWIN_FALSE,;t t
15534 +s,@EXTRA_TEST_LIBS@,$EXTRA_TEST_LIBS,;t t
15535 +s,@target_all@,$target_all,;t t
15537 +s,@INCLUDES@,$INCLUDES,;t t
15538 +s,@CXXINCLUDES@,$CXXINCLUDES,;t t
15539 +s,@addobjs@,$addobjs,;t t
15540 +s,@MY_CFLAGS@,$MY_CFLAGS,;t t
15541 +s,@USE_LIBDIR_TRUE@,$USE_LIBDIR_TRUE,;t t
15542 +s,@USE_LIBDIR_FALSE@,$USE_LIBDIR_FALSE,;t t
15543 +s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t
15544 +s,@LTLIBOBJS@,$LTLIBOBJS,;t t
15549 + cat >>$CONFIG_STATUS <<\_ACEOF
15550 + # Split the substitutions into bite-sized pieces for seds with
15551 + # small command number limits, like on Digital OSF/1 and HP-UX.
15552 + ac_max_sed_lines=48
15553 + ac_sed_frag=1 # Number of current file.
15554 + ac_beg=1 # First line for current file.
15555 + ac_end=$ac_max_sed_lines # Line after last line for current file.
15558 + while $ac_more_lines; do
15559 + if test $ac_beg -gt 1; then
15560 + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
15562 + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
15564 + if test ! -s $tmp/subs.frag; then
15565 + ac_more_lines=false
15567 + # The purpose of the label and of the branching condition is to
15568 + # speed up the sed processing (if there are no `@' at all, there
15569 + # is no need to browse any of the substitutions).
15570 + # These are the two extra sed commands mentioned above.
15572 + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
15573 + if test -z "$ac_sed_cmds"; then
15574 + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
15576 + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
15578 + ac_sed_frag=`expr $ac_sed_frag + 1`
15580 + ac_end=`expr $ac_end + $ac_max_sed_lines`
15583 + if test -z "$ac_sed_cmds"; then
15586 +fi # test -n "$CONFIG_FILES"
15589 +cat >>$CONFIG_STATUS <<\_ACEOF
15590 +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
15591 + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
15593 + - | *:- | *:-:* ) # input from stdin
15595 + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
15596 + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
15597 + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
15598 + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
15599 + * ) ac_file_in=$ac_file.in ;;
15602 + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
15603 + ac_dir=`(dirname "$ac_file") 2>/dev/null ||
15604 +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15605 + X"$ac_file" : 'X\(//\)[^/]' \| \
15606 + X"$ac_file" : 'X\(//\)$' \| \
15607 + X"$ac_file" : 'X\(/\)' \| \
15608 + . : '\(.\)' 2>/dev/null ||
15609 +echo X"$ac_file" |
15610 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
15611 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
15612 + /^X\(\/\/\)$/{ s//\1/; q; }
15613 + /^X\(\/\).*/{ s//\1/; q; }
15615 + { if $as_mkdir_p; then
15616 + mkdir -p "$ac_dir"
15620 + while test ! -d "$as_dir"; do
15621 + as_dirs="$as_dir $as_dirs"
15622 + as_dir=`(dirname "$as_dir") 2>/dev/null ||
15623 +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15624 + X"$as_dir" : 'X\(//\)[^/]' \| \
15625 + X"$as_dir" : 'X\(//\)$' \| \
15626 + X"$as_dir" : 'X\(/\)' \| \
15627 + . : '\(.\)' 2>/dev/null ||
15629 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
15630 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
15631 + /^X\(\/\/\)$/{ s//\1/; q; }
15632 + /^X\(\/\).*/{ s//\1/; q; }
15635 + test ! -n "$as_dirs" || mkdir $as_dirs
15636 + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
15637 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
15638 + { (exit 1); exit 1; }; }; }
15642 +if test "$ac_dir" != .; then
15643 + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
15644 + # A "../" for each directory in $ac_dir_suffix.
15645 + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
15647 + ac_dir_suffix= ac_top_builddir=
15651 + .) # No --srcdir option. We are building in place.
15653 + if test -z "$ac_top_builddir"; then
15656 + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
15658 + [\\/]* | ?:[\\/]* ) # Absolute path.
15659 + ac_srcdir=$srcdir$ac_dir_suffix;
15660 + ac_top_srcdir=$srcdir ;;
15661 + *) # Relative path.
15662 + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
15663 + ac_top_srcdir=$ac_top_builddir$srcdir ;;
15665 +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
15667 +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
15668 +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
15669 +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
15670 +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
15674 + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
15675 + *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
15678 + if test x"$ac_file" != x-; then
15679 + { echo "$as_me:$LINENO: creating $ac_file" >&5
15680 +echo "$as_me: creating $ac_file" >&6;}
15683 + # Let's still pretend it is `configure' which instantiates (i.e., don't
15684 + # use $as_me), people would be surprised to read:
15685 + # /* config.h. Generated by config.status. */
15686 + if test x"$ac_file" = x-; then
15689 + configure_input="$ac_file. "
15691 + configure_input=$configure_input"Generated from `echo $ac_file_in |
15692 + sed 's,.*/,,'` by configure."
15694 + # First look for the input files in the build tree, otherwise in the
15696 + ac_file_inputs=`IFS=:
15697 + for f in $ac_file_in; do
15699 + -) echo $tmp/stdin ;;
15701 + # Absolute (can't be DOS-style, as IFS=:)
15702 + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
15703 +echo "$as_me: error: cannot find input file: $f" >&2;}
15704 + { (exit 1); exit 1; }; }
15707 + if test -f "$f"; then
15710 + elif test -f "$srcdir/$f"; then
15715 + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
15716 +echo "$as_me: error: cannot find input file: $f" >&2;}
15717 + { (exit 1); exit 1; }; }
15720 + done` || { (exit 1); exit 1; }
15722 +cat >>$CONFIG_STATUS <<_ACEOF
15726 +cat >>$CONFIG_STATUS <<\_ACEOF
15728 +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
15729 +s,@configure_input@,$configure_input,;t t
15730 +s,@srcdir@,$ac_srcdir,;t t
15731 +s,@abs_srcdir@,$ac_abs_srcdir,;t t
15732 +s,@top_srcdir@,$ac_top_srcdir,;t t
15733 +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
15734 +s,@builddir@,$ac_builddir,;t t
15735 +s,@abs_builddir@,$ac_abs_builddir,;t t
15736 +s,@top_builddir@,$ac_top_builddir,;t t
15737 +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
15738 +s,@INSTALL@,$ac_INSTALL,;t t
15739 +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
15741 + if test x"$ac_file" != x-; then
15742 + mv $tmp/out $ac_file
15750 +cat >>$CONFIG_STATUS <<\_ACEOF
15753 +# CONFIG_COMMANDS section.
15755 +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
15756 + ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
15757 + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
15758 + ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
15759 +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15760 + X"$ac_dest" : 'X\(//\)[^/]' \| \
15761 + X"$ac_dest" : 'X\(//\)$' \| \
15762 + X"$ac_dest" : 'X\(/\)' \| \
15763 + . : '\(.\)' 2>/dev/null ||
15764 +echo X"$ac_dest" |
15765 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
15766 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
15767 + /^X\(\/\/\)$/{ s//\1/; q; }
15768 + /^X\(\/\).*/{ s//\1/; q; }
15772 +if test "$ac_dir" != .; then
15773 + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
15774 + # A "../" for each directory in $ac_dir_suffix.
15775 + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
15777 + ac_dir_suffix= ac_top_builddir=
15781 + .) # No --srcdir option. We are building in place.
15783 + if test -z "$ac_top_builddir"; then
15786 + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
15788 + [\\/]* | ?:[\\/]* ) # Absolute path.
15789 + ac_srcdir=$srcdir$ac_dir_suffix;
15790 + ac_top_srcdir=$srcdir ;;
15791 + *) # Relative path.
15792 + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
15793 + ac_top_srcdir=$ac_top_builddir$srcdir ;;
15795 +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
15797 +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
15798 +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
15799 +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
15800 +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
15803 + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
15804 +echo "$as_me: executing $ac_dest commands" >&6;}
15806 + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
15807 + # Strip MF so we end up with the name of the file.
15808 + mf=`echo "$mf" | sed -e 's/:.*$//'`
15809 + if (sed 1q $mf | fgrep 'generated by automake') > /dev/null 2>&1; then
15810 + dirpart=`(dirname "$mf") 2>/dev/null ||
15811 +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15812 + X"$mf" : 'X\(//\)[^/]' \| \
15813 + X"$mf" : 'X\(//\)$' \| \
15814 + X"$mf" : 'X\(/\)' \| \
15815 + . : '\(.\)' 2>/dev/null ||
15817 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
15818 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
15819 + /^X\(\/\/\)$/{ s//\1/; q; }
15820 + /^X\(\/\).*/{ s//\1/; q; }
15825 + grep '^DEP_FILES *= *[^ @%:@]' < "$mf" > /dev/null || continue
15826 + # Extract the definition of DEP_FILES from the Makefile without
15827 + # running `make'.
15828 + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
15829 + test -z "$DEPDIR" && continue
15830 + # When using ansi2knr, U may be empty or an underscore; expand it
15831 + U=`sed -n -e '/^U = / s///p' < "$mf"`
15832 + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
15833 + # We invoke sed twice because it is the simplest approach to
15834 + # changing $(DEPDIR) to its actual value in the expansion.
15835 + for file in `sed -n -e '
15836 + /^DEP_FILES = .*\\\\$/ {
15837 + s/^DEP_FILES = //
15845 + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
15846 + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
15847 + # Make sure the directory exists.
15848 + test -f "$dirpart/$file" && continue
15849 + fdir=`(dirname "$file") 2>/dev/null ||
15850 +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15851 + X"$file" : 'X\(//\)[^/]' \| \
15852 + X"$file" : 'X\(//\)$' \| \
15853 + X"$file" : 'X\(/\)' \| \
15854 + . : '\(.\)' 2>/dev/null ||
15856 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
15857 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
15858 + /^X\(\/\/\)$/{ s//\1/; q; }
15859 + /^X\(\/\).*/{ s//\1/; q; }
15861 + { if $as_mkdir_p; then
15862 + mkdir -p $dirpart/$fdir
15864 + as_dir=$dirpart/$fdir
15866 + while test ! -d "$as_dir"; do
15867 + as_dirs="$as_dir $as_dirs"
15868 + as_dir=`(dirname "$as_dir") 2>/dev/null ||
15869 +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15870 + X"$as_dir" : 'X\(//\)[^/]' \| \
15871 + X"$as_dir" : 'X\(//\)$' \| \
15872 + X"$as_dir" : 'X\(/\)' \| \
15873 + . : '\(.\)' 2>/dev/null ||
15875 + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
15876 + /^X\(\/\/\)[^/].*/{ s//\1/; q; }
15877 + /^X\(\/\/\)$/{ s//\1/; q; }
15878 + /^X\(\/\).*/{ s//\1/; q; }
15881 + test ! -n "$as_dirs" || mkdir $as_dirs
15882 + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
15883 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
15884 + { (exit 1); exit 1; }; }; }
15886 + # echo "creating $dirpart/$file"
15887 + echo '# dummy' > "$dirpart/$file"
15892 +echo "$DEFS" > boehm-cflags
15894 +if test -n "$CONFIG_FILES"; then
15895 + LD="${ORIGINAL_LD_FOR_MULTILIBS}"
15896 + ac_file=Makefile . ${gc_basedir}/../config-ml.in
15902 +cat >>$CONFIG_STATUS <<\_ACEOF
15904 +{ (exit 0); exit 0; }
15906 +chmod +x $CONFIG_STATUS
15907 +ac_clean_files=$ac_clean_files_save
15910 +# configure is writing to config.log, and then calls config.status.
15911 +# config.status does its own redirection, appending to config.log.
15912 +# Unfortunately, on DOS this fails, as config.log is still kept open
15913 +# by configure, so config.status won't be able to write to it; its
15914 +# output is simply discarded. So we exec the FD to /dev/null,
15915 +# effectively closing config.log, so it can be properly (re)opened and
15916 +# appended to by config.status. When coming back to configure, we
15917 +# need to make the FD available again.
15918 +if test "$no_create" != yes; then
15921 + $SHELL $CONFIG_STATUS || ac_cs_success=false
15922 + exec 5>>config.log
15923 + # Use ||, not &&, to avoid exiting from the if with $? = 1, which
15924 + # would make configure fail if this is the last instruction.
15925 + $ac_cs_success || { (exit 1); exit 1; }
15928 diff -urNb boehm-gc/autom4te.cache/requests boehm-gc/autom4te.cache/requests
15929 --- boehm-gc/autom4te.cache/requests Wed Dec 31 16:00:00 1969
15930 +++ boehm-gc/autom4te.cache/requests Sat May 31 15:09:32 2003
15932 +# This file was created by autom4te-2.54.
15933 +# It contains the lists of macros which have been traced.
15934 +# It can be safely removed.
15941 + '/sw/share/autoconf'
15944 + '/sw/share/autoconf/autoconf/autoconf.m4f',
15949 + 'm4_pattern_forbid' => 1,
15950 + 'AC_C_VOLATILE' => 1,
15951 + 'AC_TYPE_OFF_T' => 1,
15952 + 'AC_FUNC_CLOSEDIR_VOID' => 1,
15953 + 'AC_REPLACE_FNMATCH' => 1,
15954 + 'AC_PROG_LIBTOOL' => 1,
15955 + 'AC_FUNC_STAT' => 1,
15956 + 'AC_FUNC_WAIT3' => 1,
15957 + 'AC_HEADER_TIME' => 1,
15958 + 'AC_FUNC_LSTAT' => 1,
15959 + 'AC_STRUCT_TM' => 1,
15960 + 'AM_AUTOMAKE_VERSION' => 1,
15961 + 'AC_FUNC_GETMNTENT' => 1,
15962 + 'AC_TYPE_MODE_T' => 1,
15963 + 'AC_FUNC_STRTOD' => 1,
15964 + 'AC_CHECK_HEADERS' => 1,
15965 + 'AC_FUNC_STRNLEN' => 1,
15966 + 'AC_PROG_CXX' => 1,
15967 + 'AC_PATH_X' => 1,
15968 + 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
15969 + 'AC_PROG_AWK' => 1,
15970 + 'AC_HEADER_STDC' => 1,
15971 + 'AC_HEADER_MAJOR' => 1,
15972 + 'AC_FUNC_ERROR_AT_LINE' => 1,
15973 + 'AC_PROG_GCC_TRADITIONAL' => 1,
15974 + 'AC_LIBSOURCE' => 1,
15975 + 'AC_FUNC_MBRTOWC' => 1,
15976 + 'AC_STRUCT_ST_BLOCKS' => 1,
15977 + 'AC_TYPE_SIGNAL' => 1,
15978 + 'AC_TYPE_UID_T' => 1,
15979 + 'AC_CONFIG_AUX_DIR' => 1,
15980 + 'AC_PROG_MAKE_SET' => 1,
15981 + 'm4_pattern_allow' => 1,
15982 + 'AC_DEFINE_TRACE_LITERAL' => 1,
15983 + 'AC_FUNC_STRERROR_R' => 1,
15984 + 'AC_PROG_CC' => 1,
15985 + 'AC_FUNC_FORK' => 1,
15986 + 'AC_DECL_SYS_SIGLIST' => 1,
15987 + 'AC_FUNC_STRCOLL' => 1,
15988 + 'AC_FUNC_VPRINTF' => 1,
15989 + 'AC_PROG_YACC' => 1,
15991 + 'AC_STRUCT_TIMEZONE' => 1,
15992 + 'AC_FUNC_CHOWN' => 1,
15994 + 'AC_FUNC_ALLOCA' => 1,
15995 + 'AC_CANONICAL_HOST' => 1,
15996 + 'AC_FUNC_GETPGRP' => 1,
15997 + 'AC_PROG_RANLIB' => 1,
15998 + 'AM_INIT_AUTOMAKE' => 1,
15999 + 'AC_FUNC_SETPGRP' => 1,
16000 + 'AC_CONFIG_SUBDIRS' => 1,
16001 + 'AC_FUNC_MMAP' => 1,
16002 + 'AC_FUNC_REALLOC' => 1,
16003 + 'AC_TYPE_SIZE_T' => 1,
16004 + 'AC_CHECK_TYPES' => 1,
16005 + 'AC_CHECK_MEMBERS' => 1,
16006 + 'AM_MAINTAINER_MODE' => 1,
16007 + 'AC_FUNC_UTIME_NULL' => 1,
16008 + 'AC_FUNC_SELECT_ARGTYPES' => 1,
16009 + 'AC_FUNC_STRFTIME' => 1,
16010 + 'AC_HEADER_STAT' => 1,
16011 + 'AC_C_INLINE' => 1,
16012 + 'AC_PROG_CPP' => 1,
16013 + 'AC_TYPE_PID_T' => 1,
16014 + 'AC_PROG_LEX' => 1,
16015 + 'AC_C_CONST' => 1,
16016 + 'AC_CONFIG_FILES' => 1,
16018 + 'AC_FUNC_SETVBUF_REVERSED' => 1,
16019 + 'AC_PROG_INSTALL' => 1,
16020 + 'AM_GNU_GETTEXT' => 1,
16021 + 'AC_CHECK_LIB' => 1,
16022 + 'AC_FUNC_OBSTACK' => 1,
16023 + 'AC_FUNC_MALLOC' => 1,
16024 + 'AC_FUNC_GETGROUPS' => 1,
16025 + 'AC_FUNC_GETLOADAVG' => 1,
16026 + 'AH_OUTPUT' => 1,
16027 + 'AC_FUNC_FSEEKO' => 1,
16028 + 'AM_PROG_CC_C_O' => 1,
16029 + 'AC_FUNC_MKTIME' => 1,
16030 + 'AC_CANONICAL_SYSTEM' => 1,
16031 + 'AM_CONDITIONAL' => 1,
16032 + 'AC_CONFIG_HEADERS' => 1,
16033 + 'AC_HEADER_SYS_WAIT' => 1,
16034 + 'AC_PROG_LN_S' => 1,
16035 + 'AC_FUNC_MEMCMP' => 1,
16036 + 'm4_include' => 1,
16037 + 'AC_HEADER_DIRENT' => 1,
16038 + 'AC_CHECK_FUNCS' => 1
16045 + '/sw/share/autoconf-2.54'
16048 + '--reload-state=/sw/share/autoconf-2.54/autoconf/autoconf.m4f',
16053 + 'm4_pattern_forbid' => 1,
16054 + 'AC_TYPE_OFF_T' => 1,
16055 + 'AC_PROG_LIBTOOL' => 1,
16056 + 'AC_FUNC_STAT' => 1,
16057 + 'AC_HEADER_TIME' => 1,
16058 + 'AC_FUNC_WAIT3' => 1,
16059 + 'AC_STRUCT_TM' => 1,
16060 + 'AC_FUNC_LSTAT' => 1,
16061 + 'AC_TYPE_MODE_T' => 1,
16062 + 'AC_FUNC_STRTOD' => 1,
16063 + 'AC_CHECK_HEADERS' => 1,
16064 + 'AC_PROG_CXX' => 1,
16065 + 'AC_PATH_X' => 1,
16066 + 'AC_PROG_AWK' => 1,
16067 + 'AC_HEADER_STDC' => 1,
16068 + 'AC_HEADER_MAJOR' => 1,
16069 + 'AC_FUNC_ERROR_AT_LINE' => 1,
16070 + 'AC_PROG_GCC_TRADITIONAL' => 1,
16071 + 'AC_LIBSOURCE' => 1,
16072 + 'AC_STRUCT_ST_BLOCKS' => 1,
16073 + 'AC_TYPE_SIGNAL' => 1,
16074 + 'AC_TYPE_UID_T' => 1,
16075 + 'AC_PROG_MAKE_SET' => 1,
16076 + 'm4_pattern_allow' => 1,
16077 + 'AC_DEFINE_TRACE_LITERAL' => 1,
16078 + 'AM_PROG_LIBTOOL' => 1,
16079 + 'AC_FUNC_STRERROR_R' => 1,
16080 + 'AC_PROG_CC' => 1,
16081 + 'AC_FUNC_FORK' => 1,
16082 + 'AC_DECL_SYS_SIGLIST' => 1,
16083 + 'AC_FUNC_STRCOLL' => 1,
16084 + 'AC_FUNC_VPRINTF' => 1,
16085 + 'AC_PROG_YACC' => 1,
16086 + 'AC_STRUCT_TIMEZONE' => 1,
16087 + 'AC_FUNC_CHOWN' => 1,
16089 + 'AC_FUNC_ALLOCA' => 1,
16090 + 'AC_FUNC_GETPGRP' => 1,
16091 + 'AC_PROG_RANLIB' => 1,
16092 + 'AC_FUNC_SETPGRP' => 1,
16093 + 'AC_FUNC_MMAP' => 1,
16094 + 'AC_TYPE_SIZE_T' => 1,
16095 + 'AC_CHECK_TYPES' => 1,
16096 + 'AC_FUNC_UTIME_NULL' => 1,
16097 + 'AC_FUNC_STRFTIME' => 1,
16098 + 'AC_HEADER_STAT' => 1,
16099 + 'AC_C_INLINE' => 1,
16100 + 'AC_PROG_CPP' => 1,
16101 + 'AC_C_CONST' => 1,
16102 + 'AC_PROG_LEX' => 1,
16103 + 'AC_TYPE_PID_T' => 1,
16104 + 'AC_CONFIG_FILES' => 1,
16106 + 'AC_FUNC_SETVBUF_REVERSED' => 1,
16107 + 'AC_FUNC_FNMATCH' => 1,
16108 + 'AC_PROG_INSTALL' => 1,
16109 + 'AM_GNU_GETTEXT' => 1,
16110 + 'AC_FUNC_OBSTACK' => 1,
16111 + 'AC_CHECK_LIB' => 1,
16112 + 'AC_FUNC_MALLOC' => 1,
16113 + 'AC_FUNC_GETGROUPS' => 1,
16114 + 'AC_FUNC_GETLOADAVG' => 1,
16115 + 'AH_OUTPUT' => 1,
16116 + 'AC_FUNC_FSEEKO' => 1,
16117 + 'AC_FUNC_MKTIME' => 1,
16118 + 'AM_CONDITIONAL' => 1,
16119 + 'AC_CONFIG_HEADERS' => 1,
16120 + 'AC_HEADER_SYS_WAIT' => 1,
16121 + 'AC_PROG_LN_S' => 1,
16122 + 'AC_FUNC_MEMCMP' => 1,
16123 + 'm4_include' => 1,
16124 + 'AC_HEADER_DIRENT' => 1,
16125 + 'AC_CHECK_FUNCS' => 1
16130 diff -urNb boehm-gc/autom4te.cache/traces.0 boehm-gc/autom4te.cache/traces.0
16131 --- boehm-gc/autom4te.cache/traces.0 Wed Dec 31 16:00:00 1969
16132 +++ boehm-gc/autom4te.cache/traces.0 Mon May 26 13:14:22 2003
16134 +m4trace:configure.in:16: -1- AC_INIT([gcj_mlc.c])
16135 +m4trace:configure.in:16: -1- m4_pattern_forbid([^_?A[CHUM]_])
16136 +m4trace:configure.in:16: -1- m4_pattern_forbid([_AC_])
16137 +m4trace:configure.in:16: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
16138 +m4trace:configure.in:16: -1- m4_pattern_allow([^AS_FLAGS$])
16139 +m4trace:configure.in:16: -1- m4_pattern_forbid([^_?m4_])
16140 +m4trace:configure.in:16: -1- m4_pattern_forbid([^dnl$])
16141 +m4trace:configure.in:16: -1- m4_pattern_forbid([^_?AS_])
16142 +m4trace:configure.in:16: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
16143 +m4trace:configure.in:16: -1- AC_SUBST([PATH_SEPARATOR])
16144 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
16145 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
16146 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
16147 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
16148 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
16149 +m4trace:configure.in:16: -1- AC_SUBST([exec_prefix], [NONE])
16150 +m4trace:configure.in:16: -1- AC_SUBST([prefix], [NONE])
16151 +m4trace:configure.in:16: -1- AC_SUBST([program_transform_name], [s,x,x,])
16152 +m4trace:configure.in:16: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
16153 +m4trace:configure.in:16: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
16154 +m4trace:configure.in:16: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
16155 +m4trace:configure.in:16: -1- AC_SUBST([datadir], ['${prefix}/share'])
16156 +m4trace:configure.in:16: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
16157 +m4trace:configure.in:16: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
16158 +m4trace:configure.in:16: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
16159 +m4trace:configure.in:16: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
16160 +m4trace:configure.in:16: -1- AC_SUBST([includedir], ['${prefix}/include'])
16161 +m4trace:configure.in:16: -1- AC_SUBST([oldincludedir], ['/usr/include'])
16162 +m4trace:configure.in:16: -1- AC_SUBST([infodir], ['${prefix}/info'])
16163 +m4trace:configure.in:16: -1- AC_SUBST([mandir], ['${prefix}/man'])
16164 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
16165 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
16166 +#undef PACKAGE_NAME])
16167 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
16168 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
16169 +#undef PACKAGE_TARNAME])
16170 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
16171 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
16172 +#undef PACKAGE_VERSION])
16173 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
16174 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
16175 +#undef PACKAGE_STRING])
16176 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
16177 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
16178 +#undef PACKAGE_BUGREPORT])
16179 +m4trace:configure.in:16: -1- AC_SUBST([build_alias])
16180 +m4trace:configure.in:16: -1- AC_SUBST([host_alias])
16181 +m4trace:configure.in:16: -1- AC_SUBST([target_alias])
16182 +m4trace:configure.in:16: -1- AC_SUBST([DEFS])
16183 +m4trace:configure.in:16: -1- AC_SUBST([ECHO_C])
16184 +m4trace:configure.in:16: -1- AC_SUBST([ECHO_N])
16185 +m4trace:configure.in:16: -1- AC_SUBST([ECHO_T])
16186 +m4trace:configure.in:16: -1- AC_SUBST([LIBS])
16187 +m4trace:configure.in:25: -1- AC_CONFIG_AUX_DIR([.])
16188 +m4trace:configure.in:27: -1- AC_SUBST([gc_basedir])
16189 +m4trace:configure.in:27: -1- AC_CONFIG_AUX_DIR([$gc_basedir/..])
16190 +m4trace:configure.in:27: -1- AC_CONFIG_AUX_DIR([..])
16191 +m4trace:configure.in:27: -1- AC_CANONICAL_SYSTEM
16192 +m4trace:configure.in:27: -1- AC_CANONICAL_HOST
16193 +m4trace:configure.in:27: -1- AC_SUBST([build], [$ac_cv_build])
16194 +m4trace:configure.in:27: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
16195 +m4trace:configure.in:27: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
16196 +m4trace:configure.in:27: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
16197 +m4trace:configure.in:27: -1- AC_SUBST([host], [$ac_cv_host])
16198 +m4trace:configure.in:27: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
16199 +m4trace:configure.in:27: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
16200 +m4trace:configure.in:27: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
16201 +m4trace:configure.in:27: -1- AC_SUBST([target], [$ac_cv_target])
16202 +m4trace:configure.in:27: -1- AC_SUBST([target_cpu], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
16203 +m4trace:configure.in:27: -1- AC_SUBST([target_vendor], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
16204 +m4trace:configure.in:27: -1- AC_SUBST([target_os], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
16205 +m4trace:configure.in:27: -1- AC_SUBST([mkinstalldirs])
16206 +m4trace:configure.in:27: -1- AM_INIT_AUTOMAKE([gc], [6.0], [no-define])
16207 +m4trace:configure.in:27: -1- AC_PROG_INSTALL
16208 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM])
16209 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT])
16210 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA])
16211 +m4trace:configure.in:27: -1- AC_SUBST([PACKAGE])
16212 +m4trace:configure.in:27: -1- AC_SUBST([VERSION])
16213 +m4trace:configure.in:27: -2- AC_DEFINE_TRACE_LITERAL([PACKAGE])
16214 +m4trace:configure.in:27: -2- AH_OUTPUT([PACKAGE], [/* Name of package */
16216 +m4trace:configure.in:27: -2- AC_DEFINE_TRACE_LITERAL([VERSION])
16217 +m4trace:configure.in:27: -2- AH_OUTPUT([VERSION], [/* Version number of package */
16219 +m4trace:configure.in:27: -1- AC_SUBST([ACLOCAL])
16220 +m4trace:configure.in:27: -1- AC_SUBST([AUTOCONF])
16221 +m4trace:configure.in:27: -1- AC_SUBST([AUTOMAKE])
16222 +m4trace:configure.in:27: -1- AC_SUBST([AUTOHEADER])
16223 +m4trace:configure.in:27: -1- AC_SUBST([MAKEINFO])
16224 +m4trace:configure.in:27: -1- AC_PROG_MAKE_SET
16225 +m4trace:configure.in:27: -1- AC_SUBST([SET_MAKE])
16226 +m4trace:configure.in:27: -1- AC_SUBST([CC])
16227 +m4trace:configure.in:27: -1- AC_SUBST([CC])
16228 +m4trace:configure.in:27: -1- AC_SUBST([CXX])
16229 +m4trace:configure.in:27: -1- AC_SUBST([AS])
16230 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_AS])
16231 +m4trace:configure.in:27: -1- AC_SUBST([AR])
16232 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_AR])
16233 +m4trace:configure.in:27: -1- AC_SUBST([RANLIB])
16234 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_RANLIB])
16235 +m4trace:configure.in:27: -1- AC_PROG_INSTALL
16236 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM])
16237 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT])
16238 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA])
16239 +m4trace:configure.in:27: -1- AM_MAINTAINER_MODE
16240 +m4trace:configure.in:27: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
16241 +m4trace:configure.in:27: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
16242 +m4trace:configure.in:27: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
16243 +m4trace:configure.in:27: -1- AC_SUBST([MAINT])
16244 +m4trace:configure.in:27: -1- AC_SUBST([GC_CFLAGS])
16245 +m4trace:configure.in:29: -1- AC_PROG_LIBTOOL
16246 +m4trace:configure.in:29: -1- AC_PROG_LN_S
16247 +m4trace:configure.in:29: -1- AC_SUBST([LN_S], [$as_ln_s])
16248 +m4trace:configure.in:29: -1- AC_SUBST([RANLIB])
16249 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_RANLIB])
16250 +m4trace:configure.in:29: -1- AC_SUBST([STRIP])
16251 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_STRIP])
16252 +m4trace:configure.in:29: -1- AC_SUBST([LIBTOOL])
16253 +m4trace:configure.in:29: -1- AC_SUBST([CXXCPP])
16254 +m4trace:configure.in:29: -1- AC_SUBST([CPPFLAGS])
16255 +m4trace:configure.in:29: -1- AC_SUBST([CXXCPP])
16256 +m4trace:configure.in:38: -1- AM_MAINTAINER_MODE
16257 +m4trace:configure.in:38: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
16258 +m4trace:configure.in:38: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
16259 +m4trace:configure.in:38: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
16260 +m4trace:configure.in:38: -1- AC_SUBST([MAINT])
16261 +m4trace:configure.in:77: -1- AC_DEFINE_TRACE_LITERAL([GC_LINUX_THREADS])
16262 +m4trace:configure.in:78: -1- AC_DEFINE_TRACE_LITERAL([_REENTRANT])
16263 +m4trace:configure.in:80: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK])
16264 +m4trace:configure.in:82: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC])
16265 +m4trace:configure.in:85: -1- AC_DEFINE_TRACE_LITERAL([GC_LINUX_THREADS])
16266 +m4trace:configure.in:86: -1- AC_DEFINE_TRACE_LITERAL([_REENTRANT])
16267 +m4trace:configure.in:90: -1- AC_DEFINE_TRACE_LITERAL([GC_HPUX_THREADS])
16268 +m4trace:configure.in:91: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_C_SOURCE])
16269 +m4trace:configure.in:93: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK])
16270 +m4trace:configure.in:95: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC])
16271 +m4trace:configure.in:100: -1- AC_DEFINE_TRACE_LITERAL([GC_FREEBSD_THREADS])
16272 +m4trace:configure.in:105: -1- AC_DEFINE_TRACE_LITERAL([GC_SOLARIS_THREADS])
16273 +m4trace:configure.in:106: -1- AC_DEFINE_TRACE_LITERAL([GC_SOLARIS_PTHREADS])
16274 +m4trace:configure.in:109: -1- AC_DEFINE_TRACE_LITERAL([GC_IRIX_THREADS])
16275 +m4trace:configure.in:117: -1- AC_DEFINE_TRACE_LITERAL([GC_DARWIN_THREADS])
16276 +m4trace:configure.in:118: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC])
16277 +m4trace:configure.in:120: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK])
16278 +m4trace:configure.in:124: -1- AC_DEFINE_TRACE_LITERAL([GC_WIN32_THREADS])
16279 +m4trace:configure.in:125: -1- AC_DEFINE_TRACE_LITERAL([NO_GETENV])
16280 +m4trace:configure.in:134: -1- AC_SUBST([THREADLIBS])
16281 +m4trace:configure.in:141: -1- AM_CONDITIONAL([POWERPC_DARWIN], [test x$powerpc_darwin = xtrue])
16282 +m4trace:configure.in:141: -1- AC_SUBST([POWERPC_DARWIN_TRUE])
16283 +m4trace:configure.in:141: -1- AC_SUBST([POWERPC_DARWIN_FALSE])
16284 +m4trace:configure.in:148: -1- AC_CHECK_LIB([dl], [dlopen], [EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl"])
16285 +m4trace:configure.in:152: -1- AC_SUBST([EXTRA_TEST_LIBS])
16286 +m4trace:configure.in:155: -1- AC_SUBST([target_all])
16287 +m4trace:configure.in:156: -1- AC_SUBST([target_alias])
16288 +m4trace:configure.in:174: -1- AC_DEFINE_TRACE_LITERAL([ECOS])
16289 +m4trace:configure.in:179: -1- AC_SUBST([CXX])
16290 +m4trace:configure.in:181: -1- AC_SUBST([INCLUDES])
16291 +m4trace:configure.in:182: -1- AC_SUBST([CXXINCLUDES])
16292 +m4trace:configure.in:197: -1- AC_DEFINE_TRACE_LITERAL([SOLARIS25_PROC_VDB_BUG_FIXED])
16293 +m4trace:configure.in:201: -1- AC_DEFINE_TRACE_LITERAL([STACKBASE])
16294 +m4trace:configure.in:202: -1- AC_DEFINE_TRACE_LITERAL([DATASTART_IS_ETEXT])
16295 +m4trace:configure.in:211: -1- AC_DEFINE_TRACE_LITERAL([NO_EXECUTE_PERMISSION])
16296 +m4trace:configure.in:215: -1- AC_DEFINE_TRACE_LITERAL([SUNOS53_SHARED_LIB])
16297 +m4trace:configure.in:228: -1- AC_SUBST([addobjs])
16298 +m4trace:configure.in:252: -1- AC_SUBST([MY_CFLAGS])
16299 +m4trace:configure.in:256: -1- AC_DEFINE_TRACE_LITERAL([SILENT])
16300 +m4trace:configure.in:257: -1- AC_DEFINE_TRACE_LITERAL([NO_SIGNALS])
16301 +m4trace:configure.in:258: -1- AC_DEFINE_TRACE_LITERAL([NO_EXECUTE_PERMISSION])
16302 +m4trace:configure.in:259: -1- AC_DEFINE_TRACE_LITERAL([ALL_INTERIOR_POINTERS])
16303 +m4trace:configure.in:262: -1- AC_DEFINE_TRACE_LITERAL([JAVA_FINALIZATION])
16304 +m4trace:configure.in:263: -1- AC_DEFINE_TRACE_LITERAL([GC_GCJ_SUPPORT])
16305 +m4trace:configure.in:264: -1- AC_DEFINE_TRACE_LITERAL([ATOMIC_UNCOLLECTABLE])
16306 +m4trace:configure.in:270: -1- AC_DEFINE_TRACE_LITERAL([NO_SIGSET])
16307 +m4trace:configure.in:271: -1- AC_DEFINE_TRACE_LITERAL([NO_DEBUGGING])
16308 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([KEEP_BACK_PTRS])
16309 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([DBG_HDRS_ALL])
16310 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([MAKE_BACK_GRAPH])
16311 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([MAKE_BACK_GRAPH])
16312 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([SAVE_CALL_COUNT])
16313 +m4trace:configure.in:292: -1- AM_CONDITIONAL([USE_LIBDIR], [test -z "$with_cross_host"])
16314 +m4trace:configure.in:292: -1- AC_SUBST([USE_LIBDIR_TRUE])
16315 +m4trace:configure.in:292: -1- AC_SUBST([USE_LIBDIR_FALSE])
16316 +m4trace:configure.in:317: -1- AC_CONFIG_FILES([Makefile include/Makefile])
16317 +m4trace:configure.in:317: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
16318 +m4trace:configure.in:317: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
16319 diff -urNb boehm-gc/autom4te.cache/traces.1 boehm-gc/autom4te.cache/traces.1
16320 --- boehm-gc/autom4te.cache/traces.1 Wed Dec 31 16:00:00 1969
16321 +++ boehm-gc/autom4te.cache/traces.1 Sat May 31 15:09:31 2003
16323 +m4trace:aclocal.m4:166: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
16324 +m4trace:configure.in:16: -1- m4_pattern_forbid([^_?A[CHUM]_])
16325 +m4trace:configure.in:16: -1- m4_pattern_forbid([_AC_])
16326 +m4trace:configure.in:16: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
16327 +m4trace:configure.in:16: -1- m4_pattern_allow([^AS_FLAGS$])
16328 +m4trace:configure.in:16: -1- m4_pattern_forbid([^_?m4_])
16329 +m4trace:configure.in:16: -1- m4_pattern_forbid([^dnl$])
16330 +m4trace:configure.in:16: -1- m4_pattern_forbid([^_?AS_])
16331 +m4trace:configure.in:16: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
16332 +m4trace:configure.in:16: -1- AC_SUBST([PATH_SEPARATOR])
16333 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
16334 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
16335 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
16336 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
16337 +m4trace:configure.in:16: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
16338 +m4trace:configure.in:16: -1- AC_SUBST([exec_prefix], [NONE])
16339 +m4trace:configure.in:16: -1- AC_SUBST([prefix], [NONE])
16340 +m4trace:configure.in:16: -1- AC_SUBST([program_transform_name], [s,x,x,])
16341 +m4trace:configure.in:16: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
16342 +m4trace:configure.in:16: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
16343 +m4trace:configure.in:16: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
16344 +m4trace:configure.in:16: -1- AC_SUBST([datadir], ['${prefix}/share'])
16345 +m4trace:configure.in:16: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
16346 +m4trace:configure.in:16: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
16347 +m4trace:configure.in:16: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
16348 +m4trace:configure.in:16: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
16349 +m4trace:configure.in:16: -1- AC_SUBST([includedir], ['${prefix}/include'])
16350 +m4trace:configure.in:16: -1- AC_SUBST([oldincludedir], ['/usr/include'])
16351 +m4trace:configure.in:16: -1- AC_SUBST([infodir], ['${prefix}/info'])
16352 +m4trace:configure.in:16: -1- AC_SUBST([mandir], ['${prefix}/man'])
16353 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
16354 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
16355 +#undef PACKAGE_NAME])
16356 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
16357 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
16358 +#undef PACKAGE_TARNAME])
16359 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
16360 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
16361 +#undef PACKAGE_VERSION])
16362 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
16363 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
16364 +#undef PACKAGE_STRING])
16365 +m4trace:configure.in:16: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
16366 +m4trace:configure.in:16: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
16367 +#undef PACKAGE_BUGREPORT])
16368 +m4trace:configure.in:16: -1- AC_SUBST([build_alias])
16369 +m4trace:configure.in:16: -1- AC_SUBST([host_alias])
16370 +m4trace:configure.in:16: -1- AC_SUBST([target_alias])
16371 +m4trace:configure.in:16: -1- AC_SUBST([DEFS])
16372 +m4trace:configure.in:16: -1- AC_SUBST([ECHO_C])
16373 +m4trace:configure.in:16: -1- AC_SUBST([ECHO_N])
16374 +m4trace:configure.in:16: -1- AC_SUBST([ECHO_T])
16375 +m4trace:configure.in:16: -1- AC_SUBST([LIBS])
16376 +m4trace:configure.in:27: -1- AC_SUBST([gc_basedir])
16377 +m4trace:configure.in:27: -1- AC_SUBST([build], [$ac_cv_build])
16378 +m4trace:configure.in:27: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
16379 +m4trace:configure.in:27: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
16380 +m4trace:configure.in:27: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
16381 +m4trace:configure.in:27: -1- AC_SUBST([host], [$ac_cv_host])
16382 +m4trace:configure.in:27: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
16383 +m4trace:configure.in:27: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
16384 +m4trace:configure.in:27: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
16385 +m4trace:configure.in:27: -1- AC_SUBST([target], [$ac_cv_target])
16386 +m4trace:configure.in:27: -1- AC_SUBST([target_cpu], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
16387 +m4trace:configure.in:27: -1- AC_SUBST([target_vendor], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
16388 +m4trace:configure.in:27: -1- AC_SUBST([target_os], [`echo $ac_cv_target | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
16389 +m4trace:configure.in:27: -1- AC_SUBST([mkinstalldirs])
16390 +m4trace:configure.in:27: -1- AC_PROG_INSTALL
16391 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM])
16392 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT])
16393 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA])
16394 +m4trace:configure.in:27: -1- AC_SUBST([PACKAGE], [gc])
16395 +m4trace:configure.in:27: -1- AC_SUBST([VERSION], [6.1a1])
16396 +m4trace:configure.in:27: -1- AC_SUBST([ACLOCAL])
16397 +m4trace:configure.in:27: -1- AC_SUBST([AUTOCONF])
16398 +m4trace:configure.in:27: -1- AC_SUBST([AUTOMAKE])
16399 +m4trace:configure.in:27: -1- AC_SUBST([AUTOHEADER])
16400 +m4trace:configure.in:27: -1- AC_SUBST([MAKEINFO])
16401 +m4trace:configure.in:27: -1- AC_SUBST([AMTAR])
16402 +m4trace:configure.in:27: -1- AC_SUBST([install_sh])
16403 +m4trace:configure.in:27: -1- AC_SUBST([STRIP])
16404 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_STRIP])
16405 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
16406 +m4trace:configure.in:27: -1- AC_PROG_AWK
16407 +m4trace:configure.in:27: -1- AC_SUBST([AWK])
16408 +m4trace:configure.in:27: -1- AC_PROG_MAKE_SET
16409 +m4trace:configure.in:27: -1- AC_SUBST([SET_MAKE])
16410 +m4trace:configure.in:27: -1- AC_SUBST([AS])
16411 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_AS])
16412 +m4trace:configure.in:27: -1- AC_SUBST([AR])
16413 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_AR])
16414 +m4trace:configure.in:27: -1- AC_SUBST([RANLIB])
16415 +m4trace:configure.in:27: -1- AC_SUBST([ac_ct_RANLIB])
16416 +m4trace:configure.in:27: -1- AC_PROG_INSTALL
16417 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_PROGRAM])
16418 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_SCRIPT])
16419 +m4trace:configure.in:27: -1- AC_SUBST([INSTALL_DATA])
16420 +m4trace:configure.in:27: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
16421 +m4trace:configure.in:27: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
16422 +m4trace:configure.in:27: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
16423 +m4trace:configure.in:27: -1- AC_SUBST([MAINT])
16424 +m4trace:configure.in:27: -1- AC_SUBST([GC_CFLAGS])
16425 +m4trace:configure.in:29: -1- AM_PROG_LIBTOOL
16426 +m4trace:configure.in:29: -1- AC_PROG_LIBTOOL
16427 +m4trace:configure.in:29: -1- AC_PROG_CC
16428 +m4trace:configure.in:29: -1- AC_SUBST([CC])
16429 +m4trace:configure.in:29: -1- AC_SUBST([CFLAGS])
16430 +m4trace:configure.in:29: -1- AC_SUBST([LDFLAGS])
16431 +m4trace:configure.in:29: -1- AC_SUBST([CPPFLAGS])
16432 +m4trace:configure.in:29: -1- AC_SUBST([CC])
16433 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_CC])
16434 +m4trace:configure.in:29: -1- AC_SUBST([CC])
16435 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_CC])
16436 +m4trace:configure.in:29: -1- AC_SUBST([CC])
16437 +m4trace:configure.in:29: -1- AC_SUBST([CC])
16438 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_CC])
16439 +m4trace:configure.in:29: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
16440 +m4trace:configure.in:29: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
16441 +m4trace:configure.in:29: -1- AC_SUBST([DEPDIR])
16442 +m4trace:configure.in:29: -1- AC_SUBST([am__include])
16443 +m4trace:configure.in:29: -1- AC_SUBST([am__quote])
16444 +m4trace:configure.in:29: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
16445 +m4trace:configure.in:29: -1- AC_SUBST([AMDEP_TRUE])
16446 +m4trace:configure.in:29: -1- AC_SUBST([AMDEP_FALSE])
16447 +m4trace:configure.in:29: -1- AC_SUBST([AMDEPBACKSLASH])
16448 +m4trace:configure.in:29: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
16449 +m4trace:configure.in:29: -1- AC_PROG_LN_S
16450 +m4trace:configure.in:29: -1- AC_SUBST([LN_S], [$as_ln_s])
16451 +m4trace:configure.in:29: -1- AC_SUBST([ECHO])
16452 +m4trace:configure.in:29: -1- AC_SUBST([RANLIB])
16453 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_RANLIB])
16454 +m4trace:configure.in:29: -1- AC_SUBST([STRIP])
16455 +m4trace:configure.in:29: -1- AC_SUBST([ac_ct_STRIP])
16456 +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],
16457 + [lt_cv_dlopen="dlopen"],
16458 + [AC_CHECK_LIB([dl], [dlopen],
16459 + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
16460 + [AC_CHECK_LIB([svld], [dlopen],
16461 + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
16462 + [AC_CHECK_LIB([dld], [dld_link],
16463 + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
16468 +m4trace:configure.in:29: -1- AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen],
16469 + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
16470 + [AC_CHECK_LIB([dld], [dld_link],
16471 + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
16474 +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],
16475 + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
16477 +m4trace:configure.in:29: -1- AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
16478 +m4trace:configure.in:29: -1- AC_CHECK_HEADERS([dlfcn.h])
16479 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
16480 +#undef HAVE_DLFCN_H])
16481 +m4trace:configure.in:29: -1- AC_HEADER_STDC
16482 +m4trace:configure.in:29: -1- AC_PROG_CPP
16483 +m4trace:configure.in:29: -1- AC_SUBST([CPP])
16484 +m4trace:configure.in:29: -1- AC_SUBST([CPPFLAGS])
16485 +m4trace:configure.in:29: -1- AC_SUBST([CPP])
16486 +m4trace:configure.in:29: -1- AC_SUBST([EGREP])
16487 +m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
16488 +m4trace:configure.in:29: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
16489 +#undef STDC_HEADERS])
16490 +m4trace:configure.in:29: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
16491 + inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
16492 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
16493 +#undef HAVE_SYS_TYPES_H])
16494 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
16495 +#undef HAVE_SYS_STAT_H])
16496 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
16497 +#undef HAVE_STDLIB_H])
16498 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
16499 +#undef HAVE_STRING_H])
16500 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
16501 +#undef HAVE_MEMORY_H])
16502 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
16503 +#undef HAVE_STRINGS_H])
16504 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
16505 +#undef HAVE_INTTYPES_H])
16506 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
16507 +#undef HAVE_STDINT_H])
16508 +m4trace:configure.in:29: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
16509 +#undef HAVE_UNISTD_H])
16510 +m4trace:configure.in:29: -1- AC_SUBST([LIBTOOL])
16511 +m4trace:configure.in:38: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
16512 +m4trace:configure.in:38: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
16513 +m4trace:configure.in:38: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
16514 +m4trace:configure.in:38: -1- AC_SUBST([MAINT])
16515 +m4trace:configure.in:77: -1- AC_DEFINE_TRACE_LITERAL([GC_LINUX_THREADS])
16516 +m4trace:configure.in:78: -1- AC_DEFINE_TRACE_LITERAL([_REENTRANT])
16517 +m4trace:configure.in:80: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK])
16518 +m4trace:configure.in:82: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC])
16519 +m4trace:configure.in:85: -1- AC_DEFINE_TRACE_LITERAL([GC_LINUX_THREADS])
16520 +m4trace:configure.in:86: -1- AC_DEFINE_TRACE_LITERAL([_REENTRANT])
16521 +m4trace:configure.in:90: -1- AC_DEFINE_TRACE_LITERAL([GC_HPUX_THREADS])
16522 +m4trace:configure.in:91: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_C_SOURCE])
16523 +m4trace:configure.in:93: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK])
16524 +m4trace:configure.in:95: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC])
16525 +m4trace:configure.in:100: -1- AC_DEFINE_TRACE_LITERAL([GC_FREEBSD_THREADS])
16526 +m4trace:configure.in:105: -1- AC_DEFINE_TRACE_LITERAL([GC_SOLARIS_THREADS])
16527 +m4trace:configure.in:106: -1- AC_DEFINE_TRACE_LITERAL([GC_SOLARIS_PTHREADS])
16528 +m4trace:configure.in:109: -1- AC_DEFINE_TRACE_LITERAL([GC_IRIX_THREADS])
16529 +m4trace:configure.in:115: -1- AC_DEFINE_TRACE_LITERAL([GC_DARWIN_THREADS])
16530 +m4trace:configure.in:116: -1- AC_DEFINE_TRACE_LITERAL([THREAD_LOCAL_ALLOC])
16531 +m4trace:configure.in:118: -1- AC_DEFINE_TRACE_LITERAL([PARALLEL_MARK])
16532 +m4trace:configure.in:124: -1- AC_DEFINE_TRACE_LITERAL([GC_WIN32_THREADS])
16533 +m4trace:configure.in:125: -1- AC_DEFINE_TRACE_LITERAL([NO_GETENV])
16534 +m4trace:configure.in:134: -1- AC_SUBST([THREADLIBS])
16535 +m4trace:configure.in:141: -1- AM_CONDITIONAL([POWERPC_DARWIN], [test x$powerpc_darwin = xtrue])
16536 +m4trace:configure.in:141: -1- AC_SUBST([POWERPC_DARWIN_TRUE])
16537 +m4trace:configure.in:141: -1- AC_SUBST([POWERPC_DARWIN_FALSE])
16538 +m4trace:configure.in:148: -1- AC_CHECK_LIB([dl], [dlopen], [EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl"])
16539 +m4trace:configure.in:152: -1- AC_SUBST([EXTRA_TEST_LIBS])
16540 +m4trace:configure.in:155: -1- AC_SUBST([target_all])
16541 +m4trace:configure.in:156: -1- AC_SUBST([target_alias])
16542 +m4trace:configure.in:174: -1- AC_DEFINE_TRACE_LITERAL([ECOS])
16543 +m4trace:configure.in:179: -1- AC_SUBST([CXX])
16544 +m4trace:configure.in:181: -1- AC_SUBST([INCLUDES])
16545 +m4trace:configure.in:182: -1- AC_SUBST([CXXINCLUDES])
16546 +m4trace:configure.in:197: -1- AC_DEFINE_TRACE_LITERAL([SOLARIS25_PROC_VDB_BUG_FIXED])
16547 +m4trace:configure.in:201: -1- AC_DEFINE_TRACE_LITERAL([STACKBASE])
16548 +m4trace:configure.in:202: -1- AC_DEFINE_TRACE_LITERAL([DATASTART_IS_ETEXT])
16549 +m4trace:configure.in:211: -1- AC_DEFINE_TRACE_LITERAL([NO_EXECUTE_PERMISSION])
16550 +m4trace:configure.in:215: -1- AC_DEFINE_TRACE_LITERAL([SUNOS53_SHARED_LIB])
16551 +m4trace:configure.in:228: -1- AC_SUBST([addobjs])
16552 +m4trace:configure.in:252: -1- AC_SUBST([MY_CFLAGS])
16553 +m4trace:configure.in:256: -1- AC_DEFINE_TRACE_LITERAL([SILENT])
16554 +m4trace:configure.in:257: -1- AC_DEFINE_TRACE_LITERAL([NO_SIGNALS])
16555 +m4trace:configure.in:258: -1- AC_DEFINE_TRACE_LITERAL([NO_EXECUTE_PERMISSION])
16556 +m4trace:configure.in:259: -1- AC_DEFINE_TRACE_LITERAL([ALL_INTERIOR_POINTERS])
16557 +m4trace:configure.in:262: -1- AC_DEFINE_TRACE_LITERAL([JAVA_FINALIZATION])
16558 +m4trace:configure.in:263: -1- AC_DEFINE_TRACE_LITERAL([GC_GCJ_SUPPORT])
16559 +m4trace:configure.in:264: -1- AC_DEFINE_TRACE_LITERAL([ATOMIC_UNCOLLECTABLE])
16560 +m4trace:configure.in:270: -1- AC_DEFINE_TRACE_LITERAL([NO_SIGSET])
16561 +m4trace:configure.in:271: -1- AC_DEFINE_TRACE_LITERAL([NO_DEBUGGING])
16562 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([KEEP_BACK_PTRS])
16563 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([DBG_HDRS_ALL])
16564 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([MAKE_BACK_GRAPH])
16565 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([MAKE_BACK_GRAPH])
16566 +m4trace:configure.in:290: -1- AC_DEFINE_TRACE_LITERAL([SAVE_CALL_COUNT])
16567 +m4trace:configure.in:292: -1- AM_CONDITIONAL([USE_LIBDIR], [test -z "$with_cross_host"])
16568 +m4trace:configure.in:292: -1- AC_SUBST([USE_LIBDIR_TRUE])
16569 +m4trace:configure.in:292: -1- AC_SUBST([USE_LIBDIR_FALSE])
16570 +m4trace:configure.in:317: -1- AC_CONFIG_FILES([Makefile include/Makefile])
16571 +m4trace:configure.in:317: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
16572 +m4trace:configure.in:317: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
16573 diff -urNb boehm-gc/backgraph.c boehm-gc/backgraph.c
16574 --- boehm-gc/backgraph.c Wed Jan 30 18:48:45 2002
16575 +++ boehm-gc/backgraph.c Mon May 26 12:48:52 2003
16576 @@ -307,6 +307,7 @@
16578 while (currentp < (word *)(p + gc_descr)) {
16579 word current = *currentp++;
16580 + FIXUP_POINTER(current);
16581 if (current >= (word)GC_least_plausible_heap_addr &&
16582 current <= (word)GC_greatest_plausible_heap_addr) {
16583 ptr_t target = GC_base((GC_PTR)current);
16584 diff -urNb boehm-gc/configure boehm-gc/configure
16585 --- boehm-gc/configure Tue May 13 17:18:14 2003
16586 +++ boehm-gc/configure Sat May 31 21:21:37 2003
16588 program_transform_name=s,x,x,
16595 @@ -176,7 +175,6 @@
16596 --help print this message
16597 --no-create do not create output files
16598 --quiet, --silent do not print \`checking...' messages
16599 - --site-file=FILE use FILE as the site file
16600 --version print the version of autoconf that created configure
16601 Directory and file names:
16602 --prefix=PREFIX install architecture-independent files in PREFIX
16603 @@ -347,11 +345,6 @@
16604 -site=* | --site=* | --sit=*)
16605 site="$ac_optarg" ;;
16607 - -site-file | --site-file | --site-fil | --site-fi | --site-f)
16608 - ac_prev=sitefile ;;
16609 - -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*)
16610 - sitefile="$ac_optarg" ;;
16612 -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
16614 -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
16615 @@ -517,16 +510,12 @@
16616 srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
16618 # Prefer explicitly selected file to automatically selected ones.
16619 -if test -z "$sitefile"; then
16620 - if test -z "$CONFIG_SITE"; then
16621 +if test -z "$CONFIG_SITE"; then
16622 if test "x$prefix" != xNONE; then
16623 CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
16625 CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
16629 - CONFIG_SITE="$sitefile"
16631 for ac_site_file in $CONFIG_SITE; do
16632 if test -r "$ac_site_file"; then
16633 @@ -604,7 +593,7 @@
16634 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
16635 # ./install, which can be erroneously created by make from ./install.sh.
16636 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
16637 -echo "configure:608: checking for a BSD compatible install" >&5
16638 +echo "configure:597: checking for a BSD compatible install" >&5
16639 if test -z "$INSTALL"; then
16640 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
16641 echo $ac_n "(cached) $ac_c" 1>&6
16642 @@ -657,7 +646,7 @@
16643 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
16645 echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
16646 -echo "configure:661: checking whether build environment is sane" >&5
16647 +echo "configure:650: checking whether build environment is sane" >&5
16650 echo timestamp > conftestfile
16651 @@ -714,7 +703,7 @@
16652 test "$program_transform_name" = "" && program_transform_name="s,x,x,"
16654 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
16655 -echo "configure:718: checking whether ${MAKE-make} sets \${MAKE}" >&5
16656 +echo "configure:707: checking whether ${MAKE-make} sets \${MAKE}" >&5
16657 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
16658 if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
16659 echo $ac_n "(cached) $ac_c" 1>&6
16660 @@ -747,12 +736,12 @@
16663 echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
16664 -echo "configure:751: checking for Cygwin environment" >&5
16665 +echo "configure:740: checking for Cygwin environment" >&5
16666 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
16667 echo $ac_n "(cached) $ac_c" 1>&6
16669 cat > conftest.$ac_ext <<EOF
16670 -#line 756 "configure"
16671 +#line 745 "configure"
16672 #include "confdefs.h"
16675 @@ -763,7 +752,7 @@
16679 -if { (eval echo configure:767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
16680 +if { (eval echo configure:756: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
16684 @@ -780,19 +769,19 @@
16686 test "$ac_cv_cygwin" = yes && CYGWIN=yes
16687 echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
16688 -echo "configure:784: checking for mingw32 environment" >&5
16689 +echo "configure:773: checking for mingw32 environment" >&5
16690 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
16691 echo $ac_n "(cached) $ac_c" 1>&6
16693 cat > conftest.$ac_ext <<EOF
16694 -#line 789 "configure"
16695 +#line 778 "configure"
16696 #include "confdefs.h"
16699 return __MINGW32__;
16702 -if { (eval echo configure:796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
16703 +if { (eval echo configure:785: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
16707 @@ -903,7 +892,7 @@
16710 echo $ac_n "checking host system type""... $ac_c" 1>&6
16711 -echo "configure:907: checking host system type" >&5
16712 +echo "configure:896: checking host system type" >&5
16715 case "$host_alias" in
16716 @@ -924,7 +913,7 @@
16717 echo "$ac_t""$host" 1>&6
16719 echo $ac_n "checking target system type""... $ac_c" 1>&6
16720 -echo "configure:928: checking target system type" >&5
16721 +echo "configure:917: checking target system type" >&5
16723 target_alias=$target
16724 case "$target_alias" in
16725 @@ -942,7 +931,7 @@
16726 echo "$ac_t""$target" 1>&6
16728 echo $ac_n "checking build system type""... $ac_c" 1>&6
16729 -echo "configure:946: checking build system type" >&5
16730 +echo "configure:935: checking build system type" >&5
16733 case "$build_alias" in
16734 @@ -982,7 +971,7 @@
16736 missing_dir=`cd $ac_aux_dir && pwd`
16737 echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
16738 -echo "configure:986: checking for working aclocal" >&5
16739 +echo "configure:975: checking for working aclocal" >&5
16740 # Run test in a subshell; some versions of sh will print an error if
16741 # an executable is not found, even if stderr is redirected.
16742 # Redirect stdin to placate older versions of autoconf. Sigh.
16743 @@ -995,7 +984,7 @@
16746 echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
16747 -echo "configure:999: checking for working autoconf" >&5
16748 +echo "configure:988: checking for working autoconf" >&5
16749 # Run test in a subshell; some versions of sh will print an error if
16750 # an executable is not found, even if stderr is redirected.
16751 # Redirect stdin to placate older versions of autoconf. Sigh.
16752 @@ -1008,7 +997,7 @@
16755 echo $ac_n "checking for working automake""... $ac_c" 1>&6
16756 -echo "configure:1012: checking for working automake" >&5
16757 +echo "configure:1001: checking for working automake" >&5
16758 # Run test in a subshell; some versions of sh will print an error if
16759 # an executable is not found, even if stderr is redirected.
16760 # Redirect stdin to placate older versions of autoconf. Sigh.
16761 @@ -1021,7 +1010,7 @@
16764 echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
16765 -echo "configure:1025: checking for working autoheader" >&5
16766 +echo "configure:1014: checking for working autoheader" >&5
16767 # Run test in a subshell; some versions of sh will print an error if
16768 # an executable is not found, even if stderr is redirected.
16769 # Redirect stdin to placate older versions of autoconf. Sigh.
16770 @@ -1034,7 +1023,7 @@
16773 echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
16774 -echo "configure:1038: checking for working makeinfo" >&5
16775 +echo "configure:1027: checking for working makeinfo" >&5
16776 # Run test in a subshell; some versions of sh will print an error if
16777 # an executable is not found, even if stderr is redirected.
16778 # Redirect stdin to placate older versions of autoconf. Sigh.
16779 @@ -1060,7 +1049,7 @@
16780 # Extract the first word of "gcc", so it can be a program name with args.
16781 set dummy gcc; ac_word=$2
16782 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
16783 -echo "configure:1064: checking for $ac_word" >&5
16784 +echo "configure:1053: checking for $ac_word" >&5
16785 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
16786 echo $ac_n "(cached) $ac_c" 1>&6
16788 @@ -1090,7 +1079,7 @@
16789 # Extract the first word of "cc", so it can be a program name with args.
16790 set dummy cc; ac_word=$2
16791 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
16792 -echo "configure:1094: checking for $ac_word" >&5
16793 +echo "configure:1083: checking for $ac_word" >&5
16794 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
16795 echo $ac_n "(cached) $ac_c" 1>&6
16797 @@ -1139,7 +1128,7 @@
16800 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
16801 -echo "configure:1143: checking whether we are using GNU C" >&5
16802 +echo "configure:1132: checking whether we are using GNU C" >&5
16803 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
16804 echo $ac_n "(cached) $ac_c" 1>&6
16806 @@ -1148,7 +1137,7 @@
16810 -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
16811 +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
16815 @@ -1163,7 +1152,7 @@
16816 ac_save_CFLAGS="$CFLAGS"
16818 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
16819 -echo "configure:1167: checking whether ${CC-cc} accepts -g" >&5
16820 +echo "configure:1156: checking whether ${CC-cc} accepts -g" >&5
16821 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
16822 echo $ac_n "(cached) $ac_c" 1>&6
16824 @@ -1200,7 +1189,7 @@
16825 # Extract the first word of "$ac_prog", so it can be a program name with args.
16826 set dummy $ac_prog; ac_word=$2
16827 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
16828 -echo "configure:1204: checking for $ac_word" >&5
16829 +echo "configure:1193: checking for $ac_word" >&5
16830 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
16831 echo $ac_n "(cached) $ac_c" 1>&6
16833 @@ -1233,7 +1222,7 @@
16834 test -z "$CXX" && { echo "configure: error: no acceptable c++ found in \$PATH" 1>&2; exit 1; }
16836 echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
16837 -echo "configure:1237: checking whether we are using GNU C++" >&5
16838 +echo "configure:1226: checking whether we are using GNU C++" >&5
16839 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
16840 echo $ac_n "(cached) $ac_c" 1>&6
16842 @@ -1242,7 +1231,7 @@
16846 -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
16847 +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
16851 @@ -1257,7 +1246,7 @@
16852 ac_save_CXXFLAGS="$CXXFLAGS"
16854 echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
16855 -echo "configure:1261: checking whether ${CXX-g++} accepts -g" >&5
16856 +echo "configure:1250: checking whether ${CXX-g++} accepts -g" >&5
16857 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
16858 echo $ac_n "(cached) $ac_c" 1>&6
16860 @@ -1290,7 +1279,7 @@
16861 # NEWLIB_CONFIGURE, which doesn't work because that means that it will
16862 # be run before AC_CANONICAL_HOST.
16863 echo $ac_n "checking build system type""... $ac_c" 1>&6
16864 -echo "configure:1294: checking build system type" >&5
16865 +echo "configure:1283: checking build system type" >&5
16868 case "$build_alias" in
16869 @@ -1311,7 +1300,7 @@
16870 # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
16871 set dummy ${ac_tool_prefix}as; ac_word=$2
16872 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
16873 -echo "configure:1315: checking for $ac_word" >&5
16874 +echo "configure:1304: checking for $ac_word" >&5
16875 if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
16876 echo $ac_n "(cached) $ac_c" 1>&6
16878 @@ -1343,7 +1332,7 @@
16879 # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
16880 set dummy ${ac_tool_prefix}ar; ac_word=$2
16881 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
16882 -echo "configure:1347: checking for $ac_word" >&5
16883 +echo "configure:1336: checking for $ac_word" >&5
16884 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
16885 echo $ac_n "(cached) $ac_c" 1>&6
16887 @@ -1375,7 +1364,7 @@
16888 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
16889 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
16890 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
16891 -echo "configure:1379: checking for $ac_word" >&5
16892 +echo "configure:1368: checking for $ac_word" >&5
16893 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
16894 echo $ac_n "(cached) $ac_c" 1>&6
16896 @@ -1407,7 +1396,7 @@
16897 # Extract the first word of "ranlib", so it can be a program name with args.
16898 set dummy ranlib; ac_word=$2
16899 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
16900 -echo "configure:1411: checking for $ac_word" >&5
16901 +echo "configure:1400: checking for $ac_word" >&5
16902 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
16903 echo $ac_n "(cached) $ac_c" 1>&6
16905 @@ -1452,7 +1441,7 @@
16906 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
16907 # ./install, which can be erroneously created by make from ./install.sh.
16908 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
16909 -echo "configure:1456: checking for a BSD compatible install" >&5
16910 +echo "configure:1445: checking for a BSD compatible install" >&5
16911 if test -z "$INSTALL"; then
16912 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
16913 echo $ac_n "(cached) $ac_c" 1>&6
16914 @@ -1506,7 +1495,7 @@
16917 echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
16918 -echo "configure:1510: checking whether to enable maintainer-specific portions of Makefiles" >&5
16919 +echo "configure:1499: checking whether to enable maintainer-specific portions of Makefiles" >&5
16920 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
16921 if test "${enable_maintainer_mode+set}" = set; then
16922 enableval="$enable_maintainer_mode"
16923 @@ -1544,7 +1533,7 @@
16926 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
16927 -echo "configure:1548: checking for executable suffix" >&5
16928 +echo "configure:1537: checking for executable suffix" >&5
16929 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
16930 echo $ac_n "(cached) $ac_c" 1>&6
16932 @@ -1554,10 +1543,10 @@
16934 echo 'int main () { return 0; }' > conftest.$ac_ext
16936 - if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
16937 + if { (eval echo configure:1547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
16938 for file in conftest.*; do
16940 - *.c | *.o | *.obj | *.ilk | *.pdb) ;;
16941 + *.c | *.o | *.obj) ;;
16942 *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
16945 @@ -1676,7 +1665,7 @@
16946 if test "$GCC" = yes; then
16947 # Check if gcc -print-prog-name=ld gives a path.
16948 echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
16949 -echo "configure:1680: checking for ld used by GCC" >&5
16950 +echo "configure:1669: checking for ld used by GCC" >&5
16953 # gcc leaves a trailing carriage return which upsets mingw
16954 @@ -1706,10 +1695,10 @@
16956 elif test "$with_gnu_ld" = yes; then
16957 echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
16958 -echo "configure:1710: checking for GNU ld" >&5
16959 +echo "configure:1699: checking for GNU ld" >&5
16961 echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
16962 -echo "configure:1713: checking for non-GNU ld" >&5
16963 +echo "configure:1702: checking for non-GNU ld" >&5
16965 if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then
16966 echo $ac_n "(cached) $ac_c" 1>&6
16967 @@ -1744,7 +1733,7 @@
16969 test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
16970 echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
16971 -echo "configure:1748: checking if the linker ($LD) is GNU ld" >&5
16972 +echo "configure:1737: checking if the linker ($LD) is GNU ld" >&5
16973 if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then
16974 echo $ac_n "(cached) $ac_c" 1>&6
16976 @@ -1761,7 +1750,7 @@
16979 echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
16980 -echo "configure:1765: checking for $LD option to reload object files" >&5
16981 +echo "configure:1754: checking for $LD option to reload object files" >&5
16982 if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then
16983 echo $ac_n "(cached) $ac_c" 1>&6
16985 @@ -1773,7 +1762,7 @@
16986 test -n "$reload_flag" && reload_flag=" $reload_flag"
16988 echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
16989 -echo "configure:1777: checking for BSD-compatible nm" >&5
16990 +echo "configure:1766: checking for BSD-compatible nm" >&5
16991 if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then
16992 echo $ac_n "(cached) $ac_c" 1>&6
16994 @@ -1811,7 +1800,7 @@
16995 echo "$ac_t""$NM" 1>&6
16997 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
16998 -echo "configure:1815: checking whether ln -s works" >&5
16999 +echo "configure:1804: checking whether ln -s works" >&5
17000 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
17001 echo $ac_n "(cached) $ac_c" 1>&6
17003 @@ -1832,7 +1821,7 @@
17006 echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
17007 -echo "configure:1836: checking how to recognise dependant libraries" >&5
17008 +echo "configure:1825: checking how to recognise dependant libraries" >&5
17009 if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then
17010 echo $ac_n "(cached) $ac_c" 1>&6
17012 @@ -2005,13 +1994,13 @@
17013 deplibs_check_method=$lt_cv_deplibs_check_method
17015 echo $ac_n "checking for object suffix""... $ac_c" 1>&6
17016 -echo "configure:2009: checking for object suffix" >&5
17017 +echo "configure:1998: checking for object suffix" >&5
17018 if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then
17019 echo $ac_n "(cached) $ac_c" 1>&6
17022 echo 'int i = 1;' > conftest.$ac_ext
17023 -if { (eval echo configure:2015: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17024 +if { (eval echo configure:2004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17025 for ac_file in conftest.*; do
17028 @@ -2035,7 +2024,7 @@
17030 if test "$file_magic_cmd" = '$MAGIC_CMD'; then
17031 echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6
17032 -echo "configure:2039: checking for ${ac_tool_prefix}file" >&5
17033 +echo "configure:2028: checking for ${ac_tool_prefix}file" >&5
17034 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
17035 echo $ac_n "(cached) $ac_c" 1>&6
17037 @@ -2097,7 +2086,7 @@
17038 if test -z "$lt_cv_path_MAGIC_CMD"; then
17039 if test -n "$ac_tool_prefix"; then
17040 echo $ac_n "checking for file""... $ac_c" 1>&6
17041 -echo "configure:2101: checking for file" >&5
17042 +echo "configure:2090: checking for file" >&5
17043 if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
17044 echo $ac_n "(cached) $ac_c" 1>&6
17046 @@ -2168,7 +2157,7 @@
17047 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
17048 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
17049 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
17050 -echo "configure:2172: checking for $ac_word" >&5
17051 +echo "configure:2161: checking for $ac_word" >&5
17052 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
17053 echo $ac_n "(cached) $ac_c" 1>&6
17055 @@ -2200,7 +2189,7 @@
17056 # Extract the first word of "ranlib", so it can be a program name with args.
17057 set dummy ranlib; ac_word=$2
17058 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
17059 -echo "configure:2204: checking for $ac_word" >&5
17060 +echo "configure:2193: checking for $ac_word" >&5
17061 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
17062 echo $ac_n "(cached) $ac_c" 1>&6
17064 @@ -2235,7 +2224,7 @@
17065 # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
17066 set dummy ${ac_tool_prefix}strip; ac_word=$2
17067 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
17068 -echo "configure:2239: checking for $ac_word" >&5
17069 +echo "configure:2228: checking for $ac_word" >&5
17070 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
17071 echo $ac_n "(cached) $ac_c" 1>&6
17073 @@ -2267,7 +2256,7 @@
17074 # Extract the first word of "strip", so it can be a program name with args.
17075 set dummy strip; ac_word=$2
17076 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
17077 -echo "configure:2271: checking for $ac_word" >&5
17078 +echo "configure:2260: checking for $ac_word" >&5
17079 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
17080 echo $ac_n "(cached) $ac_c" 1>&6
17082 @@ -2334,21 +2323,8 @@
17085 # Find out which ABI we are using.
17086 - echo '#line 2338 "configure"' > conftest.$ac_ext
17087 - if { (eval echo configure:2339: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17088 - if test "$lt_cv_prog_gnu_ld" = yes; then
17089 - case `/usr/bin/file conftest.$ac_objext` in
17091 - LD="${LD-ld} -melf32bsmip"
17094 - LD="${LD-ld} -melf32bmipn32"
17097 - LD="${LD-ld} -melf64bmip"
17101 + echo '#line 2327 "configure"' > conftest.$ac_ext
17102 + if { (eval echo configure:2328: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17103 case `/usr/bin/file conftest.$ac_objext` in
17106 @@ -2361,14 +2337,13 @@
17115 # Find out which ABI we are using.
17116 echo 'int i;' > conftest.$ac_ext
17117 - if { (eval echo configure:2372: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17118 + if { (eval echo configure:2347: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17119 case "`/usr/bin/file conftest.o`" in
17121 HPUX_IA64_MODE="32"
17122 @@ -2384,7 +2359,7 @@
17123 x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
17124 # Find out which ABI we are using.
17125 echo 'int i;' > conftest.$ac_ext
17126 - if { (eval echo configure:2388: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17127 + if { (eval echo configure:2363: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
17128 case "`/usr/bin/file conftest.o`" in
17131 @@ -2428,7 +2403,7 @@
17132 SAVE_CFLAGS="$CFLAGS"
17133 CFLAGS="$CFLAGS -belf"
17134 echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
17135 -echo "configure:2432: checking whether the C compiler needs -belf" >&5
17136 +echo "configure:2407: checking whether the C compiler needs -belf" >&5
17137 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
17138 echo $ac_n "(cached) $ac_c" 1>&6
17140 @@ -2441,14 +2416,14 @@
17141 cross_compiling=$ac_cv_prog_cc_cross
17143 cat > conftest.$ac_ext <<EOF
17144 -#line 2445 "configure"
17145 +#line 2420 "configure"
17146 #include "confdefs.h"
17152 -if { (eval echo configure:2452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
17153 +if { (eval echo configure:2427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
17155 lt_cv_cc_needs_belf=yes
17157 @@ -2478,7 +2453,7 @@
17160 echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
17161 -echo "configure:2482: checking how to run the C++ preprocessor" >&5
17162 +echo "configure:2457: checking how to run the C++ preprocessor" >&5
17163 if test -z "$CXXCPP"; then
17164 if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
17165 echo $ac_n "(cached) $ac_c" 1>&6
17166 @@ -2491,12 +2466,12 @@
17167 cross_compiling=$ac_cv_prog_cxx_cross
17168 CXXCPP="${CXX-g++} -E"
17169 cat > conftest.$ac_ext <<EOF
17170 -#line 2495 "configure"
17171 +#line 2470 "configure"
17172 #include "confdefs.h"
17173 #include <stdlib.h>
17175 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
17176 -{ (eval echo configure:2500: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
17177 +{ (eval echo configure:2475: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
17178 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
17179 if test -z "$ac_err"; then
17181 @@ -2643,7 +2618,7 @@
17184 echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
17185 -echo "configure:2647: checking whether to enable maintainer-specific portions of Makefiles" >&5
17186 +echo "configure:2622: checking whether to enable maintainer-specific portions of Makefiles" >&5
17187 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
17188 if test "${enable_maintainer_mode+set}" = set; then
17189 enableval="$enable_maintainer_mode"
17190 @@ -2676,7 +2651,7 @@
17193 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
17194 -echo "configure:2680: checking for executable suffix" >&5
17195 +echo "configure:2655: checking for executable suffix" >&5
17196 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
17197 echo $ac_n "(cached) $ac_c" 1>&6
17199 @@ -2686,10 +2661,10 @@
17201 echo 'int main () { return 0; }' > conftest.$ac_ext
17203 - if { (eval echo configure:2690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
17204 + if { (eval echo configure:2665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
17205 for file in conftest.*; do
17207 - *.c | *.o | *.obj | *.ilk | *.pdb) ;;
17208 + *.c | *.o | *.obj) ;;
17209 *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
17212 @@ -2709,7 +2684,7 @@
17215 echo $ac_n "checking for thread model used by GCC""... $ac_c" 1>&6
17216 -echo "configure:2713: checking for thread model used by GCC" >&5
17217 +echo "configure:2688: checking for thread model used by GCC" >&5
17218 THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
17219 if test -z "$THREADS"; then
17221 @@ -2818,6 +2793,22 @@
17226 + cat >> confdefs.h <<\EOF
17227 +#define GC_DARWIN_THREADS 1
17230 + cat >> confdefs.h <<\EOF
17231 +#define THREAD_LOCAL_ALLOC 1
17234 + if test "${enable_parallel_mark}" = yes; then
17235 + cat >> confdefs.h <<\EOF
17236 +#define PARALLEL_MARK 1
17244 @@ -2829,12 +2820,6 @@
17245 #define NO_GETENV 1
17248 - if test $enable_shared = yes; then
17249 - cat >> confdefs.h <<\EOF
17255 decosf1 | irix | mach | os2 | solaris | dce | vxworks)
17256 { echo "configure: error: thread package $THREADS not yet supported" 1>&2; exit 1; }
17257 @@ -2845,8 +2830,28 @@
17261 -echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
17262 -echo "configure:2850: checking for dlopen in -ldl" >&5
17264 + powerpc-*-darwin*)
17265 + powerpc_darwin=true
17270 +if test x$powerpc_darwin = xtrue; then
17271 + POWERPC_DARWIN_TRUE=
17272 + POWERPC_DARWIN_FALSE='#'
17274 + POWERPC_DARWIN_TRUE='#'
17275 + POWERPC_DARWIN_FALSE=
17278 +# We never want libdl on darwin. It is a fake libdl that just ends up making
17279 +# dyld calls anyway
17283 + echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
17284 +echo "configure:2855: checking for dlopen in -ldl" >&5
17285 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
17286 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
17287 echo $ac_n "(cached) $ac_c" 1>&6
17288 @@ -2854,7 +2859,7 @@
17289 ac_save_LIBS="$LIBS"
17291 cat > conftest.$ac_ext <<EOF
17292 -#line 2858 "configure"
17293 +#line 2863 "configure"
17294 #include "confdefs.h"
17295 /* Override any gcc2 internal prototype to avoid an error. */
17296 /* We use char because int might match the return type of a gcc2
17297 @@ -2865,7 +2870,7 @@
17301 -if { (eval echo configure:2869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
17302 +if { (eval echo configure:2874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
17304 eval "ac_cv_lib_$ac_lib_var=yes"
17306 @@ -2885,6 +2890,9 @@
17307 echo "$ac_t""no" 1>&6
17315 target_all=libgcjgc.la
17316 @@ -3100,17 +3108,15 @@
17320 -if test -n "$with_cross_host" &&
17321 - test x"$with_cross_host" != x"no"; then
17322 - toolexecdir='$(exec_prefix)/$(target_alias)'
17323 - toolexeclibdir='$(toolexecdir)/lib'
17325 - toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
17326 - toolexeclibdir='$(libdir)'
17328 -toolexeclibdir=$toolexeclibdir/`$CC -print-multi-os-directory`
17331 +if test -z "$with_cross_host"; then
17333 + USE_LIBDIR_FALSE='#'
17335 + USE_LIBDIR_TRUE='#'
17336 + USE_LIBDIR_FALSE=
17339 if test "${multilib}" = "yes"; then
17340 multilib_arg="--enable-multilib"
17341 @@ -3307,14 +3313,16 @@
17342 s%@LIBTOOL@%$LIBTOOL%g
17343 s%@CXXCPP@%$CXXCPP%g
17344 s%@THREADLIBS@%$THREADLIBS%g
17345 +s%@POWERPC_DARWIN_TRUE@%$POWERPC_DARWIN_TRUE%g
17346 +s%@POWERPC_DARWIN_FALSE@%$POWERPC_DARWIN_FALSE%g
17347 s%@EXTRA_TEST_LIBS@%$EXTRA_TEST_LIBS%g
17348 s%@target_all@%$target_all%g
17349 s%@INCLUDES@%$INCLUDES%g
17350 s%@CXXINCLUDES@%$CXXINCLUDES%g
17351 s%@addobjs@%$addobjs%g
17352 s%@MY_CFLAGS@%$MY_CFLAGS%g
17353 -s%@toolexecdir@%$toolexecdir%g
17354 -s%@toolexeclibdir@%$toolexeclibdir%g
17355 +s%@USE_LIBDIR_TRUE@%$USE_LIBDIR_TRUE%g
17356 +s%@USE_LIBDIR_FALSE@%$USE_LIBDIR_FALSE%g
17360 @@ -3323,7 +3331,7 @@
17362 # Split the substitutions into bite-sized pieces for seds with
17363 # small command number limits, like on Digital OSF/1 and HP-UX.
17364 -ac_max_sed_cmds=60 # Maximum number of lines to put in a sed script.
17365 +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
17366 ac_file=1 # Number of current file.
17367 ac_beg=1 # First line for current file.
17368 ac_end=$ac_max_sed_cmds # Line after last line for current file.
17369 @@ -3425,7 +3433,6 @@
17370 CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
17371 gc_basedir=${gc_basedir}
17373 -ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}"
17377 diff -urNb boehm-gc/configure.in boehm-gc/configure.in
17378 --- boehm-gc/configure.in Mon Apr 28 13:55:07 2003
17379 +++ boehm-gc/configure.in Mon May 26 13:33:22 2003
17381 -# Copyright (c) 1999, 2000, 2001, 2002, 2003 by Red Hat, Inc. All rights reserved.
17382 +# Copyright (c) 1999, 2000, 2001, 2002 by Red Hat, Inc. All rights reserved.
17384 # THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
17385 # OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
17386 @@ -111,14 +111,18 @@
17391 + AC_DEFINE(GC_DARWIN_THREADS)
17392 + AC_DEFINE(THREAD_LOCAL_ALLOC)
17393 + if test "${enable_parallel_mark}" = yes; then
17394 + AC_DEFINE(PARALLEL_MARK)
17400 AC_DEFINE(GC_WIN32_THREADS)
17401 AC_DEFINE(NO_GETENV)
17402 - if test $enable_shared = yes; then
17403 - AC_DEFINE(GC_DLL)
17406 decosf1 | irix | mach | os2 | solaris | dce | vxworks)
17407 AC_MSG_ERROR(thread package $THREADS not yet supported)
17408 @@ -129,7 +133,22 @@
17410 AC_SUBST(THREADLIBS)
17412 -AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl")
17414 + powerpc-*-darwin*)
17415 + powerpc_darwin=true
17418 +AM_CONDITIONAL(POWERPC_DARWIN,test x$powerpc_darwin = xtrue)
17420 +# We never want libdl on darwin. It is a fake libdl that just ends up making
17421 +# dyld calls anyway
17425 + AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl")
17429 AC_SUBST(EXTRA_TEST_LIBS)
17431 target_all=libgcjgc.la
17432 @@ -270,17 +289,7 @@
17436 -if test -n "$with_cross_host" &&
17437 - test x"$with_cross_host" != x"no"; then
17438 - toolexecdir='$(exec_prefix)/$(target_alias)'
17439 - toolexeclibdir='$(toolexecdir)/lib'
17441 - toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
17442 - toolexeclibdir='$(libdir)'
17444 -toolexeclibdir=$toolexeclibdir/`$CC -print-multi-os-directory`
17445 -AC_SUBST(toolexecdir)
17446 -AC_SUBST(toolexeclibdir)
17447 +AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host")
17449 if test "${multilib}" = "yes"; then
17450 multilib_arg="--enable-multilib"
17451 @@ -304,6 +313,5 @@
17452 CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
17453 gc_basedir=${gc_basedir}
17455 -ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}"
17458 diff -urNb boehm-gc/configure.in~ boehm-gc/configure.in~
17459 --- boehm-gc/configure.in~ Wed Dec 31 16:00:00 1969
17460 +++ boehm-gc/configure.in~ Mon May 26 13:33:22 2003
17462 +# Copyright (c) 1999, 2000, 2001, 2002 by Red Hat, Inc. All rights reserved.
17464 +# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
17465 +# OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
17467 +# Permission is hereby granted to use or copy this program
17468 +# for any purpose, provided the above notices are retained on all copies.
17469 +# Permission to modify the code and to distribute modified code is granted,
17470 +# provided the above notices are retained, and a notice that the code was
17471 +# modified is included with the above copyright notice.
17473 +# Original author: Tom Tromey
17475 +dnl Process this file with autoconf to produce configure.
17477 +AC_INIT(gcj_mlc.c)
17479 +# This works around the fact that libtool configuration may change LD
17480 +# for this particular configuration, but some shells, instead of
17481 +# keeping the changes in LD private, export them just because LD is
17483 +ORIGINAL_LD_FOR_MULTILIBS=$LD
17485 +dnl Can't be done in GC_CONFIGURE because that confuses automake.
17486 +AC_CONFIG_AUX_DIR(.)
17492 +dnl We use these options to decide which functions to include.
17493 +AC_ARG_WITH(target-subdir,
17494 +[ --with-target-subdir=SUBDIR
17495 + configuring with a cross compiler])
17496 +AC_ARG_WITH(cross-host,
17497 +[ --with-cross-host=HOST configuring with a cross compiler])
17499 +AM_MAINTAINER_MODE
17500 +# automake wants to see AC_EXEEXT. But we don't need it. And having
17501 +# it is actually a problem, because the compiler we're passed can't
17502 +# necessarily do a full link. So we fool automake here.
17504 + # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
17505 + # to nothing, so nothing would remain between `then' and `fi' if it
17506 + # were not for the `:' below.
17511 +AC_MSG_CHECKING([for thread model used by GCC])
17512 +THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
17513 +if test -z "$THREADS"; then
17516 +AC_MSG_RESULT([$THREADS])
17518 +AC_ARG_ENABLE(parallel-mark,
17519 +[ --enable-parallel-mark parallelize marking and free list construction],
17520 + [case "$THREADS" in
17521 + no | none | single)
17522 + AC_MSG_ERROR([Parallel mark requires --enable-threads=x spec])
17527 +INCLUDES=-I${srcdir}/include
17529 +case "$THREADS" in
17530 + no | none | single)
17533 + posix | pthreads)
17535 + THREADLIBS=-lpthread
17537 + x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
17538 + AC_DEFINE(GC_LINUX_THREADS)
17539 + AC_DEFINE(_REENTRANT)
17540 + if test "${enable_parallel_mark}"; then
17541 + AC_DEFINE(PARALLEL_MARK)
17543 + AC_DEFINE(THREAD_LOCAL_ALLOC)
17546 + AC_DEFINE(GC_LINUX_THREADS)
17547 + AC_DEFINE(_REENTRANT)
17550 + AC_MSG_WARN("Only HP/UX 11 threads are supported.")
17551 + AC_DEFINE(GC_HPUX_THREADS)
17552 + AC_DEFINE(_POSIX_C_SOURCE,199506L)
17553 + if test "${enable_parallel_mark}" = yes; then
17554 + AC_DEFINE(PARALLEL_MARK)
17556 + AC_DEFINE(THREAD_LOCAL_ALLOC)
17557 + THREADLIBS="-lpthread -lrt"
17560 + AC_MSG_WARN("FreeBSD does not yet fully support threads with Boehm GC.")
17561 + AC_DEFINE(GC_FREEBSD_THREADS)
17562 + INCLUDES="$INCLUDES -pthread"
17563 + THREADLIBS=-pthread
17566 + AC_DEFINE(GC_SOLARIS_THREADS)
17567 + AC_DEFINE(GC_SOLARIS_PTHREADS)
17570 + AC_DEFINE(GC_IRIX_THREADS)
17578 + AC_DEFINE(GC_DARWIN_THREADS)
17579 + AC_DEFINE(THREAD_LOCAL_ALLOC)
17580 + if test "${enable_parallel_mark}" = yes; then
17581 + AC_DEFINE(PARALLEL_MARK)
17585 + AC_DEFINE(GC_WIN32_THREADS)
17586 + AC_DEFINE(NO_GETENV)
17588 + decosf1 | irix | mach | os2 | solaris | dce | vxworks)
17589 + AC_MSG_ERROR(thread package $THREADS not yet supported)
17592 + AC_MSG_ERROR($THREADS is an unknown thread package)
17595 +AC_SUBST(THREADLIBS)
17598 + powerpc-*-darwin*)
17599 + powerpc_darwin=true
17602 +AM_CONDITIONAL(POWERPC_DARWIN,test x$powerpc_darwin = xtrue)
17604 +# We never want libdl on darwin. It is a fake libdl that just ends up making
17605 +# dyld calls anyway
17609 + AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl")
17613 +AC_SUBST(EXTRA_TEST_LIBS)
17615 +target_all=libgcjgc.la
17616 +AC_SUBST(target_all)
17617 +AC_SUBST(target_alias)
17619 +dnl If the target is an eCos system, use the appropriate eCos
17621 +dnl FIXME: this should not be a local option but a global target
17622 +dnl system; at present there is no eCos target.
17625 +[ --with-ecos enable runtime eCos target support],
17626 +TARGET_ECOS="$with_ecos"
17631 +case "$TARGET_ECOS" in
17636 + CXXINCLUDES="-I${TARGET_ECOS}/include"
17637 + addobjs="$addobjs ecos.lo"
17642 +AC_SUBST(INCLUDES)
17643 +AC_SUBST(CXXINCLUDES)
17647 + alpha*-*-openbsd*)
17648 + machdep="alpha_mach_dep.lo"
17649 + if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then
17650 + AC_MSG_WARN(OpenBSD/Alpha without dlopen(). Shared library support is disabled)
17651 + AM_DISABLE_SHARED
17655 + machdep="alpha_mach_dep.lo"
17657 + i?86-*-solaris2.[[89]]*)
17658 + AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED)
17661 + machdep="mips_ultrix_mach_dep.lo"
17662 + AC_DEFINE(STACKBASE, __stackbase)
17663 + AC_DEFINE(DATASTART_IS_ETEXT)
17665 + mips-dec-ultrix*)
17666 + machdep="mips_ultrix_mach-dep.lo"
17671 + machdep="mips_sgi_mach_dep.lo"
17672 + AC_DEFINE(NO_EXECUTE_PERMISSION)
17674 + sparc-sun-solaris2.3*)
17675 + machdep="sparc_mach_dep.lo"
17676 + AC_DEFINE(SUNOS53_SHARED_LIB)
17678 + sparc-sun-solaris2.*)
17679 + machdep="sparc_mach_dep.lo"
17682 + machdep="mach_dep.lo ia64_save_regs_in_stack.lo"
17685 +if test x"$machdep" = x; then
17686 + machdep="mach_dep.lo"
17688 +addobjs="$addobjs $machdep"
17691 +dnl As of 4.13a2, the collector will not properly work on Solaris when
17692 +dnl built with gcc and -O. So we remove -O in the appropriate case.
17694 + sparc-sun-solaris2*)
17695 + if test "$GCC" = yes; then
17697 + for i in $CFLAGS; do
17702 + new_CFLAGS="$new_CFLAGS $i"
17706 + CFLAGS="$new_CFLAGS"
17711 +dnl We need to override the top-level CFLAGS. This is how we do it.
17712 +MY_CFLAGS="$CFLAGS"
17713 +AC_SUBST(MY_CFLAGS)
17715 +dnl Include defines that have become de facto standard.
17716 +dnl ALL_INTERIOR_POINTERS can be overridden in startup code.
17718 +AC_DEFINE(NO_SIGNALS)
17719 +AC_DEFINE(NO_EXECUTE_PERMISSION)
17720 +AC_DEFINE(ALL_INTERIOR_POINTERS)
17722 +dnl By default, make the library as general as possible.
17723 +AC_DEFINE(JAVA_FINALIZATION)
17724 +AC_DEFINE(GC_GCJ_SUPPORT)
17725 +AC_DEFINE(ATOMIC_UNCOLLECTABLE)
17727 +dnl This is something of a hack. When cross-compiling we turn off
17728 +dnl some functionality. These is only correct when targetting an
17729 +dnl embedded system. FIXME.
17730 +if test -n "${with_cross_host}"; then
17731 + AC_DEFINE(NO_SIGSET)
17732 + AC_DEFINE(NO_DEBUGGING)
17735 +AC_ARG_ENABLE(full-debug,
17736 +[ --enable-full-debug include full support for pointer backtracing etc.],
17737 +[ if test "$enable_full_debug" = "yes"; then
17738 + AC_MSG_WARN("Must define GC_DEBUG and use debug alloc. in clients.")
17739 + AC_DEFINE(KEEP_BACK_PTRS)
17740 + AC_DEFINE(DBG_HDRS_ALL)
17743 + AC_DEFINE(MAKE_BACK_GRAPH)
17745 + x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
17746 + AC_DEFINE(MAKE_BACK_GRAPH)
17747 + AC_MSG_WARN("Client must not use -fomit-frame-pointer.")
17748 + AC_DEFINE(SAVE_CALL_COUNT, 8)
17753 +AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host")
17755 +if test "${multilib}" = "yes"; then
17756 + multilib_arg="--enable-multilib"
17761 +AC_OUTPUT(Makefile include/Makefile, [
17762 +dnl Put all the -D options in a file.
17763 +echo "$DEFS" > boehm-cflags
17765 +if test -n "$CONFIG_FILES"; then
17766 + LD="${ORIGINAL_LD_FOR_MULTILIBS}"
17767 + ac_file=Makefile . ${gc_basedir}/../config-ml.in
17772 +with_multisubdir=${with_multisubdir}
17773 +ac_configure_args="${multilib_arg} ${ac_configure_args}"
17774 +CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
17775 +gc_basedir=${gc_basedir}
17779 diff -urNb boehm-gc/darwin_stop_world.c boehm-gc/darwin_stop_world.c
17780 --- boehm-gc/darwin_stop_world.c Wed Dec 31 16:00:00 1969
17781 +++ boehm-gc/darwin_stop_world.c Sun Jun 1 14:17:58 2003
17783 +#include "private/pthread_support.h"
17785 +# if defined(GC_DARWIN_THREADS)
17787 +#define DEBUG_THREADS 0
17789 +/* From "Inside Mac OS X - Mach-O Runtime Architecture" published by Apple
17791 + "The space beneath the stack pointer, where a new stack frame would normally
17792 + be allocated, is called the red zone. This area as shown in Figure 3-2 may
17793 + be used for any purpose as long as a new stack frame does not need to be
17794 + added to the stack."
17796 + Page 50: "If a leaf procedure's red zone usage would exceed 224 bytes, then
17797 + it must set up a stack frame just like routines that call other routines."
17799 +#define PPC_RED_ZONE_SIZE 224
17801 +void GC_push_all_stacks() {
17807 +# if defined(POWERPC)
17808 + ppc_thread_state_t state;
17810 +# error FIXME for non-ppc OS X
17812 + mach_msg_type_number_t thread_state_count = MACHINE_THREAD_STATE_COUNT;
17814 + me = pthread_self();
17815 + if (!GC_thr_initialized) GC_thr_init();
17817 + for(i=0;i<THREAD_TABLE_SZ;i++) {
17818 + for(p=GC_threads[i];p!=0;p=p->next) {
17819 + if(p -> flags & FINISHED) continue;
17820 + if(pthread_equal(p->id,me)) {
17821 + lo = GC_approx_sp();
17823 + /* Get the thread state (registers, etc) */
17824 + r = thread_get_state(
17825 + p->stop_info.mach_thread,
17826 + MACHINE_THREAD_STATE,
17827 + (natural_t*)&state,
17828 + &thread_state_count);
17829 + if(r != KERN_SUCCESS) ABORT("thread_get_state failed");
17832 + lo = (void*)(state.r1 - PPC_RED_ZONE_SIZE);
17834 + GC_push_one(state.r0);
17835 + GC_push_one(state.r2);
17836 + GC_push_one(state.r3);
17837 + GC_push_one(state.r4);
17838 + GC_push_one(state.r5);
17839 + GC_push_one(state.r6);
17840 + GC_push_one(state.r7);
17841 + GC_push_one(state.r8);
17842 + GC_push_one(state.r9);
17843 + GC_push_one(state.r10);
17844 + GC_push_one(state.r11);
17845 + GC_push_one(state.r12);
17846 + GC_push_one(state.r13);
17847 + GC_push_one(state.r14);
17848 + GC_push_one(state.r15);
17849 + GC_push_one(state.r16);
17850 + GC_push_one(state.r17);
17851 + GC_push_one(state.r18);
17852 + GC_push_one(state.r19);
17853 + GC_push_one(state.r20);
17854 + GC_push_one(state.r21);
17855 + GC_push_one(state.r22);
17856 + GC_push_one(state.r23);
17857 + GC_push_one(state.r24);
17858 + GC_push_one(state.r25);
17859 + GC_push_one(state.r26);
17860 + GC_push_one(state.r27);
17861 + GC_push_one(state.r28);
17862 + GC_push_one(state.r29);
17863 + GC_push_one(state.r30);
17864 + GC_push_one(state.r31);
17866 + # error FIXME for non-PPC darwin
17867 + #endif /* !POWERPC */
17869 + if(p->flags & MAIN_THREAD)
17870 + hi = GC_stackbottom;
17872 + hi = p->stack_end;
17873 + #if DEBUG_THREADS
17874 + GC_printf3("Darwin: Stack for thread 0x%lx = [%lx,%lx)\n",
17875 + (unsigned long) p -> id,
17876 + (unsigned long) lo,
17877 + (unsigned long) hi
17880 + GC_push_all_stack(lo,hi);
17881 + } /* for(p=GC_threads[i]...) */
17882 + } /* for(i=0;i<THREAD_TABLE_SZ...) */
17885 +/* Caller holds allocation lock. */
17886 +void GC_stop_world()
17890 + pthread_t my_thread = pthread_self();
17891 + kern_return_t kern_result;
17893 + #if DEBUG_THREADS
17894 + GC_printf1("Stopping the world from 0x%lx\n", pthread_self());
17897 + /* Make sure all free list construction has stopped before we start. */
17898 + /* No new construction can start, since free list construction is */
17899 + /* required to acquire and release the GC lock before it starts, */
17900 + /* and we have the lock. */
17901 +# ifdef PARALLEL_MARK
17902 + GC_acquire_mark_lock();
17903 + GC_ASSERT(GC_fl_builder_count == 0);
17904 + /* We should have previously waited for it to become zero. */
17905 +# endif /* PARALLEL_MARK */
17907 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
17908 + for (p = GC_threads[i]; p != 0; p = p -> next) {
17909 + if (p -> id == my_thread) continue;
17910 + if (p -> flags & FINISHED) continue;
17911 + if (p -> thread_blocked) /* Will wait */ continue;
17913 + #if DEBUG_THREADS
17914 + GC_printf1("Suspending thread 0x%lx\n", p -> id);
17917 + /* Suspend the thread */
17918 + kern_result = thread_suspend(p->stop_info.mach_thread);
17919 + if(kern_result != KERN_SUCCESS) ABORT("thread_suspend failed");
17923 +# ifdef MPROTECT_VDB
17924 + if(GC_incremental) {
17925 + extern void GC_mprotect_stop();
17926 + GC_mprotect_stop();
17930 +# ifdef PARALLEL_MARK
17931 + GC_release_mark_lock();
17933 + #if DEBUG_THREADS
17934 + GC_printf1("World stopped from 0x%lx\n", pthread_self());
17938 +/* Caller holds allocation lock, and has held it continuously since */
17939 +/* the world stopped. */
17940 +void GC_start_world()
17942 + pthread_t my_thread = pthread_self();
17945 + kern_return_t kern_result;
17947 +# if DEBUG_THREADS
17948 + GC_printf0("World starting\n");
17951 +# ifdef MPROTECT_VDB
17952 + if(GC_incremental) {
17953 + extern void GC_mprotect_resume();
17954 + GC_mprotect_resume();
17958 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
17959 + for (p = GC_threads[i]; p != 0; p = p -> next) {
17960 + if (p -> id == my_thread) continue;
17961 + if (p -> flags & FINISHED) continue;
17962 + if (p -> thread_blocked) continue;
17964 + #if DEBUG_THREADS
17965 + GC_printf1("Resuming 0x%lx\n", p -> id);
17968 + /* Resume the thread */
17969 + kern_result = thread_resume(p->stop_info.mach_thread);
17970 + if(kern_result != KERN_SUCCESS) ABORT("thread_resume failed");
17973 + #if DEBUG_THREADS
17974 + GC_printf0("World started\n");
17978 +void GC_stop_init() {
17983 diff -urNb boehm-gc/dbg_mlc.c boehm-gc/dbg_mlc.c
17984 --- boehm-gc/dbg_mlc.c Tue Feb 12 21:38:39 2002
17985 +++ boehm-gc/dbg_mlc.c Mon May 26 12:48:52 2003
17987 # include <stdlib.h>
17989 # if defined(LINUX) || defined(SUNOS4) || defined(SUNOS5) \
17990 - || defined(HPUX) || defined(IRIX) || defined(OSF1)
17991 + || defined(HPUX) || defined(IRIX5) || defined(OSF1)
17992 # define RANDOM() random()
17994 # define RANDOM() (long)rand()
17995 @@ -228,6 +228,8 @@
17997 #endif /* KEEP_BACK_PTRS */
17999 +# define CROSSES_HBLK(p, sz) \
18000 + (((word)(p + sizeof(oh) + sz - 1) ^ (word)p) >= HBLKSIZE)
18001 /* Store debugging info into p. Return displaced pointer. */
18002 /* Assumes we don't hold allocation lock. */
18003 ptr_t GC_store_debug_info(p, sz, string, integer)
18004 @@ -243,6 +245,8 @@
18005 /* But that's expensive. And this way things should only appear */
18006 /* inconsistent while we're in the handler. */
18008 + GC_ASSERT(GC_size(p) >= sizeof(oh) + sz);
18009 + GC_ASSERT(!(SMALL_OBJ(sz) && CROSSES_HBLK(p, sz)));
18010 # ifdef KEEP_BACK_PTRS
18011 ((oh *)p) -> oh_back_ptr = HIDE_BACK_PTR(NOT_MARKED);
18013 @@ -275,6 +279,8 @@
18014 /* There is some argument that we should disable signals here. */
18015 /* But that's expensive. And this way things should only appear */
18016 /* inconsistent while we're in the handler. */
18017 + GC_ASSERT(GC_size(p) >= sizeof(oh) + sz);
18018 + GC_ASSERT(!(SMALL_OBJ(sz) && CROSSES_HBLK(p, sz)));
18019 # ifdef KEEP_BACK_PTRS
18020 ((oh *)p) -> oh_back_ptr = HIDE_BACK_PTR(NOT_MARKED);
18022 @@ -324,10 +330,11 @@
18024 register oh * ohdr = (oh *)GC_base(p);
18026 + GC_ASSERT(!I_HOLD_LOCK());
18027 GC_err_printf1("0x%lx (", ((unsigned long)ohdr + sizeof(oh)));
18028 GC_err_puts(ohdr -> oh_string);
18029 # ifdef SHORT_DBG_HDRS
18030 - GC_err_printf1(":%ld, sz=%ld)\n", (unsigned long)(ohdr -> oh_int));
18031 + GC_err_printf1(":%ld)\n", (unsigned long)(ohdr -> oh_int));
18033 GC_err_printf2(":%ld, sz=%ld)\n", (unsigned long)(ohdr -> oh_int),
18034 (unsigned long)(ohdr -> oh_sz));
18035 @@ -342,6 +349,7 @@
18039 + GC_ASSERT(!I_HOLD_LOCK());
18040 if (GC_HAS_DEBUG_INFO(p)) {
18043 @@ -355,6 +363,7 @@
18045 register oh * ohdr = (oh *)GC_base(p);
18047 + GC_ASSERT(!I_HOLD_LOCK());
18048 GC_err_printf2("0x%lx in object at 0x%lx(", (unsigned long)clobbered_addr,
18050 if (clobbered_addr <= (ptr_t)(&(ohdr -> oh_sz))
18051 @@ -376,14 +385,18 @@
18053 void GC_check_heap_proc GC_PROTO((void));
18055 +void GC_print_all_smashed_proc GC_PROTO((void));
18057 void GC_do_nothing() {}
18059 void GC_start_debugging()
18061 # ifndef SHORT_DBG_HDRS
18062 GC_check_heap = GC_check_heap_proc;
18063 + GC_print_all_smashed = GC_print_all_smashed_proc;
18065 GC_check_heap = GC_do_nothing;
18066 + GC_print_all_smashed = GC_do_nothing;
18068 GC_print_heap_obj = GC_debug_print_heap_obj_proc;
18069 GC_debugging_started = TRUE;
18070 @@ -429,6 +442,62 @@
18071 return (GC_store_debug_info(result, (word)lb, s, (word)i));
18075 + GC_PTR GC_debug_malloc_ignore_off_page(size_t lb, GC_EXTRA_PARAMS)
18077 + GC_PTR GC_debug_malloc_ignore_off_page(lb, s, i)
18081 +# ifdef GC_ADD_CALLER
18082 + --> GC_ADD_CALLER not implemented for K&R C
18086 + GC_PTR result = GC_malloc_ignore_off_page(lb + DEBUG_BYTES);
18088 + if (result == 0) {
18089 + GC_err_printf1("GC_debug_malloc_ignore_off_page(%ld) returning NIL (",
18090 + (unsigned long) lb);
18092 + GC_err_printf1(":%ld)\n", (unsigned long)i);
18095 + if (!GC_debugging_started) {
18096 + GC_start_debugging();
18098 + ADD_CALL_CHAIN(result, ra);
18099 + return (GC_store_debug_info(result, (word)lb, s, (word)i));
18103 + GC_PTR GC_debug_malloc_atomic_ignore_off_page(size_t lb, GC_EXTRA_PARAMS)
18105 + GC_PTR GC_debug_malloc_atomic_ignore_off_page(lb, s, i)
18109 +# ifdef GC_ADD_CALLER
18110 + --> GC_ADD_CALLER not implemented for K&R C
18114 + GC_PTR result = GC_malloc_atomic_ignore_off_page(lb + DEBUG_BYTES);
18116 + if (result == 0) {
18117 + GC_err_printf1("GC_debug_malloc_atomic_ignore_off_page(%ld)"
18118 + " returning NIL (", (unsigned long) lb);
18120 + GC_err_printf1(":%ld)\n", (unsigned long)i);
18123 + if (!GC_debugging_started) {
18124 + GC_start_debugging();
18126 + ADD_CALL_CHAIN(result, ra);
18127 + return (GC_store_debug_info(result, (word)lb, s, (word)i));
18130 # ifdef DBG_HDRS_ALL
18132 * An allocation function for internal use.
18133 @@ -447,7 +516,7 @@
18134 (unsigned long) lb);
18137 - ADD_CALL_CHAIN(result, ra);
18138 + ADD_CALL_CHAIN(result, GC_RETURN_ADDR);
18139 return (GC_store_debug_info_inner(result, (word)lb, "INTERNAL", (word)0));
18142 @@ -461,7 +530,7 @@
18143 (unsigned long) lb);
18146 - ADD_CALL_CHAIN(result, ra);
18147 + ADD_CALL_CHAIN(result, GC_RETURN_ADDR);
18148 return (GC_store_debug_info_inner(result, (word)lb, "INTERNAL", (word)0));
18151 @@ -592,7 +661,7 @@
18155 - GC_PTR result = GC_malloc_uncollectable(lb + DEBUG_BYTES);
18156 + GC_PTR result = GC_malloc_uncollectable(lb + UNCOLLECTABLE_DEBUG_BYTES);
18159 GC_err_printf1("GC_debug_malloc_uncollectable(%ld) returning NIL (",
18160 @@ -618,7 +687,8 @@
18164 - GC_PTR result = GC_malloc_atomic_uncollectable(lb + DEBUG_BYTES);
18166 + GC_malloc_atomic_uncollectable(lb + UNCOLLECTABLE_DEBUG_BYTES);
18170 @@ -774,6 +844,45 @@
18173 #ifndef SHORT_DBG_HDRS
18175 +/* List of smashed objects. We defer printing these, since we can't */
18176 +/* always print them nicely with the allocation lock held. */
18177 +/* We put them here instead of in GC_arrays, since it may be useful to */
18178 +/* be able to look at them with the debugger. */
18179 +#define MAX_SMASHED 20
18180 +ptr_t GC_smashed[MAX_SMASHED];
18181 +unsigned GC_n_smashed = 0;
18183 +# if defined(__STDC__) || defined(__cplusplus)
18184 + void GC_add_smashed(ptr_t smashed)
18186 + void GC_add_smashed(smashed)
18190 + GC_ASSERT(GC_is_marked(GC_base(smashed)));
18191 + GC_smashed[GC_n_smashed] = smashed;
18192 + if (GC_n_smashed < MAX_SMASHED - 1) ++GC_n_smashed;
18193 + /* In case of overflow, we keep the first MAX_SMASHED-1 */
18194 + /* entries plus the last one. */
18195 + GC_have_errors = TRUE;
18198 +/* Print all objects on the list. Clear the list. */
18199 +void GC_print_all_smashed_proc ()
18203 + GC_ASSERT(!I_HOLD_LOCK());
18204 + if (GC_n_smashed == 0) return;
18205 + GC_err_printf0("GC_check_heap_block: found smashed heap objects:\n");
18206 + for (i = 0; i < GC_n_smashed; ++i) {
18207 + GC_print_smashed_obj(GC_base(GC_smashed[i]), GC_smashed[i]);
18208 + GC_smashed[i] = 0;
18210 + GC_n_smashed = 0;
18213 /* Check all marked objects in the given block for validity */
18215 # if defined(__STDC__) || defined(__cplusplus)
18216 @@ -802,11 +911,7 @@
18217 && GC_HAS_DEBUG_INFO((ptr_t)p)) {
18218 ptr_t clobbered = GC_check_annotated_obj((oh *)p);
18220 - if (clobbered != 0) {
18222 - "GC_check_heap_block: found smashed location at ");
18223 - GC_print_smashed_obj((ptr_t)p, clobbered);
18225 + if (clobbered != 0) GC_add_smashed(clobbered);
18229 @@ -819,9 +924,11 @@
18230 void GC_check_heap_proc()
18232 # ifndef SMALL_CONFIG
18233 - if (sizeof(oh) & (2 * sizeof(word) - 1) != 0) {
18234 - ABORT("Alignment problem: object header has inappropriate size\n");
18236 +# ifdef ALIGN_DOUBLE
18237 + GC_STATIC_ASSERT((sizeof(oh) & (2 * sizeof(word) - 1)) == 0);
18239 + GC_STATIC_ASSERT((sizeof(oh) & (sizeof(word) - 1)) == 0);
18242 GC_apply_to_all_blocks(GC_check_heap_block, (word)0);
18244 @@ -908,7 +1015,7 @@
18245 ptr_t base = GC_base(obj);
18246 if (0 == base || (ptr_t)obj - base != sizeof(oh)) {
18248 - "GC_register_finalizer called with non-base-pointer 0x%lx\n",
18249 + "GC_debug_register_finalizer called with non-base-pointer 0x%lx\n",
18253 @@ -940,7 +1047,7 @@
18254 ptr_t base = GC_base(obj);
18255 if (0 == base || (ptr_t)obj - base != sizeof(oh)) {
18257 - "GC_register_finalizer_no_order called with non-base-pointer 0x%lx\n",
18258 + "GC_debug_register_finalizer_no_order called with non-base-pointer 0x%lx\n",
18262 @@ -973,7 +1080,7 @@
18263 ptr_t base = GC_base(obj);
18264 if (0 == base || (ptr_t)obj - base != sizeof(oh)) {
18266 - "GC_register_finalizer_ignore_self called with non-base-pointer 0x%lx\n",
18267 + "GC_debug_register_finalizer_ignore_self called with non-base-pointer 0x%lx\n",
18271 diff -urNb boehm-gc/dyn_load.c boehm-gc/dyn_load.c
18272 --- boehm-gc/dyn_load.c Mon Mar 3 22:38:30 2003
18273 +++ boehm-gc/dyn_load.c Thu Sep 11 21:57:10 2003
18275 !defined(MSWIN32) && !defined(MSWINCE) && \
18276 !(defined(ALPHA) && defined(OSF1)) && \
18277 !defined(HPUX) && !(defined(LINUX) && defined(__ELF__)) && \
18278 - !defined(RS6000) && !defined(SCO_ELF) && \
18279 + !defined(RS6000) && !defined(SCO_ELF) && !defined(DGUX) && \
18280 !(defined(FREEBSD) && defined(__ELF__)) && \
18281 - !(defined(NETBSD) && defined(__ELF__)) && !defined(HURD)
18282 + !(defined(NETBSD) && defined(__ELF__)) && !defined(HURD) && \
18284 --> We only know how to find data segments of dynamic libraries for the
18285 --> above. Additional SVR4 variants might not be too
18290 #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
18291 - (defined(FREEBSD) && defined(__ELF__)) || \
18292 + (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
18293 (defined(NETBSD) && defined(__ELF__)) || defined(HURD)
18294 # include <stddef.h>
18296 @@ -264,7 +265,7 @@
18297 # endif /* SUNOS */
18299 #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
18300 - (defined(FREEBSD) && defined(__ELF__)) || \
18301 + (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
18302 (defined(NETBSD) && defined(__ELF__)) || defined(HURD)
18305 @@ -282,56 +283,23 @@
18306 /* Repeatedly read until buffer is filled, or EOF is encountered */
18307 /* Defined in os_dep.c. */
18309 -static char *parse_map_entry(char *buf_ptr, word *start, word *end,
18310 +char *GC_parse_map_entry(char *buf_ptr, word *start, word *end,
18311 char *prot_buf, unsigned int *maj_dev);
18312 +word GC_apply_to_maps(word (*fn)(char *));
18313 + /* From os_dep.c */
18315 -void GC_register_dynamic_libraries()
18316 +word GC_register_map_entries(char *maps)
18322 - char maps_temp[32768];
18325 + char *buf_ptr = maps;
18328 - unsigned int maj_dev, min_dev;
18329 + unsigned int maj_dev;
18330 word least_ha, greatest_ha;
18332 word datastart = (word)(DATASTART);
18334 - /* Read /proc/self/maps */
18335 - /* Note that we may not allocate, and thus can't use stdio. */
18336 - f = open("/proc/self/maps", O_RDONLY);
18337 - if (-1 == f) ABORT("Couldn't open /proc/self/maps");
18338 - /* stat() doesn't work for /proc/self/maps, so we have to
18339 - read it to find out how large it is... */
18342 - result = GC_repeat_read(f, maps_temp, sizeof(maps_temp));
18343 - if (result <= 0) ABORT("Couldn't read /proc/self/maps");
18344 - maps_size += result;
18345 - } while (result == sizeof(maps_temp));
18347 - if (maps_size > sizeof(maps_temp)) {
18348 - /* If larger than our buffer, close and re-read it. */
18350 - f = open("/proc/self/maps", O_RDONLY);
18351 - if (-1 == f) ABORT("Couldn't open /proc/self/maps");
18352 - maps_buf = alloca(maps_size);
18353 - if (NULL == maps_buf) ABORT("/proc/self/maps alloca failed");
18354 - result = GC_repeat_read(f, maps_buf, maps_size);
18355 - if (result <= 0) ABORT("Couldn't read /proc/self/maps");
18357 - /* Otherwise use the fixed size buffer */
18358 - maps_buf = maps_temp;
18362 - maps_buf[result] = '\0';
18363 - buf_ptr = maps_buf;
18364 - /* Compute heap bounds. Should be done by add_to_heap? */
18365 + /* Compute heap bounds. FIXME: Should be done by add_to_heap? */
18366 least_ha = (word)(-1);
18368 for (i = 0; i < GC_n_heap_sects; ++i) {
18369 @@ -342,11 +310,10 @@
18371 if (greatest_ha < (word)GC_scratch_last_end_ptr)
18372 greatest_ha = (word)GC_scratch_last_end_ptr;
18375 - buf_ptr = parse_map_entry(buf_ptr, &start, &end, prot_buf, &maj_dev);
18376 - if (buf_ptr == NULL) return;
18379 + buf_ptr = GC_parse_map_entry(buf_ptr, &start, &end, prot_buf, &maj_dev);
18380 + if (buf_ptr == NULL) return 1;
18381 if (prot_buf[1] == 'w') {
18382 /* This is a writable mapping. Add it to */
18383 /* the root set unless it is already otherwise */
18384 @@ -358,16 +325,7 @@
18386 if (GC_segment_is_thread_stack(start, end)) continue;
18388 - /* The rest of this assumes that there is no mapping */
18389 - /* spanning the beginning of the data segment, or extending */
18390 - /* beyond the entire heap at both ends. */
18391 - /* Empirically these assumptions hold. */
18393 - if (start < (word)DATAEND && end > (word)DATAEND) {
18394 - /* Rld may use space at the end of the main data */
18395 - /* segment. Thus we add that in. */
18396 - start = (word)DATAEND;
18398 + /* We no longer exclude the main data segment. */
18399 if (start < least_ha && end > least_ha) {
18402 @@ -378,6 +336,13 @@
18403 GC_add_roots_inner((char *)start, (char *)end, TRUE);
18409 +void GC_register_dynamic_libraries()
18411 + if (!GC_apply_to_maps(GC_register_map_entries))
18412 + ABORT("Failed to read /proc for library registration.");
18415 /* We now take care of the main data segment ourselves: */
18416 @@ -387,60 +352,6 @@
18419 # define HAVE_REGISTER_MAIN_STATIC_DATA
18421 -// parse_map_entry parses an entry from /proc/self/maps so we can
18422 -// locate all writable data segments that belong to shared libraries.
18423 -// The format of one of these entries and the fields we care about
18425 -// XXXXXXXX-XXXXXXXX r-xp 00000000 30:05 260537 name of mapping...\n
18426 -// ^^^^^^^^ ^^^^^^^^ ^^^^ ^^
18427 -// start end prot maj_dev
18430 -// The parser is called with a pointer to the entry and the return value
18431 -// is either NULL or is advanced to the next entry(the byte after the
18432 -// trailing '\n'.)
18434 -#define OFFSET_MAP_START 0
18435 -#define OFFSET_MAP_END 9
18436 -#define OFFSET_MAP_PROT 18
18437 -#define OFFSET_MAP_MAJDEV 32
18439 -static char *parse_map_entry(char *buf_ptr, word *start, word *end,
18440 - char *prot_buf, unsigned int *maj_dev)
18443 - unsigned int val;
18446 - if (buf_ptr == NULL || *buf_ptr == '\0') {
18450 - memcpy(prot_buf, buf_ptr+OFFSET_MAP_PROT, 4); // do the protections first
18451 - prot_buf[4] = '\0';
18453 - if (prot_buf[1] == 'w') { // we can skip all of this if it's not writable
18456 - buf_ptr[OFFSET_MAP_START+8] = '\0';
18457 - *start = strtoul(tok, NULL, 16);
18459 - tok = buf_ptr+OFFSET_MAP_END;
18460 - buf_ptr[OFFSET_MAP_END+8] = '\0';
18461 - *end = strtoul(tok, NULL, 16);
18463 - buf_ptr += OFFSET_MAP_MAJDEV;
18465 - while (*buf_ptr != ':') buf_ptr++;
18466 - *buf_ptr++ = '\0';
18467 - *maj_dev = strtoul(tok, NULL, 16);
18470 - while (*buf_ptr && *buf_ptr++ != '\n');
18475 #endif /* USE_PROC_FOR_LIBRARIES */
18477 @@ -508,6 +419,7 @@
18478 GC_add_roots_inner(DATASTART2, (char *)(DATAEND2), TRUE);
18485 @@ -630,6 +542,7 @@
18486 /* The type is a lie, since the real type doesn't make sense here, */
18487 /* and we only test for NULL. */
18490 /* We use /proc to track down all parts of the address space that are */
18491 /* mapped by the process, and throw out regions we know we shouldn't */
18492 /* worry about. This may also work under other SVR4 variants. */
18493 @@ -1056,7 +969,122 @@
18495 #endif /* RS6000 */
18499 +#include <mach-o/dyld.h>
18500 +#include <mach-o/getsect.h>
18502 +/*#define DARWIN_DEBUG*/
18504 +const static struct {
18506 + const char *sect;
18507 +} GC_dyld_sections[] = {
18508 + { SEG_DATA, SECT_DATA },
18509 + { SEG_DATA, SECT_BSS },
18510 + { SEG_DATA, SECT_COMMON }
18513 +#ifdef DARWIN_DEBUG
18514 +static const char *GC_dyld_name_for_hdr(struct mach_header *hdr) {
18515 + unsigned long i,c;
18516 + c = _dyld_image_count();
18517 + for(i=0;i<c;i++) if(_dyld_get_image_header(i) == hdr)
18518 + return _dyld_get_image_name(i);
18523 +/* This should never be called by a thread holding the lock */
18524 +static void GC_dyld_image_add(struct mach_header* hdr, unsigned long slide) {
18525 + unsigned long start,end,i;
18526 + const struct section *sec;
18527 + for(i=0;i<sizeof(GC_dyld_sections)/sizeof(GC_dyld_sections[0]);i++) {
18528 + sec = getsectbynamefromheader(
18529 + hdr,GC_dyld_sections[i].seg,GC_dyld_sections[i].sect);
18530 + if(sec == NULL || sec->size == 0) continue;
18531 + start = slide + sec->addr;
18532 + end = start + sec->size;
18533 +# ifdef DARWIN_DEBUG
18534 + GC_printf4("Adding section at %p-%p (%lu bytes) from image %s\n",
18535 + start,end,sec->size,GC_dyld_name_for_hdr(hdr));
18537 + GC_add_roots((char*)start,(char*)end);
18539 +# ifdef DARWIN_DEBUG
18540 + GC_print_static_roots();
18544 +/* This should never be called by a thread holding the lock */
18545 +static void GC_dyld_image_remove(struct mach_header* hdr, unsigned long slide) {
18546 + unsigned long start,end,i;
18547 + const struct section *sec;
18548 + for(i=0;i<sizeof(GC_dyld_sections)/sizeof(GC_dyld_sections[0]);i++) {
18549 + sec = getsectbynamefromheader(
18550 + hdr,GC_dyld_sections[i].seg,GC_dyld_sections[i].sect);
18551 + if(sec == NULL || sec->size == 0) continue;
18552 + start = slide + sec->addr;
18553 + end = start + sec->size;
18554 +# ifdef DARWIN_DEBUG
18555 + GC_printf4("Removing section at %p-%p (%lu bytes) from image %s\n",
18556 + start,end,sec->size,GC_dyld_name_for_hdr(hdr));
18558 + GC_remove_roots((char*)start,(char*)end);
18560 +# ifdef DARWIN_DEBUG
18561 + GC_print_static_roots();
18565 +void GC_register_dynamic_libraries() {
18566 + /* Currently does nothing. The callbacks are setup by GC_init_dyld()
18567 + The dyld library takes it from there. */
18570 +/* The _dyld_* functions have an internal lock so no _dyld functions
18571 + can be called while the world is stopped without the risk of a deadlock.
18572 + Because of this we MUST setup callbacks BEFORE we ever stop the world.
18573 + This should be called BEFORE any thread in created and WITHOUT the
18574 + allocation lock held. */
18576 +void GC_init_dyld() {
18577 + static GC_bool initialized = FALSE;
18579 + if(initialized) return;
18581 +# ifdef DARWIN_DEBUG
18582 + GC_printf0("Forcing full bind of GC code...\n");
18584 + if(!_dyld_bind_fully_image_containing_address((unsigned long*)GC_malloc))
18585 + GC_abort("_dyld_bind_fully_image_containing_addres failed");
18587 +# ifdef DARWIN_DEBUG
18588 + GC_printf0("Registering dyld callbacks...\n");
18591 + /* Apple's Documentation:
18592 + When you call _dyld_register_func_for_add_image, the dynamic linker runtime
18593 + calls the specified callback (func) once for each of the images that is
18594 + currently loaded into the program. When a new image is added to the program,
18595 + your callback is called again with the mach_header for the new image, and the virtual memory slide amount of the new image.
18597 + This WILL properly register existing and all future libraries
18600 + _dyld_register_func_for_add_image(GC_dyld_image_add);
18601 + _dyld_register_func_for_remove_image(GC_dyld_image_remove);
18602 + initialized = TRUE;
18605 +#define HAVE_REGISTER_MAIN_STATIC_DATA
18606 +GC_bool GC_register_main_static_data()
18608 + /* Already done through dyld callbacks */
18612 +#endif /* DARWIN */
18614 #else /* !DYNAMIC_LOADING */
18616 diff -urNb boehm-gc/finalize.c boehm-gc/finalize.c
18617 --- boehm-gc/finalize.c Mon Feb 11 20:37:53 2002
18618 +++ boehm-gc/finalize.c Mon May 26 12:48:52 2003
18619 @@ -207,7 +207,8 @@
18623 - new_dl = GC_oom_fn(sizeof(struct disappearing_link));
18624 + new_dl = (struct disappearing_link *)
18625 + GC_oom_fn(sizeof(struct disappearing_link));
18627 GC_finalization_failures++;
18629 @@ -433,7 +434,8 @@
18633 - new_fo = GC_oom_fn(sizeof(struct finalizable_object));
18634 + new_fo = (struct finalizable_object *)
18635 + GC_oom_fn(sizeof(struct finalizable_object));
18637 GC_finalization_failures++;
18639 @@ -759,8 +761,9 @@
18640 /* Should be called without allocation lock. */
18641 int GC_invoke_finalizers()
18643 - register struct finalizable_object * curr_fo;
18644 - register int count = 0;
18645 + struct finalizable_object * curr_fo;
18647 + word mem_freed_before;
18650 while (GC_finalize_now != 0) {
18651 @@ -768,6 +771,9 @@
18655 + if (count == 0) {
18656 + mem_freed_before = GC_mem_freed;
18658 curr_fo = GC_finalize_now;
18660 if (curr_fo != 0) GC_finalize_now = fo_next(curr_fo);
18661 @@ -789,6 +795,11 @@
18662 GC_free((GC_PTR)curr_fo);
18665 + if (count != 0 && mem_freed_before != GC_mem_freed) {
18667 + GC_finalizer_mem_freed += (GC_mem_freed - mem_freed_before);
18673 @@ -801,7 +812,9 @@
18674 if (GC_finalize_now == 0) return;
18675 if (!GC_finalize_on_demand) {
18676 (void) GC_invoke_finalizers();
18678 GC_ASSERT(GC_finalize_now == 0);
18679 +# endif /* Otherwise GC can run concurrently and add more */
18682 if (GC_finalizer_notifier != (void (*) GC_PROTO((void)))0
18683 @@ -839,3 +852,17 @@
18687 +#if !defined(NO_DEBUGGING)
18689 +void GC_print_finalization_stats()
18691 + struct finalizable_object *fo = GC_finalize_now;
18692 + size_t ready = 0;
18694 + GC_printf2("%lu finalization table entries; %lu disappearing links\n",
18695 + GC_fo_entries, GC_dl_entries);
18696 + for (; 0 != fo; fo = fo_next(fo)) ++ready;
18697 + GC_printf1("%lu objects are eligible for immediate finalization\n", ready);
18700 +#endif /* NO_DEBUGGING */
18701 diff -urNb boehm-gc/gc_dlopen.c boehm-gc/gc_dlopen.c
18702 --- boehm-gc/gc_dlopen.c Tue Oct 16 02:01:35 2001
18703 +++ boehm-gc/gc_dlopen.c Mon May 26 12:48:52 2003
18704 @@ -19,12 +19,14 @@
18706 * This used to be in dyn_load.c. It was extracted into a separate file
18707 * to avoid having to link against libdl.{a,so} if the client doesn't call
18709 + * dlopen. Of course this fails if the collector is in a dynamic
18713 #include "private/gc_priv.h"
18715 -# if defined(GC_PTHREADS) || defined(GC_SOLARIS_THREADS)
18716 +# if (defined(GC_PTHREADS) && !defined(GC_DARWIN_THREADS)) \
18717 + || defined(GC_SOLARIS_THREADS)
18719 # if defined(dlopen) && !defined(GC_USE_LD_WRAP)
18720 /* To support various threads pkgs, gc.h interposes on dlopen by */
18721 @@ -44,19 +46,14 @@
18722 /* calls in either a multithreaded environment, or if the library */
18723 /* initialization code allocates substantial amounts of GC'ed memory. */
18724 /* But I don't know of a better solution. */
18725 - /* This can still deadlock if the client explicitly starts a GC */
18726 - /* during the dlopen. He shouldn't do that. */
18727 - static GC_bool disable_gc_for_dlopen()
18728 + static void disable_gc_for_dlopen()
18732 - result = GC_dont_gc;
18733 while (GC_incremental && GC_collection_in_progress()) {
18734 GC_collect_a_little_inner(1000);
18736 - GC_dont_gc = TRUE;
18742 /* Redefine dlopen to guarantee mutual exclusion with */
18747 - GC_bool dont_gc_save;
18749 # ifndef USE_PROC_FOR_LIBRARIES
18750 - dont_gc_save = disable_gc_for_dlopen();
18751 + disable_gc_for_dlopen();
18753 # ifdef GC_USE_LD_WRAP
18754 result = (void *)__real_dlopen(path, mode);
18756 result = dlopen(path, mode);
18758 # ifndef USE_PROC_FOR_LIBRARIES
18759 - GC_dont_gc = dont_gc_save;
18760 + GC_enable(); /* undoes disable_gc_for_dlopen */
18764 diff -urNb boehm-gc/gcj_mlc.c boehm-gc/gcj_mlc.c
18765 --- boehm-gc/gcj_mlc.c Mon Feb 11 20:37:53 2002
18766 +++ boehm-gc/gcj_mlc.c Mon May 26 12:48:52 2003
18767 @@ -157,6 +157,7 @@
18768 GC_words_allocd += lw;
18770 *(void **)op = ptr_to_struct_containing_descr;
18771 + GC_ASSERT(((void **)op)[1] == 0);
18775 diff -urNb boehm-gc/if_mach.c boehm-gc/if_mach.c
18776 --- boehm-gc/if_mach.c Fri Aug 17 11:30:45 2001
18777 +++ boehm-gc/if_mach.c Mon May 26 12:48:52 2003
18779 if (strcmp(MACH_TYPE, argv[1]) != 0) return(0);
18780 if (strcmp(OS_TYPE, "") != 0 && strcmp(argv[2], "") != 0
18781 && strcmp(OS_TYPE, argv[2]) != 0) return(0);
18782 - printf("^^^^Starting command^^^^\n");
18783 + fprintf(stderr, "^^^^Starting command^^^^\n");
18785 execvp(argv[3], argv+3);
18786 perror("Couldn't execute");
18787 diff -urNb boehm-gc/include/Makefile.in boehm-gc/include/Makefile.in
18788 --- boehm-gc/include/Makefile.in Tue Dec 31 09:52:45 2002
18789 +++ boehm-gc/include/Makefile.in Mon May 26 13:08:48 2003
18791 -# Makefile.in generated automatically by automake 1.4 from Makefile.am
18792 +# Makefile.in generated by automake 1.6.3 from Makefile.am.
18793 +# @configure_input@
18795 -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
18796 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
18797 +# Free Software Foundation, Inc.
18798 # This Makefile.in is free software; the Free Software Foundation
18799 # gives unlimited permission to copy and/or distribute it,
18800 # with or without modifications, as long as this notice is preserved.
18802 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
18803 # PARTICULAR PURPOSE.
18812 includedir = @includedir@
18813 oldincludedir = /usr/include
18817 pkgdatadir = $(datadir)/@PACKAGE@
18818 pkglibdir = $(libdir)/@PACKAGE@
18819 pkgincludedir = $(includedir)/@PACKAGE@
18823 ACLOCAL = @ACLOCAL@
18824 @@ -45,12 +43,16 @@
18825 AUTOMAKE = @AUTOMAKE@
18826 AUTOHEADER = @AUTOHEADER@
18828 +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
18829 INSTALL = @INSTALL@
18830 -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
18831 +INSTALL_PROGRAM = @INSTALL_PROGRAM@
18832 INSTALL_DATA = @INSTALL_DATA@
18833 +install_sh_DATA = $(install_sh) -c -m 644
18834 +install_sh_PROGRAM = $(install_sh) -c
18835 +install_sh_SCRIPT = $(install_sh) -c
18836 INSTALL_SCRIPT = @INSTALL_SCRIPT@
18837 +INSTALL_HEADER = $(INSTALL_DATA)
18838 transform = @program_transform_name@
18843 @@ -63,171 +65,190 @@
18844 host_triplet = @host@
18845 target_alias = @target_alias@
18846 target_triplet = @target@
18850 +PATH_SEPARATOR = @PATH_SEPARATOR@
18859 CXXINCLUDES = @CXXINCLUDES@
18861 DLLTOOL = @DLLTOOL@
18865 EXTRA_TEST_LIBS = @EXTRA_TEST_LIBS@
18868 GCJFLAGS = @GCJFLAGS@
18869 GC_CFLAGS = @GC_CFLAGS@
18870 INCLUDES = @INCLUDES@
18871 +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
18872 LIBTOOL = @LIBTOOL@
18875 -MAKEINFO = @MAKEINFO@
18876 MY_CFLAGS = @MY_CFLAGS@
18877 OBJDUMP = @OBJDUMP@
18879 PACKAGE = @PACKAGE@
18883 THREADLIBS = @THREADLIBS@
18884 VERSION = @VERSION@
18885 addobjs = @addobjs@
18886 +am__include = @am__include@
18887 +am__quote = @am__quote@
18888 gc_basedir = @gc_basedir@
18889 +install_sh = @install_sh@
18890 mkinstalldirs = @mkinstalldirs@
18891 target_all = @target_all@
18893 AUTOMAKE_OPTIONS = foreign
18895 noinst_HEADERS = gc.h gc_backptr.h gc_local_alloc.h \
18896 gc_pthread_redirects.h gc_cpp.h
18899 CONFIG_CLEAN_FILES =
18901 +am__depfiles_maybe =
18903 HEADERS = $(noinst_HEADERS)
18905 -DIST_COMMON = Makefile.am Makefile.in
18909 -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
18915 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
18916 - cd $(top_srcdir) && $(AUTOMAKE) --cygnus include/Makefile
18917 + cd $(top_srcdir) && \
18918 + $(AUTOMAKE) --cygnus include/Makefile
18919 +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
18920 + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
18922 -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
18923 - cd $(top_builddir) \
18924 - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
18925 +mostlyclean-libtool:
18929 + -rm -rf .libs _libs
18931 +distclean-libtool:
18933 +uninstall-info-am:
18940 -ID: $(HEADERS) $(SOURCES) $(LISP)
18941 - list='$(SOURCES) $(HEADERS)'; \
18942 - unique=`for i in $$list; do echo $$i; done | \
18943 - awk ' { files[$$0] = 1; } \
18944 +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
18945 + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
18946 + unique=`for i in $$list; do \
18947 + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
18949 + $(AWK) ' { files[$$0] = 1; } \
18950 END { for (i in files) print i; }'`; \
18951 - here=`pwd` && cd $(srcdir) \
18952 - && mkid -f$$here/ID $$unique $(LISP)
18953 + mkid -fID $$unique
18955 -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
18956 +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
18957 + $(TAGS_FILES) $(LISP)
18960 - list='$(SOURCES) $(HEADERS)'; \
18961 - unique=`for i in $$list; do echo $$i; done | \
18962 - awk ' { files[$$0] = 1; } \
18963 + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
18964 + unique=`for i in $$list; do \
18965 + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
18967 + $(AWK) ' { files[$$0] = 1; } \
18968 END { for (i in files) print i; }'`; \
18969 - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
18970 - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
18975 + test -z "$(ETAGS_ARGS)$$tags$$unique" \
18976 + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
18980 + here=`$(am__cd) $(top_builddir) && pwd` \
18981 + && cd $(top_srcdir) \
18982 + && gtags -i $(GTAGS_ARGS) $$here
18987 -maintainer-clean-tags:
18989 -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
18993 -distdir: $(DISTFILES)
18994 - @for file in $(DISTFILES); do \
18995 - if test -f $$file; then d=.; else d=$(srcdir); fi; \
18996 - if test -d $$d/$$file; then \
18997 - cp -pr $$d/$$file $(distdir)/$$file; \
18999 - test -f $(distdir)/$$file \
19000 - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
19001 - || cp -p $$d/$$file $(distdir)/$$file || :; \
19008 + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
19012 -installcheck: installcheck-am
19014 -install-info: install-info-am
19016 -install-exec: install-exec-am
19017 +all-am: Makefile $(HEADERS)
19020 -install-data: install-data-am
19023 -install-am: all-am
19024 - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
19025 install: install-am
19027 +install-exec: install-exec-am
19028 +install-data: install-data-am
19029 uninstall: uninstall-am
19030 -all-am: Makefile $(HEADERS)
19031 -all-redirect: all-am
19033 - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
19036 +install-am: all-am
19037 + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
19039 +installcheck: installcheck-am
19041 + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
19042 + INSTALL_STRIP_FLAG=-s \
19043 + `test -z '$(STRIP)' || \
19044 + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
19045 mostlyclean-generic:
19050 -rm -f Makefile $(CONFIG_CLEAN_FILES)
19051 - -rm -f config.cache config.log stamp-h stamp-h[0-9]*
19053 maintainer-clean-generic:
19054 -mostlyclean-am: mostlyclean-tags mostlyclean-generic
19055 + @echo "This command is intended for maintainers to use"
19056 + @echo "it deletes files that may require special tools to rebuild."
19059 -mostlyclean: mostlyclean-am
19060 +clean-am: clean-generic clean-libtool mostlyclean-am
19062 -clean-am: clean-tags clean-generic mostlyclean-am
19063 +distclean: distclean-am
19066 +distclean-am: clean-am distclean-generic distclean-libtool \
19069 -distclean-am: distclean-tags distclean-generic clean-am
19073 -distclean: distclean-am
19076 -maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \
19078 - @echo "This command is intended for maintainers to use;"
19079 - @echo "it deletes files that may require special tools to rebuild."
19094 maintainer-clean: maintainer-clean-am
19096 -.PHONY: tags mostlyclean-tags distclean-tags clean-tags \
19097 -maintainer-clean-tags distdir info-am info dvi-am dvi check check-am \
19098 -installcheck-am installcheck install-info-am install-info \
19099 -install-exec-am install-exec install-data-am install-data install-am \
19100 -install uninstall-am uninstall all-redirect all-am all installdirs \
19101 -mostlyclean-generic distclean-generic clean-generic \
19102 -maintainer-clean-generic clean mostlyclean distclean maintainer-clean
19103 +maintainer-clean-am: distclean-am maintainer-clean-generic
19105 +mostlyclean: mostlyclean-am
19107 +mostlyclean-am: mostlyclean-generic mostlyclean-libtool
19111 +.PHONY: GTAGS all all-am check check-am clean clean-generic \
19112 + clean-libtool distclean distclean-generic distclean-libtool \
19113 + distclean-tags dvi dvi-am info info-am install install-am \
19114 + install-data install-data-am install-exec install-exec-am \
19115 + install-info install-info-am install-man install-strip \
19116 + installcheck installcheck-am installdirs maintainer-clean \
19117 + maintainer-clean-generic mostlyclean mostlyclean-generic \
19118 + mostlyclean-libtool tags uninstall uninstall-am \
19119 + uninstall-info-am
19121 # Tell versions [3.59,3.63) of GNU make to not export all variables.
19122 # Otherwise a system limit (for SysV at least) may be exceeded.
19123 diff -urNb boehm-gc/include/gc.h boehm-gc/include/gc.h
19124 --- boehm-gc/include/gc.h Mon Feb 11 20:37:56 2002
19125 +++ boehm-gc/include/gc.h Mon May 26 13:28:19 2003
19131 - * Some tests for old macros. These violate our namespace rules and will
19132 - * disappear shortly. Use the GC_ names.
19134 -#if defined(SOLARIS_THREADS) || defined(_SOLARIS_THREADS)
19135 -# define GC_SOLARIS_THREADS
19137 -#if defined(_SOLARIS_PTHREADS)
19138 -# define GC_SOLARIS_PTHREADS
19140 -#if defined(IRIX_THREADS)
19141 -# define GC_IRIX_THREADS
19143 -#if defined(HPUX_THREADS)
19144 -# define GC_HPUX_THREADS
19146 -#if defined(OSF1_THREADS)
19147 -# define GC_OSF1_THREADS
19149 -#if defined(LINUX_THREADS)
19150 -# define GC_LINUX_THREADS
19152 -#if defined(WIN32_THREADS)
19153 -# define GC_WIN32_THREADS
19155 -#if defined(USE_LD_WRAP)
19156 -# define GC_USE_LD_WRAP
19159 -#if !defined(_REENTRANT) && (defined(GC_SOLARIS_THREADS) \
19160 - || defined(GC_SOLARIS_PTHREADS) \
19161 - || defined(GC_HPUX_THREADS) \
19162 - || defined(GC_LINUX_THREADS))
19163 -# define _REENTRANT
19164 - /* Better late than never. This fails if system headers that */
19165 - /* depend on this were previously included. */
19168 -#if defined(GC_SOLARIS_PTHREADS) && !defined(GC_SOLARIS_THREADS)
19169 -# define GC_SOLARIS_THREADS
19172 -# if defined(GC_SOLARIS_PTHREADS) || defined(GC_FREEBSD_THREADS) || \
19173 - defined(GC_IRIX_THREADS) || defined(GC_LINUX_THREADS) || \
19174 - defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS)
19175 -# define GC_PTHREADS
19179 -# include <stddef.h>
19180 -# ifdef _WIN32_WCE
19181 -/* Yet more kluges for WinCE */
19182 -# include <stdlib.h> /* size_t is defined here */
19183 - typedef long ptrdiff_t; /* ptrdiff_t is not defined */
19186 -#if defined(__MINGW32__) &&defined(_DLL) && !defined(GC_NOT_DLL)
19188 -# define GC_API __declspec(dllexport)
19190 -# define GC_API __declspec(dllimport)
19194 -#if (defined(__DMC__) || defined(_MSC_VER)) \
19195 - && (defined(_DLL) && !defined(GC_NOT_DLL) \
19196 - || defined(GC_DLL))
19198 -# define GC_API extern __declspec(dllexport)
19200 -# define GC_API __declspec(dllimport)
19204 -#if defined(__WATCOMC__) && defined(GC_DLL)
19206 -# define GC_API extern __declspec(dllexport)
19208 -# define GC_API extern __declspec(dllimport)
19213 -#define GC_API extern
19215 +# include "gc_config_macros.h"
19217 # if defined(__STDC__) || defined(__cplusplus)
19218 # define GC_PROTO(args) args
19220 /* Env variable GC_NPROC is set to > 1, or */
19221 /* GC_NPROC is not set and this is an MP. */
19222 /* If GC_parallel is set, incremental */
19223 - /* collection is aonly partially functional, */
19224 + /* collection is only partially functional, */
19225 /* and may not be desirable. */
19228 @@ -215,8 +131,14 @@
19229 /* thread, which will call GC_invoke_finalizers */
19232 -GC_API int GC_dont_gc; /* Dont collect unless explicitly requested, e.g. */
19233 - /* because it's not safe. */
19234 +GC_API int GC_dont_gc; /* != 0 ==> Dont collect. In versions 7.2a1+, */
19235 + /* this overrides explicit GC_gcollect() calls. */
19236 + /* Used as a counter, so that nested enabling */
19237 + /* and disabling work correctly. Should */
19238 + /* normally be updated with GC_enable() and */
19239 + /* GC_disable() calls. */
19240 + /* Direct assignment to GC_dont_gc is */
19241 + /* deprecated. */
19243 GC_API int GC_dont_expand;
19244 /* Dont expand heap unless explicitly requested */
19245 @@ -296,15 +218,6 @@
19246 /* Interferes with blacklisting. */
19247 /* Wizards only. */
19249 -/* Public procedures */
19251 -/* Initialize the collector. This is only required when using thread-local
19252 - * allocation, since unlike the regular allocation routines, GC_local_malloc
19253 - * is not self-initializing. If you use GC_local_malloc you should arrange
19254 - * to call this somehow (e.g. from a constructor) before doing any allocation.
19256 -GC_API void GC_init GC_PROTO((void));
19258 GC_API unsigned long GC_time_limit;
19259 /* If incremental collection is enabled, */
19260 /* We try to terminate collections */
19261 @@ -316,9 +229,18 @@
19263 # define GC_TIME_UNLIMITED 999999
19264 /* Setting GC_time_limit to this value */
19265 - /* will disable the "pause time exceeded */
19266 + /* will disable the "pause time exceeded"*/
19269 +/* Public procedures */
19271 +/* Initialize the collector. This is only required when using thread-local
19272 + * allocation, since unlike the regular allocation routines, GC_local_malloc
19273 + * is not self-initializing. If you use GC_local_malloc you should arrange
19274 + * to call this somehow (e.g. from a constructor) before doing any allocation.
19276 +GC_API void GC_init GC_PROTO((void));
19279 * general purpose allocation routines, with roughly malloc calling conv.
19280 * The atomic versions promise that no relevant pointers are contained
19281 @@ -419,17 +341,21 @@
19282 GC_API void GC_add_roots GC_PROTO((char * low_address,
19283 char * high_address_plus_1));
19285 +/* Remove a root segment. Wizards only. */
19286 +GC_API void GC_remove_roots GC_PROTO((char * low_address,
19287 + char * high_address_plus_1));
19289 /* Add a displacement to the set of those considered valid by the */
19290 /* collector. GC_register_displacement(n) means that if p was returned */
19291 /* by GC_malloc, then (char *)p + n will be considered to be a valid */
19292 -/* pointer to n. N must be small and less than the size of p. */
19293 +/* pointer to p. N must be small and less than the size of p. */
19294 /* (All pointers to the interior of objects from the stack are */
19295 /* considered valid in any case. This applies to heap objects and */
19296 /* static data.) */
19297 /* Preferably, this should be called before any other GC procedures. */
19298 /* Calling it later adds to the probability of excess memory */
19300 -/* This is a no-op if the collector was compiled with recognition of */
19301 +/* This is a no-op if the collector has recognition of */
19302 /* arbitrary interior pointers enabled, which is now the default. */
19303 GC_API void GC_register_displacement GC_PROTO((GC_word n));
19305 @@ -464,9 +390,18 @@
19306 GC_API size_t GC_get_bytes_since_gc GC_PROTO((void));
19308 /* Return the total number of bytes allocated in this process. */
19309 -/* Never decreases. */
19310 +/* Never decreases, except due to wrapping. */
19311 GC_API size_t GC_get_total_bytes GC_PROTO((void));
19313 +/* Disable garbage collection. Even GC_gcollect calls will be */
19314 +/* ineffective. */
19315 +GC_API void GC_disable GC_PROTO((void));
19317 +/* Reenable garbage collection. GC_diable() and GC_enable() calls */
19318 +/* nest. Garbage collection is enabled if the number of calls to both */
19319 +/* both functions is equal. */
19320 +GC_API void GC_enable GC_PROTO((void));
19322 /* Enable incremental/generational collection. */
19323 /* Not advisable unless dirty bits are */
19324 /* available or most heap objects are */
19325 @@ -474,7 +409,11 @@
19326 /* Don't use in leak finding mode. */
19327 /* Ignored if GC_dont_gc is true. */
19328 /* Only the generational piece of this is */
19329 -/* functional if GC_parallel is TRUE. */
19330 +/* functional if GC_parallel is TRUE */
19331 +/* or if GC_time_limit is GC_TIME_UNLIMITED. */
19332 +/* Causes GC_local_gcj_malloc() to revert to */
19333 +/* locked allocation. Must be called */
19334 +/* before any GC_local_gcj_malloc() calls. */
19335 GC_API void GC_enable_incremental GC_PROTO((void));
19337 /* Does incremental mode write-protect pages? Returns zero or */
19338 @@ -518,6 +457,42 @@
19339 # define GC_RETURN_ADDR (GC_word)__return_address
19343 +# include <features.h>
19344 +# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
19345 + && !defined(__ia64__)
19346 +# define GC_HAVE_BUILTIN_BACKTRACE
19347 +# define GC_CAN_SAVE_CALL_STACKS
19349 +# if defined(__i386__) || defined(__x86_64__)
19350 +# define GC_CAN_SAVE_CALL_STACKS
19354 +#if defined(__sparc__)
19355 +# define GC_CAN_SAVE_CALL_STACKS
19358 +/* If we're on an a platform on which we can't save call stacks, but */
19359 +/* gcc is normally used, we go ahead and define GC_ADD_CALLER. */
19360 +/* We make this decision independent of whether gcc is actually being */
19361 +/* used, in order to keep the interface consistent, and allow mixing */
19362 +/* of compilers. */
19363 +/* This may also be desirable if it is possible but expensive to */
19364 +/* retrieve the call chain. */
19365 +#if (defined(__linux__) || defined(__NetBSD__) || defined(__OpenBSD__) \
19366 + || defined(__FreeBSD__)) & !defined(GC_CAN_SAVE_CALL_STACKS)
19367 +# define GC_ADD_CALLER
19368 +# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
19369 + /* gcc knows how to retrieve return address, but we don't know */
19370 + /* how to generate call stacks. */
19371 +# define GC_RETURN_ADDR (GC_word)__builtin_return_address(0)
19373 + /* Just pass 0 for gcc compatibility. */
19374 +# define GC_RETURN_ADDR 0
19378 #ifdef GC_ADD_CALLER
19379 # define GC_EXTRAS GC_RETURN_ADDR, __FILE__, __LINE__
19380 # define GC_EXTRA_PARAMS GC_word ra, GC_CONST char * s, int i
19381 @@ -536,18 +511,42 @@
19382 GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS));
19383 GC_API GC_PTR GC_debug_malloc_stubborn
19384 GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS));
19385 +GC_API GC_PTR GC_debug_malloc_ignore_off_page
19386 + GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS));
19387 +GC_API GC_PTR GC_debug_malloc_atomic_ignore_off_page
19388 + GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS));
19389 GC_API void GC_debug_free GC_PROTO((GC_PTR object_addr));
19390 GC_API GC_PTR GC_debug_realloc
19391 GC_PROTO((GC_PTR old_object, size_t new_size_in_bytes,
19394 GC_API void GC_debug_change_stubborn GC_PROTO((GC_PTR));
19395 GC_API void GC_debug_end_stubborn_change GC_PROTO((GC_PTR));
19397 +/* Routines that allocate objects with debug information (like the */
19398 +/* above), but just fill in dummy file and line number information. */
19399 +/* Thus they can serve as drop-in malloc/realloc replacements. This */
19400 +/* can be useful for two reasons: */
19401 +/* 1) It allows the collector to be built with DBG_HDRS_ALL defined */
19402 +/* even if some allocation calls come from 3rd party libraries */
19403 +/* that can't be recompiled. */
19404 +/* 2) On some platforms, the file and line information is redundant, */
19405 +/* since it can be reconstructed from a stack trace. On such */
19406 +/* platforms it may be more convenient not to recompile, e.g. for */
19407 +/* leak detection. This can be accomplished by instructing the */
19408 +/* linker to replace malloc/realloc with these. */
19409 +GC_API GC_PTR GC_debug_malloc_replacement GC_PROTO((size_t size_in_bytes));
19410 +GC_API GC_PTR GC_debug_realloc_replacement
19411 + GC_PROTO((GC_PTR object_addr, size_t size_in_bytes));
19414 # define GC_MALLOC(sz) GC_debug_malloc(sz, GC_EXTRAS)
19415 # define GC_MALLOC_ATOMIC(sz) GC_debug_malloc_atomic(sz, GC_EXTRAS)
19416 -# define GC_MALLOC_UNCOLLECTABLE(sz) GC_debug_malloc_uncollectable(sz, \
19418 +# define GC_MALLOC_UNCOLLECTABLE(sz) \
19419 + GC_debug_malloc_uncollectable(sz, GC_EXTRAS)
19420 +# define GC_MALLOC_IGNORE_OFF_PAGE(sz) \
19421 + GC_debug_malloc_ignore_off_page(sz, GC_EXTRAS)
19422 +# define GC_MALLOC_ATOMIC_IGNORE_OFF_PAGE(sz) \
19423 + GC_debug_malloc_atomic_ignore_off_page(sz, GC_EXTRAS)
19424 # define GC_REALLOC(old, sz) GC_debug_realloc(old, sz, GC_EXTRAS)
19425 # define GC_FREE(p) GC_debug_free(p)
19426 # define GC_REGISTER_FINALIZER(p, f, d, of, od) \
19427 @@ -566,6 +565,10 @@
19428 # define GC_MALLOC(sz) GC_malloc(sz)
19429 # define GC_MALLOC_ATOMIC(sz) GC_malloc_atomic(sz)
19430 # define GC_MALLOC_UNCOLLECTABLE(sz) GC_malloc_uncollectable(sz)
19431 +# define GC_MALLOC_IGNORE_OFF_PAGE(sz) \
19432 + GC_malloc_ignore_off_page(sz)
19433 +# define GC_MALLOC_ATOMIC_IGNORE_OFF_PAGE(sz) \
19434 + GC_malloc_atomic_ignore_off_page(sz)
19435 # define GC_REALLOC(old, sz) GC_realloc(old, sz)
19436 # define GC_FREE(p) GC_free(p)
19437 # define GC_REGISTER_FINALIZER(p, f, d, of, od) \
19438 @@ -644,7 +647,8 @@
19439 /* itself. There is a stylistic argument that this is wrong, */
19440 /* but it's unavoidable for C++, since the compiler may */
19441 /* silently introduce these. It's also benign in that specific */
19443 +/* case. And it helps if finalizable objects are split to */
19444 +/* avoid cycles. */
19445 /* Note that cd will still be viewed as accessible, even if it */
19446 /* refers to the object itself. */
19447 GC_API void GC_register_finalizer_ignore_self
19448 @@ -717,11 +721,6 @@
19449 /* Undoes a registration by either of the above two */
19452 -/* Auxiliary fns to make finalization work correctly with displaced */
19453 -/* pointers introduced by the debugging allocators. */
19454 -GC_API GC_PTR GC_make_closure GC_PROTO((GC_finalization_proc fn, GC_PTR data));
19455 -GC_API void GC_debug_invoke_finalizer GC_PROTO((GC_PTR obj, GC_PTR data));
19457 /* Returns !=0 if GC_invoke_finalizers has something to do. */
19458 GC_API int GC_should_invoke_finalizers GC_PROTO((void));
19460 @@ -739,6 +738,10 @@
19461 GC_API GC_warn_proc GC_set_warn_proc GC_PROTO((GC_warn_proc p));
19462 /* Returns old warning procedure. */
19464 +GC_API GC_word GC_set_free_space_divisor GC_PROTO((GC_word value));
19465 + /* Set free_space_divisor. See above for definition. */
19466 + /* Returns old value. */
19468 /* The following is intended to be used by a higher level */
19469 /* (e.g. Java-like) finalization facility. It is expected */
19470 /* that finalization code will arrange for hidden pointers to */
19471 @@ -875,12 +878,16 @@
19473 #if defined(GC_WIN32_THREADS)
19474 # include <windows.h>
19475 +# include <winbase.h>
19478 * All threads must be created using GC_CreateThread, so that they will be
19479 - * recorded in the thread table.
19480 + * recorded in the thread table. For backwards compatibility, this is not
19481 + * technically true if the GC is built as a dynamic library, since it can
19482 + * and does then use DllMain to keep track of thread creations. But new code
19483 + * should be built to call GC_CreateThread.
19485 - HANDLE WINAPI GC_CreateThread(
19486 + GC_API HANDLE GC_CreateThread(
19487 LPSECURITY_ATTRIBUTES lpThreadAttributes,
19488 DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress,
19489 LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId );
19490 @@ -914,13 +921,18 @@
19491 # define GC_INIT() { extern end, etext; \
19492 GC_noop(&end, &etext); }
19494 -# if (defined(__CYGWIN32__) && defined(GC_USE_DLL)) || defined (_AIX)
19495 +# if defined(__CYGWIN32__) && defined(GC_DLL) || defined (_AIX)
19497 - * Similarly gnu-win32 DLLs need explicit initialization
19498 + * Similarly gnu-win32 DLLs need explicit initialization from
19499 + * the main program, as does AIX.
19501 # define GC_INIT() { GC_add_roots(DATASTART, DATAEND); }
19503 +# if defined(__APPLE__) && defined(__MACH__)
19504 +# define GC_INIT() { GC_init(); }
19511 diff -urNb boehm-gc/include/gc_allocator.h boehm-gc/include/gc_allocator.h
19512 --- boehm-gc/include/gc_allocator.h Wed Dec 31 16:00:00 1969
19513 +++ boehm-gc/include/gc_allocator.h Mon May 26 13:28:19 2003
19516 + * Copyright (c) 1996-1997
19517 + * Silicon Graphics Computer Systems, Inc.
19519 + * Permission to use, copy, modify, distribute and sell this software
19520 + * and its documentation for any purpose is hereby granted without fee,
19521 + * provided that the above copyright notice appear in all copies and
19522 + * that both that copyright notice and this permission notice appear
19523 + * in supporting documentation. Silicon Graphics makes no
19524 + * representations about the suitability of this software for any
19525 + * purpose. It is provided "as is" without express or implied warranty.
19527 + * Copyright (c) 2002
19528 + * Hewlett-Packard Company
19530 + * Permission to use, copy, modify, distribute and sell this software
19531 + * and its documentation for any purpose is hereby granted without fee,
19532 + * provided that the above copyright notice appear in all copies and
19533 + * that both that copyright notice and this permission notice appear
19534 + * in supporting documentation. Hewlett-Packard Company makes no
19535 + * representations about the suitability of this software for any
19536 + * purpose. It is provided "as is" without express or implied warranty.
19540 + * This implements standard-conforming allocators that interact with
19541 + * the garbage collector. Gc_alloctor<T> allocates garbage-collectable
19542 + * objects of type T. Traceable_allocator<T> allocates objects that
19543 + * are not temselves garbage collected, but are scanned by the
19544 + * collector for pointers to collectable objects. Traceable_alloc
19545 + * should be used for explicitly managed STL containers that may
19546 + * point to collectable objects.
19548 + * This code was derived from an earlier version of the GNU C++ standard
19549 + * library, which itself was derived from the SGI STL implementation.
19552 +#include "gc.h" // For size_t
19554 +/* First some helpers to allow us to dispatch on whether or not a type
19555 + * is known to be pointerfree.
19556 + * These are private, except that the client may invoke the
19557 + * GC_DECLARE_PTRFREE macro.
19560 +struct GC_true_type {};
19561 +struct GC_false_type {};
19563 +template <class GC_tp>
19564 +struct GC_type_traits {
19565 + GC_false_type GC_is_ptr_free;
19568 +# define GC_DECLARE_PTRFREE(T) \
19569 +template<> struct GC_type_traits<T> { GC_true_type GC_is_ptr_free; }
19571 +GC_DECLARE_PTRFREE(signed char);
19572 +GC_DECLARE_PTRFREE(unsigned char);
19573 +GC_DECLARE_PTRFREE(signed short);
19574 +GC_DECLARE_PTRFREE(unsigned short);
19575 +GC_DECLARE_PTRFREE(signed int);
19576 +GC_DECLARE_PTRFREE(unsigned int);
19577 +GC_DECLARE_PTRFREE(signed long);
19578 +GC_DECLARE_PTRFREE(unsigned long);
19579 +GC_DECLARE_PTRFREE(float);
19580 +GC_DECLARE_PTRFREE(double);
19581 +/* The client may want to add others. */
19583 +// In the following GC_Tp is GC_true_type iff we are allocating a
19584 +// pointerfree object.
19585 +template <class GC_Tp>
19586 +inline void * GC_selective_alloc(size_t n, GC_Tp) {
19587 + return GC_MALLOC(n);
19591 +inline void * GC_selective_alloc<GC_true_type>(size_t n, GC_true_type) {
19592 + return GC_MALLOC_ATOMIC(n);
19595 +/* Now the public gc_allocator<T> class:
19597 +template <class GC_Tp>
19598 +class gc_allocator {
19600 + typedef size_t size_type;
19601 + typedef ptrdiff_t difference_type;
19602 + typedef GC_Tp* pointer;
19603 + typedef const GC_Tp* const_pointer;
19604 + typedef GC_Tp& reference;
19605 + typedef const GC_Tp& const_reference;
19606 + typedef GC_Tp value_type;
19608 + template <class GC_Tp1> struct rebind {
19609 + typedef gc_allocator<GC_Tp1> other;
19612 + gc_allocator() {}
19614 + // I'm not sure why this is needed here in addition to the following.
19615 + // The standard specifies it for the standard allocator, but VC++ rejects
19617 + gc_allocator(const gc_allocator&) throw() {}
19619 + template <class GC_Tp1> gc_allocator(const gc_allocator<GC_Tp1>&) throw() {}
19620 + ~gc_allocator() throw() {}
19622 + pointer address(reference GC_x) const { return &GC_x; }
19623 + const_pointer address(const_reference GC_x) const { return &GC_x; }
19625 + // GC_n is permitted to be 0. The C++ standard says nothing about what
19626 + // the return value is when GC_n == 0.
19627 + GC_Tp* allocate(size_type GC_n, const void* = 0) {
19628 + GC_type_traits<GC_Tp> traits;
19629 + return static_cast<GC_Tp *>
19630 + (GC_selective_alloc(GC_n * sizeof(GC_Tp),
19631 + traits.GC_is_ptr_free));
19634 + // __p is not permitted to be a null pointer.
19635 + void deallocate(pointer __p, size_type GC_n)
19636 + { GC_FREE(__p); }
19638 + size_type max_size() const throw()
19639 + { return size_t(-1) / sizeof(GC_Tp); }
19641 + void construct(pointer __p, const GC_Tp& __val) { new(__p) GC_Tp(__val); }
19642 + void destroy(pointer __p) { __p->~GC_Tp(); }
19646 +class gc_allocator<void> {
19647 + typedef size_t size_type;
19648 + typedef ptrdiff_t difference_type;
19649 + typedef void* pointer;
19650 + typedef const void* const_pointer;
19651 + typedef void value_type;
19653 + template <class GC_Tp1> struct rebind {
19654 + typedef gc_allocator<GC_Tp1> other;
19659 +template <class GC_T1, class GC_T2>
19660 +inline bool operator==(const gc_allocator<GC_T1>&, const gc_allocator<GC_T2>&)
19665 +template <class GC_T1, class GC_T2>
19666 +inline bool operator!=(const gc_allocator<GC_T1>&, const gc_allocator<GC_T2>&)
19672 + * And the public traceable_allocator class.
19675 +// Note that we currently don't specialize the pointer-free case, since a
19676 +// pointer-free traceable container doesn't make that much sense,
19677 +// though it could become an issue due to abstraction boundaries.
19678 +template <class GC_Tp>
19679 +class traceable_allocator {
19681 + typedef size_t size_type;
19682 + typedef ptrdiff_t difference_type;
19683 + typedef GC_Tp* pointer;
19684 + typedef const GC_Tp* const_pointer;
19685 + typedef GC_Tp& reference;
19686 + typedef const GC_Tp& const_reference;
19687 + typedef GC_Tp value_type;
19689 + template <class GC_Tp1> struct rebind {
19690 + typedef traceable_allocator<GC_Tp1> other;
19693 + traceable_allocator() throw() {}
19695 + traceable_allocator(const traceable_allocator&) throw() {}
19697 + template <class GC_Tp1> traceable_allocator
19698 + (const traceable_allocator<GC_Tp1>&) throw() {}
19699 + ~traceable_allocator() throw() {}
19701 + pointer address(reference GC_x) const { return &GC_x; }
19702 + const_pointer address(const_reference GC_x) const { return &GC_x; }
19704 + // GC_n is permitted to be 0. The C++ standard says nothing about what
19705 + // the return value is when GC_n == 0.
19706 + GC_Tp* allocate(size_type GC_n, const void* = 0) {
19707 + return static_cast<GC_Tp*>(GC_MALLOC_UNCOLLECTABLE(GC_n * sizeof(GC_Tp)));
19710 + // __p is not permitted to be a null pointer.
19711 + void deallocate(pointer __p, size_type GC_n)
19712 + { GC_FREE(__p); }
19714 + size_type max_size() const throw()
19715 + { return size_t(-1) / sizeof(GC_Tp); }
19717 + void construct(pointer __p, const GC_Tp& __val) { new(__p) GC_Tp(__val); }
19718 + void destroy(pointer __p) { __p->~GC_Tp(); }
19722 +class traceable_allocator<void> {
19723 + typedef size_t size_type;
19724 + typedef ptrdiff_t difference_type;
19725 + typedef void* pointer;
19726 + typedef const void* const_pointer;
19727 + typedef void value_type;
19729 + template <class GC_Tp1> struct rebind {
19730 + typedef traceable_allocator<GC_Tp1> other;
19735 +template <class GC_T1, class GC_T2>
19736 +inline bool operator==(const traceable_allocator<GC_T1>&, const traceable_allocator<GC_T2>&)
19741 +template <class GC_T1, class GC_T2>
19742 +inline bool operator!=(const traceable_allocator<GC_T1>&, const traceable_allocator<GC_T2>&)
19747 diff -urNb boehm-gc/include/gc_config_macros.h boehm-gc/include/gc_config_macros.h
19748 --- boehm-gc/include/gc_config_macros.h Wed Dec 31 16:00:00 1969
19749 +++ boehm-gc/include/gc_config_macros.h Mon May 26 13:28:19 2003
19752 + * This should never be included directly. It is included only from gc.h.
19753 + * We separate it only to make gc.h more suitable as documentation.
19755 + * Some tests for old macros. These violate our namespace rules and will
19756 + * disappear shortly. Use the GC_ names.
19758 +#if defined(SOLARIS_THREADS) || defined(_SOLARIS_THREADS)
19759 +# define GC_SOLARIS_THREADS
19761 +#if defined(_SOLARIS_PTHREADS)
19762 +# define GC_SOLARIS_PTHREADS
19764 +#if defined(IRIX_THREADS)
19765 +# define GC_IRIX_THREADS
19767 +#if defined(DGUX_THREADS)
19768 +# if !defined(GC_DGUX386_THREADS)
19769 +# define GC_DGUX386_THREADS
19772 +#if defined(HPUX_THREADS)
19773 +# define GC_HPUX_THREADS
19775 +#if defined(OSF1_THREADS)
19776 +# define GC_OSF1_THREADS
19778 +#if defined(LINUX_THREADS)
19779 +# define GC_LINUX_THREADS
19781 +#if defined(WIN32_THREADS)
19782 +# define GC_WIN32_THREADS
19784 +#if defined(USE_LD_WRAP)
19785 +# define GC_USE_LD_WRAP
19788 +#if !defined(_REENTRANT) && (defined(GC_SOLARIS_THREADS) \
19789 + || defined(GC_SOLARIS_PTHREADS) \
19790 + || defined(GC_HPUX_THREADS) \
19791 + || defined(GC_LINUX_THREADS))
19792 +# define _REENTRANT
19793 + /* Better late than never. This fails if system headers that */
19794 + /* depend on this were previously included. */
19797 +#if defined(GC_DGUX386_THREADS) && !defined(_POSIX4A_DRAFT10_SOURCE)
19798 +# define _POSIX4A_DRAFT10_SOURCE 1
19801 +# if defined(GC_SOLARIS_PTHREADS) || defined(GC_FREEBSD_THREADS) || \
19802 + defined(GC_IRIX_THREADS) || defined(GC_LINUX_THREADS) || \
19803 + defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) || \
19804 + defined(GC_DGUX386_THREADS) || defined(GC_DARWIN_THREADS) || \
19805 + (defined(GC_WIN32_THREADS) && defined(__CYGWIN32__))
19806 +# define GC_PTHREADS
19809 +#if defined(GC_THREADS) && !defined(GC_PTHREADS)
19810 +# if defined(__linux__)
19811 +# define GC_LINUX_THREADS
19812 +# define GC_PTHREADS
19814 +# if !defined(LINUX) && (defined(_PA_RISC1_1) || defined(_PA_RISC2_0) \
19815 + || defined(hppa) || defined(__HPPA))
19816 +# define GC_HPUX_THREADS
19817 +# define GC_PTHREADS
19819 +# if !defined(__linux__) && (defined(__alpha) || defined(__alpha__))
19820 +# define GC_OSF1_THREADS
19821 +# define GC_PTHREADS
19823 +# if defined(__mips) && !defined(__linux__)
19824 +# define GC_IRIX_THREADS
19825 +# define GC_PTHREADS
19827 +# if defined(__sparc) && !defined(__linux__)
19828 +# define GC_SOLARIS_PTHREADS
19829 +# define GC_PTHREADS
19831 +# if defined(__APPLE__) && defined(__MACH__) && defined(__ppc__)
19832 +# define GC_DARWIN_THREADS
19833 +# define GC_PTHREADS
19835 +# if !defined(GC_PTHREADS) && defined(__FreeBSD__)
19836 +# define GC_FREEBSD_THREADS
19837 +# define GC_PTHREADS
19839 +# if defined(DGUX) && (defined(i386) || defined(__i386__))
19840 +# define GC_DGUX386_THREADS
19841 +# define GC_PTHREADS
19843 +#endif /* GC_THREADS */
19845 +#if defined(GC_THREADS) && !defined(GC_PTHREADS) && defined(MSWIN32)
19846 +# define GC_WIN32_THREADS
19849 +#if defined(GC_SOLARIS_PTHREADS) && !defined(GC_SOLARIS_THREADS)
19850 +# define GC_SOLARIS_THREADS
19854 +# include <stddef.h>
19855 +# ifdef _WIN32_WCE
19856 +/* Yet more kluges for WinCE */
19857 +# include <stdlib.h> /* size_t is defined here */
19858 + typedef long ptrdiff_t; /* ptrdiff_t is not defined */
19861 +#if defined(_DLL) && !defined(GC_NOT_DLL) && !defined(GC_DLL)
19865 +#if defined(__MINGW32__) && defined(GC_DLL)
19867 +# define GC_API __declspec(dllexport)
19869 +# define GC_API __declspec(dllimport)
19873 +#if (defined(__DMC__) || defined(_MSC_VER)) && defined(GC_DLL)
19875 +# define GC_API extern __declspec(dllexport)
19877 +# define GC_API __declspec(dllimport)
19881 +#if defined(__WATCOMC__) && defined(GC_DLL)
19883 +# define GC_API extern __declspec(dllexport)
19885 +# define GC_API extern __declspec(dllimport)
19890 +#define GC_API extern
19893 diff -urNb boehm-gc/include/gc_cpp.h boehm-gc/include/gc_cpp.h
19894 --- boehm-gc/include/gc_cpp.h Fri Aug 17 18:04:43 2001
19895 +++ boehm-gc/include/gc_cpp.h Mon May 26 13:28:19 2003
19896 @@ -134,7 +134,9 @@
19899 #ifndef THINK_CPLUS
19903 +# define GC_cdecl _cdecl
19906 #if ! defined( GC_NO_OPERATOR_NEW_ARRAY ) \
19907 @@ -159,12 +161,22 @@
19909 inline void* operator new( size_t size );
19910 inline void* operator new( size_t size, GCPlacement gcp );
19911 + inline void* operator new( size_t size, void *p );
19912 + /* Must be redefined here, since the other overloadings */
19913 + /* hide the global definition. */
19914 inline void operator delete( void* obj );
19915 +# ifndef __BORLANDC__ /* Confuses the Borland compiler. */
19916 + inline void operator delete( void*, void* );
19919 #ifdef GC_OPERATOR_NEW_ARRAY
19920 inline void* operator new[]( size_t size );
19921 inline void* operator new[]( size_t size, GCPlacement gcp );
19922 + inline void* operator new[]( size_t size, void *p );
19923 inline void operator delete[]( void* obj );
19924 +# ifndef __BORLANDC__
19925 + inline void gc::operator delete[]( void*, void* );
19927 #endif /* GC_OPERATOR_NEW_ARRAY */
19930 @@ -176,7 +188,7 @@
19931 inline gc_cleanup();
19932 inline virtual ~gc_cleanup();
19934 - inline static void _cdecl cleanup( void* obj, void* clientData );};
19935 + inline static void GC_cdecl cleanup( void* obj, void* clientData );};
19937 Instances of classes derived from "gc_cleanup" will be allocated
19938 in the collected heap by default. When the collector discovers an
19939 @@ -211,7 +223,6 @@
19940 classes derived from "gc_cleanup" or containing members derived
19941 from "gc_cleanup". */
19943 -#ifdef GC_OPERATOR_NEW_ARRAY
19946 /** This ensures that the system default operator new[] doesn't get
19947 @@ -220,42 +231,24 @@
19948 * There seems to be really redirect new in this environment without
19949 * including this everywhere.
19951 - inline void *operator new[]( size_t size )
19953 - return GC_MALLOC_UNCOLLECTABLE( size );
19956 - inline void operator delete[](void* obj)
19960 + void *operator new[]( size_t size );
19962 - inline void* operator new( size_t size)
19964 - return GC_MALLOC_UNCOLLECTABLE( size);
19966 + void operator delete[](void* obj);
19968 - inline void operator delete(void* obj)
19972 + void* operator new( size_t size);
19974 + void operator delete(void* obj);
19976 -// This new operator is used by VC++ in case of Debug builds !
19977 - inline void* operator new( size_t size,
19978 + // This new operator is used by VC++ in case of Debug builds !
19979 + void* operator new( size_t size,
19981 const char * szFileName,
19985 - return GC_malloc_uncollectable( size );
19987 - return GC_debug_malloc_uncollectable(size, szFileName, nLine);
19992 #endif /* _MSC_VER */
19995 +#ifdef GC_OPERATOR_NEW_ARRAY
19997 inline void* operator new[](
20000 @@ -283,9 +276,15 @@
20002 return GC_MALLOC_UNCOLLECTABLE( size );}
20004 +inline void* gc::operator new( size_t size, void *p ) {
20007 inline void gc::operator delete( void* obj ) {
20010 +#ifndef __BORLANDC__
20011 + inline void gc::operator delete( void*, void* ) {}
20014 #ifdef GC_OPERATOR_NEW_ARRAY
20016 @@ -295,14 +294,21 @@
20017 inline void* gc::operator new[]( size_t size, GCPlacement gcp ) {
20018 return gc::operator new( size, gcp );}
20020 +inline void* gc::operator new[]( size_t size, void *p ) {
20023 inline void gc::operator delete[]( void* obj ) {
20024 gc::operator delete( obj );}
20026 +#ifndef __BORLANDC__
20027 + inline void gc::operator delete[]( void*, void* ) {}
20030 #endif /* GC_OPERATOR_NEW_ARRAY */
20033 inline gc_cleanup::~gc_cleanup() {
20034 - GC_REGISTER_FINALIZER_IGNORE_SELF( GC_base(this), 0, 0, 0, 0 );}
20035 + GC_register_finalizer_ignore_self( GC_base(this), 0, 0, 0, 0 );}
20037 inline void gc_cleanup::cleanup( void* obj, void* displ ) {
20038 ((gc_cleanup*) ((char*) obj + (ptrdiff_t) displ))->~gc_cleanup();}
20039 diff -urNb boehm-gc/include/gc_local_alloc.h boehm-gc/include/gc_local_alloc.h
20040 --- boehm-gc/include/gc_local_alloc.h Fri Aug 17 11:30:50 2001
20041 +++ boehm-gc/include/gc_local_alloc.h Mon May 26 13:28:19 2003
20043 * -DTHREAD_LOCAL_ALLOC, which is currently supported only on Linux.
20045 * The debugging allocators use standard, not thread-local allocation.
20047 + * These routines normally require an explicit call to GC_init(), though
20048 + * that may be done from a constructor function.
20051 #ifndef GC_LOCAL_ALLOC_H
20052 diff -urNb boehm-gc/include/gc_mark.h boehm-gc/include/gc_mark.h
20053 --- boehm-gc/include/gc_mark.h Fri Aug 17 11:30:50 2001
20054 +++ boehm-gc/include/gc_mark.h Mon May 26 13:28:19 2003
20055 @@ -129,7 +129,9 @@
20056 /* be reserved for exceptional cases. That will ensure that */
20057 /* performance of this call is not extremely performance critical. */
20058 /* (Otherwise we would need to inline GC_mark_and_push completely, */
20059 -/* which would tie the client code to a fixed colllector version.) */
20060 +/* which would tie the client code to a fixed collector version.) */
20061 +/* Note that mark procedures should explicitly call FIXUP_POINTER() */
20062 +/* if required. */
20063 struct GC_ms_entry *GC_mark_and_push
20064 GC_PROTO((GC_PTR obj,
20065 struct GC_ms_entry * mark_stack_ptr,
20066 diff -urNb boehm-gc/include/gc_pthread_redirects.h boehm-gc/include/gc_pthread_redirects.h
20067 --- boehm-gc/include/gc_pthread_redirects.h Tue Oct 16 21:55:28 2001
20068 +++ boehm-gc/include/gc_pthread_redirects.h Mon May 26 13:28:19 2003
20069 @@ -52,15 +52,21 @@
20070 int GC_pthread_create(pthread_t *new_thread,
20071 const pthread_attr_t *attr,
20072 void *(*start_routine)(void *), void *arg);
20073 +#ifndef GC_DARWIN_THREADS
20074 int GC_pthread_sigmask(int how, const sigset_t *set, sigset_t *oset);
20076 int GC_pthread_join(pthread_t thread, void **retval);
20077 int GC_pthread_detach(pthread_t thread);
20079 # define pthread_create GC_pthread_create
20080 +#ifndef GC_DARWIN_THREADS
20081 # define pthread_sigmask GC_pthread_sigmask
20083 # define pthread_join GC_pthread_join
20084 # define pthread_detach GC_pthread_detach
20085 +#ifndef GC_DARWIN_THREADS
20086 # define dlopen GC_dlopen
20089 #endif /* GC_xxxxx_THREADS */
20091 diff -urNb boehm-gc/include/gc_typed.h boehm-gc/include/gc_typed.h
20092 --- boehm-gc/include/gc_typed.h Fri Aug 17 11:30:50 2001
20093 +++ boehm-gc/include/gc_typed.h Mon May 26 13:28:19 2003
20094 @@ -29,14 +29,21 @@
20098 +#ifdef __cplusplus
20101 typedef GC_word * GC_bitmap;
20102 /* The least significant bit of the first word is one if */
20103 /* the first word in the object may be a pointer. */
20105 +# define GC_WORDSZ (8*sizeof(GC_word))
20106 # define GC_get_bit(bm, index) \
20107 - (((bm)[divWORDSZ(index)] >> modWORDSZ(index)) & 1)
20108 + (((bm)[index/GC_WORDSZ] >> (index%GC_WORDSZ)) & 1)
20109 # define GC_set_bit(bm, index) \
20110 - (bm)[divWORDSZ(index)] |= (word)1 << modWORDSZ(index)
20111 + (bm)[index/GC_WORDSZ] |= ((GC_word)1 << (index%GC_WORDSZ))
20112 +# define GC_WORD_OFFSET(t, f) (offsetof(t,f)/sizeof(GC_word))
20113 +# define GC_WORD_LEN(t) (sizeof(t)/ sizeof(GC_word))
20114 +# define GC_BITMAP_SIZE(t) ((GC_WORD_LEN(t) + GC_WORDSZ-1)/GC_WORDSZ)
20116 typedef GC_word GC_descr;
20119 /* is intended to be called once per type, not once */
20120 /* per allocation. */
20122 +/* It is possible to generate a descriptor for a C type T with */
20123 +/* word aligned pointer fields f1, f2, ... as follows: */
20125 +/* GC_descr T_descr;
20126 +/* GC_word T_bitmap[GC_BITMAP_SIZE(T)] = {0}; */
20127 +/* GC_set_bit(T_bitmap, GC_WORD_OFFSET(T,f1)); */
20128 +/* GC_set_bit(T_bitmap, GC_WORD_OFFSET(T,f2)); */
20130 +/* T_descr = GC_make_descriptor(T_bitmap, GC_WORD_LEN(T)); */
20132 GC_API GC_PTR GC_malloc_explicitly_typed
20133 GC_PROTO((size_t size_in_bytes, GC_descr d));
20134 /* Allocate an object whose layout is described by d. */
20135 @@ -79,15 +96,18 @@
20136 /* Returned object is cleared. */
20139 -# define GC_MALLOC_EXPLICTLY_TYPED(bytes, d) GC_MALLOC(bytes)
20140 -# define GC_CALLOC_EXPLICTLY_TYPED(n, bytes, d) GC_MALLOC(n*bytes)
20141 +# define GC_MALLOC_EXPLICITLY_TYPED(bytes, d) GC_MALLOC(bytes)
20142 +# define GC_CALLOC_EXPLICITLY_TYPED(n, bytes, d) GC_MALLOC(n*bytes)
20144 -# define GC_MALLOC_EXPLICTLY_TYPED(bytes, d) \
20145 +# define GC_MALLOC_EXPLICITLY_TYPED(bytes, d) \
20146 GC_malloc_explicitly_typed(bytes, d)
20147 -# define GC_CALLOC_EXPLICTLY_TYPED(n, bytes, d) \
20148 +# define GC_CALLOC_EXPLICITLY_TYPED(n, bytes, d) \
20149 GC_calloc_explicitly_typed(n, bytes, d)
20150 #endif /* !GC_DEBUG */
20152 +#ifdef __cplusplus
20153 + } /* matches extern "C" */
20156 #endif /* _GC_TYPED_H */
20158 diff -urNb boehm-gc/include/new_gc_alloc.h boehm-gc/include/new_gc_alloc.h
20159 --- boehm-gc/include/new_gc_alloc.h Tue Oct 16 02:01:38 2001
20160 +++ boehm-gc/include/new_gc_alloc.h Mon May 26 13:28:19 2003
20165 +/* A hack to deal with gcc 3.1. If you are using gcc3.1 and later, */
20166 +/* you should probably really use gc_allocator.h instead. */
20167 +#if defined (__GNUC__) && \
20168 + (__GNUC > 3 || (__GNUC__ == 3 && (__GNUC_MINOR__ >= 1)))
20169 +# define simple_alloc __simple_alloc
20176 diff -urNb boehm-gc/include/private/darwin_semaphore.h boehm-gc/include/private/darwin_semaphore.h
20177 --- boehm-gc/include/private/darwin_semaphore.h Wed Dec 31 16:00:00 1969
20178 +++ boehm-gc/include/private/darwin_semaphore.h Mon May 26 13:28:24 2003
20180 +#ifndef GC_DARWIN_SEMAPHORE_H
20181 +#define GC_DARWIN_SEMAPHORE_H
20183 +#if !defined(GC_DARWIN_THREADS)
20184 +#error darwin_semaphore.h included with GC_DARWIN_THREADS not defined
20188 + This is a very simple semaphore implementation for darwin. It
20189 + is implemented in terms of pthreads calls so it isn't async signal
20190 + safe. This isn't a problem because signals aren't used to
20191 + suspend threads on darwin.
20195 + pthread_mutex_t mutex;
20196 + pthread_cond_t cond;
20200 +static int sem_init(sem_t *sem, int pshared, int value) {
20203 + GC_abort("sem_init with pshared set");
20204 + sem->value = value;
20206 + ret = pthread_mutex_init(&sem->mutex,NULL);
20207 + if(ret < 0) return -1;
20208 + ret = pthread_cond_init(&sem->cond,NULL);
20209 + if(ret < 0) return -1;
20213 +static int sem_post(sem_t *sem) {
20214 + if(pthread_mutex_lock(&sem->mutex) < 0)
20217 + if(pthread_cond_signal(&sem->cond) < 0) {
20218 + pthread_mutex_unlock(&sem->mutex);
20221 + if(pthread_mutex_unlock(&sem->mutex) < 0)
20226 +static int sem_wait(sem_t *sem) {
20227 + if(pthread_mutex_lock(&sem->mutex) < 0)
20229 + while(sem->value == 0) {
20230 + pthread_cond_wait(&sem->cond,&sem->mutex);
20233 + if(pthread_mutex_unlock(&sem->mutex) < 0)
20238 +static int sem_destroy(sem_t *sem) {
20240 + ret = pthread_cond_destroy(&sem->cond);
20241 + if(ret < 0) return -1;
20242 + ret = pthread_mutex_destroy(&sem->mutex);
20243 + if(ret < 0) return -1;
20248 diff -urNb boehm-gc/include/private/darwin_stop_world.h boehm-gc/include/private/darwin_stop_world.h
20249 --- boehm-gc/include/private/darwin_stop_world.h Wed Dec 31 16:00:00 1969
20250 +++ boehm-gc/include/private/darwin_stop_world.h Mon May 26 13:28:24 2003
20252 +#ifndef GC_DARWIN_STOP_WORLD_H
20253 +#define GC_DARWIN_STOP_WORLD_H
20255 +#if !defined(GC_DARWIN_THREADS)
20256 +#error darwin_stop_world.h included without GC_DARWIN_THREADS defined
20259 +#include <mach/mach.h>
20260 +#include <mach/thread_act.h>
20262 +struct thread_stop_info {
20263 + mach_port_t mach_thread;
20267 diff -urNb boehm-gc/include/private/dbg_mlc.h boehm-gc/include/private/dbg_mlc.h
20268 --- boehm-gc/include/private/dbg_mlc.h Mon Feb 11 20:37:57 2002
20269 +++ boehm-gc/include/private/dbg_mlc.h Mon May 26 13:28:24 2003
20270 @@ -115,16 +115,24 @@
20272 #ifdef SHORT_DBG_HDRS
20273 # define DEBUG_BYTES (sizeof (oh))
20274 +# define UNCOLLECTABLE_DEBUG_BYTES DEBUG_BYTES
20276 /* Add space for END_FLAG, but use any extra space that was already */
20277 /* added to catch off-the-end pointers. */
20278 -# define DEBUG_BYTES (sizeof (oh) + sizeof (word) - EXTRA_BYTES)
20279 + /* For uncollectable objects, the extra byte is not added. */
20280 +# define UNCOLLECTABLE_DEBUG_BYTES (sizeof (oh) + sizeof (word))
20281 +# define DEBUG_BYTES (UNCOLLECTABLE_DEBUG_BYTES - EXTRA_BYTES)
20283 #define USR_PTR_FROM_BASE(p) ((ptr_t)(p) + sizeof(oh))
20285 /* Round bytes to words without adding extra byte at end. */
20286 #define SIMPLE_ROUNDED_UP_WORDS(n) BYTES_TO_WORDS((n) + WORDS_TO_BYTES(1) - 1)
20288 +/* ADD_CALL_CHAIN stores a (partial) call chain into an object */
20289 +/* header. It may be called with or without the allocation */
20291 +/* PRINT_CALL_CHAIN prints the call chain stored in an object */
20292 +/* to stderr. It requires that we do not hold the lock. */
20293 #ifdef SAVE_CALL_CHAIN
20294 # define ADD_CALL_CHAIN(base, ra) GC_save_callers(((oh *)(base)) -> oh_ci)
20295 # define PRINT_CALL_CHAIN(base) GC_print_callers(((oh *)(base)) -> oh_ci)
20296 diff -urNb boehm-gc/include/private/gc_hdrs.h boehm-gc/include/private/gc_hdrs.h
20297 --- boehm-gc/include/private/gc_hdrs.h Fri Aug 17 18:04:43 2001
20298 +++ boehm-gc/include/private/gc_hdrs.h Mon May 26 13:28:24 2003
20300 #define ADVANCE(p, hhdr, source) \
20302 hdr * new_hdr = GC_invalid_header; \
20303 - p = GC_FIND_START(p, hhdr, &new_hdr, (word)source); \
20304 + p = GC_find_start(p, hhdr, &new_hdr); \
20308 diff -urNb boehm-gc/include/private/gc_locks.h boehm-gc/include/private/gc_locks.h
20309 --- boehm-gc/include/private/gc_locks.h Fri Sep 27 13:40:06 2002
20310 +++ boehm-gc/include/private/gc_locks.h Mon May 26 13:28:24 2003
20311 @@ -145,23 +145,24 @@
20312 # if defined(POWERPC)
20313 inline static int GC_test_and_set(volatile unsigned int *addr) {
20315 - int temp = 1; // locked value
20316 + int temp = 1; /* locked value */
20318 __asm__ __volatile__(
20319 - "1:\tlwarx %0,0,%3\n" // load and reserve
20320 - "\tcmpwi %0, 0\n" // if load is
20321 - "\tbne 2f\n" // non-zero, return already set
20322 - "\tstwcx. %2,0,%1\n" // else store conditional
20323 - "\tbne- 1b\n" // retry if lost reservation
20324 - "2:\t\n" // oldval is zero if we set
20325 + "1:\tlwarx %0,0,%3\n" /* load and reserve */
20326 + "\tcmpwi %0, 0\n" /* if load is */
20327 + "\tbne 2f\n" /* non-zero, return already set */
20328 + "\tstwcx. %2,0,%1\n" /* else store conditional */
20329 + "\tbne- 1b\n" /* retry if lost reservation */
20330 + "\tsync\n" /* import barrier */
20331 + "2:\t\n" /* oldval is zero if we set */
20332 : "=&r"(oldval), "=p"(addr)
20333 : "r"(temp), "1"(addr)
20335 - return (int)oldval;
20336 + : "cr0","memory");
20339 # define GC_TEST_AND_SET_DEFINED
20340 inline static void GC_clear(volatile unsigned int *addr) {
20341 - __asm__ __volatile__("eieio" ::: "memory");
20342 + __asm__ __volatile__("eieio" : : : "memory");
20345 # define GC_CLEAR_DEFINED
20346 @@ -191,8 +192,11 @@
20349 # define GC_TEST_AND_SET_DEFINED
20350 - /* Should probably also define GC_clear, since it needs */
20351 - /* a memory barrier ?? */
20352 + inline static void GC_clear(volatile unsigned int *addr) {
20353 + __asm__ __volatile__("mb" : : : "memory");
20356 +# define GC_CLEAR_DEFINED
20357 # endif /* ALPHA */
20359 inline static int GC_test_and_set(volatile unsigned int *addr) {
20360 @@ -224,8 +228,16 @@
20362 # endif /* __GNUC__ */
20363 # if (defined(ALPHA) && !defined(__GNUC__))
20364 -# define GC_test_and_set(addr) __cxx_test_and_set_atomic(addr, 1)
20366 + --> We currently assume that if gcc is not used, we are
20367 + --> running under Tru64.
20369 +# include <machine/builtins.h>
20370 +# include <c_asm.h>
20371 +# define GC_test_and_set(addr) __ATOMIC_EXCH_LONG(addr, 1)
20372 # define GC_TEST_AND_SET_DEFINED
20373 +# define GC_clear(addr) { asm("mb"); *(volatile unsigned *)addr = 0; }
20374 +# define GC_CLEAR_DEFINED
20376 # if defined(MSWIN32)
20377 # define GC_test_and_set(addr) InterlockedExchange((LPLONG)addr,1)
20378 @@ -238,7 +250,11 @@
20379 # define GC_TEST_AND_SET_DEFINED
20380 # elif __mips < 3 || !(defined (_ABIN32) || defined(_ABI64)) \
20381 || !defined(_COMPILER_VERSION) || _COMPILER_VERSION < 700
20382 -# define GC_test_and_set(addr) test_and_set(addr, 1)
20384 +# define GC_test_and_set(addr) _test_and_set(addr,1)
20386 +# define GC_test_and_set(addr) test_and_set(addr,1)
20389 # define GC_test_and_set(addr) __test_and_set(addr,1)
20390 # define GC_clear(addr) __lock_release(addr);
20391 @@ -279,7 +295,7 @@
20394 # if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
20395 - && !defined(GC_IRIX_THREADS)
20396 + && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS)
20397 # define NO_THREAD (pthread_t)(-1)
20398 # include <pthread.h>
20399 # if defined(PARALLEL_MARK)
20400 @@ -310,12 +326,12 @@
20403 __asm__ __volatile__("lock; cmpxchgl %2, %0; setz %1"
20404 - : "=m"(*(addr)), "=r"(result)
20405 - : "r" (new_val), "0"(*(addr)), "a"(old) : "memory");
20406 + : "+m"(*(addr)), "=r"(result)
20407 + : "r" (new_val), "a"(old) : "memory");
20408 return (GC_bool) result;
20410 # endif /* !GENERIC_COMPARE_AND_SWAP */
20411 - inline static void GC_memory_write_barrier()
20412 + inline static void GC_memory_barrier()
20414 /* We believe the processor ensures at least processor */
20415 /* consistent ordering. Thus a compiler barrier */
20416 @@ -323,6 +339,37 @@
20417 __asm__ __volatile__("" : : : "memory");
20421 +# if defined(POWERPC)
20422 +# if !defined(GENERIC_COMPARE_AND_SWAP)
20423 + /* Returns TRUE if the comparison succeeded. */
20424 + inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr,
20425 + GC_word old, GC_word new_val)
20427 + int result, dummy;
20428 + __asm__ __volatile__(
20429 + "1:\tlwarx %0,0,%5\n"
20432 + "\tstwcx. %3,0,%2\n"
20439 + : "=&r" (dummy), "=r" (result), "=p" (addr)
20440 + : "r" (new_val), "r" (old), "2"(addr)
20441 + : "cr0","memory");
20442 + return (GC_bool) result;
20444 +# endif /* !GENERIC_COMPARE_AND_SWAP */
20445 + inline static void GC_memory_barrier()
20447 + __asm__ __volatile__("sync" : : : "memory");
20449 +# endif /* POWERPC */
20452 # if !defined(GENERIC_COMPARE_AND_SWAP)
20453 inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr,
20454 @@ -337,12 +384,52 @@
20455 # endif /* !GENERIC_COMPARE_AND_SWAP */
20457 /* Shouldn't be needed; we use volatile stores instead. */
20458 - inline static void GC_memory_write_barrier()
20459 + inline static void GC_memory_barrier()
20461 __asm__ __volatile__("mf" : : : "memory");
20465 +# if defined(ALPHA)
20466 +# if !defined(GENERIC_COMPARE_AND_SWAP)
20467 +# if defined(__GNUC__)
20468 + inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr,
20469 + GC_word old, GC_word new_val)
20471 + unsigned long was_equal;
20472 + unsigned long temp;
20474 + __asm__ __volatile__(
20475 + "1: ldq_l %0,%1\n"
20476 + " cmpeq %0,%4,%2\n"
20483 + :"=&r" (temp), "=m" (*addr), "=&r" (was_equal)
20484 + : "r" (new_val), "Ir" (old)
20486 + return was_equal;
20488 +# else /* !__GNUC__ */
20489 + inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr,
20490 + GC_word old, GC_word new_val)
20492 + return __CMP_STORE_QUAD(addr, old, new_val, addr);
20494 +# endif /* !__GNUC__ */
20495 +# endif /* !GENERIC_COMPARE_AND_SWAP */
20497 + inline static void GC_memory_barrier()
20499 + __asm__ __volatile__("mb" : : : "memory");
20502 +# define GC_memory_barrier() asm("mb")
20503 +# endif /* !__GNUC__ */
20504 +# endif /* ALPHA */
20506 # if !defined(GENERIC_COMPARE_AND_SWAP)
20507 inline static GC_bool GC_compare_and_exchange(volatile C_word *addr,
20508 @@ -434,8 +521,12 @@
20509 { GC_ASSERT(I_HOLD_LOCK()); UNSET_LOCK_HOLDER(); \
20510 pthread_mutex_unlock(&GC_allocate_ml); }
20511 # else /* !GC_ASSERTIONS */
20512 +# if defined(NO_PTHREAD_TRYLOCK)
20513 +# define LOCK() GC_lock();
20514 +# else /* !defined(NO_PTHREAD_TRYLOCK) */
20516 { if (0 != pthread_mutex_trylock(&GC_allocate_ml)) GC_lock(); }
20518 # define UNLOCK() pthread_mutex_unlock(&GC_allocate_ml)
20519 # endif /* !GC_ASSERTIONS */
20520 # endif /* USE_PTHREAD_LOCKS */
20521 @@ -478,11 +569,18 @@
20523 # define EXIT_GC() GC_collecting = 0;
20524 # endif /* GC_IRIX_THREADS */
20525 -# ifdef GC_WIN32_THREADS
20526 +# if defined(GC_WIN32_THREADS)
20527 +# if defined(GC_PTHREADS)
20528 +# include <pthread.h>
20529 + extern pthread_mutex_t GC_allocate_ml;
20530 +# define LOCK() pthread_mutex_lock(&GC_allocate_ml)
20531 +# define UNLOCK() pthread_mutex_unlock(&GC_allocate_ml)
20533 # include <windows.h>
20534 GC_API CRITICAL_SECTION GC_allocate_ml;
20535 # define LOCK() EnterCriticalSection(&GC_allocate_ml);
20536 # define UNLOCK() LeaveCriticalSection(&GC_allocate_ml);
20539 # ifndef SET_LOCK_HOLDER
20540 # define SET_LOCK_HOLDER()
20541 diff -urNb boehm-gc/include/private/gc_pmark.h boehm-gc/include/private/gc_pmark.h
20542 --- boehm-gc/include/private/gc_pmark.h Mon Feb 11 20:37:57 2002
20543 +++ boehm-gc/include/private/gc_pmark.h Mon May 26 13:28:24 2003
20544 @@ -137,7 +137,7 @@
20546 # ifdef PRINT_BLACK_LIST
20547 ptr_t GC_find_start(ptr_t current, hdr *hhdr, hdr **new_hdr_p,
20551 ptr_t GC_find_start(ptr_t current, hdr *hhdr, hdr **new_hdr_p);
20553 @@ -145,7 +145,7 @@
20554 ptr_t GC_find_start();
20557 -mse *GC_signal_mark_stack_overflow(mse *msp);
20558 +mse * GC_signal_mark_stack_overflow GC_PROTO((mse *msp));
20560 # ifdef GATHERSTATS
20561 # define ADD_TO_ATOMIC(sz) GC_atomic_in_use += (sz)
20562 @@ -174,14 +174,6 @@
20566 -#ifdef PRINT_BLACK_LIST
20567 -# define GC_FIND_START(current, hhdr, new_hdr_p, source) \
20568 - GC_find_start(current, hhdr, new_hdr_p, source)
20570 -# define GC_FIND_START(current, hhdr, new_hdr_p, source) \
20571 - GC_find_start(current, hhdr, new_hdr_p)
20574 /* Push the contents of current onto the mark stack if it is a valid */
20575 /* ptr to a currently unmarked object. Mark it. */
20576 /* If we assumed a standard-conforming compiler, we could probably */
20577 @@ -195,8 +187,7 @@
20578 GET_HDR(my_current, my_hhdr); \
20579 if (IS_FORWARDING_ADDR_OR_NIL(my_hhdr)) { \
20580 hdr * new_hdr = GC_invalid_header; \
20581 - my_current = GC_FIND_START(my_current, my_hhdr, \
20582 - &new_hdr, (word)source); \
20583 + my_current = GC_find_start(my_current, my_hhdr, &new_hdr); \
20584 my_hhdr = new_hdr; \
20586 PUSH_CONTENTS_HDR(my_current, mark_stack_top, mark_stack_limit, \
20587 @@ -290,21 +281,39 @@
20590 * Push a single value onto mark stack. Mark from the object pointed to by p.
20591 + * Invoke FIXUP_POINTER(p) before any further processing.
20592 * P is considered valid even if it is an interior pointer.
20593 * Previously marked objects are not pushed. Hence we make progress even
20594 * if the mark stack overflows.
20597 +# if NEED_FIXUP_POINTER
20598 + /* Try both the raw version and the fixed up one. */
20599 # define GC_PUSH_ONE_STACK(p, source) \
20600 if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \
20601 && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \
20602 PUSH_ONE_CHECKED_STACK(p, source); \
20604 + FIXUP_POINTER(p); \
20605 + if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \
20606 + && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \
20607 + PUSH_ONE_CHECKED_STACK(p, source); \
20609 +# else /* !NEED_FIXUP_POINTER */
20610 +# define GC_PUSH_ONE_STACK(p, source) \
20611 + if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \
20612 + && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \
20613 + PUSH_ONE_CHECKED_STACK(p, source); \
20619 * As above, but interior pointer recognition as for
20620 * normal for heap pointers.
20622 # define GC_PUSH_ONE_HEAP(p,source) \
20623 + FIXUP_POINTER(p); \
20624 if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \
20625 && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \
20626 GC_mark_stack_top = GC_mark_and_push( \
20627 diff -urNb boehm-gc/include/private/gc_priv.h boehm-gc/include/private/gc_priv.h
20628 --- boehm-gc/include/private/gc_priv.h Tue Mar 4 09:56:49 2003
20629 +++ boehm-gc/include/private/gc_priv.h Mon May 26 13:28:24 2003
20635 +# include <sys/types.h>
20636 +# include <sys/time.h>
20637 +# include <sys/resource.h>
20641 # include <sys/types.h>
20642 # include <sys/time.h>
20643 @@ -210,7 +216,6 @@
20644 # define ALIGN_DOUBLE
20648 /* ALIGN_DOUBLE requires MERGE_SIZES at present. */
20649 # if defined(ALIGN_DOUBLE) && !defined(MERGE_SIZES)
20650 # define MERGE_SIZES
20651 @@ -347,7 +352,8 @@
20652 # include <string.h>
20653 # define BCOPY_EXISTS
20655 -# if defined(MACOSX)
20656 +# if defined(DARWIN)
20657 +# include <string.h>
20658 # define BCOPY_EXISTS
20661 @@ -360,68 +366,6 @@
20662 # define BZERO(x,n) bzero((char *)(x),(int)(n))
20665 -/* HBLKSIZE aligned allocation. 0 is taken to mean failure */
20666 -/* space is assumed to be cleared. */
20667 -/* In the case os USE_MMAP, the argument must also be a */
20668 -/* physical page size. */
20669 -/* GET_MEM is currently not assumed to retrieve 0 filled space, */
20670 -/* though we should perhaps take advantage of the case in which */
20672 -struct hblk; /* See below. */
20674 - char * real_malloc();
20675 -# define GET_MEM(bytes) HBLKPTR(real_malloc((size_t)bytes + GC_page_size) \
20676 - + GC_page_size-1)
20679 - void * os2_alloc(size_t bytes);
20680 -# define GET_MEM(bytes) HBLKPTR((ptr_t)os2_alloc((size_t)bytes \
20681 - + GC_page_size) \
20682 - + GC_page_size-1)
20684 -# if defined(NEXT) || defined(MACOSX) || defined(DOS4GW) || \
20685 - (defined(AMIGA) && !defined(GC_AMIGA_FASTALLOC)) || \
20686 - (defined(SUNOS5) && !defined(USE_MMAP))
20687 -# define GET_MEM(bytes) HBLKPTR((size_t) \
20688 - calloc(1, (size_t)bytes + GC_page_size) \
20689 - + GC_page_size-1)
20692 - extern ptr_t GC_win32_get_mem();
20693 -# define GET_MEM(bytes) (struct hblk *)GC_win32_get_mem(bytes)
20696 -# if defined(USE_TEMPORARY_MEMORY)
20697 - extern Ptr GC_MacTemporaryNewPtr(size_t size,
20698 - Boolean clearMemory);
20699 -# define GET_MEM(bytes) HBLKPTR( \
20700 - GC_MacTemporaryNewPtr(bytes + GC_page_size, true) \
20701 - + GC_page_size-1)
20703 -# define GET_MEM(bytes) HBLKPTR( \
20704 - NewPtrClear(bytes + GC_page_size) + GC_page_size-1)
20708 - extern ptr_t GC_wince_get_mem();
20709 -# define GET_MEM(bytes) (struct hblk *)GC_wince_get_mem(bytes)
20711 -# if defined(AMIGA) && defined(GC_AMIGA_FASTALLOC)
20712 - extern void *GC_amiga_get_mem(size_t size);
20713 - define GET_MEM(bytes) HBLKPTR((size_t) \
20714 - GC_amiga_get_mem((size_t)bytes + GC_page_size) \
20715 - + GC_page_size-1)
20717 - extern ptr_t GC_unix_get_mem();
20718 -# define GET_MEM(bytes) (struct hblk *)GC_unix_get_mem(bytes)
20727 /* Delay any interrupts or signals that may abort this thread. Data */
20728 /* structures are in a consistent state outside this pair of calls. */
20729 /* ANSI C allows both to be empty (though the standard isn't very */
20730 @@ -486,7 +430,7 @@
20731 # ifdef SMALL_CONFIG
20732 # define ABORT(msg) abort();
20734 - GC_API void GC_abort();
20735 + GC_API void GC_abort GC_PROTO((GC_CONST char * msg));
20736 # define ABORT(msg) GC_abort(msg);
20739 @@ -646,9 +590,10 @@
20742 # ifdef LARGE_CONFIG
20743 -# define LOG_PHT_ENTRIES 19 /* Collisions likely at 512K blocks, */
20744 - /* which is >= 2GB. Each table takes */
20746 +# define LOG_PHT_ENTRIES 20 /* Collisions likely at 1M blocks, */
20747 + /* which is >= 4GB. Each table takes */
20748 + /* 128KB, some of which may never be */
20751 # ifdef SMALL_CONFIG
20752 # define LOG_PHT_ENTRIES 14 /* Collisions are likely if heap grows */
20753 @@ -656,7 +601,7 @@
20754 /* Each hash table occupies 2K bytes. */
20755 # else /* default "medium" configuration */
20756 # define LOG_PHT_ENTRIES 16 /* Collisions are likely if heap grows */
20757 - /* to more than 16K hblks >= 256MB. */
20758 + /* to more than 64K hblks >= 256MB. */
20759 /* Each hash table occupies 8K bytes. */
20762 @@ -897,6 +842,10 @@
20764 /* Number of explicitly deallocated words of memory */
20765 /* since last collection. */
20766 + word _finalizer_mem_freed;
20767 + /* Words of memory explicitly deallocated while */
20768 + /* finalizers were running. Used to approximate mem. */
20769 + /* explicitly deallocated by finalizers. */
20770 ptr_t _scratch_end_ptr;
20771 ptr_t _scratch_last_end_ptr;
20772 /* Used by headers.c, and can easily appear to point to */
20773 @@ -957,7 +906,7 @@
20774 /* OFFSET_TOO_BIG if the value j would be too */
20775 /* large to fit in the entry. (Note that the */
20776 /* size of these entries matters, both for */
20777 - /* space consumption and for cache utilization. */
20778 + /* space consumption and for cache utilization.) */
20779 # define OFFSET_TOO_BIG 0xfe
20780 # define OBJ_INVALID 0xff
20781 # define MAP_ENTRY(map, bytes) (map)[bytes]
20782 @@ -1067,6 +1016,7 @@
20783 # define GC_words_finalized GC_arrays._words_finalized
20784 # define GC_non_gc_bytes_at_gc GC_arrays._non_gc_bytes_at_gc
20785 # define GC_mem_freed GC_arrays._mem_freed
20786 +# define GC_finalizer_mem_freed GC_arrays._finalizer_mem_freed
20787 # define GC_scratch_end_ptr GC_arrays._scratch_end_ptr
20788 # define GC_scratch_last_end_ptr GC_arrays._scratch_last_end_ptr
20789 # define GC_mark_procs GC_arrays._mark_procs
20790 @@ -1201,17 +1151,19 @@
20791 /* header structure associated with */
20794 -extern GC_bool GC_is_initialized; /* GC_init() has been run. */
20796 extern GC_bool GC_objects_are_marked; /* There are marked objects in */
20799 #ifndef SMALL_CONFIG
20800 extern GC_bool GC_incremental;
20801 /* Using incremental/generational collection. */
20802 +# define TRUE_INCREMENTAL \
20803 + (GC_incremental && GC_time_limit != GC_TIME_UNLIMITED)
20804 + /* True incremental, not just generational, mode */
20806 # define GC_incremental FALSE
20807 /* Hopefully allow optimizer to remove some code. */
20808 +# define TRUE_INCREMENTAL FALSE
20811 extern GC_bool GC_dirty_maintained;
20812 @@ -1229,6 +1181,10 @@
20813 extern long GC_large_alloc_warn_suppressed;
20814 /* Number of warnings suppressed so far. */
20817 + extern GC_bool GC_world_stopped;
20822 # define abs(x) ((x) < 0? (-(x)) : (x))
20823 @@ -1452,6 +1408,7 @@
20824 /* Set all mark bits associated with */
20826 void GC_add_roots_inner GC_PROTO((char * b, char * e, GC_bool tmp));
20827 +void GC_remove_roots_inner GC_PROTO((char * b, char * e));
20828 GC_bool GC_is_static_root GC_PROTO((ptr_t p));
20829 /* Is the address p in one of the registered static */
20830 /* root sections? */
20831 @@ -1624,6 +1581,8 @@
20832 /* until the blocks are available or */
20833 /* until it fails by returning FALSE. */
20835 +extern GC_bool GC_is_initialized; /* GC_init() has been run. */
20837 #if defined(MSWIN32) || defined(MSWINCE)
20838 void GC_deinit GC_PROTO((void));
20839 /* Free any resources allocated by */
20840 @@ -1666,6 +1625,8 @@
20841 /* free list nonempty, and return its */
20844 +void GC_free_inner(GC_PTR p);
20846 void GC_init_headers GC_PROTO((void));
20847 struct hblkhdr * GC_install_header GC_PROTO((struct hblk *h));
20848 /* Install a header for block h. */
20849 @@ -1695,6 +1656,12 @@
20850 /* finalizers to be run, and we haven't called */
20851 /* this procedure yet this GC cycle. */
20853 +GC_API GC_PTR GC_make_closure GC_PROTO((GC_finalization_proc fn, GC_PTR data));
20854 +GC_API void GC_debug_invoke_finalizer GC_PROTO((GC_PTR obj, GC_PTR data));
20855 + /* Auxiliary fns to make finalization work */
20856 + /* correctly with displaced pointers introduced */
20857 + /* by the debugging allocators. */
20859 void GC_add_to_heap GC_PROTO((struct hblk *p, word bytes));
20860 /* Add a HBLKSIZE aligned chunk to the heap. */
20862 @@ -1704,16 +1671,36 @@
20863 /* description of the object to stderr. */
20864 extern void (*GC_check_heap) GC_PROTO((void));
20865 /* Check that all objects in the heap with */
20866 - /* debugging info are intact. Print */
20867 - /* descriptions of any that are not. */
20868 + /* debugging info are intact. */
20869 + /* Add any that are not to GC_smashed list. */
20870 +extern void (*GC_print_all_smashed) GC_PROTO((void));
20871 + /* Print GC_smashed if it's not empty. */
20872 + /* Clear GC_smashed list. */
20873 +extern void GC_print_all_errors GC_PROTO((void));
20874 + /* Print smashed and leaked objects, if any. */
20875 + /* Clear the lists of such objects. */
20876 extern void (*GC_print_heap_obj) GC_PROTO((ptr_t p));
20877 /* If possible print s followed by a more */
20878 /* detailed description of the object */
20879 /* referred to by p. */
20880 +#if defined(LINUX) && defined(__ELF__) && !defined(SMALL_CONFIG)
20881 + void GC_print_address_map GC_PROTO((void));
20882 + /* Print an address map of the process. */
20885 +extern GC_bool GC_have_errors; /* We saw a smashed or leaked object. */
20886 + /* Call error printing routine */
20887 + /* occasionally. */
20888 extern GC_bool GC_print_stats; /* Produce at least some logging output */
20889 /* Set from environment variable. */
20891 +#ifndef NO_DEBUGGING
20892 + extern GC_bool GC_dump_regularly; /* Generate regular debugging dumps. */
20893 +# define COND_DUMP if (GC_dump_regularly) GC_dump();
20895 +# define COND_DUMP
20898 /* Macros used for collector internal allocation. */
20899 /* These assume the collector lock is held. */
20900 #ifdef DBG_HDRS_ALL
20901 @@ -1785,6 +1772,7 @@
20902 void GC_print_hblkfreelist GC_PROTO((void));
20903 void GC_print_heap_sects GC_PROTO((void));
20904 void GC_print_static_roots GC_PROTO((void));
20905 +void GC_print_finalization_stats GC_PROTO((void));
20906 void GC_dump GC_PROTO((void));
20908 #ifdef KEEP_BACK_PTRS
20909 @@ -1866,6 +1854,10 @@
20910 # define GC_ASSERT(expr)
20913 +/* Check a compile time assertion at compile time. The error */
20914 +/* message for failure is a bit baroque, but ... */
20915 +# define GC_STATIC_ASSERT(expr) sizeof(char[(expr)? 1 : -1])
20917 # if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
20918 /* We need additional synchronization facilities from the thread */
20919 /* support. We believe these are less performance critical */
20920 @@ -1911,7 +1903,7 @@
20921 /* in Linux glibc, but it's not exported.) Thus we continue to use */
20922 /* the same hard-coded signals we've always used. */
20923 # if !defined(SIG_SUSPEND)
20924 -# if defined(GC_LINUX_THREADS)
20925 +# if defined(GC_LINUX_THREADS) || defined(GC_DGUX386_THREADS)
20926 # if defined(SPARC) && !defined(SIGPWR)
20927 /* SPARC/Linux doesn't properly define SIGPWR in <signal.h>.
20928 * It is aliased to SIGLOST in asm/signal.h, though. */
20929 diff -urNb boehm-gc/include/private/gcconfig.h boehm-gc/include/private/gcconfig.h
20930 --- boehm-gc/include/private/gcconfig.h Wed Apr 9 17:08:01 2003
20931 +++ boehm-gc/include/private/gcconfig.h Mon May 26 13:28:24 2003
20932 @@ -14,10 +14,24 @@
20933 * modified is included with the above copyright notice.
20937 + * This header is private to the gc. It is almost always included from
20938 + * gc_priv.h. However it is possible to include it by itself if just the
20939 + * configuration macros are needed. In that
20940 + * case, a few declarations relying on types declared in gc_priv.h will be
20946 # define GCCONFIG_H
20948 +# ifndef GC_PRIVATE_H
20949 + /* Fake ptr_t declaration, just to avoid compilation errors. */
20950 + /* This avoids many instances if "ifndef GC_PRIVATE_H" below. */
20951 + typedef struct GC_undefined_struct * ptr_t;
20954 /* Machine dependent parameters. Some tuning parameters can be found */
20955 /* near the top of gc_private.h. */
20960 /* Determine the machine type: */
20961 -# if defined(__arm__) || defined(__thumb__)
20962 +# if defined(__XSCALE__)
20964 # if !defined(LINUX)
20967 # if defined(nec_ews) || defined(_nec_ews)
20970 -# if !defined(LINUX) && !defined(EWS4800) && !defined(NETBSD)
20971 -# if defined(ultrix) || defined(__ultrix)
20972 +# if !defined(LINUX) && !defined(EWS4800)
20973 +# if defined(ultrix) || defined(__ultrix) || defined(__NetBSD__)
20976 # if defined(_SYSTYPE_SVR4) || defined(SYSTYPE_SVR4) \
20977 @@ -107,6 +121,16 @@
20980 # endif /* !LINUX */
20981 +# if defined(__NetBSD__) && defined(__MIPSEL__)
20984 +# define mach_type_known
20986 +# if defined(DGUX) && (defined(i386) || defined(__i386__))
20988 +# ifndef _USING_DGUX
20989 +# define _USING_DGUX
20991 # define mach_type_known
20993 # if defined(sequent) && (defined(i386) || defined(__i386__))
20994 @@ -198,6 +222,10 @@
20996 # define mach_type_known
20998 +# if defined(LINUX) && defined(__arm__)
21000 +# define mach_type_known
21002 # if defined(LINUX) && (defined(powerpc) || defined(__powerpc__))
21004 # define mach_type_known
21005 @@ -237,19 +265,19 @@
21007 # define mach_type_known
21009 -# if defined(__MWERKS__) && defined(__powerc)
21010 +# if defined(__MWERKS__) && defined(__powerc) && !defined(__MACH__)
21013 # define mach_type_known
21015 # if defined(macosx) || \
21016 defined(__APPLE__) && defined(__MACH__) && defined(__ppc__)
21020 # define mach_type_known
21022 # if defined(__APPLE__) && defined(__MACH__) && defined(__i386__)
21026 --> Not really supported, but at least we recognize it.
21028 @@ -291,7 +319,7 @@
21030 # define mach_type_known
21032 -# if defined(DGUX)
21033 +# if defined(DGUX) && defined(m88k)
21036 # define mach_type_known
21037 @@ -425,8 +453,6 @@
21038 /* IA64 ==> Intel IPF */
21039 /* (e.g. Itanium) */
21040 /* (LINUX and HPUX) */
21041 - /* IA64_32 ==> IA64 w/32 bit ABI */
21043 /* SH ==> Hitachi SuperH */
21044 /* (LINUX & MSWINCE) */
21045 /* X86_64 ==> AMD x86-64 */
21046 @@ -450,15 +476,17 @@
21047 * defining it to be 1 will always work, but perform poorly.
21049 * DATASTART is the beginning of the data segment.
21050 - * On UNIX systems, the collector will scan the area between DATASTART
21051 + * On some platforms SEARCH_FOR_DATA_START is defined.
21052 + * SEARCH_FOR_DATASTART will cause GC_data_start to
21053 + * be set to an address determined by accessing data backwards from _end
21054 + * until an unmapped page is found. DATASTART will be defined to be
21056 + * On UNIX-like systems, the collector will scan the area between DATASTART
21057 * and DATAEND for root pointers.
21059 * DATAEND, if not `end' where `end' is defined as ``extern int end[];''.
21060 * RTH suggests gaining access to linker script synth'd values with
21061 * this idiom instead of `&end' where `end' is defined as ``extern int end;'' .
21062 - * Otherwise, ``GCC will assume these are in .sdata/.sbss'' and it will, e.g.,
21063 - * cause failures on alpha*-*-* with ``-msmall-data or -fpic'' or mips-*-*
21064 - * without any special options.
21066 * ALIGN_DOUBLE of GC_malloc should return blocks aligned to twice
21067 * the pointer size.
21068 @@ -470,8 +498,13 @@
21069 * 1) define STACK_GROWS_UP if the stack grows toward higher addresses, and
21070 * 2) define exactly one of
21071 * STACKBOTTOM (should be defined to be an expression)
21072 + * LINUX_STACKBOTTOM
21075 + * If STACKBOTTOM is defined, then it's value will be used directly as the
21076 + * stack base. If LINUX_STACKBOTTOM is defined, then it will be determined
21077 + * with a method appropriate for most Linux systems. Currently we look
21078 + * first for __libc_stack_end, and if that fails read it from /proc.
21079 * If either of the last two macros are defined, then STACKBOTTOM is computed
21080 * during collector startup using one of the following two heuristics:
21081 * HEURISTIC1: Take an address inside GC_init's frame, and round it up to
21082 @@ -536,6 +569,9 @@
21083 * An architecture may also define CLEAR_DOUBLE(x) to be a fast way to
21084 * clear the two words at GC_malloc-aligned address x. By default,
21085 * word stores of 0 are used instead.
21087 + * HEAP_START may be defined as the initial address hint for mmap-based
21091 /* If we are using a recent version of gcc, we can use __builtin_unwind_init()
21092 @@ -571,7 +607,7 @@
21093 # define DYNAMIC_LOADING
21094 # include <features.h>
21095 # if defined(__GLIBC__)&& __GLIBC__>=2
21096 -# define LINUX_DATA_START
21097 +# define SEARCH_FOR_DATA_START
21098 # else /* !GLIBC2 */
21099 extern char **__environ;
21100 # define DATASTART ((ptr_t)(&__environ))
21101 @@ -669,23 +705,42 @@
21102 # define ALIGNMENT 4 /* Guess. Can someone verify? */
21103 /* This was 2, but that didn't sound right. */
21104 # define OS_TYPE "LINUX"
21105 -# define DYNAMIC_LOADING
21106 + /* HEURISTIC1 has been reliably reported to fail for a 32-bit */
21107 + /* executable on a 64 bit kernel. */
21108 # define LINUX_STACKBOTTOM
21109 - /* Stack usually starts at 0x80000000 */
21110 -# define LINUX_DATA_START
21111 +# define DYNAMIC_LOADING
21112 +# define SEARCH_FOR_DATA_START
21114 # define DATAEND (_end)
21118 /* There are reasons to suspect this may not be reliable. */
21119 # define ALIGNMENT 4
21120 -# define OS_TYPE "MACOSX"
21121 +# define OS_TYPE "DARWIN"
21122 +# define DYNAMIC_LOADING
21123 + /* XXX: see get_end(3), get_etext() and get_end() should not be used.
21124 + These aren't used when dyld support is enabled (it is by default) */
21125 # define DATASTART ((ptr_t) get_etext())
21126 +# define DATAEND ((ptr_t) get_end())
21127 # define STACKBOTTOM ((ptr_t) 0xc0000000)
21128 -# define DATAEND /* not needed */
21129 -# undef MPROTECT_VDB
21131 +# define USE_MMAP_ANON
21132 +# define USE_ASM_PUSH_REGS
21133 + /* This is potentially buggy. It needs more testing. See the comments in
21135 +# define MPROTECT_VDB
21136 # include <unistd.h>
21137 # define GETPAGESIZE() getpagesize()
21138 +# if defined(USE_PPC_PREFETCH) && defined(__GNUC__)
21139 + /* The performance impact of prefetches is untested */
21140 +# define PREFETCH(x) \
21141 + __asm__ __volatile__ ("dcbt 0,%0" : : "r" ((const void *) (x)))
21142 +# define PREFETCH_FOR_WRITE(x) \
21143 + __asm__ __volatile__ ("dcbtst 0,%0" : : "r" ((const void *) (x)))
21145 + /* There seems to be some issues with trylock hanging on darwin. This
21146 + should be looked into some more */
21147 +# define NO_PTHREAD_TRYLOCK
21150 # define ALIGNMENT 4
21151 @@ -746,8 +801,8 @@
21152 # define OS_TYPE "SUNOS5"
21153 extern int _etext[];
21155 - extern char * GC_SysVGetDataStart();
21156 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, _etext)
21157 + extern ptr_t GC_SysVGetDataStart();
21158 +# define DATASTART GC_SysVGetDataStart(0x10000, _etext)
21159 # define DATAEND (_end)
21160 # if !defined(USE_MMAP) && defined(REDIRECT_MALLOC)
21162 @@ -801,9 +856,9 @@
21165 # define OS_TYPE "DRSNX"
21166 - extern char * GC_SysVGetDataStart();
21167 + extern ptr_t GC_SysVGetDataStart();
21168 extern int etext[];
21169 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, etext)
21170 +# define DATASTART GC_SysVGetDataStart(0x10000, etext)
21171 # define MPROTECT_VDB
21172 # define STACKBOTTOM ((ptr_t) 0xdfff0000)
21173 # define DYNAMIC_LOADING
21174 @@ -819,13 +874,14 @@
21175 extern int _etext[];
21176 # define DATAEND (_end)
21178 + extern ptr_t GC_SysVGetDataStart();
21180 +# define DATASTART GC_SysVGetDataStart(0x100000, _etext)
21181 /* libc_stack_end is not set reliably for sparc64 */
21182 -# define STACKBOTTOM ((ptr_t) 0x80000000000)
21183 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x100000, _etext)
21184 +# define STACKBOTTOM ((ptr_t) 0x80000000000ULL)
21186 +# define DATASTART GC_SysVGetDataStart(0x10000, _etext)
21187 # define LINUX_STACKBOTTOM
21188 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, _etext)
21192 @@ -876,7 +932,7 @@
21194 # define OS_TYPE "SUNOS5"
21195 extern int _etext[], _end[];
21196 - extern char * GC_SysVGetDataStart();
21197 + extern ptr_t GC_SysVGetDataStart();
21198 # define DATASTART GC_SysVGetDataStart(0x1000, _etext)
21199 # define DATAEND (_end)
21200 /* # define STACKBOTTOM ((ptr_t)(_start)) worked through 2.7, */
21201 @@ -921,6 +977,28 @@
21202 # define DYNAMIC_LOADING
21203 # define ELF_CLASS ELFCLASS32
21206 +# define OS_TYPE "DGUX"
21207 + extern int _etext, _end;
21208 + extern ptr_t GC_SysVGetDataStart();
21209 +# define DATASTART GC_SysVGetDataStart(0x1000, &_etext)
21210 +# define DATAEND (&_end)
21211 +# define STACK_GROWS_DOWN
21212 +# define HEURISTIC2
21213 +# include <unistd.h>
21214 +# define GETPAGESIZE() sysconf(_SC_PAGESIZE)
21215 +# define DYNAMIC_LOADING
21218 +# endif /* USE_MMAP */
21219 +# define MAP_FAILED (void *) -1
21221 +# define HEAP_START (ptr_t)0x40000000
21222 +# else /* USE_MMAP */
21223 +# define HEAP_START DATAEND
21224 +# endif /* USE_MMAP */
21225 +# endif /* DGUX */
21229 /* The Intel compiler doesn't like inline assembly */
21230 @@ -944,6 +1022,9 @@
21231 /* possibly because Linux threads is itself a malloc client */
21232 /* and can't deal with the signals. */
21234 +# define HEAP_START 0x1000
21235 + /* This encourages mmap to give us low addresses, */
21236 + /* thus allowing the heap to grow to ~3GB */
21238 # define DYNAMIC_LOADING
21239 # ifdef UNDEFINED /* includes ro data */
21240 @@ -952,7 +1033,7 @@
21242 # include <features.h>
21243 # if defined(__GLIBC__) && __GLIBC__ >= 2
21244 -# define LINUX_DATA_START
21245 +# define SEARCH_FOR_DATA_START
21247 extern char **__environ;
21248 # define DATASTART ((ptr_t)(&__environ))
21249 @@ -1061,16 +1142,9 @@
21251 # define DYNAMIC_LOADING
21253 -/* Handle unmapped hole i386*-*-freebsd[45]* may put between etext and edata. */
21254 extern char etext[];
21255 - extern char edata[];
21256 - extern char end[];
21257 -# define NEED_FIND_LIMIT
21258 -# define DATASTART ((ptr_t)(etext))
21259 -# define MIN(x,y) ((x) < (y) ? (x) : (y))
21260 -# define DATAEND (MIN (GC_find_limit (DATASTART, TRUE), DATASTART2))
21261 -# define DATASTART2 ((ptr_t)(edata))
21262 -# define DATAEND2 ((ptr_t)(end))
21263 + extern char * GC_FreeBSDGetDataStart();
21264 +# define DATASTART GC_FreeBSDGetDataStart(0x1000, &etext)
21267 # define OS_TYPE "NETBSD"
21268 @@ -1149,7 +1223,11 @@
21269 # define DATASTART ((ptr_t)(__data_start))
21270 # define ALIGNMENT 4
21271 # define USE_GENERIC_PUSH_REGS
21272 +# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2 || __GLIBC__ > 2
21273 # define LINUX_STACKBOTTOM
21275 +# define STACKBOTTOM 0x80000000
21277 # endif /* Linux */
21279 # define HEURISTIC2
21280 @@ -1222,15 +1300,21 @@
21281 # define DATAEND /* not needed */
21283 # if defined(NETBSD)
21284 -# define OS_TYPE "NETBSD"
21285 + /* This also checked for __MIPSEL__ . Why? NETBSD recognition */
21286 + /* should be handled at the top of the file. */
21287 # define ALIGNMENT 4
21288 +# define OS_TYPE "NETBSD"
21289 # define HEURISTIC2
21290 # define USE_GENERIC_PUSH_REGS
21291 - extern int _fdata[];
21292 -# define DATASTART ((ptr_t)(_fdata))
21293 - extern int _end[];
21294 -# define DATAEND ((ptr_t)(_end))
21296 + extern int etext[];
21297 +# define DATASTART GC_data_start
21298 +# define NEED_FIND_LIMIT
21299 # define DYNAMIC_LOADING
21301 +# define DATASTART ((ptr_t) 0x10000000)
21302 +# define STACKBOTTOM ((ptr_t) 0x7ffff000)
21303 +# endif /* _ELF_ */
21307 @@ -1239,15 +1323,16 @@
21309 # define ALIGNMENT 8
21310 # define CPP_WORDSZ 64
21311 +# define STACKBOTTOM 0x1000000000000000
21313 # define ALIGNMENT 4
21314 # define CPP_WORDSZ 32
21315 +# define STACKBOTTOM ((ptr_t)((ulong)&errno))
21317 extern int _data[], _end[];
21318 # define DATASTART ((ptr_t)((ulong)_data))
21319 # define DATAEND ((ptr_t)((ulong)_end))
21321 -# define STACKBOTTOM ((ptr_t)((ulong)&errno))
21322 # define USE_GENERIC_PUSH_REGS
21323 # define DYNAMIC_LOADING
21324 /* For really old versions of AIX, this may have to be removed. */
21325 @@ -1311,15 +1396,23 @@
21326 # define OS_TYPE "LINUX"
21327 # define LINUX_STACKBOTTOM
21328 # define DYNAMIC_LOADING
21329 -# define LINUX_DATA_START
21330 +# define SEARCH_FOR_DATA_START
21332 -# define DATAEND (_end)
21333 +# define DATAEND (&_end)
21334 # endif /* LINUX */
21335 # endif /* HP_PA */
21338 # define MACH_TYPE "ALPHA"
21339 # define ALIGNMENT 8
21340 +# define CPP_WORDSZ 64
21342 +# define USE_GENERIC_PUSH_REGS
21343 + /* Gcc and probably the DEC/Compaq compiler spill pointers to preserved */
21344 + /* fp registers in some cases when the target is a 21264. The assembly */
21345 + /* code doesn't handle that yet, and version dependencies make that a */
21346 + /* bit tricky. Do the easy thing for now. */
21349 # define OS_TYPE "NETBSD"
21350 # define HEURISTIC2
21351 @@ -1327,13 +1420,11 @@
21352 # define ELFCLASS32 32
21353 # define ELFCLASS64 64
21354 # define ELF_CLASS ELFCLASS64
21355 -# define CPP_WORDSZ 64
21356 # define DYNAMIC_LOADING
21359 # define OS_TYPE "OPENBSD"
21360 # define HEURISTIC2
21361 -# define CPP_WORDSZ 64
21362 # ifdef __ELF__ /* since OpenBSD/Alpha 2.9 */
21363 # define DATASTART GC_data_start
21364 # define ELFCLASS32 32
21365 @@ -1357,17 +1448,16 @@
21366 extern char edata[];
21368 # define NEED_FIND_LIMIT
21369 -# define DATASTART ((ptr_t)(etext))
21370 +# define DATASTART ((ptr_t)(&etext))
21371 # define DATAEND (GC_find_limit (DATASTART, TRUE))
21372 -# define DATASTART2 ((ptr_t)(edata))
21373 -# define DATAEND2 ((ptr_t)(end))
21374 -# define CPP_WORDSZ 64
21375 +# define DATASTART2 ((ptr_t)(&edata))
21376 +# define DATAEND2 ((ptr_t)(&end))
21379 # define OS_TYPE "OSF1"
21380 # define DATASTART ((ptr_t) 0x140000000)
21382 -# define DATAEND ((ptr_t) _end)
21383 +# define DATAEND ((ptr_t) &_end)
21384 extern char ** environ;
21385 /* round up from the value of environ to the nearest page boundary */
21386 /* Probably breaks if putenv is called before collector */
21387 @@ -1380,17 +1470,17 @@
21388 /* This is currently unused, since we disabled HEURISTIC2 */
21389 extern int __start[];
21390 # define HEURISTIC2_LIMIT ((ptr_t)((word)(__start) & ~(getpagesize()-1)))
21391 -# define CPP_WORDSZ 64
21392 +# ifndef GC_OSF1_THREADS
21393 + /* Unresolved signal issues with threads. */
21394 # define MPROTECT_VDB
21396 # define DYNAMIC_LOADING
21399 # define OS_TYPE "LINUX"
21400 -# define CPP_WORDSZ 64
21401 # define STACKBOTTOM ((ptr_t) 0x120000000)
21403 # define SEARCH_FOR_DATA_START
21404 -# define DATASTART GC_data_start
21405 # define DYNAMIC_LOADING
21407 # define DATASTART ((ptr_t) 0x140000000)
21408 @@ -1468,7 +1558,6 @@
21409 extern char * GC_register_stackbottom;
21410 # define BACKING_STORE_BASE ((ptr_t)GC_register_stackbottom)
21411 # define SEARCH_FOR_DATA_START
21412 -# define DATASTART GC_data_start
21414 # define DYNAMIC_LOADING
21416 @@ -1502,13 +1591,15 @@
21419 # define OS_TYPE "DGUX"
21420 - extern char * GC_SysVGetDataStart();
21421 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, etext)
21422 + extern ptr_t GC_SysVGetDataStart();
21423 +# define DATASTART GC_SysVGetDataStart(0x10000, etext)
21425 # define STACKBOTTOM ((char*)0xf0000000) /* determined empirically */
21429 + /* If this still works, and if anyone cares, this should probably */
21430 + /* be moved to the S390 category. */
21431 # define MACH_TYPE "S370"
21432 # define ALIGNMENT 4 /* Required by hardware */
21433 # define USE_GENERIC_PUSH_REGS
21434 @@ -1517,8 +1608,8 @@
21435 extern int etext[];
21436 extern int _etext[];
21438 - extern char * GC_SysVGetDataStart();
21439 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, _etext)
21440 + extern ptr_t GC_SysVGetDataStart();
21441 +# define DATASTART GC_SysVGetDataStart(0x10000, _etext)
21442 # define DATAEND (_end)
21443 # define HEURISTIC2
21445 @@ -1576,7 +1667,7 @@
21446 # define DYNAMIC_LOADING
21447 # include <features.h>
21448 # if defined(__GLIBC__) && __GLIBC__ >= 2
21449 -# define LINUX_DATA_START
21450 +# define SEARCH_FOR_DATA_START
21452 extern char **__environ;
21453 # define DATASTART ((ptr_t)(&__environ))
21454 @@ -1623,7 +1714,7 @@
21455 # define STACKBOTTOM ((ptr_t) 0x7c000000)
21456 # define USE_GENERIC_PUSH_REGS
21457 # define DYNAMIC_LOADING
21458 -# define LINUX_DATA_START
21459 +# define SEARCH_FOR_DATA_START
21461 # define DATAEND (_end)
21463 @@ -1640,7 +1731,9 @@
21464 # define MACH_TYPE "X86_64"
21465 # define ALIGNMENT 8
21466 # define CPP_WORDSZ 64
21468 # define HBLKSIZE 4096
21470 # define CACHE_LINE_SIZE 64
21471 # define USE_GENERIC_PUSH_REGS
21473 @@ -1660,7 +1753,7 @@
21474 # define DATASTART ((ptr_t)((((word) (_etext)) + 0xfff) & ~0xfff))
21476 # include <features.h>
21477 -# define LINUX_DATA_START
21478 +# define SEARCH_FOR_DATA_START
21480 # define DATAEND (_end)
21482 @@ -1674,19 +1767,6 @@
21486 -#ifdef LINUX_DATA_START
21487 - /* Some Linux distributions arrange to define __data_start. Some */
21488 - /* define data_start as a weak symbol. The latter is technically */
21489 - /* broken, since the user program may define data_start, in which */
21490 - /* case we lose. Nonetheless, we try both, prefering __data_start. */
21491 - /* We assume gcc. */
21492 -# pragma weak __data_start
21493 - extern int __data_start[];
21494 -# pragma weak data_start
21495 - extern int data_start[];
21496 -# define DATASTART ((ptr_t)(__data_start != 0? __data_start : data_start))
21499 #if defined(LINUX) && defined(REDIRECT_MALLOC)
21500 /* Rld appears to allocate some memory with its own allocator, and */
21501 /* some through malloc, which might be redirected. To make this */
21502 @@ -1742,8 +1822,8 @@
21505 # if defined(SVR4) || defined(LINUX) || defined(IRIX) || defined(HPUX) \
21506 - || defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) \
21507 - || defined(BSD) || defined(_AIX) || defined(MACOSX) || defined(OSF1)
21508 + || defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) || defined(DGUX) \
21509 + || defined(BSD) || defined(AIX) || defined(DARWIN) || defined(OSF1)
21510 # define UNIX_LIKE /* Basic Unix-like system calls work. */
21513 @@ -1762,13 +1842,13 @@
21517 -/* Postponed for now. */
21518 + /* Postponed for now. */
21520 # undef MPROTECT_VDB
21523 # ifdef SMALL_CONFIG
21524 -/* Presumably not worth the space it takes. */
21525 + /* Presumably not worth the space it takes. */
21527 # undef MPROTECT_VDB
21529 @@ -1808,8 +1888,9 @@
21530 /* platforms as well, though it should be avoided in win32. */
21531 # endif /* LINUX */
21533 -# if defined(SEARCH_FOR_DATA_START) && defined(GC_PRIVATE_H)
21534 +# if defined(SEARCH_FOR_DATA_START)
21535 extern ptr_t GC_data_start;
21536 +# define DATASTART GC_data_start
21539 # ifndef CLEAR_DOUBLE
21540 @@ -1818,28 +1899,25 @@
21542 # endif /* CLEAR_DOUBLE */
21544 -/* Internally we use GC_SOLARIS_THREADS to test for either old or pthreads. */
21545 + /* Internally we use GC_SOLARIS_THREADS to test for either old or pthreads. */
21546 # if defined(GC_SOLARIS_PTHREADS) && !defined(GC_SOLARIS_THREADS)
21547 # define GC_SOLARIS_THREADS
21550 # if defined(GC_IRIX_THREADS) && !defined(IRIX5)
21551 ---> inconsistent configuration
21552 + --> inconsistent configuration
21554 # if defined(GC_LINUX_THREADS) && !defined(LINUX)
21555 ---> inconsistent configuration
21556 + --> inconsistent configuration
21558 # if defined(GC_SOLARIS_THREADS) && !defined(SUNOS5)
21559 ---> inconsistent configuration
21560 + --> inconsistent configuration
21562 # if defined(GC_HPUX_THREADS) && !defined(HPUX)
21563 ---> inconsistent configuration
21564 + --> inconsistent configuration
21566 -# if defined(GC_WIN32_THREADS) && !defined(MSWIN32)
21567 - /* Ideally CYGWIN32 should work, in addition to MSWIN32. I suspect */
21568 - /* the necessary code is mostly there, but nobody has actually made */
21569 - /* sure the right combination of pieces is compiled in, etc. */
21570 ---> inconsistent configuration
21571 +# if defined(GC_WIN32_THREADS) && !defined(MSWIN32) && !defined(CYGWIN32)
21572 + --> inconsistent configuration
21575 # if defined(PCR) || defined(SRC_M3) || \
21576 @@ -1848,8 +1926,8 @@
21580 -# if defined(HP_PA) || defined(M88K) || defined(POWERPC) && !defined(MACOSX) \
21581 - || defined(LINT) || defined(MSWINCE) \
21582 +# if defined(HP_PA) || defined(M88K) || defined(POWERPC) && !defined(DARWIN) \
21583 + || defined(LINT) || defined(MSWINCE) || defined(ARM32) \
21584 || (defined(I386) && defined(__LCC__))
21585 /* Use setjmp based hack to mark from callee-save registers. */
21586 /* The define should move to the individual platform */
21587 @@ -1862,36 +1940,26 @@
21588 /* include assembly code to do it well. */
21591 -/* Can we save call chain in objects for debugging? */
21592 -/* SET NFRAMES (# of saved frames) and NARGS (#of args for each frame) */
21593 -/* to reasonable values for the platform. */
21594 -/* Set SAVE_CALL_CHAIN if we can. SAVE_CALL_COUNT can be specified at */
21595 -/* build time, though we feel free to adjust it slightly. */
21596 -/* Define NEED_CALLINFO if we either save the call stack or */
21597 -/* GC_ADD_CALLER is defined. */
21599 -# include <features.h>
21600 -# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2
21601 -# define HAVE_BUILTIN_BACKTRACE
21604 + /* Can we save call chain in objects for debugging? */
21605 + /* SET NFRAMES (# of saved frames) and NARGS (#of args for each */
21606 + /* frame) to reasonable values for the platform. */
21607 + /* Set SAVE_CALL_CHAIN if we can. SAVE_CALL_COUNT can be specified */
21608 + /* at build time, though we feel free to adjust it slightly. */
21609 + /* Define NEED_CALLINFO if we either save the call stack or */
21610 + /* GC_ADD_CALLER is defined. */
21611 + /* GC_CAN_SAVE_CALL_STACKS is set in gc.h. */
21614 -# define CAN_SAVE_CALL_STACKS
21615 # define CAN_SAVE_CALL_ARGS
21617 #if (defined(I386) || defined(X86_64)) && defined(LINUX)
21618 /* SAVE_CALL_CHAIN is supported if the code is compiled to save */
21619 /* frame pointers by default, i.e. no -fomit-frame-pointer flag. */
21620 -# define CAN_SAVE_CALL_STACKS
21621 # define CAN_SAVE_CALL_ARGS
21623 -#if defined(HAVE_BUILTIN_BACKTRACE) && !defined(CAN_SAVE_CALL_STACKS)
21624 -# define CAN_SAVE_CALL_STACKS
21627 # if defined(SAVE_CALL_COUNT) && !defined(GC_ADD_CALLER) \
21628 - && defined(CAN_SAVE_CALL_STACKS)
21629 + && defined(GC_CAN_SAVE_CALL_STACKS)
21630 # define SAVE_CALL_CHAIN
21632 # ifdef SAVE_CALL_CHAIN
21633 @@ -1919,5 +1987,97 @@
21634 # if defined(MAKE_BACK_GRAPH) && !defined(DBG_HDRS_ALL)
21635 # define DBG_HDRS_ALL
21638 +# if defined(POINTER_MASK) && !defined(POINTER_SHIFT)
21639 +# define POINTER_SHIFT 0
21642 +# if defined(POINTER_SHIFT) && !defined(POINTER_MASK)
21643 +# define POINTER_MASK ((GC_word)(-1))
21646 +# if !defined(FIXUP_POINTER) && defined(POINTER_MASK)
21647 +# define FIXUP_POINTER(p) (p) = ((p) & (POINTER_MASK) << POINTER_SHIFT)
21650 +# if defined(FIXUP_POINTER)
21651 +# define NEED_FIXUP_POINTER 1
21653 +# define NEED_FIXUP_POINTER 0
21654 +# define FIXUP_POINTER(p)
21657 +#ifdef GC_PRIVATE_H
21658 + /* This relies on some type definitions from gc_priv.h, from */
21659 + /* where it's normally included. */
21661 + /* How to get heap memory from the OS: */
21662 + /* Note that sbrk()-like allocation is preferred, since it */
21663 + /* usually makes it possible to merge consecutively allocated */
21664 + /* chunks. It also avoids unintented recursion with */
21665 + /* -DREDIRECT_MALLOC. */
21666 + /* GET_MEM() returns a HLKSIZE aligned chunk. */
21667 + /* 0 is taken to mean failure. */
21668 + /* In the case os USE_MMAP, the argument must also be a */
21669 + /* physical page size. */
21670 + /* GET_MEM is currently not assumed to retrieve 0 filled space, */
21671 + /* though we should perhaps take advantage of the case in which */
21673 + struct hblk; /* See gc_priv.h. */
21675 + char * real_malloc();
21676 +# define GET_MEM(bytes) HBLKPTR(real_malloc((size_t)bytes + GC_page_size) \
21677 + + GC_page_size-1)
21680 + void * os2_alloc(size_t bytes);
21681 +# define GET_MEM(bytes) HBLKPTR((ptr_t)os2_alloc((size_t)bytes \
21682 + + GC_page_size) \
21683 + + GC_page_size-1)
21685 +# if defined(NEXT) || defined(DOS4GW) || \
21686 + (defined(AMIGA) && !defined(GC_AMIGA_FASTALLOC)) || \
21687 + (defined(SUNOS5) && !defined(USE_MMAP))
21688 +# define GET_MEM(bytes) HBLKPTR((size_t) \
21689 + calloc(1, (size_t)bytes + GC_page_size) \
21690 + + GC_page_size-1)
21693 + extern ptr_t GC_win32_get_mem();
21694 +# define GET_MEM(bytes) (struct hblk *)GC_win32_get_mem(bytes)
21697 +# if defined(USE_TEMPORARY_MEMORY)
21698 + extern Ptr GC_MacTemporaryNewPtr(size_t size,
21699 + Boolean clearMemory);
21700 +# define GET_MEM(bytes) HBLKPTR( \
21701 + GC_MacTemporaryNewPtr(bytes + GC_page_size, true) \
21702 + + GC_page_size-1)
21704 +# define GET_MEM(bytes) HBLKPTR( \
21705 + NewPtrClear(bytes + GC_page_size) + GC_page_size-1)
21709 + extern ptr_t GC_wince_get_mem();
21710 +# define GET_MEM(bytes) (struct hblk *)GC_wince_get_mem(bytes)
21712 +# if defined(AMIGA) && defined(GC_AMIGA_FASTALLOC)
21713 + extern void *GC_amiga_get_mem(size_t size);
21714 + define GET_MEM(bytes) HBLKPTR((size_t) \
21715 + GC_amiga_get_mem((size_t)bytes + GC_page_size) \
21716 + + GC_page_size-1)
21718 + extern ptr_t GC_unix_get_mem();
21719 +# define GET_MEM(bytes) (struct hblk *)GC_unix_get_mem(bytes)
21728 +#endif /* GC_PRIVATE_H */
21730 # endif /* GCCONFIG_H */
21731 diff -urNb boehm-gc/include/private/pthread_stop_world.h boehm-gc/include/private/pthread_stop_world.h
21732 --- boehm-gc/include/private/pthread_stop_world.h Wed Dec 31 16:00:00 1969
21733 +++ boehm-gc/include/private/pthread_stop_world.h Mon May 26 13:28:24 2003
21735 +#ifndef GC_PTHREAD_STOP_WORLD_H
21736 +#define GC_PTHREAD_STOP_WORLD_H
21738 +struct thread_stop_info {
21740 + word last_stop_count; /* GC_last_stop_count value when thread */
21741 + /* last successfully handled a suspend */
21743 + ptr_t stack_ptr; /* Valid only when stopped. */
21747 diff -urNb boehm-gc/include/private/pthread_support.h boehm-gc/include/private/pthread_support.h
21748 --- boehm-gc/include/private/pthread_support.h Wed Dec 31 16:00:00 1969
21749 +++ boehm-gc/include/private/pthread_support.h Mon May 26 13:28:24 2003
21751 +#ifndef GC_PTHREAD_SUPPORT_H
21752 +#define GC_PTHREAD_SUPPORT_H
21754 +# include "private/gc_priv.h"
21756 +# if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
21757 + && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS)
21759 +#if defined(GC_DARWIN_THREADS)
21760 +# include "private/darwin_stop_world.h"
21762 +# include "private/pthread_stop_world.h"
21765 +/* We use the allocation lock to protect thread-related data structures. */
21767 +/* The set of all known threads. We intercept thread creation and */
21769 +/* Protected by allocation/GC lock. */
21770 +/* Some of this should be declared volatile, but that's inconsistent */
21771 +/* with some library routine declarations. */
21772 +typedef struct GC_Thread_Rep {
21773 + struct GC_Thread_Rep * next; /* More recently allocated threads */
21774 + /* with a given pthread id come */
21775 + /* first. (All but the first are */
21776 + /* guaranteed to be dead, but we may */
21777 + /* not yet have registered the join.) */
21779 + /* Extra bookkeeping information the stopping code uses */
21780 + struct thread_stop_info stop_info;
21783 +# define FINISHED 1 /* Thread has exited. */
21784 +# define DETACHED 2 /* Thread is intended to be detached. */
21785 +# define MAIN_THREAD 4 /* True for the original thread only. */
21786 + short thread_blocked; /* Protected by GC lock. */
21787 + /* Treated as a boolean value. If set, */
21788 + /* thread will acquire GC lock before */
21789 + /* doing any pointer manipulations, and */
21790 + /* has set its sp value. Thus it does */
21791 + /* not need to be sent a signal to stop */
21793 + ptr_t stack_end; /* Cold end of the stack. */
21795 + ptr_t backing_store_end;
21796 + ptr_t backing_store_ptr;
21798 + void * status; /* The value returned from the thread. */
21799 + /* Used only to avoid premature */
21800 + /* reclamation of any data it might */
21802 +# ifdef THREAD_LOCAL_ALLOC
21803 +# if CPP_WORDSZ == 64 && defined(ALIGN_DOUBLE)
21804 +# define GRANULARITY 16
21805 +# define NFREELISTS 49
21807 +# define GRANULARITY 8
21808 +# define NFREELISTS 65
21810 + /* The ith free list corresponds to size i*GRANULARITY */
21811 +# define INDEX_FROM_BYTES(n) ((ADD_SLOP(n) + GRANULARITY - 1)/GRANULARITY)
21812 +# define BYTES_FROM_INDEX(i) ((i) * GRANULARITY - EXTRA_BYTES)
21813 +# define SMALL_ENOUGH(bytes) (ADD_SLOP(bytes) <= \
21814 + (NFREELISTS-1)*GRANULARITY)
21815 + ptr_t ptrfree_freelists[NFREELISTS];
21816 + ptr_t normal_freelists[NFREELISTS];
21817 +# ifdef GC_GCJ_SUPPORT
21818 + ptr_t gcj_freelists[NFREELISTS];
21820 + /* Free lists contain either a pointer or a small count */
21821 + /* reflecting the number of granules allocated at that */
21823 + /* 0 ==> thread-local allocation in use, free list */
21825 + /* > 0, <= DIRECT_GRANULES ==> Using global allocation, */
21826 + /* too few objects of this size have been */
21827 + /* allocated by this thread. */
21828 + /* >= HBLKSIZE => pointer to nonempty free list. */
21829 + /* > DIRECT_GRANULES, < HBLKSIZE ==> transition to */
21830 + /* local alloc, equivalent to 0. */
21831 +# define DIRECT_GRANULES (HBLKSIZE/GRANULARITY)
21832 + /* Don't use local free lists for up to this much */
21833 + /* allocation. */
21837 +# define THREAD_TABLE_SZ 128 /* Must be power of 2 */
21838 +extern volatile GC_thread GC_threads[THREAD_TABLE_SZ];
21840 +extern GC_bool GC_thr_initialized;
21842 +GC_thread GC_lookup_thread(pthread_t id);
21844 +void GC_stop_init();
21846 +#endif /* GC_PTHREADS && !GC_SOLARIS_THREADS.... etc */
21847 +#endif /* GC_PTHREAD_SUPPORT_H */
21848 diff -urNb boehm-gc/include/private/solaris_threads.h boehm-gc/include/private/solaris_threads.h
21849 --- boehm-gc/include/private/solaris_threads.h Tue Oct 23 16:21:39 2001
21850 +++ boehm-gc/include/private/solaris_threads.h Mon May 26 13:28:24 2003
21852 # define DETACHED 2 /* Thread is intended to be detached. */
21853 # define CLIENT_OWNS_STACK 4
21854 /* Stack was supplied by client. */
21855 -# define SUSPENDED 8 /* Currently suspended. */
21856 +# define SUSPNDED 8 /* Currently suspended. */
21857 + /* SUSPENDED is used insystem header. */
21861 diff -urNb boehm-gc/include/private/specific.h boehm-gc/include/private/specific.h
21862 --- boehm-gc/include/private/specific.h Fri Mar 29 14:52:13 2002
21863 +++ boehm-gc/include/private/specific.h Mon May 26 13:28:24 2003
21865 unsigned hash_val = CACHE_HASH(qtid);
21866 tse * volatile * entry_ptr = key -> cache + hash_val;
21867 tse * entry = *entry_ptr; /* Must be loaded only once. */
21868 - if (entry -> qtid == qtid) {
21869 + if (EXPECT(entry -> qtid == qtid, 1)) {
21870 GC_ASSERT(entry -> thread == pthread_self());
21871 return entry -> value;
21873 diff -urNb boehm-gc/irix_threads.c boehm-gc/irix_threads.c
21874 --- boehm-gc/irix_threads.c Sun May 19 10:36:14 2002
21875 +++ boehm-gc/irix_threads.c Mon May 26 12:48:52 2003
21877 #undef pthread_join
21878 #undef pthread_detach
21880 +#ifdef HANDLE_FORK
21881 + --> Not yet supported. Try porting the code from linux_threads.c.
21884 void GC_thr_init();
21887 diff -urNb boehm-gc/mach_dep.c boehm-gc/mach_dep.c
21888 --- boehm-gc/mach_dep.c Thu Jul 18 13:06:00 2002
21889 +++ boehm-gc/mach_dep.c Mon May 26 12:48:52 2003
21891 /* on your architecture. Run the test_setjmp program to see whether */
21892 /* there is any chance it will work. */
21894 -#ifndef USE_GENERIC_PUSH_REGS
21895 +#if !defined(USE_GENERIC_PUSH_REGS) && !defined(USE_ASM_PUSH_REGS)
21896 void GC_push_regs()
21899 @@ -228,7 +228,8 @@
21900 || ( defined(I386) && defined(FREEBSD) && defined(__ELF__) ) \
21901 || ( defined(I386) && defined(NETBSD) && defined(__ELF__) ) \
21902 || ( defined(I386) && defined(OPENBSD) && defined(__ELF__) ) \
21903 - || ( defined(I386) && defined(HURD) && defined(__ELF__) )
21904 + || ( defined(I386) && defined(HURD) && defined(__ELF__) ) \
21905 + || ( defined(I386) && defined(DGUX) )
21907 /* This is modified for Linux with ELF (Note: _ELF_ only) */
21908 /* This section handles FreeBSD with ELF. */
21909 @@ -377,7 +378,7 @@
21910 /* other machines... */
21911 # if !defined(M68K) && !defined(VAX) && !defined(RT)
21912 # if !defined(SPARC) && !defined(I386) && !defined(NS32K)
21913 -# if !defined(POWERPC) && !defined(UTS4)
21914 +# if !(defined(POWERPC) && defined(LINUX)) && !defined(UTS4)
21915 # if !defined(PJ) && !(defined(MIPS) && defined(LINUX))
21918 @@ -385,7 +386,7 @@
21922 -#endif /* !USE_GENERIC_PUSH_REGS */
21923 +#endif /* !USE_GENERIC_PUSH_REGS && !USE_ASM_PUSH_REGS */
21925 #if defined(USE_GENERIC_PUSH_REGS)
21926 void GC_generic_push_regs(cold_gc_frame)
21927 diff -urNb boehm-gc/malloc.c boehm-gc/malloc.c
21928 --- boehm-gc/malloc.c Mon Feb 11 20:37:53 2002
21929 +++ boehm-gc/malloc.c Mon May 26 12:48:52 2003
21930 @@ -182,6 +182,7 @@
21934 + if (GC_have_errors) GC_print_all_errors();
21935 GC_INVOKE_FINALIZERS();
21936 if (SMALL_OBJ(lb)) {
21938 @@ -294,6 +295,11 @@
21939 return(GENERAL_MALLOC((word)lb, NORMAL));
21941 /* See above comment on signals. */
21942 + GC_ASSERT(0 == obj_link(op)
21943 + || (word)obj_link(op)
21944 + <= (word)GC_greatest_plausible_heap_addr
21945 + && (word)obj_link(op)
21946 + >= (word)GC_least_plausible_heap_addr);
21947 *opp = obj_link(op);
21949 GC_words_allocd += lw;
21950 @@ -338,6 +344,7 @@
21951 return((GC_PTR)REDIRECT_MALLOC(n*lb));
21955 # include <string.h>
21957 char *strdup(const char *s)
21958 @@ -346,11 +353,16 @@
21962 - size_t len = strlen + 1;
21963 + size_t len = strlen(s) + 1;
21964 char * result = ((char *)REDIRECT_MALLOC(len+1));
21965 BCOPY(s, result, len+1);
21968 +#endif /* !defined(strdup) */
21969 + /* If strdup is macro defined, we assume that it actually calls malloc, */
21970 + /* and thus the right thing will happen even without overriding it. */
21971 + /* This seems to be true on most Linux systems. */
21973 # endif /* REDIRECT_MALLOC */
21975 /* Explicitly deallocate an object p. */
21976 @@ -373,6 +385,7 @@
21977 /* Required by ANSI. It's not my fault ... */
21980 + GC_ASSERT(GC_base(p) == p);
21981 # if defined(REDIRECT_MALLOC) && \
21982 (defined(GC_SOLARIS_THREADS) || defined(GC_LINUX_THREADS) \
21983 || defined(__MINGW32__)) /* Should this be MSWIN32 in general? */
21984 @@ -454,7 +467,10 @@
21986 #endif /* THREADS */
21988 -# ifdef REDIRECT_MALLOC
21989 +# if defined(REDIRECT_MALLOC) && !defined(REDIRECT_FREE)
21990 +# define REDIRECT_FREE GC_free
21992 +# ifdef REDIRECT_FREE
21994 void free(GC_PTR p)
21996 @@ -463,7 +479,7 @@
21999 # ifndef IGNORE_FREE
22001 + REDIRECT_FREE(p);
22004 # endif /* REDIRECT_MALLOC */
22005 diff -urNb boehm-gc/mallocx.c boehm-gc/mallocx.c
22006 --- boehm-gc/mallocx.c Fri Aug 17 18:04:43 2001
22007 +++ boehm-gc/mallocx.c Mon May 26 12:48:52 2003
22008 @@ -142,7 +142,11 @@
22012 -# if defined(REDIRECT_MALLOC) || defined(REDIRECT_REALLOC)
22013 +# if defined(REDIRECT_MALLOC) && !defined(REDIRECT_REALLOC)
22014 +# define REDIRECT_REALLOC GC_realloc
22017 +# ifdef REDIRECT_REALLOC
22019 GC_PTR realloc(GC_PTR p, size_t lb)
22021 @@ -151,13 +155,9 @@
22025 -# ifdef REDIRECT_REALLOC
22026 return(REDIRECT_REALLOC(p, lb));
22028 - return(GC_realloc(p, lb));
22031 -# endif /* REDIRECT_MALLOC */
22032 +# endif /* REDIRECT_REALLOC */
22035 /* The same thing, except caller does not hold allocation lock. */
22036 @@ -177,6 +177,7 @@
22037 lw = ROUNDED_UP_WORDS(lb);
22038 n_blocks = OBJ_SZ_TO_BLOCKS(lw);
22039 init = GC_obj_kinds[k].ok_init;
22040 + if (GC_have_errors) GC_print_all_errors();
22041 GC_INVOKE_FINALIZERS();
22044 @@ -286,6 +287,7 @@
22048 + if (GC_have_errors) GC_print_all_errors();
22049 GC_INVOKE_FINALIZERS();
22052 @@ -354,6 +356,7 @@
22055 lw = ALIGNED_WORDS(lb);
22056 + if (GC_have_errors) GC_print_all_errors();
22057 GC_INVOKE_FINALIZERS();
22060 @@ -375,6 +378,7 @@
22061 while ((hbp = *rlh) != 0) {
22063 *rlh = hhdr -> hb_next;
22064 + hhdr -> hb_last_reclaimed = (unsigned short) GC_gc_no;
22065 # ifdef PARALLEL_MARK
22067 signed_word my_words_allocd_tmp = GC_words_allocd_tmp;
22068 @@ -574,6 +578,44 @@
22069 return((GC_PTR) op);
22074 +/* Not well tested nor integrated. */
22075 +/* Debug version is tricky and currently missing. */
22076 +#include <limits.h>
22078 +GC_PTR GC_memalign(size_t align, size_t lb)
22084 +# ifdef ALIGN_DOUBLE
22085 + if (align <= WORDS_TO_BYTES(2) && lb > align) return GC_malloc(lb);
22087 + if (align <= WORDS_TO_BYTES(1)) return GC_malloc(lb);
22088 + if (align >= HBLKSIZE/2 || lb >= HBLKSIZE/2) {
22089 + if (align > HBLKSIZE) return GC_oom_fn(LONG_MAX-1024) /* Fail */;
22090 + return GC_malloc(lb <= HBLKSIZE? HBLKSIZE : lb);
22091 + /* Will be HBLKSIZE aligned. */
22093 + /* We could also try to make sure that the real rounded-up object size */
22094 + /* is a multiple of align. That would be correct up to HBLKSIZE. */
22095 + new_lb = lb + align - 1;
22096 + result = GC_malloc(new_lb);
22097 + offset = (word)result % align;
22098 + if (offset != 0) {
22099 + offset = align - offset;
22100 + if (!GC_all_interior_pointers) {
22101 + if (offset >= VALID_OFFSET_SZ) return GC_malloc(HBLKSIZE);
22102 + GC_register_displacement(offset);
22105 + result = (GC_PTR) ((ptr_t)result + offset);
22106 + GC_ASSERT((word)result % align == 0);
22111 # ifdef ATOMIC_UNCOLLECTABLE
22112 /* Allocate lb bytes of pointerfree, untraced, uncollectable data */
22113 diff -urNb boehm-gc/mark.c boehm-gc/mark.c
22114 --- boehm-gc/mark.c Fri Mar 29 14:52:12 2002
22115 +++ boehm-gc/mark.c Mon May 26 12:48:52 2003
22117 # include <stdio.h>
22118 # include "private/gc_pmark.h"
22120 +#if defined(MSWIN32) && defined(__GNUC__)
22121 +# include <excpt.h>
22124 /* We put this here to minimize the risk of inlining. */
22127 @@ -261,20 +265,20 @@
22128 /* remains valid until all marking is complete. */
22129 /* A zero value indicates that it's OK to miss some */
22130 /* register values. */
22131 -GC_bool GC_mark_some(cold_gc_frame)
22132 -ptr_t cold_gc_frame;
22133 +/* We hold the allocation lock. In the case of */
22134 +/* incremental collection, the world may not be stopped.*/
22136 + /* For win32, this is called after we establish a structured */
22137 + /* exception handler, in case Windows unmaps one of our root */
22138 + /* segments. See below. In either case, we acquire the */
22139 + /* allocator lock long before we get here. */
22140 + GC_bool GC_mark_some_inner(cold_gc_frame)
22141 + ptr_t cold_gc_frame;
22143 + GC_bool GC_mark_some(cold_gc_frame)
22144 + ptr_t cold_gc_frame;
22147 -#if defined(MSWIN32) && !defined(__GNUC__)
22148 - /* Windows 98 appears to asynchronously create and remove writable */
22149 - /* memory mappings, for reasons we haven't yet understood. Since */
22150 - /* we look for writable regions to determine the root set, we may */
22151 - /* try to mark from an address range that disappeared since we */
22152 - /* started the collection. Thus we have to recover from faults here. */
22153 - /* This code does not appear to be necessary for Windows 95/NT/2000. */
22154 - /* Note that this code should never generate an incremental GC write */
22157 -#endif /* defined(MSWIN32) && !defined(__GNUC__) */
22158 switch(GC_mark_state) {
22161 @@ -395,23 +399,130 @@
22162 ABORT("GC_mark_some: bad state");
22165 -#if defined(MSWIN32) && !defined(__GNUC__)
22174 + EXCEPTION_REGISTRATION ex_reg;
22179 + static EXCEPTION_DISPOSITION mark_ex_handler(
22180 + struct _EXCEPTION_RECORD *ex_rec,
22182 + struct _CONTEXT *context,
22185 + if (ex_rec->ExceptionCode == STATUS_ACCESS_VIOLATION) {
22186 + ext_ex_regn *xer = (ext_ex_regn *)est_frame;
22188 + /* Unwind from the inner function assuming the standard */
22189 + /* function prologue. */
22190 + /* Assumes code has not been compiled with */
22191 + /* -fomit-frame-pointer. */
22192 + context->Esp = context->Ebp;
22193 + context->Ebp = *((DWORD *)context->Esp);
22194 + context->Esp = context->Esp - 8;
22196 + /* Resume execution at the "real" handler within the */
22197 + /* wrapper function. */
22198 + context->Eip = (DWORD )(xer->alt_path);
22200 + return ExceptionContinueExecution;
22203 + return ExceptionContinueSearch;
22206 +# endif /* __GNUC__ */
22209 + GC_bool GC_mark_some(cold_gc_frame)
22210 + ptr_t cold_gc_frame;
22215 + /* Windows 98 appears to asynchronously create and remove */
22216 + /* writable memory mappings, for reasons we haven't yet */
22217 + /* understood. Since we look for writable regions to */
22218 + /* determine the root set, we may try to mark from an */
22219 + /* address range that disappeared since we started the */
22220 + /* collection. Thus we have to recover from faults here. */
22221 + /* This code does not appear to be necessary for Windows */
22222 + /* 95/NT/2000. Note that this code should never generate */
22223 + /* an incremental GC write fault. */
22227 +# else /* __GNUC__ */
22229 + /* Manually install an exception handler since GCC does */
22230 + /* not yet support Structured Exception Handling (SEH) on */
22235 + er.alt_path = &&handle_ex;
22236 + er.ex_reg.handler = mark_ex_handler;
22237 + asm volatile ("movl %%fs:0, %0" : "=r" (er.ex_reg.prev));
22238 + asm volatile ("movl %0, %%fs:0" : : "r" (&er));
22240 +# endif /* __GNUC__ */
22242 + ret_val = GC_mark_some_inner(cold_gc_frame);
22246 } __except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
22247 EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
22249 +# else /* __GNUC__ */
22251 + /* Prevent GCC from considering the following code unreachable */
22252 + /* and thus eliminating it. */
22253 + if (er.alt_path != 0)
22257 + /* Execution resumes from here on an access violation. */
22259 +# endif /* __GNUC__ */
22262 if (GC_print_stats) {
22263 GC_printf0("Caught ACCESS_VIOLATION in marker. "
22264 "Memory mapping disappeared.\n");
22266 # endif /* CONDPRINT */
22268 /* We have bad roots on the stack. Discard mark stack. */
22269 /* Rescan from marked objects. Redetermine roots. */
22270 GC_invalidate_mark_state();
22279 -#endif /* defined(MSWIN32) && !defined(__GNUC__) */
22282 +# else /* __GNUC__ */
22285 + /* Uninstall the exception handler */
22286 + asm volatile ("mov %0, %%fs:0" : : "r" (er.ex_reg.prev));
22288 +# endif /* __GNUC__ */
22292 +#endif /* MSWIN32 */
22295 GC_bool GC_mark_stack_empty()
22296 @@ -434,13 +545,7 @@
22297 /* for the large object. */
22298 /* - just return current if it does not point to a large object. */
22300 -# ifdef PRINT_BLACK_LIST
22301 - ptr_t GC_find_start(current, hhdr, new_hdr_p, source)
22304 - ptr_t GC_find_start(current, hhdr, new_hdr_p)
22307 +ptr_t GC_find_start(current, hhdr, new_hdr_p)
22308 register ptr_t current;
22309 register hdr *hhdr, **new_hdr_p;
22311 @@ -468,7 +573,6 @@
22318 void GC_invalidate_mark_state()
22319 @@ -546,8 +650,8 @@
22320 /* Large length. */
22321 /* Process part of the range to avoid pushing too much on the */
22323 - GC_ASSERT(descr < GC_greatest_plausible_heap_addr
22324 - - GC_least_plausible_heap_addr);
22325 + GC_ASSERT(descr < (word)GC_greatest_plausible_heap_addr
22326 + - (word)GC_least_plausible_heap_addr);
22327 # ifdef PARALLEL_MARK
22328 # define SHARE_BYTES 2048
22329 if (descr > SHARE_BYTES && GC_parallel
22330 @@ -578,6 +682,7 @@
22331 while (descr != 0) {
22332 if ((signed_word)descr < 0) {
22333 current = *current_p;
22334 + FIXUP_POINTER(current);
22335 if ((ptr_t)current >= least_ha && (ptr_t)current < greatest_ha) {
22337 HC_PUSH_CONTENTS((ptr_t)current, mark_stack_top,
22338 @@ -652,6 +757,7 @@
22339 PREFETCH((ptr_t)limit - PREF_DIST*CACHE_LINE_SIZE);
22340 GC_ASSERT(limit >= current_p);
22342 + FIXUP_POINTER(deferred);
22343 limit = (word *)((char *)limit - ALIGNMENT);
22344 if ((ptr_t)deferred >= least_ha && (ptr_t)deferred < greatest_ha) {
22345 PREFETCH(deferred);
22346 @@ -661,6 +767,7 @@
22347 /* Unroll once, so we don't do too many of the prefetches */
22348 /* based on limit. */
22350 + FIXUP_POINTER(deferred);
22351 limit = (word *)((char *)limit - ALIGNMENT);
22352 if ((ptr_t)deferred >= least_ha && (ptr_t)deferred < greatest_ha) {
22353 PREFETCH(deferred);
22354 @@ -675,6 +782,7 @@
22355 /* Since HC_PUSH_CONTENTS expands to a lot of code, */
22357 current = *current_p;
22358 + FIXUP_POINTER(current);
22359 PREFETCH((ptr_t)current_p + PREF_DIST*CACHE_LINE_SIZE);
22360 if ((ptr_t)current >= least_ha && (ptr_t)current < greatest_ha) {
22361 /* Prefetch the contents of the object we just pushed. It's */
22362 @@ -726,22 +834,33 @@
22363 mse *top = local - 1;
22366 + /* Make sure that prior writes to the mark stack are visible. */
22367 + /* On some architectures, the fact that the reads are */
22368 + /* volatile should suffice. */
22369 +# if !defined(IA64) && !defined(HP_PA) && !defined(I386)
22370 + GC_memory_barrier();
22372 GC_ASSERT(high >= low-1 && high - low + 1 <= GC_mark_stack_size);
22373 for (p = low; p <= high && i <= max; ++p) {
22374 word descr = *(volatile word *) &(p -> mse_descr);
22375 + /* In the IA64 memory model, the following volatile store is */
22376 + /* ordered after this read of descr. Thus a thread must read */
22377 + /* the original nonzero value. HP_PA appears to be similar, */
22378 + /* and if I'm reading the P4 spec correctly, X86 is probably */
22379 + /* also OK. In some other cases we need a barrier. */
22380 +# if !defined(IA64) && !defined(HP_PA) && !defined(I386)
22381 + GC_memory_barrier();
22384 *(volatile word *) &(p -> mse_descr) = 0;
22385 + /* More than one thread may get this entry, but that's only */
22386 + /* a minor performance problem. */
22388 top -> mse_descr = descr;
22389 top -> mse_start = p -> mse_start;
22390 GC_ASSERT( top -> mse_descr & GC_DS_TAGS != GC_DS_LENGTH ||
22391 top -> mse_descr < GC_greatest_plausible_heap_addr
22392 - GC_least_plausible_heap_addr);
22393 - /* There is no synchronization here. We assume that at */
22394 - /* least one thread will see the original descriptor. */
22395 - /* Otherwise we need a barrier. */
22396 - /* More than one thread may get this entry, but that's only */
22397 - /* a minor performance problem. */
22398 /* If this is a big object, count it as */
22399 /* size/256 + 1 objects. */
22401 @@ -778,7 +897,7 @@
22402 BCOPY(low, my_start, stack_size * sizeof(mse));
22403 GC_ASSERT(GC_mark_stack_top = my_top);
22404 # if !defined(IA64) && !defined(HP_PA)
22405 - GC_memory_write_barrier();
22406 + GC_memory_barrier();
22408 /* On IA64, the volatile write acts as a release barrier. */
22409 GC_mark_stack_top = my_top + stack_size;
22410 @@ -1342,7 +1461,7 @@
22411 # define GC_least_plausible_heap_addr least_ha
22413 if (top == 0) return;
22414 - /* check all pointers in range and put in push if they appear */
22415 + /* check all pointers in range and push if they appear */
22417 lim = t - 1 /* longword */;
22418 for (p = b; p <= lim; p = (word *)(((char *)p) + ALIGNMENT)) {
22419 @@ -1366,7 +1485,7 @@
22421 ptr_t cold_gc_frame;
22423 - if (GC_all_interior_pointers) {
22424 + if (!NEED_FIXUP_POINTER && GC_all_interior_pointers) {
22425 # define EAGER_BYTES 1024
22426 /* Push the hot end of the stack eagerly, so that register values */
22427 /* saved inside GC frames are marked before they disappear. */
22428 @@ -1375,6 +1494,7 @@
22429 GC_push_all_stack(bottom, top);
22432 + GC_ASSERT(bottom <= cold_gc_frame && cold_gc_frame <= top);
22433 # ifdef STACK_GROWS_DOWN
22434 GC_push_all(cold_gc_frame - sizeof(ptr_t), top);
22435 GC_push_all_eager(bottom, cold_gc_frame);
22436 @@ -1395,7 +1515,7 @@
22440 - if (GC_all_interior_pointers) {
22441 + if (!NEED_FIXUP_POINTER && GC_all_interior_pointers) {
22442 GC_push_all(bottom, top);
22444 GC_push_all_eager(bottom, top);
22445 diff -urNb boehm-gc/mark_rts.c boehm-gc/mark_rts.c
22446 --- boehm-gc/mark_rts.c Mon Mar 3 22:38:29 2003
22447 +++ boehm-gc/mark_rts.c Mon May 26 12:48:52 2003
22448 @@ -275,33 +275,72 @@
22451 /* Internal use only; lock held. */
22452 -void GC_remove_tmp_roots()
22453 +static void GC_remove_root_at_pos(i)
22458 - for (i = 0; i < n_root_sets; ) {
22459 - if (GC_static_roots[i].r_tmp) {
22461 - (GC_static_roots[i].r_end - GC_static_roots[i].r_start);
22462 + GC_root_size -= (GC_static_roots[i].r_end - GC_static_roots[i].r_start);
22463 GC_static_roots[i].r_start = GC_static_roots[n_root_sets-1].r_start;
22464 GC_static_roots[i].r_end = GC_static_roots[n_root_sets-1].r_end;
22465 GC_static_roots[i].r_tmp = GC_static_roots[n_root_sets-1].r_tmp;
22471 -# if !defined(MSWIN32) && !defined(MSWINCE)
22475 +#if !defined(MSWIN32) && !defined(MSWINCE)
22476 +static void GC_rebuild_root_index()
22480 for (i = 0; i < RT_SIZE; i++) GC_root_index[i] = 0;
22481 for (i = 0; i < n_root_sets; i++)
22482 add_roots_to_index(GC_static_roots + i);
22486 +/* Internal use only; lock held. */
22487 +void GC_remove_tmp_roots()
22491 + for (i = 0; i < n_root_sets; ) {
22492 + if (GC_static_roots[i].r_tmp) {
22493 + GC_remove_root_at_pos(i);
22499 + #if !defined(MSWIN32) && !defined(MSWINCE)
22500 + GC_rebuild_root_index();
22504 +#if !defined(MSWIN32) && !defined(MSWINCE)
22505 +void GC_remove_roots(b, e)
22506 +char * b; char * e;
22510 + DISABLE_SIGNALS();
22512 + GC_remove_roots_inner(b, e);
22514 + ENABLE_SIGNALS();
22517 +/* Should only be called when the lock is held */
22518 +void GC_remove_roots_inner(b,e)
22519 +char * b; char * e;
22522 + for (i = 0; i < n_root_sets; ) {
22523 + if (GC_static_roots[i].r_start >= (ptr_t)b && GC_static_roots[i].r_end <= (ptr_t)e) {
22524 + GC_remove_root_at_pos(i);
22529 + GC_rebuild_root_index();
22531 +#endif /* !defined(MSWIN32) && !defined(MSWINCE) */
22533 #if defined(MSWIN32) || defined(_WIN32_WCE_EMULATION)
22534 /* Workaround for the OS mapping and unmapping behind our back: */
22535 @@ -573,8 +612,11 @@
22537 /* Mark thread local free lists, even if their mark */
22538 /* descriptor excludes the link field. */
22539 + /* If the world is not stopped, this is unsafe. It is */
22540 + /* also unnecessary, since we will do this again with the */
22541 + /* world stopped. */
22542 # ifdef THREAD_LOCAL_ALLOC
22543 - GC_mark_thread_local_free_lists();
22544 + if (GC_world_stopped) GC_mark_thread_local_free_lists();
22548 diff -urNb boehm-gc/misc.c boehm-gc/misc.c
22549 --- boehm-gc/misc.c Mon Mar 3 22:38:30 2003
22550 +++ boehm-gc/misc.c Mon May 26 12:48:52 2003
22552 # ifdef GC_SOLARIS_THREADS
22553 mutex_t GC_allocate_ml; /* Implicitly initialized. */
22555 -# ifdef GC_WIN32_THREADS
22556 -# if !defined(GC_NOT_DLL) && (defined(_DLL) || defined(GC_DLL))
22557 +# if defined(GC_WIN32_THREADS)
22558 +# if defined(GC_PTHREADS)
22559 + pthread_mutex_t GC_allocate_ml = PTHREAD_MUTEX_INITIALIZER;
22560 +# elif defined(GC_DLL)
22561 __declspec(dllexport) CRITICAL_SECTION GC_allocate_ml;
22563 CRITICAL_SECTION GC_allocate_ml;
22565 /* defined here so we don't have to load debug_malloc.o */
22567 void (*GC_check_heap) GC_PROTO((void)) = (void (*) GC_PROTO((void)))0;
22568 +void (*GC_print_all_smashed) GC_PROTO((void)) = (void (*) GC_PROTO((void)))0;
22570 void (*GC_start_call_back) GC_PROTO((void)) = (void (*) GC_PROTO((void)))0;
22572 @@ -109,6 +112,10 @@
22574 GC_bool GC_print_back_height = 0;
22576 +#ifndef NO_DEBUGGING
22577 + GC_bool GC_dump_regularly = 0; /* Generate regular debugging dumps. */
22581 int GC_find_leak = 1;
22583 @@ -137,6 +144,13 @@
22585 extern signed_word GC_mem_found;
22587 +void * GC_project2(arg1, arg2)
22594 # ifdef MERGE_SIZES
22595 /* Set things up so that GC_size_map[i] >= words(i), */
22596 /* but not too much bigger */
22597 @@ -455,7 +469,7 @@
22602 +#if defined(GC_WIN32_THREADS) && !defined(GC_PTHREADS)
22603 if (!GC_is_initialized) InitializeCriticalSection(&GC_allocate_ml);
22604 #endif /* MSWIN32 */
22606 @@ -473,6 +487,15 @@
22607 GC_init_parallel();
22609 # endif /* PARALLEL_MARK || THREAD_LOCAL_ALLOC */
22611 +# if defined(DYNAMIC_LOADING) && defined(DARWIN)
22613 + /* This must be called WITHOUT the allocation lock held
22614 + and before any threads are created */
22615 + extern void GC_init_dyld();
22621 #if defined(MSWIN32) || defined(MSWINCE)
22622 @@ -485,6 +508,22 @@
22624 extern void GC_setpagesize();
22628 +extern GC_bool GC_no_win32_dlls;
22630 +# define GC_no_win32_dlls FALSE
22633 +void GC_exit_check GC_PROTO((void))
22638 +#ifdef SEARCH_FOR_DATA_START
22639 + extern void GC_init_linux_data_start GC_PROTO((void));
22644 extern void GC_set_and_save_fault_handler GC_PROTO((void (*handler)(int)));
22645 @@ -495,12 +534,23 @@
22646 GC_err_printf1("Caught signal %d: looping in handler\n", sig);
22652 -extern GC_bool GC_no_win32_dlls;
22654 -# define GC_no_win32_dlls FALSE
22655 +static GC_bool installed_looping_handler = FALSE;
22657 +void maybe_install_looping_handler()
22659 + /* Install looping handler before the write fault handler, so we */
22660 + /* handle write faults correctly. */
22661 + if (!installed_looping_handler && 0 != GETENV("GC_LOOP_ON_ABORT")) {
22662 + GC_set_and_save_fault_handler(looping_handler);
22663 + installed_looping_handler = TRUE;
22667 +#else /* !UNIX_LIKE */
22669 +# define maybe_install_looping_handler()
22673 void GC_init_inner()
22674 @@ -517,12 +567,19 @@
22675 # if defined(MSWIN32) || defined(MSWINCE)
22676 InitializeCriticalSection(&GC_write_cs);
22679 if (0 != GETENV("GC_PRINT_STATS")) {
22680 GC_print_stats = 1;
22682 +# ifndef NO_DEBUGGING
22683 + if (0 != GETENV("GC_DUMP_REGULARLY")) {
22684 + GC_dump_regularly = 1;
22687 if (0 != GETENV("GC_FIND_LEAK")) {
22690 + atexit(GC_exit_check);
22693 if (0 != GETENV("GC_ALL_INTERIOR_POINTERS")) {
22694 GC_all_interior_pointers = 1;
22695 @@ -560,11 +617,7 @@
22700 - if (0 != GETENV("GC_LOOP_ON_ABORT")) {
22701 - GC_set_and_save_fault_handler(looping_handler);
22704 + maybe_install_looping_handler();
22705 /* Adjust normal object descriptor for extra allocation. */
22706 if (ALIGNMENT > GC_DS_TAGS && EXTRA_BYTES != 0) {
22707 GC_obj_kinds[NORMAL].ok_descriptor = ((word)(-ALIGNMENT) | GC_DS_LENGTH);
22708 @@ -599,11 +652,21 @@
22709 # if defined(LINUX) && defined(IA64)
22710 GC_register_stackbottom = GC_get_register_stack_base();
22713 +# if defined(LINUX) && defined(IA64)
22714 + if (GC_register_stackbottom == 0) {
22715 + WARN("GC_register_stackbottom should be set with GC_stackbottom", 0);
22716 + /* The following is likely to fail, since we rely on */
22717 + /* alignment properties that may not hold with a user set */
22718 + /* GC_stackbottom. */
22719 + GC_register_stackbottom = GC_get_register_stack_base();
22722 - GC_ASSERT(sizeof (ptr_t) == sizeof(word));
22723 - GC_ASSERT(sizeof (signed_word) == sizeof(word));
22724 - GC_ASSERT(sizeof (struct hblk) == HBLKSIZE);
22727 + GC_STATIC_ASSERT(sizeof (ptr_t) == sizeof(word));
22728 + GC_STATIC_ASSERT(sizeof (signed_word) == sizeof(word));
22729 + GC_STATIC_ASSERT(sizeof (struct hblk) == HBLKSIZE);
22731 # if defined(STACK_GROWS_UP) && defined(STACK_GROWS_DOWN)
22733 @@ -642,6 +705,18 @@
22734 initial_heap_sz = divHBLKSZ(initial_heap_sz);
22738 + char * sz_str = GETENV("GC_MAXIMUM_HEAP_SIZE");
22739 + if (sz_str != NULL) {
22740 + word max_heap_sz = (word)atol(sz_str);
22741 + if (max_heap_sz < initial_heap_sz * HBLKSIZE) {
22742 + WARN("Bad maximum heap size %s - ignoring it.\n",
22745 + if (0 == GC_max_retries) GC_max_retries = 2;
22746 + GC_set_max_heap_size(max_heap_sz);
22749 if (!GC_expand_hp_inner(initial_heap_sz)) {
22750 GC_err_printf0("Can't start up: not enough memory\n");
22752 @@ -677,6 +752,7 @@
22753 GC_incremental = TRUE;
22755 # endif /* !SMALL_CONFIG */
22757 /* Get black list set up and/or incrmental GC started */
22758 if (!GC_dont_precollect || GC_incremental) GC_gcollect_inner();
22759 GC_is_initialized = TRUE;
22760 @@ -713,6 +789,7 @@
22762 if (GC_no_win32_dlls) goto out;
22763 # ifndef GC_SOLARIS_THREADS
22764 + maybe_install_looping_handler(); /* Before write fault handler! */
22767 if (!GC_is_initialized) {
22768 @@ -932,6 +1009,17 @@
22772 +# if defined(__STDC__) || defined(__cplusplus)
22773 + GC_word GC_set_free_space_divisor (GC_word value)
22775 + GC_word GC_set_free_space_divisor (value)
22779 + GC_word old = GC_free_space_divisor;
22780 + GC_free_space_divisor = value;
22786 @@ -958,122 +1046,18 @@
22790 -#ifdef NEED_CALLINFO
22792 -#ifdef HAVE_BUILTIN_BACKTRACE
22793 -# include <execinfo.h>
22795 -# include <unistd.h>
22799 -void GC_print_callers (info)
22800 -struct callinfo info[NFRAMES];
22805 - GC_err_printf0("\tCaller at allocation:\n");
22807 - GC_err_printf0("\tCall chain at allocation:\n");
22809 - for (i = 0; i < NFRAMES; i++) {
22810 - if (info[i].ci_pc == 0) break;
22815 - GC_err_printf0("\t\targs: ");
22816 - for (j = 0; j < NARGS; j++) {
22817 - if (j != 0) GC_err_printf0(", ");
22818 - GC_err_printf2("%d (0x%X)", ~(info[i].ci_arg[j]),
22819 - ~(info[i].ci_arg[j]));
22821 - GC_err_printf0("\n");
22824 -# if defined(HAVE_BUILTIN_BACKTRACE) && !defined(REDIRECT_MALLOC)
22825 - /* Unfortunately backtrace_symbols calls malloc, which makes */
22826 - /* it dangersous if that has been redirected. */
22828 - char **sym_name =
22829 - backtrace_symbols((void **)(&(info[i].ci_pc)), 1);
22830 - char *name = sym_name[0];
22831 - GC_bool found_it = (strchr(name, '(') != 0);
22835 -# define EXE_SZ 100
22836 - static char exe_name[EXE_SZ];
22837 -# define CMD_SZ 200
22838 - char cmd_buf[CMD_SZ];
22839 -# define RESULT_SZ 200
22840 - static char result_buf[RESULT_SZ];
22841 - size_t result_len;
22842 - static GC_bool found_exe_name = FALSE;
22843 - static GC_bool will_fail = FALSE;
22845 - /* Unfortunately, this is the common case for the */
22846 - /* main executable. */
22847 - /* Try to get it via a hairy and expensive scheme. */
22848 - /* First we get the name of the executable: */
22849 - if (will_fail) goto out;
22850 - if (!found_exe_name) {
22851 - ret_code = readlink("/proc/self/exe", exe_name, EXE_SZ);
22852 - if (ret_code < 0 || ret_code >= EXE_SZ || exe_name[0] != '/') {
22853 - will_fail = TRUE; /* Dont try again. */
22856 - exe_name[ret_code] = '\0';
22857 - found_exe_name = TRUE;
22859 - /* Then we use popen to start addr2line -e <exe> <addr> */
22860 - /* There are faster ways to do this, but hopefully this */
22861 - /* isn't time critical. */
22862 - sprintf(cmd_buf, "/usr/bin/addr2line -e %s 0x%lx", exe_name,
22863 - (unsigned long)info[i].ci_pc);
22864 - pipe = popen(cmd_buf, "r");
22865 - if (pipe < 0 || fgets(result_buf, RESULT_SZ, pipe) == 0) {
22866 - will_fail = TRUE;
22869 - result_len = strlen(result_buf);
22870 - if (result_buf[result_len - 1] == '\n') --result_len;
22871 - if (result_buf[0] == '?'
22872 - || result_buf[result_len-2] == ':'
22873 - && result_buf[result_len-1] == '0')
22875 - if (result_len < RESULT_SZ - 25) {
22876 - /* Add in hex address */
22877 - sprintf(result_buf + result_len, " [0x%lx]",
22878 - (unsigned long)info[i].ci_pc);
22880 - name = result_buf;
22885 - GC_err_printf1("\t\t%s\n", name);
22889 - GC_err_printf1("\t\t##PC##= 0x%lx\n", info[i].ci_pc);
22894 -#endif /* SAVE_CALL_CHAIN */
22896 -/* Needed by SRC_M3, gcj, and should perhaps be the official interface */
22897 -/* to GC_dont_gc. */
22912 #if !defined(NO_DEBUGGING)
22913 @@ -1088,6 +1072,8 @@
22914 GC_print_hblkfreelist();
22915 GC_printf0("\n***Blocks in use:\n");
22916 GC_print_block_list();
22917 + GC_printf0("\n***Finalization statistics:\n");
22918 + GC_print_finalization_stats();
22921 #endif /* NO_DEBUGGING */
22922 diff -urNb boehm-gc/os_dep.c boehm-gc/os_dep.c
22923 --- boehm-gc/os_dep.c Fri Jul 19 01:54:43 2002
22924 +++ boehm-gc/os_dep.c Sat May 31 14:46:38 2003
22925 @@ -80,12 +80,15 @@
22926 # define NEED_FIND_LIMIT
22929 -#ifdef NEED_FIND_LIMIT
22930 -# include <setjmp.h>
22933 #if defined(FREEBSD) && defined(I386)
22934 # include <machine/trap.h>
22935 +# if !defined(PCR)
22936 +# define NEED_FIND_LIMIT
22940 +#ifdef NEED_FIND_LIMIT
22941 +# include <setjmp.h>
22945 @@ -129,6 +132,11 @@
22946 # define jmp_buf sigjmp_buf
22950 +/* for get_etext and friends */
22951 +#include <mach-o/getsect.h>
22955 /* Apparently necessary for djgpp 2.01. May cause problems with */
22956 /* other versions. */
22957 @@ -147,6 +155,155 @@
22958 # define OPT_PROT_EXEC 0
22961 +#if defined(LINUX) && \
22962 + (defined(USE_PROC_FOR_LIBRARIES) || defined(IA64) || !defined(SMALL_CONFIG))
22964 +/* We need to parse /proc/self/maps, either to find dynamic libraries, */
22965 +/* and/or to find the register backing store base (IA64). Do it once */
22970 +/* Repeatedly perform a read call until the buffer is filled or */
22971 +/* we encounter EOF. */
22972 +ssize_t GC_repeat_read(int fd, char *buf, size_t count)
22974 + ssize_t num_read = 0;
22977 + while (num_read < count) {
22978 + result = READ(fd, buf + num_read, count - num_read);
22979 + if (result < 0) return result;
22980 + if (result == 0) break;
22981 + num_read += result;
22987 + * Apply fn to a buffer containing the contents of /proc/self/maps.
22988 + * Return the result of fn or, if we failed, 0.
22991 +word GC_apply_to_maps(word (*fn)(char *))
22996 + char maps_temp[32768];
22999 + /* Read /proc/self/maps */
23000 + /* Note that we may not allocate, and thus can't use stdio. */
23001 + f = open("/proc/self/maps", O_RDONLY);
23002 + if (-1 == f) return 0;
23003 + /* stat() doesn't work for /proc/self/maps, so we have to
23004 + read it to find out how large it is... */
23007 + result = GC_repeat_read(f, maps_temp, sizeof(maps_temp));
23008 + if (result <= 0) return 0;
23009 + maps_size += result;
23010 + } while (result == sizeof(maps_temp));
23012 + if (maps_size > sizeof(maps_temp)) {
23013 + /* If larger than our buffer, close and re-read it. */
23015 + f = open("/proc/self/maps", O_RDONLY);
23016 + if (-1 == f) return 0;
23017 + maps_buf = alloca(maps_size);
23018 + if (NULL == maps_buf) return 0;
23019 + result = GC_repeat_read(f, maps_buf, maps_size);
23020 + if (result <= 0) return 0;
23022 + /* Otherwise use the fixed size buffer */
23023 + maps_buf = maps_temp;
23027 + maps_buf[result] = '\0';
23029 + /* Apply fn to result. */
23030 + return fn(maps_buf);
23033 +#endif /* Need GC_apply_to_maps */
23035 +#if defined(LINUX) && (defined(USE_PROC_FOR_LIBRARIES) || defined(IA64))
23037 +// GC_parse_map_entry parses an entry from /proc/self/maps so we can
23038 +// locate all writable data segments that belong to shared libraries.
23039 +// The format of one of these entries and the fields we care about
23041 +// XXXXXXXX-XXXXXXXX r-xp 00000000 30:05 260537 name of mapping...\n
23042 +// ^^^^^^^^ ^^^^^^^^ ^^^^ ^^
23043 +// start end prot maj_dev
23046 +// For 64 bit ABIs:
23049 +// The parser is called with a pointer to the entry and the return value
23050 +// is either NULL or is advanced to the next entry(the byte after the
23051 +// trailing '\n'.)
23053 +#if CPP_WORDSZ == 32
23054 +# define OFFSET_MAP_START 0
23055 +# define OFFSET_MAP_END 9
23056 +# define OFFSET_MAP_PROT 18
23057 +# define OFFSET_MAP_MAJDEV 32
23058 +# define ADDR_WIDTH 8
23061 +#if CPP_WORDSZ == 64
23062 +# define OFFSET_MAP_START 0
23063 +# define OFFSET_MAP_END 17
23064 +# define OFFSET_MAP_PROT 34
23065 +# define OFFSET_MAP_MAJDEV 56
23066 +# define ADDR_WIDTH 16
23070 + * Assign various fields of the first line in buf_ptr to *start, *end,
23071 + * *prot_buf and *maj_dev. Only *prot_buf may be set for unwritable maps.
23073 +char *GC_parse_map_entry(char *buf_ptr, word *start, word *end,
23074 + char *prot_buf, unsigned int *maj_dev)
23079 + if (buf_ptr == NULL || *buf_ptr == '\0') {
23083 + memcpy(prot_buf, buf_ptr+OFFSET_MAP_PROT, 4); // do the protections first
23084 + prot_buf[4] = '\0';
23086 + if (prot_buf[1] == 'w') { // we can skip all of this if it's not writable
23089 + buf_ptr[OFFSET_MAP_START+ADDR_WIDTH] = '\0';
23090 + *start = strtoul(tok, NULL, 16);
23092 + tok = buf_ptr+OFFSET_MAP_END;
23093 + buf_ptr[OFFSET_MAP_END+ADDR_WIDTH] = '\0';
23094 + *end = strtoul(tok, NULL, 16);
23096 + buf_ptr += OFFSET_MAP_MAJDEV;
23098 + while (*buf_ptr != ':') buf_ptr++;
23099 + *buf_ptr++ = '\0';
23100 + *maj_dev = strtoul(tok, NULL, 16);
23103 + while (*buf_ptr && *buf_ptr++ != '\n');
23108 +#endif /* Need to parse /proc/self/maps. */
23110 #if defined(SEARCH_FOR_DATA_START)
23111 /* The I386 case can be handled without a search. The Alpha case */
23112 /* used to be handled differently as well, but the rules changed */
23113 @@ -154,6 +311,11 @@
23114 /* cover all versions. */
23117 + /* Some Linux distributions arrange to define __data_start. Some */
23118 + /* define data_start as a weak symbol. The latter is technically */
23119 + /* broken, since the user program may define data_start, in which */
23120 + /* case we lose. Nonetheless, we try both, prefering __data_start. */
23121 + /* We assume gcc-compatible pragmas. */
23122 # pragma weak __data_start
23123 extern int __data_start[];
23124 # pragma weak data_start
23125 @@ -169,16 +331,16 @@
23128 /* Try the easy approaches first: */
23129 - if (__data_start != 0) {
23130 - GC_data_start = (ptr_t)__data_start;
23131 + if ((ptr_t)__data_start != 0) {
23132 + GC_data_start = (ptr_t)(__data_start);
23135 - if (data_start != 0) {
23136 - GC_data_start = (ptr_t)data_start;
23137 + if ((ptr_t)data_start != 0) {
23138 + GC_data_start = (ptr_t)(data_start);
23141 # endif /* LINUX */
23142 - GC_data_start = GC_find_limit((ptr_t)_end, FALSE);
23143 + GC_data_start = GC_find_limit((ptr_t)(_end), FALSE);
23147 @@ -617,7 +779,8 @@
23150 /* Return the first nonaddressible location > p (up) or */
23151 - /* the smallest location q s.t. [q,p] is addressible (!up). */
23152 + /* the smallest location q s.t. [q,p) is addressable (!up). */
23153 + /* We assume that p (up) or p-1 (!up) is addressable. */
23154 ptr_t GC_find_limit(p, up)
23157 @@ -650,18 +813,18 @@
23161 -# if defined(ECOS) || defined(NOSYS)
23162 -ptr_t GC_get_stack_base()
23164 +#if defined(ECOS) || defined(NOSYS)
23165 + ptr_t GC_get_stack_base()
23167 return STACKBOTTOM;
23174 #ifdef LINUX_STACKBOTTOM
23176 #include <sys/types.h>
23177 #include <sys/stat.h>
23178 +#include <ctype.h>
23180 # define STAT_SKIP 27 /* Number of fields preceding startstack */
23181 /* field in /proc/self/stat */
23182 @@ -670,6 +833,33 @@
23183 extern ptr_t __libc_stack_end;
23186 + /* Try to read the backing store base from /proc/self/maps. */
23187 + /* We look for the writable mapping with a 0 major device, */
23188 + /* which is as close to our frame as possible, but below it.*/
23189 + static word backing_store_base_from_maps(char *maps)
23191 + char prot_buf[5];
23192 + char *buf_ptr = maps;
23194 + unsigned int maj_dev;
23195 + word current_best = 0;
23199 + buf_ptr = GC_parse_map_entry(buf_ptr, &start, &end, prot_buf, &maj_dev);
23200 + if (buf_ptr == NULL) return current_best;
23201 + if (prot_buf[1] == 'w' && maj_dev == 0) {
23202 + if (end < (word)(&dummy) && start > current_best) current_best = start;
23205 + return current_best;
23208 + static word backing_store_base_from_proc(void)
23210 + return GC_apply_to_maps(backing_store_base_from_maps);
23213 # pragma weak __libc_ia64_register_backing_store_base
23214 extern ptr_t __libc_ia64_register_backing_store_base;
23216 @@ -683,9 +873,15 @@
23217 /* Hence we check for both nonzero address and value. */
23218 return __libc_ia64_register_backing_store_base;
23220 - word result = (word)GC_stackbottom - BACKING_STORE_DISPLACEMENT;
23221 + word result = backing_store_base_from_proc();
23222 + if (0 == result) {
23223 + /* Use dumb heuristics. Works only for default configuration. */
23224 + result = (word)GC_stackbottom - BACKING_STORE_DISPLACEMENT;
23225 result += BACKING_STORE_ALIGNMENT - 1;
23226 result &= ~(BACKING_STORE_ALIGNMENT - 1);
23227 + /* Verify that it's at least readable. If not, we goofed. */
23228 + GC_noop1(*(word *)result);
23230 return (ptr_t)result;
23233 @@ -697,11 +893,8 @@
23234 /* using direct I/O system calls in order to avoid calling malloc */
23235 /* in case REDIRECT_MALLOC is defined. */
23236 # define STAT_BUF_SIZE 4096
23237 -# if defined(GC_USE_LD_WRAP)
23238 -# define STAT_READ __real_read
23240 # define STAT_READ read
23242 + /* Should probably call the real read, if read is wrapped. */
23243 char stat_buf[STAT_BUF_SIZE];
23246 @@ -710,7 +903,16 @@
23248 /* First try the easy way. This should work for glibc 2.2 */
23249 if (0 != &__libc_stack_end) {
23251 + /* Some versions of glibc set the address 16 bytes too */
23252 + /* low while the initialization code is running. */
23253 + if (((word)__libc_stack_end & 0xfff) + 0x10 < 0x1000) {
23254 + return __libc_stack_end + 0x10;
23255 + } /* Otherwise it's not safe to add 16 bytes and we fall */
23256 + /* back to using /proc. */
23258 return __libc_stack_end;
23261 f = open("/proc/self/stat", O_RDONLY);
23262 if (f < 0 || STAT_READ(f, stat_buf, STAT_BUF_SIZE) < 2 * STAT_SKIP) {
23263 @@ -764,8 +966,11 @@
23265 ptr_t GC_get_stack_base()
23267 +# if defined(HEURISTIC1) || defined(HEURISTIC2) || \
23268 + defined(LINUX_STACKBOTTOM) || defined(FREEBSD_STACKBOTTOM)
23273 # define STACKBOTTOM_ALIGNMENT_M1 ((word)STACK_GRAN - 1)
23275 @@ -814,7 +1019,6 @@
23277 # endif /* STACKBOTTOM */
23279 -# endif /* NOSYS ECOS */
23281 # endif /* ! AMIGA, !OS 2, ! MS Windows, !BEOS */
23283 @@ -924,15 +1128,14 @@
23284 /* Unfortunately, we have to handle win32s very differently from NT, */
23285 /* Since VirtualQuery has very different semantics. In particular, */
23286 /* under win32s a VirtualQuery call on an unmapped page returns an */
23287 - /* invalid result. Under GC_register_data_segments is a noop and */
23288 + /* invalid result. Under NT, GC_register_data_segments is a noop and */
23289 /* all real work is done by GC_register_dynamic_libraries. Under */
23290 /* win32s, we cannot find the data segments associated with dll's. */
23291 - /* We rgister the main data segment here. */
23293 - GC_bool GC_no_win32_dlls = TRUE; /* GCC can't do SEH, so we can't use VirtualQuery */
23295 + /* We register the main data segment here. */
23296 GC_bool GC_no_win32_dlls = FALSE;
23298 + /* This used to be set for gcc, to avoid dealing with */
23299 + /* the structured exception handling issues. But we now have */
23300 + /* assembly code to do that right. */
23302 void GC_init_win32()
23304 @@ -965,35 +1168,101 @@
23308 - /* Is p the start of either the malloc heap, or of one of our */
23309 - /* heap sections? */
23310 - GC_bool GC_is_heap_base (ptr_t p)
23313 - register unsigned i;
23315 # ifndef REDIRECT_MALLOC
23316 - static ptr_t malloc_heap_pointer = 0;
23317 + /* We maintain a linked list of AllocationBase values that we know */
23318 + /* correspond to malloc heap sections. Currently this is only called */
23319 + /* during a GC. But there is some hope that for long running */
23320 + /* programs we will eventually see most heap sections. */
23322 - if (0 == malloc_heap_pointer) {
23323 - MEMORY_BASIC_INFORMATION buf;
23324 - void *pTemp = malloc( 1 );
23325 - register DWORD result = VirtualQuery(pTemp, &buf, sizeof(buf));
23326 + /* In the long run, it would be more reliable to occasionally walk */
23327 + /* the malloc heap with HeapWalk on the default heap. But that */
23328 + /* apparently works only for NT-based Windows. */
23331 + /* In the long run, a better data structure would also be nice ... */
23332 + struct GC_malloc_heap_list {
23333 + void * allocation_base;
23334 + struct GC_malloc_heap_list *next;
23335 + } *GC_malloc_heap_l = 0;
23337 + /* Is p the base of one of the malloc heap sections we already know */
23339 + GC_bool GC_is_malloc_heap_base(ptr_t p)
23341 + struct GC_malloc_heap_list *q = GC_malloc_heap_l;
23344 + if (q -> allocation_base == p) return TRUE;
23350 + void *GC_get_allocation_base(void *p)
23352 + MEMORY_BASIC_INFORMATION buf;
23353 + DWORD result = VirtualQuery(p, &buf, sizeof(buf));
23354 if (result != sizeof(buf)) {
23355 ABORT("Weird VirtualQuery result");
23357 - malloc_heap_pointer = (ptr_t)(buf.AllocationBase);
23358 + return buf.AllocationBase;
23360 - if (p == malloc_heap_pointer) return(TRUE);
23362 + size_t GC_max_root_size = 100000; /* Appr. largest root size. */
23364 + void GC_add_current_malloc_heap()
23366 + struct GC_malloc_heap_list *new_l =
23367 + malloc(sizeof(struct GC_malloc_heap_list));
23368 + void * candidate = GC_get_allocation_base(new_l);
23370 + if (new_l == 0) return;
23371 + if (GC_is_malloc_heap_base(candidate)) {
23372 + /* Try a little harder to find malloc heap. */
23373 + size_t req_size = 10000;
23375 + void *p = malloc(req_size);
23376 + if (0 == p) { free(new_l); return; }
23377 + candidate = GC_get_allocation_base(p);
23380 + } while (GC_is_malloc_heap_base(candidate)
23381 + && req_size < GC_max_root_size/10 && req_size < 500000);
23382 + if (GC_is_malloc_heap_base(candidate)) {
23383 + free(new_l); return;
23387 + if (GC_print_stats)
23388 + GC_printf1("Found new system malloc AllocationBase at 0x%lx\n",
23391 + new_l -> allocation_base = candidate;
23392 + new_l -> next = GC_malloc_heap_l;
23393 + GC_malloc_heap_l = new_l;
23395 +# endif /* REDIRECT_MALLOC */
23397 + /* Is p the start of either the malloc heap, or of one of our */
23398 + /* heap sections? */
23399 + GC_bool GC_is_heap_base (ptr_t p)
23404 +# ifndef REDIRECT_MALLOC
23405 + static word last_gc_no = -1;
23407 + if (last_gc_no != GC_gc_no) {
23408 + GC_add_current_malloc_heap();
23409 + last_gc_no = GC_gc_no;
23411 + if (GC_root_size > GC_max_root_size) GC_max_root_size = GC_root_size;
23412 + if (GC_is_malloc_heap_base(p)) return TRUE;
23414 for (i = 0; i < GC_n_heap_bases; i++) {
23415 - if (GC_heap_bases[i] == p) return(TRUE);
23416 + if (GC_heap_bases[i] == p) return TRUE;
23423 @@ -1043,7 +1312,7 @@
23425 # if (defined(SVR4) || defined(AUX) || defined(DGUX) \
23426 || (defined(LINUX) && defined(SPARC))) && !defined(PCR)
23427 -char * GC_SysVGetDataStart(max_page_size, etext_addr)
23428 +ptr_t GC_SysVGetDataStart(max_page_size, etext_addr)
23432 @@ -1069,12 +1338,45 @@
23433 /* string constants in the text segment, but after etext. */
23434 /* Use plan B. Note that we now know there is a gap between */
23435 /* text and data segments, so plan A bought us something. */
23436 - result = (char *)GC_find_limit((ptr_t)(DATAEND) - MIN_PAGE_SIZE, FALSE);
23437 + result = (char *)GC_find_limit((ptr_t)(DATAEND), FALSE);
23439 - return((char *)result);
23440 + return((ptr_t)result);
23444 +# if defined(FREEBSD) && defined(I386) && !defined(PCR)
23445 +/* Its unclear whether this should be identical to the above, or */
23446 +/* whether it should apply to non-X86 architectures. */
23447 +/* For now we don't assume that there is always an empty page after */
23448 +/* etext. But in some cases there actually seems to be slightly more. */
23449 +/* This also deals with holes between read-only data and writable data. */
23450 +ptr_t GC_FreeBSDGetDataStart(max_page_size, etext_addr)
23451 +int max_page_size;
23454 + word text_end = ((word)(etext_addr) + sizeof(word) - 1)
23455 + & ~(sizeof(word) - 1);
23456 + /* etext rounded to word boundary */
23457 + VOLATILE word next_page = (text_end + (word)max_page_size - 1)
23458 + & ~((word)max_page_size - 1);
23459 + VOLATILE ptr_t result = (ptr_t)text_end;
23460 + GC_setup_temporary_fault_handler();
23461 + if (setjmp(GC_jmp_buf) == 0) {
23462 + /* Try reading at the address. */
23463 + /* This should happen before there is another thread. */
23464 + for (; next_page < (word)(DATAEND); next_page += (word)max_page_size)
23465 + *(VOLATILE char *)next_page;
23466 + GC_reset_fault_handler();
23468 + GC_reset_fault_handler();
23469 + /* As above, we go to plan B */
23470 + result = GC_find_limit((ptr_t)(DATAEND), FALSE);
23480 @@ -1086,8 +1388,7 @@
23482 void GC_register_data_segments()
23484 -# if !defined(PCR) && !defined(SRC_M3) && !defined(NEXT) && !defined(MACOS) \
23485 - && !defined(MACOSX)
23486 +# if !defined(PCR) && !defined(SRC_M3) && !defined(MACOS)
23487 # if defined(REDIRECT_MALLOC) && defined(GC_SOLARIS_THREADS)
23488 /* As of Solaris 2.3, the Solaris threads implementation */
23489 /* allocates the data structure for the initial thread with */
23490 @@ -1104,9 +1405,6 @@
23494 -# if !defined(PCR) && (defined(NEXT) || defined(MACOSX))
23495 - GC_add_roots_inner(DATASTART, (char *) get_end(), FALSE);
23497 # if defined(MACOS)
23499 # if defined(THINK_C)
23500 @@ -1216,18 +1514,28 @@
23501 ptr_t GC_unix_get_mem(bytes)
23504 - static GC_bool initialized = FALSE;
23507 static ptr_t last_addr = HEAP_START;
23509 +# ifndef USE_MMAP_ANON
23510 + static GC_bool initialized = FALSE;
23513 if (!initialized) {
23514 fd = open("/dev/zero", O_RDONLY);
23515 + fcntl(fd, F_SETFD, FD_CLOEXEC);
23516 initialized = TRUE;
23520 if (bytes & (GC_page_size -1)) ABORT("Bad GET_MEM arg");
23521 +# ifdef USE_MMAP_ANON
23522 + result = mmap(last_addr, bytes, PROT_READ | PROT_WRITE | OPT_PROT_EXEC,
23523 + GC_MMAP_FLAGS | MAP_ANON, -1, 0/* offset */);
23525 result = mmap(last_addr, bytes, PROT_READ | PROT_WRITE | OPT_PROT_EXEC,
23526 GC_MMAP_FLAGS, fd, 0/* offset */);
23528 if (result == MAP_FAILED) return(0);
23529 last_addr = (ptr_t)result + bytes + GC_page_size - 1;
23530 last_addr = (ptr_t)((word)last_addr & ~(GC_page_size - 1));
23531 @@ -1322,7 +1630,15 @@
23532 result = (ptr_t) GlobalAlloc(0, bytes + HBLKSIZE);
23533 result = (ptr_t)(((word)result + HBLKSIZE) & ~(HBLKSIZE-1));
23535 - result = (ptr_t) VirtualAlloc(NULL, bytes,
23536 + /* VirtualProtect only works on regions returned by a */
23537 + /* single VirtualAlloc call. Thus we allocate one */
23538 + /* extra page, which will prevent merging of blocks */
23539 + /* in separate regions, and eliminate any temptation */
23540 + /* to call VirtualProtect on a range spanning regions. */
23541 + /* This wastes a small amount of memory, and risks */
23542 + /* increased fragmentation. But better alternatives */
23543 + /* would require effort. */
23544 + result = (ptr_t) VirtualAlloc(NULL, bytes + 1,
23545 MEM_COMMIT | MEM_RESERVE,
23546 PAGE_EXECUTE_READWRITE);
23548 @@ -1378,6 +1694,10 @@
23549 /* Reserve more pages */
23550 word res_bytes = (bytes + GC_sysinfo.dwAllocationGranularity-1)
23551 & ~(GC_sysinfo.dwAllocationGranularity-1);
23552 + /* If we ever support MPROTECT_VDB here, we will probably need to */
23553 + /* ensure that res_bytes is strictly > bytes, so that VirtualProtect */
23554 + /* never spans regions. It seems to be OK for a VirtualFree argument */
23555 + /* to span regions, so we should be OK for now. */
23556 result = (ptr_t) VirtualAlloc(NULL, res_bytes,
23557 MEM_RESERVE | MEM_TOP_DOWN,
23558 PAGE_EXECUTE_READWRITE);
23559 @@ -1508,6 +1828,7 @@
23562 if (-1 == zero_descr) zero_descr = open("/dev/zero", O_RDWR);
23563 + fcntl(zero_descr, F_SETFD, FD_CLOEXEC);
23564 if (0 == start_addr) return;
23565 result = mmap(start_addr, len, PROT_READ | PROT_WRITE | OPT_PROT_EXEC,
23566 MAP_FIXED | MAP_PRIVATE, zero_descr, 0);
23567 @@ -1694,7 +2015,6 @@
23568 * make sure that other system calls are similarly protected
23569 * or write only to the stack.
23572 GC_bool GC_dirty_maintained = FALSE;
23574 # ifdef DEFAULT_VDB
23575 @@ -1708,6 +2028,9 @@
23576 /* Initialize virtual dirty bit implementation. */
23577 void GC_dirty_init()
23580 + GC_printf0("Initializing DEFAULT_VDB...\n");
23582 GC_dirty_maintained = TRUE;
23585 @@ -1776,17 +2099,21 @@
23587 * This implementation maintains dirty bits itself by catching write
23588 * faults and keeping track of them. We assume nobody else catches
23589 - * SIGBUS or SIGSEGV. We assume no write faults occur in system calls
23590 - * except as a result of a read system call. This means clients must
23591 - * either ensure that system calls do not touch the heap, or must
23592 - * provide their own wrappers analogous to the one for read.
23593 + * SIGBUS or SIGSEGV. We assume no write faults occur in system calls.
23594 + * This means that clients must ensure that system calls don't write
23595 + * to the write-protected heap. Probably the best way to do this is to
23596 + * ensure that system calls write at most to POINTERFREE objects in the
23597 + * heap, and do even that only if we are on a platform on which those
23598 + * are not protected. Another alternative is to wrap system calls
23599 + * (see example for read below), but the current implementation holds
23600 + * a lock across blocking calls, making it problematic for multithreaded
23602 * We assume the page size is a multiple of HBLKSIZE.
23603 - * This implementation is currently SunOS 4.X and IRIX 5.X specific, though we
23604 - * tried to use portable code where easily possible. It is known
23605 - * not to work under a number of other systems.
23606 + * We prefer them to be the same. We avoid protecting POINTERFREE
23607 + * objects only if they are the same.
23610 -# if !defined(MSWIN32) && !defined(MSWINCE)
23611 +# if !defined(MSWIN32) && !defined(MSWINCE) && !defined(DARWIN)
23613 # include <sys/mman.h>
23614 # include <signal.h>
23615 @@ -1805,6 +2132,23 @@
23620 + /* Using vm_protect (mach syscall) over mprotect (BSD syscall) seems to
23621 + decrease the likelihood of some of the problems described below. */
23622 + #include <mach/vm_map.h>
23623 + extern mach_port_t GC_task_self;
23624 + #define PROTECT(addr,len) \
23625 + if(vm_protect(GC_task_self,(vm_address_t)(addr),(vm_size_t)(len), \
23626 + FALSE,VM_PROT_READ) != KERN_SUCCESS) { \
23627 + ABORT("vm_portect failed"); \
23629 + #define UNPROTECT(addr,len) \
23630 + if(vm_protect(GC_task_self,(vm_address_t)(addr),(vm_size_t)(len), \
23631 + FALSE,VM_PROT_READ|VM_PROT_WRITE) != KERN_SUCCESS) { \
23632 + ABORT("vm_portect failed"); \
23637 # include <signal.h>
23639 @@ -1822,20 +2166,22 @@
23640 &protect_junk)) { \
23641 ABORT("un-VirtualProtect failed"); \
23645 +# endif /* !DARWIN */
23646 +# endif /* MSWIN32 || MSWINCE || DARWIN */
23648 #if defined(SUNOS4) || defined(FREEBSD)
23649 typedef void (* SIG_PF)();
23651 +#endif /* SUNOS4 || FREEBSD */
23653 #if defined(SUNOS5SIGS) || defined(OSF1) || defined(LINUX) \
23654 - || defined(MACOSX) || defined(HURD)
23657 typedef void (* SIG_PF)(int);
23659 typedef void (* SIG_PF)();
23662 +#endif /* SUNOS5SIGS || OSF1 || LINUX || HURD */
23664 #if defined(MSWIN32)
23665 typedef LPTOP_LEVEL_EXCEPTION_FILTER SIG_PF;
23667 @@ -1849,7 +2195,8 @@
23669 #if defined(IRIX5) || defined(OSF1) || defined(HURD)
23670 typedef void (* REAL_SIG_PF)(int, int, struct sigcontext *);
23672 +#endif /* IRIX5 || OSF1 || HURD */
23674 #if defined(SUNOS5SIGS)
23676 # define SIGINFO __siginfo
23677 @@ -1861,13 +2208,14 @@
23679 typedef void (* REAL_SIG_PF)();
23682 +#endif /* SUNOS5SIGS */
23685 # if __GLIBC__ > 2 || __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2
23686 typedef struct sigcontext s_c;
23687 # else /* glibc < 2.2 */
23688 # include <linux/version.h>
23689 -# if (LINUX_VERSION_CODE >= 0x20100) && !defined(M68K) || defined(ALPHA)
23690 +# if (LINUX_VERSION_CODE >= 0x20100) && !defined(M68K) || defined(ALPHA) || defined(ARM32)
23691 typedef struct sigcontext s_c;
23693 typedef struct sigcontext_struct s_c;
23694 @@ -1895,139 +2243,14 @@
23695 return (char *)faultaddr;
23697 # endif /* !ALPHA */
23700 -# if defined(MACOSX) /* Should also test for PowerPC? */
23701 - typedef void (* REAL_SIG_PF)(int, int, struct sigcontext *);
23703 -/* Decodes the machine instruction which was responsible for the sending of the
23704 - SIGBUS signal. Sadly this is the only way to find the faulting address because
23705 - the signal handler doesn't get it directly from the kernel (although it is
23706 - available on the Mach level, but droppped by the BSD personality before it
23707 - calls our signal handler...)
23708 - This code should be able to deal correctly with all PPCs starting from the
23709 - 601 up to and including the G4s (including Velocity Engine). */
23710 -#define EXTRACT_OP1(iw) (((iw) & 0xFC000000) >> 26)
23711 -#define EXTRACT_OP2(iw) (((iw) & 0x000007FE) >> 1)
23712 -#define EXTRACT_REGA(iw) (((iw) & 0x001F0000) >> 16)
23713 -#define EXTRACT_REGB(iw) (((iw) & 0x03E00000) >> 21)
23714 -#define EXTRACT_REGC(iw) (((iw) & 0x0000F800) >> 11)
23715 -#define EXTRACT_DISP(iw) ((short *) &(iw))[1]
23717 -static char *get_fault_addr(struct sigcontext *scp)
23719 - unsigned int instr = *((unsigned int *) scp->sc_ir);
23720 - unsigned int * regs = &((unsigned int *) scp->sc_regs)[2];
23721 - int disp = 0, tmp;
23722 - unsigned int baseA = 0, baseB = 0;
23723 - unsigned int addr, alignmask = 0xFFFFFFFF;
23725 -#ifdef GC_DEBUG_DECODER
23726 - GC_err_printf1("Instruction: 0x%lx\n", instr);
23727 - GC_err_printf1("Opcode 1: d\n", (int)EXTRACT_OP1(instr));
23729 - switch(EXTRACT_OP1(instr)) {
23730 - case 38: /* stb */
23731 - case 39: /* stbu */
23732 - case 54: /* stfd */
23733 - case 55: /* stfdu */
23734 - case 52: /* stfs */
23735 - case 53: /* stfsu */
23736 - case 44: /* sth */
23737 - case 45: /* sthu */
23738 - case 47: /* stmw */
23739 - case 36: /* stw */
23740 - case 37: /* stwu */
23741 - tmp = EXTRACT_REGA(instr);
23743 - baseA = regs[tmp];
23744 - disp = EXTRACT_DISP(instr);
23747 -#ifdef GC_DEBUG_DECODER
23748 - GC_err_printf1("Opcode 2: %d\n", (int)EXTRACT_OP2(instr));
23750 - switch(EXTRACT_OP2(instr)) {
23751 - case 86: /* dcbf */
23752 - case 54: /* dcbst */
23753 - case 1014: /* dcbz */
23754 - case 247: /* stbux */
23755 - case 215: /* stbx */
23756 - case 759: /* stfdux */
23757 - case 727: /* stfdx */
23758 - case 983: /* stfiwx */
23759 - case 695: /* stfsux */
23760 - case 663: /* stfsx */
23761 - case 918: /* sthbrx */
23762 - case 439: /* sthux */
23763 - case 407: /* sthx */
23764 - case 661: /* stswx */
23765 - case 662: /* stwbrx */
23766 - case 150: /* stwcx. */
23767 - case 183: /* stwux */
23768 - case 151: /* stwx */
23769 - case 135: /* stvebx */
23770 - case 167: /* stvehx */
23771 - case 199: /* stvewx */
23772 - case 231: /* stvx */
23773 - case 487: /* stvxl */
23774 - tmp = EXTRACT_REGA(instr);
23776 - baseA = regs[tmp];
23777 - baseB = regs[EXTRACT_REGC(instr)];
23778 - /* determine Altivec alignment mask */
23779 - switch(EXTRACT_OP2(instr)) {
23780 - case 167: /* stvehx */
23781 - alignmask = 0xFFFFFFFE;
23783 - case 199: /* stvewx */
23784 - alignmask = 0xFFFFFFFC;
23786 - case 231: /* stvx */
23787 - alignmask = 0xFFFFFFF0;
23789 - case 487: /* stvxl */
23790 - alignmask = 0xFFFFFFF0;
23794 - case 725: /* stswi */
23795 - tmp = EXTRACT_REGA(instr);
23797 - baseA = regs[tmp];
23799 - default: /* ignore instruction */
23800 -#ifdef GC_DEBUG_DECODER
23801 - GC_err_printf("Ignored by inner handler\n");
23807 - default: /* ignore instruction */
23808 -#ifdef GC_DEBUG_DECODER
23809 - GC_err_printf("Ignored by main handler\n");
23815 - addr = (baseA + baseB) + disp;
23816 - addr &= alignmask;
23817 -#ifdef GC_DEBUG_DECODER
23818 - GC_err_printf1("BaseA: %d\n", baseA);
23819 - GC_err_printf1("BaseB: %d\n", baseB);
23820 - GC_err_printf1("Disp: %d\n", disp);
23821 - GC_err_printf1("Address: %d\n", addr);
23823 - return (char *)addr;
23825 -#endif /* MACOSX */
23826 +# endif /* LINUX */
23829 SIG_PF GC_old_bus_handler;
23830 SIG_PF GC_old_segv_handler; /* Also old MSWIN32 ACCESS_VIOLATION filter */
23831 +#endif /* !DARWIN */
23834 +#if defined(THREADS)
23835 /* We need to lock around the bitmap update in the write fault handler */
23836 /* in order to avoid the risk of losing a bit. We do this with a */
23837 /* test-and-set spin lock if we know how to do that. Otherwise we */
23838 @@ -2076,6 +2299,7 @@
23839 #endif /* !THREADS */
23842 +#if !defined(DARWIN)
23843 # if defined (SUNOS4) || defined(FREEBSD)
23844 void GC_write_fault_handler(sig, code, scp, addr)
23846 @@ -2091,7 +2315,8 @@
23847 # define SIG_OK (sig == SIGBUS)
23848 # define CODE_OK (code == BUS_PAGE_FAULT)
23851 +# endif /* SUNOS4 || FREEBSD */
23853 # if defined(IRIX5) || defined(OSF1) || defined(HURD)
23854 # include <errno.h>
23855 void GC_write_fault_handler(int sig, int code, struct sigcontext *scp)
23856 @@ -2107,7 +2332,8 @@
23857 # define SIG_OK (sig == SIGBUS || sig == SIGSEGV)
23858 # define CODE_OK TRUE
23861 +# endif /* IRIX5 || OSF1 || HURD */
23863 # if defined(LINUX)
23864 # if defined(ALPHA) || defined(M68K)
23865 void GC_write_fault_handler(int sig, int code, s_c * sc)
23866 @@ -2115,15 +2341,20 @@
23867 # if defined(IA64) || defined(HP_PA)
23868 void GC_write_fault_handler(int sig, siginfo_t * si, s_c * scp)
23870 +# if defined(ARM32)
23871 + void GC_write_fault_handler(int sig, int a2, int a3, int a4, s_c sc)
23873 void GC_write_fault_handler(int sig, s_c sc)
23877 # define SIG_OK (sig == SIGSEGV)
23878 # define CODE_OK TRUE
23879 /* Empirically c.trapno == 14, on IA32, but is that useful? */
23880 /* Should probably consider alignment issues on other */
23881 /* architectures. */
23883 +# endif /* LINUX */
23885 # if defined(SUNOS5SIGS)
23887 void GC_write_fault_handler(int sig, struct SIGINFO *scp, void * context)
23888 @@ -2144,13 +2375,7 @@
23889 # define SIG_OK (sig == SIGSEGV)
23890 # define CODE_OK (scp -> si_code == SEGV_ACCERR)
23894 -# if defined(MACOSX)
23895 - void GC_write_fault_handler(int sig, int code, struct sigcontext *scp)
23896 -# define SIG_OK (sig == SIGBUS)
23897 -# define CODE_OK (code == 0 /* experimentally determined */)
23899 +# endif /* SUNOS5SIGS */
23901 # if defined(MSWIN32) || defined(MSWINCE)
23902 LONG WINAPI GC_write_fault_handler(struct _EXCEPTION_POINTERS *exc_info)
23903 @@ -2158,7 +2383,7 @@
23904 STATUS_ACCESS_VIOLATION)
23905 # define CODE_OK (exc_info -> ExceptionRecord -> ExceptionInformation[0] == 1)
23908 +# endif /* MSWIN32 || MSWINCE */
23910 register unsigned i;
23912 @@ -2218,6 +2443,9 @@
23913 # if defined(POWERPC)
23914 char * addr = (char *) (sc.regs->dar);
23916 +# if defined(ARM32)
23917 + char * addr = (char *)sc.fault_address;
23919 --> architecture not supported
23922 @@ -2225,8 +2453,6 @@
23926 -# if defined(MACOSX)
23927 - char * addr = get_fault_addr(scp);
23929 # if defined(MSWIN32) || defined(MSWINCE)
23930 char * addr = (char *) (exc_info -> ExceptionRecord
23931 @@ -2291,9 +2517,6 @@
23932 (*(REAL_SIG_PF)old_handler) (sig, code, scp);
23936 - (*(REAL_SIG_PF)old_handler) (sig, code, scp);
23939 return((*old_handler)(exc_info));
23941 @@ -2335,10 +2558,11 @@
23942 ABORT("Unexpected bus error or segmentation fault");
23945 +#endif /* !DARWIN */
23948 * We hold the allocation lock. We expect block h to be written
23949 - * shortly. Ensure that all pages cvontaining any part of the n hblks
23950 + * shortly. Ensure that all pages containing any part of the n hblks
23951 * starting at h are no longer protected. If is_ptrfree is false,
23952 * also ensure that they will subsequently appear to be dirty.
23954 @@ -2367,6 +2591,7 @@
23955 UNPROTECT(h_trunc, (ptr_t)h_end - (ptr_t)h_trunc);
23958 +#if !defined(DARWIN)
23959 void GC_dirty_init()
23961 # if defined(SUNOS5SIGS) || defined(IRIX5) || defined(LINUX) || \
23962 @@ -2389,13 +2614,6 @@
23963 (void)sigaddset(&act.sa_mask, SIG_SUSPEND);
23964 # endif /* SIG_SUSPEND */
23966 -# if defined(MACOSX)
23967 - struct sigaction act, oldact;
23969 - act.sa_flags = SA_RESTART;
23970 - act.sa_handler = GC_write_fault_handler;
23971 - sigemptyset(&act.sa_mask);
23974 GC_printf0("Inititalizing mprotect virtual dirty bit implementation\n");
23976 @@ -2435,9 +2653,12 @@
23977 sigaction(SIGSEGV, 0, &oldact);
23978 sigaction(SIGSEGV, &act, 0);
23980 - sigaction(SIGSEGV, &act, &oldact);
23982 + int res = sigaction(SIGSEGV, &act, &oldact);
23983 + if (res != 0) ABORT("Sigaction failed");
23986 -# if defined(_sigargs) || defined(HURD)
23987 +# if defined(_sigargs) || defined(HURD) || !defined(SA_SIGINFO)
23988 /* This is Irix 5.x, not 6.x. Irix 5.x does not have */
23989 /* sa_sigaction. */
23990 GC_old_segv_handler = oldact.sa_handler;
23991 @@ -2458,7 +2679,7 @@
23995 -# if defined(MACOSX) || defined(HPUX) || defined(LINUX) || defined(HURD)
23996 +# if defined(HPUX) || defined(LINUX) || defined(HURD)
23997 sigaction(SIGBUS, &act, &oldact);
23998 GC_old_bus_handler = oldact.sa_handler;
23999 if (GC_old_bus_handler == SIG_IGN) {
24000 @@ -2470,7 +2691,7 @@
24001 GC_err_printf0("Replaced other SIGBUS handler\n");
24004 -# endif /* MACOS || HPUX || LINUX */
24005 +# endif /* HPUX || LINUX || HURD */
24006 # if defined(MSWIN32)
24007 GC_old_segv_handler = SetUnhandledExceptionFilter(GC_write_fault_handler);
24008 if (GC_old_segv_handler != NULL) {
24009 @@ -2482,6 +2703,7 @@
24013 +#endif /* !DARWIN */
24015 int GC_incremental_protection_needs()
24017 @@ -2628,15 +2850,23 @@
24018 ((ptr_t)end_block - (ptr_t)start_block) + HBLKSIZE);
24021 -#if !defined(MSWIN32) && !defined(MSWINCE) && !defined(THREADS) \
24022 - && !defined(GC_USE_LD_WRAP)
24025 +/* We no longer wrap read by default, since that was causing too many */
24026 +/* problems. It is preferred that the client instead avoids writing */
24027 +/* to the write-protected heap with a system call. */
24028 +/* This still serves as sample code if you do want to wrap system calls.*/
24030 +#if !defined(MSWIN32) && !defined(MSWINCE) && !defined(GC_USE_LD_WRAP)
24031 /* Replacement for UNIX system call. */
24032 /* Other calls that write to the heap should be handled similarly. */
24033 /* Note that this doesn't work well for blocking reads: It will hold */
24034 -/* tha allocation lock for the entur duration of the call. Multithreaded */
24035 +/* the allocation lock for the entire duration of the call. Multithreaded */
24036 /* clients should really ensure that it won't block, either by setting */
24037 /* the descriptor nonblocking, or by calling select or poll first, to */
24038 /* make sure that input is available. */
24039 +/* Another, preferred alternative is to ensure that system calls never */
24040 +/* write to the protected heap (see above). */
24041 # if defined(__STDC__) && !defined(SUNOS4)
24042 # include <unistd.h>
24043 # include <sys/uio.h>
24044 @@ -2706,6 +2936,8 @@
24045 /* actually calls. */
24051 GC_bool GC_page_was_ever_dirty(h)
24053 @@ -2721,13 +2953,6 @@
24057 -# else /* !MPROTECT_VDB */
24059 -# ifdef GC_USE_LD_WRAP
24060 - ssize_t __wrap_read(int fd, void *buf, size_t nbyte)
24061 - { return __real_read(fd, buf, nbyte); }
24064 # endif /* MPROTECT_VDB */
24067 @@ -2806,6 +3031,7 @@
24069 GC_proc_fd = syscall(SYS_ioctl, fd, PIOCOPENPD, 0);
24071 + syscall(SYS_fcntl, GC_proc_fd, F_SETFD, FD_CLOEXEC);
24072 if (GC_proc_fd < 0) {
24073 ABORT("/proc ioctl failed");
24075 @@ -3045,6 +3271,553 @@
24077 # endif /* PCR_VDB */
24079 +#if defined(MPROTECT_VDB) && defined(DARWIN)
24080 +/* The following sources were used as a *reference* for this exception handling
24082 + 1. Apple's mach/xnu documentation
24083 + 2. Timothy J. Wood's "Mach Exception Handlers 101" post to the
24084 + omnigroup's macosx-dev list.
24085 + www.omnigroup.com/mailman/archive/macosx-dev/2000-June/002030.html
24086 + 3. macosx-nat.c from Apple's GDB source code.
24089 +/* There seem to be numerous problems with darwin's mach exception handling.
24090 + I'm pretty sure they are not problems in my code. Search for
24091 + BROKEN_EXCEPTION_HANDLING for more information. */
24092 +#define BROKEN_EXCEPTION_HANDLING
24094 +#include <mach/mach.h>
24095 +#include <mach/mach_error.h>
24096 +#include <mach/thread_status.h>
24097 +#include <mach/exception.h>
24098 +#include <mach/task.h>
24099 +#include <pthread.h>
24101 +/* These are not defined in any header, although they are documented */
24102 +extern boolean_t exc_server(mach_msg_header_t *,mach_msg_header_t *);
24103 +extern kern_return_t exception_raise(
24104 + mach_port_t,mach_port_t,mach_port_t,
24105 + exception_type_t,exception_data_t,mach_msg_type_number_t);
24106 +extern kern_return_t exception_raise_state(
24107 + mach_port_t,mach_port_t,mach_port_t,
24108 + exception_type_t,exception_data_t,mach_msg_type_number_t,
24109 + thread_state_flavor_t*,thread_state_t,mach_msg_type_number_t,
24110 + thread_state_t,mach_msg_type_number_t*);
24111 +extern kern_return_t exception_raise_state_identity(
24112 + mach_port_t,mach_port_t,mach_port_t,
24113 + exception_type_t,exception_data_t,mach_msg_type_number_t,
24114 + thread_state_flavor_t*,thread_state_t,mach_msg_type_number_t,
24115 + thread_state_t,mach_msg_type_number_t*);
24118 +#define MAX_EXCEPTION_PORTS 16
24120 +static mach_port_t GC_task_self;
24123 + mach_msg_type_number_t count;
24124 + exception_mask_t masks[MAX_EXCEPTION_PORTS];
24125 + exception_handler_t ports[MAX_EXCEPTION_PORTS];
24126 + exception_behavior_t behaviors[MAX_EXCEPTION_PORTS];
24127 + thread_state_flavor_t flavors[MAX_EXCEPTION_PORTS];
24128 +} GC_old_exc_ports;
24131 + mach_port_t exception;
24132 +#if defined(THREADS)
24133 + mach_port_t reply;
24138 + mach_msg_header_t head;
24142 + GC_MP_NORMAL, GC_MP_DISCARDING, GC_MP_STOPPED
24143 +} GC_mprotect_state_t;
24145 +/* FIXME: 1 and 2 seem to be safe to use in the msgh_id field,
24146 + but it isn't documented. Use the source and see if they
24149 +#define ID_RESUME 2
24151 +/* These values are only used on the reply port */
24154 +#if defined(THREADS)
24156 +GC_mprotect_state_t GC_mprotect_state;
24158 +/* The following should ONLY be called when the world is stopped */
24159 +static void GC_mprotect_thread_notify(mach_msg_id_t id) {
24162 + mach_msg_trailer_t trailer;
24164 + mach_msg_return_t r;
24165 + /* remote, local */
24166 + buf.msg.head.msgh_bits =
24167 + MACH_MSGH_BITS(MACH_MSG_TYPE_MAKE_SEND,0);
24168 + buf.msg.head.msgh_size = sizeof(buf.msg);
24169 + buf.msg.head.msgh_remote_port = GC_ports.exception;
24170 + buf.msg.head.msgh_local_port = MACH_PORT_NULL;
24171 + buf.msg.head.msgh_id = id;
24175 + MACH_SEND_MSG|MACH_RCV_MSG|MACH_RCV_LARGE,
24179 + MACH_MSG_TIMEOUT_NONE,
24181 + if(r != MACH_MSG_SUCCESS)
24182 + ABORT("mach_msg failed in GC_mprotect_thread_notify");
24183 + if(buf.msg.head.msgh_id != ID_ACK)
24184 + ABORT("invalid ack in GC_mprotect_thread_notify");
24187 +/* Should only be called by the mprotect thread */
24188 +static void GC_mprotect_thread_reply() {
24190 + mach_msg_return_t r;
24191 + /* remote, local */
24192 + msg.head.msgh_bits =
24193 + MACH_MSGH_BITS(MACH_MSG_TYPE_MAKE_SEND,0);
24194 + msg.head.msgh_size = sizeof(msg);
24195 + msg.head.msgh_remote_port = GC_ports.reply;
24196 + msg.head.msgh_local_port = MACH_PORT_NULL;
24197 + msg.head.msgh_id = ID_ACK;
24205 + MACH_MSG_TIMEOUT_NONE,
24207 + if(r != MACH_MSG_SUCCESS)
24208 + ABORT("mach_msg failed in GC_mprotect_thread_reply");
24211 +void GC_mprotect_stop() {
24212 + GC_mprotect_thread_notify(ID_STOP);
24214 +void GC_mprotect_resume() {
24215 + GC_mprotect_thread_notify(ID_RESUME);
24218 +#else /* !THREADS */
24219 +/* The compiler should optimize away any GC_mprotect_state computations */
24220 +#define GC_mprotect_state GC_MP_NORMAL
24223 +static void *GC_mprotect_thread(void *arg) {
24224 + mach_msg_return_t r;
24225 + /* These two structures contain some private kernel data. We don't need to
24226 + access any of it so we don't bother defining a proper struct. The
24227 + correct definitions are in the xnu source code. */
24229 + mach_msg_header_t head;
24233 + mach_msg_header_t head;
24234 + mach_msg_body_t msgh_body;
24238 + mach_msg_id_t id;
24243 + MACH_RCV_MSG|MACH_RCV_LARGE|
24244 + (GC_mprotect_state == GC_MP_DISCARDING ? MACH_RCV_TIMEOUT : 0),
24247 + GC_ports.exception,
24248 + GC_mprotect_state == GC_MP_DISCARDING ? 0 : MACH_MSG_TIMEOUT_NONE,
24251 + id = r == MACH_MSG_SUCCESS ? msg.head.msgh_id : -1;
24253 +#if defined(THREADS)
24254 + if(GC_mprotect_state == GC_MP_DISCARDING) {
24255 + if(r == MACH_RCV_TIMED_OUT) {
24256 + GC_mprotect_state = GC_MP_STOPPED;
24257 + GC_mprotect_thread_reply();
24260 + if(r == MACH_MSG_SUCCESS && (id == ID_STOP || id == ID_RESUME))
24261 + ABORT("out of order mprotect thread request");
24265 + if(r != MACH_MSG_SUCCESS) {
24266 + GC_err_printf2("mach_msg failed with %d %s\n",
24267 + (int)r,mach_error_string(r));
24268 + ABORT("mach_msg failed");
24272 +#if defined(THREADS)
24274 + if(GC_mprotect_state != GC_MP_NORMAL)
24275 + ABORT("Called mprotect_stop when state wasn't normal");
24276 + GC_mprotect_state = GC_MP_DISCARDING;
24279 + if(GC_mprotect_state != GC_MP_STOPPED)
24280 + ABORT("Called mprotect_resume when state wasn't stopped");
24281 + GC_mprotect_state = GC_MP_NORMAL;
24282 + GC_mprotect_thread_reply();
24284 +#endif /* THREADS */
24286 + /* Handle the message (calls catch_exception_raise) */
24287 + if(!exc_server(&msg.head,&reply.head))
24288 + ABORT("exc_server failed");
24289 + /* Send the reply */
24293 + reply.head.msgh_size,
24296 + MACH_MSG_TIMEOUT_NONE,
24298 + if(r != MACH_MSG_SUCCESS) {
24299 + /* This will fail if the thread dies, but the thread shouldn't
24301 + #ifdef BROKEN_EXCEPTION_HANDLING
24303 + "mach_msg failed with %d %s while sending exc reply\n",
24304 + (int)r,mach_error_string(r));
24306 + ABORT("mach_msg failed while sending exception reply");
24311 + /* NOT REACHED */
24315 +/* All this SIGBUS code shouldn't be necessary. All protection faults should
24316 + be going throught the mach exception handler. However, it seems a SIGBUS is
24317 + occasionally sent for some unknown reason. Even more odd, it seems to be
24318 + meaningless and safe to ignore. */
24319 +#ifdef BROKEN_EXCEPTION_HANDLING
24321 +typedef void (* SIG_PF)();
24322 +static SIG_PF GC_old_bus_handler;
24324 +/* Updates to this aren't atomic, but the SIGBUSs seem pretty rare.
24325 + Even if this doesn't get updated property, it isn't really a problem */
24326 +static int GC_sigbus_count;
24328 +static void GC_darwin_sigbus(int num,siginfo_t *sip,void *context) {
24329 + if(num != SIGBUS) ABORT("Got a non-sigbus signal in the sigbus handler");
24331 + /* Ugh... some seem safe to ignore, but too many in a row probably means
24332 + trouble. GC_sigbus_count is reset for each mach exception that is
24334 + if(GC_sigbus_count >= 8) {
24335 + ABORT("Got more than 8 SIGBUSs in a row!");
24337 + GC_sigbus_count++;
24338 + GC_err_printf0("GC: WARNING: Ignoring SIGBUS.\n");
24341 +#endif /* BROKEN_EXCEPTION_HANDLING */
24343 +void GC_dirty_init() {
24346 + pthread_t thread;
24347 + pthread_attr_t attr;
24348 + exception_mask_t mask;
24350 +# ifdef PRINTSTATS
24351 + GC_printf0("Inititalizing mach/darwin mprotect virtual dirty bit "
24352 + "implementation\n");
24354 +# ifdef BROKEN_EXCEPTION_HANDLING
24355 + GC_err_printf0("GC: WARNING: Enabling workarounds for various darwin "
24356 + "exception handling bugs.\n");
24358 + GC_dirty_maintained = TRUE;
24359 + if (GC_page_size % HBLKSIZE != 0) {
24360 + GC_err_printf0("Page size not multiple of HBLKSIZE\n");
24361 + ABORT("Page size not multiple of HBLKSIZE");
24364 + GC_task_self = me = mach_task_self();
24366 + r = mach_port_allocate(me,MACH_PORT_RIGHT_RECEIVE,&GC_ports.exception);
24367 + if(r != KERN_SUCCESS) ABORT("mach_port_allocate failed (exception port)");
24369 + r = mach_port_insert_right(me,GC_ports.exception,GC_ports.exception,
24370 + MACH_MSG_TYPE_MAKE_SEND);
24371 + if(r != KERN_SUCCESS)
24372 + ABORT("mach_port_insert_right failed (exception port)");
24374 + #if defined(THREADS)
24375 + r = mach_port_allocate(me,MACH_PORT_RIGHT_RECEIVE,&GC_ports.reply);
24376 + if(r != KERN_SUCCESS) ABORT("mach_port_allocate failed (reply port)");
24379 + /* The exceptions we want to catch */
24380 + mask = EXC_MASK_BAD_ACCESS;
24382 + r = task_get_exception_ports(
24385 + GC_old_exc_ports.masks,
24386 + &GC_old_exc_ports.count,
24387 + GC_old_exc_ports.ports,
24388 + GC_old_exc_ports.behaviors,
24389 + GC_old_exc_ports.flavors
24391 + if(r != KERN_SUCCESS) ABORT("task_get_exception_ports failed");
24393 + r = task_set_exception_ports(
24396 + GC_ports.exception,
24397 + EXCEPTION_DEFAULT,
24398 + MACHINE_THREAD_STATE
24400 + if(r != KERN_SUCCESS) ABORT("task_set_exception_ports failed");
24402 + if(pthread_attr_init(&attr) != 0) ABORT("pthread_attr_init failed");
24403 + if(pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED) != 0)
24404 + ABORT("pthread_attr_setdetachedstate failed");
24406 +# undef pthread_create
24407 + /* This will call the real pthread function, not our wrapper */
24408 + if(pthread_create(&thread,&attr,GC_mprotect_thread,NULL) != 0)
24409 + ABORT("pthread_create failed");
24410 + pthread_attr_destroy(&attr);
24412 + /* Setup the sigbus handler for ignoring the meaningless SIGBUSs */
24413 + #ifdef BROKEN_EXCEPTION_HANDLING
24415 + struct sigaction sa, oldsa;
24416 + sa.sa_handler = (SIG_PF)GC_darwin_sigbus;
24417 + sigemptyset(&sa.sa_mask);
24418 + sa.sa_flags = SA_RESTART|SA_SIGINFO;
24419 + if(sigaction(SIGBUS,&sa,&oldsa) < 0) ABORT("sigaction");
24420 + GC_old_bus_handler = (SIG_PF)oldsa.sa_handler;
24421 + if (GC_old_bus_handler != SIG_DFL) {
24422 +# ifdef PRINTSTATS
24423 + GC_err_printf0("Replaced other SIGBUS handler\n");
24427 + #endif /* BROKEN_EXCEPTION_HANDLING */
24430 +/* The source code for Apple's GDB was used as a reference for the exception
24431 + forwarding code. This code is similar to be GDB code only because there is
24432 + only one way to do it. */
24433 +static kern_return_t GC_forward_exception(
24434 + mach_port_t thread,
24435 + mach_port_t task,
24436 + exception_type_t exception,
24437 + exception_data_t data,
24438 + mach_msg_type_number_t data_count
24442 + mach_port_t port;
24443 + exception_behavior_t behavior;
24444 + thread_state_flavor_t flavor;
24446 + thread_state_data_t thread_state;
24447 + mach_msg_type_number_t thread_state_count = THREAD_STATE_MAX;
24449 + for(i=0;i<GC_old_exc_ports.count;i++)
24450 + if(GC_old_exc_ports.masks[i] & (1 << exception))
24452 + if(i==GC_old_exc_ports.count) ABORT("No handler for exception!");
24454 + port = GC_old_exc_ports.ports[i];
24455 + behavior = GC_old_exc_ports.behaviors[i];
24456 + flavor = GC_old_exc_ports.flavors[i];
24458 + if(behavior != EXCEPTION_DEFAULT) {
24459 + r = thread_get_state(thread,flavor,thread_state,&thread_state_count);
24460 + if(r != KERN_SUCCESS)
24461 + ABORT("thread_get_state failed in forward_exception");
24464 + switch(behavior) {
24465 + case EXCEPTION_DEFAULT:
24466 + r = exception_raise(port,thread,task,exception,data,data_count);
24468 + case EXCEPTION_STATE:
24469 + r = exception_raise_state(port,thread,task,exception,data,
24470 + data_count,&flavor,thread_state,thread_state_count,
24471 + thread_state,&thread_state_count);
24473 + case EXCEPTION_STATE_IDENTITY:
24474 + r = exception_raise_state_identity(port,thread,task,exception,data,
24475 + data_count,&flavor,thread_state,thread_state_count,
24476 + thread_state,&thread_state_count);
24479 + r = KERN_FAILURE; /* make gcc happy */
24480 + ABORT("forward_exception: unknown behavior");
24484 + if(behavior != EXCEPTION_DEFAULT) {
24485 + r = thread_set_state(thread,flavor,thread_state,thread_state_count);
24486 + if(r != KERN_SUCCESS)
24487 + ABORT("thread_set_state failed in forward_exception");
24493 +#define FWD() GC_forward_exception(thread,task,exception,code,code_count)
24495 +/* This violates the namespace rules but there isn't anything that can be done
24496 + about it. The exception handling stuff is hard coded to call this */
24498 +catch_exception_raise(
24499 + mach_port_t exception_port,mach_port_t thread,mach_port_t task,
24500 + exception_type_t exception,exception_data_t code,
24501 + mach_msg_type_number_t code_count
24508 + thread_state_flavor_t flavor = PPC_EXCEPTION_STATE;
24509 + mach_msg_type_number_t exc_state_count = PPC_EXCEPTION_STATE_COUNT;
24510 + ppc_exception_state_t exc_state;
24512 +# error FIXME for non-ppc darwin
24516 + if(exception != EXC_BAD_ACCESS || code[0] != KERN_PROTECTION_FAILURE) {
24517 + #ifdef DEBUG_EXCEPTION_HANDLING
24518 + /* We aren't interested, pass it on to the old handler */
24519 + GC_printf3("Exception: 0x%x Code: 0x%x 0x%x in catch....\n",
24521 + code_count > 0 ? code[0] : -1,
24522 + code_count > 1 ? code[1] : -1);
24527 + r = thread_get_state(thread,flavor,
24528 + (natural_t*)&exc_state,&exc_state_count);
24529 + if(r != KERN_SUCCESS) {
24530 + /* The thread is supposed to be suspended while the exception handler
24531 + is called. This shouldn't fail. */
24532 + #ifdef BROKEN_EXCEPTION_HANDLING
24533 + GC_err_printf0("thread_get_state failed in "
24534 + "catch_exception_raise\n");
24535 + return KERN_SUCCESS;
24537 + ABORT("thread_get_state failed in catch_exception_raise");
24541 + /* This is the address that caused the fault */
24542 + addr = (char*) exc_state.dar;
24544 + if((HDR(addr)) == 0) {
24545 + /* Ugh... just like the SIGBUS problem above, it seems we get a bogus
24546 + KERN_PROTECTION_FAILURE every once and a while. We wait till we get
24547 + a bunch in a row before doing anything about it. If a "real" fault
24548 + ever occurres it'll just keep faulting over and over and we'll hit
24549 + the limit pretty quickly. */
24550 + #ifdef BROKEN_EXCEPTION_HANDLING
24551 + static char *last_fault;
24552 + static int last_fault_count;
24554 + if(addr != last_fault) {
24555 + last_fault = addr;
24556 + last_fault_count = 0;
24558 + if(++last_fault_count < 32) {
24559 + if(last_fault_count == 1)
24561 + "GC: WARNING: Ignoring KERN_PROTECTION_FAILURE at %p\n",
24563 + return KERN_SUCCESS;
24566 + GC_err_printf1("Unexpected KERN_PROTECTION_FAILURE at %p\n",addr);
24567 + /* Can't pass it along to the signal handler because that is
24568 + ignoring SIGBUS signals. We also shouldn't call ABORT here as
24569 + signals don't always work too well from the exception handler. */
24570 + GC_err_printf0("Aborting\n");
24571 + exit(EXIT_FAILURE);
24572 + #else /* BROKEN_EXCEPTION_HANDLING */
24573 + /* Pass it along to the next exception handler
24574 + (which should call SIGBUS/SIGSEGV) */
24576 + #endif /* !BROKEN_EXCEPTION_HANDLING */
24579 + #ifdef BROKEN_EXCEPTION_HANDLING
24580 + /* Reset the number of consecutive SIGBUSs */
24581 + GC_sigbus_count = 0;
24584 + if(GC_mprotect_state == GC_MP_NORMAL) { /* common case */
24585 + h = (struct hblk*)((word)addr & ~(GC_page_size-1));
24586 + UNPROTECT(h, GC_page_size);
24587 + for (i = 0; i < divHBLKSZ(GC_page_size); i++) {
24588 + register int index = PHT_HASH(h+i);
24589 + async_set_pht_entry_from_index(GC_dirty_pages, index);
24591 + } else if(GC_mprotect_state == GC_MP_DISCARDING) {
24592 + /* Lie to the thread for now. No sense UNPROTECT()ing the memory
24593 + when we're just going to PROTECT() it again later. The thread
24594 + will just fault again once it resumes */
24596 + /* Shouldn't happen, i don't think */
24597 + GC_printf0("KERN_PROTECTION_FAILURE while world is stopped\n");
24600 + return KERN_SUCCESS;
24604 +/* These should never be called, but just in case... */
24605 +kern_return_t catch_exception_raise_state(mach_port_name_t exception_port,
24606 + int exception, exception_data_t code, mach_msg_type_number_t codeCnt,
24607 + int flavor, thread_state_t old_state, int old_stateCnt,
24608 + thread_state_t new_state, int new_stateCnt)
24610 + ABORT("catch_exception_raise_state");
24611 + return(KERN_INVALID_ARGUMENT);
24613 +kern_return_t catch_exception_raise_state_identity(
24614 + mach_port_name_t exception_port, mach_port_t thread, mach_port_t task,
24615 + int exception, exception_data_t code, mach_msg_type_number_t codeCnt,
24616 + int flavor, thread_state_t old_state, int old_stateCnt,
24617 + thread_state_t new_state, int new_stateCnt)
24619 + ABORT("catch_exception_raise_state_identity");
24620 + return(KERN_INVALID_ARGUMENT);
24624 +#endif /* DARWIN && MPROTECT_VDB */
24626 # ifndef HAVE_INCREMENTAL_PROTECTION_NEEDS
24627 int GC_incremental_protection_needs()
24629 @@ -3105,19 +3878,20 @@
24633 -#ifdef SAVE_CALL_CHAIN
24634 +#ifdef NEED_CALLINFO
24635 /* Fill in the pc and argument information for up to NFRAMES of my */
24636 /* callers. Ignore my frame and my callers frame. */
24639 -# include <features.h>
24640 -# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2
24641 -# define HAVE_BUILTIN_BACKTRACE
24643 +# include <unistd.h>
24646 +#endif /* NEED_CALLINFO */
24648 +#ifdef SAVE_CALL_CHAIN
24650 #if NARGS == 0 && NFRAMES % 2 == 0 /* No padding */ \
24651 - && defined(HAVE_BUILTIN_BACKTRACE)
24652 + && defined(GC_HAVE_BUILTIN_BACKTRACE)
24654 #include <execinfo.h>
24656 @@ -3188,31 +3962,139 @@
24658 #endif /* SAVE_CALL_CHAIN */
24660 -#if defined(LINUX) && defined(__ELF__) && \
24661 - (!defined(SMALL_CONFIG) || defined(USE_PROC_FOR_LIBRARIES))
24662 -#ifdef GC_USE_LD_WRAP
24663 -# define READ __real_read
24665 -# define READ read
24668 +#ifdef NEED_CALLINFO
24670 -/* Repeatedly perform a read call until the buffer is filled or */
24671 -/* we encounter EOF. */
24672 -ssize_t GC_repeat_read(int fd, char *buf, size_t count)
24673 +/* Print info to stderr. We do NOT hold the allocation lock */
24674 +void GC_print_callers (info)
24675 +struct callinfo info[NFRAMES];
24677 - ssize_t num_read = 0;
24680 + static int reentry_count = 0;
24681 + GC_bool stop = FALSE;
24683 - while (num_read < count) {
24684 - result = READ(fd, buf + num_read, count - num_read);
24685 - if (result < 0) return result;
24686 - if (result == 0) break;
24687 - num_read += result;
24693 + GC_err_printf0("\tCaller at allocation:\n");
24695 + GC_err_printf0("\tCall chain at allocation:\n");
24697 + for (i = 0; i < NFRAMES && !stop ; i++) {
24698 + if (info[i].ci_pc == 0) break;
24703 + GC_err_printf0("\t\targs: ");
24704 + for (j = 0; j < NARGS; j++) {
24705 + if (j != 0) GC_err_printf0(", ");
24706 + GC_err_printf2("%d (0x%X)", ~(info[i].ci_arg[j]),
24707 + ~(info[i].ci_arg[j]));
24710 + GC_err_printf0("\n");
24713 + if (reentry_count > 1) {
24714 + /* We were called during an allocation during */
24715 + /* a previous GC_print_callers call; punt. */
24716 + GC_err_printf1("\t\t##PC##= 0x%lx\n", info[i].ci_pc);
24723 +# if defined(GC_HAVE_BUILTIN_BACKTRACE)
24724 + char **sym_name =
24725 + backtrace_symbols((void **)(&(info[i].ci_pc)), 1);
24726 + char *name = sym_name[0];
24729 + char *name = buf;
24730 + sprintf(buf, "##PC##= 0x%lx", info[i].ci_pc);
24732 +# if defined(LINUX) && !defined(SMALL_CONFIG)
24733 + /* Try for a line number. */
24735 +# define EXE_SZ 100
24736 + static char exe_name[EXE_SZ];
24737 +# define CMD_SZ 200
24738 + char cmd_buf[CMD_SZ];
24739 +# define RESULT_SZ 200
24740 + static char result_buf[RESULT_SZ];
24741 + size_t result_len;
24742 + static GC_bool found_exe_name = FALSE;
24743 + static GC_bool will_fail = FALSE;
24745 + /* Try to get it via a hairy and expensive scheme. */
24746 + /* First we get the name of the executable: */
24747 + if (will_fail) goto out;
24748 + if (!found_exe_name) {
24749 + ret_code = readlink("/proc/self/exe", exe_name, EXE_SZ);
24750 + if (ret_code < 0 || ret_code >= EXE_SZ
24751 + || exe_name[0] != '/') {
24752 + will_fail = TRUE; /* Dont try again. */
24755 + exe_name[ret_code] = '\0';
24756 + found_exe_name = TRUE;
24758 + /* Then we use popen to start addr2line -e <exe> <addr> */
24759 + /* There are faster ways to do this, but hopefully this */
24760 + /* isn't time critical. */
24761 + sprintf(cmd_buf, "/usr/bin/addr2line -f -e %s 0x%lx", exe_name,
24762 + (unsigned long)info[i].ci_pc);
24763 + pipe = popen(cmd_buf, "r");
24765 + || (result_len = fread(result_buf, 1, RESULT_SZ - 1, pipe))
24767 + if (pipe != NULL) pclose(pipe);
24768 + will_fail = TRUE;
24771 + if (result_buf[result_len - 1] == '\n') --result_len;
24772 + result_buf[result_len] = 0;
24773 + if (result_buf[0] == '?'
24774 + || result_buf[result_len-2] == ':'
24775 + && result_buf[result_len-1] == '0') {
24779 + /* Get rid of embedded newline, if any. Test for "main" */
24781 + char * nl = strchr(result_buf, '\n');
24782 + if (nl != NULL && nl < result_buf + result_len) {
24785 + if (strncmp(result_buf, "main", nl - result_buf) == 0) {
24789 + if (result_len < RESULT_SZ - 25) {
24790 + /* Add in hex address */
24791 + sprintf(result_buf + result_len, " [0x%lx]",
24792 + (unsigned long)info[i].ci_pc);
24794 + name = result_buf;
24798 +# endif /* LINUX */
24799 + GC_err_printf1("\t\t%s\n", name);
24800 +# if defined(GC_HAVE_BUILTIN_BACKTRACE)
24801 + free(sym_name); /* May call GC_free; that's OK */
24809 -#endif /* LINUX && ... */
24811 +#endif /* NEED_CALLINFO */
24815 #if defined(LINUX) && defined(__ELF__) && !defined(SMALL_CONFIG)
24816 @@ -3220,20 +4102,16 @@
24817 /* Dump /proc/self/maps to GC_stderr, to enable looking up names for
24818 addresses in FIND_LEAK output. */
24820 +static word dump_maps(char *maps)
24822 + GC_err_write(maps, strlen(maps));
24826 void GC_print_address_map()
24830 - char maps_temp[32768];
24831 GC_err_printf0("---------- Begin address map ----------\n");
24832 - f = open("/proc/self/maps", O_RDONLY);
24833 - if (-1 == f) ABORT("Couldn't open /proc/self/maps");
24835 - result = GC_repeat_read(f, maps_temp, sizeof(maps_temp));
24836 - if (result <= 0) ABORT("Couldn't read /proc/self/maps");
24837 - GC_err_write(maps_temp, result);
24838 - } while (result == sizeof(maps_temp));
24840 + GC_apply_to_maps(dump_maps);
24841 GC_err_printf0("---------- End address map ----------\n");
24844 diff -urNb boehm-gc/powerpc_darwin_mach_dep.s boehm-gc/powerpc_darwin_mach_dep.s
24845 --- boehm-gc/powerpc_darwin_mach_dep.s Wed Dec 31 16:00:00 1969
24846 +++ boehm-gc/powerpc_darwin_mach_dep.s Mon May 26 12:48:52 2003
24849 +; GC_push_regs function. Under some optimization levels GCC will clobber
24850 +; some of the non-volatile registers before we get a chance to save them
24851 +; therefore, this can't be inline asm.
24855 + .globl _GC_push_regs
24865 + bl L_GC_push_one$stub
24867 + bl L_GC_push_one$stub
24869 + bl L_GC_push_one$stub
24871 + bl L_GC_push_one$stub
24873 + bl L_GC_push_one$stub
24875 + bl L_GC_push_one$stub
24877 + bl L_GC_push_one$stub
24879 + bl L_GC_push_one$stub
24881 + bl L_GC_push_one$stub
24883 + bl L_GC_push_one$stub
24885 + bl L_GC_push_one$stub
24887 + bl L_GC_push_one$stub
24889 + bl L_GC_push_one$stub
24891 + bl L_GC_push_one$stub
24893 + bl L_GC_push_one$stub
24895 + bl L_GC_push_one$stub
24897 + bl L_GC_push_one$stub
24899 + bl L_GC_push_one$stub
24901 + bl L_GC_push_one$stub
24911 +; PIC stuff, generated by GCC
24915 +L_GC_push_one$stub:
24916 + .indirect_symbol _GC_push_one
24918 + bcl 20,31,L0$_GC_push_one
24921 + addis r11,r11,ha16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
24923 + lwz r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11)
24925 + addi r11,r11,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
24928 +.lazy_symbol_pointer
24929 +L_GC_push_one$lazy_ptr:
24930 + .indirect_symbol _GC_push_one
24931 + .long dyld_stub_binding_helper
24932 diff -urNb boehm-gc/pthread_stop_world.c boehm-gc/pthread_stop_world.c
24933 --- boehm-gc/pthread_stop_world.c Wed Dec 31 16:00:00 1969
24934 +++ boehm-gc/pthread_stop_world.c Mon May 26 12:48:52 2003
24936 +#include "private/pthread_support.h"
24938 +#if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
24939 + && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS) \
24940 + && !defined(GC_DARWIN_THREADS)
24942 +#include <signal.h>
24943 +#include <semaphore.h>
24944 +#include <errno.h>
24945 +#include <unistd.h>
24950 +# if defined(MAXSIG)
24951 +# define NSIG (MAXSIG+1)
24952 +# elif defined(_NSIG)
24953 +# define NSIG _NSIG
24954 +# elif defined(__SIGRTMAX)
24955 +# define NSIG (__SIGRTMAX+1)
24957 + --> please fix it
24961 +void GC_print_sig_mask()
24963 + sigset_t blocked;
24966 + if (pthread_sigmask(SIG_BLOCK, NULL, &blocked) != 0)
24967 + ABORT("pthread_sigmask");
24968 + GC_printf0("Blocked: ");
24969 + for (i = 1; i < NSIG; i++) {
24970 + if (sigismember(&blocked, i)) { GC_printf1("%ld ",(long) i); }
24972 + GC_printf0("\n");
24977 +word GC_stop_count; /* Incremented at the beginning of GC_stop_world. */
24979 +#ifdef GC_OSF1_THREADS
24980 + GC_bool GC_retry_signals = TRUE;
24982 + GC_bool GC_retry_signals = FALSE;
24986 + * We use signals to stop threads during GC.
24988 + * Suspended threads wait in signal handler for SIG_THR_RESTART.
24989 + * That's more portable than semaphores or condition variables.
24990 + * (We do use sem_post from a signal handler, but that should be portable.)
24992 + * The thread suspension signal SIG_SUSPEND is now defined in gc_priv.h.
24993 + * Note that we can't just stop a thread; we need it to save its stack
24994 + * pointer(s) and acknowledge.
24997 +#ifndef SIG_THR_RESTART
24998 +# if defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS)
25000 +# define SIG_THR_RESTART _SIGRTMIN + 5
25002 +# define SIG_THR_RESTART SIGRTMIN + 5
25005 +# define SIG_THR_RESTART SIGXCPU
25009 +sem_t GC_suspend_ack_sem;
25011 +void GC_suspend_handler(int sig)
25014 + pthread_t my_thread = pthread_self();
25017 +# ifdef PARALLEL_MARK
25018 + word my_mark_no = GC_mark_no;
25019 + /* Marker can't proceed until we acknowledge. Thus this is */
25020 + /* guaranteed to be the mark_no correspending to our */
25021 + /* suspension, i.e. the marker can't have incremented it yet. */
25023 + word my_stop_count = GC_stop_count;
25025 + if (sig != SIG_SUSPEND) ABORT("Bad signal in suspend_handler");
25028 + GC_printf1("Suspending 0x%lx\n", my_thread);
25031 + me = GC_lookup_thread(my_thread);
25032 + /* The lookup here is safe, since I'm doing this on behalf */
25033 + /* of a thread which holds the allocation lock in order */
25034 + /* to stop the world. Thus concurrent modification of the */
25035 + /* data structure is impossible. */
25036 + if (me -> stop_info.last_stop_count == my_stop_count) {
25037 + /* Duplicate signal. OK if we are retrying. */
25038 + if (!GC_retry_signals) {
25039 + WARN("Duplicate suspend signal in thread %lx\n",
25045 + me -> stop_info.stack_ptr = (ptr_t)GC_save_regs_in_stack();
25047 + me -> stop_info.stack_ptr = (ptr_t)(&dummy);
25050 + me -> backing_store_ptr = (ptr_t)GC_save_regs_in_stack();
25053 + /* Tell the thread that wants to stop the world that this */
25054 + /* thread has been stopped. Note that sem_post() is */
25055 + /* the only async-signal-safe primitive in LinuxThreads. */
25056 + sem_post(&GC_suspend_ack_sem);
25057 + me -> stop_info.last_stop_count = my_stop_count;
25059 + /* Wait until that thread tells us to restart by sending */
25060 + /* this thread a SIG_THR_RESTART signal. */
25061 + /* SIG_THR_RESTART should be masked at this point. Thus there */
25062 + /* is no race. */
25063 + if (sigfillset(&mask) != 0) ABORT("sigfillset() failed");
25064 + if (sigdelset(&mask, SIG_THR_RESTART) != 0) ABORT("sigdelset() failed");
25065 +# ifdef NO_SIGNALS
25066 + if (sigdelset(&mask, SIGINT) != 0) ABORT("sigdelset() failed");
25067 + if (sigdelset(&mask, SIGQUIT) != 0) ABORT("sigdelset() failed");
25068 + if (sigdelset(&mask, SIGTERM) != 0) ABORT("sigdelset() failed");
25069 + if (sigdelset(&mask, SIGABRT) != 0) ABORT("sigdelset() failed");
25072 + me->stop_info.signal = 0;
25073 + sigsuspend(&mask); /* Wait for signal */
25074 + } while (me->stop_info.signal != SIG_THR_RESTART);
25075 + /* If the RESTART signal gets lost, we can still lose. That should be */
25076 + /* less likely than losing the SUSPEND signal, since we don't do much */
25077 + /* between the sem_post and sigsuspend. */
25078 + /* We'd need more handshaking to work around that, since we don't want */
25079 + /* to accidentally leave a RESTART signal pending, thus causing us to */
25080 + /* continue prematurely in a future round. */
25083 + GC_printf1("Continuing 0x%lx\n", my_thread);
25087 +void GC_restart_handler(int sig)
25089 + pthread_t my_thread = pthread_self();
25092 + if (sig != SIG_THR_RESTART) ABORT("Bad signal in suspend_handler");
25094 + /* Let the GC_suspend_handler() know that we got a SIG_THR_RESTART. */
25095 + /* The lookup here is safe, since I'm doing this on behalf */
25096 + /* of a thread which holds the allocation lock in order */
25097 + /* to stop the world. Thus concurrent modification of the */
25098 + /* data structure is impossible. */
25099 + me = GC_lookup_thread(my_thread);
25100 + me->stop_info.signal = SIG_THR_RESTART;
25103 + ** Note: even if we didn't do anything useful here,
25104 + ** it would still be necessary to have a signal handler,
25105 + ** rather than ignoring the signals, otherwise
25106 + ** the signals will not be delivered at all, and
25107 + ** will thus not interrupt the sigsuspend() above.
25111 + GC_printf1("In GC_restart_handler for 0x%lx\n", pthread_self());
25116 +# define IF_IA64(x) x
25118 +# define IF_IA64(x)
25120 +/* We hold allocation lock. Should do exactly the right thing if the */
25121 +/* world is stopped. Should not fail if it isn't. */
25122 +void GC_push_all_stacks()
25127 + /* On IA64, we also need to scan the register backing store. */
25128 + IF_IA64(ptr_t bs_lo; ptr_t bs_hi;)
25129 + pthread_t me = pthread_self();
25131 + if (!GC_thr_initialized) GC_thr_init();
25132 + #if DEBUG_THREADS
25133 + GC_printf1("Pushing stacks from thread 0x%lx\n", (unsigned long) me);
25135 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
25136 + for (p = GC_threads[i]; p != 0; p = p -> next) {
25137 + if (p -> flags & FINISHED) continue;
25138 + if (pthread_equal(p -> id, me)) {
25140 + lo = (ptr_t)GC_save_regs_in_stack();
25142 + lo = GC_approx_sp();
25144 + IF_IA64(bs_hi = (ptr_t)GC_save_regs_in_stack();)
25146 + lo = p -> stop_info.stack_ptr;
25147 + IF_IA64(bs_hi = p -> backing_store_ptr;)
25149 + if ((p -> flags & MAIN_THREAD) == 0) {
25150 + hi = p -> stack_end;
25151 + IF_IA64(bs_lo = p -> backing_store_end);
25153 + /* The original stack. */
25154 + hi = GC_stackbottom;
25155 + IF_IA64(bs_lo = BACKING_STORE_BASE;)
25157 + #if DEBUG_THREADS
25158 + GC_printf3("Stack for thread 0x%lx = [%lx,%lx)\n",
25159 + (unsigned long) p -> id,
25160 + (unsigned long) lo, (unsigned long) hi);
25162 + if (0 == lo) ABORT("GC_push_all_stacks: sp not set!\n");
25163 +# ifdef STACK_GROWS_UP
25164 + /* We got them backwards! */
25165 + GC_push_all_stack(hi, lo);
25167 + GC_push_all_stack(lo, hi);
25170 + if (pthread_equal(p -> id, me)) {
25171 + GC_push_all_eager(bs_lo, bs_hi);
25173 + GC_push_all_stack(bs_lo, bs_hi);
25180 +/* There seems to be a very rare thread stopping problem. To help us */
25181 +/* debug that, we save the ids of the stopping thread. */
25182 +pthread_t GC_stopping_thread;
25183 +int GC_stopping_pid;
25185 +/* We hold the allocation lock. Suspend all threads that might */
25186 +/* still be running. Return the number of suspend signals that */
25188 +int GC_suspend_all()
25190 + int n_live_threads = 0;
25194 + pthread_t my_thread = pthread_self();
25196 + GC_stopping_thread = my_thread; /* debugging only. */
25197 + GC_stopping_pid = getpid(); /* debugging only. */
25198 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
25199 + for (p = GC_threads[i]; p != 0; p = p -> next) {
25200 + if (p -> id != my_thread) {
25201 + if (p -> flags & FINISHED) continue;
25202 + if (p -> stop_info.last_stop_count == GC_stop_count) continue;
25203 + if (p -> thread_blocked) /* Will wait */ continue;
25204 + n_live_threads++;
25205 + #if DEBUG_THREADS
25206 + GC_printf1("Sending suspend signal to 0x%lx\n", p -> id);
25209 + result = pthread_kill(p -> id, SIG_SUSPEND);
25212 + /* Not really there anymore. Possible? */
25213 + n_live_threads--;
25218 + ABORT("pthread_kill failed");
25223 + return n_live_threads;
25226 +/* Caller holds allocation lock. */
25227 +void GC_stop_world()
25230 + int n_live_threads;
25233 + #if DEBUG_THREADS
25234 + GC_printf1("Stopping the world from 0x%lx\n", pthread_self());
25237 + /* Make sure all free list construction has stopped before we start. */
25238 + /* No new construction can start, since free list construction is */
25239 + /* required to acquire and release the GC lock before it starts, */
25240 + /* and we have the lock. */
25241 +# ifdef PARALLEL_MARK
25242 + GC_acquire_mark_lock();
25243 + GC_ASSERT(GC_fl_builder_count == 0);
25244 + /* We should have previously waited for it to become zero. */
25245 +# endif /* PARALLEL_MARK */
25247 + n_live_threads = GC_suspend_all();
25249 + if (GC_retry_signals) {
25250 + unsigned long wait_usecs = 0; /* Total wait since retry. */
25251 +# define WAIT_UNIT 3000
25252 +# define RETRY_INTERVAL 100000
25256 + sem_getvalue(&GC_suspend_ack_sem, &ack_count);
25257 + if (ack_count == n_live_threads) break;
25258 + if (wait_usecs > RETRY_INTERVAL) {
25259 + int newly_sent = GC_suspend_all();
25262 + if (GC_print_stats) {
25263 + GC_printf1("Resent %ld signals after timeout\n",
25267 + sem_getvalue(&GC_suspend_ack_sem, &ack_count);
25268 + if (newly_sent < n_live_threads - ack_count) {
25269 + WARN("Lost some threads during GC_stop_world?!\n",0);
25270 + n_live_threads = ack_count + newly_sent;
25274 + usleep(WAIT_UNIT);
25275 + wait_usecs += WAIT_UNIT;
25278 + for (i = 0; i < n_live_threads; i++) {
25279 + if (0 != (code = sem_wait(&GC_suspend_ack_sem))) {
25280 + GC_err_printf1("Sem_wait returned %ld\n", (unsigned long)code);
25281 + ABORT("sem_wait for handler failed");
25284 +# ifdef PARALLEL_MARK
25285 + GC_release_mark_lock();
25287 + #if DEBUG_THREADS
25288 + GC_printf1("World stopped from 0x%lx\n", pthread_self());
25290 + GC_stopping_thread = 0; /* debugging only */
25293 +/* Caller holds allocation lock, and has held it continuously since */
25294 +/* the world stopped. */
25295 +void GC_start_world()
25297 + pthread_t my_thread = pthread_self();
25299 + register GC_thread p;
25300 + register int n_live_threads = 0;
25301 + register int result;
25303 +# if DEBUG_THREADS
25304 + GC_printf0("World starting\n");
25307 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
25308 + for (p = GC_threads[i]; p != 0; p = p -> next) {
25309 + if (p -> id != my_thread) {
25310 + if (p -> flags & FINISHED) continue;
25311 + if (p -> thread_blocked) continue;
25312 + n_live_threads++;
25313 + #if DEBUG_THREADS
25314 + GC_printf1("Sending restart signal to 0x%lx\n", p -> id);
25317 + result = pthread_kill(p -> id, SIG_THR_RESTART);
25320 + /* Not really there anymore. Possible? */
25321 + n_live_threads--;
25326 + ABORT("pthread_kill failed");
25331 + #if DEBUG_THREADS
25332 + GC_printf0("World started\n");
25336 +void GC_stop_init() {
25337 + struct sigaction act;
25339 + if (sem_init(&GC_suspend_ack_sem, 0, 0) != 0)
25340 + ABORT("sem_init failed");
25342 + act.sa_flags = SA_RESTART;
25343 + if (sigfillset(&act.sa_mask) != 0) {
25344 + ABORT("sigfillset() failed");
25346 +# ifdef NO_SIGNALS
25347 + if (sigdelset(&act.sa_mask, SIGINT) != 0
25348 + || sigdelset(&act.sa_mask, SIGQUIT != 0)
25349 + || sigdelset(&act.sa_mask, SIGABRT != 0)
25350 + || sigdelset(&act.sa_mask, SIGTERM != 0)) {
25351 + ABORT("sigdelset() failed");
25355 + /* SIG_THR_RESTART is unmasked by the handler when necessary. */
25356 + act.sa_handler = GC_suspend_handler;
25357 + if (sigaction(SIG_SUSPEND, &act, NULL) != 0) {
25358 + ABORT("Cannot set SIG_SUSPEND handler");
25361 + act.sa_handler = GC_restart_handler;
25362 + if (sigaction(SIG_THR_RESTART, &act, NULL) != 0) {
25363 + ABORT("Cannot set SIG_THR_RESTART handler");
25366 + /* Check for GC_RETRY_SIGNALS. */
25367 + if (0 != GETENV("GC_RETRY_SIGNALS")) {
25368 + GC_retry_signals = TRUE;
25370 + if (0 != GETENV("GC_NO_RETRY_SIGNALS")) {
25371 + GC_retry_signals = FALSE;
25374 + if (GC_print_stats && GC_retry_signals) {
25375 + GC_printf0("Will retry suspend signal if necessary.\n");
25381 diff -urNb boehm-gc/pthread_support.c boehm-gc/pthread_support.c
25382 --- boehm-gc/pthread_support.c Wed Dec 31 16:00:00 1969
25383 +++ boehm-gc/pthread_support.c Mon May 26 12:48:52 2003
25386 + * Copyright (c) 1994 by Xerox Corporation. All rights reserved.
25387 + * Copyright (c) 1996 by Silicon Graphics. All rights reserved.
25388 + * Copyright (c) 1998 by Fergus Henderson. All rights reserved.
25389 + * Copyright (c) 2000-2001 by Hewlett-Packard Company. All rights reserved.
25391 + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
25392 + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
25394 + * Permission is hereby granted to use or copy this program
25395 + * for any purpose, provided the above notices are retained on all copies.
25396 + * Permission to modify the code and to distribute modified code is granted,
25397 + * provided the above notices are retained, and a notice that the code was
25398 + * modified is included with the above copyright notice.
25401 + * Support code for LinuxThreads, the clone()-based kernel
25402 + * thread package for Linux which is included in libc6.
25404 + * This code relies on implementation details of LinuxThreads,
25405 + * (i.e. properties not guaranteed by the Pthread standard),
25406 + * though this version now does less of that than the other Pthreads
25409 + * Note that there is a lot of code duplication between linux_threads.c
25410 + * and thread support for some of the other Posix platforms; any changes
25411 + * made here may need to be reflected there too.
25413 + /* DG/UX ix86 support <takis@xfree86.org> */
25415 + * Linux_threads.c now also includes some code to support HPUX and
25416 + * OSF1 (Compaq Tru64 Unix, really). The OSF1 support is not yet
25417 + * functional. The OSF1 code is based on Eric Benson's
25418 + * patch, though that was originally against hpux_irix_threads. The code
25419 + * here is completely untested. With 0.0000001% probability, it might
25422 + * Eric also suggested an alternate basis for a lock implementation in
25424 + * + #elif defined(OSF1)
25425 + * + unsigned long GC_allocate_lock = 0;
25426 + * + msemaphore GC_allocate_semaphore;
25427 + * + # define GC_TRY_LOCK() \
25428 + * + ((msem_lock(&GC_allocate_semaphore, MSEM_IF_NOWAIT) == 0) \
25429 + * + ? (GC_allocate_lock = 1) \
25431 + * + # define GC_LOCK_TAKEN GC_allocate_lock
25434 +/*#define DEBUG_THREADS 1*/
25435 +/*#define GC_ASSERTIONS*/
25437 +# include "private/pthread_support.h"
25439 +# if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
25440 + && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS)
25442 +# if defined(GC_HPUX_THREADS) && !defined(USE_PTHREAD_SPECIFIC) \
25443 + && !defined(USE_HPUX_TLS)
25444 +# define USE_HPUX_TLS
25447 +# if (defined(GC_DGUX386_THREADS) || defined(GC_OSF1_THREADS) || \
25448 + defined(GC_DARWIN_THREADS)) && !defined(USE_PTHREAD_SPECIFIC)
25449 +# define USE_PTHREAD_SPECIFIC
25452 +# if defined(GC_DGUX386_THREADS) && !defined(_POSIX4A_DRAFT10_SOURCE)
25453 +# define _POSIX4A_DRAFT10_SOURCE 1
25456 +# if defined(GC_DGUX386_THREADS) && !defined(_USING_POSIX4A_DRAFT10)
25457 +# define _USING_POSIX4A_DRAFT10 1
25460 +# ifdef THREAD_LOCAL_ALLOC
25461 +# if !defined(USE_PTHREAD_SPECIFIC) && !defined(USE_HPUX_TLS)
25462 +# include "private/specific.h"
25464 +# if defined(USE_PTHREAD_SPECIFIC)
25465 +# define GC_getspecific pthread_getspecific
25466 +# define GC_setspecific pthread_setspecific
25467 +# define GC_key_create pthread_key_create
25468 + typedef pthread_key_t GC_key_t;
25470 +# if defined(USE_HPUX_TLS)
25471 +# define GC_getspecific(x) (x)
25472 +# define GC_setspecific(key, v) ((key) = (v), 0)
25473 +# define GC_key_create(key, d) 0
25474 + typedef void * GC_key_t;
25477 +# include <stdlib.h>
25478 +# include <pthread.h>
25479 +# include <sched.h>
25480 +# include <time.h>
25481 +# include <errno.h>
25482 +# include <unistd.h>
25483 +# include <sys/mman.h>
25484 +# include <sys/time.h>
25485 +# include <sys/types.h>
25486 +# include <sys/stat.h>
25487 +# include <fcntl.h>
25489 +#if defined(GC_DARWIN_THREADS)
25490 +# include "private/darwin_semaphore.h"
25492 +# include <semaphore.h>
25493 +#endif /* !GC_DARWIN_THREADS */
25495 +#if defined(GC_DARWIN_THREADS)
25496 +# include <sys/sysctl.h>
25497 +#endif /* GC_DARWIN_THREADS */
25501 +#if defined(GC_DGUX386_THREADS)
25502 +# include <sys/dg_sys_info.h>
25503 +# include <sys/_int_psem.h>
25504 + /* sem_t is an uint in DG/UX */
25505 + typedef unsigned int sem_t;
25506 +#endif /* GC_DGUX386_THREADS */
25509 +# define __inline__
25512 +#ifdef GC_USE_LD_WRAP
25513 +# define WRAP_FUNC(f) __wrap_##f
25514 +# define REAL_FUNC(f) __real_##f
25516 +# define WRAP_FUNC(f) GC_##f
25517 +# if !defined(GC_DGUX386_THREADS)
25518 +# define REAL_FUNC(f) f
25519 +# else /* GC_DGUX386_THREADS */
25520 +# define REAL_FUNC(f) __d10_##f
25521 +# endif /* GC_DGUX386_THREADS */
25522 +# undef pthread_create
25523 +# if !defined(GC_DARWIN_THREADS)
25524 +# undef pthread_sigmask
25526 +# undef pthread_join
25527 +# undef pthread_detach
25530 +void GC_thr_init();
25532 +static GC_bool parallel_initialized = FALSE;
25534 +void GC_init_parallel();
25536 +# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL)
25538 +/* We don't really support thread-local allocation with DBG_HDRS_ALL */
25540 +#ifdef USE_HPUX_TLS
25543 +GC_key_t GC_thread_key;
25545 +static GC_bool keys_initialized;
25547 +/* Recover the contents of the freelist array fl into the global one gfl.*/
25548 +/* Note that the indexing scheme differs, in that gfl has finer size */
25549 +/* resolution, even if not all entries are used. */
25550 +/* We hold the allocator lock. */
25551 +static void return_freelists(ptr_t *fl, ptr_t *gfl)
25557 + for (i = 1; i < NFREELISTS; ++i) {
25558 + nwords = i * (GRANULARITY/sizeof(word));
25561 + if ((word)q >= HBLKSIZE) {
25562 + if (gfl[nwords] == 0) {
25565 + /* Concatenate: */
25566 + for (; (word)q >= HBLKSIZE; qptr = &(obj_link(q)), q = *qptr);
25567 + GC_ASSERT(0 == q);
25568 + *qptr = gfl[nwords];
25569 + gfl[nwords] = fl[i];
25572 + /* Clear fl[i], since the thread structure may hang around. */
25573 + /* Do it in a way that is likely to trap if we access it. */
25574 + fl[i] = (ptr_t)HBLKSIZE;
25578 +/* We statically allocate a single "size 0" object. It is linked to */
25579 +/* itself, and is thus repeatedly reused for all size 0 allocation */
25580 +/* requests. (Size 0 gcj allocation requests are incorrect, and */
25581 +/* we arrange for those to fault asap.) */
25582 +static ptr_t size_zero_object = (ptr_t)(&size_zero_object);
25584 +/* Each thread structure must be initialized. */
25585 +/* This call must be made from the new thread. */
25586 +/* Caller holds allocation lock. */
25587 +void GC_init_thread_local(GC_thread p)
25591 + if (!keys_initialized) {
25592 + if (0 != GC_key_create(&GC_thread_key, 0)) {
25593 + ABORT("Failed to create key for local allocator");
25595 + keys_initialized = TRUE;
25597 + if (0 != GC_setspecific(GC_thread_key, p)) {
25598 + ABORT("Failed to set thread specific allocation pointers");
25600 + for (i = 1; i < NFREELISTS; ++i) {
25601 + p -> ptrfree_freelists[i] = (ptr_t)1;
25602 + p -> normal_freelists[i] = (ptr_t)1;
25603 +# ifdef GC_GCJ_SUPPORT
25604 + p -> gcj_freelists[i] = (ptr_t)1;
25607 + /* Set up the size 0 free lists. */
25608 + p -> ptrfree_freelists[0] = (ptr_t)(&size_zero_object);
25609 + p -> normal_freelists[0] = (ptr_t)(&size_zero_object);
25610 +# ifdef GC_GCJ_SUPPORT
25611 + p -> gcj_freelists[0] = (ptr_t)(-1);
25615 +#ifdef GC_GCJ_SUPPORT
25616 + extern ptr_t * GC_gcjobjfreelist;
25619 +/* We hold the allocator lock. */
25620 +void GC_destroy_thread_local(GC_thread p)
25622 + /* We currently only do this from the thread itself or from */
25623 + /* the fork handler for a child process. */
25624 +# ifndef HANDLE_FORK
25625 + GC_ASSERT(GC_getspecific(GC_thread_key) == (void *)p);
25627 + return_freelists(p -> ptrfree_freelists, GC_aobjfreelist);
25628 + return_freelists(p -> normal_freelists, GC_objfreelist);
25629 +# ifdef GC_GCJ_SUPPORT
25630 + return_freelists(p -> gcj_freelists, GC_gcjobjfreelist);
25634 +extern GC_PTR GC_generic_malloc_many();
25636 +GC_PTR GC_local_malloc(size_t bytes)
25638 + if (EXPECT(!SMALL_ENOUGH(bytes),0)) {
25639 + return(GC_malloc(bytes));
25641 + int index = INDEX_FROM_BYTES(bytes);
25644 +# if defined(REDIRECT_MALLOC) && !defined(USE_PTHREAD_SPECIFIC)
25645 + GC_key_t k = GC_thread_key;
25649 +# if defined(REDIRECT_MALLOC) && !defined(USE_PTHREAD_SPECIFIC)
25650 + if (EXPECT(0 == k, 0)) {
25651 + /* This can happen if we get called when the world is */
25652 + /* being initialized. Whether we can actually complete */
25653 + /* the initialization then is unclear. */
25654 + GC_init_parallel();
25655 + k = GC_thread_key;
25658 + tsd = GC_getspecific(GC_thread_key);
25659 +# ifdef GC_ASSERTIONS
25661 + GC_ASSERT(tsd == (void *)GC_lookup_thread(pthread_self()));
25664 + my_fl = ((GC_thread)tsd) -> normal_freelists + index;
25665 + my_entry = *my_fl;
25666 + if (EXPECT((word)my_entry >= HBLKSIZE, 1)) {
25667 + ptr_t next = obj_link(my_entry);
25668 + GC_PTR result = (GC_PTR)my_entry;
25670 + obj_link(my_entry) = 0;
25671 + PREFETCH_FOR_WRITE(next);
25673 + } else if ((word)my_entry - 1 < DIRECT_GRANULES) {
25674 + *my_fl = my_entry + index + 1;
25675 + return GC_malloc(bytes);
25677 + GC_generic_malloc_many(BYTES_FROM_INDEX(index), NORMAL, my_fl);
25678 + if (*my_fl == 0) return GC_oom_fn(bytes);
25679 + return GC_local_malloc(bytes);
25684 +GC_PTR GC_local_malloc_atomic(size_t bytes)
25686 + if (EXPECT(!SMALL_ENOUGH(bytes), 0)) {
25687 + return(GC_malloc_atomic(bytes));
25689 + int index = INDEX_FROM_BYTES(bytes);
25690 + ptr_t * my_fl = ((GC_thread)GC_getspecific(GC_thread_key))
25691 + -> ptrfree_freelists + index;
25692 + ptr_t my_entry = *my_fl;
25694 + if (EXPECT((word)my_entry >= HBLKSIZE, 1)) {
25695 + GC_PTR result = (GC_PTR)my_entry;
25696 + *my_fl = obj_link(my_entry);
25698 + } else if ((word)my_entry - 1 < DIRECT_GRANULES) {
25699 + *my_fl = my_entry + index + 1;
25700 + return GC_malloc_atomic(bytes);
25702 + GC_generic_malloc_many(BYTES_FROM_INDEX(index), PTRFREE, my_fl);
25703 + /* *my_fl is updated while the collector is excluded; */
25704 + /* the free list is always visible to the collector as */
25706 + if (*my_fl == 0) return GC_oom_fn(bytes);
25707 + return GC_local_malloc_atomic(bytes);
25712 +#ifdef GC_GCJ_SUPPORT
25714 +#include "include/gc_gcj.h"
25716 +#ifdef GC_ASSERTIONS
25717 + extern GC_bool GC_gcj_malloc_initialized;
25720 +extern int GC_gcj_kind;
25722 +GC_PTR GC_local_gcj_malloc(size_t bytes,
25723 + void * ptr_to_struct_containing_descr)
25725 + GC_ASSERT(GC_gcj_malloc_initialized);
25726 + if (EXPECT(!SMALL_ENOUGH(bytes), 0)) {
25727 + return GC_gcj_malloc(bytes, ptr_to_struct_containing_descr);
25729 + int index = INDEX_FROM_BYTES(bytes);
25730 + ptr_t * my_fl = ((GC_thread)GC_getspecific(GC_thread_key))
25731 + -> gcj_freelists + index;
25732 + ptr_t my_entry = *my_fl;
25733 + if (EXPECT((word)my_entry >= HBLKSIZE, 1)) {
25734 + GC_PTR result = (GC_PTR)my_entry;
25735 + GC_ASSERT(!GC_incremental);
25736 + /* We assert that any concurrent marker will stop us. */
25737 + /* Thus it is impossible for a mark procedure to see the */
25738 + /* allocation of the next object, but to see this object */
25739 + /* still containing a free list pointer. Otherwise the */
25740 + /* marker might find a random "mark descriptor". */
25741 + *(volatile ptr_t *)my_fl = obj_link(my_entry);
25742 + /* We must update the freelist before we store the pointer. */
25743 + /* Otherwise a GC at this point would see a corrupted */
25745 + /* A memory barrier is probably never needed, since the */
25746 + /* action of stopping this thread will cause prior writes */
25747 + /* to complete. */
25748 + GC_ASSERT(((void * volatile *)result)[1] == 0);
25749 + *(void * volatile *)result = ptr_to_struct_containing_descr;
25751 + } else if ((word)my_entry - 1 < DIRECT_GRANULES) {
25752 + if (!GC_incremental) *my_fl = my_entry + index + 1;
25753 + /* In the incremental case, we always have to take this */
25754 + /* path. Thus we leave the counter alone. */
25755 + return GC_gcj_malloc(bytes, ptr_to_struct_containing_descr);
25757 + GC_generic_malloc_many(BYTES_FROM_INDEX(index), GC_gcj_kind, my_fl);
25758 + if (*my_fl == 0) return GC_oom_fn(bytes);
25759 + return GC_local_gcj_malloc(bytes, ptr_to_struct_containing_descr);
25764 +#endif /* GC_GCJ_SUPPORT */
25766 +# else /* !THREAD_LOCAL_ALLOC && !DBG_HDRS_ALL */
25768 +# define GC_destroy_thread_local(t)
25770 +# endif /* !THREAD_LOCAL_ALLOC */
25774 +To make sure that we're using LinuxThreads and not some other thread
25775 +package, we generate a dummy reference to `pthread_kill_other_threads_np'
25776 +(was `__pthread_initial_thread_bos' but that disappeared),
25777 +which is a symbol defined in LinuxThreads, but (hopefully) not in other
25780 +We no longer do this, since this code is now portable enough that it might
25781 +actually work for something else.
25783 +void (*dummy_var_to_force_linux_threads)() = pthread_kill_other_threads_np;
25786 +#if defined(SPARC) || defined(IA64)
25787 + extern word GC_save_regs_in_stack();
25790 +long GC_nprocs = 1; /* Number of processors. We may not have */
25791 + /* access to all of them, but this is as good */
25792 + /* a guess as any ... */
25794 +#ifdef PARALLEL_MARK
25796 +# ifndef MAX_MARKERS
25797 +# define MAX_MARKERS 16
25800 +static ptr_t marker_sp[MAX_MARKERS] = {0};
25802 +void * GC_mark_thread(void * id)
25804 + word my_mark_no = 0;
25806 + marker_sp[(word)id] = GC_approx_sp();
25807 + for (;; ++my_mark_no) {
25808 + /* GC_mark_no is passed only to allow GC_help_marker to terminate */
25809 + /* promptly. This is important if it were called from the signal */
25810 + /* handler or from the GC lock acquisition code. Under Linux, it's */
25811 + /* not safe to call it from a signal handler, since it uses mutexes */
25812 + /* and condition variables. Since it is called only here, the */
25813 + /* argument is unnecessary. */
25814 + if (my_mark_no < GC_mark_no || my_mark_no > GC_mark_no + 2) {
25815 + /* resynchronize if we get far off, e.g. because GC_mark_no */
25817 + my_mark_no = GC_mark_no;
25819 +# ifdef DEBUG_THREADS
25820 + GC_printf1("Starting mark helper for mark number %ld\n", my_mark_no);
25822 + GC_help_marker(my_mark_no);
25826 +extern long GC_markers; /* Number of mark threads we would */
25827 + /* like to have. Includes the */
25828 + /* initiating thread. */
25830 +pthread_t GC_mark_threads[MAX_MARKERS];
25832 +#define PTHREAD_CREATE REAL_FUNC(pthread_create)
25834 +static void start_mark_threads()
25837 + pthread_attr_t attr;
25839 + if (GC_markers > MAX_MARKERS) {
25840 + WARN("Limiting number of mark threads\n", 0);
25841 + GC_markers = MAX_MARKERS;
25843 + if (0 != pthread_attr_init(&attr)) ABORT("pthread_attr_init failed");
25845 + if (0 != pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED))
25846 + ABORT("pthread_attr_setdetachstate failed");
25848 +# if defined(HPUX) || defined(GC_DGUX386_THREADS)
25849 + /* Default stack size is usually too small: fix it. */
25850 + /* Otherwise marker threads or GC may run out of */
25852 +# define MIN_STACK_SIZE (8*HBLKSIZE*sizeof(word))
25857 + if (pthread_attr_getstacksize(&attr, &old_size) != 0)
25858 + ABORT("pthread_attr_getstacksize failed\n");
25859 + if (old_size < MIN_STACK_SIZE) {
25860 + if (pthread_attr_setstacksize(&attr, MIN_STACK_SIZE) != 0)
25861 + ABORT("pthread_attr_setstacksize failed\n");
25864 +# endif /* HPUX || GC_DGUX386_THREADS */
25866 + if (GC_print_stats) {
25867 + GC_printf1("Starting %ld marker threads\n", GC_markers - 1);
25870 + for (i = 0; i < GC_markers - 1; ++i) {
25871 + if (0 != PTHREAD_CREATE(GC_mark_threads + i, &attr,
25872 + GC_mark_thread, (void *)(word)i)) {
25873 + WARN("Marker thread creation failed, errno = %ld.\n", errno);
25878 +#else /* !PARALLEL_MARK */
25880 +static __inline__ void start_mark_threads()
25884 +#endif /* !PARALLEL_MARK */
25886 +/* Defining INSTALL_LOOPING_SEGV_HANDLER causes SIGSEGV and SIGBUS to */
25887 +/* result in an infinite loop in a signal handler. This can be very */
25888 +/* useful for debugging, since (as of RH7) gdb still seems to have */
25889 +/* serious problems with threads. */
25890 +#ifdef INSTALL_LOOPING_SEGV_HANDLER
25891 +void GC_looping_handler(int sig)
25893 + GC_printf3("Signal %ld in thread %lx, pid %ld\n",
25894 + sig, pthread_self(), getpid());
25899 +GC_bool GC_thr_initialized = FALSE;
25901 +volatile GC_thread GC_threads[THREAD_TABLE_SZ];
25903 +void GC_push_thread_structures GC_PROTO((void))
25905 + GC_push_all((ptr_t)(GC_threads), (ptr_t)(GC_threads)+sizeof(GC_threads));
25906 +# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL)
25907 + GC_push_all((ptr_t)(&GC_thread_key),
25908 + (ptr_t)(&GC_thread_key)+sizeof(&GC_thread_key));
25912 +#ifdef THREAD_LOCAL_ALLOC
25913 +/* We must explicitly mark ptrfree and gcj free lists, since the free */
25914 +/* list links wouldn't otherwise be found. We also set them in the */
25915 +/* normal free lists, since that involves touching less memory than if */
25916 +/* we scanned them normally. */
25917 +void GC_mark_thread_local_free_lists(void)
25923 + for (i = 0; i < THREAD_TABLE_SZ; ++i) {
25924 + for (p = GC_threads[i]; 0 != p; p = p -> next) {
25925 + for (j = 1; j < NFREELISTS; ++j) {
25926 + q = p -> ptrfree_freelists[j];
25927 + if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
25928 + q = p -> normal_freelists[j];
25929 + if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
25930 +# ifdef GC_GCJ_SUPPORT
25931 + q = p -> gcj_freelists[j];
25932 + if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
25933 +# endif /* GC_GCJ_SUPPORT */
25938 +#endif /* THREAD_LOCAL_ALLOC */
25940 +static struct GC_Thread_Rep first_thread;
25942 +/* Add a thread to GC_threads. We assume it wasn't already there. */
25943 +/* Caller holds allocation lock. */
25944 +GC_thread GC_new_thread(pthread_t id)
25946 + int hv = ((word)id) % THREAD_TABLE_SZ;
25947 + GC_thread result;
25948 + static GC_bool first_thread_used = FALSE;
25950 + if (!first_thread_used) {
25951 + result = &first_thread;
25952 + first_thread_used = TRUE;
25954 + result = (struct GC_Thread_Rep *)
25955 + GC_INTERNAL_MALLOC(sizeof(struct GC_Thread_Rep), NORMAL);
25957 + if (result == 0) return(0);
25958 + result -> id = id;
25959 + result -> next = GC_threads[hv];
25960 + GC_threads[hv] = result;
25961 + GC_ASSERT(result -> flags == 0 && result -> thread_blocked == 0);
25965 +/* Delete a thread from GC_threads. We assume it is there. */
25966 +/* (The code intentionally traps if it wasn't.) */
25967 +/* Caller holds allocation lock. */
25968 +void GC_delete_thread(pthread_t id)
25970 + int hv = ((word)id) % THREAD_TABLE_SZ;
25971 + register GC_thread p = GC_threads[hv];
25972 + register GC_thread prev = 0;
25974 + while (!pthread_equal(p -> id, id)) {
25979 + GC_threads[hv] = p -> next;
25981 + prev -> next = p -> next;
25983 + GC_INTERNAL_FREE(p);
25986 +/* If a thread has been joined, but we have not yet */
25987 +/* been notified, then there may be more than one thread */
25988 +/* in the table with the same pthread id. */
25989 +/* This is OK, but we need a way to delete a specific one. */
25990 +void GC_delete_gc_thread(pthread_t id, GC_thread gc_id)
25992 + int hv = ((word)id) % THREAD_TABLE_SZ;
25993 + register GC_thread p = GC_threads[hv];
25994 + register GC_thread prev = 0;
25996 + while (p != gc_id) {
26001 + GC_threads[hv] = p -> next;
26003 + prev -> next = p -> next;
26005 + GC_INTERNAL_FREE(p);
26008 +/* Return a GC_thread corresponding to a given thread_t. */
26009 +/* Returns 0 if it's not there. */
26010 +/* Caller holds allocation lock or otherwise inhibits */
26012 +/* If there is more than one thread with the given id we */
26013 +/* return the most recent one. */
26014 +GC_thread GC_lookup_thread(pthread_t id)
26016 + int hv = ((word)id) % THREAD_TABLE_SZ;
26017 + register GC_thread p = GC_threads[hv];
26019 + while (p != 0 && !pthread_equal(p -> id, id)) p = p -> next;
26023 +#ifdef HANDLE_FORK
26024 +/* Remove all entries from the GC_threads table, except the */
26025 +/* one for the current thread. We need to do this in the child */
26026 +/* process after a fork(), since only the current thread */
26027 +/* survives in the child. */
26028 +void GC_remove_all_threads_but_me(void)
26030 + pthread_t self = pthread_self();
26032 + GC_thread p, next, me;
26034 + for (hv = 0; hv < THREAD_TABLE_SZ; ++hv) {
26036 + for (p = GC_threads[hv]; 0 != p; p = next) {
26037 + next = p -> next;
26038 + if (p -> id == self) {
26042 +# ifdef THREAD_LOCAL_ALLOC
26043 + if (!(p -> flags & FINISHED)) {
26044 + GC_destroy_thread_local(p);
26046 +# endif /* THREAD_LOCAL_ALLOC */
26047 + if (p != &first_thread) GC_INTERNAL_FREE(p);
26050 + GC_threads[hv] = me;
26053 +#endif /* HANDLE_FORK */
26055 +#ifdef USE_PROC_FOR_LIBRARIES
26056 +int GC_segment_is_thread_stack(ptr_t lo, ptr_t hi)
26061 +# ifdef PARALLEL_MARK
26062 + for (i = 0; i < GC_markers; ++i) {
26063 + if (marker_sp[i] > lo & marker_sp[i] < hi) return 1;
26066 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
26067 + for (p = GC_threads[i]; p != 0; p = p -> next) {
26068 + if (0 != p -> stack_end) {
26069 +# ifdef STACK_GROWS_UP
26070 + if (p -> stack_end >= lo && p -> stack_end < hi) return 1;
26071 +# else /* STACK_GROWS_DOWN */
26072 + if (p -> stack_end > lo && p -> stack_end <= hi) return 1;
26079 +#endif /* USE_PROC_FOR_LIBRARIES */
26081 +#ifdef GC_LINUX_THREADS
26082 +/* Return the number of processors, or i<= 0 if it can't be determined. */
26083 +int GC_get_nprocs()
26085 + /* Should be "return sysconf(_SC_NPROCESSORS_ONLN);" but that */
26086 + /* appears to be buggy in many cases. */
26087 + /* We look for lines "cpu<n>" in /proc/stat. */
26088 +# define STAT_BUF_SIZE 4096
26089 +# define STAT_READ read
26090 + /* If read is wrapped, this may need to be redefined to call */
26091 + /* the real one. */
26092 + char stat_buf[STAT_BUF_SIZE];
26095 + /* Some old kernels only have a single "cpu nnnn ..." */
26096 + /* entry in /proc/stat. We identify those as */
26097 + /* uniprocessors. */
26098 + size_t i, len = 0;
26100 + f = open("/proc/stat", O_RDONLY);
26101 + if (f < 0 || (len = STAT_READ(f, stat_buf, STAT_BUF_SIZE)) < 100) {
26102 + WARN("Couldn't read /proc/stat\n", 0);
26105 + for (i = 0; i < len - 100; ++i) {
26106 + if (stat_buf[i] == '\n' && stat_buf[i+1] == 'c'
26107 + && stat_buf[i+2] == 'p' && stat_buf[i+3] == 'u') {
26108 + int cpu_no = atoi(stat_buf + i + 4);
26109 + if (cpu_no >= result) result = cpu_no + 1;
26115 +#endif /* GC_LINUX_THREADS */
26117 +/* We hold the GC lock. Wait until an in-progress GC has finished. */
26118 +/* Repeatedly RELEASES GC LOCK in order to wait. */
26119 +/* If wait_for_all is true, then we exit with the GC lock held and no */
26120 +/* collection in progress; otherwise we just wait for the current GC */
26122 +extern GC_bool GC_collection_in_progress();
26123 +void GC_wait_for_gc_completion(GC_bool wait_for_all)
26125 + if (GC_incremental && GC_collection_in_progress()) {
26126 + int old_gc_no = GC_gc_no;
26128 + /* Make sure that no part of our stack is still on the mark stack, */
26129 + /* since it's about to be unmapped. */
26130 + while (GC_incremental && GC_collection_in_progress()
26131 + && (wait_for_all || old_gc_no == GC_gc_no)) {
26133 + GC_collect_a_little_inner(1);
26142 +#ifdef HANDLE_FORK
26143 +/* Procedures called before and after a fork. The goal here is to make */
26144 +/* it safe to call GC_malloc() in a forked child. It's unclear that is */
26145 +/* attainable, since the single UNIX spec seems to imply that one */
26146 +/* should only call async-signal-safe functions, and we probably can't */
26147 +/* quite guarantee that. But we give it our best shot. (That same */
26148 +/* spec also implies that it's not safe to call the system malloc */
26149 +/* between fork() and exec(). Thus we're doing no worse than it. */
26151 +/* Called before a fork() */
26152 +void GC_fork_prepare_proc(void)
26154 + /* Acquire all relevant locks, so that after releasing the locks */
26155 + /* the child will see a consistent state in which monitor */
26156 + /* invariants hold. Unfortunately, we can't acquire libc locks */
26157 + /* we might need, and there seems to be no guarantee that libc */
26158 + /* must install a suitable fork handler. */
26159 + /* Wait for an ongoing GC to finish, since we can't finish it in */
26160 + /* the (one remaining thread in) the child. */
26162 +# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26163 + GC_wait_for_reclaim();
26165 + GC_wait_for_gc_completion(TRUE);
26166 +# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26167 + GC_acquire_mark_lock();
26171 +/* Called in parent after a fork() */
26172 +void GC_fork_parent_proc(void)
26174 +# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26175 + GC_release_mark_lock();
26180 +/* Called in child after a fork() */
26181 +void GC_fork_child_proc(void)
26183 + /* Clean up the thread table, so that just our thread is left. */
26184 +# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26185 + GC_release_mark_lock();
26187 + GC_remove_all_threads_but_me();
26188 +# ifdef PARALLEL_MARK
26189 + /* Turn off parallel marking in the child, since we are probably */
26190 + /* just going to exec, and we would have to restart mark threads. */
26192 + GC_parallel = FALSE;
26193 +# endif /* PARALLEL_MARK */
26196 +#endif /* HANDLE_FORK */
26198 +#if defined(GC_DGUX386_THREADS)
26199 +/* Return the number of processors, or i<= 0 if it can't be determined. */
26200 +int GC_get_nprocs()
26202 + /* <takis@XFree86.Org> */
26204 + struct dg_sys_info_pm_info pm_sysinfo;
26207 + status = dg_sys_info((long int *) &pm_sysinfo,
26208 + DG_SYS_INFO_PM_INFO_TYPE, DG_SYS_INFO_PM_CURRENT_VERSION);
26210 + /* set -1 for error */
26213 + /* Active CPUs */
26214 + numCpus = pm_sysinfo.idle_vp_count;
26216 +# ifdef DEBUG_THREADS
26217 + GC_printf1("Number of active CPUs in this system: %d\n", numCpus);
26221 +#endif /* GC_DGUX386_THREADS */
26223 +/* We hold the allocation lock. */
26224 +void GC_thr_init()
26226 +# ifndef GC_DARWIN_THREADS
26231 + if (GC_thr_initialized) return;
26232 + GC_thr_initialized = TRUE;
26234 +# ifdef HANDLE_FORK
26235 + /* Prepare for a possible fork. */
26236 + pthread_atfork(GC_fork_prepare_proc, GC_fork_parent_proc,
26237 + GC_fork_child_proc);
26238 +# endif /* HANDLE_FORK */
26239 + /* Add the initial thread, so we can stop it. */
26240 + t = GC_new_thread(pthread_self());
26241 +# ifdef GC_DARWIN_THREADS
26242 + t -> stop_info.mach_thread = mach_thread_self();
26244 + t -> stop_info.stack_ptr = (ptr_t)(&dummy);
26246 + t -> flags = DETACHED | MAIN_THREAD;
26250 + /* Set GC_nprocs. */
26252 + char * nprocs_string = GETENV("GC_NPROCS");
26254 + if (nprocs_string != NULL) GC_nprocs = atoi(nprocs_string);
26256 + if (GC_nprocs <= 0) {
26257 +# if defined(GC_HPUX_THREADS)
26258 + GC_nprocs = pthread_num_processors_np();
26260 +# if defined(GC_OSF1_THREADS)
26261 + GC_nprocs = sysconf(_SC_NPROCESSORS_ONLN);
26262 + if (GC_nprocs <= 0) GC_nprocs = 1;
26264 +# if defined(GC_FREEBSD_THREADS)
26267 +# if defined(GC_DARWIN_THREADS)
26269 + size_t len = sizeof(ncpus);
26270 + sysctl((int[2]) {CTL_HW, HW_NCPU}, 2, &ncpus, &len, NULL, 0);
26271 + GC_nprocs = ncpus;
26273 +# if defined(GC_LINUX_THREADS) || defined(GC_DGUX386_THREADS)
26274 + GC_nprocs = GC_get_nprocs();
26277 + if (GC_nprocs <= 0) {
26278 + WARN("GC_get_nprocs() returned %ld\n", GC_nprocs);
26280 +# ifdef PARALLEL_MARK
26284 +# ifdef PARALLEL_MARK
26286 + char * markers_string = GETENV("GC_MARKERS");
26287 + if (markers_string != NULL) {
26288 + GC_markers = atoi(markers_string);
26290 + GC_markers = GC_nprocs;
26295 +# ifdef PARALLEL_MARK
26297 + if (GC_print_stats) {
26298 + GC_printf2("Number of processors = %ld, "
26299 + "number of marker threads = %ld\n", GC_nprocs, GC_markers);
26302 + if (GC_markers == 1) {
26303 + GC_parallel = FALSE;
26305 + if (GC_print_stats) {
26306 + GC_printf0("Single marker thread, turning off parallel marking\n");
26310 + GC_parallel = TRUE;
26311 + /* Disable true incremental collection, but generational is OK. */
26312 + GC_time_limit = GC_TIME_UNLIMITED;
26318 +/* Perform all initializations, including those that */
26319 +/* may require allocation. */
26320 +/* Called without allocation lock. */
26321 +/* Must be called before a second thread is created. */
26322 +/* Called without allocation lock. */
26323 +void GC_init_parallel()
26325 + if (parallel_initialized) return;
26326 + parallel_initialized = TRUE;
26328 + /* GC_init() calls us back, so set flag first. */
26329 + if (!GC_is_initialized) GC_init();
26330 + /* If we are using a parallel marker, start the helper threads. */
26331 +# ifdef PARALLEL_MARK
26332 + if (GC_parallel) start_mark_threads();
26334 + /* Initialize thread local free lists if used. */
26335 +# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL)
26337 + GC_init_thread_local(GC_lookup_thread(pthread_self()));
26343 +#if !defined(GC_DARWIN_THREADS)
26344 +int WRAP_FUNC(pthread_sigmask)(int how, const sigset_t *set, sigset_t *oset)
26346 + sigset_t fudged_set;
26348 + if (set != NULL && (how == SIG_BLOCK || how == SIG_SETMASK)) {
26349 + fudged_set = *set;
26350 + sigdelset(&fudged_set, SIG_SUSPEND);
26351 + set = &fudged_set;
26353 + return(REAL_FUNC(pthread_sigmask)(how, set, oset));
26355 +#endif /* !GC_DARWIN_THREADS */
26357 +/* Wrappers for functions that are likely to block for an appreciable */
26358 +/* length of time. Must be called in pairs, if at all. */
26359 +/* Nothing much beyond the system call itself should be executed */
26360 +/* between these. */
26362 +void GC_start_blocking(void) {
26363 +# define SP_SLOP 128
26366 + me = GC_lookup_thread(pthread_self());
26367 + GC_ASSERT(!(me -> thread_blocked));
26369 + me -> stop_info.stack_ptr = (ptr_t)GC_save_regs_in_stack();
26371 +# ifndef GC_DARWIN_THREADS
26372 + me -> stop_info.stack_ptr = (ptr_t)GC_approx_sp();
26376 + me -> backing_store_ptr = (ptr_t)GC_save_regs_in_stack() + SP_SLOP;
26378 + /* Add some slop to the stack pointer, since the wrapped call may */
26379 + /* end up pushing more callee-save registers. */
26380 +# ifndef GC_DARWIN_THREADS
26381 +# ifdef STACK_GROWS_UP
26382 + me -> stop_info.stack_ptr += SP_SLOP;
26384 + me -> stop_info.stack_ptr -= SP_SLOP;
26387 + me -> thread_blocked = TRUE;
26391 +void GC_end_blocking(void) {
26393 + LOCK(); /* This will block if the world is stopped. */
26394 + me = GC_lookup_thread(pthread_self());
26395 + GC_ASSERT(me -> thread_blocked);
26396 + me -> thread_blocked = FALSE;
26400 +#if defined(GC_DGUX386_THREADS)
26401 +#define __d10_sleep sleep
26402 +#endif /* GC_DGUX386_THREADS */
26404 +/* A wrapper for the standard C sleep function */
26405 +int WRAP_FUNC(sleep) (unsigned int seconds)
26409 + GC_start_blocking();
26410 + result = REAL_FUNC(sleep)(seconds);
26411 + GC_end_blocking();
26415 +struct start_info {
26416 + void *(*start_routine)(void *);
26419 + sem_t registered; /* 1 ==> in our thread table, but */
26420 + /* parent hasn't yet noticed. */
26423 +/* Called at thread exit. */
26424 +/* Never called for main thread. That's OK, since it */
26425 +/* results in at most a tiny one-time leak. And */
26426 +/* linuxthreads doesn't reclaim the main threads */
26427 +/* resources or id anyway. */
26428 +void GC_thread_exit_proc(void *arg)
26433 + me = GC_lookup_thread(pthread_self());
26434 + GC_destroy_thread_local(me);
26435 + if (me -> flags & DETACHED) {
26436 + GC_delete_thread(pthread_self());
26438 + me -> flags |= FINISHED;
26440 +# if defined(THREAD_LOCAL_ALLOC) && !defined(USE_PTHREAD_SPECIFIC) \
26441 + && !defined(USE_HPUX_TLS) && !defined(DBG_HDRS_ALL)
26442 + GC_remove_specific(GC_thread_key);
26444 + GC_wait_for_gc_completion(FALSE);
26448 +int WRAP_FUNC(pthread_join)(pthread_t thread, void **retval)
26451 + GC_thread thread_gc_id;
26454 + thread_gc_id = GC_lookup_thread(thread);
26455 + /* This is guaranteed to be the intended one, since the thread id */
26456 + /* cant have been recycled by pthreads. */
26458 + result = REAL_FUNC(pthread_join)(thread, retval);
26459 +# if defined (GC_FREEBSD_THREADS)
26460 + /* On FreeBSD, the wrapped pthread_join() sometimes returns (what
26461 + appears to be) a spurious EINTR which caused the test and real code
26462 + to gratuitously fail. Having looked at system pthread library source
26463 + code, I see how this return code may be generated. In one path of
26464 + code, pthread_join() just returns the errno setting of the thread
26465 + being joined. This does not match the POSIX specification or the
26466 + local man pages thus I have taken the liberty to catch this one
26467 + spurious return value properly conditionalized on GC_FREEBSD_THREADS. */
26468 + if (result == EINTR) result = 0;
26470 + if (result == 0) {
26472 + /* Here the pthread thread id may have been recycled. */
26473 + GC_delete_gc_thread(thread, thread_gc_id);
26480 +WRAP_FUNC(pthread_detach)(pthread_t thread)
26483 + GC_thread thread_gc_id;
26486 + thread_gc_id = GC_lookup_thread(thread);
26488 + result = REAL_FUNC(pthread_detach)(thread);
26489 + if (result == 0) {
26491 + thread_gc_id -> flags |= DETACHED;
26492 + /* Here the pthread thread id may have been recycled. */
26493 + if (thread_gc_id -> flags & FINISHED) {
26494 + GC_delete_gc_thread(thread, thread_gc_id);
26501 +void * GC_start_routine(void * arg)
26504 + struct start_info * si = arg;
26507 + pthread_t my_pthread;
26508 + void *(*start)(void *);
26511 + my_pthread = pthread_self();
26512 +# ifdef DEBUG_THREADS
26513 + GC_printf1("Starting thread 0x%lx\n", my_pthread);
26514 + GC_printf1("pid = %ld\n", (long) getpid());
26515 + GC_printf1("sp = 0x%lx\n", (long) &arg);
26518 + me = GC_new_thread(my_pthread);
26519 +#ifdef GC_DARWIN_THREADS
26520 + me -> stop_info.mach_thread = mach_thread_self();
26522 + me -> stop_info.stack_ptr = 0;
26524 + me -> flags = si -> flags;
26525 + /* me -> stack_end = GC_linux_stack_base(); -- currently (11/99) */
26526 + /* doesn't work because the stack base in /proc/self/stat is the */
26527 + /* one for the main thread. There is a strong argument that that's */
26528 + /* a kernel bug, but a pervasive one. */
26529 +# ifdef STACK_GROWS_DOWN
26530 + me -> stack_end = (ptr_t)(((word)(&dummy) + (GC_page_size - 1))
26531 + & ~(GC_page_size - 1));
26532 +# ifndef GC_DARWIN_THREADS
26533 + me -> stop_info.stack_ptr = me -> stack_end - 0x10;
26535 + /* Needs to be plausible, since an asynchronous stack mark */
26536 + /* should not crash. */
26538 + me -> stack_end = (ptr_t)((word)(&dummy) & ~(GC_page_size - 1));
26539 + me -> stop_info.stack_ptr = me -> stack_end + 0x10;
26541 + /* This is dubious, since we may be more than a page into the stack, */
26542 + /* and hence skip some of it, though it's not clear that matters. */
26544 + me -> backing_store_end = (ptr_t)
26545 + (GC_save_regs_in_stack() & ~(GC_page_size - 1));
26546 + /* This is also < 100% convincing. We should also read this */
26547 + /* from /proc, but the hook to do so isn't there yet. */
26548 +# endif /* IA64 */
26550 + start = si -> start_routine;
26551 +# ifdef DEBUG_THREADS
26552 + GC_printf1("start_routine = 0x%lx\n", start);
26554 + start_arg = si -> arg;
26555 + sem_post(&(si -> registered)); /* Last action on si. */
26556 + /* OK to deallocate. */
26557 + pthread_cleanup_push(GC_thread_exit_proc, 0);
26558 +# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL)
26560 + GC_init_thread_local(me);
26563 + result = (*start)(start_arg);
26565 + GC_printf1("Finishing thread 0x%x\n", pthread_self());
26567 + me -> status = result;
26568 + me -> flags |= FINISHED;
26569 + pthread_cleanup_pop(1);
26570 + /* Cleanup acquires lock, ensuring that we can't exit */
26571 + /* while a collection that thinks we're alive is trying to stop */
26577 +WRAP_FUNC(pthread_create)(pthread_t *new_thread,
26578 + const pthread_attr_t *attr,
26579 + void *(*start_routine)(void *), void *arg)
26583 + word my_flags = 0;
26584 + struct start_info * si;
26585 + /* This is otherwise saved only in an area mmapped by the thread */
26586 + /* library, which isn't visible to the collector. */
26588 + /* We resist the temptation to muck with the stack size here, */
26589 + /* even if the default is unreasonably small. That's the client's */
26590 + /* responsibility. */
26593 + si = (struct start_info *)GC_INTERNAL_MALLOC(sizeof(struct start_info),
26596 + if (!parallel_initialized) GC_init_parallel();
26597 + if (0 == si) return(ENOMEM);
26598 + sem_init(&(si -> registered), 0, 0);
26599 + si -> start_routine = start_routine;
26602 + if (!GC_thr_initialized) GC_thr_init();
26603 +# ifdef GC_ASSERTIONS
26606 + if (NULL == attr) {
26607 + pthread_attr_t my_attr;
26608 + pthread_attr_init(&my_attr);
26609 + pthread_attr_getstacksize(&my_attr, &stack_size);
26611 + pthread_attr_getstacksize(attr, &stack_size);
26613 + GC_ASSERT(stack_size >= (8*HBLKSIZE*sizeof(word)));
26614 + /* Our threads may need to do some work for the GC. */
26615 + /* Ridiculously small threads won't work, and they */
26616 + /* probably wouldn't work anyway. */
26619 + if (NULL == attr) {
26620 + detachstate = PTHREAD_CREATE_JOINABLE;
26622 + pthread_attr_getdetachstate(attr, &detachstate);
26624 + if (PTHREAD_CREATE_DETACHED == detachstate) my_flags |= DETACHED;
26625 + si -> flags = my_flags;
26627 +# ifdef DEBUG_THREADS
26628 + GC_printf1("About to start new thread from thread 0x%X\n",
26632 + result = REAL_FUNC(pthread_create)(new_thread, attr, GC_start_routine, si);
26634 +# ifdef DEBUG_THREADS
26635 + GC_printf1("Started thread 0x%X\n", *new_thread);
26637 + /* Wait until child has been added to the thread table. */
26638 + /* This also ensures that we hold onto si until the child is done */
26639 + /* with it. Thus it doesn't matter whether it is otherwise */
26640 + /* visible to the collector. */
26641 + while (0 != sem_wait(&(si -> registered))) {
26642 + if (EINTR != errno) ABORT("sem_wait failed");
26644 + sem_destroy(&(si -> registered));
26646 + GC_INTERNAL_FREE(si);
26652 +#ifdef GENERIC_COMPARE_AND_SWAP
26653 + pthread_mutex_t GC_compare_and_swap_lock = PTHREAD_MUTEX_INITIALIZER;
26655 + GC_bool GC_compare_and_exchange(volatile GC_word *addr,
26656 + GC_word old, GC_word new_val)
26659 + pthread_mutex_lock(&GC_compare_and_swap_lock);
26660 + if (*addr == old) {
26666 + pthread_mutex_unlock(&GC_compare_and_swap_lock);
26670 + GC_word GC_atomic_add(volatile GC_word *addr, GC_word how_much)
26673 + pthread_mutex_lock(&GC_compare_and_swap_lock);
26675 + *addr = old + how_much;
26676 + pthread_mutex_unlock(&GC_compare_and_swap_lock);
26680 +#endif /* GENERIC_COMPARE_AND_SWAP */
26681 +/* Spend a few cycles in a way that can't introduce contention with */
26682 +/* othre threads. */
26687 + volatile word dummy = 0;
26690 + for (i = 0; i < 10; ++i) {
26692 + __asm__ __volatile__ (" " : : : "memory");
26694 + /* Something that's unlikely to be optimized away. */
26695 + GC_noop(++dummy);
26700 +#define SPIN_MAX 1024 /* Maximum number of calls to GC_pause before */
26703 +VOLATILE GC_bool GC_collecting = 0;
26704 + /* A hint that we're in the collector and */
26705 + /* holding the allocation lock for an */
26706 + /* extended period. */
26708 +#if !defined(USE_SPIN_LOCK) || defined(PARALLEL_MARK)
26709 +/* If we don't want to use the below spinlock implementation, either */
26710 +/* because we don't have a GC_test_and_set implementation, or because */
26711 +/* we don't want to risk sleeping, we can still try spinning on */
26712 +/* pthread_mutex_trylock for a while. This appears to be very */
26713 +/* beneficial in many cases. */
26714 +/* I suspect that under high contention this is nearly always better */
26715 +/* than the spin lock. But it's a bit slower on a uniprocessor. */
26716 +/* Hence we still default to the spin lock. */
26717 +/* This is also used to acquire the mark lock for the parallel */
26720 +/* Here we use a strict exponential backoff scheme. I don't know */
26721 +/* whether that's better or worse than the above. We eventually */
26722 +/* yield by calling pthread_mutex_lock(); it never makes sense to */
26723 +/* explicitly sleep. */
26725 +void GC_generic_lock(pthread_mutex_t * lock)
26727 +#ifndef NO_PTHREAD_TRYLOCK
26728 + unsigned pause_length = 1;
26731 + if (0 == pthread_mutex_trylock(lock)) return;
26732 + for (; pause_length <= SPIN_MAX; pause_length <<= 1) {
26733 + for (i = 0; i < pause_length; ++i) {
26736 + switch(pthread_mutex_trylock(lock)) {
26742 + ABORT("Unexpected error from pthread_mutex_trylock");
26745 +#endif /* !NO_PTHREAD_TRYLOCK */
26746 + pthread_mutex_lock(lock);
26749 +#endif /* !USE_SPIN_LOCK || PARALLEL_MARK */
26751 +#if defined(USE_SPIN_LOCK)
26753 +/* Reasonably fast spin locks. Basically the same implementation */
26754 +/* as STL alloc.h. This isn't really the right way to do this. */
26755 +/* but until the POSIX scheduling mess gets straightened out ... */
26757 +volatile unsigned int GC_allocate_lock = 0;
26762 +# define low_spin_max 30 /* spin cycles if we suspect uniprocessor */
26763 +# define high_spin_max SPIN_MAX /* spin cycles for multiprocessor */
26764 + static unsigned spin_max = low_spin_max;
26765 + unsigned my_spin_max;
26766 + static unsigned last_spins = 0;
26767 + unsigned my_last_spins;
26770 + if (!GC_test_and_set(&GC_allocate_lock)) {
26773 + my_spin_max = spin_max;
26774 + my_last_spins = last_spins;
26775 + for (i = 0; i < my_spin_max; i++) {
26776 + if (GC_collecting || GC_nprocs == 1) goto yield;
26777 + if (i < my_last_spins/2 || GC_allocate_lock) {
26781 + if (!GC_test_and_set(&GC_allocate_lock)) {
26784 + * Spinning worked. Thus we're probably not being scheduled
26785 + * against the other process with which we were contending.
26786 + * Thus it makes sense to spin longer the next time.
26789 + spin_max = high_spin_max;
26793 + /* We are probably being scheduled against the other process. Sleep. */
26794 + spin_max = low_spin_max;
26796 + for (i = 0;; ++i) {
26797 + if (!GC_test_and_set(&GC_allocate_lock)) {
26800 +# define SLEEP_THRESHOLD 12
26801 + /* Under Linux very short sleeps tend to wait until */
26802 + /* the current time quantum expires. On old Linux */
26803 + /* kernels nanosleep(<= 2ms) just spins under Linux. */
26804 + /* (Under 2.4, this happens only for real-time */
26805 + /* processes.) We want to minimize both behaviors */
26807 + if (i < SLEEP_THRESHOLD) {
26810 + struct timespec ts;
26812 + if (i > 24) i = 24;
26813 + /* Don't wait for more than about 15msecs, even */
26814 + /* under extreme contention. */
26816 + ts.tv_nsec = 1 << i;
26817 + nanosleep(&ts, 0);
26822 +#else /* !USE_SPINLOCK */
26825 +#ifndef NO_PTHREAD_TRYLOCK
26826 + if (1 == GC_nprocs || GC_collecting) {
26827 + pthread_mutex_lock(&GC_allocate_ml);
26829 + GC_generic_lock(&GC_allocate_ml);
26831 +#else /* !NO_PTHREAD_TRYLOCK */
26832 + pthread_mutex_lock(&GC_allocate_ml);
26833 +#endif /* !NO_PTHREAD_TRYLOCK */
26836 +#endif /* !USE_SPINLOCK */
26838 +#if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26840 +#ifdef GC_ASSERTIONS
26841 + pthread_t GC_mark_lock_holder = NO_THREAD;
26845 + /* Ugly workaround for a linux threads bug in the final versions */
26846 + /* of glibc2.1. Pthread_mutex_trylock sets the mutex owner */
26847 + /* field even when it fails to acquire the mutex. This causes */
26848 + /* pthread_cond_wait to die. Remove for glibc2.2. */
26849 + /* According to the man page, we should use */
26850 + /* PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP, but that isn't actually */
26852 + static pthread_mutex_t mark_mutex =
26853 + {0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, {0, 0}};
26855 + static pthread_mutex_t mark_mutex = PTHREAD_MUTEX_INITIALIZER;
26858 +static pthread_cond_t builder_cv = PTHREAD_COND_INITIALIZER;
26860 +void GC_acquire_mark_lock()
26863 + if (pthread_mutex_lock(&mark_mutex) != 0) {
26864 + ABORT("pthread_mutex_lock failed");
26867 + GC_generic_lock(&mark_mutex);
26868 +# ifdef GC_ASSERTIONS
26869 + GC_mark_lock_holder = pthread_self();
26873 +void GC_release_mark_lock()
26875 + GC_ASSERT(GC_mark_lock_holder == pthread_self());
26876 +# ifdef GC_ASSERTIONS
26877 + GC_mark_lock_holder = NO_THREAD;
26879 + if (pthread_mutex_unlock(&mark_mutex) != 0) {
26880 + ABORT("pthread_mutex_unlock failed");
26884 +/* Collector must wait for a freelist builders for 2 reasons: */
26885 +/* 1) Mark bits may still be getting examined without lock. */
26886 +/* 2) Partial free lists referenced only by locals may not be scanned */
26887 +/* correctly, e.g. if they contain "pointer-free" objects, since the */
26888 +/* free-list link may be ignored. */
26889 +void GC_wait_builder()
26891 + GC_ASSERT(GC_mark_lock_holder == pthread_self());
26892 +# ifdef GC_ASSERTIONS
26893 + GC_mark_lock_holder = NO_THREAD;
26895 + if (pthread_cond_wait(&builder_cv, &mark_mutex) != 0) {
26896 + ABORT("pthread_cond_wait failed");
26898 + GC_ASSERT(GC_mark_lock_holder == NO_THREAD);
26899 +# ifdef GC_ASSERTIONS
26900 + GC_mark_lock_holder = pthread_self();
26904 +void GC_wait_for_reclaim()
26906 + GC_acquire_mark_lock();
26907 + while (GC_fl_builder_count > 0) {
26908 + GC_wait_builder();
26910 + GC_release_mark_lock();
26913 +void GC_notify_all_builder()
26915 + GC_ASSERT(GC_mark_lock_holder == pthread_self());
26916 + if (pthread_cond_broadcast(&builder_cv) != 0) {
26917 + ABORT("pthread_cond_broadcast failed");
26921 +#endif /* PARALLEL_MARK || THREAD_LOCAL_ALLOC */
26923 +#ifdef PARALLEL_MARK
26925 +static pthread_cond_t mark_cv = PTHREAD_COND_INITIALIZER;
26927 +void GC_wait_marker()
26929 + GC_ASSERT(GC_mark_lock_holder == pthread_self());
26930 +# ifdef GC_ASSERTIONS
26931 + GC_mark_lock_holder = NO_THREAD;
26933 + if (pthread_cond_wait(&mark_cv, &mark_mutex) != 0) {
26934 + ABORT("pthread_cond_wait failed");
26936 + GC_ASSERT(GC_mark_lock_holder == NO_THREAD);
26937 +# ifdef GC_ASSERTIONS
26938 + GC_mark_lock_holder = pthread_self();
26942 +void GC_notify_all_marker()
26944 + if (pthread_cond_broadcast(&mark_cv) != 0) {
26945 + ABORT("pthread_cond_broadcast failed");
26949 +#endif /* PARALLEL_MARK */
26951 +# endif /* GC_LINUX_THREADS and friends */
26953 diff -urNb boehm-gc/ptr_chck.c boehm-gc/ptr_chck.c
26954 --- boehm-gc/ptr_chck.c Fri Aug 17 11:30:46 2001
26955 +++ boehm-gc/ptr_chck.c Mon May 26 12:48:52 2003
26959 sz = WORDS_TO_BYTES(hhdr -> hb_sz);
26960 - if (sz > WORDS_TO_BYTES(MAXOBJSZ)) {
26961 + if (sz > MAXOBJBYTES) {
26962 base = (ptr_t)HBLKPTR(p);
26964 if ((ptr_t)p >= limit) {
26965 @@ -165,7 +165,7 @@
26966 pdispl = HBLKDISPL(p);
26967 map_entry = MAP_ENTRY((hhdr -> hb_map), pdispl);
26968 if (map_entry == OBJ_INVALID
26969 - || sz > MAXOBJSZ && (ptr_t)p >= (ptr_t)h + sz) {
26970 + || sz > MAXOBJBYTES && (ptr_t)p >= (ptr_t)h + sz) {
26974 diff -urNb boehm-gc/reclaim.c boehm-gc/reclaim.c
26975 --- boehm-gc/reclaim.c Fri Mar 29 14:52:12 2002
26976 +++ boehm-gc/reclaim.c Mon May 26 12:48:52 2003
26977 @@ -27,10 +27,43 @@
26979 #endif /* PARALLEL_MARK */
26981 -static void report_leak(p, sz)
26984 +/* We defer printing of leaked objects until we're done with the GC */
26985 +/* cycle, since the routine for printing objects needs to run outside */
26986 +/* the collector, e.g. without the allocation lock. */
26987 +#define MAX_LEAKED 40
26988 +ptr_t GC_leaked[MAX_LEAKED];
26989 +unsigned GC_n_leaked = 0;
26991 +GC_bool GC_have_errors = FALSE;
26993 +void GC_add_leaked(leaked)
26996 + if (GC_n_leaked < MAX_LEAKED) {
26997 + GC_have_errors = TRUE;
26998 + GC_leaked[GC_n_leaked++] = leaked;
26999 + /* Make sure it's not reclaimed this cycle */
27000 + GC_set_mark_bit(leaked);
27004 +static GC_bool printing_errors = FALSE;
27005 +/* Print all objects on the list after printing any smashed objs. */
27006 +/* Clear both lists. */
27007 +void GC_print_all_errors ()
27012 + if (printing_errors) {
27016 + printing_errors = TRUE;
27018 + if (GC_debugging_started) GC_print_all_smashed();
27019 + for (i = 0; i < GC_n_leaked; ++i) {
27020 + ptr_t p = GC_leaked[i];
27021 if (HDR(p) -> hb_obj_kind == PTRFREE) {
27022 GC_err_printf0("Leaked atomic object at ");
27024 @@ -38,12 +71,17 @@
27026 GC_print_heap_obj(p);
27027 GC_err_printf0("\n");
27029 + GC_leaked[i] = 0;
27032 + printing_errors = FALSE;
27036 # define FOUND_FREE(hblk, word_no) \
27038 - report_leak((ptr_t)hblk + WORDS_TO_BYTES(word_no), \
27039 - HDR(hblk) -> hb_sz); \
27040 + GC_add_leaked((ptr_t)hblk + WORDS_TO_BYTES(word_no)); \
27044 @@ -866,7 +904,7 @@
27046 * This must be done before dropping a list of free gcj-style objects,
27047 * since may otherwise end up with dangling "descriptor" pointers.
27048 - * It may help for other pointer-containg objects.
27049 + * It may help for other pointer-containing objects.
27051 void GC_clear_fl_links(flp)
27053 diff -urNb boehm-gc/solaris_pthreads.c boehm-gc/solaris_pthreads.c
27054 --- boehm-gc/solaris_pthreads.c Mon Feb 11 20:37:53 2002
27055 +++ boehm-gc/solaris_pthreads.c Mon May 26 12:48:52 2003
27058 * Support code for Solaris threads. Provides functionality we wish Sun
27059 * had provided. Relies on some information we probably shouldn't rely on.
27060 - * Modified Peter C. for Solaris Posix Threads.
27061 + * Modified by Peter C. for Solaris Posix Threads.
27063 -/* Boehm, September 14, 1994 4:44 pm PDT */
27065 # if defined(GC_SOLARIS_PTHREADS)
27066 # include "private/gc_priv.h"
27067 diff -urNb boehm-gc/solaris_threads.c boehm-gc/solaris_threads.c
27068 --- boehm-gc/solaris_threads.c Mon Feb 11 20:37:53 2002
27069 +++ boehm-gc/solaris_threads.c Mon May 26 12:48:52 2003
27071 # include <unistd.h>
27072 # include <errno.h>
27074 +#ifdef HANDLE_FORK
27075 + --> Not yet supported. Try porting the code from linux_threads.c.
27079 * This is the default size of the LWP arrays. If there are more LWPs
27080 * than this when a stop-the-world GC happens, set_max_lwps will be
27081 @@ -361,7 +365,7 @@
27082 sizeof (prgregset_t)) != 0) {
27085 - for(j = 0; j < NGREG; j++)
27086 + for(j = 0; j < NPRGREG; j++)
27088 GC_printf3("%i: %x -> %x\n", j,
27089 GC_lwp_registers[i][j],
27090 @@ -821,7 +825,7 @@
27092 t = GC_lookup_thread(target_thread);
27093 if (t == 0) ABORT("thread unknown to GC");
27094 - t -> flags |= SUSPENDED;
27095 + t -> flags |= SUSPNDED;
27099 @@ -837,7 +841,7 @@
27101 t = GC_lookup_thread(target_thread);
27102 if (t == 0) ABORT("thread unknown to GC");
27103 - t -> flags &= ~SUSPENDED;
27104 + t -> flags &= ~SUSPNDED;
27108 @@ -923,7 +927,7 @@
27109 my_flags |= CLIENT_OWNS_STACK;
27111 if (flags & THR_DETACHED) my_flags |= DETACHED;
27112 - if (flags & THR_SUSPENDED) my_flags |= SUSPENDED;
27113 + if (flags & THR_SUSPENDED) my_flags |= SUSPNDED;
27114 result = thr_create(stack, stack_size, start_routine,
27115 arg, flags & ~THR_DETACHED, &my_new_thread);
27117 diff -urNb boehm-gc/threadlibs.c boehm-gc/threadlibs.c
27118 --- boehm-gc/threadlibs.c Mon Feb 11 20:37:53 2002
27119 +++ boehm-gc/threadlibs.c Mon May 26 12:48:52 2003
27123 # if defined(GC_USE_LD_WRAP)
27124 - printf("-Wl,--wrap -Wl,read -Wl,--wrap -Wl,dlopen "
27125 + printf("-Wl,--wrap -Wl,dlopen "
27126 "-Wl,--wrap -Wl,pthread_create -Wl,--wrap -Wl,pthread_join "
27127 "-Wl,--wrap -Wl,pthread_detach "
27128 "-Wl,--wrap -Wl,pthread_sigmask -Wl,--wrap -Wl,sleep\n");
27130 # if defined(GC_LINUX_THREADS) || defined(GC_IRIX_THREADS) \
27131 - || defined(GC_FREEBSD_THREADS) || defined(GC_SOLARIS_PTHREADS)
27132 + || defined(GC_FREEBSD_THREADS) || defined(GC_SOLARIS_PTHREADS) \
27133 + || defined(GC_MACOSX_THREADS)
27134 printf("-lpthread\n");
27136 # if defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS)
27139 # if defined(GC_SOLARIS_THREADS) && !defined(GC_SOLARIS_PTHREADS)
27140 printf("-lthread -ldl\n");
27142 +# if defined(GC_WIN32_THREADS) && defined(CYGWIN32)
27143 + printf("-lpthread\n");
27145 +# if defined(GC_OSF1_THREADS)
27146 + printf("-lpthread -lrt");
27148 + /* You need GCC 3.0.3 to build this one! */
27149 + /* DG/UX native gcc doesnt know what "-pthread" is */
27150 +# if defined(GC_DGUX386_THREADS)
27151 + printf("-ldl -pthread\n");
27155 diff -urNb boehm-gc/typd_mlc.c boehm-gc/typd_mlc.c
27156 --- boehm-gc/typd_mlc.c Fri Aug 17 11:30:46 2001
27157 +++ boehm-gc/typd_mlc.c Mon May 26 12:48:52 2003
27158 @@ -437,6 +437,7 @@
27159 for (; bm != 0; bm >>= 1, current_p++) {
27161 current = *current_p;
27162 + FIXUP_POINTER(current);
27163 if ((ptr_t)current >= least_ha && (ptr_t)current <= greatest_ha) {
27164 PUSH_CONTENTS((ptr_t)current, mark_stack_ptr,
27165 mark_stack_limit, current_p, exit1);
27166 @@ -674,7 +675,7 @@
27167 if( !FASTLOCK_SUCCEEDED() || (op = *opp) == 0 ) {
27169 op = (ptr_t)GENERAL_MALLOC((word)lb, GC_explicit_kind);
27170 - if (0 == op) return(0);
27171 + if (0 == op) return 0;
27172 # ifdef MERGE_SIZES
27173 lw = GC_size_map[lb]; /* May have been uninitialized. */
27175 diff -urNb boehm-gc/version.h boehm-gc/version.h
27176 --- boehm-gc/version.h Mon Feb 11 20:37:53 2002
27177 +++ boehm-gc/version.h Mon May 26 12:48:52 2003
27179 -#define GC_VERSION_MAJOR 6
27180 -#define GC_VERSION_MINOR 1
27181 -#define GC_ALPHA_VERSION 3
27182 +/* The version here should match that in configure/configure.in */
27183 +/* Eventually this one may become unnecessary. For now we need */
27184 +/* it to keep the old-style build process working. */
27185 +#define GC_TMP_VERSION_MAJOR 6
27186 +#define GC_TMP_VERSION_MINOR 2
27187 +#define GC_TMP_ALPHA_VERSION 5
27189 +#if defined(GC_VERSION_MAJOR)
27190 +# if GC_TMP_VERSION_MAJOR != GC_VERSION_MAJOR || \
27191 + GC_TMP_VERSION_MINOR != GC_VERSION_MINOR || \
27192 + GC_TMP_ALPHA_VERSION != GC_ALPHA_VERSION
27193 +# error Inconsistent version info. Check version.h and configure.in.
27196 +# define GC_VERSION_MAJOR GC_TMP_VERSION_MAJOR
27197 +# define GC_VERSION_MINOR GC_TMP_VERSION_MINOR
27198 +# define GC_ALPHA_VERSION GC_TMP_ALPHA_VERSION
27201 +#ifndef GC_NOT_ALPHA
27202 # define GC_NOT_ALPHA 0xff
27205 #ifndef GC_NO_VERSION_VAR
27207 diff -urNb boehm-gc/win32_threads.c boehm-gc/win32_threads.c
27208 --- boehm-gc/win32_threads.c Mon Apr 28 13:55:07 2003
27209 +++ boehm-gc/win32_threads.c Mon May 26 12:48:52 2003
27212 #include "private/gc_priv.h"
27216 -#include <windows.h>
27218 +# include <errno.h>
27220 + /* Cygwin-specific forward decls */
27221 +# undef pthread_create
27222 +# undef pthread_sigmask
27223 +# undef pthread_join
27226 +# define DEBUG_CYGWIN_THREADS 0
27228 + GC_bool GC_thr_initialized = FALSE;
27229 + void * GC_start_routine(void * arg);
27230 + void GC_thread_exit_proc(void *arg);
27234 -#define MAX_THREADS 64
27235 +#ifndef MAX_THREADS
27236 +# define MAX_THREADS 64
27239 struct thread_entry {
27242 /* !in_use ==> stack == 0 */
27247 + void *status; /* hold exit value until join in case it's a pointer */
27248 + pthread_t pthread_id;
27253 volatile GC_bool GC_please_stop = FALSE;
27255 /* Unlike the other threads implementations, the thread table here */
27256 /* contains no pointers to the collectable heap. Thus we have */
27257 /* no private structures we need to preserve. */
27259 + { int i; /* pthreads may keep a pointer in the thread exit value */
27260 + for (i = 0; i < MAX_THREADS; i++)
27261 + if (thread_table[i].in_use) GC_push_all((ptr_t)&(thread_table[i].status),(ptr_t)(&(thread_table[i].status)+1));
27266 void GC_stop_world()
27268 DWORD thread_id = GetCurrentThreadId();
27272 + if (!GC_thr_initialized) ABORT("GC_stop_world() called before GC_thr_init()");
27275 GC_please_stop = TRUE;
27276 for (i = 0; i < MAX_THREADS; i++)
27277 if (thread_table[i].stack != 0
27278 @@ -53,10 +83,14 @@
27280 if (GetExitCodeThread(thread_table[i].handle,&exitCode) &&
27281 exitCode != STILL_ACTIVE) {
27282 - thread_table[i].stack = 0;
27283 + thread_table[i].stack = 0; /* prevent stack from being pushed */
27285 + /* this breaks pthread_join on Cygwin, which is guaranteed to */
27286 + /* only see user pthreads */
27287 thread_table[i].in_use = FALSE;
27288 CloseHandle(thread_table[i].handle);
27289 BZERO((void *)(&thread_table[i].context), sizeof(CONTEXT));
27293 if (SuspendThread(thread_table[i].handle) == (DWORD)-1)
27294 @@ -335,9 +369,11 @@
27295 if (*lo < start) *lo = start;
27298 -#if !defined(MSWINCE) && !(defined(__MINGW32__) && !defined(_DLL))
27299 +#if !defined(MSWINCE) && defined(GC_DLL)
27301 -HANDLE WINAPI GC_CreateThread(
27302 +/* We register threads from DllMain */
27304 +GC_API HANDLE GC_CreateThread(
27305 LPSECURITY_ATTRIBUTES lpThreadAttributes,
27306 DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress,
27307 LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId )
27308 @@ -346,7 +382,10 @@
27309 lpParameter, dwCreationFlags, lpThreadId);
27312 -#else /* !defined(MSWINCE) && !(defined(__MINGW32__) && !defined(_DLL)) */
27313 +#else /* defined(MSWINCE) || !defined(GC_DLL)) */
27315 +/* We have no DllMain to take care of new threads. Thus we */
27316 +/* must properly intercept thread creation. */
27319 HANDLE child_ready_h, parent_ready_h;
27320 @@ -527,22 +566,11 @@
27322 LONG WINAPI GC_write_fault_handler(struct _EXCEPTION_POINTERS *exc_info);
27327 - * This isn't generally safe, since DllMain is not premptible.
27328 - * If another thread holds the lock while this runs we're in trouble.
27329 - * Pontus Rydin suggests wrapping the thread start routine instead.
27330 +/* threadAttach/threadDetach routines used by both CYGWIN and DLL
27331 + * implementation, since both recieve explicit notification on thread
27332 + * creation/destruction.
27334 -BOOL WINAPI DllMain(HINSTANCE inst, ULONG reason, LPVOID reserved)
27336 - switch (reason) {
27337 - case DLL_PROCESS_ATTACH:
27338 - InitializeCriticalSection(&GC_allocate_ml);
27339 - GC_init(); /* Force initialization before thread attach. */
27340 - /* fall through */
27341 - case DLL_THREAD_ATTACH:
27343 +static void threadAttach() {
27345 /* It appears to be unsafe to acquire a lock here, since this */
27346 /* code is apparently not preeemptible on some systems. */
27347 @@ -554,14 +582,11 @@
27348 /* The following should be a noop according to the win32 */
27349 /* documentation. There is empirical evidence that it */
27351 -# ifdef MPROTECT_VDB
27352 +# if defined(MPROTECT_VDB)
27353 if (GC_incremental) SetUnhandledExceptionFilter(GC_write_fault_handler);
27357 /* cast away volatile qualifier */
27358 - InterlockedExchange((LPLONG) &thread_table[i].in_use, 1) != 0;
27360 + for (i = 0; InterlockedExchange((LONG*)&thread_table[i].in_use,1) != 0; i++) {
27361 /* Compare-and-swap would make this cleaner, but that's not */
27362 /* supported before Windows 98 and NT 4.0. In Windows 2000, */
27363 /* InterlockedExchange is supposed to be replaced by */
27364 @@ -571,11 +596,13 @@
27365 ABORT("too many threads");
27367 thread_table[i].id = GetCurrentThreadId();
27369 + thread_table[i].pthread_id = pthread_self();
27371 if (!DuplicateHandle(GetCurrentProcess(),
27372 GetCurrentThread(),
27373 GetCurrentProcess(),
27374 - /* cast away volatile qualifier */
27375 - (HANDLE *) &thread_table[i].handle,
27376 + (HANDLE*)&thread_table[i].handle,
27379 DUPLICATE_SAME_ACCESS)) {
27380 @@ -584,33 +611,226 @@
27381 ABORT("DuplicateHandle failed");
27383 thread_table[i].stack = GC_get_stack_base();
27384 + if (thread_table[i].stack == NULL)
27385 + ABORT("Failed to find stack base in threadAttach");
27386 /* If this thread is being created while we are trying to stop */
27387 /* the world, wait here. Hopefully this can't happen on any */
27388 /* systems that don't allow us to block here. */
27389 while (GC_please_stop) Sleep(20);
27392 - case DLL_THREAD_DETACH:
27396 +static void threadDetach(DWORD thread_id) {
27398 - DWORD thread_id = GetCurrentThreadId();
27403 - (thread_table[i].stack == 0 || thread_table[i].id != thread_id);
27404 + !thread_table[i].in_use || thread_table[i].id != thread_id;
27406 - if (i >= MAX_THREADS) {
27407 + if (i >= MAX_THREADS ) {
27408 WARN("thread %ld not found on detach", (GC_word)thread_id);
27412 thread_table[i].stack = 0;
27413 thread_table[i].in_use = FALSE;
27414 CloseHandle(thread_table[i].handle);
27415 /* cast away volatile qualifier */
27416 - BZERO((void *) &thread_table[i].context, sizeof(CONTEXT));
27417 + BZERO((void *)&thread_table[i].context, sizeof(CONTEXT));
27424 +/* Called by GC_init() - we hold the allocation lock. */
27425 +void GC_thr_init() {
27426 + if (GC_thr_initialized) return;
27427 + GC_thr_initialized = TRUE;
27430 + /* this might already be handled in GC_init... */
27431 + InitializeCriticalSection(&GC_allocate_ml);
27434 + /* Add the initial thread, so we can stop it. */
27438 +struct start_info {
27439 + void *(*start_routine)(void *);
27443 +int GC_pthread_join(pthread_t pthread_id, void **retval) {
27447 +# if DEBUG_CYGWIN_THREADS
27448 + GC_printf3("thread 0x%x(0x%x) is joining thread 0x%x.\n",(int)pthread_self(),
27449 + GetCurrentThreadId(), (int)pthread_id);
27452 + /* Can't do any table lookups here, because thread being joined
27453 + might not have registered itself yet */
27455 + result = pthread_join(pthread_id, retval);
27458 + for (i = 0; !thread_table[i].in_use || thread_table[i].pthread_id != pthread_id;
27460 + if (i == MAX_THREADS - 1) {
27461 + GC_printf1("Failed to find thread 0x%x in pthread_join()\n", pthread_id);
27462 + ABORT("thread not found on detach");
27466 + threadDetach(thread_table[i].id);
27468 +# if DEBUG_CYGWIN_THREADS
27469 + GC_printf3("thread 0x%x(0x%x) completed join with thread 0x%x.\n",
27470 + (int)pthread_self(), GetCurrentThreadId(), (int)pthread_id);
27476 +/* Cygwin-pthreads calls CreateThread internally, but it's not
27477 + * easily interceptible by us..
27478 + * so intercept pthread_create instead
27481 +GC_pthread_create(pthread_t *new_thread,
27482 + const pthread_attr_t *attr,
27483 + void *(*start_routine)(void *), void *arg) {
27485 + struct start_info * si;
27487 + if (!GC_is_initialized) GC_init();
27488 + /* make sure GC is initialized (i.e. main thread is attached) */
27490 + /* This is otherwise saved only in an area mmapped by the thread */
27491 + /* library, which isn't visible to the collector. */
27492 + si = GC_malloc_uncollectable(sizeof(struct start_info));
27493 + if (0 == si) return(EAGAIN);
27495 + si -> start_routine = start_routine;
27498 +# if DEBUG_CYGWIN_THREADS
27499 + GC_printf2("About to create a thread from 0x%x(0x%x)\n",(int)pthread_self(),
27500 + GetCurrentThreadId);
27502 + result = pthread_create(new_thread, attr, GC_start_routine, si);
27504 + if (result) { /* failure */
27511 +void * GC_start_routine(void * arg)
27513 + struct start_info * si = arg;
27515 + void *(*start)(void *);
27517 + pthread_t pthread_id;
27520 +# if DEBUG_CYGWIN_THREADS
27521 + GC_printf2("thread 0x%x(0x%x) starting...\n",(int)pthread_self(),
27522 + GetCurrentThreadId());
27525 + /* If a GC occurs before the thread is registered, that GC will */
27526 + /* ignore this thread. That's fine, since it will block trying to */
27527 + /* acquire the allocation lock, and won't yet hold interesting */
27530 + /* We register the thread here instead of in the parent, so that */
27531 + /* we don't need to hold the allocation lock during pthread_create. */
27535 + start = si -> start_routine;
27536 + start_arg = si -> arg;
27537 + pthread_id = pthread_self();
27539 + GC_free(si); /* was allocated uncollectable */
27541 + pthread_cleanup_push(GC_thread_exit_proc, pthread_id);
27542 + result = (*start)(start_arg);
27543 + pthread_cleanup_pop(0);
27545 +# if DEBUG_CYGWIN_THREADS
27546 + GC_printf2("thread 0x%x(0x%x) returned from start routine.\n",
27547 + (int)pthread_self(),GetCurrentThreadId());
27551 + for (i = 0; thread_table[i].pthread_id != pthread_id; i++) {
27552 + if (i == MAX_THREADS - 1)
27553 + ABORT("thread not found on exit");
27555 + thread_table[i].status = result;
27561 +void GC_thread_exit_proc(void *arg)
27563 + pthread_t pthread_id = (pthread_t)arg;
27566 +# if DEBUG_CYGWIN_THREADS
27567 + GC_printf2("thread 0x%x(0x%x) called pthread_exit().\n",
27568 + (int)pthread_self(),GetCurrentThreadId());
27572 + for (i = 0; thread_table[i].pthread_id != pthread_id; i++) {
27573 + if (i == MAX_THREADS - 1)
27574 + ABORT("thread not found on exit");
27579 + /* TODO: we need a way to get the exit value after a pthread_exit so we can stash it safely away */
27580 + thread_table[i].status = ???
27584 +/* nothing required here... */
27585 +int GC_pthread_sigmask(int how, const sigset_t *set, sigset_t *oset) {
27586 + return pthread_sigmask(how, set, oset);
27588 +int GC_pthread_detach(pthread_t thread) {
27589 + return pthread_detach(thread);
27591 +#else /* !CYGWIN32 */
27594 + * We avoid acquiring locks here, since this doesn't seem to be preemptable.
27595 + * Pontus Rydin suggests wrapping the thread start routine instead.
27598 +BOOL WINAPI DllMain(HINSTANCE inst, ULONG reason, LPVOID reserved)
27600 + switch (reason) {
27601 + case DLL_PROCESS_ATTACH:
27602 + InitializeCriticalSection(&GC_allocate_ml);
27603 + GC_init(); /* Force initialization before thread attach. */
27604 + /* fall through */
27605 + case DLL_THREAD_ATTACH:
27609 + case DLL_THREAD_DETACH:
27610 + threadDetach(GetCurrentThreadId());
27613 case DLL_PROCESS_DETACH:
27616 @@ -636,8 +856,8 @@
27621 -# endif /* GC_DLL */
27622 +#endif /* GC_DLL */
27623 +#endif /* !CYGWIN32 */
27625 # endif /* !MSWINCE */
27627 --- boehm-gc/dyn_load.c Thu Sep 11 21:57:10 2003
27628 +++ boehm-gc/dyn_load.c Thu Sep 11 22:27:30 2003
27629 @@ -284,7 +284,7 @@
27630 /* Defined in os_dep.c. */
27632 char *GC_parse_map_entry(char *buf_ptr, word *start, word *end,
27633 - char *prot_buf, unsigned int *maj_dev);
27634 + char *prot_buf, unsigned int *maj_dev);
27635 word GC_apply_to_maps(word (*fn)(char *));
27636 /* From os_dep.c */
27638 @@ -335,7 +335,7 @@
27639 if (start >= least_ha && end <= greatest_ha) continue;
27640 GC_add_roots_inner((char *)start, (char *)end, TRUE);
27647 @@ -971,6 +971,7 @@
27651 +#define __private_extern__
27652 #include <mach-o/dyld.h>
27653 #include <mach-o/getsect.h>