1 diff -buNr boehm-gc/ChangeLog boehm-gc/ChangeLog
2 --- boehm-gc/ChangeLog Tue May 13 17:08:56 2003
3 +++ boehm-gc/ChangeLog Sat Sep 13 02:10:15 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 -buNr 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 Sat Sep 13 02:10:15 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 -buNr 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~ Sat Sep 13 02:10:15 2003
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 -buNr 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 Sat Sep 13 02:10:15 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) \
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 -buNr 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 Sat Sep 13 02:10:15 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 -buNr 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 Sat Sep 13 02:10:15 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 -buNr 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 Sat Sep 13 02:10:15 2003
1371 + # $Id: darwin-gc.patch,v 1.1 2004/01/17 23:07:22 megacz Exp $
1375 diff -buNr 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 Sat Sep 13 02:10:15 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 -buNr 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 Sep 13 02:10:15 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 -buNr 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 Sep 13 02:10:15 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 -buNr 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 Sat Sep 13 02:10:15 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 -buNr 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 Sep 13 02:10:15 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 -buNr 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 Sat Sep 13 02:10:15 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 -buNr boehm-gc/configure boehm-gc/configure
16585 --- boehm-gc/configure Tue May 13 17:18:14 2003
16586 +++ boehm-gc/configure Sat Sep 13 02:10:15 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 -buNr 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 Sat Sep 13 02:10:15 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 -buNr 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~ Sat Sep 13 02:10:15 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 -buNr 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 Sat Sep 13 02:10:15 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 -buNr 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 Sat Sep 13 02:10:15 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 -buNr 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 Sun Sep 14 19:37:09 2003
18275 +#define __private_extern__
18277 * Copyright (c) 1991-1994 by Xerox Corporation. All rights reserved.
18278 * Copyright (c) 1997 by Silicon Graphics. All rights reserved.
18280 !defined(MSWIN32) && !defined(MSWINCE) && \
18281 !(defined(ALPHA) && defined(OSF1)) && \
18282 !defined(HPUX) && !(defined(LINUX) && defined(__ELF__)) && \
18283 - !defined(RS6000) && !defined(SCO_ELF) && \
18284 + !defined(RS6000) && !defined(SCO_ELF) && !defined(DGUX) && \
18285 !(defined(FREEBSD) && defined(__ELF__)) && \
18286 - !(defined(NETBSD) && defined(__ELF__)) && !defined(HURD)
18287 + !(defined(NETBSD) && defined(__ELF__)) && !defined(HURD) && \
18289 --> We only know how to find data segments of dynamic libraries for the
18290 --> above. Additional SVR4 variants might not be too
18295 #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
18296 - (defined(FREEBSD) && defined(__ELF__)) || \
18297 + (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
18298 (defined(NETBSD) && defined(__ELF__)) || defined(HURD)
18299 # include <stddef.h>
18301 @@ -264,7 +266,7 @@
18302 # endif /* SUNOS */
18304 #if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
18305 - (defined(FREEBSD) && defined(__ELF__)) || \
18306 + (defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
18307 (defined(NETBSD) && defined(__ELF__)) || defined(HURD)
18310 @@ -282,56 +284,23 @@
18311 /* Repeatedly read until buffer is filled, or EOF is encountered */
18312 /* Defined in os_dep.c. */
18314 -static char *parse_map_entry(char *buf_ptr, word *start, word *end,
18315 +char *GC_parse_map_entry(char *buf_ptr, word *start, word *end,
18316 char *prot_buf, unsigned int *maj_dev);
18317 +word GC_apply_to_maps(word (*fn)(char *));
18318 + /* From os_dep.c */
18320 -void GC_register_dynamic_libraries()
18321 +word GC_register_map_entries(char *maps)
18327 - char maps_temp[32768];
18330 + char *buf_ptr = maps;
18333 - unsigned int maj_dev, min_dev;
18334 + unsigned int maj_dev;
18335 word least_ha, greatest_ha;
18337 word datastart = (word)(DATASTART);
18339 - /* Read /proc/self/maps */
18340 - /* Note that we may not allocate, and thus can't use stdio. */
18341 - f = open("/proc/self/maps", O_RDONLY);
18342 - if (-1 == f) ABORT("Couldn't open /proc/self/maps");
18343 - /* stat() doesn't work for /proc/self/maps, so we have to
18344 - read it to find out how large it is... */
18347 - result = GC_repeat_read(f, maps_temp, sizeof(maps_temp));
18348 - if (result <= 0) ABORT("Couldn't read /proc/self/maps");
18349 - maps_size += result;
18350 - } while (result == sizeof(maps_temp));
18352 - if (maps_size > sizeof(maps_temp)) {
18353 - /* If larger than our buffer, close and re-read it. */
18355 - f = open("/proc/self/maps", O_RDONLY);
18356 - if (-1 == f) ABORT("Couldn't open /proc/self/maps");
18357 - maps_buf = alloca(maps_size);
18358 - if (NULL == maps_buf) ABORT("/proc/self/maps alloca failed");
18359 - result = GC_repeat_read(f, maps_buf, maps_size);
18360 - if (result <= 0) ABORT("Couldn't read /proc/self/maps");
18362 - /* Otherwise use the fixed size buffer */
18363 - maps_buf = maps_temp;
18367 - maps_buf[result] = '\0';
18368 - buf_ptr = maps_buf;
18369 - /* Compute heap bounds. Should be done by add_to_heap? */
18370 + /* Compute heap bounds. FIXME: Should be done by add_to_heap? */
18371 least_ha = (word)(-1);
18373 for (i = 0; i < GC_n_heap_sects; ++i) {
18374 @@ -342,11 +311,10 @@
18376 if (greatest_ha < (word)GC_scratch_last_end_ptr)
18377 greatest_ha = (word)GC_scratch_last_end_ptr;
18380 - buf_ptr = parse_map_entry(buf_ptr, &start, &end, prot_buf, &maj_dev);
18381 - if (buf_ptr == NULL) return;
18384 + buf_ptr = GC_parse_map_entry(buf_ptr, &start, &end, prot_buf, &maj_dev);
18385 + if (buf_ptr == NULL) return 1;
18386 if (prot_buf[1] == 'w') {
18387 /* This is a writable mapping. Add it to */
18388 /* the root set unless it is already otherwise */
18389 @@ -358,16 +326,7 @@
18391 if (GC_segment_is_thread_stack(start, end)) continue;
18393 - /* The rest of this assumes that there is no mapping */
18394 - /* spanning the beginning of the data segment, or extending */
18395 - /* beyond the entire heap at both ends. */
18396 - /* Empirically these assumptions hold. */
18398 - if (start < (word)DATAEND && end > (word)DATAEND) {
18399 - /* Rld may use space at the end of the main data */
18400 - /* segment. Thus we add that in. */
18401 - start = (word)DATAEND;
18403 + /* We no longer exclude the main data segment. */
18404 if (start < least_ha && end > least_ha) {
18407 @@ -378,6 +337,13 @@
18408 GC_add_roots_inner((char *)start, (char *)end, TRUE);
18414 +void GC_register_dynamic_libraries()
18416 + if (!GC_apply_to_maps(GC_register_map_entries))
18417 + ABORT("Failed to read /proc for library registration.");
18420 /* We now take care of the main data segment ourselves: */
18421 @@ -387,60 +353,6 @@
18424 # define HAVE_REGISTER_MAIN_STATIC_DATA
18426 -// parse_map_entry parses an entry from /proc/self/maps so we can
18427 -// locate all writable data segments that belong to shared libraries.
18428 -// The format of one of these entries and the fields we care about
18430 -// XXXXXXXX-XXXXXXXX r-xp 00000000 30:05 260537 name of mapping...\n
18431 -// ^^^^^^^^ ^^^^^^^^ ^^^^ ^^
18432 -// start end prot maj_dev
18435 -// The parser is called with a pointer to the entry and the return value
18436 -// is either NULL or is advanced to the next entry(the byte after the
18437 -// trailing '\n'.)
18439 -#define OFFSET_MAP_START 0
18440 -#define OFFSET_MAP_END 9
18441 -#define OFFSET_MAP_PROT 18
18442 -#define OFFSET_MAP_MAJDEV 32
18444 -static char *parse_map_entry(char *buf_ptr, word *start, word *end,
18445 - char *prot_buf, unsigned int *maj_dev)
18448 - unsigned int val;
18451 - if (buf_ptr == NULL || *buf_ptr == '\0') {
18455 - memcpy(prot_buf, buf_ptr+OFFSET_MAP_PROT, 4); // do the protections first
18456 - prot_buf[4] = '\0';
18458 - if (prot_buf[1] == 'w') { // we can skip all of this if it's not writable
18461 - buf_ptr[OFFSET_MAP_START+8] = '\0';
18462 - *start = strtoul(tok, NULL, 16);
18464 - tok = buf_ptr+OFFSET_MAP_END;
18465 - buf_ptr[OFFSET_MAP_END+8] = '\0';
18466 - *end = strtoul(tok, NULL, 16);
18468 - buf_ptr += OFFSET_MAP_MAJDEV;
18470 - while (*buf_ptr != ':') buf_ptr++;
18471 - *buf_ptr++ = '\0';
18472 - *maj_dev = strtoul(tok, NULL, 16);
18475 - while (*buf_ptr && *buf_ptr++ != '\n');
18480 #endif /* USE_PROC_FOR_LIBRARIES */
18482 @@ -508,6 +420,7 @@
18483 GC_add_roots_inner(DATASTART2, (char *)(DATAEND2), TRUE);
18490 @@ -630,6 +543,7 @@
18491 /* The type is a lie, since the real type doesn't make sense here, */
18492 /* and we only test for NULL. */
18495 /* We use /proc to track down all parts of the address space that are */
18496 /* mapped by the process, and throw out regions we know we shouldn't */
18497 /* worry about. This may also work under other SVR4 variants. */
18498 @@ -1056,7 +970,122 @@
18500 #endif /* RS6000 */
18504 +#include <mach-o/dyld.h>
18505 +#include <mach-o/getsect.h>
18507 +/*#define DARWIN_DEBUG*/
18509 +const static struct {
18511 + const char *sect;
18512 +} GC_dyld_sections[] = {
18513 + { SEG_DATA, SECT_DATA },
18514 + { SEG_DATA, SECT_BSS },
18515 + { SEG_DATA, SECT_COMMON }
18518 +#ifdef DARWIN_DEBUG
18519 +static const char *GC_dyld_name_for_hdr(struct mach_header *hdr) {
18520 + unsigned long i,c;
18521 + c = _dyld_image_count();
18522 + for(i=0;i<c;i++) if(_dyld_get_image_header(i) == hdr)
18523 + return _dyld_get_image_name(i);
18528 +/* This should never be called by a thread holding the lock */
18529 +static void GC_dyld_image_add(struct mach_header* hdr, unsigned long slide) {
18530 + unsigned long start,end,i;
18531 + const struct section *sec;
18532 + for(i=0;i<sizeof(GC_dyld_sections)/sizeof(GC_dyld_sections[0]);i++) {
18533 + sec = getsectbynamefromheader(
18534 + hdr,GC_dyld_sections[i].seg,GC_dyld_sections[i].sect);
18535 + if(sec == NULL || sec->size == 0) continue;
18536 + start = slide + sec->addr;
18537 + end = start + sec->size;
18538 +# ifdef DARWIN_DEBUG
18539 + GC_printf4("Adding section at %p-%p (%lu bytes) from image %s\n",
18540 + start,end,sec->size,GC_dyld_name_for_hdr(hdr));
18542 + GC_add_roots((char*)start,(char*)end);
18544 +# ifdef DARWIN_DEBUG
18545 + GC_print_static_roots();
18549 +/* This should never be called by a thread holding the lock */
18550 +static void GC_dyld_image_remove(struct mach_header* hdr, unsigned long slide) {
18551 + unsigned long start,end,i;
18552 + const struct section *sec;
18553 + for(i=0;i<sizeof(GC_dyld_sections)/sizeof(GC_dyld_sections[0]);i++) {
18554 + sec = getsectbynamefromheader(
18555 + hdr,GC_dyld_sections[i].seg,GC_dyld_sections[i].sect);
18556 + if(sec == NULL || sec->size == 0) continue;
18557 + start = slide + sec->addr;
18558 + end = start + sec->size;
18559 +# ifdef DARWIN_DEBUG
18560 + GC_printf4("Removing section at %p-%p (%lu bytes) from image %s\n",
18561 + start,end,sec->size,GC_dyld_name_for_hdr(hdr));
18563 + GC_remove_roots((char*)start,(char*)end);
18565 +# ifdef DARWIN_DEBUG
18566 + GC_print_static_roots();
18570 +void GC_register_dynamic_libraries() {
18571 + /* Currently does nothing. The callbacks are setup by GC_init_dyld()
18572 + The dyld library takes it from there. */
18575 +/* The _dyld_* functions have an internal lock so no _dyld functions
18576 + can be called while the world is stopped without the risk of a deadlock.
18577 + Because of this we MUST setup callbacks BEFORE we ever stop the world.
18578 + This should be called BEFORE any thread in created and WITHOUT the
18579 + allocation lock held. */
18581 +void GC_init_dyld() {
18582 + static GC_bool initialized = FALSE;
18584 + if(initialized) return;
18586 +# ifdef DARWIN_DEBUG
18587 + GC_printf0("Forcing full bind of GC code...\n");
18589 + if(!_dyld_bind_fully_image_containing_address((unsigned long*)GC_malloc))
18590 + GC_abort("_dyld_bind_fully_image_containing_addres failed");
18592 +# ifdef DARWIN_DEBUG
18593 + GC_printf0("Registering dyld callbacks...\n");
18596 + /* Apple's Documentation:
18597 + When you call _dyld_register_func_for_add_image, the dynamic linker runtime
18598 + calls the specified callback (func) once for each of the images that is
18599 + currently loaded into the program. When a new image is added to the program,
18600 + your callback is called again with the mach_header for the new image, and the virtual memory slide amount of the new image.
18602 + This WILL properly register existing and all future libraries
18605 + _dyld_register_func_for_add_image(GC_dyld_image_add);
18606 + _dyld_register_func_for_remove_image(GC_dyld_image_remove);
18607 + initialized = TRUE;
18610 +#define HAVE_REGISTER_MAIN_STATIC_DATA
18611 +GC_bool GC_register_main_static_data()
18613 + /* Already done through dyld callbacks */
18617 +#endif /* DARWIN */
18619 #else /* !DYNAMIC_LOADING */
18621 diff -buNr boehm-gc/dyn_load.c.rej boehm-gc/dyn_load.c.rej
18622 --- boehm-gc/dyn_load.c.rej Wed Dec 31 16:00:00 1969
18623 +++ boehm-gc/dyn_load.c.rej Sat Sep 13 02:10:15 2003
18627 + /* Defined in os_dep.c. */
18629 + char *GC_parse_map_entry(char *buf_ptr, word *start, word *end,
18630 +- char *prot_buf, unsigned int *maj_dev);
18631 + word GC_apply_to_maps(word (*fn)(char *));
18632 + /* From os_dep.c */
18635 + /* Defined in os_dep.c. */
18637 + char *GC_parse_map_entry(char *buf_ptr, word *start, word *end,
18638 ++ char *prot_buf, unsigned int *maj_dev);
18639 + word GC_apply_to_maps(word (*fn)(char *));
18640 + /* From os_dep.c */
18644 + if (start >= least_ha && end <= greatest_ha) continue;
18645 + GC_add_roots_inner((char *)start, (char *)end, TRUE);
18652 + if (start >= least_ha && end <= greatest_ha) continue;
18653 + GC_add_roots_inner((char *)start, (char *)end, TRUE);
18664 + #include <mach-o/dyld.h>
18665 + #include <mach-o/getsect.h>
18671 ++ #define __private_extern__
18672 + #include <mach-o/dyld.h>
18673 + #include <mach-o/getsect.h>
18675 diff -buNr boehm-gc/finalize.c boehm-gc/finalize.c
18676 --- boehm-gc/finalize.c Mon Feb 11 20:37:53 2002
18677 +++ boehm-gc/finalize.c Sat Sep 13 02:10:15 2003
18678 @@ -207,7 +207,8 @@
18682 - new_dl = GC_oom_fn(sizeof(struct disappearing_link));
18683 + new_dl = (struct disappearing_link *)
18684 + GC_oom_fn(sizeof(struct disappearing_link));
18686 GC_finalization_failures++;
18688 @@ -433,7 +434,8 @@
18692 - new_fo = GC_oom_fn(sizeof(struct finalizable_object));
18693 + new_fo = (struct finalizable_object *)
18694 + GC_oom_fn(sizeof(struct finalizable_object));
18696 GC_finalization_failures++;
18698 @@ -759,8 +761,9 @@
18699 /* Should be called without allocation lock. */
18700 int GC_invoke_finalizers()
18702 - register struct finalizable_object * curr_fo;
18703 - register int count = 0;
18704 + struct finalizable_object * curr_fo;
18706 + word mem_freed_before;
18709 while (GC_finalize_now != 0) {
18710 @@ -768,6 +771,9 @@
18714 + if (count == 0) {
18715 + mem_freed_before = GC_mem_freed;
18717 curr_fo = GC_finalize_now;
18719 if (curr_fo != 0) GC_finalize_now = fo_next(curr_fo);
18720 @@ -789,6 +795,11 @@
18721 GC_free((GC_PTR)curr_fo);
18724 + if (count != 0 && mem_freed_before != GC_mem_freed) {
18726 + GC_finalizer_mem_freed += (GC_mem_freed - mem_freed_before);
18732 @@ -801,7 +812,9 @@
18733 if (GC_finalize_now == 0) return;
18734 if (!GC_finalize_on_demand) {
18735 (void) GC_invoke_finalizers();
18737 GC_ASSERT(GC_finalize_now == 0);
18738 +# endif /* Otherwise GC can run concurrently and add more */
18741 if (GC_finalizer_notifier != (void (*) GC_PROTO((void)))0
18742 @@ -839,3 +852,17 @@
18746 +#if !defined(NO_DEBUGGING)
18748 +void GC_print_finalization_stats()
18750 + struct finalizable_object *fo = GC_finalize_now;
18751 + size_t ready = 0;
18753 + GC_printf2("%lu finalization table entries; %lu disappearing links\n",
18754 + GC_fo_entries, GC_dl_entries);
18755 + for (; 0 != fo; fo = fo_next(fo)) ++ready;
18756 + GC_printf1("%lu objects are eligible for immediate finalization\n", ready);
18759 +#endif /* NO_DEBUGGING */
18760 diff -buNr boehm-gc/gc_dlopen.c boehm-gc/gc_dlopen.c
18761 --- boehm-gc/gc_dlopen.c Tue Oct 16 02:01:35 2001
18762 +++ boehm-gc/gc_dlopen.c Sat Sep 13 02:10:15 2003
18763 @@ -19,12 +19,14 @@
18765 * This used to be in dyn_load.c. It was extracted into a separate file
18766 * to avoid having to link against libdl.{a,so} if the client doesn't call
18768 + * dlopen. Of course this fails if the collector is in a dynamic
18772 #include "private/gc_priv.h"
18774 -# if defined(GC_PTHREADS) || defined(GC_SOLARIS_THREADS)
18775 +# if (defined(GC_PTHREADS) && !defined(GC_DARWIN_THREADS)) \
18776 + || defined(GC_SOLARIS_THREADS)
18778 # if defined(dlopen) && !defined(GC_USE_LD_WRAP)
18779 /* To support various threads pkgs, gc.h interposes on dlopen by */
18780 @@ -44,19 +46,14 @@
18781 /* calls in either a multithreaded environment, or if the library */
18782 /* initialization code allocates substantial amounts of GC'ed memory. */
18783 /* But I don't know of a better solution. */
18784 - /* This can still deadlock if the client explicitly starts a GC */
18785 - /* during the dlopen. He shouldn't do that. */
18786 - static GC_bool disable_gc_for_dlopen()
18787 + static void disable_gc_for_dlopen()
18791 - result = GC_dont_gc;
18792 while (GC_incremental && GC_collection_in_progress()) {
18793 GC_collect_a_little_inner(1000);
18795 - GC_dont_gc = TRUE;
18801 /* Redefine dlopen to guarantee mutual exclusion with */
18806 - GC_bool dont_gc_save;
18808 # ifndef USE_PROC_FOR_LIBRARIES
18809 - dont_gc_save = disable_gc_for_dlopen();
18810 + disable_gc_for_dlopen();
18812 # ifdef GC_USE_LD_WRAP
18813 result = (void *)__real_dlopen(path, mode);
18815 result = dlopen(path, mode);
18817 # ifndef USE_PROC_FOR_LIBRARIES
18818 - GC_dont_gc = dont_gc_save;
18819 + GC_enable(); /* undoes disable_gc_for_dlopen */
18823 diff -buNr boehm-gc/gcj_mlc.c boehm-gc/gcj_mlc.c
18824 --- boehm-gc/gcj_mlc.c Mon Feb 11 20:37:53 2002
18825 +++ boehm-gc/gcj_mlc.c Sat Sep 13 02:10:15 2003
18826 @@ -157,6 +157,7 @@
18827 GC_words_allocd += lw;
18829 *(void **)op = ptr_to_struct_containing_descr;
18830 + GC_ASSERT(((void **)op)[1] == 0);
18834 diff -buNr boehm-gc/if_mach.c boehm-gc/if_mach.c
18835 --- boehm-gc/if_mach.c Fri Aug 17 11:30:45 2001
18836 +++ boehm-gc/if_mach.c Sat Sep 13 02:10:15 2003
18838 if (strcmp(MACH_TYPE, argv[1]) != 0) return(0);
18839 if (strcmp(OS_TYPE, "") != 0 && strcmp(argv[2], "") != 0
18840 && strcmp(OS_TYPE, argv[2]) != 0) return(0);
18841 - printf("^^^^Starting command^^^^\n");
18842 + fprintf(stderr, "^^^^Starting command^^^^\n");
18844 execvp(argv[3], argv+3);
18845 perror("Couldn't execute");
18846 diff -buNr boehm-gc/include/Makefile.in boehm-gc/include/Makefile.in
18847 --- boehm-gc/include/Makefile.in Tue Dec 31 09:52:45 2002
18848 +++ boehm-gc/include/Makefile.in Sat Sep 13 02:10:15 2003
18850 -# Makefile.in generated automatically by automake 1.4 from Makefile.am
18851 +# Makefile.in generated by automake 1.6.3 from Makefile.am.
18852 +# @configure_input@
18854 -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
18855 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
18856 +# Free Software Foundation, Inc.
18857 # This Makefile.in is free software; the Free Software Foundation
18858 # gives unlimited permission to copy and/or distribute it,
18859 # with or without modifications, as long as this notice is preserved.
18861 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
18862 # PARTICULAR PURPOSE.
18871 includedir = @includedir@
18872 oldincludedir = /usr/include
18876 pkgdatadir = $(datadir)/@PACKAGE@
18877 pkglibdir = $(libdir)/@PACKAGE@
18878 pkgincludedir = $(includedir)/@PACKAGE@
18882 ACLOCAL = @ACLOCAL@
18883 @@ -45,12 +43,16 @@
18884 AUTOMAKE = @AUTOMAKE@
18885 AUTOHEADER = @AUTOHEADER@
18887 +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
18888 INSTALL = @INSTALL@
18889 -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
18890 +INSTALL_PROGRAM = @INSTALL_PROGRAM@
18891 INSTALL_DATA = @INSTALL_DATA@
18892 +install_sh_DATA = $(install_sh) -c -m 644
18893 +install_sh_PROGRAM = $(install_sh) -c
18894 +install_sh_SCRIPT = $(install_sh) -c
18895 INSTALL_SCRIPT = @INSTALL_SCRIPT@
18896 +INSTALL_HEADER = $(INSTALL_DATA)
18897 transform = @program_transform_name@
18902 @@ -63,171 +65,190 @@
18903 host_triplet = @host@
18904 target_alias = @target_alias@
18905 target_triplet = @target@
18909 +PATH_SEPARATOR = @PATH_SEPARATOR@
18918 CXXINCLUDES = @CXXINCLUDES@
18920 DLLTOOL = @DLLTOOL@
18924 EXTRA_TEST_LIBS = @EXTRA_TEST_LIBS@
18927 GCJFLAGS = @GCJFLAGS@
18928 GC_CFLAGS = @GC_CFLAGS@
18929 INCLUDES = @INCLUDES@
18930 +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
18931 LIBTOOL = @LIBTOOL@
18934 -MAKEINFO = @MAKEINFO@
18935 MY_CFLAGS = @MY_CFLAGS@
18936 OBJDUMP = @OBJDUMP@
18938 PACKAGE = @PACKAGE@
18942 THREADLIBS = @THREADLIBS@
18943 VERSION = @VERSION@
18944 addobjs = @addobjs@
18945 +am__include = @am__include@
18946 +am__quote = @am__quote@
18947 gc_basedir = @gc_basedir@
18948 +install_sh = @install_sh@
18949 mkinstalldirs = @mkinstalldirs@
18950 target_all = @target_all@
18952 AUTOMAKE_OPTIONS = foreign
18954 noinst_HEADERS = gc.h gc_backptr.h gc_local_alloc.h \
18955 gc_pthread_redirects.h gc_cpp.h
18958 CONFIG_CLEAN_FILES =
18960 +am__depfiles_maybe =
18962 HEADERS = $(noinst_HEADERS)
18964 -DIST_COMMON = Makefile.am Makefile.in
18968 -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
18974 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
18975 - cd $(top_srcdir) && $(AUTOMAKE) --cygnus include/Makefile
18976 + cd $(top_srcdir) && \
18977 + $(AUTOMAKE) --cygnus include/Makefile
18978 +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
18979 + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
18981 -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
18982 - cd $(top_builddir) \
18983 - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
18984 +mostlyclean-libtool:
18988 + -rm -rf .libs _libs
18990 +distclean-libtool:
18992 +uninstall-info-am:
18999 -ID: $(HEADERS) $(SOURCES) $(LISP)
19000 - list='$(SOURCES) $(HEADERS)'; \
19001 - unique=`for i in $$list; do echo $$i; done | \
19002 - awk ' { files[$$0] = 1; } \
19003 +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
19004 + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
19005 + unique=`for i in $$list; do \
19006 + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
19008 + $(AWK) ' { files[$$0] = 1; } \
19009 END { for (i in files) print i; }'`; \
19010 - here=`pwd` && cd $(srcdir) \
19011 - && mkid -f$$here/ID $$unique $(LISP)
19012 + mkid -fID $$unique
19014 -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
19015 +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
19016 + $(TAGS_FILES) $(LISP)
19019 - list='$(SOURCES) $(HEADERS)'; \
19020 - unique=`for i in $$list; do echo $$i; done | \
19021 - awk ' { files[$$0] = 1; } \
19022 + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
19023 + unique=`for i in $$list; do \
19024 + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
19026 + $(AWK) ' { files[$$0] = 1; } \
19027 END { for (i in files) print i; }'`; \
19028 - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
19029 - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
19034 + test -z "$(ETAGS_ARGS)$$tags$$unique" \
19035 + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
19039 + here=`$(am__cd) $(top_builddir) && pwd` \
19040 + && cd $(top_srcdir) \
19041 + && gtags -i $(GTAGS_ARGS) $$here
19046 -maintainer-clean-tags:
19048 -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
19052 -distdir: $(DISTFILES)
19053 - @for file in $(DISTFILES); do \
19054 - if test -f $$file; then d=.; else d=$(srcdir); fi; \
19055 - if test -d $$d/$$file; then \
19056 - cp -pr $$d/$$file $(distdir)/$$file; \
19058 - test -f $(distdir)/$$file \
19059 - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
19060 - || cp -p $$d/$$file $(distdir)/$$file || :; \
19067 + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
19071 -installcheck: installcheck-am
19073 -install-info: install-info-am
19075 -install-exec: install-exec-am
19076 +all-am: Makefile $(HEADERS)
19079 -install-data: install-data-am
19082 -install-am: all-am
19083 - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
19084 install: install-am
19086 +install-exec: install-exec-am
19087 +install-data: install-data-am
19088 uninstall: uninstall-am
19089 -all-am: Makefile $(HEADERS)
19090 -all-redirect: all-am
19092 - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
19095 +install-am: all-am
19096 + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
19098 +installcheck: installcheck-am
19100 + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
19101 + INSTALL_STRIP_FLAG=-s \
19102 + `test -z '$(STRIP)' || \
19103 + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
19104 mostlyclean-generic:
19109 -rm -f Makefile $(CONFIG_CLEAN_FILES)
19110 - -rm -f config.cache config.log stamp-h stamp-h[0-9]*
19112 maintainer-clean-generic:
19113 -mostlyclean-am: mostlyclean-tags mostlyclean-generic
19114 + @echo "This command is intended for maintainers to use"
19115 + @echo "it deletes files that may require special tools to rebuild."
19118 -mostlyclean: mostlyclean-am
19119 +clean-am: clean-generic clean-libtool mostlyclean-am
19121 -clean-am: clean-tags clean-generic mostlyclean-am
19122 +distclean: distclean-am
19125 +distclean-am: clean-am distclean-generic distclean-libtool \
19128 -distclean-am: distclean-tags distclean-generic clean-am
19132 -distclean: distclean-am
19135 -maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \
19137 - @echo "This command is intended for maintainers to use;"
19138 - @echo "it deletes files that may require special tools to rebuild."
19153 maintainer-clean: maintainer-clean-am
19155 -.PHONY: tags mostlyclean-tags distclean-tags clean-tags \
19156 -maintainer-clean-tags distdir info-am info dvi-am dvi check check-am \
19157 -installcheck-am installcheck install-info-am install-info \
19158 -install-exec-am install-exec install-data-am install-data install-am \
19159 -install uninstall-am uninstall all-redirect all-am all installdirs \
19160 -mostlyclean-generic distclean-generic clean-generic \
19161 -maintainer-clean-generic clean mostlyclean distclean maintainer-clean
19162 +maintainer-clean-am: distclean-am maintainer-clean-generic
19164 +mostlyclean: mostlyclean-am
19166 +mostlyclean-am: mostlyclean-generic mostlyclean-libtool
19170 +.PHONY: GTAGS all all-am check check-am clean clean-generic \
19171 + clean-libtool distclean distclean-generic distclean-libtool \
19172 + distclean-tags dvi dvi-am info info-am install install-am \
19173 + install-data install-data-am install-exec install-exec-am \
19174 + install-info install-info-am install-man install-strip \
19175 + installcheck installcheck-am installdirs maintainer-clean \
19176 + maintainer-clean-generic mostlyclean mostlyclean-generic \
19177 + mostlyclean-libtool tags uninstall uninstall-am \
19178 + uninstall-info-am
19180 # Tell versions [3.59,3.63) of GNU make to not export all variables.
19181 # Otherwise a system limit (for SysV at least) may be exceeded.
19182 diff -buNr boehm-gc/include/gc.h boehm-gc/include/gc.h
19183 --- boehm-gc/include/gc.h Mon Feb 11 20:37:56 2002
19184 +++ boehm-gc/include/gc.h Sat Sep 13 02:10:15 2003
19190 - * Some tests for old macros. These violate our namespace rules and will
19191 - * disappear shortly. Use the GC_ names.
19193 -#if defined(SOLARIS_THREADS) || defined(_SOLARIS_THREADS)
19194 -# define GC_SOLARIS_THREADS
19196 -#if defined(_SOLARIS_PTHREADS)
19197 -# define GC_SOLARIS_PTHREADS
19199 -#if defined(IRIX_THREADS)
19200 -# define GC_IRIX_THREADS
19202 -#if defined(HPUX_THREADS)
19203 -# define GC_HPUX_THREADS
19205 -#if defined(OSF1_THREADS)
19206 -# define GC_OSF1_THREADS
19208 -#if defined(LINUX_THREADS)
19209 -# define GC_LINUX_THREADS
19211 -#if defined(WIN32_THREADS)
19212 -# define GC_WIN32_THREADS
19214 -#if defined(USE_LD_WRAP)
19215 -# define GC_USE_LD_WRAP
19218 -#if !defined(_REENTRANT) && (defined(GC_SOLARIS_THREADS) \
19219 - || defined(GC_SOLARIS_PTHREADS) \
19220 - || defined(GC_HPUX_THREADS) \
19221 - || defined(GC_LINUX_THREADS))
19222 -# define _REENTRANT
19223 - /* Better late than never. This fails if system headers that */
19224 - /* depend on this were previously included. */
19227 -#if defined(GC_SOLARIS_PTHREADS) && !defined(GC_SOLARIS_THREADS)
19228 -# define GC_SOLARIS_THREADS
19231 -# if defined(GC_SOLARIS_PTHREADS) || defined(GC_FREEBSD_THREADS) || \
19232 - defined(GC_IRIX_THREADS) || defined(GC_LINUX_THREADS) || \
19233 - defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS)
19234 -# define GC_PTHREADS
19238 -# include <stddef.h>
19239 -# ifdef _WIN32_WCE
19240 -/* Yet more kluges for WinCE */
19241 -# include <stdlib.h> /* size_t is defined here */
19242 - typedef long ptrdiff_t; /* ptrdiff_t is not defined */
19245 -#if defined(__MINGW32__) &&defined(_DLL) && !defined(GC_NOT_DLL)
19247 -# define GC_API __declspec(dllexport)
19249 -# define GC_API __declspec(dllimport)
19253 -#if (defined(__DMC__) || defined(_MSC_VER)) \
19254 - && (defined(_DLL) && !defined(GC_NOT_DLL) \
19255 - || defined(GC_DLL))
19257 -# define GC_API extern __declspec(dllexport)
19259 -# define GC_API __declspec(dllimport)
19263 -#if defined(__WATCOMC__) && defined(GC_DLL)
19265 -# define GC_API extern __declspec(dllexport)
19267 -# define GC_API extern __declspec(dllimport)
19272 -#define GC_API extern
19274 +# include "gc_config_macros.h"
19276 # if defined(__STDC__) || defined(__cplusplus)
19277 # define GC_PROTO(args) args
19279 /* Env variable GC_NPROC is set to > 1, or */
19280 /* GC_NPROC is not set and this is an MP. */
19281 /* If GC_parallel is set, incremental */
19282 - /* collection is aonly partially functional, */
19283 + /* collection is only partially functional, */
19284 /* and may not be desirable. */
19287 @@ -215,8 +131,14 @@
19288 /* thread, which will call GC_invoke_finalizers */
19291 -GC_API int GC_dont_gc; /* Dont collect unless explicitly requested, e.g. */
19292 - /* because it's not safe. */
19293 +GC_API int GC_dont_gc; /* != 0 ==> Dont collect. In versions 7.2a1+, */
19294 + /* this overrides explicit GC_gcollect() calls. */
19295 + /* Used as a counter, so that nested enabling */
19296 + /* and disabling work correctly. Should */
19297 + /* normally be updated with GC_enable() and */
19298 + /* GC_disable() calls. */
19299 + /* Direct assignment to GC_dont_gc is */
19300 + /* deprecated. */
19302 GC_API int GC_dont_expand;
19303 /* Dont expand heap unless explicitly requested */
19304 @@ -296,15 +218,6 @@
19305 /* Interferes with blacklisting. */
19306 /* Wizards only. */
19308 -/* Public procedures */
19310 -/* Initialize the collector. This is only required when using thread-local
19311 - * allocation, since unlike the regular allocation routines, GC_local_malloc
19312 - * is not self-initializing. If you use GC_local_malloc you should arrange
19313 - * to call this somehow (e.g. from a constructor) before doing any allocation.
19315 -GC_API void GC_init GC_PROTO((void));
19317 GC_API unsigned long GC_time_limit;
19318 /* If incremental collection is enabled, */
19319 /* We try to terminate collections */
19320 @@ -316,9 +229,18 @@
19322 # define GC_TIME_UNLIMITED 999999
19323 /* Setting GC_time_limit to this value */
19324 - /* will disable the "pause time exceeded */
19325 + /* will disable the "pause time exceeded"*/
19328 +/* Public procedures */
19330 +/* Initialize the collector. This is only required when using thread-local
19331 + * allocation, since unlike the regular allocation routines, GC_local_malloc
19332 + * is not self-initializing. If you use GC_local_malloc you should arrange
19333 + * to call this somehow (e.g. from a constructor) before doing any allocation.
19335 +GC_API void GC_init GC_PROTO((void));
19338 * general purpose allocation routines, with roughly malloc calling conv.
19339 * The atomic versions promise that no relevant pointers are contained
19340 @@ -419,17 +341,21 @@
19341 GC_API void GC_add_roots GC_PROTO((char * low_address,
19342 char * high_address_plus_1));
19344 +/* Remove a root segment. Wizards only. */
19345 +GC_API void GC_remove_roots GC_PROTO((char * low_address,
19346 + char * high_address_plus_1));
19348 /* Add a displacement to the set of those considered valid by the */
19349 /* collector. GC_register_displacement(n) means that if p was returned */
19350 /* by GC_malloc, then (char *)p + n will be considered to be a valid */
19351 -/* pointer to n. N must be small and less than the size of p. */
19352 +/* pointer to p. N must be small and less than the size of p. */
19353 /* (All pointers to the interior of objects from the stack are */
19354 /* considered valid in any case. This applies to heap objects and */
19355 /* static data.) */
19356 /* Preferably, this should be called before any other GC procedures. */
19357 /* Calling it later adds to the probability of excess memory */
19359 -/* This is a no-op if the collector was compiled with recognition of */
19360 +/* This is a no-op if the collector has recognition of */
19361 /* arbitrary interior pointers enabled, which is now the default. */
19362 GC_API void GC_register_displacement GC_PROTO((GC_word n));
19364 @@ -464,9 +390,18 @@
19365 GC_API size_t GC_get_bytes_since_gc GC_PROTO((void));
19367 /* Return the total number of bytes allocated in this process. */
19368 -/* Never decreases. */
19369 +/* Never decreases, except due to wrapping. */
19370 GC_API size_t GC_get_total_bytes GC_PROTO((void));
19372 +/* Disable garbage collection. Even GC_gcollect calls will be */
19373 +/* ineffective. */
19374 +GC_API void GC_disable GC_PROTO((void));
19376 +/* Reenable garbage collection. GC_diable() and GC_enable() calls */
19377 +/* nest. Garbage collection is enabled if the number of calls to both */
19378 +/* both functions is equal. */
19379 +GC_API void GC_enable GC_PROTO((void));
19381 /* Enable incremental/generational collection. */
19382 /* Not advisable unless dirty bits are */
19383 /* available or most heap objects are */
19384 @@ -474,7 +409,11 @@
19385 /* Don't use in leak finding mode. */
19386 /* Ignored if GC_dont_gc is true. */
19387 /* Only the generational piece of this is */
19388 -/* functional if GC_parallel is TRUE. */
19389 +/* functional if GC_parallel is TRUE */
19390 +/* or if GC_time_limit is GC_TIME_UNLIMITED. */
19391 +/* Causes GC_local_gcj_malloc() to revert to */
19392 +/* locked allocation. Must be called */
19393 +/* before any GC_local_gcj_malloc() calls. */
19394 GC_API void GC_enable_incremental GC_PROTO((void));
19396 /* Does incremental mode write-protect pages? Returns zero or */
19397 @@ -518,6 +457,42 @@
19398 # define GC_RETURN_ADDR (GC_word)__return_address
19402 +# include <features.h>
19403 +# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
19404 + && !defined(__ia64__)
19405 +# define GC_HAVE_BUILTIN_BACKTRACE
19406 +# define GC_CAN_SAVE_CALL_STACKS
19408 +# if defined(__i386__) || defined(__x86_64__)
19409 +# define GC_CAN_SAVE_CALL_STACKS
19413 +#if defined(__sparc__)
19414 +# define GC_CAN_SAVE_CALL_STACKS
19417 +/* If we're on an a platform on which we can't save call stacks, but */
19418 +/* gcc is normally used, we go ahead and define GC_ADD_CALLER. */
19419 +/* We make this decision independent of whether gcc is actually being */
19420 +/* used, in order to keep the interface consistent, and allow mixing */
19421 +/* of compilers. */
19422 +/* This may also be desirable if it is possible but expensive to */
19423 +/* retrieve the call chain. */
19424 +#if (defined(__linux__) || defined(__NetBSD__) || defined(__OpenBSD__) \
19425 + || defined(__FreeBSD__)) & !defined(GC_CAN_SAVE_CALL_STACKS)
19426 +# define GC_ADD_CALLER
19427 +# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
19428 + /* gcc knows how to retrieve return address, but we don't know */
19429 + /* how to generate call stacks. */
19430 +# define GC_RETURN_ADDR (GC_word)__builtin_return_address(0)
19432 + /* Just pass 0 for gcc compatibility. */
19433 +# define GC_RETURN_ADDR 0
19437 #ifdef GC_ADD_CALLER
19438 # define GC_EXTRAS GC_RETURN_ADDR, __FILE__, __LINE__
19439 # define GC_EXTRA_PARAMS GC_word ra, GC_CONST char * s, int i
19440 @@ -536,18 +511,42 @@
19441 GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS));
19442 GC_API GC_PTR GC_debug_malloc_stubborn
19443 GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS));
19444 +GC_API GC_PTR GC_debug_malloc_ignore_off_page
19445 + GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS));
19446 +GC_API GC_PTR GC_debug_malloc_atomic_ignore_off_page
19447 + GC_PROTO((size_t size_in_bytes, GC_EXTRA_PARAMS));
19448 GC_API void GC_debug_free GC_PROTO((GC_PTR object_addr));
19449 GC_API GC_PTR GC_debug_realloc
19450 GC_PROTO((GC_PTR old_object, size_t new_size_in_bytes,
19453 GC_API void GC_debug_change_stubborn GC_PROTO((GC_PTR));
19454 GC_API void GC_debug_end_stubborn_change GC_PROTO((GC_PTR));
19456 +/* Routines that allocate objects with debug information (like the */
19457 +/* above), but just fill in dummy file and line number information. */
19458 +/* Thus they can serve as drop-in malloc/realloc replacements. This */
19459 +/* can be useful for two reasons: */
19460 +/* 1) It allows the collector to be built with DBG_HDRS_ALL defined */
19461 +/* even if some allocation calls come from 3rd party libraries */
19462 +/* that can't be recompiled. */
19463 +/* 2) On some platforms, the file and line information is redundant, */
19464 +/* since it can be reconstructed from a stack trace. On such */
19465 +/* platforms it may be more convenient not to recompile, e.g. for */
19466 +/* leak detection. This can be accomplished by instructing the */
19467 +/* linker to replace malloc/realloc with these. */
19468 +GC_API GC_PTR GC_debug_malloc_replacement GC_PROTO((size_t size_in_bytes));
19469 +GC_API GC_PTR GC_debug_realloc_replacement
19470 + GC_PROTO((GC_PTR object_addr, size_t size_in_bytes));
19473 # define GC_MALLOC(sz) GC_debug_malloc(sz, GC_EXTRAS)
19474 # define GC_MALLOC_ATOMIC(sz) GC_debug_malloc_atomic(sz, GC_EXTRAS)
19475 -# define GC_MALLOC_UNCOLLECTABLE(sz) GC_debug_malloc_uncollectable(sz, \
19477 +# define GC_MALLOC_UNCOLLECTABLE(sz) \
19478 + GC_debug_malloc_uncollectable(sz, GC_EXTRAS)
19479 +# define GC_MALLOC_IGNORE_OFF_PAGE(sz) \
19480 + GC_debug_malloc_ignore_off_page(sz, GC_EXTRAS)
19481 +# define GC_MALLOC_ATOMIC_IGNORE_OFF_PAGE(sz) \
19482 + GC_debug_malloc_atomic_ignore_off_page(sz, GC_EXTRAS)
19483 # define GC_REALLOC(old, sz) GC_debug_realloc(old, sz, GC_EXTRAS)
19484 # define GC_FREE(p) GC_debug_free(p)
19485 # define GC_REGISTER_FINALIZER(p, f, d, of, od) \
19486 @@ -566,6 +565,10 @@
19487 # define GC_MALLOC(sz) GC_malloc(sz)
19488 # define GC_MALLOC_ATOMIC(sz) GC_malloc_atomic(sz)
19489 # define GC_MALLOC_UNCOLLECTABLE(sz) GC_malloc_uncollectable(sz)
19490 +# define GC_MALLOC_IGNORE_OFF_PAGE(sz) \
19491 + GC_malloc_ignore_off_page(sz)
19492 +# define GC_MALLOC_ATOMIC_IGNORE_OFF_PAGE(sz) \
19493 + GC_malloc_atomic_ignore_off_page(sz)
19494 # define GC_REALLOC(old, sz) GC_realloc(old, sz)
19495 # define GC_FREE(p) GC_free(p)
19496 # define GC_REGISTER_FINALIZER(p, f, d, of, od) \
19497 @@ -644,7 +647,8 @@
19498 /* itself. There is a stylistic argument that this is wrong, */
19499 /* but it's unavoidable for C++, since the compiler may */
19500 /* silently introduce these. It's also benign in that specific */
19502 +/* case. And it helps if finalizable objects are split to */
19503 +/* avoid cycles. */
19504 /* Note that cd will still be viewed as accessible, even if it */
19505 /* refers to the object itself. */
19506 GC_API void GC_register_finalizer_ignore_self
19507 @@ -717,11 +721,6 @@
19508 /* Undoes a registration by either of the above two */
19511 -/* Auxiliary fns to make finalization work correctly with displaced */
19512 -/* pointers introduced by the debugging allocators. */
19513 -GC_API GC_PTR GC_make_closure GC_PROTO((GC_finalization_proc fn, GC_PTR data));
19514 -GC_API void GC_debug_invoke_finalizer GC_PROTO((GC_PTR obj, GC_PTR data));
19516 /* Returns !=0 if GC_invoke_finalizers has something to do. */
19517 GC_API int GC_should_invoke_finalizers GC_PROTO((void));
19519 @@ -739,6 +738,10 @@
19520 GC_API GC_warn_proc GC_set_warn_proc GC_PROTO((GC_warn_proc p));
19521 /* Returns old warning procedure. */
19523 +GC_API GC_word GC_set_free_space_divisor GC_PROTO((GC_word value));
19524 + /* Set free_space_divisor. See above for definition. */
19525 + /* Returns old value. */
19527 /* The following is intended to be used by a higher level */
19528 /* (e.g. Java-like) finalization facility. It is expected */
19529 /* that finalization code will arrange for hidden pointers to */
19530 @@ -875,12 +878,16 @@
19532 #if defined(GC_WIN32_THREADS)
19533 # include <windows.h>
19534 +# include <winbase.h>
19537 * All threads must be created using GC_CreateThread, so that they will be
19538 - * recorded in the thread table.
19539 + * recorded in the thread table. For backwards compatibility, this is not
19540 + * technically true if the GC is built as a dynamic library, since it can
19541 + * and does then use DllMain to keep track of thread creations. But new code
19542 + * should be built to call GC_CreateThread.
19544 - HANDLE WINAPI GC_CreateThread(
19545 + GC_API HANDLE GC_CreateThread(
19546 LPSECURITY_ATTRIBUTES lpThreadAttributes,
19547 DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress,
19548 LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId );
19549 @@ -914,13 +921,18 @@
19550 # define GC_INIT() { extern end, etext; \
19551 GC_noop(&end, &etext); }
19553 -# if (defined(__CYGWIN32__) && defined(GC_USE_DLL)) || defined (_AIX)
19554 +# if defined(__CYGWIN32__) && defined(GC_DLL) || defined (_AIX)
19556 - * Similarly gnu-win32 DLLs need explicit initialization
19557 + * Similarly gnu-win32 DLLs need explicit initialization from
19558 + * the main program, as does AIX.
19560 # define GC_INIT() { GC_add_roots(DATASTART, DATAEND); }
19562 +# if defined(__APPLE__) && defined(__MACH__)
19563 +# define GC_INIT() { GC_init(); }
19570 diff -buNr boehm-gc/include/gc_allocator.h boehm-gc/include/gc_allocator.h
19571 --- boehm-gc/include/gc_allocator.h Wed Dec 31 16:00:00 1969
19572 +++ boehm-gc/include/gc_allocator.h Sat Sep 13 02:10:15 2003
19575 + * Copyright (c) 1996-1997
19576 + * Silicon Graphics Computer Systems, Inc.
19578 + * Permission to use, copy, modify, distribute and sell this software
19579 + * and its documentation for any purpose is hereby granted without fee,
19580 + * provided that the above copyright notice appear in all copies and
19581 + * that both that copyright notice and this permission notice appear
19582 + * in supporting documentation. Silicon Graphics makes no
19583 + * representations about the suitability of this software for any
19584 + * purpose. It is provided "as is" without express or implied warranty.
19586 + * Copyright (c) 2002
19587 + * Hewlett-Packard Company
19589 + * Permission to use, copy, modify, distribute and sell this software
19590 + * and its documentation for any purpose is hereby granted without fee,
19591 + * provided that the above copyright notice appear in all copies and
19592 + * that both that copyright notice and this permission notice appear
19593 + * in supporting documentation. Hewlett-Packard Company makes no
19594 + * representations about the suitability of this software for any
19595 + * purpose. It is provided "as is" without express or implied warranty.
19599 + * This implements standard-conforming allocators that interact with
19600 + * the garbage collector. Gc_alloctor<T> allocates garbage-collectable
19601 + * objects of type T. Traceable_allocator<T> allocates objects that
19602 + * are not temselves garbage collected, but are scanned by the
19603 + * collector for pointers to collectable objects. Traceable_alloc
19604 + * should be used for explicitly managed STL containers that may
19605 + * point to collectable objects.
19607 + * This code was derived from an earlier version of the GNU C++ standard
19608 + * library, which itself was derived from the SGI STL implementation.
19611 +#include "gc.h" // For size_t
19613 +/* First some helpers to allow us to dispatch on whether or not a type
19614 + * is known to be pointerfree.
19615 + * These are private, except that the client may invoke the
19616 + * GC_DECLARE_PTRFREE macro.
19619 +struct GC_true_type {};
19620 +struct GC_false_type {};
19622 +template <class GC_tp>
19623 +struct GC_type_traits {
19624 + GC_false_type GC_is_ptr_free;
19627 +# define GC_DECLARE_PTRFREE(T) \
19628 +template<> struct GC_type_traits<T> { GC_true_type GC_is_ptr_free; }
19630 +GC_DECLARE_PTRFREE(signed char);
19631 +GC_DECLARE_PTRFREE(unsigned char);
19632 +GC_DECLARE_PTRFREE(signed short);
19633 +GC_DECLARE_PTRFREE(unsigned short);
19634 +GC_DECLARE_PTRFREE(signed int);
19635 +GC_DECLARE_PTRFREE(unsigned int);
19636 +GC_DECLARE_PTRFREE(signed long);
19637 +GC_DECLARE_PTRFREE(unsigned long);
19638 +GC_DECLARE_PTRFREE(float);
19639 +GC_DECLARE_PTRFREE(double);
19640 +/* The client may want to add others. */
19642 +// In the following GC_Tp is GC_true_type iff we are allocating a
19643 +// pointerfree object.
19644 +template <class GC_Tp>
19645 +inline void * GC_selective_alloc(size_t n, GC_Tp) {
19646 + return GC_MALLOC(n);
19650 +inline void * GC_selective_alloc<GC_true_type>(size_t n, GC_true_type) {
19651 + return GC_MALLOC_ATOMIC(n);
19654 +/* Now the public gc_allocator<T> class:
19656 +template <class GC_Tp>
19657 +class gc_allocator {
19659 + typedef size_t size_type;
19660 + typedef ptrdiff_t difference_type;
19661 + typedef GC_Tp* pointer;
19662 + typedef const GC_Tp* const_pointer;
19663 + typedef GC_Tp& reference;
19664 + typedef const GC_Tp& const_reference;
19665 + typedef GC_Tp value_type;
19667 + template <class GC_Tp1> struct rebind {
19668 + typedef gc_allocator<GC_Tp1> other;
19671 + gc_allocator() {}
19673 + // I'm not sure why this is needed here in addition to the following.
19674 + // The standard specifies it for the standard allocator, but VC++ rejects
19676 + gc_allocator(const gc_allocator&) throw() {}
19678 + template <class GC_Tp1> gc_allocator(const gc_allocator<GC_Tp1>&) throw() {}
19679 + ~gc_allocator() throw() {}
19681 + pointer address(reference GC_x) const { return &GC_x; }
19682 + const_pointer address(const_reference GC_x) const { return &GC_x; }
19684 + // GC_n is permitted to be 0. The C++ standard says nothing about what
19685 + // the return value is when GC_n == 0.
19686 + GC_Tp* allocate(size_type GC_n, const void* = 0) {
19687 + GC_type_traits<GC_Tp> traits;
19688 + return static_cast<GC_Tp *>
19689 + (GC_selective_alloc(GC_n * sizeof(GC_Tp),
19690 + traits.GC_is_ptr_free));
19693 + // __p is not permitted to be a null pointer.
19694 + void deallocate(pointer __p, size_type GC_n)
19695 + { GC_FREE(__p); }
19697 + size_type max_size() const throw()
19698 + { return size_t(-1) / sizeof(GC_Tp); }
19700 + void construct(pointer __p, const GC_Tp& __val) { new(__p) GC_Tp(__val); }
19701 + void destroy(pointer __p) { __p->~GC_Tp(); }
19705 +class gc_allocator<void> {
19706 + typedef size_t size_type;
19707 + typedef ptrdiff_t difference_type;
19708 + typedef void* pointer;
19709 + typedef const void* const_pointer;
19710 + typedef void value_type;
19712 + template <class GC_Tp1> struct rebind {
19713 + typedef gc_allocator<GC_Tp1> other;
19718 +template <class GC_T1, class GC_T2>
19719 +inline bool operator==(const gc_allocator<GC_T1>&, const gc_allocator<GC_T2>&)
19724 +template <class GC_T1, class GC_T2>
19725 +inline bool operator!=(const gc_allocator<GC_T1>&, const gc_allocator<GC_T2>&)
19731 + * And the public traceable_allocator class.
19734 +// Note that we currently don't specialize the pointer-free case, since a
19735 +// pointer-free traceable container doesn't make that much sense,
19736 +// though it could become an issue due to abstraction boundaries.
19737 +template <class GC_Tp>
19738 +class traceable_allocator {
19740 + typedef size_t size_type;
19741 + typedef ptrdiff_t difference_type;
19742 + typedef GC_Tp* pointer;
19743 + typedef const GC_Tp* const_pointer;
19744 + typedef GC_Tp& reference;
19745 + typedef const GC_Tp& const_reference;
19746 + typedef GC_Tp value_type;
19748 + template <class GC_Tp1> struct rebind {
19749 + typedef traceable_allocator<GC_Tp1> other;
19752 + traceable_allocator() throw() {}
19754 + traceable_allocator(const traceable_allocator&) throw() {}
19756 + template <class GC_Tp1> traceable_allocator
19757 + (const traceable_allocator<GC_Tp1>&) throw() {}
19758 + ~traceable_allocator() throw() {}
19760 + pointer address(reference GC_x) const { return &GC_x; }
19761 + const_pointer address(const_reference GC_x) const { return &GC_x; }
19763 + // GC_n is permitted to be 0. The C++ standard says nothing about what
19764 + // the return value is when GC_n == 0.
19765 + GC_Tp* allocate(size_type GC_n, const void* = 0) {
19766 + return static_cast<GC_Tp*>(GC_MALLOC_UNCOLLECTABLE(GC_n * sizeof(GC_Tp)));
19769 + // __p is not permitted to be a null pointer.
19770 + void deallocate(pointer __p, size_type GC_n)
19771 + { GC_FREE(__p); }
19773 + size_type max_size() const throw()
19774 + { return size_t(-1) / sizeof(GC_Tp); }
19776 + void construct(pointer __p, const GC_Tp& __val) { new(__p) GC_Tp(__val); }
19777 + void destroy(pointer __p) { __p->~GC_Tp(); }
19781 +class traceable_allocator<void> {
19782 + typedef size_t size_type;
19783 + typedef ptrdiff_t difference_type;
19784 + typedef void* pointer;
19785 + typedef const void* const_pointer;
19786 + typedef void value_type;
19788 + template <class GC_Tp1> struct rebind {
19789 + typedef traceable_allocator<GC_Tp1> other;
19794 +template <class GC_T1, class GC_T2>
19795 +inline bool operator==(const traceable_allocator<GC_T1>&, const traceable_allocator<GC_T2>&)
19800 +template <class GC_T1, class GC_T2>
19801 +inline bool operator!=(const traceable_allocator<GC_T1>&, const traceable_allocator<GC_T2>&)
19806 diff -buNr boehm-gc/include/gc_config_macros.h boehm-gc/include/gc_config_macros.h
19807 --- boehm-gc/include/gc_config_macros.h Wed Dec 31 16:00:00 1969
19808 +++ boehm-gc/include/gc_config_macros.h Sat Sep 13 02:10:15 2003
19811 + * This should never be included directly. It is included only from gc.h.
19812 + * We separate it only to make gc.h more suitable as documentation.
19814 + * Some tests for old macros. These violate our namespace rules and will
19815 + * disappear shortly. Use the GC_ names.
19817 +#if defined(SOLARIS_THREADS) || defined(_SOLARIS_THREADS)
19818 +# define GC_SOLARIS_THREADS
19820 +#if defined(_SOLARIS_PTHREADS)
19821 +# define GC_SOLARIS_PTHREADS
19823 +#if defined(IRIX_THREADS)
19824 +# define GC_IRIX_THREADS
19826 +#if defined(DGUX_THREADS)
19827 +# if !defined(GC_DGUX386_THREADS)
19828 +# define GC_DGUX386_THREADS
19831 +#if defined(HPUX_THREADS)
19832 +# define GC_HPUX_THREADS
19834 +#if defined(OSF1_THREADS)
19835 +# define GC_OSF1_THREADS
19837 +#if defined(LINUX_THREADS)
19838 +# define GC_LINUX_THREADS
19840 +#if defined(WIN32_THREADS)
19841 +# define GC_WIN32_THREADS
19843 +#if defined(USE_LD_WRAP)
19844 +# define GC_USE_LD_WRAP
19847 +#if !defined(_REENTRANT) && (defined(GC_SOLARIS_THREADS) \
19848 + || defined(GC_SOLARIS_PTHREADS) \
19849 + || defined(GC_HPUX_THREADS) \
19850 + || defined(GC_LINUX_THREADS))
19851 +# define _REENTRANT
19852 + /* Better late than never. This fails if system headers that */
19853 + /* depend on this were previously included. */
19856 +#if defined(GC_DGUX386_THREADS) && !defined(_POSIX4A_DRAFT10_SOURCE)
19857 +# define _POSIX4A_DRAFT10_SOURCE 1
19860 +# if defined(GC_SOLARIS_PTHREADS) || defined(GC_FREEBSD_THREADS) || \
19861 + defined(GC_IRIX_THREADS) || defined(GC_LINUX_THREADS) || \
19862 + defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) || \
19863 + defined(GC_DGUX386_THREADS) || defined(GC_DARWIN_THREADS) || \
19864 + (defined(GC_WIN32_THREADS) && defined(__CYGWIN32__))
19865 +# define GC_PTHREADS
19868 +#if defined(GC_THREADS) && !defined(GC_PTHREADS)
19869 +# if defined(__linux__)
19870 +# define GC_LINUX_THREADS
19871 +# define GC_PTHREADS
19873 +# if !defined(LINUX) && (defined(_PA_RISC1_1) || defined(_PA_RISC2_0) \
19874 + || defined(hppa) || defined(__HPPA))
19875 +# define GC_HPUX_THREADS
19876 +# define GC_PTHREADS
19878 +# if !defined(__linux__) && (defined(__alpha) || defined(__alpha__))
19879 +# define GC_OSF1_THREADS
19880 +# define GC_PTHREADS
19882 +# if defined(__mips) && !defined(__linux__)
19883 +# define GC_IRIX_THREADS
19884 +# define GC_PTHREADS
19886 +# if defined(__sparc) && !defined(__linux__)
19887 +# define GC_SOLARIS_PTHREADS
19888 +# define GC_PTHREADS
19890 +# if defined(__APPLE__) && defined(__MACH__) && defined(__ppc__)
19891 +# define GC_DARWIN_THREADS
19892 +# define GC_PTHREADS
19894 +# if !defined(GC_PTHREADS) && defined(__FreeBSD__)
19895 +# define GC_FREEBSD_THREADS
19896 +# define GC_PTHREADS
19898 +# if defined(DGUX) && (defined(i386) || defined(__i386__))
19899 +# define GC_DGUX386_THREADS
19900 +# define GC_PTHREADS
19902 +#endif /* GC_THREADS */
19904 +#if defined(GC_THREADS) && !defined(GC_PTHREADS) && defined(MSWIN32)
19905 +# define GC_WIN32_THREADS
19908 +#if defined(GC_SOLARIS_PTHREADS) && !defined(GC_SOLARIS_THREADS)
19909 +# define GC_SOLARIS_THREADS
19913 +# include <stddef.h>
19914 +# ifdef _WIN32_WCE
19915 +/* Yet more kluges for WinCE */
19916 +# include <stdlib.h> /* size_t is defined here */
19917 + typedef long ptrdiff_t; /* ptrdiff_t is not defined */
19920 +#if defined(_DLL) && !defined(GC_NOT_DLL) && !defined(GC_DLL)
19924 +#if defined(__MINGW32__) && defined(GC_DLL)
19926 +# define GC_API __declspec(dllexport)
19928 +# define GC_API __declspec(dllimport)
19932 +#if (defined(__DMC__) || defined(_MSC_VER)) && defined(GC_DLL)
19934 +# define GC_API extern __declspec(dllexport)
19936 +# define GC_API __declspec(dllimport)
19940 +#if defined(__WATCOMC__) && defined(GC_DLL)
19942 +# define GC_API extern __declspec(dllexport)
19944 +# define GC_API extern __declspec(dllimport)
19949 +#define GC_API extern
19952 diff -buNr boehm-gc/include/gc_cpp.h boehm-gc/include/gc_cpp.h
19953 --- boehm-gc/include/gc_cpp.h Fri Aug 17 18:04:43 2001
19954 +++ boehm-gc/include/gc_cpp.h Sat Sep 13 02:10:15 2003
19955 @@ -134,7 +134,9 @@
19958 #ifndef THINK_CPLUS
19962 +# define GC_cdecl _cdecl
19965 #if ! defined( GC_NO_OPERATOR_NEW_ARRAY ) \
19966 @@ -159,12 +161,22 @@
19968 inline void* operator new( size_t size );
19969 inline void* operator new( size_t size, GCPlacement gcp );
19970 + inline void* operator new( size_t size, void *p );
19971 + /* Must be redefined here, since the other overloadings */
19972 + /* hide the global definition. */
19973 inline void operator delete( void* obj );
19974 +# ifndef __BORLANDC__ /* Confuses the Borland compiler. */
19975 + inline void operator delete( void*, void* );
19978 #ifdef GC_OPERATOR_NEW_ARRAY
19979 inline void* operator new[]( size_t size );
19980 inline void* operator new[]( size_t size, GCPlacement gcp );
19981 + inline void* operator new[]( size_t size, void *p );
19982 inline void operator delete[]( void* obj );
19983 +# ifndef __BORLANDC__
19984 + inline void gc::operator delete[]( void*, void* );
19986 #endif /* GC_OPERATOR_NEW_ARRAY */
19989 @@ -176,7 +188,7 @@
19990 inline gc_cleanup();
19991 inline virtual ~gc_cleanup();
19993 - inline static void _cdecl cleanup( void* obj, void* clientData );};
19994 + inline static void GC_cdecl cleanup( void* obj, void* clientData );};
19996 Instances of classes derived from "gc_cleanup" will be allocated
19997 in the collected heap by default. When the collector discovers an
19998 @@ -211,7 +223,6 @@
19999 classes derived from "gc_cleanup" or containing members derived
20000 from "gc_cleanup". */
20002 -#ifdef GC_OPERATOR_NEW_ARRAY
20005 /** This ensures that the system default operator new[] doesn't get
20006 @@ -220,42 +231,24 @@
20007 * There seems to be really redirect new in this environment without
20008 * including this everywhere.
20010 - inline void *operator new[]( size_t size )
20012 - return GC_MALLOC_UNCOLLECTABLE( size );
20015 - inline void operator delete[](void* obj)
20019 + void *operator new[]( size_t size );
20021 - inline void* operator new( size_t size)
20023 - return GC_MALLOC_UNCOLLECTABLE( size);
20025 + void operator delete[](void* obj);
20027 - inline void operator delete(void* obj)
20031 + void* operator new( size_t size);
20033 + void operator delete(void* obj);
20035 -// This new operator is used by VC++ in case of Debug builds !
20036 - inline void* operator new( size_t size,
20037 + // This new operator is used by VC++ in case of Debug builds !
20038 + void* operator new( size_t size,
20040 const char * szFileName,
20044 - return GC_malloc_uncollectable( size );
20046 - return GC_debug_malloc_uncollectable(size, szFileName, nLine);
20051 #endif /* _MSC_VER */
20054 +#ifdef GC_OPERATOR_NEW_ARRAY
20056 inline void* operator new[](
20059 @@ -283,9 +276,15 @@
20061 return GC_MALLOC_UNCOLLECTABLE( size );}
20063 +inline void* gc::operator new( size_t size, void *p ) {
20066 inline void gc::operator delete( void* obj ) {
20069 +#ifndef __BORLANDC__
20070 + inline void gc::operator delete( void*, void* ) {}
20073 #ifdef GC_OPERATOR_NEW_ARRAY
20075 @@ -295,14 +294,21 @@
20076 inline void* gc::operator new[]( size_t size, GCPlacement gcp ) {
20077 return gc::operator new( size, gcp );}
20079 +inline void* gc::operator new[]( size_t size, void *p ) {
20082 inline void gc::operator delete[]( void* obj ) {
20083 gc::operator delete( obj );}
20085 +#ifndef __BORLANDC__
20086 + inline void gc::operator delete[]( void*, void* ) {}
20089 #endif /* GC_OPERATOR_NEW_ARRAY */
20092 inline gc_cleanup::~gc_cleanup() {
20093 - GC_REGISTER_FINALIZER_IGNORE_SELF( GC_base(this), 0, 0, 0, 0 );}
20094 + GC_register_finalizer_ignore_self( GC_base(this), 0, 0, 0, 0 );}
20096 inline void gc_cleanup::cleanup( void* obj, void* displ ) {
20097 ((gc_cleanup*) ((char*) obj + (ptrdiff_t) displ))->~gc_cleanup();}
20098 diff -buNr boehm-gc/include/gc_local_alloc.h boehm-gc/include/gc_local_alloc.h
20099 --- boehm-gc/include/gc_local_alloc.h Fri Aug 17 11:30:50 2001
20100 +++ boehm-gc/include/gc_local_alloc.h Sat Sep 13 02:10:15 2003
20102 * -DTHREAD_LOCAL_ALLOC, which is currently supported only on Linux.
20104 * The debugging allocators use standard, not thread-local allocation.
20106 + * These routines normally require an explicit call to GC_init(), though
20107 + * that may be done from a constructor function.
20110 #ifndef GC_LOCAL_ALLOC_H
20111 diff -buNr boehm-gc/include/gc_mark.h boehm-gc/include/gc_mark.h
20112 --- boehm-gc/include/gc_mark.h Fri Aug 17 11:30:50 2001
20113 +++ boehm-gc/include/gc_mark.h Sat Sep 13 02:10:15 2003
20114 @@ -129,7 +129,9 @@
20115 /* be reserved for exceptional cases. That will ensure that */
20116 /* performance of this call is not extremely performance critical. */
20117 /* (Otherwise we would need to inline GC_mark_and_push completely, */
20118 -/* which would tie the client code to a fixed colllector version.) */
20119 +/* which would tie the client code to a fixed collector version.) */
20120 +/* Note that mark procedures should explicitly call FIXUP_POINTER() */
20121 +/* if required. */
20122 struct GC_ms_entry *GC_mark_and_push
20123 GC_PROTO((GC_PTR obj,
20124 struct GC_ms_entry * mark_stack_ptr,
20125 diff -buNr boehm-gc/include/gc_pthread_redirects.h boehm-gc/include/gc_pthread_redirects.h
20126 --- boehm-gc/include/gc_pthread_redirects.h Tue Oct 16 21:55:28 2001
20127 +++ boehm-gc/include/gc_pthread_redirects.h Sat Sep 13 02:10:15 2003
20128 @@ -52,15 +52,21 @@
20129 int GC_pthread_create(pthread_t *new_thread,
20130 const pthread_attr_t *attr,
20131 void *(*start_routine)(void *), void *arg);
20132 +#ifndef GC_DARWIN_THREADS
20133 int GC_pthread_sigmask(int how, const sigset_t *set, sigset_t *oset);
20135 int GC_pthread_join(pthread_t thread, void **retval);
20136 int GC_pthread_detach(pthread_t thread);
20138 # define pthread_create GC_pthread_create
20139 +#ifndef GC_DARWIN_THREADS
20140 # define pthread_sigmask GC_pthread_sigmask
20142 # define pthread_join GC_pthread_join
20143 # define pthread_detach GC_pthread_detach
20144 +#ifndef GC_DARWIN_THREADS
20145 # define dlopen GC_dlopen
20148 #endif /* GC_xxxxx_THREADS */
20150 diff -buNr boehm-gc/include/gc_typed.h boehm-gc/include/gc_typed.h
20151 --- boehm-gc/include/gc_typed.h Fri Aug 17 11:30:50 2001
20152 +++ boehm-gc/include/gc_typed.h Sat Sep 13 02:10:15 2003
20153 @@ -29,14 +29,21 @@
20157 +#ifdef __cplusplus
20160 typedef GC_word * GC_bitmap;
20161 /* The least significant bit of the first word is one if */
20162 /* the first word in the object may be a pointer. */
20164 +# define GC_WORDSZ (8*sizeof(GC_word))
20165 # define GC_get_bit(bm, index) \
20166 - (((bm)[divWORDSZ(index)] >> modWORDSZ(index)) & 1)
20167 + (((bm)[index/GC_WORDSZ] >> (index%GC_WORDSZ)) & 1)
20168 # define GC_set_bit(bm, index) \
20169 - (bm)[divWORDSZ(index)] |= (word)1 << modWORDSZ(index)
20170 + (bm)[index/GC_WORDSZ] |= ((GC_word)1 << (index%GC_WORDSZ))
20171 +# define GC_WORD_OFFSET(t, f) (offsetof(t,f)/sizeof(GC_word))
20172 +# define GC_WORD_LEN(t) (sizeof(t)/ sizeof(GC_word))
20173 +# define GC_BITMAP_SIZE(t) ((GC_WORD_LEN(t) + GC_WORDSZ-1)/GC_WORDSZ)
20175 typedef GC_word GC_descr;
20178 /* is intended to be called once per type, not once */
20179 /* per allocation. */
20181 +/* It is possible to generate a descriptor for a C type T with */
20182 +/* word aligned pointer fields f1, f2, ... as follows: */
20184 +/* GC_descr T_descr;
20185 +/* GC_word T_bitmap[GC_BITMAP_SIZE(T)] = {0}; */
20186 +/* GC_set_bit(T_bitmap, GC_WORD_OFFSET(T,f1)); */
20187 +/* GC_set_bit(T_bitmap, GC_WORD_OFFSET(T,f2)); */
20189 +/* T_descr = GC_make_descriptor(T_bitmap, GC_WORD_LEN(T)); */
20191 GC_API GC_PTR GC_malloc_explicitly_typed
20192 GC_PROTO((size_t size_in_bytes, GC_descr d));
20193 /* Allocate an object whose layout is described by d. */
20194 @@ -79,15 +96,18 @@
20195 /* Returned object is cleared. */
20198 -# define GC_MALLOC_EXPLICTLY_TYPED(bytes, d) GC_MALLOC(bytes)
20199 -# define GC_CALLOC_EXPLICTLY_TYPED(n, bytes, d) GC_MALLOC(n*bytes)
20200 +# define GC_MALLOC_EXPLICITLY_TYPED(bytes, d) GC_MALLOC(bytes)
20201 +# define GC_CALLOC_EXPLICITLY_TYPED(n, bytes, d) GC_MALLOC(n*bytes)
20203 -# define GC_MALLOC_EXPLICTLY_TYPED(bytes, d) \
20204 +# define GC_MALLOC_EXPLICITLY_TYPED(bytes, d) \
20205 GC_malloc_explicitly_typed(bytes, d)
20206 -# define GC_CALLOC_EXPLICTLY_TYPED(n, bytes, d) \
20207 +# define GC_CALLOC_EXPLICITLY_TYPED(n, bytes, d) \
20208 GC_calloc_explicitly_typed(n, bytes, d)
20209 #endif /* !GC_DEBUG */
20211 +#ifdef __cplusplus
20212 + } /* matches extern "C" */
20215 #endif /* _GC_TYPED_H */
20217 diff -buNr boehm-gc/include/new_gc_alloc.h boehm-gc/include/new_gc_alloc.h
20218 --- boehm-gc/include/new_gc_alloc.h Tue Oct 16 02:01:38 2001
20219 +++ boehm-gc/include/new_gc_alloc.h Sat Sep 13 02:10:15 2003
20224 +/* A hack to deal with gcc 3.1. If you are using gcc3.1 and later, */
20225 +/* you should probably really use gc_allocator.h instead. */
20226 +#if defined (__GNUC__) && \
20227 + (__GNUC > 3 || (__GNUC__ == 3 && (__GNUC_MINOR__ >= 1)))
20228 +# define simple_alloc __simple_alloc
20235 diff -buNr boehm-gc/include/private/darwin_semaphore.h boehm-gc/include/private/darwin_semaphore.h
20236 --- boehm-gc/include/private/darwin_semaphore.h Wed Dec 31 16:00:00 1969
20237 +++ boehm-gc/include/private/darwin_semaphore.h Sat Sep 13 02:10:15 2003
20239 +#ifndef GC_DARWIN_SEMAPHORE_H
20240 +#define GC_DARWIN_SEMAPHORE_H
20242 +#if !defined(GC_DARWIN_THREADS)
20243 +#error darwin_semaphore.h included with GC_DARWIN_THREADS not defined
20247 + This is a very simple semaphore implementation for darwin. It
20248 + is implemented in terms of pthreads calls so it isn't async signal
20249 + safe. This isn't a problem because signals aren't used to
20250 + suspend threads on darwin.
20254 + pthread_mutex_t mutex;
20255 + pthread_cond_t cond;
20259 +static int sem_init(sem_t *sem, int pshared, int value) {
20262 + GC_abort("sem_init with pshared set");
20263 + sem->value = value;
20265 + ret = pthread_mutex_init(&sem->mutex,NULL);
20266 + if(ret < 0) return -1;
20267 + ret = pthread_cond_init(&sem->cond,NULL);
20268 + if(ret < 0) return -1;
20272 +static int sem_post(sem_t *sem) {
20273 + if(pthread_mutex_lock(&sem->mutex) < 0)
20276 + if(pthread_cond_signal(&sem->cond) < 0) {
20277 + pthread_mutex_unlock(&sem->mutex);
20280 + if(pthread_mutex_unlock(&sem->mutex) < 0)
20285 +static int sem_wait(sem_t *sem) {
20286 + if(pthread_mutex_lock(&sem->mutex) < 0)
20288 + while(sem->value == 0) {
20289 + pthread_cond_wait(&sem->cond,&sem->mutex);
20292 + if(pthread_mutex_unlock(&sem->mutex) < 0)
20297 +static int sem_destroy(sem_t *sem) {
20299 + ret = pthread_cond_destroy(&sem->cond);
20300 + if(ret < 0) return -1;
20301 + ret = pthread_mutex_destroy(&sem->mutex);
20302 + if(ret < 0) return -1;
20307 diff -buNr boehm-gc/include/private/darwin_stop_world.h boehm-gc/include/private/darwin_stop_world.h
20308 --- boehm-gc/include/private/darwin_stop_world.h Wed Dec 31 16:00:00 1969
20309 +++ boehm-gc/include/private/darwin_stop_world.h Sat Sep 13 02:10:15 2003
20311 +#ifndef GC_DARWIN_STOP_WORLD_H
20312 +#define GC_DARWIN_STOP_WORLD_H
20314 +#if !defined(GC_DARWIN_THREADS)
20315 +#error darwin_stop_world.h included without GC_DARWIN_THREADS defined
20318 +#include <mach/mach.h>
20319 +#include <mach/thread_act.h>
20321 +struct thread_stop_info {
20322 + mach_port_t mach_thread;
20326 diff -buNr boehm-gc/include/private/dbg_mlc.h boehm-gc/include/private/dbg_mlc.h
20327 --- boehm-gc/include/private/dbg_mlc.h Mon Feb 11 20:37:57 2002
20328 +++ boehm-gc/include/private/dbg_mlc.h Sat Sep 13 02:10:15 2003
20329 @@ -115,16 +115,24 @@
20331 #ifdef SHORT_DBG_HDRS
20332 # define DEBUG_BYTES (sizeof (oh))
20333 +# define UNCOLLECTABLE_DEBUG_BYTES DEBUG_BYTES
20335 /* Add space for END_FLAG, but use any extra space that was already */
20336 /* added to catch off-the-end pointers. */
20337 -# define DEBUG_BYTES (sizeof (oh) + sizeof (word) - EXTRA_BYTES)
20338 + /* For uncollectable objects, the extra byte is not added. */
20339 +# define UNCOLLECTABLE_DEBUG_BYTES (sizeof (oh) + sizeof (word))
20340 +# define DEBUG_BYTES (UNCOLLECTABLE_DEBUG_BYTES - EXTRA_BYTES)
20342 #define USR_PTR_FROM_BASE(p) ((ptr_t)(p) + sizeof(oh))
20344 /* Round bytes to words without adding extra byte at end. */
20345 #define SIMPLE_ROUNDED_UP_WORDS(n) BYTES_TO_WORDS((n) + WORDS_TO_BYTES(1) - 1)
20347 +/* ADD_CALL_CHAIN stores a (partial) call chain into an object */
20348 +/* header. It may be called with or without the allocation */
20350 +/* PRINT_CALL_CHAIN prints the call chain stored in an object */
20351 +/* to stderr. It requires that we do not hold the lock. */
20352 #ifdef SAVE_CALL_CHAIN
20353 # define ADD_CALL_CHAIN(base, ra) GC_save_callers(((oh *)(base)) -> oh_ci)
20354 # define PRINT_CALL_CHAIN(base) GC_print_callers(((oh *)(base)) -> oh_ci)
20355 diff -buNr boehm-gc/include/private/gc_hdrs.h boehm-gc/include/private/gc_hdrs.h
20356 --- boehm-gc/include/private/gc_hdrs.h Fri Aug 17 18:04:43 2001
20357 +++ boehm-gc/include/private/gc_hdrs.h Sat Sep 13 02:10:15 2003
20359 #define ADVANCE(p, hhdr, source) \
20361 hdr * new_hdr = GC_invalid_header; \
20362 - p = GC_FIND_START(p, hhdr, &new_hdr, (word)source); \
20363 + p = GC_find_start(p, hhdr, &new_hdr); \
20367 diff -buNr boehm-gc/include/private/gc_locks.h boehm-gc/include/private/gc_locks.h
20368 --- boehm-gc/include/private/gc_locks.h Fri Sep 27 13:40:06 2002
20369 +++ boehm-gc/include/private/gc_locks.h Sat Sep 13 02:10:15 2003
20370 @@ -145,23 +145,24 @@
20371 # if defined(POWERPC)
20372 inline static int GC_test_and_set(volatile unsigned int *addr) {
20374 - int temp = 1; // locked value
20375 + int temp = 1; /* locked value */
20377 __asm__ __volatile__(
20378 - "1:\tlwarx %0,0,%3\n" // load and reserve
20379 - "\tcmpwi %0, 0\n" // if load is
20380 - "\tbne 2f\n" // non-zero, return already set
20381 - "\tstwcx. %2,0,%1\n" // else store conditional
20382 - "\tbne- 1b\n" // retry if lost reservation
20383 - "2:\t\n" // oldval is zero if we set
20384 + "1:\tlwarx %0,0,%3\n" /* load and reserve */
20385 + "\tcmpwi %0, 0\n" /* if load is */
20386 + "\tbne 2f\n" /* non-zero, return already set */
20387 + "\tstwcx. %2,0,%1\n" /* else store conditional */
20388 + "\tbne- 1b\n" /* retry if lost reservation */
20389 + "\tsync\n" /* import barrier */
20390 + "2:\t\n" /* oldval is zero if we set */
20391 : "=&r"(oldval), "=p"(addr)
20392 : "r"(temp), "1"(addr)
20394 - return (int)oldval;
20395 + : "cr0","memory");
20398 # define GC_TEST_AND_SET_DEFINED
20399 inline static void GC_clear(volatile unsigned int *addr) {
20400 - __asm__ __volatile__("eieio" ::: "memory");
20401 + __asm__ __volatile__("eieio" : : : "memory");
20404 # define GC_CLEAR_DEFINED
20405 @@ -191,8 +192,11 @@
20408 # define GC_TEST_AND_SET_DEFINED
20409 - /* Should probably also define GC_clear, since it needs */
20410 - /* a memory barrier ?? */
20411 + inline static void GC_clear(volatile unsigned int *addr) {
20412 + __asm__ __volatile__("mb" : : : "memory");
20415 +# define GC_CLEAR_DEFINED
20416 # endif /* ALPHA */
20418 inline static int GC_test_and_set(volatile unsigned int *addr) {
20419 @@ -224,8 +228,16 @@
20421 # endif /* __GNUC__ */
20422 # if (defined(ALPHA) && !defined(__GNUC__))
20423 -# define GC_test_and_set(addr) __cxx_test_and_set_atomic(addr, 1)
20425 + --> We currently assume that if gcc is not used, we are
20426 + --> running under Tru64.
20428 +# include <machine/builtins.h>
20429 +# include <c_asm.h>
20430 +# define GC_test_and_set(addr) __ATOMIC_EXCH_LONG(addr, 1)
20431 # define GC_TEST_AND_SET_DEFINED
20432 +# define GC_clear(addr) { asm("mb"); *(volatile unsigned *)addr = 0; }
20433 +# define GC_CLEAR_DEFINED
20435 # if defined(MSWIN32)
20436 # define GC_test_and_set(addr) InterlockedExchange((LPLONG)addr,1)
20437 @@ -238,7 +250,11 @@
20438 # define GC_TEST_AND_SET_DEFINED
20439 # elif __mips < 3 || !(defined (_ABIN32) || defined(_ABI64)) \
20440 || !defined(_COMPILER_VERSION) || _COMPILER_VERSION < 700
20441 -# define GC_test_and_set(addr) test_and_set(addr, 1)
20443 +# define GC_test_and_set(addr) _test_and_set(addr,1)
20445 +# define GC_test_and_set(addr) test_and_set(addr,1)
20448 # define GC_test_and_set(addr) __test_and_set(addr,1)
20449 # define GC_clear(addr) __lock_release(addr);
20450 @@ -279,7 +295,7 @@
20453 # if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
20454 - && !defined(GC_IRIX_THREADS)
20455 + && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS)
20456 # define NO_THREAD (pthread_t)(-1)
20457 # include <pthread.h>
20458 # if defined(PARALLEL_MARK)
20459 @@ -310,12 +326,12 @@
20462 __asm__ __volatile__("lock; cmpxchgl %2, %0; setz %1"
20463 - : "=m"(*(addr)), "=r"(result)
20464 - : "r" (new_val), "0"(*(addr)), "a"(old) : "memory");
20465 + : "+m"(*(addr)), "=r"(result)
20466 + : "r" (new_val), "a"(old) : "memory");
20467 return (GC_bool) result;
20469 # endif /* !GENERIC_COMPARE_AND_SWAP */
20470 - inline static void GC_memory_write_barrier()
20471 + inline static void GC_memory_barrier()
20473 /* We believe the processor ensures at least processor */
20474 /* consistent ordering. Thus a compiler barrier */
20475 @@ -323,6 +339,37 @@
20476 __asm__ __volatile__("" : : : "memory");
20480 +# if defined(POWERPC)
20481 +# if !defined(GENERIC_COMPARE_AND_SWAP)
20482 + /* Returns TRUE if the comparison succeeded. */
20483 + inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr,
20484 + GC_word old, GC_word new_val)
20486 + int result, dummy;
20487 + __asm__ __volatile__(
20488 + "1:\tlwarx %0,0,%5\n"
20491 + "\tstwcx. %3,0,%2\n"
20498 + : "=&r" (dummy), "=r" (result), "=p" (addr)
20499 + : "r" (new_val), "r" (old), "2"(addr)
20500 + : "cr0","memory");
20501 + return (GC_bool) result;
20503 +# endif /* !GENERIC_COMPARE_AND_SWAP */
20504 + inline static void GC_memory_barrier()
20506 + __asm__ __volatile__("sync" : : : "memory");
20508 +# endif /* POWERPC */
20511 # if !defined(GENERIC_COMPARE_AND_SWAP)
20512 inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr,
20513 @@ -337,12 +384,52 @@
20514 # endif /* !GENERIC_COMPARE_AND_SWAP */
20516 /* Shouldn't be needed; we use volatile stores instead. */
20517 - inline static void GC_memory_write_barrier()
20518 + inline static void GC_memory_barrier()
20520 __asm__ __volatile__("mf" : : : "memory");
20524 +# if defined(ALPHA)
20525 +# if !defined(GENERIC_COMPARE_AND_SWAP)
20526 +# if defined(__GNUC__)
20527 + inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr,
20528 + GC_word old, GC_word new_val)
20530 + unsigned long was_equal;
20531 + unsigned long temp;
20533 + __asm__ __volatile__(
20534 + "1: ldq_l %0,%1\n"
20535 + " cmpeq %0,%4,%2\n"
20542 + :"=&r" (temp), "=m" (*addr), "=&r" (was_equal)
20543 + : "r" (new_val), "Ir" (old)
20545 + return was_equal;
20547 +# else /* !__GNUC__ */
20548 + inline static GC_bool GC_compare_and_exchange(volatile GC_word *addr,
20549 + GC_word old, GC_word new_val)
20551 + return __CMP_STORE_QUAD(addr, old, new_val, addr);
20553 +# endif /* !__GNUC__ */
20554 +# endif /* !GENERIC_COMPARE_AND_SWAP */
20556 + inline static void GC_memory_barrier()
20558 + __asm__ __volatile__("mb" : : : "memory");
20561 +# define GC_memory_barrier() asm("mb")
20562 +# endif /* !__GNUC__ */
20563 +# endif /* ALPHA */
20565 # if !defined(GENERIC_COMPARE_AND_SWAP)
20566 inline static GC_bool GC_compare_and_exchange(volatile C_word *addr,
20567 @@ -434,8 +521,12 @@
20568 { GC_ASSERT(I_HOLD_LOCK()); UNSET_LOCK_HOLDER(); \
20569 pthread_mutex_unlock(&GC_allocate_ml); }
20570 # else /* !GC_ASSERTIONS */
20571 +# if defined(NO_PTHREAD_TRYLOCK)
20572 +# define LOCK() GC_lock();
20573 +# else /* !defined(NO_PTHREAD_TRYLOCK) */
20575 { if (0 != pthread_mutex_trylock(&GC_allocate_ml)) GC_lock(); }
20577 # define UNLOCK() pthread_mutex_unlock(&GC_allocate_ml)
20578 # endif /* !GC_ASSERTIONS */
20579 # endif /* USE_PTHREAD_LOCKS */
20580 @@ -478,11 +569,18 @@
20582 # define EXIT_GC() GC_collecting = 0;
20583 # endif /* GC_IRIX_THREADS */
20584 -# ifdef GC_WIN32_THREADS
20585 +# if defined(GC_WIN32_THREADS)
20586 +# if defined(GC_PTHREADS)
20587 +# include <pthread.h>
20588 + extern pthread_mutex_t GC_allocate_ml;
20589 +# define LOCK() pthread_mutex_lock(&GC_allocate_ml)
20590 +# define UNLOCK() pthread_mutex_unlock(&GC_allocate_ml)
20592 # include <windows.h>
20593 GC_API CRITICAL_SECTION GC_allocate_ml;
20594 # define LOCK() EnterCriticalSection(&GC_allocate_ml);
20595 # define UNLOCK() LeaveCriticalSection(&GC_allocate_ml);
20598 # ifndef SET_LOCK_HOLDER
20599 # define SET_LOCK_HOLDER()
20600 diff -buNr boehm-gc/include/private/gc_pmark.h boehm-gc/include/private/gc_pmark.h
20601 --- boehm-gc/include/private/gc_pmark.h Mon Feb 11 20:37:57 2002
20602 +++ boehm-gc/include/private/gc_pmark.h Sat Sep 13 02:10:15 2003
20603 @@ -137,7 +137,7 @@
20605 # ifdef PRINT_BLACK_LIST
20606 ptr_t GC_find_start(ptr_t current, hdr *hhdr, hdr **new_hdr_p,
20610 ptr_t GC_find_start(ptr_t current, hdr *hhdr, hdr **new_hdr_p);
20612 @@ -145,7 +145,7 @@
20613 ptr_t GC_find_start();
20616 -mse *GC_signal_mark_stack_overflow(mse *msp);
20617 +mse * GC_signal_mark_stack_overflow GC_PROTO((mse *msp));
20619 # ifdef GATHERSTATS
20620 # define ADD_TO_ATOMIC(sz) GC_atomic_in_use += (sz)
20621 @@ -174,14 +174,6 @@
20625 -#ifdef PRINT_BLACK_LIST
20626 -# define GC_FIND_START(current, hhdr, new_hdr_p, source) \
20627 - GC_find_start(current, hhdr, new_hdr_p, source)
20629 -# define GC_FIND_START(current, hhdr, new_hdr_p, source) \
20630 - GC_find_start(current, hhdr, new_hdr_p)
20633 /* Push the contents of current onto the mark stack if it is a valid */
20634 /* ptr to a currently unmarked object. Mark it. */
20635 /* If we assumed a standard-conforming compiler, we could probably */
20636 @@ -195,8 +187,7 @@
20637 GET_HDR(my_current, my_hhdr); \
20638 if (IS_FORWARDING_ADDR_OR_NIL(my_hhdr)) { \
20639 hdr * new_hdr = GC_invalid_header; \
20640 - my_current = GC_FIND_START(my_current, my_hhdr, \
20641 - &new_hdr, (word)source); \
20642 + my_current = GC_find_start(my_current, my_hhdr, &new_hdr); \
20643 my_hhdr = new_hdr; \
20645 PUSH_CONTENTS_HDR(my_current, mark_stack_top, mark_stack_limit, \
20646 @@ -290,21 +281,39 @@
20649 * Push a single value onto mark stack. Mark from the object pointed to by p.
20650 + * Invoke FIXUP_POINTER(p) before any further processing.
20651 * P is considered valid even if it is an interior pointer.
20652 * Previously marked objects are not pushed. Hence we make progress even
20653 * if the mark stack overflows.
20656 +# if NEED_FIXUP_POINTER
20657 + /* Try both the raw version and the fixed up one. */
20658 # define GC_PUSH_ONE_STACK(p, source) \
20659 if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \
20660 && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \
20661 PUSH_ONE_CHECKED_STACK(p, source); \
20663 + FIXUP_POINTER(p); \
20664 + if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \
20665 + && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \
20666 + PUSH_ONE_CHECKED_STACK(p, source); \
20668 +# else /* !NEED_FIXUP_POINTER */
20669 +# define GC_PUSH_ONE_STACK(p, source) \
20670 + if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \
20671 + && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \
20672 + PUSH_ONE_CHECKED_STACK(p, source); \
20678 * As above, but interior pointer recognition as for
20679 * normal for heap pointers.
20681 # define GC_PUSH_ONE_HEAP(p,source) \
20682 + FIXUP_POINTER(p); \
20683 if ((ptr_t)(p) >= (ptr_t)GC_least_plausible_heap_addr \
20684 && (ptr_t)(p) < (ptr_t)GC_greatest_plausible_heap_addr) { \
20685 GC_mark_stack_top = GC_mark_and_push( \
20686 diff -buNr boehm-gc/include/private/gc_priv.h boehm-gc/include/private/gc_priv.h
20687 --- boehm-gc/include/private/gc_priv.h Tue Mar 4 09:56:49 2003
20688 +++ boehm-gc/include/private/gc_priv.h Sat Sep 13 02:10:15 2003
20694 +# include <sys/types.h>
20695 +# include <sys/time.h>
20696 +# include <sys/resource.h>
20700 # include <sys/types.h>
20701 # include <sys/time.h>
20702 @@ -210,7 +216,6 @@
20703 # define ALIGN_DOUBLE
20707 /* ALIGN_DOUBLE requires MERGE_SIZES at present. */
20708 # if defined(ALIGN_DOUBLE) && !defined(MERGE_SIZES)
20709 # define MERGE_SIZES
20710 @@ -347,7 +352,8 @@
20711 # include <string.h>
20712 # define BCOPY_EXISTS
20714 -# if defined(MACOSX)
20715 +# if defined(DARWIN)
20716 +# include <string.h>
20717 # define BCOPY_EXISTS
20720 @@ -360,68 +366,6 @@
20721 # define BZERO(x,n) bzero((char *)(x),(int)(n))
20724 -/* HBLKSIZE aligned allocation. 0 is taken to mean failure */
20725 -/* space is assumed to be cleared. */
20726 -/* In the case os USE_MMAP, the argument must also be a */
20727 -/* physical page size. */
20728 -/* GET_MEM is currently not assumed to retrieve 0 filled space, */
20729 -/* though we should perhaps take advantage of the case in which */
20731 -struct hblk; /* See below. */
20733 - char * real_malloc();
20734 -# define GET_MEM(bytes) HBLKPTR(real_malloc((size_t)bytes + GC_page_size) \
20735 - + GC_page_size-1)
20738 - void * os2_alloc(size_t bytes);
20739 -# define GET_MEM(bytes) HBLKPTR((ptr_t)os2_alloc((size_t)bytes \
20740 - + GC_page_size) \
20741 - + GC_page_size-1)
20743 -# if defined(NEXT) || defined(MACOSX) || defined(DOS4GW) || \
20744 - (defined(AMIGA) && !defined(GC_AMIGA_FASTALLOC)) || \
20745 - (defined(SUNOS5) && !defined(USE_MMAP))
20746 -# define GET_MEM(bytes) HBLKPTR((size_t) \
20747 - calloc(1, (size_t)bytes + GC_page_size) \
20748 - + GC_page_size-1)
20751 - extern ptr_t GC_win32_get_mem();
20752 -# define GET_MEM(bytes) (struct hblk *)GC_win32_get_mem(bytes)
20755 -# if defined(USE_TEMPORARY_MEMORY)
20756 - extern Ptr GC_MacTemporaryNewPtr(size_t size,
20757 - Boolean clearMemory);
20758 -# define GET_MEM(bytes) HBLKPTR( \
20759 - GC_MacTemporaryNewPtr(bytes + GC_page_size, true) \
20760 - + GC_page_size-1)
20762 -# define GET_MEM(bytes) HBLKPTR( \
20763 - NewPtrClear(bytes + GC_page_size) + GC_page_size-1)
20767 - extern ptr_t GC_wince_get_mem();
20768 -# define GET_MEM(bytes) (struct hblk *)GC_wince_get_mem(bytes)
20770 -# if defined(AMIGA) && defined(GC_AMIGA_FASTALLOC)
20771 - extern void *GC_amiga_get_mem(size_t size);
20772 - define GET_MEM(bytes) HBLKPTR((size_t) \
20773 - GC_amiga_get_mem((size_t)bytes + GC_page_size) \
20774 - + GC_page_size-1)
20776 - extern ptr_t GC_unix_get_mem();
20777 -# define GET_MEM(bytes) (struct hblk *)GC_unix_get_mem(bytes)
20786 /* Delay any interrupts or signals that may abort this thread. Data */
20787 /* structures are in a consistent state outside this pair of calls. */
20788 /* ANSI C allows both to be empty (though the standard isn't very */
20789 @@ -486,7 +430,7 @@
20790 # ifdef SMALL_CONFIG
20791 # define ABORT(msg) abort();
20793 - GC_API void GC_abort();
20794 + GC_API void GC_abort GC_PROTO((GC_CONST char * msg));
20795 # define ABORT(msg) GC_abort(msg);
20798 @@ -646,9 +590,10 @@
20801 # ifdef LARGE_CONFIG
20802 -# define LOG_PHT_ENTRIES 19 /* Collisions likely at 512K blocks, */
20803 - /* which is >= 2GB. Each table takes */
20805 +# define LOG_PHT_ENTRIES 20 /* Collisions likely at 1M blocks, */
20806 + /* which is >= 4GB. Each table takes */
20807 + /* 128KB, some of which may never be */
20810 # ifdef SMALL_CONFIG
20811 # define LOG_PHT_ENTRIES 14 /* Collisions are likely if heap grows */
20812 @@ -656,7 +601,7 @@
20813 /* Each hash table occupies 2K bytes. */
20814 # else /* default "medium" configuration */
20815 # define LOG_PHT_ENTRIES 16 /* Collisions are likely if heap grows */
20816 - /* to more than 16K hblks >= 256MB. */
20817 + /* to more than 64K hblks >= 256MB. */
20818 /* Each hash table occupies 8K bytes. */
20821 @@ -897,6 +842,10 @@
20823 /* Number of explicitly deallocated words of memory */
20824 /* since last collection. */
20825 + word _finalizer_mem_freed;
20826 + /* Words of memory explicitly deallocated while */
20827 + /* finalizers were running. Used to approximate mem. */
20828 + /* explicitly deallocated by finalizers. */
20829 ptr_t _scratch_end_ptr;
20830 ptr_t _scratch_last_end_ptr;
20831 /* Used by headers.c, and can easily appear to point to */
20832 @@ -957,7 +906,7 @@
20833 /* OFFSET_TOO_BIG if the value j would be too */
20834 /* large to fit in the entry. (Note that the */
20835 /* size of these entries matters, both for */
20836 - /* space consumption and for cache utilization. */
20837 + /* space consumption and for cache utilization.) */
20838 # define OFFSET_TOO_BIG 0xfe
20839 # define OBJ_INVALID 0xff
20840 # define MAP_ENTRY(map, bytes) (map)[bytes]
20841 @@ -1067,6 +1016,7 @@
20842 # define GC_words_finalized GC_arrays._words_finalized
20843 # define GC_non_gc_bytes_at_gc GC_arrays._non_gc_bytes_at_gc
20844 # define GC_mem_freed GC_arrays._mem_freed
20845 +# define GC_finalizer_mem_freed GC_arrays._finalizer_mem_freed
20846 # define GC_scratch_end_ptr GC_arrays._scratch_end_ptr
20847 # define GC_scratch_last_end_ptr GC_arrays._scratch_last_end_ptr
20848 # define GC_mark_procs GC_arrays._mark_procs
20849 @@ -1201,17 +1151,19 @@
20850 /* header structure associated with */
20853 -extern GC_bool GC_is_initialized; /* GC_init() has been run. */
20855 extern GC_bool GC_objects_are_marked; /* There are marked objects in */
20858 #ifndef SMALL_CONFIG
20859 extern GC_bool GC_incremental;
20860 /* Using incremental/generational collection. */
20861 +# define TRUE_INCREMENTAL \
20862 + (GC_incremental && GC_time_limit != GC_TIME_UNLIMITED)
20863 + /* True incremental, not just generational, mode */
20865 # define GC_incremental FALSE
20866 /* Hopefully allow optimizer to remove some code. */
20867 +# define TRUE_INCREMENTAL FALSE
20870 extern GC_bool GC_dirty_maintained;
20871 @@ -1229,6 +1181,10 @@
20872 extern long GC_large_alloc_warn_suppressed;
20873 /* Number of warnings suppressed so far. */
20876 + extern GC_bool GC_world_stopped;
20881 # define abs(x) ((x) < 0? (-(x)) : (x))
20882 @@ -1452,6 +1408,7 @@
20883 /* Set all mark bits associated with */
20885 void GC_add_roots_inner GC_PROTO((char * b, char * e, GC_bool tmp));
20886 +void GC_remove_roots_inner GC_PROTO((char * b, char * e));
20887 GC_bool GC_is_static_root GC_PROTO((ptr_t p));
20888 /* Is the address p in one of the registered static */
20889 /* root sections? */
20890 @@ -1624,6 +1581,8 @@
20891 /* until the blocks are available or */
20892 /* until it fails by returning FALSE. */
20894 +extern GC_bool GC_is_initialized; /* GC_init() has been run. */
20896 #if defined(MSWIN32) || defined(MSWINCE)
20897 void GC_deinit GC_PROTO((void));
20898 /* Free any resources allocated by */
20899 @@ -1666,6 +1625,8 @@
20900 /* free list nonempty, and return its */
20903 +void GC_free_inner(GC_PTR p);
20905 void GC_init_headers GC_PROTO((void));
20906 struct hblkhdr * GC_install_header GC_PROTO((struct hblk *h));
20907 /* Install a header for block h. */
20908 @@ -1695,6 +1656,12 @@
20909 /* finalizers to be run, and we haven't called */
20910 /* this procedure yet this GC cycle. */
20912 +GC_API GC_PTR GC_make_closure GC_PROTO((GC_finalization_proc fn, GC_PTR data));
20913 +GC_API void GC_debug_invoke_finalizer GC_PROTO((GC_PTR obj, GC_PTR data));
20914 + /* Auxiliary fns to make finalization work */
20915 + /* correctly with displaced pointers introduced */
20916 + /* by the debugging allocators. */
20918 void GC_add_to_heap GC_PROTO((struct hblk *p, word bytes));
20919 /* Add a HBLKSIZE aligned chunk to the heap. */
20921 @@ -1704,16 +1671,36 @@
20922 /* description of the object to stderr. */
20923 extern void (*GC_check_heap) GC_PROTO((void));
20924 /* Check that all objects in the heap with */
20925 - /* debugging info are intact. Print */
20926 - /* descriptions of any that are not. */
20927 + /* debugging info are intact. */
20928 + /* Add any that are not to GC_smashed list. */
20929 +extern void (*GC_print_all_smashed) GC_PROTO((void));
20930 + /* Print GC_smashed if it's not empty. */
20931 + /* Clear GC_smashed list. */
20932 +extern void GC_print_all_errors GC_PROTO((void));
20933 + /* Print smashed and leaked objects, if any. */
20934 + /* Clear the lists of such objects. */
20935 extern void (*GC_print_heap_obj) GC_PROTO((ptr_t p));
20936 /* If possible print s followed by a more */
20937 /* detailed description of the object */
20938 /* referred to by p. */
20939 +#if defined(LINUX) && defined(__ELF__) && !defined(SMALL_CONFIG)
20940 + void GC_print_address_map GC_PROTO((void));
20941 + /* Print an address map of the process. */
20944 +extern GC_bool GC_have_errors; /* We saw a smashed or leaked object. */
20945 + /* Call error printing routine */
20946 + /* occasionally. */
20947 extern GC_bool GC_print_stats; /* Produce at least some logging output */
20948 /* Set from environment variable. */
20950 +#ifndef NO_DEBUGGING
20951 + extern GC_bool GC_dump_regularly; /* Generate regular debugging dumps. */
20952 +# define COND_DUMP if (GC_dump_regularly) GC_dump();
20954 +# define COND_DUMP
20957 /* Macros used for collector internal allocation. */
20958 /* These assume the collector lock is held. */
20959 #ifdef DBG_HDRS_ALL
20960 @@ -1785,6 +1772,7 @@
20961 void GC_print_hblkfreelist GC_PROTO((void));
20962 void GC_print_heap_sects GC_PROTO((void));
20963 void GC_print_static_roots GC_PROTO((void));
20964 +void GC_print_finalization_stats GC_PROTO((void));
20965 void GC_dump GC_PROTO((void));
20967 #ifdef KEEP_BACK_PTRS
20968 @@ -1866,6 +1854,10 @@
20969 # define GC_ASSERT(expr)
20972 +/* Check a compile time assertion at compile time. The error */
20973 +/* message for failure is a bit baroque, but ... */
20974 +# define GC_STATIC_ASSERT(expr) sizeof(char[(expr)? 1 : -1])
20976 # if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
20977 /* We need additional synchronization facilities from the thread */
20978 /* support. We believe these are less performance critical */
20979 @@ -1911,7 +1903,7 @@
20980 /* in Linux glibc, but it's not exported.) Thus we continue to use */
20981 /* the same hard-coded signals we've always used. */
20982 # if !defined(SIG_SUSPEND)
20983 -# if defined(GC_LINUX_THREADS)
20984 +# if defined(GC_LINUX_THREADS) || defined(GC_DGUX386_THREADS)
20985 # if defined(SPARC) && !defined(SIGPWR)
20986 /* SPARC/Linux doesn't properly define SIGPWR in <signal.h>.
20987 * It is aliased to SIGLOST in asm/signal.h, though. */
20988 diff -buNr boehm-gc/include/private/gcconfig.h boehm-gc/include/private/gcconfig.h
20989 --- boehm-gc/include/private/gcconfig.h Wed Apr 9 17:08:01 2003
20990 +++ boehm-gc/include/private/gcconfig.h Sat Sep 13 02:10:15 2003
20991 @@ -14,10 +14,24 @@
20992 * modified is included with the above copyright notice.
20996 + * This header is private to the gc. It is almost always included from
20997 + * gc_priv.h. However it is possible to include it by itself if just the
20998 + * configuration macros are needed. In that
20999 + * case, a few declarations relying on types declared in gc_priv.h will be
21005 # define GCCONFIG_H
21007 +# ifndef GC_PRIVATE_H
21008 + /* Fake ptr_t declaration, just to avoid compilation errors. */
21009 + /* This avoids many instances if "ifndef GC_PRIVATE_H" below. */
21010 + typedef struct GC_undefined_struct * ptr_t;
21013 /* Machine dependent parameters. Some tuning parameters can be found */
21014 /* near the top of gc_private.h. */
21019 /* Determine the machine type: */
21020 -# if defined(__arm__) || defined(__thumb__)
21021 +# if defined(__XSCALE__)
21023 # if !defined(LINUX)
21026 # if defined(nec_ews) || defined(_nec_ews)
21029 -# if !defined(LINUX) && !defined(EWS4800) && !defined(NETBSD)
21030 -# if defined(ultrix) || defined(__ultrix)
21031 +# if !defined(LINUX) && !defined(EWS4800)
21032 +# if defined(ultrix) || defined(__ultrix) || defined(__NetBSD__)
21035 # if defined(_SYSTYPE_SVR4) || defined(SYSTYPE_SVR4) \
21036 @@ -107,6 +121,16 @@
21039 # endif /* !LINUX */
21040 +# if defined(__NetBSD__) && defined(__MIPSEL__)
21043 +# define mach_type_known
21045 +# if defined(DGUX) && (defined(i386) || defined(__i386__))
21047 +# ifndef _USING_DGUX
21048 +# define _USING_DGUX
21050 # define mach_type_known
21052 # if defined(sequent) && (defined(i386) || defined(__i386__))
21053 @@ -198,6 +222,10 @@
21055 # define mach_type_known
21057 +# if defined(LINUX) && defined(__arm__)
21059 +# define mach_type_known
21061 # if defined(LINUX) && (defined(powerpc) || defined(__powerpc__))
21063 # define mach_type_known
21064 @@ -237,19 +265,19 @@
21066 # define mach_type_known
21068 -# if defined(__MWERKS__) && defined(__powerc)
21069 +# if defined(__MWERKS__) && defined(__powerc) && !defined(__MACH__)
21072 # define mach_type_known
21074 # if defined(macosx) || \
21075 defined(__APPLE__) && defined(__MACH__) && defined(__ppc__)
21079 # define mach_type_known
21081 # if defined(__APPLE__) && defined(__MACH__) && defined(__i386__)
21085 --> Not really supported, but at least we recognize it.
21087 @@ -291,7 +319,7 @@
21089 # define mach_type_known
21091 -# if defined(DGUX)
21092 +# if defined(DGUX) && defined(m88k)
21095 # define mach_type_known
21096 @@ -425,8 +453,6 @@
21097 /* IA64 ==> Intel IPF */
21098 /* (e.g. Itanium) */
21099 /* (LINUX and HPUX) */
21100 - /* IA64_32 ==> IA64 w/32 bit ABI */
21102 /* SH ==> Hitachi SuperH */
21103 /* (LINUX & MSWINCE) */
21104 /* X86_64 ==> AMD x86-64 */
21105 @@ -450,15 +476,17 @@
21106 * defining it to be 1 will always work, but perform poorly.
21108 * DATASTART is the beginning of the data segment.
21109 - * On UNIX systems, the collector will scan the area between DATASTART
21110 + * On some platforms SEARCH_FOR_DATA_START is defined.
21111 + * SEARCH_FOR_DATASTART will cause GC_data_start to
21112 + * be set to an address determined by accessing data backwards from _end
21113 + * until an unmapped page is found. DATASTART will be defined to be
21115 + * On UNIX-like systems, the collector will scan the area between DATASTART
21116 * and DATAEND for root pointers.
21118 * DATAEND, if not `end' where `end' is defined as ``extern int end[];''.
21119 * RTH suggests gaining access to linker script synth'd values with
21120 * this idiom instead of `&end' where `end' is defined as ``extern int end;'' .
21121 - * Otherwise, ``GCC will assume these are in .sdata/.sbss'' and it will, e.g.,
21122 - * cause failures on alpha*-*-* with ``-msmall-data or -fpic'' or mips-*-*
21123 - * without any special options.
21125 * ALIGN_DOUBLE of GC_malloc should return blocks aligned to twice
21126 * the pointer size.
21127 @@ -470,8 +498,13 @@
21128 * 1) define STACK_GROWS_UP if the stack grows toward higher addresses, and
21129 * 2) define exactly one of
21130 * STACKBOTTOM (should be defined to be an expression)
21131 + * LINUX_STACKBOTTOM
21134 + * If STACKBOTTOM is defined, then it's value will be used directly as the
21135 + * stack base. If LINUX_STACKBOTTOM is defined, then it will be determined
21136 + * with a method appropriate for most Linux systems. Currently we look
21137 + * first for __libc_stack_end, and if that fails read it from /proc.
21138 * If either of the last two macros are defined, then STACKBOTTOM is computed
21139 * during collector startup using one of the following two heuristics:
21140 * HEURISTIC1: Take an address inside GC_init's frame, and round it up to
21141 @@ -536,6 +569,9 @@
21142 * An architecture may also define CLEAR_DOUBLE(x) to be a fast way to
21143 * clear the two words at GC_malloc-aligned address x. By default,
21144 * word stores of 0 are used instead.
21146 + * HEAP_START may be defined as the initial address hint for mmap-based
21150 /* If we are using a recent version of gcc, we can use __builtin_unwind_init()
21151 @@ -571,7 +607,7 @@
21152 # define DYNAMIC_LOADING
21153 # include <features.h>
21154 # if defined(__GLIBC__)&& __GLIBC__>=2
21155 -# define LINUX_DATA_START
21156 +# define SEARCH_FOR_DATA_START
21157 # else /* !GLIBC2 */
21158 extern char **__environ;
21159 # define DATASTART ((ptr_t)(&__environ))
21160 @@ -669,23 +705,42 @@
21161 # define ALIGNMENT 4 /* Guess. Can someone verify? */
21162 /* This was 2, but that didn't sound right. */
21163 # define OS_TYPE "LINUX"
21164 -# define DYNAMIC_LOADING
21165 + /* HEURISTIC1 has been reliably reported to fail for a 32-bit */
21166 + /* executable on a 64 bit kernel. */
21167 # define LINUX_STACKBOTTOM
21168 - /* Stack usually starts at 0x80000000 */
21169 -# define LINUX_DATA_START
21170 +# define DYNAMIC_LOADING
21171 +# define SEARCH_FOR_DATA_START
21173 # define DATAEND (_end)
21177 /* There are reasons to suspect this may not be reliable. */
21178 # define ALIGNMENT 4
21179 -# define OS_TYPE "MACOSX"
21180 +# define OS_TYPE "DARWIN"
21181 +# define DYNAMIC_LOADING
21182 + /* XXX: see get_end(3), get_etext() and get_end() should not be used.
21183 + These aren't used when dyld support is enabled (it is by default) */
21184 # define DATASTART ((ptr_t) get_etext())
21185 +# define DATAEND ((ptr_t) get_end())
21186 # define STACKBOTTOM ((ptr_t) 0xc0000000)
21187 -# define DATAEND /* not needed */
21188 -# undef MPROTECT_VDB
21190 +# define USE_MMAP_ANON
21191 +# define USE_ASM_PUSH_REGS
21192 + /* This is potentially buggy. It needs more testing. See the comments in
21194 +# define MPROTECT_VDB
21195 # include <unistd.h>
21196 # define GETPAGESIZE() getpagesize()
21197 +# if defined(USE_PPC_PREFETCH) && defined(__GNUC__)
21198 + /* The performance impact of prefetches is untested */
21199 +# define PREFETCH(x) \
21200 + __asm__ __volatile__ ("dcbt 0,%0" : : "r" ((const void *) (x)))
21201 +# define PREFETCH_FOR_WRITE(x) \
21202 + __asm__ __volatile__ ("dcbtst 0,%0" : : "r" ((const void *) (x)))
21204 + /* There seems to be some issues with trylock hanging on darwin. This
21205 + should be looked into some more */
21206 +# define NO_PTHREAD_TRYLOCK
21209 # define ALIGNMENT 4
21210 @@ -746,8 +801,8 @@
21211 # define OS_TYPE "SUNOS5"
21212 extern int _etext[];
21214 - extern char * GC_SysVGetDataStart();
21215 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, _etext)
21216 + extern ptr_t GC_SysVGetDataStart();
21217 +# define DATASTART GC_SysVGetDataStart(0x10000, _etext)
21218 # define DATAEND (_end)
21219 # if !defined(USE_MMAP) && defined(REDIRECT_MALLOC)
21221 @@ -801,9 +856,9 @@
21224 # define OS_TYPE "DRSNX"
21225 - extern char * GC_SysVGetDataStart();
21226 + extern ptr_t GC_SysVGetDataStart();
21227 extern int etext[];
21228 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, etext)
21229 +# define DATASTART GC_SysVGetDataStart(0x10000, etext)
21230 # define MPROTECT_VDB
21231 # define STACKBOTTOM ((ptr_t) 0xdfff0000)
21232 # define DYNAMIC_LOADING
21233 @@ -819,13 +874,14 @@
21234 extern int _etext[];
21235 # define DATAEND (_end)
21237 + extern ptr_t GC_SysVGetDataStart();
21239 +# define DATASTART GC_SysVGetDataStart(0x100000, _etext)
21240 /* libc_stack_end is not set reliably for sparc64 */
21241 -# define STACKBOTTOM ((ptr_t) 0x80000000000)
21242 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x100000, _etext)
21243 +# define STACKBOTTOM ((ptr_t) 0x80000000000ULL)
21245 +# define DATASTART GC_SysVGetDataStart(0x10000, _etext)
21246 # define LINUX_STACKBOTTOM
21247 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, _etext)
21251 @@ -876,7 +932,7 @@
21253 # define OS_TYPE "SUNOS5"
21254 extern int _etext[], _end[];
21255 - extern char * GC_SysVGetDataStart();
21256 + extern ptr_t GC_SysVGetDataStart();
21257 # define DATASTART GC_SysVGetDataStart(0x1000, _etext)
21258 # define DATAEND (_end)
21259 /* # define STACKBOTTOM ((ptr_t)(_start)) worked through 2.7, */
21260 @@ -921,6 +977,28 @@
21261 # define DYNAMIC_LOADING
21262 # define ELF_CLASS ELFCLASS32
21265 +# define OS_TYPE "DGUX"
21266 + extern int _etext, _end;
21267 + extern ptr_t GC_SysVGetDataStart();
21268 +# define DATASTART GC_SysVGetDataStart(0x1000, &_etext)
21269 +# define DATAEND (&_end)
21270 +# define STACK_GROWS_DOWN
21271 +# define HEURISTIC2
21272 +# include <unistd.h>
21273 +# define GETPAGESIZE() sysconf(_SC_PAGESIZE)
21274 +# define DYNAMIC_LOADING
21277 +# endif /* USE_MMAP */
21278 +# define MAP_FAILED (void *) -1
21280 +# define HEAP_START (ptr_t)0x40000000
21281 +# else /* USE_MMAP */
21282 +# define HEAP_START DATAEND
21283 +# endif /* USE_MMAP */
21284 +# endif /* DGUX */
21288 /* The Intel compiler doesn't like inline assembly */
21289 @@ -944,6 +1022,9 @@
21290 /* possibly because Linux threads is itself a malloc client */
21291 /* and can't deal with the signals. */
21293 +# define HEAP_START 0x1000
21294 + /* This encourages mmap to give us low addresses, */
21295 + /* thus allowing the heap to grow to ~3GB */
21297 # define DYNAMIC_LOADING
21298 # ifdef UNDEFINED /* includes ro data */
21299 @@ -952,7 +1033,7 @@
21301 # include <features.h>
21302 # if defined(__GLIBC__) && __GLIBC__ >= 2
21303 -# define LINUX_DATA_START
21304 +# define SEARCH_FOR_DATA_START
21306 extern char **__environ;
21307 # define DATASTART ((ptr_t)(&__environ))
21308 @@ -1061,16 +1142,9 @@
21310 # define DYNAMIC_LOADING
21312 -/* Handle unmapped hole i386*-*-freebsd[45]* may put between etext and edata. */
21313 extern char etext[];
21314 - extern char edata[];
21315 - extern char end[];
21316 -# define NEED_FIND_LIMIT
21317 -# define DATASTART ((ptr_t)(etext))
21318 -# define MIN(x,y) ((x) < (y) ? (x) : (y))
21319 -# define DATAEND (MIN (GC_find_limit (DATASTART, TRUE), DATASTART2))
21320 -# define DATASTART2 ((ptr_t)(edata))
21321 -# define DATAEND2 ((ptr_t)(end))
21322 + extern char * GC_FreeBSDGetDataStart();
21323 +# define DATASTART GC_FreeBSDGetDataStart(0x1000, &etext)
21326 # define OS_TYPE "NETBSD"
21327 @@ -1149,7 +1223,11 @@
21328 # define DATASTART ((ptr_t)(__data_start))
21329 # define ALIGNMENT 4
21330 # define USE_GENERIC_PUSH_REGS
21331 +# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2 || __GLIBC__ > 2
21332 # define LINUX_STACKBOTTOM
21334 +# define STACKBOTTOM 0x80000000
21336 # endif /* Linux */
21338 # define HEURISTIC2
21339 @@ -1222,15 +1300,21 @@
21340 # define DATAEND /* not needed */
21342 # if defined(NETBSD)
21343 -# define OS_TYPE "NETBSD"
21344 + /* This also checked for __MIPSEL__ . Why? NETBSD recognition */
21345 + /* should be handled at the top of the file. */
21346 # define ALIGNMENT 4
21347 +# define OS_TYPE "NETBSD"
21348 # define HEURISTIC2
21349 # define USE_GENERIC_PUSH_REGS
21350 - extern int _fdata[];
21351 -# define DATASTART ((ptr_t)(_fdata))
21352 - extern int _end[];
21353 -# define DATAEND ((ptr_t)(_end))
21355 + extern int etext[];
21356 +# define DATASTART GC_data_start
21357 +# define NEED_FIND_LIMIT
21358 # define DYNAMIC_LOADING
21360 +# define DATASTART ((ptr_t) 0x10000000)
21361 +# define STACKBOTTOM ((ptr_t) 0x7ffff000)
21362 +# endif /* _ELF_ */
21366 @@ -1239,15 +1323,16 @@
21368 # define ALIGNMENT 8
21369 # define CPP_WORDSZ 64
21370 +# define STACKBOTTOM 0x1000000000000000
21372 # define ALIGNMENT 4
21373 # define CPP_WORDSZ 32
21374 +# define STACKBOTTOM ((ptr_t)((ulong)&errno))
21376 extern int _data[], _end[];
21377 # define DATASTART ((ptr_t)((ulong)_data))
21378 # define DATAEND ((ptr_t)((ulong)_end))
21380 -# define STACKBOTTOM ((ptr_t)((ulong)&errno))
21381 # define USE_GENERIC_PUSH_REGS
21382 # define DYNAMIC_LOADING
21383 /* For really old versions of AIX, this may have to be removed. */
21384 @@ -1311,15 +1396,23 @@
21385 # define OS_TYPE "LINUX"
21386 # define LINUX_STACKBOTTOM
21387 # define DYNAMIC_LOADING
21388 -# define LINUX_DATA_START
21389 +# define SEARCH_FOR_DATA_START
21391 -# define DATAEND (_end)
21392 +# define DATAEND (&_end)
21393 # endif /* LINUX */
21394 # endif /* HP_PA */
21397 # define MACH_TYPE "ALPHA"
21398 # define ALIGNMENT 8
21399 +# define CPP_WORDSZ 64
21401 +# define USE_GENERIC_PUSH_REGS
21402 + /* Gcc and probably the DEC/Compaq compiler spill pointers to preserved */
21403 + /* fp registers in some cases when the target is a 21264. The assembly */
21404 + /* code doesn't handle that yet, and version dependencies make that a */
21405 + /* bit tricky. Do the easy thing for now. */
21408 # define OS_TYPE "NETBSD"
21409 # define HEURISTIC2
21410 @@ -1327,13 +1420,11 @@
21411 # define ELFCLASS32 32
21412 # define ELFCLASS64 64
21413 # define ELF_CLASS ELFCLASS64
21414 -# define CPP_WORDSZ 64
21415 # define DYNAMIC_LOADING
21418 # define OS_TYPE "OPENBSD"
21419 # define HEURISTIC2
21420 -# define CPP_WORDSZ 64
21421 # ifdef __ELF__ /* since OpenBSD/Alpha 2.9 */
21422 # define DATASTART GC_data_start
21423 # define ELFCLASS32 32
21424 @@ -1357,17 +1448,16 @@
21425 extern char edata[];
21427 # define NEED_FIND_LIMIT
21428 -# define DATASTART ((ptr_t)(etext))
21429 +# define DATASTART ((ptr_t)(&etext))
21430 # define DATAEND (GC_find_limit (DATASTART, TRUE))
21431 -# define DATASTART2 ((ptr_t)(edata))
21432 -# define DATAEND2 ((ptr_t)(end))
21433 -# define CPP_WORDSZ 64
21434 +# define DATASTART2 ((ptr_t)(&edata))
21435 +# define DATAEND2 ((ptr_t)(&end))
21438 # define OS_TYPE "OSF1"
21439 # define DATASTART ((ptr_t) 0x140000000)
21441 -# define DATAEND ((ptr_t) _end)
21442 +# define DATAEND ((ptr_t) &_end)
21443 extern char ** environ;
21444 /* round up from the value of environ to the nearest page boundary */
21445 /* Probably breaks if putenv is called before collector */
21446 @@ -1380,17 +1470,17 @@
21447 /* This is currently unused, since we disabled HEURISTIC2 */
21448 extern int __start[];
21449 # define HEURISTIC2_LIMIT ((ptr_t)((word)(__start) & ~(getpagesize()-1)))
21450 -# define CPP_WORDSZ 64
21451 +# ifndef GC_OSF1_THREADS
21452 + /* Unresolved signal issues with threads. */
21453 # define MPROTECT_VDB
21455 # define DYNAMIC_LOADING
21458 # define OS_TYPE "LINUX"
21459 -# define CPP_WORDSZ 64
21460 # define STACKBOTTOM ((ptr_t) 0x120000000)
21462 # define SEARCH_FOR_DATA_START
21463 -# define DATASTART GC_data_start
21464 # define DYNAMIC_LOADING
21466 # define DATASTART ((ptr_t) 0x140000000)
21467 @@ -1468,7 +1558,6 @@
21468 extern char * GC_register_stackbottom;
21469 # define BACKING_STORE_BASE ((ptr_t)GC_register_stackbottom)
21470 # define SEARCH_FOR_DATA_START
21471 -# define DATASTART GC_data_start
21473 # define DYNAMIC_LOADING
21475 @@ -1502,13 +1591,15 @@
21478 # define OS_TYPE "DGUX"
21479 - extern char * GC_SysVGetDataStart();
21480 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, etext)
21481 + extern ptr_t GC_SysVGetDataStart();
21482 +# define DATASTART GC_SysVGetDataStart(0x10000, etext)
21484 # define STACKBOTTOM ((char*)0xf0000000) /* determined empirically */
21488 + /* If this still works, and if anyone cares, this should probably */
21489 + /* be moved to the S390 category. */
21490 # define MACH_TYPE "S370"
21491 # define ALIGNMENT 4 /* Required by hardware */
21492 # define USE_GENERIC_PUSH_REGS
21493 @@ -1517,8 +1608,8 @@
21494 extern int etext[];
21495 extern int _etext[];
21497 - extern char * GC_SysVGetDataStart();
21498 -# define DATASTART (ptr_t)GC_SysVGetDataStart(0x10000, _etext)
21499 + extern ptr_t GC_SysVGetDataStart();
21500 +# define DATASTART GC_SysVGetDataStart(0x10000, _etext)
21501 # define DATAEND (_end)
21502 # define HEURISTIC2
21504 @@ -1576,7 +1667,7 @@
21505 # define DYNAMIC_LOADING
21506 # include <features.h>
21507 # if defined(__GLIBC__) && __GLIBC__ >= 2
21508 -# define LINUX_DATA_START
21509 +# define SEARCH_FOR_DATA_START
21511 extern char **__environ;
21512 # define DATASTART ((ptr_t)(&__environ))
21513 @@ -1623,7 +1714,7 @@
21514 # define STACKBOTTOM ((ptr_t) 0x7c000000)
21515 # define USE_GENERIC_PUSH_REGS
21516 # define DYNAMIC_LOADING
21517 -# define LINUX_DATA_START
21518 +# define SEARCH_FOR_DATA_START
21520 # define DATAEND (_end)
21522 @@ -1640,7 +1731,9 @@
21523 # define MACH_TYPE "X86_64"
21524 # define ALIGNMENT 8
21525 # define CPP_WORDSZ 64
21527 # define HBLKSIZE 4096
21529 # define CACHE_LINE_SIZE 64
21530 # define USE_GENERIC_PUSH_REGS
21532 @@ -1660,7 +1753,7 @@
21533 # define DATASTART ((ptr_t)((((word) (_etext)) + 0xfff) & ~0xfff))
21535 # include <features.h>
21536 -# define LINUX_DATA_START
21537 +# define SEARCH_FOR_DATA_START
21539 # define DATAEND (_end)
21541 @@ -1674,19 +1767,6 @@
21545 -#ifdef LINUX_DATA_START
21546 - /* Some Linux distributions arrange to define __data_start. Some */
21547 - /* define data_start as a weak symbol. The latter is technically */
21548 - /* broken, since the user program may define data_start, in which */
21549 - /* case we lose. Nonetheless, we try both, prefering __data_start. */
21550 - /* We assume gcc. */
21551 -# pragma weak __data_start
21552 - extern int __data_start[];
21553 -# pragma weak data_start
21554 - extern int data_start[];
21555 -# define DATASTART ((ptr_t)(__data_start != 0? __data_start : data_start))
21558 #if defined(LINUX) && defined(REDIRECT_MALLOC)
21559 /* Rld appears to allocate some memory with its own allocator, and */
21560 /* some through malloc, which might be redirected. To make this */
21561 @@ -1742,8 +1822,8 @@
21564 # if defined(SVR4) || defined(LINUX) || defined(IRIX) || defined(HPUX) \
21565 - || defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) \
21566 - || defined(BSD) || defined(_AIX) || defined(MACOSX) || defined(OSF1)
21567 + || defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) || defined(DGUX) \
21568 + || defined(BSD) || defined(AIX) || defined(DARWIN) || defined(OSF1)
21569 # define UNIX_LIKE /* Basic Unix-like system calls work. */
21572 @@ -1762,13 +1842,13 @@
21576 -/* Postponed for now. */
21577 + /* Postponed for now. */
21579 # undef MPROTECT_VDB
21582 # ifdef SMALL_CONFIG
21583 -/* Presumably not worth the space it takes. */
21584 + /* Presumably not worth the space it takes. */
21586 # undef MPROTECT_VDB
21588 @@ -1808,8 +1888,9 @@
21589 /* platforms as well, though it should be avoided in win32. */
21590 # endif /* LINUX */
21592 -# if defined(SEARCH_FOR_DATA_START) && defined(GC_PRIVATE_H)
21593 +# if defined(SEARCH_FOR_DATA_START)
21594 extern ptr_t GC_data_start;
21595 +# define DATASTART GC_data_start
21598 # ifndef CLEAR_DOUBLE
21599 @@ -1818,28 +1899,25 @@
21601 # endif /* CLEAR_DOUBLE */
21603 -/* Internally we use GC_SOLARIS_THREADS to test for either old or pthreads. */
21604 + /* Internally we use GC_SOLARIS_THREADS to test for either old or pthreads. */
21605 # if defined(GC_SOLARIS_PTHREADS) && !defined(GC_SOLARIS_THREADS)
21606 # define GC_SOLARIS_THREADS
21609 # if defined(GC_IRIX_THREADS) && !defined(IRIX5)
21610 ---> inconsistent configuration
21611 + --> inconsistent configuration
21613 # if defined(GC_LINUX_THREADS) && !defined(LINUX)
21614 ---> inconsistent configuration
21615 + --> inconsistent configuration
21617 # if defined(GC_SOLARIS_THREADS) && !defined(SUNOS5)
21618 ---> inconsistent configuration
21619 + --> inconsistent configuration
21621 # if defined(GC_HPUX_THREADS) && !defined(HPUX)
21622 ---> inconsistent configuration
21623 + --> inconsistent configuration
21625 -# if defined(GC_WIN32_THREADS) && !defined(MSWIN32)
21626 - /* Ideally CYGWIN32 should work, in addition to MSWIN32. I suspect */
21627 - /* the necessary code is mostly there, but nobody has actually made */
21628 - /* sure the right combination of pieces is compiled in, etc. */
21629 ---> inconsistent configuration
21630 +# if defined(GC_WIN32_THREADS) && !defined(MSWIN32) && !defined(CYGWIN32)
21631 + --> inconsistent configuration
21634 # if defined(PCR) || defined(SRC_M3) || \
21635 @@ -1848,8 +1926,8 @@
21639 -# if defined(HP_PA) || defined(M88K) || defined(POWERPC) && !defined(MACOSX) \
21640 - || defined(LINT) || defined(MSWINCE) \
21641 +# if defined(HP_PA) || defined(M88K) || defined(POWERPC) && !defined(DARWIN) \
21642 + || defined(LINT) || defined(MSWINCE) || defined(ARM32) \
21643 || (defined(I386) && defined(__LCC__))
21644 /* Use setjmp based hack to mark from callee-save registers. */
21645 /* The define should move to the individual platform */
21646 @@ -1862,36 +1940,26 @@
21647 /* include assembly code to do it well. */
21650 -/* Can we save call chain in objects for debugging? */
21651 -/* SET NFRAMES (# of saved frames) and NARGS (#of args for each frame) */
21652 -/* to reasonable values for the platform. */
21653 -/* Set SAVE_CALL_CHAIN if we can. SAVE_CALL_COUNT can be specified at */
21654 -/* build time, though we feel free to adjust it slightly. */
21655 -/* Define NEED_CALLINFO if we either save the call stack or */
21656 -/* GC_ADD_CALLER is defined. */
21658 -# include <features.h>
21659 -# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2
21660 -# define HAVE_BUILTIN_BACKTRACE
21663 + /* Can we save call chain in objects for debugging? */
21664 + /* SET NFRAMES (# of saved frames) and NARGS (#of args for each */
21665 + /* frame) to reasonable values for the platform. */
21666 + /* Set SAVE_CALL_CHAIN if we can. SAVE_CALL_COUNT can be specified */
21667 + /* at build time, though we feel free to adjust it slightly. */
21668 + /* Define NEED_CALLINFO if we either save the call stack or */
21669 + /* GC_ADD_CALLER is defined. */
21670 + /* GC_CAN_SAVE_CALL_STACKS is set in gc.h. */
21673 -# define CAN_SAVE_CALL_STACKS
21674 # define CAN_SAVE_CALL_ARGS
21676 #if (defined(I386) || defined(X86_64)) && defined(LINUX)
21677 /* SAVE_CALL_CHAIN is supported if the code is compiled to save */
21678 /* frame pointers by default, i.e. no -fomit-frame-pointer flag. */
21679 -# define CAN_SAVE_CALL_STACKS
21680 # define CAN_SAVE_CALL_ARGS
21682 -#if defined(HAVE_BUILTIN_BACKTRACE) && !defined(CAN_SAVE_CALL_STACKS)
21683 -# define CAN_SAVE_CALL_STACKS
21686 # if defined(SAVE_CALL_COUNT) && !defined(GC_ADD_CALLER) \
21687 - && defined(CAN_SAVE_CALL_STACKS)
21688 + && defined(GC_CAN_SAVE_CALL_STACKS)
21689 # define SAVE_CALL_CHAIN
21691 # ifdef SAVE_CALL_CHAIN
21692 @@ -1919,5 +1987,97 @@
21693 # if defined(MAKE_BACK_GRAPH) && !defined(DBG_HDRS_ALL)
21694 # define DBG_HDRS_ALL
21697 +# if defined(POINTER_MASK) && !defined(POINTER_SHIFT)
21698 +# define POINTER_SHIFT 0
21701 +# if defined(POINTER_SHIFT) && !defined(POINTER_MASK)
21702 +# define POINTER_MASK ((GC_word)(-1))
21705 +# if !defined(FIXUP_POINTER) && defined(POINTER_MASK)
21706 +# define FIXUP_POINTER(p) (p) = ((p) & (POINTER_MASK) << POINTER_SHIFT)
21709 +# if defined(FIXUP_POINTER)
21710 +# define NEED_FIXUP_POINTER 1
21712 +# define NEED_FIXUP_POINTER 0
21713 +# define FIXUP_POINTER(p)
21716 +#ifdef GC_PRIVATE_H
21717 + /* This relies on some type definitions from gc_priv.h, from */
21718 + /* where it's normally included. */
21720 + /* How to get heap memory from the OS: */
21721 + /* Note that sbrk()-like allocation is preferred, since it */
21722 + /* usually makes it possible to merge consecutively allocated */
21723 + /* chunks. It also avoids unintented recursion with */
21724 + /* -DREDIRECT_MALLOC. */
21725 + /* GET_MEM() returns a HLKSIZE aligned chunk. */
21726 + /* 0 is taken to mean failure. */
21727 + /* In the case os USE_MMAP, the argument must also be a */
21728 + /* physical page size. */
21729 + /* GET_MEM is currently not assumed to retrieve 0 filled space, */
21730 + /* though we should perhaps take advantage of the case in which */
21732 + struct hblk; /* See gc_priv.h. */
21734 + char * real_malloc();
21735 +# define GET_MEM(bytes) HBLKPTR(real_malloc((size_t)bytes + GC_page_size) \
21736 + + GC_page_size-1)
21739 + void * os2_alloc(size_t bytes);
21740 +# define GET_MEM(bytes) HBLKPTR((ptr_t)os2_alloc((size_t)bytes \
21741 + + GC_page_size) \
21742 + + GC_page_size-1)
21744 +# if defined(NEXT) || defined(DOS4GW) || \
21745 + (defined(AMIGA) && !defined(GC_AMIGA_FASTALLOC)) || \
21746 + (defined(SUNOS5) && !defined(USE_MMAP))
21747 +# define GET_MEM(bytes) HBLKPTR((size_t) \
21748 + calloc(1, (size_t)bytes + GC_page_size) \
21749 + + GC_page_size-1)
21752 + extern ptr_t GC_win32_get_mem();
21753 +# define GET_MEM(bytes) (struct hblk *)GC_win32_get_mem(bytes)
21756 +# if defined(USE_TEMPORARY_MEMORY)
21757 + extern Ptr GC_MacTemporaryNewPtr(size_t size,
21758 + Boolean clearMemory);
21759 +# define GET_MEM(bytes) HBLKPTR( \
21760 + GC_MacTemporaryNewPtr(bytes + GC_page_size, true) \
21761 + + GC_page_size-1)
21763 +# define GET_MEM(bytes) HBLKPTR( \
21764 + NewPtrClear(bytes + GC_page_size) + GC_page_size-1)
21768 + extern ptr_t GC_wince_get_mem();
21769 +# define GET_MEM(bytes) (struct hblk *)GC_wince_get_mem(bytes)
21771 +# if defined(AMIGA) && defined(GC_AMIGA_FASTALLOC)
21772 + extern void *GC_amiga_get_mem(size_t size);
21773 + define GET_MEM(bytes) HBLKPTR((size_t) \
21774 + GC_amiga_get_mem((size_t)bytes + GC_page_size) \
21775 + + GC_page_size-1)
21777 + extern ptr_t GC_unix_get_mem();
21778 +# define GET_MEM(bytes) (struct hblk *)GC_unix_get_mem(bytes)
21787 +#endif /* GC_PRIVATE_H */
21789 # endif /* GCCONFIG_H */
21790 diff -buNr boehm-gc/include/private/pthread_stop_world.h boehm-gc/include/private/pthread_stop_world.h
21791 --- boehm-gc/include/private/pthread_stop_world.h Wed Dec 31 16:00:00 1969
21792 +++ boehm-gc/include/private/pthread_stop_world.h Sat Sep 13 02:10:15 2003
21794 +#ifndef GC_PTHREAD_STOP_WORLD_H
21795 +#define GC_PTHREAD_STOP_WORLD_H
21797 +struct thread_stop_info {
21799 + word last_stop_count; /* GC_last_stop_count value when thread */
21800 + /* last successfully handled a suspend */
21802 + ptr_t stack_ptr; /* Valid only when stopped. */
21806 diff -buNr boehm-gc/include/private/pthread_support.h boehm-gc/include/private/pthread_support.h
21807 --- boehm-gc/include/private/pthread_support.h Wed Dec 31 16:00:00 1969
21808 +++ boehm-gc/include/private/pthread_support.h Sat Sep 13 02:10:15 2003
21810 +#ifndef GC_PTHREAD_SUPPORT_H
21811 +#define GC_PTHREAD_SUPPORT_H
21813 +# include "private/gc_priv.h"
21815 +# if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
21816 + && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS)
21818 +#if defined(GC_DARWIN_THREADS)
21819 +# include "private/darwin_stop_world.h"
21821 +# include "private/pthread_stop_world.h"
21824 +/* We use the allocation lock to protect thread-related data structures. */
21826 +/* The set of all known threads. We intercept thread creation and */
21828 +/* Protected by allocation/GC lock. */
21829 +/* Some of this should be declared volatile, but that's inconsistent */
21830 +/* with some library routine declarations. */
21831 +typedef struct GC_Thread_Rep {
21832 + struct GC_Thread_Rep * next; /* More recently allocated threads */
21833 + /* with a given pthread id come */
21834 + /* first. (All but the first are */
21835 + /* guaranteed to be dead, but we may */
21836 + /* not yet have registered the join.) */
21838 + /* Extra bookkeeping information the stopping code uses */
21839 + struct thread_stop_info stop_info;
21842 +# define FINISHED 1 /* Thread has exited. */
21843 +# define DETACHED 2 /* Thread is intended to be detached. */
21844 +# define MAIN_THREAD 4 /* True for the original thread only. */
21845 + short thread_blocked; /* Protected by GC lock. */
21846 + /* Treated as a boolean value. If set, */
21847 + /* thread will acquire GC lock before */
21848 + /* doing any pointer manipulations, and */
21849 + /* has set its sp value. Thus it does */
21850 + /* not need to be sent a signal to stop */
21852 + ptr_t stack_end; /* Cold end of the stack. */
21854 + ptr_t backing_store_end;
21855 + ptr_t backing_store_ptr;
21857 + void * status; /* The value returned from the thread. */
21858 + /* Used only to avoid premature */
21859 + /* reclamation of any data it might */
21861 +# ifdef THREAD_LOCAL_ALLOC
21862 +# if CPP_WORDSZ == 64 && defined(ALIGN_DOUBLE)
21863 +# define GRANULARITY 16
21864 +# define NFREELISTS 49
21866 +# define GRANULARITY 8
21867 +# define NFREELISTS 65
21869 + /* The ith free list corresponds to size i*GRANULARITY */
21870 +# define INDEX_FROM_BYTES(n) ((ADD_SLOP(n) + GRANULARITY - 1)/GRANULARITY)
21871 +# define BYTES_FROM_INDEX(i) ((i) * GRANULARITY - EXTRA_BYTES)
21872 +# define SMALL_ENOUGH(bytes) (ADD_SLOP(bytes) <= \
21873 + (NFREELISTS-1)*GRANULARITY)
21874 + ptr_t ptrfree_freelists[NFREELISTS];
21875 + ptr_t normal_freelists[NFREELISTS];
21876 +# ifdef GC_GCJ_SUPPORT
21877 + ptr_t gcj_freelists[NFREELISTS];
21879 + /* Free lists contain either a pointer or a small count */
21880 + /* reflecting the number of granules allocated at that */
21882 + /* 0 ==> thread-local allocation in use, free list */
21884 + /* > 0, <= DIRECT_GRANULES ==> Using global allocation, */
21885 + /* too few objects of this size have been */
21886 + /* allocated by this thread. */
21887 + /* >= HBLKSIZE => pointer to nonempty free list. */
21888 + /* > DIRECT_GRANULES, < HBLKSIZE ==> transition to */
21889 + /* local alloc, equivalent to 0. */
21890 +# define DIRECT_GRANULES (HBLKSIZE/GRANULARITY)
21891 + /* Don't use local free lists for up to this much */
21892 + /* allocation. */
21896 +# define THREAD_TABLE_SZ 128 /* Must be power of 2 */
21897 +extern volatile GC_thread GC_threads[THREAD_TABLE_SZ];
21899 +extern GC_bool GC_thr_initialized;
21901 +GC_thread GC_lookup_thread(pthread_t id);
21903 +void GC_stop_init();
21905 +#endif /* GC_PTHREADS && !GC_SOLARIS_THREADS.... etc */
21906 +#endif /* GC_PTHREAD_SUPPORT_H */
21907 diff -buNr boehm-gc/include/private/solaris_threads.h boehm-gc/include/private/solaris_threads.h
21908 --- boehm-gc/include/private/solaris_threads.h Tue Oct 23 16:21:39 2001
21909 +++ boehm-gc/include/private/solaris_threads.h Sat Sep 13 02:10:15 2003
21911 # define DETACHED 2 /* Thread is intended to be detached. */
21912 # define CLIENT_OWNS_STACK 4
21913 /* Stack was supplied by client. */
21914 -# define SUSPENDED 8 /* Currently suspended. */
21915 +# define SUSPNDED 8 /* Currently suspended. */
21916 + /* SUSPENDED is used insystem header. */
21920 diff -buNr boehm-gc/include/private/specific.h boehm-gc/include/private/specific.h
21921 --- boehm-gc/include/private/specific.h Fri Mar 29 14:52:13 2002
21922 +++ boehm-gc/include/private/specific.h Sat Sep 13 02:10:15 2003
21924 unsigned hash_val = CACHE_HASH(qtid);
21925 tse * volatile * entry_ptr = key -> cache + hash_val;
21926 tse * entry = *entry_ptr; /* Must be loaded only once. */
21927 - if (entry -> qtid == qtid) {
21928 + if (EXPECT(entry -> qtid == qtid, 1)) {
21929 GC_ASSERT(entry -> thread == pthread_self());
21930 return entry -> value;
21932 diff -buNr boehm-gc/irix_threads.c boehm-gc/irix_threads.c
21933 --- boehm-gc/irix_threads.c Sun May 19 10:36:14 2002
21934 +++ boehm-gc/irix_threads.c Sat Sep 13 02:10:15 2003
21936 #undef pthread_join
21937 #undef pthread_detach
21939 +#ifdef HANDLE_FORK
21940 + --> Not yet supported. Try porting the code from linux_threads.c.
21943 void GC_thr_init();
21946 diff -buNr boehm-gc/mach_dep.c boehm-gc/mach_dep.c
21947 --- boehm-gc/mach_dep.c Thu Jul 18 13:06:00 2002
21948 +++ boehm-gc/mach_dep.c Sat Sep 13 02:10:15 2003
21950 /* on your architecture. Run the test_setjmp program to see whether */
21951 /* there is any chance it will work. */
21953 -#ifndef USE_GENERIC_PUSH_REGS
21954 +#if !defined(USE_GENERIC_PUSH_REGS) && !defined(USE_ASM_PUSH_REGS)
21955 void GC_push_regs()
21958 @@ -228,7 +228,8 @@
21959 || ( defined(I386) && defined(FREEBSD) && defined(__ELF__) ) \
21960 || ( defined(I386) && defined(NETBSD) && defined(__ELF__) ) \
21961 || ( defined(I386) && defined(OPENBSD) && defined(__ELF__) ) \
21962 - || ( defined(I386) && defined(HURD) && defined(__ELF__) )
21963 + || ( defined(I386) && defined(HURD) && defined(__ELF__) ) \
21964 + || ( defined(I386) && defined(DGUX) )
21966 /* This is modified for Linux with ELF (Note: _ELF_ only) */
21967 /* This section handles FreeBSD with ELF. */
21968 @@ -377,7 +378,7 @@
21969 /* other machines... */
21970 # if !defined(M68K) && !defined(VAX) && !defined(RT)
21971 # if !defined(SPARC) && !defined(I386) && !defined(NS32K)
21972 -# if !defined(POWERPC) && !defined(UTS4)
21973 +# if !(defined(POWERPC) && defined(LINUX)) && !defined(UTS4)
21974 # if !defined(PJ) && !(defined(MIPS) && defined(LINUX))
21977 @@ -385,7 +386,7 @@
21981 -#endif /* !USE_GENERIC_PUSH_REGS */
21982 +#endif /* !USE_GENERIC_PUSH_REGS && !USE_ASM_PUSH_REGS */
21984 #if defined(USE_GENERIC_PUSH_REGS)
21985 void GC_generic_push_regs(cold_gc_frame)
21986 diff -buNr boehm-gc/malloc.c boehm-gc/malloc.c
21987 --- boehm-gc/malloc.c Mon Feb 11 20:37:53 2002
21988 +++ boehm-gc/malloc.c Sat Sep 13 02:10:15 2003
21989 @@ -182,6 +182,7 @@
21993 + if (GC_have_errors) GC_print_all_errors();
21994 GC_INVOKE_FINALIZERS();
21995 if (SMALL_OBJ(lb)) {
21997 @@ -294,6 +295,11 @@
21998 return(GENERAL_MALLOC((word)lb, NORMAL));
22000 /* See above comment on signals. */
22001 + GC_ASSERT(0 == obj_link(op)
22002 + || (word)obj_link(op)
22003 + <= (word)GC_greatest_plausible_heap_addr
22004 + && (word)obj_link(op)
22005 + >= (word)GC_least_plausible_heap_addr);
22006 *opp = obj_link(op);
22008 GC_words_allocd += lw;
22009 @@ -338,6 +344,7 @@
22010 return((GC_PTR)REDIRECT_MALLOC(n*lb));
22014 # include <string.h>
22016 char *strdup(const char *s)
22017 @@ -346,11 +353,16 @@
22021 - size_t len = strlen + 1;
22022 + size_t len = strlen(s) + 1;
22023 char * result = ((char *)REDIRECT_MALLOC(len+1));
22024 BCOPY(s, result, len+1);
22027 +#endif /* !defined(strdup) */
22028 + /* If strdup is macro defined, we assume that it actually calls malloc, */
22029 + /* and thus the right thing will happen even without overriding it. */
22030 + /* This seems to be true on most Linux systems. */
22032 # endif /* REDIRECT_MALLOC */
22034 /* Explicitly deallocate an object p. */
22035 @@ -373,6 +385,7 @@
22036 /* Required by ANSI. It's not my fault ... */
22039 + GC_ASSERT(GC_base(p) == p);
22040 # if defined(REDIRECT_MALLOC) && \
22041 (defined(GC_SOLARIS_THREADS) || defined(GC_LINUX_THREADS) \
22042 || defined(__MINGW32__)) /* Should this be MSWIN32 in general? */
22043 @@ -454,7 +467,10 @@
22045 #endif /* THREADS */
22047 -# ifdef REDIRECT_MALLOC
22048 +# if defined(REDIRECT_MALLOC) && !defined(REDIRECT_FREE)
22049 +# define REDIRECT_FREE GC_free
22051 +# ifdef REDIRECT_FREE
22053 void free(GC_PTR p)
22055 @@ -463,7 +479,7 @@
22058 # ifndef IGNORE_FREE
22060 + REDIRECT_FREE(p);
22063 # endif /* REDIRECT_MALLOC */
22064 diff -buNr boehm-gc/mallocx.c boehm-gc/mallocx.c
22065 --- boehm-gc/mallocx.c Fri Aug 17 18:04:43 2001
22066 +++ boehm-gc/mallocx.c Sat Sep 13 02:10:15 2003
22067 @@ -142,7 +142,11 @@
22071 -# if defined(REDIRECT_MALLOC) || defined(REDIRECT_REALLOC)
22072 +# if defined(REDIRECT_MALLOC) && !defined(REDIRECT_REALLOC)
22073 +# define REDIRECT_REALLOC GC_realloc
22076 +# ifdef REDIRECT_REALLOC
22078 GC_PTR realloc(GC_PTR p, size_t lb)
22080 @@ -151,13 +155,9 @@
22084 -# ifdef REDIRECT_REALLOC
22085 return(REDIRECT_REALLOC(p, lb));
22087 - return(GC_realloc(p, lb));
22090 -# endif /* REDIRECT_MALLOC */
22091 +# endif /* REDIRECT_REALLOC */
22094 /* The same thing, except caller does not hold allocation lock. */
22095 @@ -177,6 +177,7 @@
22096 lw = ROUNDED_UP_WORDS(lb);
22097 n_blocks = OBJ_SZ_TO_BLOCKS(lw);
22098 init = GC_obj_kinds[k].ok_init;
22099 + if (GC_have_errors) GC_print_all_errors();
22100 GC_INVOKE_FINALIZERS();
22103 @@ -286,6 +287,7 @@
22107 + if (GC_have_errors) GC_print_all_errors();
22108 GC_INVOKE_FINALIZERS();
22111 @@ -354,6 +356,7 @@
22114 lw = ALIGNED_WORDS(lb);
22115 + if (GC_have_errors) GC_print_all_errors();
22116 GC_INVOKE_FINALIZERS();
22119 @@ -375,6 +378,7 @@
22120 while ((hbp = *rlh) != 0) {
22122 *rlh = hhdr -> hb_next;
22123 + hhdr -> hb_last_reclaimed = (unsigned short) GC_gc_no;
22124 # ifdef PARALLEL_MARK
22126 signed_word my_words_allocd_tmp = GC_words_allocd_tmp;
22127 @@ -574,6 +578,44 @@
22128 return((GC_PTR) op);
22133 +/* Not well tested nor integrated. */
22134 +/* Debug version is tricky and currently missing. */
22135 +#include <limits.h>
22137 +GC_PTR GC_memalign(size_t align, size_t lb)
22143 +# ifdef ALIGN_DOUBLE
22144 + if (align <= WORDS_TO_BYTES(2) && lb > align) return GC_malloc(lb);
22146 + if (align <= WORDS_TO_BYTES(1)) return GC_malloc(lb);
22147 + if (align >= HBLKSIZE/2 || lb >= HBLKSIZE/2) {
22148 + if (align > HBLKSIZE) return GC_oom_fn(LONG_MAX-1024) /* Fail */;
22149 + return GC_malloc(lb <= HBLKSIZE? HBLKSIZE : lb);
22150 + /* Will be HBLKSIZE aligned. */
22152 + /* We could also try to make sure that the real rounded-up object size */
22153 + /* is a multiple of align. That would be correct up to HBLKSIZE. */
22154 + new_lb = lb + align - 1;
22155 + result = GC_malloc(new_lb);
22156 + offset = (word)result % align;
22157 + if (offset != 0) {
22158 + offset = align - offset;
22159 + if (!GC_all_interior_pointers) {
22160 + if (offset >= VALID_OFFSET_SZ) return GC_malloc(HBLKSIZE);
22161 + GC_register_displacement(offset);
22164 + result = (GC_PTR) ((ptr_t)result + offset);
22165 + GC_ASSERT((word)result % align == 0);
22170 # ifdef ATOMIC_UNCOLLECTABLE
22171 /* Allocate lb bytes of pointerfree, untraced, uncollectable data */
22172 diff -buNr boehm-gc/mark.c boehm-gc/mark.c
22173 --- boehm-gc/mark.c Fri Mar 29 14:52:12 2002
22174 +++ boehm-gc/mark.c Sat Sep 13 02:10:15 2003
22176 # include <stdio.h>
22177 # include "private/gc_pmark.h"
22179 +#if defined(MSWIN32) && defined(__GNUC__)
22180 +# include <excpt.h>
22183 /* We put this here to minimize the risk of inlining. */
22186 @@ -261,20 +265,20 @@
22187 /* remains valid until all marking is complete. */
22188 /* A zero value indicates that it's OK to miss some */
22189 /* register values. */
22190 -GC_bool GC_mark_some(cold_gc_frame)
22191 -ptr_t cold_gc_frame;
22192 +/* We hold the allocation lock. In the case of */
22193 +/* incremental collection, the world may not be stopped.*/
22195 + /* For win32, this is called after we establish a structured */
22196 + /* exception handler, in case Windows unmaps one of our root */
22197 + /* segments. See below. In either case, we acquire the */
22198 + /* allocator lock long before we get here. */
22199 + GC_bool GC_mark_some_inner(cold_gc_frame)
22200 + ptr_t cold_gc_frame;
22202 + GC_bool GC_mark_some(cold_gc_frame)
22203 + ptr_t cold_gc_frame;
22206 -#if defined(MSWIN32) && !defined(__GNUC__)
22207 - /* Windows 98 appears to asynchronously create and remove writable */
22208 - /* memory mappings, for reasons we haven't yet understood. Since */
22209 - /* we look for writable regions to determine the root set, we may */
22210 - /* try to mark from an address range that disappeared since we */
22211 - /* started the collection. Thus we have to recover from faults here. */
22212 - /* This code does not appear to be necessary for Windows 95/NT/2000. */
22213 - /* Note that this code should never generate an incremental GC write */
22216 -#endif /* defined(MSWIN32) && !defined(__GNUC__) */
22217 switch(GC_mark_state) {
22220 @@ -395,23 +399,130 @@
22221 ABORT("GC_mark_some: bad state");
22224 -#if defined(MSWIN32) && !defined(__GNUC__)
22233 + EXCEPTION_REGISTRATION ex_reg;
22238 + static EXCEPTION_DISPOSITION mark_ex_handler(
22239 + struct _EXCEPTION_RECORD *ex_rec,
22241 + struct _CONTEXT *context,
22244 + if (ex_rec->ExceptionCode == STATUS_ACCESS_VIOLATION) {
22245 + ext_ex_regn *xer = (ext_ex_regn *)est_frame;
22247 + /* Unwind from the inner function assuming the standard */
22248 + /* function prologue. */
22249 + /* Assumes code has not been compiled with */
22250 + /* -fomit-frame-pointer. */
22251 + context->Esp = context->Ebp;
22252 + context->Ebp = *((DWORD *)context->Esp);
22253 + context->Esp = context->Esp - 8;
22255 + /* Resume execution at the "real" handler within the */
22256 + /* wrapper function. */
22257 + context->Eip = (DWORD )(xer->alt_path);
22259 + return ExceptionContinueExecution;
22262 + return ExceptionContinueSearch;
22265 +# endif /* __GNUC__ */
22268 + GC_bool GC_mark_some(cold_gc_frame)
22269 + ptr_t cold_gc_frame;
22274 + /* Windows 98 appears to asynchronously create and remove */
22275 + /* writable memory mappings, for reasons we haven't yet */
22276 + /* understood. Since we look for writable regions to */
22277 + /* determine the root set, we may try to mark from an */
22278 + /* address range that disappeared since we started the */
22279 + /* collection. Thus we have to recover from faults here. */
22280 + /* This code does not appear to be necessary for Windows */
22281 + /* 95/NT/2000. Note that this code should never generate */
22282 + /* an incremental GC write fault. */
22286 +# else /* __GNUC__ */
22288 + /* Manually install an exception handler since GCC does */
22289 + /* not yet support Structured Exception Handling (SEH) on */
22294 + er.alt_path = &&handle_ex;
22295 + er.ex_reg.handler = mark_ex_handler;
22296 + asm volatile ("movl %%fs:0, %0" : "=r" (er.ex_reg.prev));
22297 + asm volatile ("movl %0, %%fs:0" : : "r" (&er));
22299 +# endif /* __GNUC__ */
22301 + ret_val = GC_mark_some_inner(cold_gc_frame);
22305 } __except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
22306 EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
22308 +# else /* __GNUC__ */
22310 + /* Prevent GCC from considering the following code unreachable */
22311 + /* and thus eliminating it. */
22312 + if (er.alt_path != 0)
22316 + /* Execution resumes from here on an access violation. */
22318 +# endif /* __GNUC__ */
22321 if (GC_print_stats) {
22322 GC_printf0("Caught ACCESS_VIOLATION in marker. "
22323 "Memory mapping disappeared.\n");
22325 # endif /* CONDPRINT */
22327 /* We have bad roots on the stack. Discard mark stack. */
22328 /* Rescan from marked objects. Redetermine roots. */
22329 GC_invalidate_mark_state();
22338 -#endif /* defined(MSWIN32) && !defined(__GNUC__) */
22341 +# else /* __GNUC__ */
22344 + /* Uninstall the exception handler */
22345 + asm volatile ("mov %0, %%fs:0" : : "r" (er.ex_reg.prev));
22347 +# endif /* __GNUC__ */
22351 +#endif /* MSWIN32 */
22354 GC_bool GC_mark_stack_empty()
22355 @@ -434,13 +545,7 @@
22356 /* for the large object. */
22357 /* - just return current if it does not point to a large object. */
22359 -# ifdef PRINT_BLACK_LIST
22360 - ptr_t GC_find_start(current, hhdr, new_hdr_p, source)
22363 - ptr_t GC_find_start(current, hhdr, new_hdr_p)
22366 +ptr_t GC_find_start(current, hhdr, new_hdr_p)
22367 register ptr_t current;
22368 register hdr *hhdr, **new_hdr_p;
22370 @@ -468,7 +573,6 @@
22377 void GC_invalidate_mark_state()
22378 @@ -546,8 +650,8 @@
22379 /* Large length. */
22380 /* Process part of the range to avoid pushing too much on the */
22382 - GC_ASSERT(descr < GC_greatest_plausible_heap_addr
22383 - - GC_least_plausible_heap_addr);
22384 + GC_ASSERT(descr < (word)GC_greatest_plausible_heap_addr
22385 + - (word)GC_least_plausible_heap_addr);
22386 # ifdef PARALLEL_MARK
22387 # define SHARE_BYTES 2048
22388 if (descr > SHARE_BYTES && GC_parallel
22389 @@ -578,6 +682,7 @@
22390 while (descr != 0) {
22391 if ((signed_word)descr < 0) {
22392 current = *current_p;
22393 + FIXUP_POINTER(current);
22394 if ((ptr_t)current >= least_ha && (ptr_t)current < greatest_ha) {
22396 HC_PUSH_CONTENTS((ptr_t)current, mark_stack_top,
22397 @@ -652,6 +757,7 @@
22398 PREFETCH((ptr_t)limit - PREF_DIST*CACHE_LINE_SIZE);
22399 GC_ASSERT(limit >= current_p);
22401 + FIXUP_POINTER(deferred);
22402 limit = (word *)((char *)limit - ALIGNMENT);
22403 if ((ptr_t)deferred >= least_ha && (ptr_t)deferred < greatest_ha) {
22404 PREFETCH(deferred);
22405 @@ -661,6 +767,7 @@
22406 /* Unroll once, so we don't do too many of the prefetches */
22407 /* based on limit. */
22409 + FIXUP_POINTER(deferred);
22410 limit = (word *)((char *)limit - ALIGNMENT);
22411 if ((ptr_t)deferred >= least_ha && (ptr_t)deferred < greatest_ha) {
22412 PREFETCH(deferred);
22413 @@ -675,6 +782,7 @@
22414 /* Since HC_PUSH_CONTENTS expands to a lot of code, */
22416 current = *current_p;
22417 + FIXUP_POINTER(current);
22418 PREFETCH((ptr_t)current_p + PREF_DIST*CACHE_LINE_SIZE);
22419 if ((ptr_t)current >= least_ha && (ptr_t)current < greatest_ha) {
22420 /* Prefetch the contents of the object we just pushed. It's */
22421 @@ -726,22 +834,33 @@
22422 mse *top = local - 1;
22425 + /* Make sure that prior writes to the mark stack are visible. */
22426 + /* On some architectures, the fact that the reads are */
22427 + /* volatile should suffice. */
22428 +# if !defined(IA64) && !defined(HP_PA) && !defined(I386)
22429 + GC_memory_barrier();
22431 GC_ASSERT(high >= low-1 && high - low + 1 <= GC_mark_stack_size);
22432 for (p = low; p <= high && i <= max; ++p) {
22433 word descr = *(volatile word *) &(p -> mse_descr);
22434 + /* In the IA64 memory model, the following volatile store is */
22435 + /* ordered after this read of descr. Thus a thread must read */
22436 + /* the original nonzero value. HP_PA appears to be similar, */
22437 + /* and if I'm reading the P4 spec correctly, X86 is probably */
22438 + /* also OK. In some other cases we need a barrier. */
22439 +# if !defined(IA64) && !defined(HP_PA) && !defined(I386)
22440 + GC_memory_barrier();
22443 *(volatile word *) &(p -> mse_descr) = 0;
22444 + /* More than one thread may get this entry, but that's only */
22445 + /* a minor performance problem. */
22447 top -> mse_descr = descr;
22448 top -> mse_start = p -> mse_start;
22449 GC_ASSERT( top -> mse_descr & GC_DS_TAGS != GC_DS_LENGTH ||
22450 top -> mse_descr < GC_greatest_plausible_heap_addr
22451 - GC_least_plausible_heap_addr);
22452 - /* There is no synchronization here. We assume that at */
22453 - /* least one thread will see the original descriptor. */
22454 - /* Otherwise we need a barrier. */
22455 - /* More than one thread may get this entry, but that's only */
22456 - /* a minor performance problem. */
22457 /* If this is a big object, count it as */
22458 /* size/256 + 1 objects. */
22460 @@ -778,7 +897,7 @@
22461 BCOPY(low, my_start, stack_size * sizeof(mse));
22462 GC_ASSERT(GC_mark_stack_top = my_top);
22463 # if !defined(IA64) && !defined(HP_PA)
22464 - GC_memory_write_barrier();
22465 + GC_memory_barrier();
22467 /* On IA64, the volatile write acts as a release barrier. */
22468 GC_mark_stack_top = my_top + stack_size;
22469 @@ -1342,7 +1461,7 @@
22470 # define GC_least_plausible_heap_addr least_ha
22472 if (top == 0) return;
22473 - /* check all pointers in range and put in push if they appear */
22474 + /* check all pointers in range and push if they appear */
22476 lim = t - 1 /* longword */;
22477 for (p = b; p <= lim; p = (word *)(((char *)p) + ALIGNMENT)) {
22478 @@ -1366,7 +1485,7 @@
22480 ptr_t cold_gc_frame;
22482 - if (GC_all_interior_pointers) {
22483 + if (!NEED_FIXUP_POINTER && GC_all_interior_pointers) {
22484 # define EAGER_BYTES 1024
22485 /* Push the hot end of the stack eagerly, so that register values */
22486 /* saved inside GC frames are marked before they disappear. */
22487 @@ -1375,6 +1494,7 @@
22488 GC_push_all_stack(bottom, top);
22491 + GC_ASSERT(bottom <= cold_gc_frame && cold_gc_frame <= top);
22492 # ifdef STACK_GROWS_DOWN
22493 GC_push_all(cold_gc_frame - sizeof(ptr_t), top);
22494 GC_push_all_eager(bottom, cold_gc_frame);
22495 @@ -1395,7 +1515,7 @@
22499 - if (GC_all_interior_pointers) {
22500 + if (!NEED_FIXUP_POINTER && GC_all_interior_pointers) {
22501 GC_push_all(bottom, top);
22503 GC_push_all_eager(bottom, top);
22504 diff -buNr boehm-gc/mark_rts.c boehm-gc/mark_rts.c
22505 --- boehm-gc/mark_rts.c Mon Mar 3 22:38:29 2003
22506 +++ boehm-gc/mark_rts.c Sat Sep 13 02:10:15 2003
22507 @@ -275,33 +275,72 @@
22510 /* Internal use only; lock held. */
22511 -void GC_remove_tmp_roots()
22512 +static void GC_remove_root_at_pos(i)
22517 - for (i = 0; i < n_root_sets; ) {
22518 - if (GC_static_roots[i].r_tmp) {
22520 - (GC_static_roots[i].r_end - GC_static_roots[i].r_start);
22521 + GC_root_size -= (GC_static_roots[i].r_end - GC_static_roots[i].r_start);
22522 GC_static_roots[i].r_start = GC_static_roots[n_root_sets-1].r_start;
22523 GC_static_roots[i].r_end = GC_static_roots[n_root_sets-1].r_end;
22524 GC_static_roots[i].r_tmp = GC_static_roots[n_root_sets-1].r_tmp;
22530 -# if !defined(MSWIN32) && !defined(MSWINCE)
22534 +#if !defined(MSWIN32) && !defined(MSWINCE)
22535 +static void GC_rebuild_root_index()
22539 for (i = 0; i < RT_SIZE; i++) GC_root_index[i] = 0;
22540 for (i = 0; i < n_root_sets; i++)
22541 add_roots_to_index(GC_static_roots + i);
22545 +/* Internal use only; lock held. */
22546 +void GC_remove_tmp_roots()
22550 + for (i = 0; i < n_root_sets; ) {
22551 + if (GC_static_roots[i].r_tmp) {
22552 + GC_remove_root_at_pos(i);
22558 + #if !defined(MSWIN32) && !defined(MSWINCE)
22559 + GC_rebuild_root_index();
22563 +#if !defined(MSWIN32) && !defined(MSWINCE)
22564 +void GC_remove_roots(b, e)
22565 +char * b; char * e;
22569 + DISABLE_SIGNALS();
22571 + GC_remove_roots_inner(b, e);
22573 + ENABLE_SIGNALS();
22576 +/* Should only be called when the lock is held */
22577 +void GC_remove_roots_inner(b,e)
22578 +char * b; char * e;
22581 + for (i = 0; i < n_root_sets; ) {
22582 + if (GC_static_roots[i].r_start >= (ptr_t)b && GC_static_roots[i].r_end <= (ptr_t)e) {
22583 + GC_remove_root_at_pos(i);
22588 + GC_rebuild_root_index();
22590 +#endif /* !defined(MSWIN32) && !defined(MSWINCE) */
22592 #if defined(MSWIN32) || defined(_WIN32_WCE_EMULATION)
22593 /* Workaround for the OS mapping and unmapping behind our back: */
22594 @@ -573,8 +612,11 @@
22596 /* Mark thread local free lists, even if their mark */
22597 /* descriptor excludes the link field. */
22598 + /* If the world is not stopped, this is unsafe. It is */
22599 + /* also unnecessary, since we will do this again with the */
22600 + /* world stopped. */
22601 # ifdef THREAD_LOCAL_ALLOC
22602 - GC_mark_thread_local_free_lists();
22603 + if (GC_world_stopped) GC_mark_thread_local_free_lists();
22607 diff -buNr boehm-gc/misc.c boehm-gc/misc.c
22608 --- boehm-gc/misc.c Mon Mar 3 22:38:30 2003
22609 +++ boehm-gc/misc.c Sat Sep 13 02:10:15 2003
22611 # ifdef GC_SOLARIS_THREADS
22612 mutex_t GC_allocate_ml; /* Implicitly initialized. */
22614 -# ifdef GC_WIN32_THREADS
22615 -# if !defined(GC_NOT_DLL) && (defined(_DLL) || defined(GC_DLL))
22616 +# if defined(GC_WIN32_THREADS)
22617 +# if defined(GC_PTHREADS)
22618 + pthread_mutex_t GC_allocate_ml = PTHREAD_MUTEX_INITIALIZER;
22619 +# elif defined(GC_DLL)
22620 __declspec(dllexport) CRITICAL_SECTION GC_allocate_ml;
22622 CRITICAL_SECTION GC_allocate_ml;
22624 /* defined here so we don't have to load debug_malloc.o */
22626 void (*GC_check_heap) GC_PROTO((void)) = (void (*) GC_PROTO((void)))0;
22627 +void (*GC_print_all_smashed) GC_PROTO((void)) = (void (*) GC_PROTO((void)))0;
22629 void (*GC_start_call_back) GC_PROTO((void)) = (void (*) GC_PROTO((void)))0;
22631 @@ -109,6 +112,10 @@
22633 GC_bool GC_print_back_height = 0;
22635 +#ifndef NO_DEBUGGING
22636 + GC_bool GC_dump_regularly = 0; /* Generate regular debugging dumps. */
22640 int GC_find_leak = 1;
22642 @@ -137,6 +144,13 @@
22644 extern signed_word GC_mem_found;
22646 +void * GC_project2(arg1, arg2)
22653 # ifdef MERGE_SIZES
22654 /* Set things up so that GC_size_map[i] >= words(i), */
22655 /* but not too much bigger */
22656 @@ -455,7 +469,7 @@
22661 +#if defined(GC_WIN32_THREADS) && !defined(GC_PTHREADS)
22662 if (!GC_is_initialized) InitializeCriticalSection(&GC_allocate_ml);
22663 #endif /* MSWIN32 */
22665 @@ -473,6 +487,15 @@
22666 GC_init_parallel();
22668 # endif /* PARALLEL_MARK || THREAD_LOCAL_ALLOC */
22670 +# if defined(DYNAMIC_LOADING) && defined(DARWIN)
22672 + /* This must be called WITHOUT the allocation lock held
22673 + and before any threads are created */
22674 + extern void GC_init_dyld();
22680 #if defined(MSWIN32) || defined(MSWINCE)
22681 @@ -485,6 +508,22 @@
22683 extern void GC_setpagesize();
22687 +extern GC_bool GC_no_win32_dlls;
22689 +# define GC_no_win32_dlls FALSE
22692 +void GC_exit_check GC_PROTO((void))
22697 +#ifdef SEARCH_FOR_DATA_START
22698 + extern void GC_init_linux_data_start GC_PROTO((void));
22703 extern void GC_set_and_save_fault_handler GC_PROTO((void (*handler)(int)));
22704 @@ -495,12 +534,23 @@
22705 GC_err_printf1("Caught signal %d: looping in handler\n", sig);
22711 -extern GC_bool GC_no_win32_dlls;
22713 -# define GC_no_win32_dlls FALSE
22714 +static GC_bool installed_looping_handler = FALSE;
22716 +void maybe_install_looping_handler()
22718 + /* Install looping handler before the write fault handler, so we */
22719 + /* handle write faults correctly. */
22720 + if (!installed_looping_handler && 0 != GETENV("GC_LOOP_ON_ABORT")) {
22721 + GC_set_and_save_fault_handler(looping_handler);
22722 + installed_looping_handler = TRUE;
22726 +#else /* !UNIX_LIKE */
22728 +# define maybe_install_looping_handler()
22732 void GC_init_inner()
22733 @@ -517,12 +567,19 @@
22734 # if defined(MSWIN32) || defined(MSWINCE)
22735 InitializeCriticalSection(&GC_write_cs);
22738 if (0 != GETENV("GC_PRINT_STATS")) {
22739 GC_print_stats = 1;
22741 +# ifndef NO_DEBUGGING
22742 + if (0 != GETENV("GC_DUMP_REGULARLY")) {
22743 + GC_dump_regularly = 1;
22746 if (0 != GETENV("GC_FIND_LEAK")) {
22749 + atexit(GC_exit_check);
22752 if (0 != GETENV("GC_ALL_INTERIOR_POINTERS")) {
22753 GC_all_interior_pointers = 1;
22754 @@ -560,11 +617,7 @@
22759 - if (0 != GETENV("GC_LOOP_ON_ABORT")) {
22760 - GC_set_and_save_fault_handler(looping_handler);
22763 + maybe_install_looping_handler();
22764 /* Adjust normal object descriptor for extra allocation. */
22765 if (ALIGNMENT > GC_DS_TAGS && EXTRA_BYTES != 0) {
22766 GC_obj_kinds[NORMAL].ok_descriptor = ((word)(-ALIGNMENT) | GC_DS_LENGTH);
22767 @@ -599,11 +652,21 @@
22768 # if defined(LINUX) && defined(IA64)
22769 GC_register_stackbottom = GC_get_register_stack_base();
22772 +# if defined(LINUX) && defined(IA64)
22773 + if (GC_register_stackbottom == 0) {
22774 + WARN("GC_register_stackbottom should be set with GC_stackbottom", 0);
22775 + /* The following is likely to fail, since we rely on */
22776 + /* alignment properties that may not hold with a user set */
22777 + /* GC_stackbottom. */
22778 + GC_register_stackbottom = GC_get_register_stack_base();
22781 - GC_ASSERT(sizeof (ptr_t) == sizeof(word));
22782 - GC_ASSERT(sizeof (signed_word) == sizeof(word));
22783 - GC_ASSERT(sizeof (struct hblk) == HBLKSIZE);
22786 + GC_STATIC_ASSERT(sizeof (ptr_t) == sizeof(word));
22787 + GC_STATIC_ASSERT(sizeof (signed_word) == sizeof(word));
22788 + GC_STATIC_ASSERT(sizeof (struct hblk) == HBLKSIZE);
22790 # if defined(STACK_GROWS_UP) && defined(STACK_GROWS_DOWN)
22792 @@ -642,6 +705,18 @@
22793 initial_heap_sz = divHBLKSZ(initial_heap_sz);
22797 + char * sz_str = GETENV("GC_MAXIMUM_HEAP_SIZE");
22798 + if (sz_str != NULL) {
22799 + word max_heap_sz = (word)atol(sz_str);
22800 + if (max_heap_sz < initial_heap_sz * HBLKSIZE) {
22801 + WARN("Bad maximum heap size %s - ignoring it.\n",
22804 + if (0 == GC_max_retries) GC_max_retries = 2;
22805 + GC_set_max_heap_size(max_heap_sz);
22808 if (!GC_expand_hp_inner(initial_heap_sz)) {
22809 GC_err_printf0("Can't start up: not enough memory\n");
22811 @@ -677,6 +752,7 @@
22812 GC_incremental = TRUE;
22814 # endif /* !SMALL_CONFIG */
22816 /* Get black list set up and/or incrmental GC started */
22817 if (!GC_dont_precollect || GC_incremental) GC_gcollect_inner();
22818 GC_is_initialized = TRUE;
22819 @@ -713,6 +789,7 @@
22821 if (GC_no_win32_dlls) goto out;
22822 # ifndef GC_SOLARIS_THREADS
22823 + maybe_install_looping_handler(); /* Before write fault handler! */
22826 if (!GC_is_initialized) {
22827 @@ -932,6 +1009,17 @@
22831 +# if defined(__STDC__) || defined(__cplusplus)
22832 + GC_word GC_set_free_space_divisor (GC_word value)
22834 + GC_word GC_set_free_space_divisor (value)
22838 + GC_word old = GC_free_space_divisor;
22839 + GC_free_space_divisor = value;
22845 @@ -958,122 +1046,18 @@
22849 -#ifdef NEED_CALLINFO
22851 -#ifdef HAVE_BUILTIN_BACKTRACE
22852 -# include <execinfo.h>
22854 -# include <unistd.h>
22858 -void GC_print_callers (info)
22859 -struct callinfo info[NFRAMES];
22864 - GC_err_printf0("\tCaller at allocation:\n");
22866 - GC_err_printf0("\tCall chain at allocation:\n");
22868 - for (i = 0; i < NFRAMES; i++) {
22869 - if (info[i].ci_pc == 0) break;
22874 - GC_err_printf0("\t\targs: ");
22875 - for (j = 0; j < NARGS; j++) {
22876 - if (j != 0) GC_err_printf0(", ");
22877 - GC_err_printf2("%d (0x%X)", ~(info[i].ci_arg[j]),
22878 - ~(info[i].ci_arg[j]));
22880 - GC_err_printf0("\n");
22883 -# if defined(HAVE_BUILTIN_BACKTRACE) && !defined(REDIRECT_MALLOC)
22884 - /* Unfortunately backtrace_symbols calls malloc, which makes */
22885 - /* it dangersous if that has been redirected. */
22887 - char **sym_name =
22888 - backtrace_symbols((void **)(&(info[i].ci_pc)), 1);
22889 - char *name = sym_name[0];
22890 - GC_bool found_it = (strchr(name, '(') != 0);
22894 -# define EXE_SZ 100
22895 - static char exe_name[EXE_SZ];
22896 -# define CMD_SZ 200
22897 - char cmd_buf[CMD_SZ];
22898 -# define RESULT_SZ 200
22899 - static char result_buf[RESULT_SZ];
22900 - size_t result_len;
22901 - static GC_bool found_exe_name = FALSE;
22902 - static GC_bool will_fail = FALSE;
22904 - /* Unfortunately, this is the common case for the */
22905 - /* main executable. */
22906 - /* Try to get it via a hairy and expensive scheme. */
22907 - /* First we get the name of the executable: */
22908 - if (will_fail) goto out;
22909 - if (!found_exe_name) {
22910 - ret_code = readlink("/proc/self/exe", exe_name, EXE_SZ);
22911 - if (ret_code < 0 || ret_code >= EXE_SZ || exe_name[0] != '/') {
22912 - will_fail = TRUE; /* Dont try again. */
22915 - exe_name[ret_code] = '\0';
22916 - found_exe_name = TRUE;
22918 - /* Then we use popen to start addr2line -e <exe> <addr> */
22919 - /* There are faster ways to do this, but hopefully this */
22920 - /* isn't time critical. */
22921 - sprintf(cmd_buf, "/usr/bin/addr2line -e %s 0x%lx", exe_name,
22922 - (unsigned long)info[i].ci_pc);
22923 - pipe = popen(cmd_buf, "r");
22924 - if (pipe < 0 || fgets(result_buf, RESULT_SZ, pipe) == 0) {
22925 - will_fail = TRUE;
22928 - result_len = strlen(result_buf);
22929 - if (result_buf[result_len - 1] == '\n') --result_len;
22930 - if (result_buf[0] == '?'
22931 - || result_buf[result_len-2] == ':'
22932 - && result_buf[result_len-1] == '0')
22934 - if (result_len < RESULT_SZ - 25) {
22935 - /* Add in hex address */
22936 - sprintf(result_buf + result_len, " [0x%lx]",
22937 - (unsigned long)info[i].ci_pc);
22939 - name = result_buf;
22944 - GC_err_printf1("\t\t%s\n", name);
22948 - GC_err_printf1("\t\t##PC##= 0x%lx\n", info[i].ci_pc);
22953 -#endif /* SAVE_CALL_CHAIN */
22955 -/* Needed by SRC_M3, gcj, and should perhaps be the official interface */
22956 -/* to GC_dont_gc. */
22971 #if !defined(NO_DEBUGGING)
22972 @@ -1088,6 +1072,8 @@
22973 GC_print_hblkfreelist();
22974 GC_printf0("\n***Blocks in use:\n");
22975 GC_print_block_list();
22976 + GC_printf0("\n***Finalization statistics:\n");
22977 + GC_print_finalization_stats();
22980 #endif /* NO_DEBUGGING */
22981 diff -buNr boehm-gc/os_dep.c boehm-gc/os_dep.c
22982 --- boehm-gc/os_dep.c Fri Jul 19 01:54:43 2002
22983 +++ boehm-gc/os_dep.c Sat Sep 13 02:10:15 2003
22984 @@ -80,12 +80,15 @@
22985 # define NEED_FIND_LIMIT
22988 -#ifdef NEED_FIND_LIMIT
22989 -# include <setjmp.h>
22992 #if defined(FREEBSD) && defined(I386)
22993 # include <machine/trap.h>
22994 +# if !defined(PCR)
22995 +# define NEED_FIND_LIMIT
22999 +#ifdef NEED_FIND_LIMIT
23000 +# include <setjmp.h>
23004 @@ -129,6 +132,11 @@
23005 # define jmp_buf sigjmp_buf
23009 +/* for get_etext and friends */
23010 +#include <mach-o/getsect.h>
23014 /* Apparently necessary for djgpp 2.01. May cause problems with */
23015 /* other versions. */
23016 @@ -147,6 +155,155 @@
23017 # define OPT_PROT_EXEC 0
23020 +#if defined(LINUX) && \
23021 + (defined(USE_PROC_FOR_LIBRARIES) || defined(IA64) || !defined(SMALL_CONFIG))
23023 +/* We need to parse /proc/self/maps, either to find dynamic libraries, */
23024 +/* and/or to find the register backing store base (IA64). Do it once */
23029 +/* Repeatedly perform a read call until the buffer is filled or */
23030 +/* we encounter EOF. */
23031 +ssize_t GC_repeat_read(int fd, char *buf, size_t count)
23033 + ssize_t num_read = 0;
23036 + while (num_read < count) {
23037 + result = READ(fd, buf + num_read, count - num_read);
23038 + if (result < 0) return result;
23039 + if (result == 0) break;
23040 + num_read += result;
23046 + * Apply fn to a buffer containing the contents of /proc/self/maps.
23047 + * Return the result of fn or, if we failed, 0.
23050 +word GC_apply_to_maps(word (*fn)(char *))
23055 + char maps_temp[32768];
23058 + /* Read /proc/self/maps */
23059 + /* Note that we may not allocate, and thus can't use stdio. */
23060 + f = open("/proc/self/maps", O_RDONLY);
23061 + if (-1 == f) return 0;
23062 + /* stat() doesn't work for /proc/self/maps, so we have to
23063 + read it to find out how large it is... */
23066 + result = GC_repeat_read(f, maps_temp, sizeof(maps_temp));
23067 + if (result <= 0) return 0;
23068 + maps_size += result;
23069 + } while (result == sizeof(maps_temp));
23071 + if (maps_size > sizeof(maps_temp)) {
23072 + /* If larger than our buffer, close and re-read it. */
23074 + f = open("/proc/self/maps", O_RDONLY);
23075 + if (-1 == f) return 0;
23076 + maps_buf = alloca(maps_size);
23077 + if (NULL == maps_buf) return 0;
23078 + result = GC_repeat_read(f, maps_buf, maps_size);
23079 + if (result <= 0) return 0;
23081 + /* Otherwise use the fixed size buffer */
23082 + maps_buf = maps_temp;
23086 + maps_buf[result] = '\0';
23088 + /* Apply fn to result. */
23089 + return fn(maps_buf);
23092 +#endif /* Need GC_apply_to_maps */
23094 +#if defined(LINUX) && (defined(USE_PROC_FOR_LIBRARIES) || defined(IA64))
23096 +// GC_parse_map_entry parses an entry from /proc/self/maps so we can
23097 +// locate all writable data segments that belong to shared libraries.
23098 +// The format of one of these entries and the fields we care about
23100 +// XXXXXXXX-XXXXXXXX r-xp 00000000 30:05 260537 name of mapping...\n
23101 +// ^^^^^^^^ ^^^^^^^^ ^^^^ ^^
23102 +// start end prot maj_dev
23105 +// For 64 bit ABIs:
23108 +// The parser is called with a pointer to the entry and the return value
23109 +// is either NULL or is advanced to the next entry(the byte after the
23110 +// trailing '\n'.)
23112 +#if CPP_WORDSZ == 32
23113 +# define OFFSET_MAP_START 0
23114 +# define OFFSET_MAP_END 9
23115 +# define OFFSET_MAP_PROT 18
23116 +# define OFFSET_MAP_MAJDEV 32
23117 +# define ADDR_WIDTH 8
23120 +#if CPP_WORDSZ == 64
23121 +# define OFFSET_MAP_START 0
23122 +# define OFFSET_MAP_END 17
23123 +# define OFFSET_MAP_PROT 34
23124 +# define OFFSET_MAP_MAJDEV 56
23125 +# define ADDR_WIDTH 16
23129 + * Assign various fields of the first line in buf_ptr to *start, *end,
23130 + * *prot_buf and *maj_dev. Only *prot_buf may be set for unwritable maps.
23132 +char *GC_parse_map_entry(char *buf_ptr, word *start, word *end,
23133 + char *prot_buf, unsigned int *maj_dev)
23138 + if (buf_ptr == NULL || *buf_ptr == '\0') {
23142 + memcpy(prot_buf, buf_ptr+OFFSET_MAP_PROT, 4); // do the protections first
23143 + prot_buf[4] = '\0';
23145 + if (prot_buf[1] == 'w') { // we can skip all of this if it's not writable
23148 + buf_ptr[OFFSET_MAP_START+ADDR_WIDTH] = '\0';
23149 + *start = strtoul(tok, NULL, 16);
23151 + tok = buf_ptr+OFFSET_MAP_END;
23152 + buf_ptr[OFFSET_MAP_END+ADDR_WIDTH] = '\0';
23153 + *end = strtoul(tok, NULL, 16);
23155 + buf_ptr += OFFSET_MAP_MAJDEV;
23157 + while (*buf_ptr != ':') buf_ptr++;
23158 + *buf_ptr++ = '\0';
23159 + *maj_dev = strtoul(tok, NULL, 16);
23162 + while (*buf_ptr && *buf_ptr++ != '\n');
23167 +#endif /* Need to parse /proc/self/maps. */
23169 #if defined(SEARCH_FOR_DATA_START)
23170 /* The I386 case can be handled without a search. The Alpha case */
23171 /* used to be handled differently as well, but the rules changed */
23172 @@ -154,6 +311,11 @@
23173 /* cover all versions. */
23176 + /* Some Linux distributions arrange to define __data_start. Some */
23177 + /* define data_start as a weak symbol. The latter is technically */
23178 + /* broken, since the user program may define data_start, in which */
23179 + /* case we lose. Nonetheless, we try both, prefering __data_start. */
23180 + /* We assume gcc-compatible pragmas. */
23181 # pragma weak __data_start
23182 extern int __data_start[];
23183 # pragma weak data_start
23184 @@ -169,16 +331,16 @@
23187 /* Try the easy approaches first: */
23188 - if (__data_start != 0) {
23189 - GC_data_start = (ptr_t)__data_start;
23190 + if ((ptr_t)__data_start != 0) {
23191 + GC_data_start = (ptr_t)(__data_start);
23194 - if (data_start != 0) {
23195 - GC_data_start = (ptr_t)data_start;
23196 + if ((ptr_t)data_start != 0) {
23197 + GC_data_start = (ptr_t)(data_start);
23200 # endif /* LINUX */
23201 - GC_data_start = GC_find_limit((ptr_t)_end, FALSE);
23202 + GC_data_start = GC_find_limit((ptr_t)(_end), FALSE);
23206 @@ -617,7 +779,8 @@
23209 /* Return the first nonaddressible location > p (up) or */
23210 - /* the smallest location q s.t. [q,p] is addressible (!up). */
23211 + /* the smallest location q s.t. [q,p) is addressable (!up). */
23212 + /* We assume that p (up) or p-1 (!up) is addressable. */
23213 ptr_t GC_find_limit(p, up)
23216 @@ -650,18 +813,18 @@
23220 -# if defined(ECOS) || defined(NOSYS)
23221 -ptr_t GC_get_stack_base()
23223 +#if defined(ECOS) || defined(NOSYS)
23224 + ptr_t GC_get_stack_base()
23226 return STACKBOTTOM;
23233 #ifdef LINUX_STACKBOTTOM
23235 #include <sys/types.h>
23236 #include <sys/stat.h>
23237 +#include <ctype.h>
23239 # define STAT_SKIP 27 /* Number of fields preceding startstack */
23240 /* field in /proc/self/stat */
23241 @@ -670,6 +833,33 @@
23242 extern ptr_t __libc_stack_end;
23245 + /* Try to read the backing store base from /proc/self/maps. */
23246 + /* We look for the writable mapping with a 0 major device, */
23247 + /* which is as close to our frame as possible, but below it.*/
23248 + static word backing_store_base_from_maps(char *maps)
23250 + char prot_buf[5];
23251 + char *buf_ptr = maps;
23253 + unsigned int maj_dev;
23254 + word current_best = 0;
23258 + buf_ptr = GC_parse_map_entry(buf_ptr, &start, &end, prot_buf, &maj_dev);
23259 + if (buf_ptr == NULL) return current_best;
23260 + if (prot_buf[1] == 'w' && maj_dev == 0) {
23261 + if (end < (word)(&dummy) && start > current_best) current_best = start;
23264 + return current_best;
23267 + static word backing_store_base_from_proc(void)
23269 + return GC_apply_to_maps(backing_store_base_from_maps);
23272 # pragma weak __libc_ia64_register_backing_store_base
23273 extern ptr_t __libc_ia64_register_backing_store_base;
23275 @@ -683,9 +873,15 @@
23276 /* Hence we check for both nonzero address and value. */
23277 return __libc_ia64_register_backing_store_base;
23279 - word result = (word)GC_stackbottom - BACKING_STORE_DISPLACEMENT;
23280 + word result = backing_store_base_from_proc();
23281 + if (0 == result) {
23282 + /* Use dumb heuristics. Works only for default configuration. */
23283 + result = (word)GC_stackbottom - BACKING_STORE_DISPLACEMENT;
23284 result += BACKING_STORE_ALIGNMENT - 1;
23285 result &= ~(BACKING_STORE_ALIGNMENT - 1);
23286 + /* Verify that it's at least readable. If not, we goofed. */
23287 + GC_noop1(*(word *)result);
23289 return (ptr_t)result;
23292 @@ -697,11 +893,8 @@
23293 /* using direct I/O system calls in order to avoid calling malloc */
23294 /* in case REDIRECT_MALLOC is defined. */
23295 # define STAT_BUF_SIZE 4096
23296 -# if defined(GC_USE_LD_WRAP)
23297 -# define STAT_READ __real_read
23299 # define STAT_READ read
23301 + /* Should probably call the real read, if read is wrapped. */
23302 char stat_buf[STAT_BUF_SIZE];
23305 @@ -710,7 +903,16 @@
23307 /* First try the easy way. This should work for glibc 2.2 */
23308 if (0 != &__libc_stack_end) {
23310 + /* Some versions of glibc set the address 16 bytes too */
23311 + /* low while the initialization code is running. */
23312 + if (((word)__libc_stack_end & 0xfff) + 0x10 < 0x1000) {
23313 + return __libc_stack_end + 0x10;
23314 + } /* Otherwise it's not safe to add 16 bytes and we fall */
23315 + /* back to using /proc. */
23317 return __libc_stack_end;
23320 f = open("/proc/self/stat", O_RDONLY);
23321 if (f < 0 || STAT_READ(f, stat_buf, STAT_BUF_SIZE) < 2 * STAT_SKIP) {
23322 @@ -764,8 +966,11 @@
23324 ptr_t GC_get_stack_base()
23326 +# if defined(HEURISTIC1) || defined(HEURISTIC2) || \
23327 + defined(LINUX_STACKBOTTOM) || defined(FREEBSD_STACKBOTTOM)
23332 # define STACKBOTTOM_ALIGNMENT_M1 ((word)STACK_GRAN - 1)
23334 @@ -814,7 +1019,6 @@
23336 # endif /* STACKBOTTOM */
23338 -# endif /* NOSYS ECOS */
23340 # endif /* ! AMIGA, !OS 2, ! MS Windows, !BEOS */
23342 @@ -924,15 +1128,14 @@
23343 /* Unfortunately, we have to handle win32s very differently from NT, */
23344 /* Since VirtualQuery has very different semantics. In particular, */
23345 /* under win32s a VirtualQuery call on an unmapped page returns an */
23346 - /* invalid result. Under GC_register_data_segments is a noop and */
23347 + /* invalid result. Under NT, GC_register_data_segments is a noop and */
23348 /* all real work is done by GC_register_dynamic_libraries. Under */
23349 /* win32s, we cannot find the data segments associated with dll's. */
23350 - /* We rgister the main data segment here. */
23352 - GC_bool GC_no_win32_dlls = TRUE; /* GCC can't do SEH, so we can't use VirtualQuery */
23354 + /* We register the main data segment here. */
23355 GC_bool GC_no_win32_dlls = FALSE;
23357 + /* This used to be set for gcc, to avoid dealing with */
23358 + /* the structured exception handling issues. But we now have */
23359 + /* assembly code to do that right. */
23361 void GC_init_win32()
23363 @@ -965,35 +1168,101 @@
23367 - /* Is p the start of either the malloc heap, or of one of our */
23368 - /* heap sections? */
23369 - GC_bool GC_is_heap_base (ptr_t p)
23372 - register unsigned i;
23374 # ifndef REDIRECT_MALLOC
23375 - static ptr_t malloc_heap_pointer = 0;
23376 + /* We maintain a linked list of AllocationBase values that we know */
23377 + /* correspond to malloc heap sections. Currently this is only called */
23378 + /* during a GC. But there is some hope that for long running */
23379 + /* programs we will eventually see most heap sections. */
23381 - if (0 == malloc_heap_pointer) {
23382 - MEMORY_BASIC_INFORMATION buf;
23383 - void *pTemp = malloc( 1 );
23384 - register DWORD result = VirtualQuery(pTemp, &buf, sizeof(buf));
23385 + /* In the long run, it would be more reliable to occasionally walk */
23386 + /* the malloc heap with HeapWalk on the default heap. But that */
23387 + /* apparently works only for NT-based Windows. */
23390 + /* In the long run, a better data structure would also be nice ... */
23391 + struct GC_malloc_heap_list {
23392 + void * allocation_base;
23393 + struct GC_malloc_heap_list *next;
23394 + } *GC_malloc_heap_l = 0;
23396 + /* Is p the base of one of the malloc heap sections we already know */
23398 + GC_bool GC_is_malloc_heap_base(ptr_t p)
23400 + struct GC_malloc_heap_list *q = GC_malloc_heap_l;
23403 + if (q -> allocation_base == p) return TRUE;
23409 + void *GC_get_allocation_base(void *p)
23411 + MEMORY_BASIC_INFORMATION buf;
23412 + DWORD result = VirtualQuery(p, &buf, sizeof(buf));
23413 if (result != sizeof(buf)) {
23414 ABORT("Weird VirtualQuery result");
23416 - malloc_heap_pointer = (ptr_t)(buf.AllocationBase);
23417 + return buf.AllocationBase;
23419 - if (p == malloc_heap_pointer) return(TRUE);
23421 + size_t GC_max_root_size = 100000; /* Appr. largest root size. */
23423 + void GC_add_current_malloc_heap()
23425 + struct GC_malloc_heap_list *new_l =
23426 + malloc(sizeof(struct GC_malloc_heap_list));
23427 + void * candidate = GC_get_allocation_base(new_l);
23429 + if (new_l == 0) return;
23430 + if (GC_is_malloc_heap_base(candidate)) {
23431 + /* Try a little harder to find malloc heap. */
23432 + size_t req_size = 10000;
23434 + void *p = malloc(req_size);
23435 + if (0 == p) { free(new_l); return; }
23436 + candidate = GC_get_allocation_base(p);
23439 + } while (GC_is_malloc_heap_base(candidate)
23440 + && req_size < GC_max_root_size/10 && req_size < 500000);
23441 + if (GC_is_malloc_heap_base(candidate)) {
23442 + free(new_l); return;
23446 + if (GC_print_stats)
23447 + GC_printf1("Found new system malloc AllocationBase at 0x%lx\n",
23450 + new_l -> allocation_base = candidate;
23451 + new_l -> next = GC_malloc_heap_l;
23452 + GC_malloc_heap_l = new_l;
23454 +# endif /* REDIRECT_MALLOC */
23456 + /* Is p the start of either the malloc heap, or of one of our */
23457 + /* heap sections? */
23458 + GC_bool GC_is_heap_base (ptr_t p)
23463 +# ifndef REDIRECT_MALLOC
23464 + static word last_gc_no = -1;
23466 + if (last_gc_no != GC_gc_no) {
23467 + GC_add_current_malloc_heap();
23468 + last_gc_no = GC_gc_no;
23470 + if (GC_root_size > GC_max_root_size) GC_max_root_size = GC_root_size;
23471 + if (GC_is_malloc_heap_base(p)) return TRUE;
23473 for (i = 0; i < GC_n_heap_bases; i++) {
23474 - if (GC_heap_bases[i] == p) return(TRUE);
23475 + if (GC_heap_bases[i] == p) return TRUE;
23482 @@ -1043,7 +1312,7 @@
23484 # if (defined(SVR4) || defined(AUX) || defined(DGUX) \
23485 || (defined(LINUX) && defined(SPARC))) && !defined(PCR)
23486 -char * GC_SysVGetDataStart(max_page_size, etext_addr)
23487 +ptr_t GC_SysVGetDataStart(max_page_size, etext_addr)
23491 @@ -1069,12 +1338,45 @@
23492 /* string constants in the text segment, but after etext. */
23493 /* Use plan B. Note that we now know there is a gap between */
23494 /* text and data segments, so plan A bought us something. */
23495 - result = (char *)GC_find_limit((ptr_t)(DATAEND) - MIN_PAGE_SIZE, FALSE);
23496 + result = (char *)GC_find_limit((ptr_t)(DATAEND), FALSE);
23498 - return((char *)result);
23499 + return((ptr_t)result);
23503 +# if defined(FREEBSD) && defined(I386) && !defined(PCR)
23504 +/* Its unclear whether this should be identical to the above, or */
23505 +/* whether it should apply to non-X86 architectures. */
23506 +/* For now we don't assume that there is always an empty page after */
23507 +/* etext. But in some cases there actually seems to be slightly more. */
23508 +/* This also deals with holes between read-only data and writable data. */
23509 +ptr_t GC_FreeBSDGetDataStart(max_page_size, etext_addr)
23510 +int max_page_size;
23513 + word text_end = ((word)(etext_addr) + sizeof(word) - 1)
23514 + & ~(sizeof(word) - 1);
23515 + /* etext rounded to word boundary */
23516 + VOLATILE word next_page = (text_end + (word)max_page_size - 1)
23517 + & ~((word)max_page_size - 1);
23518 + VOLATILE ptr_t result = (ptr_t)text_end;
23519 + GC_setup_temporary_fault_handler();
23520 + if (setjmp(GC_jmp_buf) == 0) {
23521 + /* Try reading at the address. */
23522 + /* This should happen before there is another thread. */
23523 + for (; next_page < (word)(DATAEND); next_page += (word)max_page_size)
23524 + *(VOLATILE char *)next_page;
23525 + GC_reset_fault_handler();
23527 + GC_reset_fault_handler();
23528 + /* As above, we go to plan B */
23529 + result = GC_find_limit((ptr_t)(DATAEND), FALSE);
23539 @@ -1086,8 +1388,7 @@
23541 void GC_register_data_segments()
23543 -# if !defined(PCR) && !defined(SRC_M3) && !defined(NEXT) && !defined(MACOS) \
23544 - && !defined(MACOSX)
23545 +# if !defined(PCR) && !defined(SRC_M3) && !defined(MACOS)
23546 # if defined(REDIRECT_MALLOC) && defined(GC_SOLARIS_THREADS)
23547 /* As of Solaris 2.3, the Solaris threads implementation */
23548 /* allocates the data structure for the initial thread with */
23549 @@ -1104,9 +1405,6 @@
23553 -# if !defined(PCR) && (defined(NEXT) || defined(MACOSX))
23554 - GC_add_roots_inner(DATASTART, (char *) get_end(), FALSE);
23556 # if defined(MACOS)
23558 # if defined(THINK_C)
23559 @@ -1216,18 +1514,28 @@
23560 ptr_t GC_unix_get_mem(bytes)
23563 - static GC_bool initialized = FALSE;
23566 static ptr_t last_addr = HEAP_START;
23568 +# ifndef USE_MMAP_ANON
23569 + static GC_bool initialized = FALSE;
23572 if (!initialized) {
23573 fd = open("/dev/zero", O_RDONLY);
23574 + fcntl(fd, F_SETFD, FD_CLOEXEC);
23575 initialized = TRUE;
23579 if (bytes & (GC_page_size -1)) ABORT("Bad GET_MEM arg");
23580 +# ifdef USE_MMAP_ANON
23581 + result = mmap(last_addr, bytes, PROT_READ | PROT_WRITE | OPT_PROT_EXEC,
23582 + GC_MMAP_FLAGS | MAP_ANON, -1, 0/* offset */);
23584 result = mmap(last_addr, bytes, PROT_READ | PROT_WRITE | OPT_PROT_EXEC,
23585 GC_MMAP_FLAGS, fd, 0/* offset */);
23587 if (result == MAP_FAILED) return(0);
23588 last_addr = (ptr_t)result + bytes + GC_page_size - 1;
23589 last_addr = (ptr_t)((word)last_addr & ~(GC_page_size - 1));
23590 @@ -1322,7 +1630,15 @@
23591 result = (ptr_t) GlobalAlloc(0, bytes + HBLKSIZE);
23592 result = (ptr_t)(((word)result + HBLKSIZE) & ~(HBLKSIZE-1));
23594 - result = (ptr_t) VirtualAlloc(NULL, bytes,
23595 + /* VirtualProtect only works on regions returned by a */
23596 + /* single VirtualAlloc call. Thus we allocate one */
23597 + /* extra page, which will prevent merging of blocks */
23598 + /* in separate regions, and eliminate any temptation */
23599 + /* to call VirtualProtect on a range spanning regions. */
23600 + /* This wastes a small amount of memory, and risks */
23601 + /* increased fragmentation. But better alternatives */
23602 + /* would require effort. */
23603 + result = (ptr_t) VirtualAlloc(NULL, bytes + 1,
23604 MEM_COMMIT | MEM_RESERVE,
23605 PAGE_EXECUTE_READWRITE);
23607 @@ -1378,6 +1694,10 @@
23608 /* Reserve more pages */
23609 word res_bytes = (bytes + GC_sysinfo.dwAllocationGranularity-1)
23610 & ~(GC_sysinfo.dwAllocationGranularity-1);
23611 + /* If we ever support MPROTECT_VDB here, we will probably need to */
23612 + /* ensure that res_bytes is strictly > bytes, so that VirtualProtect */
23613 + /* never spans regions. It seems to be OK for a VirtualFree argument */
23614 + /* to span regions, so we should be OK for now. */
23615 result = (ptr_t) VirtualAlloc(NULL, res_bytes,
23616 MEM_RESERVE | MEM_TOP_DOWN,
23617 PAGE_EXECUTE_READWRITE);
23618 @@ -1508,6 +1828,7 @@
23621 if (-1 == zero_descr) zero_descr = open("/dev/zero", O_RDWR);
23622 + fcntl(zero_descr, F_SETFD, FD_CLOEXEC);
23623 if (0 == start_addr) return;
23624 result = mmap(start_addr, len, PROT_READ | PROT_WRITE | OPT_PROT_EXEC,
23625 MAP_FIXED | MAP_PRIVATE, zero_descr, 0);
23626 @@ -1694,7 +2015,6 @@
23627 * make sure that other system calls are similarly protected
23628 * or write only to the stack.
23631 GC_bool GC_dirty_maintained = FALSE;
23633 # ifdef DEFAULT_VDB
23634 @@ -1708,6 +2028,9 @@
23635 /* Initialize virtual dirty bit implementation. */
23636 void GC_dirty_init()
23639 + GC_printf0("Initializing DEFAULT_VDB...\n");
23641 GC_dirty_maintained = TRUE;
23644 @@ -1776,17 +2099,21 @@
23646 * This implementation maintains dirty bits itself by catching write
23647 * faults and keeping track of them. We assume nobody else catches
23648 - * SIGBUS or SIGSEGV. We assume no write faults occur in system calls
23649 - * except as a result of a read system call. This means clients must
23650 - * either ensure that system calls do not touch the heap, or must
23651 - * provide their own wrappers analogous to the one for read.
23652 + * SIGBUS or SIGSEGV. We assume no write faults occur in system calls.
23653 + * This means that clients must ensure that system calls don't write
23654 + * to the write-protected heap. Probably the best way to do this is to
23655 + * ensure that system calls write at most to POINTERFREE objects in the
23656 + * heap, and do even that only if we are on a platform on which those
23657 + * are not protected. Another alternative is to wrap system calls
23658 + * (see example for read below), but the current implementation holds
23659 + * a lock across blocking calls, making it problematic for multithreaded
23661 * We assume the page size is a multiple of HBLKSIZE.
23662 - * This implementation is currently SunOS 4.X and IRIX 5.X specific, though we
23663 - * tried to use portable code where easily possible. It is known
23664 - * not to work under a number of other systems.
23665 + * We prefer them to be the same. We avoid protecting POINTERFREE
23666 + * objects only if they are the same.
23669 -# if !defined(MSWIN32) && !defined(MSWINCE)
23670 +# if !defined(MSWIN32) && !defined(MSWINCE) && !defined(DARWIN)
23672 # include <sys/mman.h>
23673 # include <signal.h>
23674 @@ -1805,6 +2132,23 @@
23679 + /* Using vm_protect (mach syscall) over mprotect (BSD syscall) seems to
23680 + decrease the likelihood of some of the problems described below. */
23681 + #include <mach/vm_map.h>
23682 + extern mach_port_t GC_task_self;
23683 + #define PROTECT(addr,len) \
23684 + if(vm_protect(GC_task_self,(vm_address_t)(addr),(vm_size_t)(len), \
23685 + FALSE,VM_PROT_READ) != KERN_SUCCESS) { \
23686 + ABORT("vm_portect failed"); \
23688 + #define UNPROTECT(addr,len) \
23689 + if(vm_protect(GC_task_self,(vm_address_t)(addr),(vm_size_t)(len), \
23690 + FALSE,VM_PROT_READ|VM_PROT_WRITE) != KERN_SUCCESS) { \
23691 + ABORT("vm_portect failed"); \
23696 # include <signal.h>
23698 @@ -1822,20 +2166,22 @@
23699 &protect_junk)) { \
23700 ABORT("un-VirtualProtect failed"); \
23704 +# endif /* !DARWIN */
23705 +# endif /* MSWIN32 || MSWINCE || DARWIN */
23707 #if defined(SUNOS4) || defined(FREEBSD)
23708 typedef void (* SIG_PF)();
23710 +#endif /* SUNOS4 || FREEBSD */
23712 #if defined(SUNOS5SIGS) || defined(OSF1) || defined(LINUX) \
23713 - || defined(MACOSX) || defined(HURD)
23716 typedef void (* SIG_PF)(int);
23718 typedef void (* SIG_PF)();
23721 +#endif /* SUNOS5SIGS || OSF1 || LINUX || HURD */
23723 #if defined(MSWIN32)
23724 typedef LPTOP_LEVEL_EXCEPTION_FILTER SIG_PF;
23726 @@ -1849,7 +2195,8 @@
23728 #if defined(IRIX5) || defined(OSF1) || defined(HURD)
23729 typedef void (* REAL_SIG_PF)(int, int, struct sigcontext *);
23731 +#endif /* IRIX5 || OSF1 || HURD */
23733 #if defined(SUNOS5SIGS)
23735 # define SIGINFO __siginfo
23736 @@ -1861,13 +2208,14 @@
23738 typedef void (* REAL_SIG_PF)();
23741 +#endif /* SUNOS5SIGS */
23744 # if __GLIBC__ > 2 || __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2
23745 typedef struct sigcontext s_c;
23746 # else /* glibc < 2.2 */
23747 # include <linux/version.h>
23748 -# if (LINUX_VERSION_CODE >= 0x20100) && !defined(M68K) || defined(ALPHA)
23749 +# if (LINUX_VERSION_CODE >= 0x20100) && !defined(M68K) || defined(ALPHA) || defined(ARM32)
23750 typedef struct sigcontext s_c;
23752 typedef struct sigcontext_struct s_c;
23753 @@ -1895,139 +2243,14 @@
23754 return (char *)faultaddr;
23756 # endif /* !ALPHA */
23759 -# if defined(MACOSX) /* Should also test for PowerPC? */
23760 - typedef void (* REAL_SIG_PF)(int, int, struct sigcontext *);
23762 -/* Decodes the machine instruction which was responsible for the sending of the
23763 - SIGBUS signal. Sadly this is the only way to find the faulting address because
23764 - the signal handler doesn't get it directly from the kernel (although it is
23765 - available on the Mach level, but droppped by the BSD personality before it
23766 - calls our signal handler...)
23767 - This code should be able to deal correctly with all PPCs starting from the
23768 - 601 up to and including the G4s (including Velocity Engine). */
23769 -#define EXTRACT_OP1(iw) (((iw) & 0xFC000000) >> 26)
23770 -#define EXTRACT_OP2(iw) (((iw) & 0x000007FE) >> 1)
23771 -#define EXTRACT_REGA(iw) (((iw) & 0x001F0000) >> 16)
23772 -#define EXTRACT_REGB(iw) (((iw) & 0x03E00000) >> 21)
23773 -#define EXTRACT_REGC(iw) (((iw) & 0x0000F800) >> 11)
23774 -#define EXTRACT_DISP(iw) ((short *) &(iw))[1]
23776 -static char *get_fault_addr(struct sigcontext *scp)
23778 - unsigned int instr = *((unsigned int *) scp->sc_ir);
23779 - unsigned int * regs = &((unsigned int *) scp->sc_regs)[2];
23780 - int disp = 0, tmp;
23781 - unsigned int baseA = 0, baseB = 0;
23782 - unsigned int addr, alignmask = 0xFFFFFFFF;
23784 -#ifdef GC_DEBUG_DECODER
23785 - GC_err_printf1("Instruction: 0x%lx\n", instr);
23786 - GC_err_printf1("Opcode 1: d\n", (int)EXTRACT_OP1(instr));
23788 - switch(EXTRACT_OP1(instr)) {
23789 - case 38: /* stb */
23790 - case 39: /* stbu */
23791 - case 54: /* stfd */
23792 - case 55: /* stfdu */
23793 - case 52: /* stfs */
23794 - case 53: /* stfsu */
23795 - case 44: /* sth */
23796 - case 45: /* sthu */
23797 - case 47: /* stmw */
23798 - case 36: /* stw */
23799 - case 37: /* stwu */
23800 - tmp = EXTRACT_REGA(instr);
23802 - baseA = regs[tmp];
23803 - disp = EXTRACT_DISP(instr);
23806 -#ifdef GC_DEBUG_DECODER
23807 - GC_err_printf1("Opcode 2: %d\n", (int)EXTRACT_OP2(instr));
23809 - switch(EXTRACT_OP2(instr)) {
23810 - case 86: /* dcbf */
23811 - case 54: /* dcbst */
23812 - case 1014: /* dcbz */
23813 - case 247: /* stbux */
23814 - case 215: /* stbx */
23815 - case 759: /* stfdux */
23816 - case 727: /* stfdx */
23817 - case 983: /* stfiwx */
23818 - case 695: /* stfsux */
23819 - case 663: /* stfsx */
23820 - case 918: /* sthbrx */
23821 - case 439: /* sthux */
23822 - case 407: /* sthx */
23823 - case 661: /* stswx */
23824 - case 662: /* stwbrx */
23825 - case 150: /* stwcx. */
23826 - case 183: /* stwux */
23827 - case 151: /* stwx */
23828 - case 135: /* stvebx */
23829 - case 167: /* stvehx */
23830 - case 199: /* stvewx */
23831 - case 231: /* stvx */
23832 - case 487: /* stvxl */
23833 - tmp = EXTRACT_REGA(instr);
23835 - baseA = regs[tmp];
23836 - baseB = regs[EXTRACT_REGC(instr)];
23837 - /* determine Altivec alignment mask */
23838 - switch(EXTRACT_OP2(instr)) {
23839 - case 167: /* stvehx */
23840 - alignmask = 0xFFFFFFFE;
23842 - case 199: /* stvewx */
23843 - alignmask = 0xFFFFFFFC;
23845 - case 231: /* stvx */
23846 - alignmask = 0xFFFFFFF0;
23848 - case 487: /* stvxl */
23849 - alignmask = 0xFFFFFFF0;
23853 - case 725: /* stswi */
23854 - tmp = EXTRACT_REGA(instr);
23856 - baseA = regs[tmp];
23858 - default: /* ignore instruction */
23859 -#ifdef GC_DEBUG_DECODER
23860 - GC_err_printf("Ignored by inner handler\n");
23866 - default: /* ignore instruction */
23867 -#ifdef GC_DEBUG_DECODER
23868 - GC_err_printf("Ignored by main handler\n");
23874 - addr = (baseA + baseB) + disp;
23875 - addr &= alignmask;
23876 -#ifdef GC_DEBUG_DECODER
23877 - GC_err_printf1("BaseA: %d\n", baseA);
23878 - GC_err_printf1("BaseB: %d\n", baseB);
23879 - GC_err_printf1("Disp: %d\n", disp);
23880 - GC_err_printf1("Address: %d\n", addr);
23882 - return (char *)addr;
23884 -#endif /* MACOSX */
23885 +# endif /* LINUX */
23888 SIG_PF GC_old_bus_handler;
23889 SIG_PF GC_old_segv_handler; /* Also old MSWIN32 ACCESS_VIOLATION filter */
23890 +#endif /* !DARWIN */
23893 +#if defined(THREADS)
23894 /* We need to lock around the bitmap update in the write fault handler */
23895 /* in order to avoid the risk of losing a bit. We do this with a */
23896 /* test-and-set spin lock if we know how to do that. Otherwise we */
23897 @@ -2076,6 +2299,7 @@
23898 #endif /* !THREADS */
23901 +#if !defined(DARWIN)
23902 # if defined (SUNOS4) || defined(FREEBSD)
23903 void GC_write_fault_handler(sig, code, scp, addr)
23905 @@ -2091,7 +2315,8 @@
23906 # define SIG_OK (sig == SIGBUS)
23907 # define CODE_OK (code == BUS_PAGE_FAULT)
23910 +# endif /* SUNOS4 || FREEBSD */
23912 # if defined(IRIX5) || defined(OSF1) || defined(HURD)
23913 # include <errno.h>
23914 void GC_write_fault_handler(int sig, int code, struct sigcontext *scp)
23915 @@ -2107,7 +2332,8 @@
23916 # define SIG_OK (sig == SIGBUS || sig == SIGSEGV)
23917 # define CODE_OK TRUE
23920 +# endif /* IRIX5 || OSF1 || HURD */
23922 # if defined(LINUX)
23923 # if defined(ALPHA) || defined(M68K)
23924 void GC_write_fault_handler(int sig, int code, s_c * sc)
23925 @@ -2115,15 +2341,20 @@
23926 # if defined(IA64) || defined(HP_PA)
23927 void GC_write_fault_handler(int sig, siginfo_t * si, s_c * scp)
23929 +# if defined(ARM32)
23930 + void GC_write_fault_handler(int sig, int a2, int a3, int a4, s_c sc)
23932 void GC_write_fault_handler(int sig, s_c sc)
23936 # define SIG_OK (sig == SIGSEGV)
23937 # define CODE_OK TRUE
23938 /* Empirically c.trapno == 14, on IA32, but is that useful? */
23939 /* Should probably consider alignment issues on other */
23940 /* architectures. */
23942 +# endif /* LINUX */
23944 # if defined(SUNOS5SIGS)
23946 void GC_write_fault_handler(int sig, struct SIGINFO *scp, void * context)
23947 @@ -2144,13 +2375,7 @@
23948 # define SIG_OK (sig == SIGSEGV)
23949 # define CODE_OK (scp -> si_code == SEGV_ACCERR)
23953 -# if defined(MACOSX)
23954 - void GC_write_fault_handler(int sig, int code, struct sigcontext *scp)
23955 -# define SIG_OK (sig == SIGBUS)
23956 -# define CODE_OK (code == 0 /* experimentally determined */)
23958 +# endif /* SUNOS5SIGS */
23960 # if defined(MSWIN32) || defined(MSWINCE)
23961 LONG WINAPI GC_write_fault_handler(struct _EXCEPTION_POINTERS *exc_info)
23962 @@ -2158,7 +2383,7 @@
23963 STATUS_ACCESS_VIOLATION)
23964 # define CODE_OK (exc_info -> ExceptionRecord -> ExceptionInformation[0] == 1)
23967 +# endif /* MSWIN32 || MSWINCE */
23969 register unsigned i;
23971 @@ -2218,6 +2443,9 @@
23972 # if defined(POWERPC)
23973 char * addr = (char *) (sc.regs->dar);
23975 +# if defined(ARM32)
23976 + char * addr = (char *)sc.fault_address;
23978 --> architecture not supported
23981 @@ -2225,8 +2453,6 @@
23985 -# if defined(MACOSX)
23986 - char * addr = get_fault_addr(scp);
23988 # if defined(MSWIN32) || defined(MSWINCE)
23989 char * addr = (char *) (exc_info -> ExceptionRecord
23990 @@ -2291,9 +2517,6 @@
23991 (*(REAL_SIG_PF)old_handler) (sig, code, scp);
23995 - (*(REAL_SIG_PF)old_handler) (sig, code, scp);
23998 return((*old_handler)(exc_info));
24000 @@ -2335,10 +2558,11 @@
24001 ABORT("Unexpected bus error or segmentation fault");
24004 +#endif /* !DARWIN */
24007 * We hold the allocation lock. We expect block h to be written
24008 - * shortly. Ensure that all pages cvontaining any part of the n hblks
24009 + * shortly. Ensure that all pages containing any part of the n hblks
24010 * starting at h are no longer protected. If is_ptrfree is false,
24011 * also ensure that they will subsequently appear to be dirty.
24013 @@ -2367,6 +2591,7 @@
24014 UNPROTECT(h_trunc, (ptr_t)h_end - (ptr_t)h_trunc);
24017 +#if !defined(DARWIN)
24018 void GC_dirty_init()
24020 # if defined(SUNOS5SIGS) || defined(IRIX5) || defined(LINUX) || \
24021 @@ -2389,13 +2614,6 @@
24022 (void)sigaddset(&act.sa_mask, SIG_SUSPEND);
24023 # endif /* SIG_SUSPEND */
24025 -# if defined(MACOSX)
24026 - struct sigaction act, oldact;
24028 - act.sa_flags = SA_RESTART;
24029 - act.sa_handler = GC_write_fault_handler;
24030 - sigemptyset(&act.sa_mask);
24033 GC_printf0("Inititalizing mprotect virtual dirty bit implementation\n");
24035 @@ -2435,9 +2653,12 @@
24036 sigaction(SIGSEGV, 0, &oldact);
24037 sigaction(SIGSEGV, &act, 0);
24039 - sigaction(SIGSEGV, &act, &oldact);
24041 + int res = sigaction(SIGSEGV, &act, &oldact);
24042 + if (res != 0) ABORT("Sigaction failed");
24045 -# if defined(_sigargs) || defined(HURD)
24046 +# if defined(_sigargs) || defined(HURD) || !defined(SA_SIGINFO)
24047 /* This is Irix 5.x, not 6.x. Irix 5.x does not have */
24048 /* sa_sigaction. */
24049 GC_old_segv_handler = oldact.sa_handler;
24050 @@ -2458,7 +2679,7 @@
24054 -# if defined(MACOSX) || defined(HPUX) || defined(LINUX) || defined(HURD)
24055 +# if defined(HPUX) || defined(LINUX) || defined(HURD)
24056 sigaction(SIGBUS, &act, &oldact);
24057 GC_old_bus_handler = oldact.sa_handler;
24058 if (GC_old_bus_handler == SIG_IGN) {
24059 @@ -2470,7 +2691,7 @@
24060 GC_err_printf0("Replaced other SIGBUS handler\n");
24063 -# endif /* MACOS || HPUX || LINUX */
24064 +# endif /* HPUX || LINUX || HURD */
24065 # if defined(MSWIN32)
24066 GC_old_segv_handler = SetUnhandledExceptionFilter(GC_write_fault_handler);
24067 if (GC_old_segv_handler != NULL) {
24068 @@ -2482,6 +2703,7 @@
24072 +#endif /* !DARWIN */
24074 int GC_incremental_protection_needs()
24076 @@ -2628,15 +2850,23 @@
24077 ((ptr_t)end_block - (ptr_t)start_block) + HBLKSIZE);
24080 -#if !defined(MSWIN32) && !defined(MSWINCE) && !defined(THREADS) \
24081 - && !defined(GC_USE_LD_WRAP)
24084 +/* We no longer wrap read by default, since that was causing too many */
24085 +/* problems. It is preferred that the client instead avoids writing */
24086 +/* to the write-protected heap with a system call. */
24087 +/* This still serves as sample code if you do want to wrap system calls.*/
24089 +#if !defined(MSWIN32) && !defined(MSWINCE) && !defined(GC_USE_LD_WRAP)
24090 /* Replacement for UNIX system call. */
24091 /* Other calls that write to the heap should be handled similarly. */
24092 /* Note that this doesn't work well for blocking reads: It will hold */
24093 -/* tha allocation lock for the entur duration of the call. Multithreaded */
24094 +/* the allocation lock for the entire duration of the call. Multithreaded */
24095 /* clients should really ensure that it won't block, either by setting */
24096 /* the descriptor nonblocking, or by calling select or poll first, to */
24097 /* make sure that input is available. */
24098 +/* Another, preferred alternative is to ensure that system calls never */
24099 +/* write to the protected heap (see above). */
24100 # if defined(__STDC__) && !defined(SUNOS4)
24101 # include <unistd.h>
24102 # include <sys/uio.h>
24103 @@ -2706,6 +2936,8 @@
24104 /* actually calls. */
24110 GC_bool GC_page_was_ever_dirty(h)
24112 @@ -2721,13 +2953,6 @@
24116 -# else /* !MPROTECT_VDB */
24118 -# ifdef GC_USE_LD_WRAP
24119 - ssize_t __wrap_read(int fd, void *buf, size_t nbyte)
24120 - { return __real_read(fd, buf, nbyte); }
24123 # endif /* MPROTECT_VDB */
24126 @@ -2806,6 +3031,7 @@
24128 GC_proc_fd = syscall(SYS_ioctl, fd, PIOCOPENPD, 0);
24130 + syscall(SYS_fcntl, GC_proc_fd, F_SETFD, FD_CLOEXEC);
24131 if (GC_proc_fd < 0) {
24132 ABORT("/proc ioctl failed");
24134 @@ -3045,6 +3271,553 @@
24136 # endif /* PCR_VDB */
24138 +#if defined(MPROTECT_VDB) && defined(DARWIN)
24139 +/* The following sources were used as a *reference* for this exception handling
24141 + 1. Apple's mach/xnu documentation
24142 + 2. Timothy J. Wood's "Mach Exception Handlers 101" post to the
24143 + omnigroup's macosx-dev list.
24144 + www.omnigroup.com/mailman/archive/macosx-dev/2000-June/002030.html
24145 + 3. macosx-nat.c from Apple's GDB source code.
24148 +/* There seem to be numerous problems with darwin's mach exception handling.
24149 + I'm pretty sure they are not problems in my code. Search for
24150 + BROKEN_EXCEPTION_HANDLING for more information. */
24151 +#define BROKEN_EXCEPTION_HANDLING
24153 +#include <mach/mach.h>
24154 +#include <mach/mach_error.h>
24155 +#include <mach/thread_status.h>
24156 +#include <mach/exception.h>
24157 +#include <mach/task.h>
24158 +#include <pthread.h>
24160 +/* These are not defined in any header, although they are documented */
24161 +extern boolean_t exc_server(mach_msg_header_t *,mach_msg_header_t *);
24162 +extern kern_return_t exception_raise(
24163 + mach_port_t,mach_port_t,mach_port_t,
24164 + exception_type_t,exception_data_t,mach_msg_type_number_t);
24165 +extern kern_return_t exception_raise_state(
24166 + mach_port_t,mach_port_t,mach_port_t,
24167 + exception_type_t,exception_data_t,mach_msg_type_number_t,
24168 + thread_state_flavor_t*,thread_state_t,mach_msg_type_number_t,
24169 + thread_state_t,mach_msg_type_number_t*);
24170 +extern kern_return_t exception_raise_state_identity(
24171 + mach_port_t,mach_port_t,mach_port_t,
24172 + exception_type_t,exception_data_t,mach_msg_type_number_t,
24173 + thread_state_flavor_t*,thread_state_t,mach_msg_type_number_t,
24174 + thread_state_t,mach_msg_type_number_t*);
24177 +#define MAX_EXCEPTION_PORTS 16
24179 +static mach_port_t GC_task_self;
24182 + mach_msg_type_number_t count;
24183 + exception_mask_t masks[MAX_EXCEPTION_PORTS];
24184 + exception_handler_t ports[MAX_EXCEPTION_PORTS];
24185 + exception_behavior_t behaviors[MAX_EXCEPTION_PORTS];
24186 + thread_state_flavor_t flavors[MAX_EXCEPTION_PORTS];
24187 +} GC_old_exc_ports;
24190 + mach_port_t exception;
24191 +#if defined(THREADS)
24192 + mach_port_t reply;
24197 + mach_msg_header_t head;
24201 + GC_MP_NORMAL, GC_MP_DISCARDING, GC_MP_STOPPED
24202 +} GC_mprotect_state_t;
24204 +/* FIXME: 1 and 2 seem to be safe to use in the msgh_id field,
24205 + but it isn't documented. Use the source and see if they
24208 +#define ID_RESUME 2
24210 +/* These values are only used on the reply port */
24213 +#if defined(THREADS)
24215 +GC_mprotect_state_t GC_mprotect_state;
24217 +/* The following should ONLY be called when the world is stopped */
24218 +static void GC_mprotect_thread_notify(mach_msg_id_t id) {
24221 + mach_msg_trailer_t trailer;
24223 + mach_msg_return_t r;
24224 + /* remote, local */
24225 + buf.msg.head.msgh_bits =
24226 + MACH_MSGH_BITS(MACH_MSG_TYPE_MAKE_SEND,0);
24227 + buf.msg.head.msgh_size = sizeof(buf.msg);
24228 + buf.msg.head.msgh_remote_port = GC_ports.exception;
24229 + buf.msg.head.msgh_local_port = MACH_PORT_NULL;
24230 + buf.msg.head.msgh_id = id;
24234 + MACH_SEND_MSG|MACH_RCV_MSG|MACH_RCV_LARGE,
24238 + MACH_MSG_TIMEOUT_NONE,
24240 + if(r != MACH_MSG_SUCCESS)
24241 + ABORT("mach_msg failed in GC_mprotect_thread_notify");
24242 + if(buf.msg.head.msgh_id != ID_ACK)
24243 + ABORT("invalid ack in GC_mprotect_thread_notify");
24246 +/* Should only be called by the mprotect thread */
24247 +static void GC_mprotect_thread_reply() {
24249 + mach_msg_return_t r;
24250 + /* remote, local */
24251 + msg.head.msgh_bits =
24252 + MACH_MSGH_BITS(MACH_MSG_TYPE_MAKE_SEND,0);
24253 + msg.head.msgh_size = sizeof(msg);
24254 + msg.head.msgh_remote_port = GC_ports.reply;
24255 + msg.head.msgh_local_port = MACH_PORT_NULL;
24256 + msg.head.msgh_id = ID_ACK;
24264 + MACH_MSG_TIMEOUT_NONE,
24266 + if(r != MACH_MSG_SUCCESS)
24267 + ABORT("mach_msg failed in GC_mprotect_thread_reply");
24270 +void GC_mprotect_stop() {
24271 + GC_mprotect_thread_notify(ID_STOP);
24273 +void GC_mprotect_resume() {
24274 + GC_mprotect_thread_notify(ID_RESUME);
24277 +#else /* !THREADS */
24278 +/* The compiler should optimize away any GC_mprotect_state computations */
24279 +#define GC_mprotect_state GC_MP_NORMAL
24282 +static void *GC_mprotect_thread(void *arg) {
24283 + mach_msg_return_t r;
24284 + /* These two structures contain some private kernel data. We don't need to
24285 + access any of it so we don't bother defining a proper struct. The
24286 + correct definitions are in the xnu source code. */
24288 + mach_msg_header_t head;
24292 + mach_msg_header_t head;
24293 + mach_msg_body_t msgh_body;
24297 + mach_msg_id_t id;
24302 + MACH_RCV_MSG|MACH_RCV_LARGE|
24303 + (GC_mprotect_state == GC_MP_DISCARDING ? MACH_RCV_TIMEOUT : 0),
24306 + GC_ports.exception,
24307 + GC_mprotect_state == GC_MP_DISCARDING ? 0 : MACH_MSG_TIMEOUT_NONE,
24310 + id = r == MACH_MSG_SUCCESS ? msg.head.msgh_id : -1;
24312 +#if defined(THREADS)
24313 + if(GC_mprotect_state == GC_MP_DISCARDING) {
24314 + if(r == MACH_RCV_TIMED_OUT) {
24315 + GC_mprotect_state = GC_MP_STOPPED;
24316 + GC_mprotect_thread_reply();
24319 + if(r == MACH_MSG_SUCCESS && (id == ID_STOP || id == ID_RESUME))
24320 + ABORT("out of order mprotect thread request");
24324 + if(r != MACH_MSG_SUCCESS) {
24325 + GC_err_printf2("mach_msg failed with %d %s\n",
24326 + (int)r,mach_error_string(r));
24327 + ABORT("mach_msg failed");
24331 +#if defined(THREADS)
24333 + if(GC_mprotect_state != GC_MP_NORMAL)
24334 + ABORT("Called mprotect_stop when state wasn't normal");
24335 + GC_mprotect_state = GC_MP_DISCARDING;
24338 + if(GC_mprotect_state != GC_MP_STOPPED)
24339 + ABORT("Called mprotect_resume when state wasn't stopped");
24340 + GC_mprotect_state = GC_MP_NORMAL;
24341 + GC_mprotect_thread_reply();
24343 +#endif /* THREADS */
24345 + /* Handle the message (calls catch_exception_raise) */
24346 + if(!exc_server(&msg.head,&reply.head))
24347 + ABORT("exc_server failed");
24348 + /* Send the reply */
24352 + reply.head.msgh_size,
24355 + MACH_MSG_TIMEOUT_NONE,
24357 + if(r != MACH_MSG_SUCCESS) {
24358 + /* This will fail if the thread dies, but the thread shouldn't
24360 + #ifdef BROKEN_EXCEPTION_HANDLING
24362 + "mach_msg failed with %d %s while sending exc reply\n",
24363 + (int)r,mach_error_string(r));
24365 + ABORT("mach_msg failed while sending exception reply");
24370 + /* NOT REACHED */
24374 +/* All this SIGBUS code shouldn't be necessary. All protection faults should
24375 + be going throught the mach exception handler. However, it seems a SIGBUS is
24376 + occasionally sent for some unknown reason. Even more odd, it seems to be
24377 + meaningless and safe to ignore. */
24378 +#ifdef BROKEN_EXCEPTION_HANDLING
24380 +typedef void (* SIG_PF)();
24381 +static SIG_PF GC_old_bus_handler;
24383 +/* Updates to this aren't atomic, but the SIGBUSs seem pretty rare.
24384 + Even if this doesn't get updated property, it isn't really a problem */
24385 +static int GC_sigbus_count;
24387 +static void GC_darwin_sigbus(int num,siginfo_t *sip,void *context) {
24388 + if(num != SIGBUS) ABORT("Got a non-sigbus signal in the sigbus handler");
24390 + /* Ugh... some seem safe to ignore, but too many in a row probably means
24391 + trouble. GC_sigbus_count is reset for each mach exception that is
24393 + if(GC_sigbus_count >= 8) {
24394 + ABORT("Got more than 8 SIGBUSs in a row!");
24396 + GC_sigbus_count++;
24397 + GC_err_printf0("GC: WARNING: Ignoring SIGBUS.\n");
24400 +#endif /* BROKEN_EXCEPTION_HANDLING */
24402 +void GC_dirty_init() {
24405 + pthread_t thread;
24406 + pthread_attr_t attr;
24407 + exception_mask_t mask;
24409 +# ifdef PRINTSTATS
24410 + GC_printf0("Inititalizing mach/darwin mprotect virtual dirty bit "
24411 + "implementation\n");
24413 +# ifdef BROKEN_EXCEPTION_HANDLING
24414 + GC_err_printf0("GC: WARNING: Enabling workarounds for various darwin "
24415 + "exception handling bugs.\n");
24417 + GC_dirty_maintained = TRUE;
24418 + if (GC_page_size % HBLKSIZE != 0) {
24419 + GC_err_printf0("Page size not multiple of HBLKSIZE\n");
24420 + ABORT("Page size not multiple of HBLKSIZE");
24423 + GC_task_self = me = mach_task_self();
24425 + r = mach_port_allocate(me,MACH_PORT_RIGHT_RECEIVE,&GC_ports.exception);
24426 + if(r != KERN_SUCCESS) ABORT("mach_port_allocate failed (exception port)");
24428 + r = mach_port_insert_right(me,GC_ports.exception,GC_ports.exception,
24429 + MACH_MSG_TYPE_MAKE_SEND);
24430 + if(r != KERN_SUCCESS)
24431 + ABORT("mach_port_insert_right failed (exception port)");
24433 + #if defined(THREADS)
24434 + r = mach_port_allocate(me,MACH_PORT_RIGHT_RECEIVE,&GC_ports.reply);
24435 + if(r != KERN_SUCCESS) ABORT("mach_port_allocate failed (reply port)");
24438 + /* The exceptions we want to catch */
24439 + mask = EXC_MASK_BAD_ACCESS;
24441 + r = task_get_exception_ports(
24444 + GC_old_exc_ports.masks,
24445 + &GC_old_exc_ports.count,
24446 + GC_old_exc_ports.ports,
24447 + GC_old_exc_ports.behaviors,
24448 + GC_old_exc_ports.flavors
24450 + if(r != KERN_SUCCESS) ABORT("task_get_exception_ports failed");
24452 + r = task_set_exception_ports(
24455 + GC_ports.exception,
24456 + EXCEPTION_DEFAULT,
24457 + MACHINE_THREAD_STATE
24459 + if(r != KERN_SUCCESS) ABORT("task_set_exception_ports failed");
24461 + if(pthread_attr_init(&attr) != 0) ABORT("pthread_attr_init failed");
24462 + if(pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED) != 0)
24463 + ABORT("pthread_attr_setdetachedstate failed");
24465 +# undef pthread_create
24466 + /* This will call the real pthread function, not our wrapper */
24467 + if(pthread_create(&thread,&attr,GC_mprotect_thread,NULL) != 0)
24468 + ABORT("pthread_create failed");
24469 + pthread_attr_destroy(&attr);
24471 + /* Setup the sigbus handler for ignoring the meaningless SIGBUSs */
24472 + #ifdef BROKEN_EXCEPTION_HANDLING
24474 + struct sigaction sa, oldsa;
24475 + sa.sa_handler = (SIG_PF)GC_darwin_sigbus;
24476 + sigemptyset(&sa.sa_mask);
24477 + sa.sa_flags = SA_RESTART|SA_SIGINFO;
24478 + if(sigaction(SIGBUS,&sa,&oldsa) < 0) ABORT("sigaction");
24479 + GC_old_bus_handler = (SIG_PF)oldsa.sa_handler;
24480 + if (GC_old_bus_handler != SIG_DFL) {
24481 +# ifdef PRINTSTATS
24482 + GC_err_printf0("Replaced other SIGBUS handler\n");
24486 + #endif /* BROKEN_EXCEPTION_HANDLING */
24489 +/* The source code for Apple's GDB was used as a reference for the exception
24490 + forwarding code. This code is similar to be GDB code only because there is
24491 + only one way to do it. */
24492 +static kern_return_t GC_forward_exception(
24493 + mach_port_t thread,
24494 + mach_port_t task,
24495 + exception_type_t exception,
24496 + exception_data_t data,
24497 + mach_msg_type_number_t data_count
24501 + mach_port_t port;
24502 + exception_behavior_t behavior;
24503 + thread_state_flavor_t flavor;
24505 + thread_state_data_t thread_state;
24506 + mach_msg_type_number_t thread_state_count = THREAD_STATE_MAX;
24508 + for(i=0;i<GC_old_exc_ports.count;i++)
24509 + if(GC_old_exc_ports.masks[i] & (1 << exception))
24511 + if(i==GC_old_exc_ports.count) ABORT("No handler for exception!");
24513 + port = GC_old_exc_ports.ports[i];
24514 + behavior = GC_old_exc_ports.behaviors[i];
24515 + flavor = GC_old_exc_ports.flavors[i];
24517 + if(behavior != EXCEPTION_DEFAULT) {
24518 + r = thread_get_state(thread,flavor,thread_state,&thread_state_count);
24519 + if(r != KERN_SUCCESS)
24520 + ABORT("thread_get_state failed in forward_exception");
24523 + switch(behavior) {
24524 + case EXCEPTION_DEFAULT:
24525 + r = exception_raise(port,thread,task,exception,data,data_count);
24527 + case EXCEPTION_STATE:
24528 + r = exception_raise_state(port,thread,task,exception,data,
24529 + data_count,&flavor,thread_state,thread_state_count,
24530 + thread_state,&thread_state_count);
24532 + case EXCEPTION_STATE_IDENTITY:
24533 + r = exception_raise_state_identity(port,thread,task,exception,data,
24534 + data_count,&flavor,thread_state,thread_state_count,
24535 + thread_state,&thread_state_count);
24538 + r = KERN_FAILURE; /* make gcc happy */
24539 + ABORT("forward_exception: unknown behavior");
24543 + if(behavior != EXCEPTION_DEFAULT) {
24544 + r = thread_set_state(thread,flavor,thread_state,thread_state_count);
24545 + if(r != KERN_SUCCESS)
24546 + ABORT("thread_set_state failed in forward_exception");
24552 +#define FWD() GC_forward_exception(thread,task,exception,code,code_count)
24554 +/* This violates the namespace rules but there isn't anything that can be done
24555 + about it. The exception handling stuff is hard coded to call this */
24557 +catch_exception_raise(
24558 + mach_port_t exception_port,mach_port_t thread,mach_port_t task,
24559 + exception_type_t exception,exception_data_t code,
24560 + mach_msg_type_number_t code_count
24567 + thread_state_flavor_t flavor = PPC_EXCEPTION_STATE;
24568 + mach_msg_type_number_t exc_state_count = PPC_EXCEPTION_STATE_COUNT;
24569 + ppc_exception_state_t exc_state;
24571 +# error FIXME for non-ppc darwin
24575 + if(exception != EXC_BAD_ACCESS || code[0] != KERN_PROTECTION_FAILURE) {
24576 + #ifdef DEBUG_EXCEPTION_HANDLING
24577 + /* We aren't interested, pass it on to the old handler */
24578 + GC_printf3("Exception: 0x%x Code: 0x%x 0x%x in catch....\n",
24580 + code_count > 0 ? code[0] : -1,
24581 + code_count > 1 ? code[1] : -1);
24586 + r = thread_get_state(thread,flavor,
24587 + (natural_t*)&exc_state,&exc_state_count);
24588 + if(r != KERN_SUCCESS) {
24589 + /* The thread is supposed to be suspended while the exception handler
24590 + is called. This shouldn't fail. */
24591 + #ifdef BROKEN_EXCEPTION_HANDLING
24592 + GC_err_printf0("thread_get_state failed in "
24593 + "catch_exception_raise\n");
24594 + return KERN_SUCCESS;
24596 + ABORT("thread_get_state failed in catch_exception_raise");
24600 + /* This is the address that caused the fault */
24601 + addr = (char*) exc_state.dar;
24603 + if((HDR(addr)) == 0) {
24604 + /* Ugh... just like the SIGBUS problem above, it seems we get a bogus
24605 + KERN_PROTECTION_FAILURE every once and a while. We wait till we get
24606 + a bunch in a row before doing anything about it. If a "real" fault
24607 + ever occurres it'll just keep faulting over and over and we'll hit
24608 + the limit pretty quickly. */
24609 + #ifdef BROKEN_EXCEPTION_HANDLING
24610 + static char *last_fault;
24611 + static int last_fault_count;
24613 + if(addr != last_fault) {
24614 + last_fault = addr;
24615 + last_fault_count = 0;
24617 + if(++last_fault_count < 32) {
24618 + if(last_fault_count == 1)
24620 + "GC: WARNING: Ignoring KERN_PROTECTION_FAILURE at %p\n",
24622 + return KERN_SUCCESS;
24625 + GC_err_printf1("Unexpected KERN_PROTECTION_FAILURE at %p\n",addr);
24626 + /* Can't pass it along to the signal handler because that is
24627 + ignoring SIGBUS signals. We also shouldn't call ABORT here as
24628 + signals don't always work too well from the exception handler. */
24629 + GC_err_printf0("Aborting\n");
24630 + exit(EXIT_FAILURE);
24631 + #else /* BROKEN_EXCEPTION_HANDLING */
24632 + /* Pass it along to the next exception handler
24633 + (which should call SIGBUS/SIGSEGV) */
24635 + #endif /* !BROKEN_EXCEPTION_HANDLING */
24638 + #ifdef BROKEN_EXCEPTION_HANDLING
24639 + /* Reset the number of consecutive SIGBUSs */
24640 + GC_sigbus_count = 0;
24643 + if(GC_mprotect_state == GC_MP_NORMAL) { /* common case */
24644 + h = (struct hblk*)((word)addr & ~(GC_page_size-1));
24645 + UNPROTECT(h, GC_page_size);
24646 + for (i = 0; i < divHBLKSZ(GC_page_size); i++) {
24647 + register int index = PHT_HASH(h+i);
24648 + async_set_pht_entry_from_index(GC_dirty_pages, index);
24650 + } else if(GC_mprotect_state == GC_MP_DISCARDING) {
24651 + /* Lie to the thread for now. No sense UNPROTECT()ing the memory
24652 + when we're just going to PROTECT() it again later. The thread
24653 + will just fault again once it resumes */
24655 + /* Shouldn't happen, i don't think */
24656 + GC_printf0("KERN_PROTECTION_FAILURE while world is stopped\n");
24659 + return KERN_SUCCESS;
24663 +/* These should never be called, but just in case... */
24664 +kern_return_t catch_exception_raise_state(mach_port_name_t exception_port,
24665 + int exception, exception_data_t code, mach_msg_type_number_t codeCnt,
24666 + int flavor, thread_state_t old_state, int old_stateCnt,
24667 + thread_state_t new_state, int new_stateCnt)
24669 + ABORT("catch_exception_raise_state");
24670 + return(KERN_INVALID_ARGUMENT);
24672 +kern_return_t catch_exception_raise_state_identity(
24673 + mach_port_name_t exception_port, mach_port_t thread, mach_port_t task,
24674 + int exception, exception_data_t code, mach_msg_type_number_t codeCnt,
24675 + int flavor, thread_state_t old_state, int old_stateCnt,
24676 + thread_state_t new_state, int new_stateCnt)
24678 + ABORT("catch_exception_raise_state_identity");
24679 + return(KERN_INVALID_ARGUMENT);
24683 +#endif /* DARWIN && MPROTECT_VDB */
24685 # ifndef HAVE_INCREMENTAL_PROTECTION_NEEDS
24686 int GC_incremental_protection_needs()
24688 @@ -3105,19 +3878,20 @@
24692 -#ifdef SAVE_CALL_CHAIN
24693 +#ifdef NEED_CALLINFO
24694 /* Fill in the pc and argument information for up to NFRAMES of my */
24695 /* callers. Ignore my frame and my callers frame. */
24698 -# include <features.h>
24699 -# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2
24700 -# define HAVE_BUILTIN_BACKTRACE
24702 +# include <unistd.h>
24705 +#endif /* NEED_CALLINFO */
24707 +#ifdef SAVE_CALL_CHAIN
24709 #if NARGS == 0 && NFRAMES % 2 == 0 /* No padding */ \
24710 - && defined(HAVE_BUILTIN_BACKTRACE)
24711 + && defined(GC_HAVE_BUILTIN_BACKTRACE)
24713 #include <execinfo.h>
24715 @@ -3188,31 +3962,139 @@
24717 #endif /* SAVE_CALL_CHAIN */
24719 -#if defined(LINUX) && defined(__ELF__) && \
24720 - (!defined(SMALL_CONFIG) || defined(USE_PROC_FOR_LIBRARIES))
24721 -#ifdef GC_USE_LD_WRAP
24722 -# define READ __real_read
24724 -# define READ read
24727 +#ifdef NEED_CALLINFO
24729 -/* Repeatedly perform a read call until the buffer is filled or */
24730 -/* we encounter EOF. */
24731 -ssize_t GC_repeat_read(int fd, char *buf, size_t count)
24732 +/* Print info to stderr. We do NOT hold the allocation lock */
24733 +void GC_print_callers (info)
24734 +struct callinfo info[NFRAMES];
24736 - ssize_t num_read = 0;
24739 + static int reentry_count = 0;
24740 + GC_bool stop = FALSE;
24742 - while (num_read < count) {
24743 - result = READ(fd, buf + num_read, count - num_read);
24744 - if (result < 0) return result;
24745 - if (result == 0) break;
24746 - num_read += result;
24752 + GC_err_printf0("\tCaller at allocation:\n");
24754 + GC_err_printf0("\tCall chain at allocation:\n");
24756 + for (i = 0; i < NFRAMES && !stop ; i++) {
24757 + if (info[i].ci_pc == 0) break;
24762 + GC_err_printf0("\t\targs: ");
24763 + for (j = 0; j < NARGS; j++) {
24764 + if (j != 0) GC_err_printf0(", ");
24765 + GC_err_printf2("%d (0x%X)", ~(info[i].ci_arg[j]),
24766 + ~(info[i].ci_arg[j]));
24769 + GC_err_printf0("\n");
24772 + if (reentry_count > 1) {
24773 + /* We were called during an allocation during */
24774 + /* a previous GC_print_callers call; punt. */
24775 + GC_err_printf1("\t\t##PC##= 0x%lx\n", info[i].ci_pc);
24782 +# if defined(GC_HAVE_BUILTIN_BACKTRACE)
24783 + char **sym_name =
24784 + backtrace_symbols((void **)(&(info[i].ci_pc)), 1);
24785 + char *name = sym_name[0];
24788 + char *name = buf;
24789 + sprintf(buf, "##PC##= 0x%lx", info[i].ci_pc);
24791 +# if defined(LINUX) && !defined(SMALL_CONFIG)
24792 + /* Try for a line number. */
24794 +# define EXE_SZ 100
24795 + static char exe_name[EXE_SZ];
24796 +# define CMD_SZ 200
24797 + char cmd_buf[CMD_SZ];
24798 +# define RESULT_SZ 200
24799 + static char result_buf[RESULT_SZ];
24800 + size_t result_len;
24801 + static GC_bool found_exe_name = FALSE;
24802 + static GC_bool will_fail = FALSE;
24804 + /* Try to get it via a hairy and expensive scheme. */
24805 + /* First we get the name of the executable: */
24806 + if (will_fail) goto out;
24807 + if (!found_exe_name) {
24808 + ret_code = readlink("/proc/self/exe", exe_name, EXE_SZ);
24809 + if (ret_code < 0 || ret_code >= EXE_SZ
24810 + || exe_name[0] != '/') {
24811 + will_fail = TRUE; /* Dont try again. */
24814 + exe_name[ret_code] = '\0';
24815 + found_exe_name = TRUE;
24817 + /* Then we use popen to start addr2line -e <exe> <addr> */
24818 + /* There are faster ways to do this, but hopefully this */
24819 + /* isn't time critical. */
24820 + sprintf(cmd_buf, "/usr/bin/addr2line -f -e %s 0x%lx", exe_name,
24821 + (unsigned long)info[i].ci_pc);
24822 + pipe = popen(cmd_buf, "r");
24824 + || (result_len = fread(result_buf, 1, RESULT_SZ - 1, pipe))
24826 + if (pipe != NULL) pclose(pipe);
24827 + will_fail = TRUE;
24830 + if (result_buf[result_len - 1] == '\n') --result_len;
24831 + result_buf[result_len] = 0;
24832 + if (result_buf[0] == '?'
24833 + || result_buf[result_len-2] == ':'
24834 + && result_buf[result_len-1] == '0') {
24838 + /* Get rid of embedded newline, if any. Test for "main" */
24840 + char * nl = strchr(result_buf, '\n');
24841 + if (nl != NULL && nl < result_buf + result_len) {
24844 + if (strncmp(result_buf, "main", nl - result_buf) == 0) {
24848 + if (result_len < RESULT_SZ - 25) {
24849 + /* Add in hex address */
24850 + sprintf(result_buf + result_len, " [0x%lx]",
24851 + (unsigned long)info[i].ci_pc);
24853 + name = result_buf;
24857 +# endif /* LINUX */
24858 + GC_err_printf1("\t\t%s\n", name);
24859 +# if defined(GC_HAVE_BUILTIN_BACKTRACE)
24860 + free(sym_name); /* May call GC_free; that's OK */
24868 -#endif /* LINUX && ... */
24870 +#endif /* NEED_CALLINFO */
24874 #if defined(LINUX) && defined(__ELF__) && !defined(SMALL_CONFIG)
24875 @@ -3220,20 +4102,16 @@
24876 /* Dump /proc/self/maps to GC_stderr, to enable looking up names for
24877 addresses in FIND_LEAK output. */
24879 +static word dump_maps(char *maps)
24881 + GC_err_write(maps, strlen(maps));
24885 void GC_print_address_map()
24889 - char maps_temp[32768];
24890 GC_err_printf0("---------- Begin address map ----------\n");
24891 - f = open("/proc/self/maps", O_RDONLY);
24892 - if (-1 == f) ABORT("Couldn't open /proc/self/maps");
24894 - result = GC_repeat_read(f, maps_temp, sizeof(maps_temp));
24895 - if (result <= 0) ABORT("Couldn't read /proc/self/maps");
24896 - GC_err_write(maps_temp, result);
24897 - } while (result == sizeof(maps_temp));
24899 + GC_apply_to_maps(dump_maps);
24900 GC_err_printf0("---------- End address map ----------\n");
24903 diff -buNr boehm-gc/powerpc_darwin_mach_dep.s boehm-gc/powerpc_darwin_mach_dep.s
24904 --- boehm-gc/powerpc_darwin_mach_dep.s Wed Dec 31 16:00:00 1969
24905 +++ boehm-gc/powerpc_darwin_mach_dep.s Sat Sep 13 02:10:15 2003
24908 +; GC_push_regs function. Under some optimization levels GCC will clobber
24909 +; some of the non-volatile registers before we get a chance to save them
24910 +; therefore, this can't be inline asm.
24914 + .globl _GC_push_regs
24924 + bl L_GC_push_one$stub
24926 + bl L_GC_push_one$stub
24928 + bl L_GC_push_one$stub
24930 + bl L_GC_push_one$stub
24932 + bl L_GC_push_one$stub
24934 + bl L_GC_push_one$stub
24936 + bl L_GC_push_one$stub
24938 + bl L_GC_push_one$stub
24940 + bl L_GC_push_one$stub
24942 + bl L_GC_push_one$stub
24944 + bl L_GC_push_one$stub
24946 + bl L_GC_push_one$stub
24948 + bl L_GC_push_one$stub
24950 + bl L_GC_push_one$stub
24952 + bl L_GC_push_one$stub
24954 + bl L_GC_push_one$stub
24956 + bl L_GC_push_one$stub
24958 + bl L_GC_push_one$stub
24960 + bl L_GC_push_one$stub
24970 +; PIC stuff, generated by GCC
24974 +L_GC_push_one$stub:
24975 + .indirect_symbol _GC_push_one
24977 + bcl 20,31,L0$_GC_push_one
24980 + addis r11,r11,ha16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
24982 + lwz r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11)
24984 + addi r11,r11,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
24987 +.lazy_symbol_pointer
24988 +L_GC_push_one$lazy_ptr:
24989 + .indirect_symbol _GC_push_one
24990 + .long dyld_stub_binding_helper
24991 diff -buNr boehm-gc/pthread_stop_world.c boehm-gc/pthread_stop_world.c
24992 --- boehm-gc/pthread_stop_world.c Wed Dec 31 16:00:00 1969
24993 +++ boehm-gc/pthread_stop_world.c Sat Sep 13 02:10:15 2003
24995 +#include "private/pthread_support.h"
24997 +#if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
24998 + && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS) \
24999 + && !defined(GC_DARWIN_THREADS)
25001 +#include <signal.h>
25002 +#include <semaphore.h>
25003 +#include <errno.h>
25004 +#include <unistd.h>
25009 +# if defined(MAXSIG)
25010 +# define NSIG (MAXSIG+1)
25011 +# elif defined(_NSIG)
25012 +# define NSIG _NSIG
25013 +# elif defined(__SIGRTMAX)
25014 +# define NSIG (__SIGRTMAX+1)
25016 + --> please fix it
25020 +void GC_print_sig_mask()
25022 + sigset_t blocked;
25025 + if (pthread_sigmask(SIG_BLOCK, NULL, &blocked) != 0)
25026 + ABORT("pthread_sigmask");
25027 + GC_printf0("Blocked: ");
25028 + for (i = 1; i < NSIG; i++) {
25029 + if (sigismember(&blocked, i)) { GC_printf1("%ld ",(long) i); }
25031 + GC_printf0("\n");
25036 +word GC_stop_count; /* Incremented at the beginning of GC_stop_world. */
25038 +#ifdef GC_OSF1_THREADS
25039 + GC_bool GC_retry_signals = TRUE;
25041 + GC_bool GC_retry_signals = FALSE;
25045 + * We use signals to stop threads during GC.
25047 + * Suspended threads wait in signal handler for SIG_THR_RESTART.
25048 + * That's more portable than semaphores or condition variables.
25049 + * (We do use sem_post from a signal handler, but that should be portable.)
25051 + * The thread suspension signal SIG_SUSPEND is now defined in gc_priv.h.
25052 + * Note that we can't just stop a thread; we need it to save its stack
25053 + * pointer(s) and acknowledge.
25056 +#ifndef SIG_THR_RESTART
25057 +# if defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS)
25059 +# define SIG_THR_RESTART _SIGRTMIN + 5
25061 +# define SIG_THR_RESTART SIGRTMIN + 5
25064 +# define SIG_THR_RESTART SIGXCPU
25068 +sem_t GC_suspend_ack_sem;
25070 +void GC_suspend_handler(int sig)
25073 + pthread_t my_thread = pthread_self();
25076 +# ifdef PARALLEL_MARK
25077 + word my_mark_no = GC_mark_no;
25078 + /* Marker can't proceed until we acknowledge. Thus this is */
25079 + /* guaranteed to be the mark_no correspending to our */
25080 + /* suspension, i.e. the marker can't have incremented it yet. */
25082 + word my_stop_count = GC_stop_count;
25084 + if (sig != SIG_SUSPEND) ABORT("Bad signal in suspend_handler");
25087 + GC_printf1("Suspending 0x%lx\n", my_thread);
25090 + me = GC_lookup_thread(my_thread);
25091 + /* The lookup here is safe, since I'm doing this on behalf */
25092 + /* of a thread which holds the allocation lock in order */
25093 + /* to stop the world. Thus concurrent modification of the */
25094 + /* data structure is impossible. */
25095 + if (me -> stop_info.last_stop_count == my_stop_count) {
25096 + /* Duplicate signal. OK if we are retrying. */
25097 + if (!GC_retry_signals) {
25098 + WARN("Duplicate suspend signal in thread %lx\n",
25104 + me -> stop_info.stack_ptr = (ptr_t)GC_save_regs_in_stack();
25106 + me -> stop_info.stack_ptr = (ptr_t)(&dummy);
25109 + me -> backing_store_ptr = (ptr_t)GC_save_regs_in_stack();
25112 + /* Tell the thread that wants to stop the world that this */
25113 + /* thread has been stopped. Note that sem_post() is */
25114 + /* the only async-signal-safe primitive in LinuxThreads. */
25115 + sem_post(&GC_suspend_ack_sem);
25116 + me -> stop_info.last_stop_count = my_stop_count;
25118 + /* Wait until that thread tells us to restart by sending */
25119 + /* this thread a SIG_THR_RESTART signal. */
25120 + /* SIG_THR_RESTART should be masked at this point. Thus there */
25121 + /* is no race. */
25122 + if (sigfillset(&mask) != 0) ABORT("sigfillset() failed");
25123 + if (sigdelset(&mask, SIG_THR_RESTART) != 0) ABORT("sigdelset() failed");
25124 +# ifdef NO_SIGNALS
25125 + if (sigdelset(&mask, SIGINT) != 0) ABORT("sigdelset() failed");
25126 + if (sigdelset(&mask, SIGQUIT) != 0) ABORT("sigdelset() failed");
25127 + if (sigdelset(&mask, SIGTERM) != 0) ABORT("sigdelset() failed");
25128 + if (sigdelset(&mask, SIGABRT) != 0) ABORT("sigdelset() failed");
25131 + me->stop_info.signal = 0;
25132 + sigsuspend(&mask); /* Wait for signal */
25133 + } while (me->stop_info.signal != SIG_THR_RESTART);
25134 + /* If the RESTART signal gets lost, we can still lose. That should be */
25135 + /* less likely than losing the SUSPEND signal, since we don't do much */
25136 + /* between the sem_post and sigsuspend. */
25137 + /* We'd need more handshaking to work around that, since we don't want */
25138 + /* to accidentally leave a RESTART signal pending, thus causing us to */
25139 + /* continue prematurely in a future round. */
25142 + GC_printf1("Continuing 0x%lx\n", my_thread);
25146 +void GC_restart_handler(int sig)
25148 + pthread_t my_thread = pthread_self();
25151 + if (sig != SIG_THR_RESTART) ABORT("Bad signal in suspend_handler");
25153 + /* Let the GC_suspend_handler() know that we got a SIG_THR_RESTART. */
25154 + /* The lookup here is safe, since I'm doing this on behalf */
25155 + /* of a thread which holds the allocation lock in order */
25156 + /* to stop the world. Thus concurrent modification of the */
25157 + /* data structure is impossible. */
25158 + me = GC_lookup_thread(my_thread);
25159 + me->stop_info.signal = SIG_THR_RESTART;
25162 + ** Note: even if we didn't do anything useful here,
25163 + ** it would still be necessary to have a signal handler,
25164 + ** rather than ignoring the signals, otherwise
25165 + ** the signals will not be delivered at all, and
25166 + ** will thus not interrupt the sigsuspend() above.
25170 + GC_printf1("In GC_restart_handler for 0x%lx\n", pthread_self());
25175 +# define IF_IA64(x) x
25177 +# define IF_IA64(x)
25179 +/* We hold allocation lock. Should do exactly the right thing if the */
25180 +/* world is stopped. Should not fail if it isn't. */
25181 +void GC_push_all_stacks()
25186 + /* On IA64, we also need to scan the register backing store. */
25187 + IF_IA64(ptr_t bs_lo; ptr_t bs_hi;)
25188 + pthread_t me = pthread_self();
25190 + if (!GC_thr_initialized) GC_thr_init();
25191 + #if DEBUG_THREADS
25192 + GC_printf1("Pushing stacks from thread 0x%lx\n", (unsigned long) me);
25194 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
25195 + for (p = GC_threads[i]; p != 0; p = p -> next) {
25196 + if (p -> flags & FINISHED) continue;
25197 + if (pthread_equal(p -> id, me)) {
25199 + lo = (ptr_t)GC_save_regs_in_stack();
25201 + lo = GC_approx_sp();
25203 + IF_IA64(bs_hi = (ptr_t)GC_save_regs_in_stack();)
25205 + lo = p -> stop_info.stack_ptr;
25206 + IF_IA64(bs_hi = p -> backing_store_ptr;)
25208 + if ((p -> flags & MAIN_THREAD) == 0) {
25209 + hi = p -> stack_end;
25210 + IF_IA64(bs_lo = p -> backing_store_end);
25212 + /* The original stack. */
25213 + hi = GC_stackbottom;
25214 + IF_IA64(bs_lo = BACKING_STORE_BASE;)
25216 + #if DEBUG_THREADS
25217 + GC_printf3("Stack for thread 0x%lx = [%lx,%lx)\n",
25218 + (unsigned long) p -> id,
25219 + (unsigned long) lo, (unsigned long) hi);
25221 + if (0 == lo) ABORT("GC_push_all_stacks: sp not set!\n");
25222 +# ifdef STACK_GROWS_UP
25223 + /* We got them backwards! */
25224 + GC_push_all_stack(hi, lo);
25226 + GC_push_all_stack(lo, hi);
25229 + if (pthread_equal(p -> id, me)) {
25230 + GC_push_all_eager(bs_lo, bs_hi);
25232 + GC_push_all_stack(bs_lo, bs_hi);
25239 +/* There seems to be a very rare thread stopping problem. To help us */
25240 +/* debug that, we save the ids of the stopping thread. */
25241 +pthread_t GC_stopping_thread;
25242 +int GC_stopping_pid;
25244 +/* We hold the allocation lock. Suspend all threads that might */
25245 +/* still be running. Return the number of suspend signals that */
25247 +int GC_suspend_all()
25249 + int n_live_threads = 0;
25253 + pthread_t my_thread = pthread_self();
25255 + GC_stopping_thread = my_thread; /* debugging only. */
25256 + GC_stopping_pid = getpid(); /* debugging only. */
25257 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
25258 + for (p = GC_threads[i]; p != 0; p = p -> next) {
25259 + if (p -> id != my_thread) {
25260 + if (p -> flags & FINISHED) continue;
25261 + if (p -> stop_info.last_stop_count == GC_stop_count) continue;
25262 + if (p -> thread_blocked) /* Will wait */ continue;
25263 + n_live_threads++;
25264 + #if DEBUG_THREADS
25265 + GC_printf1("Sending suspend signal to 0x%lx\n", p -> id);
25268 + result = pthread_kill(p -> id, SIG_SUSPEND);
25271 + /* Not really there anymore. Possible? */
25272 + n_live_threads--;
25277 + ABORT("pthread_kill failed");
25282 + return n_live_threads;
25285 +/* Caller holds allocation lock. */
25286 +void GC_stop_world()
25289 + int n_live_threads;
25292 + #if DEBUG_THREADS
25293 + GC_printf1("Stopping the world from 0x%lx\n", pthread_self());
25296 + /* Make sure all free list construction has stopped before we start. */
25297 + /* No new construction can start, since free list construction is */
25298 + /* required to acquire and release the GC lock before it starts, */
25299 + /* and we have the lock. */
25300 +# ifdef PARALLEL_MARK
25301 + GC_acquire_mark_lock();
25302 + GC_ASSERT(GC_fl_builder_count == 0);
25303 + /* We should have previously waited for it to become zero. */
25304 +# endif /* PARALLEL_MARK */
25306 + n_live_threads = GC_suspend_all();
25308 + if (GC_retry_signals) {
25309 + unsigned long wait_usecs = 0; /* Total wait since retry. */
25310 +# define WAIT_UNIT 3000
25311 +# define RETRY_INTERVAL 100000
25315 + sem_getvalue(&GC_suspend_ack_sem, &ack_count);
25316 + if (ack_count == n_live_threads) break;
25317 + if (wait_usecs > RETRY_INTERVAL) {
25318 + int newly_sent = GC_suspend_all();
25321 + if (GC_print_stats) {
25322 + GC_printf1("Resent %ld signals after timeout\n",
25326 + sem_getvalue(&GC_suspend_ack_sem, &ack_count);
25327 + if (newly_sent < n_live_threads - ack_count) {
25328 + WARN("Lost some threads during GC_stop_world?!\n",0);
25329 + n_live_threads = ack_count + newly_sent;
25333 + usleep(WAIT_UNIT);
25334 + wait_usecs += WAIT_UNIT;
25337 + for (i = 0; i < n_live_threads; i++) {
25338 + if (0 != (code = sem_wait(&GC_suspend_ack_sem))) {
25339 + GC_err_printf1("Sem_wait returned %ld\n", (unsigned long)code);
25340 + ABORT("sem_wait for handler failed");
25343 +# ifdef PARALLEL_MARK
25344 + GC_release_mark_lock();
25346 + #if DEBUG_THREADS
25347 + GC_printf1("World stopped from 0x%lx\n", pthread_self());
25349 + GC_stopping_thread = 0; /* debugging only */
25352 +/* Caller holds allocation lock, and has held it continuously since */
25353 +/* the world stopped. */
25354 +void GC_start_world()
25356 + pthread_t my_thread = pthread_self();
25358 + register GC_thread p;
25359 + register int n_live_threads = 0;
25360 + register int result;
25362 +# if DEBUG_THREADS
25363 + GC_printf0("World starting\n");
25366 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
25367 + for (p = GC_threads[i]; p != 0; p = p -> next) {
25368 + if (p -> id != my_thread) {
25369 + if (p -> flags & FINISHED) continue;
25370 + if (p -> thread_blocked) continue;
25371 + n_live_threads++;
25372 + #if DEBUG_THREADS
25373 + GC_printf1("Sending restart signal to 0x%lx\n", p -> id);
25376 + result = pthread_kill(p -> id, SIG_THR_RESTART);
25379 + /* Not really there anymore. Possible? */
25380 + n_live_threads--;
25385 + ABORT("pthread_kill failed");
25390 + #if DEBUG_THREADS
25391 + GC_printf0("World started\n");
25395 +void GC_stop_init() {
25396 + struct sigaction act;
25398 + if (sem_init(&GC_suspend_ack_sem, 0, 0) != 0)
25399 + ABORT("sem_init failed");
25401 + act.sa_flags = SA_RESTART;
25402 + if (sigfillset(&act.sa_mask) != 0) {
25403 + ABORT("sigfillset() failed");
25405 +# ifdef NO_SIGNALS
25406 + if (sigdelset(&act.sa_mask, SIGINT) != 0
25407 + || sigdelset(&act.sa_mask, SIGQUIT != 0)
25408 + || sigdelset(&act.sa_mask, SIGABRT != 0)
25409 + || sigdelset(&act.sa_mask, SIGTERM != 0)) {
25410 + ABORT("sigdelset() failed");
25414 + /* SIG_THR_RESTART is unmasked by the handler when necessary. */
25415 + act.sa_handler = GC_suspend_handler;
25416 + if (sigaction(SIG_SUSPEND, &act, NULL) != 0) {
25417 + ABORT("Cannot set SIG_SUSPEND handler");
25420 + act.sa_handler = GC_restart_handler;
25421 + if (sigaction(SIG_THR_RESTART, &act, NULL) != 0) {
25422 + ABORT("Cannot set SIG_THR_RESTART handler");
25425 + /* Check for GC_RETRY_SIGNALS. */
25426 + if (0 != GETENV("GC_RETRY_SIGNALS")) {
25427 + GC_retry_signals = TRUE;
25429 + if (0 != GETENV("GC_NO_RETRY_SIGNALS")) {
25430 + GC_retry_signals = FALSE;
25433 + if (GC_print_stats && GC_retry_signals) {
25434 + GC_printf0("Will retry suspend signal if necessary.\n");
25440 diff -buNr boehm-gc/pthread_support.c boehm-gc/pthread_support.c
25441 --- boehm-gc/pthread_support.c Wed Dec 31 16:00:00 1969
25442 +++ boehm-gc/pthread_support.c Sat Sep 13 02:10:15 2003
25445 + * Copyright (c) 1994 by Xerox Corporation. All rights reserved.
25446 + * Copyright (c) 1996 by Silicon Graphics. All rights reserved.
25447 + * Copyright (c) 1998 by Fergus Henderson. All rights reserved.
25448 + * Copyright (c) 2000-2001 by Hewlett-Packard Company. All rights reserved.
25450 + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
25451 + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
25453 + * Permission is hereby granted to use or copy this program
25454 + * for any purpose, provided the above notices are retained on all copies.
25455 + * Permission to modify the code and to distribute modified code is granted,
25456 + * provided the above notices are retained, and a notice that the code was
25457 + * modified is included with the above copyright notice.
25460 + * Support code for LinuxThreads, the clone()-based kernel
25461 + * thread package for Linux which is included in libc6.
25463 + * This code relies on implementation details of LinuxThreads,
25464 + * (i.e. properties not guaranteed by the Pthread standard),
25465 + * though this version now does less of that than the other Pthreads
25468 + * Note that there is a lot of code duplication between linux_threads.c
25469 + * and thread support for some of the other Posix platforms; any changes
25470 + * made here may need to be reflected there too.
25472 + /* DG/UX ix86 support <takis@xfree86.org> */
25474 + * Linux_threads.c now also includes some code to support HPUX and
25475 + * OSF1 (Compaq Tru64 Unix, really). The OSF1 support is not yet
25476 + * functional. The OSF1 code is based on Eric Benson's
25477 + * patch, though that was originally against hpux_irix_threads. The code
25478 + * here is completely untested. With 0.0000001% probability, it might
25481 + * Eric also suggested an alternate basis for a lock implementation in
25483 + * + #elif defined(OSF1)
25484 + * + unsigned long GC_allocate_lock = 0;
25485 + * + msemaphore GC_allocate_semaphore;
25486 + * + # define GC_TRY_LOCK() \
25487 + * + ((msem_lock(&GC_allocate_semaphore, MSEM_IF_NOWAIT) == 0) \
25488 + * + ? (GC_allocate_lock = 1) \
25490 + * + # define GC_LOCK_TAKEN GC_allocate_lock
25493 +/*#define DEBUG_THREADS 1*/
25494 +/*#define GC_ASSERTIONS*/
25496 +# include "private/pthread_support.h"
25498 +# if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
25499 + && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS)
25501 +# if defined(GC_HPUX_THREADS) && !defined(USE_PTHREAD_SPECIFIC) \
25502 + && !defined(USE_HPUX_TLS)
25503 +# define USE_HPUX_TLS
25506 +# if (defined(GC_DGUX386_THREADS) || defined(GC_OSF1_THREADS) || \
25507 + defined(GC_DARWIN_THREADS)) && !defined(USE_PTHREAD_SPECIFIC)
25508 +# define USE_PTHREAD_SPECIFIC
25511 +# if defined(GC_DGUX386_THREADS) && !defined(_POSIX4A_DRAFT10_SOURCE)
25512 +# define _POSIX4A_DRAFT10_SOURCE 1
25515 +# if defined(GC_DGUX386_THREADS) && !defined(_USING_POSIX4A_DRAFT10)
25516 +# define _USING_POSIX4A_DRAFT10 1
25519 +# ifdef THREAD_LOCAL_ALLOC
25520 +# if !defined(USE_PTHREAD_SPECIFIC) && !defined(USE_HPUX_TLS)
25521 +# include "private/specific.h"
25523 +# if defined(USE_PTHREAD_SPECIFIC)
25524 +# define GC_getspecific pthread_getspecific
25525 +# define GC_setspecific pthread_setspecific
25526 +# define GC_key_create pthread_key_create
25527 + typedef pthread_key_t GC_key_t;
25529 +# if defined(USE_HPUX_TLS)
25530 +# define GC_getspecific(x) (x)
25531 +# define GC_setspecific(key, v) ((key) = (v), 0)
25532 +# define GC_key_create(key, d) 0
25533 + typedef void * GC_key_t;
25536 +# include <stdlib.h>
25537 +# include <pthread.h>
25538 +# include <sched.h>
25539 +# include <time.h>
25540 +# include <errno.h>
25541 +# include <unistd.h>
25542 +# include <sys/mman.h>
25543 +# include <sys/time.h>
25544 +# include <sys/types.h>
25545 +# include <sys/stat.h>
25546 +# include <fcntl.h>
25548 +#if defined(GC_DARWIN_THREADS)
25549 +# include "private/darwin_semaphore.h"
25551 +# include <semaphore.h>
25552 +#endif /* !GC_DARWIN_THREADS */
25554 +#if defined(GC_DARWIN_THREADS)
25555 +# include <sys/sysctl.h>
25556 +#endif /* GC_DARWIN_THREADS */
25560 +#if defined(GC_DGUX386_THREADS)
25561 +# include <sys/dg_sys_info.h>
25562 +# include <sys/_int_psem.h>
25563 + /* sem_t is an uint in DG/UX */
25564 + typedef unsigned int sem_t;
25565 +#endif /* GC_DGUX386_THREADS */
25568 +# define __inline__
25571 +#ifdef GC_USE_LD_WRAP
25572 +# define WRAP_FUNC(f) __wrap_##f
25573 +# define REAL_FUNC(f) __real_##f
25575 +# define WRAP_FUNC(f) GC_##f
25576 +# if !defined(GC_DGUX386_THREADS)
25577 +# define REAL_FUNC(f) f
25578 +# else /* GC_DGUX386_THREADS */
25579 +# define REAL_FUNC(f) __d10_##f
25580 +# endif /* GC_DGUX386_THREADS */
25581 +# undef pthread_create
25582 +# if !defined(GC_DARWIN_THREADS)
25583 +# undef pthread_sigmask
25585 +# undef pthread_join
25586 +# undef pthread_detach
25589 +void GC_thr_init();
25591 +static GC_bool parallel_initialized = FALSE;
25593 +void GC_init_parallel();
25595 +# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL)
25597 +/* We don't really support thread-local allocation with DBG_HDRS_ALL */
25599 +#ifdef USE_HPUX_TLS
25602 +GC_key_t GC_thread_key;
25604 +static GC_bool keys_initialized;
25606 +/* Recover the contents of the freelist array fl into the global one gfl.*/
25607 +/* Note that the indexing scheme differs, in that gfl has finer size */
25608 +/* resolution, even if not all entries are used. */
25609 +/* We hold the allocator lock. */
25610 +static void return_freelists(ptr_t *fl, ptr_t *gfl)
25616 + for (i = 1; i < NFREELISTS; ++i) {
25617 + nwords = i * (GRANULARITY/sizeof(word));
25620 + if ((word)q >= HBLKSIZE) {
25621 + if (gfl[nwords] == 0) {
25624 + /* Concatenate: */
25625 + for (; (word)q >= HBLKSIZE; qptr = &(obj_link(q)), q = *qptr);
25626 + GC_ASSERT(0 == q);
25627 + *qptr = gfl[nwords];
25628 + gfl[nwords] = fl[i];
25631 + /* Clear fl[i], since the thread structure may hang around. */
25632 + /* Do it in a way that is likely to trap if we access it. */
25633 + fl[i] = (ptr_t)HBLKSIZE;
25637 +/* We statically allocate a single "size 0" object. It is linked to */
25638 +/* itself, and is thus repeatedly reused for all size 0 allocation */
25639 +/* requests. (Size 0 gcj allocation requests are incorrect, and */
25640 +/* we arrange for those to fault asap.) */
25641 +static ptr_t size_zero_object = (ptr_t)(&size_zero_object);
25643 +/* Each thread structure must be initialized. */
25644 +/* This call must be made from the new thread. */
25645 +/* Caller holds allocation lock. */
25646 +void GC_init_thread_local(GC_thread p)
25650 + if (!keys_initialized) {
25651 + if (0 != GC_key_create(&GC_thread_key, 0)) {
25652 + ABORT("Failed to create key for local allocator");
25654 + keys_initialized = TRUE;
25656 + if (0 != GC_setspecific(GC_thread_key, p)) {
25657 + ABORT("Failed to set thread specific allocation pointers");
25659 + for (i = 1; i < NFREELISTS; ++i) {
25660 + p -> ptrfree_freelists[i] = (ptr_t)1;
25661 + p -> normal_freelists[i] = (ptr_t)1;
25662 +# ifdef GC_GCJ_SUPPORT
25663 + p -> gcj_freelists[i] = (ptr_t)1;
25666 + /* Set up the size 0 free lists. */
25667 + p -> ptrfree_freelists[0] = (ptr_t)(&size_zero_object);
25668 + p -> normal_freelists[0] = (ptr_t)(&size_zero_object);
25669 +# ifdef GC_GCJ_SUPPORT
25670 + p -> gcj_freelists[0] = (ptr_t)(-1);
25674 +#ifdef GC_GCJ_SUPPORT
25675 + extern ptr_t * GC_gcjobjfreelist;
25678 +/* We hold the allocator lock. */
25679 +void GC_destroy_thread_local(GC_thread p)
25681 + /* We currently only do this from the thread itself or from */
25682 + /* the fork handler for a child process. */
25683 +# ifndef HANDLE_FORK
25684 + GC_ASSERT(GC_getspecific(GC_thread_key) == (void *)p);
25686 + return_freelists(p -> ptrfree_freelists, GC_aobjfreelist);
25687 + return_freelists(p -> normal_freelists, GC_objfreelist);
25688 +# ifdef GC_GCJ_SUPPORT
25689 + return_freelists(p -> gcj_freelists, GC_gcjobjfreelist);
25693 +extern GC_PTR GC_generic_malloc_many();
25695 +GC_PTR GC_local_malloc(size_t bytes)
25697 + if (EXPECT(!SMALL_ENOUGH(bytes),0)) {
25698 + return(GC_malloc(bytes));
25700 + int index = INDEX_FROM_BYTES(bytes);
25703 +# if defined(REDIRECT_MALLOC) && !defined(USE_PTHREAD_SPECIFIC)
25704 + GC_key_t k = GC_thread_key;
25708 +# if defined(REDIRECT_MALLOC) && !defined(USE_PTHREAD_SPECIFIC)
25709 + if (EXPECT(0 == k, 0)) {
25710 + /* This can happen if we get called when the world is */
25711 + /* being initialized. Whether we can actually complete */
25712 + /* the initialization then is unclear. */
25713 + GC_init_parallel();
25714 + k = GC_thread_key;
25717 + tsd = GC_getspecific(GC_thread_key);
25718 +# ifdef GC_ASSERTIONS
25720 + GC_ASSERT(tsd == (void *)GC_lookup_thread(pthread_self()));
25723 + my_fl = ((GC_thread)tsd) -> normal_freelists + index;
25724 + my_entry = *my_fl;
25725 + if (EXPECT((word)my_entry >= HBLKSIZE, 1)) {
25726 + ptr_t next = obj_link(my_entry);
25727 + GC_PTR result = (GC_PTR)my_entry;
25729 + obj_link(my_entry) = 0;
25730 + PREFETCH_FOR_WRITE(next);
25732 + } else if ((word)my_entry - 1 < DIRECT_GRANULES) {
25733 + *my_fl = my_entry + index + 1;
25734 + return GC_malloc(bytes);
25736 + GC_generic_malloc_many(BYTES_FROM_INDEX(index), NORMAL, my_fl);
25737 + if (*my_fl == 0) return GC_oom_fn(bytes);
25738 + return GC_local_malloc(bytes);
25743 +GC_PTR GC_local_malloc_atomic(size_t bytes)
25745 + if (EXPECT(!SMALL_ENOUGH(bytes), 0)) {
25746 + return(GC_malloc_atomic(bytes));
25748 + int index = INDEX_FROM_BYTES(bytes);
25749 + ptr_t * my_fl = ((GC_thread)GC_getspecific(GC_thread_key))
25750 + -> ptrfree_freelists + index;
25751 + ptr_t my_entry = *my_fl;
25753 + if (EXPECT((word)my_entry >= HBLKSIZE, 1)) {
25754 + GC_PTR result = (GC_PTR)my_entry;
25755 + *my_fl = obj_link(my_entry);
25757 + } else if ((word)my_entry - 1 < DIRECT_GRANULES) {
25758 + *my_fl = my_entry + index + 1;
25759 + return GC_malloc_atomic(bytes);
25761 + GC_generic_malloc_many(BYTES_FROM_INDEX(index), PTRFREE, my_fl);
25762 + /* *my_fl is updated while the collector is excluded; */
25763 + /* the free list is always visible to the collector as */
25765 + if (*my_fl == 0) return GC_oom_fn(bytes);
25766 + return GC_local_malloc_atomic(bytes);
25771 +#ifdef GC_GCJ_SUPPORT
25773 +#include "include/gc_gcj.h"
25775 +#ifdef GC_ASSERTIONS
25776 + extern GC_bool GC_gcj_malloc_initialized;
25779 +extern int GC_gcj_kind;
25781 +GC_PTR GC_local_gcj_malloc(size_t bytes,
25782 + void * ptr_to_struct_containing_descr)
25784 + GC_ASSERT(GC_gcj_malloc_initialized);
25785 + if (EXPECT(!SMALL_ENOUGH(bytes), 0)) {
25786 + return GC_gcj_malloc(bytes, ptr_to_struct_containing_descr);
25788 + int index = INDEX_FROM_BYTES(bytes);
25789 + ptr_t * my_fl = ((GC_thread)GC_getspecific(GC_thread_key))
25790 + -> gcj_freelists + index;
25791 + ptr_t my_entry = *my_fl;
25792 + if (EXPECT((word)my_entry >= HBLKSIZE, 1)) {
25793 + GC_PTR result = (GC_PTR)my_entry;
25794 + GC_ASSERT(!GC_incremental);
25795 + /* We assert that any concurrent marker will stop us. */
25796 + /* Thus it is impossible for a mark procedure to see the */
25797 + /* allocation of the next object, but to see this object */
25798 + /* still containing a free list pointer. Otherwise the */
25799 + /* marker might find a random "mark descriptor". */
25800 + *(volatile ptr_t *)my_fl = obj_link(my_entry);
25801 + /* We must update the freelist before we store the pointer. */
25802 + /* Otherwise a GC at this point would see a corrupted */
25804 + /* A memory barrier is probably never needed, since the */
25805 + /* action of stopping this thread will cause prior writes */
25806 + /* to complete. */
25807 + GC_ASSERT(((void * volatile *)result)[1] == 0);
25808 + *(void * volatile *)result = ptr_to_struct_containing_descr;
25810 + } else if ((word)my_entry - 1 < DIRECT_GRANULES) {
25811 + if (!GC_incremental) *my_fl = my_entry + index + 1;
25812 + /* In the incremental case, we always have to take this */
25813 + /* path. Thus we leave the counter alone. */
25814 + return GC_gcj_malloc(bytes, ptr_to_struct_containing_descr);
25816 + GC_generic_malloc_many(BYTES_FROM_INDEX(index), GC_gcj_kind, my_fl);
25817 + if (*my_fl == 0) return GC_oom_fn(bytes);
25818 + return GC_local_gcj_malloc(bytes, ptr_to_struct_containing_descr);
25823 +#endif /* GC_GCJ_SUPPORT */
25825 +# else /* !THREAD_LOCAL_ALLOC && !DBG_HDRS_ALL */
25827 +# define GC_destroy_thread_local(t)
25829 +# endif /* !THREAD_LOCAL_ALLOC */
25833 +To make sure that we're using LinuxThreads and not some other thread
25834 +package, we generate a dummy reference to `pthread_kill_other_threads_np'
25835 +(was `__pthread_initial_thread_bos' but that disappeared),
25836 +which is a symbol defined in LinuxThreads, but (hopefully) not in other
25839 +We no longer do this, since this code is now portable enough that it might
25840 +actually work for something else.
25842 +void (*dummy_var_to_force_linux_threads)() = pthread_kill_other_threads_np;
25845 +#if defined(SPARC) || defined(IA64)
25846 + extern word GC_save_regs_in_stack();
25849 +long GC_nprocs = 1; /* Number of processors. We may not have */
25850 + /* access to all of them, but this is as good */
25851 + /* a guess as any ... */
25853 +#ifdef PARALLEL_MARK
25855 +# ifndef MAX_MARKERS
25856 +# define MAX_MARKERS 16
25859 +static ptr_t marker_sp[MAX_MARKERS] = {0};
25861 +void * GC_mark_thread(void * id)
25863 + word my_mark_no = 0;
25865 + marker_sp[(word)id] = GC_approx_sp();
25866 + for (;; ++my_mark_no) {
25867 + /* GC_mark_no is passed only to allow GC_help_marker to terminate */
25868 + /* promptly. This is important if it were called from the signal */
25869 + /* handler or from the GC lock acquisition code. Under Linux, it's */
25870 + /* not safe to call it from a signal handler, since it uses mutexes */
25871 + /* and condition variables. Since it is called only here, the */
25872 + /* argument is unnecessary. */
25873 + if (my_mark_no < GC_mark_no || my_mark_no > GC_mark_no + 2) {
25874 + /* resynchronize if we get far off, e.g. because GC_mark_no */
25876 + my_mark_no = GC_mark_no;
25878 +# ifdef DEBUG_THREADS
25879 + GC_printf1("Starting mark helper for mark number %ld\n", my_mark_no);
25881 + GC_help_marker(my_mark_no);
25885 +extern long GC_markers; /* Number of mark threads we would */
25886 + /* like to have. Includes the */
25887 + /* initiating thread. */
25889 +pthread_t GC_mark_threads[MAX_MARKERS];
25891 +#define PTHREAD_CREATE REAL_FUNC(pthread_create)
25893 +static void start_mark_threads()
25896 + pthread_attr_t attr;
25898 + if (GC_markers > MAX_MARKERS) {
25899 + WARN("Limiting number of mark threads\n", 0);
25900 + GC_markers = MAX_MARKERS;
25902 + if (0 != pthread_attr_init(&attr)) ABORT("pthread_attr_init failed");
25904 + if (0 != pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED))
25905 + ABORT("pthread_attr_setdetachstate failed");
25907 +# if defined(HPUX) || defined(GC_DGUX386_THREADS)
25908 + /* Default stack size is usually too small: fix it. */
25909 + /* Otherwise marker threads or GC may run out of */
25911 +# define MIN_STACK_SIZE (8*HBLKSIZE*sizeof(word))
25916 + if (pthread_attr_getstacksize(&attr, &old_size) != 0)
25917 + ABORT("pthread_attr_getstacksize failed\n");
25918 + if (old_size < MIN_STACK_SIZE) {
25919 + if (pthread_attr_setstacksize(&attr, MIN_STACK_SIZE) != 0)
25920 + ABORT("pthread_attr_setstacksize failed\n");
25923 +# endif /* HPUX || GC_DGUX386_THREADS */
25925 + if (GC_print_stats) {
25926 + GC_printf1("Starting %ld marker threads\n", GC_markers - 1);
25929 + for (i = 0; i < GC_markers - 1; ++i) {
25930 + if (0 != PTHREAD_CREATE(GC_mark_threads + i, &attr,
25931 + GC_mark_thread, (void *)(word)i)) {
25932 + WARN("Marker thread creation failed, errno = %ld.\n", errno);
25937 +#else /* !PARALLEL_MARK */
25939 +static __inline__ void start_mark_threads()
25943 +#endif /* !PARALLEL_MARK */
25945 +/* Defining INSTALL_LOOPING_SEGV_HANDLER causes SIGSEGV and SIGBUS to */
25946 +/* result in an infinite loop in a signal handler. This can be very */
25947 +/* useful for debugging, since (as of RH7) gdb still seems to have */
25948 +/* serious problems with threads. */
25949 +#ifdef INSTALL_LOOPING_SEGV_HANDLER
25950 +void GC_looping_handler(int sig)
25952 + GC_printf3("Signal %ld in thread %lx, pid %ld\n",
25953 + sig, pthread_self(), getpid());
25958 +GC_bool GC_thr_initialized = FALSE;
25960 +volatile GC_thread GC_threads[THREAD_TABLE_SZ];
25962 +void GC_push_thread_structures GC_PROTO((void))
25964 + GC_push_all((ptr_t)(GC_threads), (ptr_t)(GC_threads)+sizeof(GC_threads));
25965 +# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL)
25966 + GC_push_all((ptr_t)(&GC_thread_key),
25967 + (ptr_t)(&GC_thread_key)+sizeof(&GC_thread_key));
25971 +#ifdef THREAD_LOCAL_ALLOC
25972 +/* We must explicitly mark ptrfree and gcj free lists, since the free */
25973 +/* list links wouldn't otherwise be found. We also set them in the */
25974 +/* normal free lists, since that involves touching less memory than if */
25975 +/* we scanned them normally. */
25976 +void GC_mark_thread_local_free_lists(void)
25982 + for (i = 0; i < THREAD_TABLE_SZ; ++i) {
25983 + for (p = GC_threads[i]; 0 != p; p = p -> next) {
25984 + for (j = 1; j < NFREELISTS; ++j) {
25985 + q = p -> ptrfree_freelists[j];
25986 + if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
25987 + q = p -> normal_freelists[j];
25988 + if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
25989 +# ifdef GC_GCJ_SUPPORT
25990 + q = p -> gcj_freelists[j];
25991 + if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
25992 +# endif /* GC_GCJ_SUPPORT */
25997 +#endif /* THREAD_LOCAL_ALLOC */
25999 +static struct GC_Thread_Rep first_thread;
26001 +/* Add a thread to GC_threads. We assume it wasn't already there. */
26002 +/* Caller holds allocation lock. */
26003 +GC_thread GC_new_thread(pthread_t id)
26005 + int hv = ((word)id) % THREAD_TABLE_SZ;
26006 + GC_thread result;
26007 + static GC_bool first_thread_used = FALSE;
26009 + if (!first_thread_used) {
26010 + result = &first_thread;
26011 + first_thread_used = TRUE;
26013 + result = (struct GC_Thread_Rep *)
26014 + GC_INTERNAL_MALLOC(sizeof(struct GC_Thread_Rep), NORMAL);
26016 + if (result == 0) return(0);
26017 + result -> id = id;
26018 + result -> next = GC_threads[hv];
26019 + GC_threads[hv] = result;
26020 + GC_ASSERT(result -> flags == 0 && result -> thread_blocked == 0);
26024 +/* Delete a thread from GC_threads. We assume it is there. */
26025 +/* (The code intentionally traps if it wasn't.) */
26026 +/* Caller holds allocation lock. */
26027 +void GC_delete_thread(pthread_t id)
26029 + int hv = ((word)id) % THREAD_TABLE_SZ;
26030 + register GC_thread p = GC_threads[hv];
26031 + register GC_thread prev = 0;
26033 + while (!pthread_equal(p -> id, id)) {
26038 + GC_threads[hv] = p -> next;
26040 + prev -> next = p -> next;
26042 + GC_INTERNAL_FREE(p);
26045 +/* If a thread has been joined, but we have not yet */
26046 +/* been notified, then there may be more than one thread */
26047 +/* in the table with the same pthread id. */
26048 +/* This is OK, but we need a way to delete a specific one. */
26049 +void GC_delete_gc_thread(pthread_t id, GC_thread gc_id)
26051 + int hv = ((word)id) % THREAD_TABLE_SZ;
26052 + register GC_thread p = GC_threads[hv];
26053 + register GC_thread prev = 0;
26055 + while (p != gc_id) {
26060 + GC_threads[hv] = p -> next;
26062 + prev -> next = p -> next;
26064 + GC_INTERNAL_FREE(p);
26067 +/* Return a GC_thread corresponding to a given thread_t. */
26068 +/* Returns 0 if it's not there. */
26069 +/* Caller holds allocation lock or otherwise inhibits */
26071 +/* If there is more than one thread with the given id we */
26072 +/* return the most recent one. */
26073 +GC_thread GC_lookup_thread(pthread_t id)
26075 + int hv = ((word)id) % THREAD_TABLE_SZ;
26076 + register GC_thread p = GC_threads[hv];
26078 + while (p != 0 && !pthread_equal(p -> id, id)) p = p -> next;
26082 +#ifdef HANDLE_FORK
26083 +/* Remove all entries from the GC_threads table, except the */
26084 +/* one for the current thread. We need to do this in the child */
26085 +/* process after a fork(), since only the current thread */
26086 +/* survives in the child. */
26087 +void GC_remove_all_threads_but_me(void)
26089 + pthread_t self = pthread_self();
26091 + GC_thread p, next, me;
26093 + for (hv = 0; hv < THREAD_TABLE_SZ; ++hv) {
26095 + for (p = GC_threads[hv]; 0 != p; p = next) {
26096 + next = p -> next;
26097 + if (p -> id == self) {
26101 +# ifdef THREAD_LOCAL_ALLOC
26102 + if (!(p -> flags & FINISHED)) {
26103 + GC_destroy_thread_local(p);
26105 +# endif /* THREAD_LOCAL_ALLOC */
26106 + if (p != &first_thread) GC_INTERNAL_FREE(p);
26109 + GC_threads[hv] = me;
26112 +#endif /* HANDLE_FORK */
26114 +#ifdef USE_PROC_FOR_LIBRARIES
26115 +int GC_segment_is_thread_stack(ptr_t lo, ptr_t hi)
26120 +# ifdef PARALLEL_MARK
26121 + for (i = 0; i < GC_markers; ++i) {
26122 + if (marker_sp[i] > lo & marker_sp[i] < hi) return 1;
26125 + for (i = 0; i < THREAD_TABLE_SZ; i++) {
26126 + for (p = GC_threads[i]; p != 0; p = p -> next) {
26127 + if (0 != p -> stack_end) {
26128 +# ifdef STACK_GROWS_UP
26129 + if (p -> stack_end >= lo && p -> stack_end < hi) return 1;
26130 +# else /* STACK_GROWS_DOWN */
26131 + if (p -> stack_end > lo && p -> stack_end <= hi) return 1;
26138 +#endif /* USE_PROC_FOR_LIBRARIES */
26140 +#ifdef GC_LINUX_THREADS
26141 +/* Return the number of processors, or i<= 0 if it can't be determined. */
26142 +int GC_get_nprocs()
26144 + /* Should be "return sysconf(_SC_NPROCESSORS_ONLN);" but that */
26145 + /* appears to be buggy in many cases. */
26146 + /* We look for lines "cpu<n>" in /proc/stat. */
26147 +# define STAT_BUF_SIZE 4096
26148 +# define STAT_READ read
26149 + /* If read is wrapped, this may need to be redefined to call */
26150 + /* the real one. */
26151 + char stat_buf[STAT_BUF_SIZE];
26154 + /* Some old kernels only have a single "cpu nnnn ..." */
26155 + /* entry in /proc/stat. We identify those as */
26156 + /* uniprocessors. */
26157 + size_t i, len = 0;
26159 + f = open("/proc/stat", O_RDONLY);
26160 + if (f < 0 || (len = STAT_READ(f, stat_buf, STAT_BUF_SIZE)) < 100) {
26161 + WARN("Couldn't read /proc/stat\n", 0);
26164 + for (i = 0; i < len - 100; ++i) {
26165 + if (stat_buf[i] == '\n' && stat_buf[i+1] == 'c'
26166 + && stat_buf[i+2] == 'p' && stat_buf[i+3] == 'u') {
26167 + int cpu_no = atoi(stat_buf + i + 4);
26168 + if (cpu_no >= result) result = cpu_no + 1;
26174 +#endif /* GC_LINUX_THREADS */
26176 +/* We hold the GC lock. Wait until an in-progress GC has finished. */
26177 +/* Repeatedly RELEASES GC LOCK in order to wait. */
26178 +/* If wait_for_all is true, then we exit with the GC lock held and no */
26179 +/* collection in progress; otherwise we just wait for the current GC */
26181 +extern GC_bool GC_collection_in_progress();
26182 +void GC_wait_for_gc_completion(GC_bool wait_for_all)
26184 + if (GC_incremental && GC_collection_in_progress()) {
26185 + int old_gc_no = GC_gc_no;
26187 + /* Make sure that no part of our stack is still on the mark stack, */
26188 + /* since it's about to be unmapped. */
26189 + while (GC_incremental && GC_collection_in_progress()
26190 + && (wait_for_all || old_gc_no == GC_gc_no)) {
26192 + GC_collect_a_little_inner(1);
26201 +#ifdef HANDLE_FORK
26202 +/* Procedures called before and after a fork. The goal here is to make */
26203 +/* it safe to call GC_malloc() in a forked child. It's unclear that is */
26204 +/* attainable, since the single UNIX spec seems to imply that one */
26205 +/* should only call async-signal-safe functions, and we probably can't */
26206 +/* quite guarantee that. But we give it our best shot. (That same */
26207 +/* spec also implies that it's not safe to call the system malloc */
26208 +/* between fork() and exec(). Thus we're doing no worse than it. */
26210 +/* Called before a fork() */
26211 +void GC_fork_prepare_proc(void)
26213 + /* Acquire all relevant locks, so that after releasing the locks */
26214 + /* the child will see a consistent state in which monitor */
26215 + /* invariants hold. Unfortunately, we can't acquire libc locks */
26216 + /* we might need, and there seems to be no guarantee that libc */
26217 + /* must install a suitable fork handler. */
26218 + /* Wait for an ongoing GC to finish, since we can't finish it in */
26219 + /* the (one remaining thread in) the child. */
26221 +# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26222 + GC_wait_for_reclaim();
26224 + GC_wait_for_gc_completion(TRUE);
26225 +# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26226 + GC_acquire_mark_lock();
26230 +/* Called in parent after a fork() */
26231 +void GC_fork_parent_proc(void)
26233 +# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26234 + GC_release_mark_lock();
26239 +/* Called in child after a fork() */
26240 +void GC_fork_child_proc(void)
26242 + /* Clean up the thread table, so that just our thread is left. */
26243 +# if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26244 + GC_release_mark_lock();
26246 + GC_remove_all_threads_but_me();
26247 +# ifdef PARALLEL_MARK
26248 + /* Turn off parallel marking in the child, since we are probably */
26249 + /* just going to exec, and we would have to restart mark threads. */
26251 + GC_parallel = FALSE;
26252 +# endif /* PARALLEL_MARK */
26255 +#endif /* HANDLE_FORK */
26257 +#if defined(GC_DGUX386_THREADS)
26258 +/* Return the number of processors, or i<= 0 if it can't be determined. */
26259 +int GC_get_nprocs()
26261 + /* <takis@XFree86.Org> */
26263 + struct dg_sys_info_pm_info pm_sysinfo;
26266 + status = dg_sys_info((long int *) &pm_sysinfo,
26267 + DG_SYS_INFO_PM_INFO_TYPE, DG_SYS_INFO_PM_CURRENT_VERSION);
26269 + /* set -1 for error */
26272 + /* Active CPUs */
26273 + numCpus = pm_sysinfo.idle_vp_count;
26275 +# ifdef DEBUG_THREADS
26276 + GC_printf1("Number of active CPUs in this system: %d\n", numCpus);
26280 +#endif /* GC_DGUX386_THREADS */
26282 +/* We hold the allocation lock. */
26283 +void GC_thr_init()
26285 +# ifndef GC_DARWIN_THREADS
26290 + if (GC_thr_initialized) return;
26291 + GC_thr_initialized = TRUE;
26293 +# ifdef HANDLE_FORK
26294 + /* Prepare for a possible fork. */
26295 + pthread_atfork(GC_fork_prepare_proc, GC_fork_parent_proc,
26296 + GC_fork_child_proc);
26297 +# endif /* HANDLE_FORK */
26298 + /* Add the initial thread, so we can stop it. */
26299 + t = GC_new_thread(pthread_self());
26300 +# ifdef GC_DARWIN_THREADS
26301 + t -> stop_info.mach_thread = mach_thread_self();
26303 + t -> stop_info.stack_ptr = (ptr_t)(&dummy);
26305 + t -> flags = DETACHED | MAIN_THREAD;
26309 + /* Set GC_nprocs. */
26311 + char * nprocs_string = GETENV("GC_NPROCS");
26313 + if (nprocs_string != NULL) GC_nprocs = atoi(nprocs_string);
26315 + if (GC_nprocs <= 0) {
26316 +# if defined(GC_HPUX_THREADS)
26317 + GC_nprocs = pthread_num_processors_np();
26319 +# if defined(GC_OSF1_THREADS)
26320 + GC_nprocs = sysconf(_SC_NPROCESSORS_ONLN);
26321 + if (GC_nprocs <= 0) GC_nprocs = 1;
26323 +# if defined(GC_FREEBSD_THREADS)
26326 +# if defined(GC_DARWIN_THREADS)
26328 + size_t len = sizeof(ncpus);
26329 + sysctl((int[2]) {CTL_HW, HW_NCPU}, 2, &ncpus, &len, NULL, 0);
26330 + GC_nprocs = ncpus;
26332 +# if defined(GC_LINUX_THREADS) || defined(GC_DGUX386_THREADS)
26333 + GC_nprocs = GC_get_nprocs();
26336 + if (GC_nprocs <= 0) {
26337 + WARN("GC_get_nprocs() returned %ld\n", GC_nprocs);
26339 +# ifdef PARALLEL_MARK
26343 +# ifdef PARALLEL_MARK
26345 + char * markers_string = GETENV("GC_MARKERS");
26346 + if (markers_string != NULL) {
26347 + GC_markers = atoi(markers_string);
26349 + GC_markers = GC_nprocs;
26354 +# ifdef PARALLEL_MARK
26356 + if (GC_print_stats) {
26357 + GC_printf2("Number of processors = %ld, "
26358 + "number of marker threads = %ld\n", GC_nprocs, GC_markers);
26361 + if (GC_markers == 1) {
26362 + GC_parallel = FALSE;
26364 + if (GC_print_stats) {
26365 + GC_printf0("Single marker thread, turning off parallel marking\n");
26369 + GC_parallel = TRUE;
26370 + /* Disable true incremental collection, but generational is OK. */
26371 + GC_time_limit = GC_TIME_UNLIMITED;
26377 +/* Perform all initializations, including those that */
26378 +/* may require allocation. */
26379 +/* Called without allocation lock. */
26380 +/* Must be called before a second thread is created. */
26381 +/* Called without allocation lock. */
26382 +void GC_init_parallel()
26384 + if (parallel_initialized) return;
26385 + parallel_initialized = TRUE;
26387 + /* GC_init() calls us back, so set flag first. */
26388 + if (!GC_is_initialized) GC_init();
26389 + /* If we are using a parallel marker, start the helper threads. */
26390 +# ifdef PARALLEL_MARK
26391 + if (GC_parallel) start_mark_threads();
26393 + /* Initialize thread local free lists if used. */
26394 +# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL)
26396 + GC_init_thread_local(GC_lookup_thread(pthread_self()));
26402 +#if !defined(GC_DARWIN_THREADS)
26403 +int WRAP_FUNC(pthread_sigmask)(int how, const sigset_t *set, sigset_t *oset)
26405 + sigset_t fudged_set;
26407 + if (set != NULL && (how == SIG_BLOCK || how == SIG_SETMASK)) {
26408 + fudged_set = *set;
26409 + sigdelset(&fudged_set, SIG_SUSPEND);
26410 + set = &fudged_set;
26412 + return(REAL_FUNC(pthread_sigmask)(how, set, oset));
26414 +#endif /* !GC_DARWIN_THREADS */
26416 +/* Wrappers for functions that are likely to block for an appreciable */
26417 +/* length of time. Must be called in pairs, if at all. */
26418 +/* Nothing much beyond the system call itself should be executed */
26419 +/* between these. */
26421 +void GC_start_blocking(void) {
26422 +# define SP_SLOP 128
26425 + me = GC_lookup_thread(pthread_self());
26426 + GC_ASSERT(!(me -> thread_blocked));
26428 + me -> stop_info.stack_ptr = (ptr_t)GC_save_regs_in_stack();
26430 +# ifndef GC_DARWIN_THREADS
26431 + me -> stop_info.stack_ptr = (ptr_t)GC_approx_sp();
26435 + me -> backing_store_ptr = (ptr_t)GC_save_regs_in_stack() + SP_SLOP;
26437 + /* Add some slop to the stack pointer, since the wrapped call may */
26438 + /* end up pushing more callee-save registers. */
26439 +# ifndef GC_DARWIN_THREADS
26440 +# ifdef STACK_GROWS_UP
26441 + me -> stop_info.stack_ptr += SP_SLOP;
26443 + me -> stop_info.stack_ptr -= SP_SLOP;
26446 + me -> thread_blocked = TRUE;
26450 +void GC_end_blocking(void) {
26452 + LOCK(); /* This will block if the world is stopped. */
26453 + me = GC_lookup_thread(pthread_self());
26454 + GC_ASSERT(me -> thread_blocked);
26455 + me -> thread_blocked = FALSE;
26459 +#if defined(GC_DGUX386_THREADS)
26460 +#define __d10_sleep sleep
26461 +#endif /* GC_DGUX386_THREADS */
26463 +/* A wrapper for the standard C sleep function */
26464 +int WRAP_FUNC(sleep) (unsigned int seconds)
26468 + GC_start_blocking();
26469 + result = REAL_FUNC(sleep)(seconds);
26470 + GC_end_blocking();
26474 +struct start_info {
26475 + void *(*start_routine)(void *);
26478 + sem_t registered; /* 1 ==> in our thread table, but */
26479 + /* parent hasn't yet noticed. */
26482 +/* Called at thread exit. */
26483 +/* Never called for main thread. That's OK, since it */
26484 +/* results in at most a tiny one-time leak. And */
26485 +/* linuxthreads doesn't reclaim the main threads */
26486 +/* resources or id anyway. */
26487 +void GC_thread_exit_proc(void *arg)
26492 + me = GC_lookup_thread(pthread_self());
26493 + GC_destroy_thread_local(me);
26494 + if (me -> flags & DETACHED) {
26495 + GC_delete_thread(pthread_self());
26497 + me -> flags |= FINISHED;
26499 +# if defined(THREAD_LOCAL_ALLOC) && !defined(USE_PTHREAD_SPECIFIC) \
26500 + && !defined(USE_HPUX_TLS) && !defined(DBG_HDRS_ALL)
26501 + GC_remove_specific(GC_thread_key);
26503 + GC_wait_for_gc_completion(FALSE);
26507 +int WRAP_FUNC(pthread_join)(pthread_t thread, void **retval)
26510 + GC_thread thread_gc_id;
26513 + thread_gc_id = GC_lookup_thread(thread);
26514 + /* This is guaranteed to be the intended one, since the thread id */
26515 + /* cant have been recycled by pthreads. */
26517 + result = REAL_FUNC(pthread_join)(thread, retval);
26518 +# if defined (GC_FREEBSD_THREADS)
26519 + /* On FreeBSD, the wrapped pthread_join() sometimes returns (what
26520 + appears to be) a spurious EINTR which caused the test and real code
26521 + to gratuitously fail. Having looked at system pthread library source
26522 + code, I see how this return code may be generated. In one path of
26523 + code, pthread_join() just returns the errno setting of the thread
26524 + being joined. This does not match the POSIX specification or the
26525 + local man pages thus I have taken the liberty to catch this one
26526 + spurious return value properly conditionalized on GC_FREEBSD_THREADS. */
26527 + if (result == EINTR) result = 0;
26529 + if (result == 0) {
26531 + /* Here the pthread thread id may have been recycled. */
26532 + GC_delete_gc_thread(thread, thread_gc_id);
26539 +WRAP_FUNC(pthread_detach)(pthread_t thread)
26542 + GC_thread thread_gc_id;
26545 + thread_gc_id = GC_lookup_thread(thread);
26547 + result = REAL_FUNC(pthread_detach)(thread);
26548 + if (result == 0) {
26550 + thread_gc_id -> flags |= DETACHED;
26551 + /* Here the pthread thread id may have been recycled. */
26552 + if (thread_gc_id -> flags & FINISHED) {
26553 + GC_delete_gc_thread(thread, thread_gc_id);
26560 +void * GC_start_routine(void * arg)
26563 + struct start_info * si = arg;
26566 + pthread_t my_pthread;
26567 + void *(*start)(void *);
26570 + my_pthread = pthread_self();
26571 +# ifdef DEBUG_THREADS
26572 + GC_printf1("Starting thread 0x%lx\n", my_pthread);
26573 + GC_printf1("pid = %ld\n", (long) getpid());
26574 + GC_printf1("sp = 0x%lx\n", (long) &arg);
26577 + me = GC_new_thread(my_pthread);
26578 +#ifdef GC_DARWIN_THREADS
26579 + me -> stop_info.mach_thread = mach_thread_self();
26581 + me -> stop_info.stack_ptr = 0;
26583 + me -> flags = si -> flags;
26584 + /* me -> stack_end = GC_linux_stack_base(); -- currently (11/99) */
26585 + /* doesn't work because the stack base in /proc/self/stat is the */
26586 + /* one for the main thread. There is a strong argument that that's */
26587 + /* a kernel bug, but a pervasive one. */
26588 +# ifdef STACK_GROWS_DOWN
26589 + me -> stack_end = (ptr_t)(((word)(&dummy) + (GC_page_size - 1))
26590 + & ~(GC_page_size - 1));
26591 +# ifndef GC_DARWIN_THREADS
26592 + me -> stop_info.stack_ptr = me -> stack_end - 0x10;
26594 + /* Needs to be plausible, since an asynchronous stack mark */
26595 + /* should not crash. */
26597 + me -> stack_end = (ptr_t)((word)(&dummy) & ~(GC_page_size - 1));
26598 + me -> stop_info.stack_ptr = me -> stack_end + 0x10;
26600 + /* This is dubious, since we may be more than a page into the stack, */
26601 + /* and hence skip some of it, though it's not clear that matters. */
26603 + me -> backing_store_end = (ptr_t)
26604 + (GC_save_regs_in_stack() & ~(GC_page_size - 1));
26605 + /* This is also < 100% convincing. We should also read this */
26606 + /* from /proc, but the hook to do so isn't there yet. */
26607 +# endif /* IA64 */
26609 + start = si -> start_routine;
26610 +# ifdef DEBUG_THREADS
26611 + GC_printf1("start_routine = 0x%lx\n", start);
26613 + start_arg = si -> arg;
26614 + sem_post(&(si -> registered)); /* Last action on si. */
26615 + /* OK to deallocate. */
26616 + pthread_cleanup_push(GC_thread_exit_proc, 0);
26617 +# if defined(THREAD_LOCAL_ALLOC) && !defined(DBG_HDRS_ALL)
26619 + GC_init_thread_local(me);
26622 + result = (*start)(start_arg);
26624 + GC_printf1("Finishing thread 0x%x\n", pthread_self());
26626 + me -> status = result;
26627 + me -> flags |= FINISHED;
26628 + pthread_cleanup_pop(1);
26629 + /* Cleanup acquires lock, ensuring that we can't exit */
26630 + /* while a collection that thinks we're alive is trying to stop */
26636 +WRAP_FUNC(pthread_create)(pthread_t *new_thread,
26637 + const pthread_attr_t *attr,
26638 + void *(*start_routine)(void *), void *arg)
26642 + word my_flags = 0;
26643 + struct start_info * si;
26644 + /* This is otherwise saved only in an area mmapped by the thread */
26645 + /* library, which isn't visible to the collector. */
26647 + /* We resist the temptation to muck with the stack size here, */
26648 + /* even if the default is unreasonably small. That's the client's */
26649 + /* responsibility. */
26652 + si = (struct start_info *)GC_INTERNAL_MALLOC(sizeof(struct start_info),
26655 + if (!parallel_initialized) GC_init_parallel();
26656 + if (0 == si) return(ENOMEM);
26657 + sem_init(&(si -> registered), 0, 0);
26658 + si -> start_routine = start_routine;
26661 + if (!GC_thr_initialized) GC_thr_init();
26662 +# ifdef GC_ASSERTIONS
26665 + if (NULL == attr) {
26666 + pthread_attr_t my_attr;
26667 + pthread_attr_init(&my_attr);
26668 + pthread_attr_getstacksize(&my_attr, &stack_size);
26670 + pthread_attr_getstacksize(attr, &stack_size);
26672 + GC_ASSERT(stack_size >= (8*HBLKSIZE*sizeof(word)));
26673 + /* Our threads may need to do some work for the GC. */
26674 + /* Ridiculously small threads won't work, and they */
26675 + /* probably wouldn't work anyway. */
26678 + if (NULL == attr) {
26679 + detachstate = PTHREAD_CREATE_JOINABLE;
26681 + pthread_attr_getdetachstate(attr, &detachstate);
26683 + if (PTHREAD_CREATE_DETACHED == detachstate) my_flags |= DETACHED;
26684 + si -> flags = my_flags;
26686 +# ifdef DEBUG_THREADS
26687 + GC_printf1("About to start new thread from thread 0x%X\n",
26691 + result = REAL_FUNC(pthread_create)(new_thread, attr, GC_start_routine, si);
26693 +# ifdef DEBUG_THREADS
26694 + GC_printf1("Started thread 0x%X\n", *new_thread);
26696 + /* Wait until child has been added to the thread table. */
26697 + /* This also ensures that we hold onto si until the child is done */
26698 + /* with it. Thus it doesn't matter whether it is otherwise */
26699 + /* visible to the collector. */
26700 + while (0 != sem_wait(&(si -> registered))) {
26701 + if (EINTR != errno) ABORT("sem_wait failed");
26703 + sem_destroy(&(si -> registered));
26705 + GC_INTERNAL_FREE(si);
26711 +#ifdef GENERIC_COMPARE_AND_SWAP
26712 + pthread_mutex_t GC_compare_and_swap_lock = PTHREAD_MUTEX_INITIALIZER;
26714 + GC_bool GC_compare_and_exchange(volatile GC_word *addr,
26715 + GC_word old, GC_word new_val)
26718 + pthread_mutex_lock(&GC_compare_and_swap_lock);
26719 + if (*addr == old) {
26725 + pthread_mutex_unlock(&GC_compare_and_swap_lock);
26729 + GC_word GC_atomic_add(volatile GC_word *addr, GC_word how_much)
26732 + pthread_mutex_lock(&GC_compare_and_swap_lock);
26734 + *addr = old + how_much;
26735 + pthread_mutex_unlock(&GC_compare_and_swap_lock);
26739 +#endif /* GENERIC_COMPARE_AND_SWAP */
26740 +/* Spend a few cycles in a way that can't introduce contention with */
26741 +/* othre threads. */
26746 + volatile word dummy = 0;
26749 + for (i = 0; i < 10; ++i) {
26751 + __asm__ __volatile__ (" " : : : "memory");
26753 + /* Something that's unlikely to be optimized away. */
26754 + GC_noop(++dummy);
26759 +#define SPIN_MAX 1024 /* Maximum number of calls to GC_pause before */
26762 +VOLATILE GC_bool GC_collecting = 0;
26763 + /* A hint that we're in the collector and */
26764 + /* holding the allocation lock for an */
26765 + /* extended period. */
26767 +#if !defined(USE_SPIN_LOCK) || defined(PARALLEL_MARK)
26768 +/* If we don't want to use the below spinlock implementation, either */
26769 +/* because we don't have a GC_test_and_set implementation, or because */
26770 +/* we don't want to risk sleeping, we can still try spinning on */
26771 +/* pthread_mutex_trylock for a while. This appears to be very */
26772 +/* beneficial in many cases. */
26773 +/* I suspect that under high contention this is nearly always better */
26774 +/* than the spin lock. But it's a bit slower on a uniprocessor. */
26775 +/* Hence we still default to the spin lock. */
26776 +/* This is also used to acquire the mark lock for the parallel */
26779 +/* Here we use a strict exponential backoff scheme. I don't know */
26780 +/* whether that's better or worse than the above. We eventually */
26781 +/* yield by calling pthread_mutex_lock(); it never makes sense to */
26782 +/* explicitly sleep. */
26784 +void GC_generic_lock(pthread_mutex_t * lock)
26786 +#ifndef NO_PTHREAD_TRYLOCK
26787 + unsigned pause_length = 1;
26790 + if (0 == pthread_mutex_trylock(lock)) return;
26791 + for (; pause_length <= SPIN_MAX; pause_length <<= 1) {
26792 + for (i = 0; i < pause_length; ++i) {
26795 + switch(pthread_mutex_trylock(lock)) {
26801 + ABORT("Unexpected error from pthread_mutex_trylock");
26804 +#endif /* !NO_PTHREAD_TRYLOCK */
26805 + pthread_mutex_lock(lock);
26808 +#endif /* !USE_SPIN_LOCK || PARALLEL_MARK */
26810 +#if defined(USE_SPIN_LOCK)
26812 +/* Reasonably fast spin locks. Basically the same implementation */
26813 +/* as STL alloc.h. This isn't really the right way to do this. */
26814 +/* but until the POSIX scheduling mess gets straightened out ... */
26816 +volatile unsigned int GC_allocate_lock = 0;
26821 +# define low_spin_max 30 /* spin cycles if we suspect uniprocessor */
26822 +# define high_spin_max SPIN_MAX /* spin cycles for multiprocessor */
26823 + static unsigned spin_max = low_spin_max;
26824 + unsigned my_spin_max;
26825 + static unsigned last_spins = 0;
26826 + unsigned my_last_spins;
26829 + if (!GC_test_and_set(&GC_allocate_lock)) {
26832 + my_spin_max = spin_max;
26833 + my_last_spins = last_spins;
26834 + for (i = 0; i < my_spin_max; i++) {
26835 + if (GC_collecting || GC_nprocs == 1) goto yield;
26836 + if (i < my_last_spins/2 || GC_allocate_lock) {
26840 + if (!GC_test_and_set(&GC_allocate_lock)) {
26843 + * Spinning worked. Thus we're probably not being scheduled
26844 + * against the other process with which we were contending.
26845 + * Thus it makes sense to spin longer the next time.
26848 + spin_max = high_spin_max;
26852 + /* We are probably being scheduled against the other process. Sleep. */
26853 + spin_max = low_spin_max;
26855 + for (i = 0;; ++i) {
26856 + if (!GC_test_and_set(&GC_allocate_lock)) {
26859 +# define SLEEP_THRESHOLD 12
26860 + /* Under Linux very short sleeps tend to wait until */
26861 + /* the current time quantum expires. On old Linux */
26862 + /* kernels nanosleep(<= 2ms) just spins under Linux. */
26863 + /* (Under 2.4, this happens only for real-time */
26864 + /* processes.) We want to minimize both behaviors */
26866 + if (i < SLEEP_THRESHOLD) {
26869 + struct timespec ts;
26871 + if (i > 24) i = 24;
26872 + /* Don't wait for more than about 15msecs, even */
26873 + /* under extreme contention. */
26875 + ts.tv_nsec = 1 << i;
26876 + nanosleep(&ts, 0);
26881 +#else /* !USE_SPINLOCK */
26884 +#ifndef NO_PTHREAD_TRYLOCK
26885 + if (1 == GC_nprocs || GC_collecting) {
26886 + pthread_mutex_lock(&GC_allocate_ml);
26888 + GC_generic_lock(&GC_allocate_ml);
26890 +#else /* !NO_PTHREAD_TRYLOCK */
26891 + pthread_mutex_lock(&GC_allocate_ml);
26892 +#endif /* !NO_PTHREAD_TRYLOCK */
26895 +#endif /* !USE_SPINLOCK */
26897 +#if defined(PARALLEL_MARK) || defined(THREAD_LOCAL_ALLOC)
26899 +#ifdef GC_ASSERTIONS
26900 + pthread_t GC_mark_lock_holder = NO_THREAD;
26904 + /* Ugly workaround for a linux threads bug in the final versions */
26905 + /* of glibc2.1. Pthread_mutex_trylock sets the mutex owner */
26906 + /* field even when it fails to acquire the mutex. This causes */
26907 + /* pthread_cond_wait to die. Remove for glibc2.2. */
26908 + /* According to the man page, we should use */
26909 + /* PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP, but that isn't actually */
26911 + static pthread_mutex_t mark_mutex =
26912 + {0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, {0, 0}};
26914 + static pthread_mutex_t mark_mutex = PTHREAD_MUTEX_INITIALIZER;
26917 +static pthread_cond_t builder_cv = PTHREAD_COND_INITIALIZER;
26919 +void GC_acquire_mark_lock()
26922 + if (pthread_mutex_lock(&mark_mutex) != 0) {
26923 + ABORT("pthread_mutex_lock failed");
26926 + GC_generic_lock(&mark_mutex);
26927 +# ifdef GC_ASSERTIONS
26928 + GC_mark_lock_holder = pthread_self();
26932 +void GC_release_mark_lock()
26934 + GC_ASSERT(GC_mark_lock_holder == pthread_self());
26935 +# ifdef GC_ASSERTIONS
26936 + GC_mark_lock_holder = NO_THREAD;
26938 + if (pthread_mutex_unlock(&mark_mutex) != 0) {
26939 + ABORT("pthread_mutex_unlock failed");
26943 +/* Collector must wait for a freelist builders for 2 reasons: */
26944 +/* 1) Mark bits may still be getting examined without lock. */
26945 +/* 2) Partial free lists referenced only by locals may not be scanned */
26946 +/* correctly, e.g. if they contain "pointer-free" objects, since the */
26947 +/* free-list link may be ignored. */
26948 +void GC_wait_builder()
26950 + GC_ASSERT(GC_mark_lock_holder == pthread_self());
26951 +# ifdef GC_ASSERTIONS
26952 + GC_mark_lock_holder = NO_THREAD;
26954 + if (pthread_cond_wait(&builder_cv, &mark_mutex) != 0) {
26955 + ABORT("pthread_cond_wait failed");
26957 + GC_ASSERT(GC_mark_lock_holder == NO_THREAD);
26958 +# ifdef GC_ASSERTIONS
26959 + GC_mark_lock_holder = pthread_self();
26963 +void GC_wait_for_reclaim()
26965 + GC_acquire_mark_lock();
26966 + while (GC_fl_builder_count > 0) {
26967 + GC_wait_builder();
26969 + GC_release_mark_lock();
26972 +void GC_notify_all_builder()
26974 + GC_ASSERT(GC_mark_lock_holder == pthread_self());
26975 + if (pthread_cond_broadcast(&builder_cv) != 0) {
26976 + ABORT("pthread_cond_broadcast failed");
26980 +#endif /* PARALLEL_MARK || THREAD_LOCAL_ALLOC */
26982 +#ifdef PARALLEL_MARK
26984 +static pthread_cond_t mark_cv = PTHREAD_COND_INITIALIZER;
26986 +void GC_wait_marker()
26988 + GC_ASSERT(GC_mark_lock_holder == pthread_self());
26989 +# ifdef GC_ASSERTIONS
26990 + GC_mark_lock_holder = NO_THREAD;
26992 + if (pthread_cond_wait(&mark_cv, &mark_mutex) != 0) {
26993 + ABORT("pthread_cond_wait failed");
26995 + GC_ASSERT(GC_mark_lock_holder == NO_THREAD);
26996 +# ifdef GC_ASSERTIONS
26997 + GC_mark_lock_holder = pthread_self();
27001 +void GC_notify_all_marker()
27003 + if (pthread_cond_broadcast(&mark_cv) != 0) {
27004 + ABORT("pthread_cond_broadcast failed");
27008 +#endif /* PARALLEL_MARK */
27010 +# endif /* GC_LINUX_THREADS and friends */
27012 diff -buNr boehm-gc/ptr_chck.c boehm-gc/ptr_chck.c
27013 --- boehm-gc/ptr_chck.c Fri Aug 17 11:30:46 2001
27014 +++ boehm-gc/ptr_chck.c Sat Sep 13 02:10:15 2003
27018 sz = WORDS_TO_BYTES(hhdr -> hb_sz);
27019 - if (sz > WORDS_TO_BYTES(MAXOBJSZ)) {
27020 + if (sz > MAXOBJBYTES) {
27021 base = (ptr_t)HBLKPTR(p);
27023 if ((ptr_t)p >= limit) {
27024 @@ -165,7 +165,7 @@
27025 pdispl = HBLKDISPL(p);
27026 map_entry = MAP_ENTRY((hhdr -> hb_map), pdispl);
27027 if (map_entry == OBJ_INVALID
27028 - || sz > MAXOBJSZ && (ptr_t)p >= (ptr_t)h + sz) {
27029 + || sz > MAXOBJBYTES && (ptr_t)p >= (ptr_t)h + sz) {
27033 diff -buNr boehm-gc/reclaim.c boehm-gc/reclaim.c
27034 --- boehm-gc/reclaim.c Fri Mar 29 14:52:12 2002
27035 +++ boehm-gc/reclaim.c Sat Sep 13 02:10:15 2003
27036 @@ -27,10 +27,43 @@
27038 #endif /* PARALLEL_MARK */
27040 -static void report_leak(p, sz)
27043 +/* We defer printing of leaked objects until we're done with the GC */
27044 +/* cycle, since the routine for printing objects needs to run outside */
27045 +/* the collector, e.g. without the allocation lock. */
27046 +#define MAX_LEAKED 40
27047 +ptr_t GC_leaked[MAX_LEAKED];
27048 +unsigned GC_n_leaked = 0;
27050 +GC_bool GC_have_errors = FALSE;
27052 +void GC_add_leaked(leaked)
27055 + if (GC_n_leaked < MAX_LEAKED) {
27056 + GC_have_errors = TRUE;
27057 + GC_leaked[GC_n_leaked++] = leaked;
27058 + /* Make sure it's not reclaimed this cycle */
27059 + GC_set_mark_bit(leaked);
27063 +static GC_bool printing_errors = FALSE;
27064 +/* Print all objects on the list after printing any smashed objs. */
27065 +/* Clear both lists. */
27066 +void GC_print_all_errors ()
27071 + if (printing_errors) {
27075 + printing_errors = TRUE;
27077 + if (GC_debugging_started) GC_print_all_smashed();
27078 + for (i = 0; i < GC_n_leaked; ++i) {
27079 + ptr_t p = GC_leaked[i];
27080 if (HDR(p) -> hb_obj_kind == PTRFREE) {
27081 GC_err_printf0("Leaked atomic object at ");
27083 @@ -38,12 +71,17 @@
27085 GC_print_heap_obj(p);
27086 GC_err_printf0("\n");
27088 + GC_leaked[i] = 0;
27091 + printing_errors = FALSE;
27095 # define FOUND_FREE(hblk, word_no) \
27097 - report_leak((ptr_t)hblk + WORDS_TO_BYTES(word_no), \
27098 - HDR(hblk) -> hb_sz); \
27099 + GC_add_leaked((ptr_t)hblk + WORDS_TO_BYTES(word_no)); \
27103 @@ -866,7 +904,7 @@
27105 * This must be done before dropping a list of free gcj-style objects,
27106 * since may otherwise end up with dangling "descriptor" pointers.
27107 - * It may help for other pointer-containg objects.
27108 + * It may help for other pointer-containing objects.
27110 void GC_clear_fl_links(flp)
27112 diff -buNr boehm-gc/solaris_pthreads.c boehm-gc/solaris_pthreads.c
27113 --- boehm-gc/solaris_pthreads.c Mon Feb 11 20:37:53 2002
27114 +++ boehm-gc/solaris_pthreads.c Sat Sep 13 02:10:15 2003
27117 * Support code for Solaris threads. Provides functionality we wish Sun
27118 * had provided. Relies on some information we probably shouldn't rely on.
27119 - * Modified Peter C. for Solaris Posix Threads.
27120 + * Modified by Peter C. for Solaris Posix Threads.
27122 -/* Boehm, September 14, 1994 4:44 pm PDT */
27124 # if defined(GC_SOLARIS_PTHREADS)
27125 # include "private/gc_priv.h"
27126 diff -buNr boehm-gc/solaris_threads.c boehm-gc/solaris_threads.c
27127 --- boehm-gc/solaris_threads.c Mon Feb 11 20:37:53 2002
27128 +++ boehm-gc/solaris_threads.c Sat Sep 13 02:10:15 2003
27130 # include <unistd.h>
27131 # include <errno.h>
27133 +#ifdef HANDLE_FORK
27134 + --> Not yet supported. Try porting the code from linux_threads.c.
27138 * This is the default size of the LWP arrays. If there are more LWPs
27139 * than this when a stop-the-world GC happens, set_max_lwps will be
27140 @@ -361,7 +365,7 @@
27141 sizeof (prgregset_t)) != 0) {
27144 - for(j = 0; j < NGREG; j++)
27145 + for(j = 0; j < NPRGREG; j++)
27147 GC_printf3("%i: %x -> %x\n", j,
27148 GC_lwp_registers[i][j],
27149 @@ -821,7 +825,7 @@
27151 t = GC_lookup_thread(target_thread);
27152 if (t == 0) ABORT("thread unknown to GC");
27153 - t -> flags |= SUSPENDED;
27154 + t -> flags |= SUSPNDED;
27158 @@ -837,7 +841,7 @@
27160 t = GC_lookup_thread(target_thread);
27161 if (t == 0) ABORT("thread unknown to GC");
27162 - t -> flags &= ~SUSPENDED;
27163 + t -> flags &= ~SUSPNDED;
27167 @@ -923,7 +927,7 @@
27168 my_flags |= CLIENT_OWNS_STACK;
27170 if (flags & THR_DETACHED) my_flags |= DETACHED;
27171 - if (flags & THR_SUSPENDED) my_flags |= SUSPENDED;
27172 + if (flags & THR_SUSPENDED) my_flags |= SUSPNDED;
27173 result = thr_create(stack, stack_size, start_routine,
27174 arg, flags & ~THR_DETACHED, &my_new_thread);
27176 diff -buNr boehm-gc/threadlibs.c boehm-gc/threadlibs.c
27177 --- boehm-gc/threadlibs.c Mon Feb 11 20:37:53 2002
27178 +++ boehm-gc/threadlibs.c Sat Sep 13 02:10:15 2003
27182 # if defined(GC_USE_LD_WRAP)
27183 - printf("-Wl,--wrap -Wl,read -Wl,--wrap -Wl,dlopen "
27184 + printf("-Wl,--wrap -Wl,dlopen "
27185 "-Wl,--wrap -Wl,pthread_create -Wl,--wrap -Wl,pthread_join "
27186 "-Wl,--wrap -Wl,pthread_detach "
27187 "-Wl,--wrap -Wl,pthread_sigmask -Wl,--wrap -Wl,sleep\n");
27189 # if defined(GC_LINUX_THREADS) || defined(GC_IRIX_THREADS) \
27190 - || defined(GC_FREEBSD_THREADS) || defined(GC_SOLARIS_PTHREADS)
27191 + || defined(GC_FREEBSD_THREADS) || defined(GC_SOLARIS_PTHREADS) \
27192 + || defined(GC_MACOSX_THREADS)
27193 printf("-lpthread\n");
27195 # if defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS)
27198 # if defined(GC_SOLARIS_THREADS) && !defined(GC_SOLARIS_PTHREADS)
27199 printf("-lthread -ldl\n");
27201 +# if defined(GC_WIN32_THREADS) && defined(CYGWIN32)
27202 + printf("-lpthread\n");
27204 +# if defined(GC_OSF1_THREADS)
27205 + printf("-lpthread -lrt");
27207 + /* You need GCC 3.0.3 to build this one! */
27208 + /* DG/UX native gcc doesnt know what "-pthread" is */
27209 +# if defined(GC_DGUX386_THREADS)
27210 + printf("-ldl -pthread\n");
27214 diff -buNr boehm-gc/typd_mlc.c boehm-gc/typd_mlc.c
27215 --- boehm-gc/typd_mlc.c Fri Aug 17 11:30:46 2001
27216 +++ boehm-gc/typd_mlc.c Sat Sep 13 02:10:15 2003
27217 @@ -437,6 +437,7 @@
27218 for (; bm != 0; bm >>= 1, current_p++) {
27220 current = *current_p;
27221 + FIXUP_POINTER(current);
27222 if ((ptr_t)current >= least_ha && (ptr_t)current <= greatest_ha) {
27223 PUSH_CONTENTS((ptr_t)current, mark_stack_ptr,
27224 mark_stack_limit, current_p, exit1);
27225 @@ -674,7 +675,7 @@
27226 if( !FASTLOCK_SUCCEEDED() || (op = *opp) == 0 ) {
27228 op = (ptr_t)GENERAL_MALLOC((word)lb, GC_explicit_kind);
27229 - if (0 == op) return(0);
27230 + if (0 == op) return 0;
27231 # ifdef MERGE_SIZES
27232 lw = GC_size_map[lb]; /* May have been uninitialized. */
27234 diff -buNr boehm-gc/version.h boehm-gc/version.h
27235 --- boehm-gc/version.h Mon Feb 11 20:37:53 2002
27236 +++ boehm-gc/version.h Sat Sep 13 02:10:15 2003
27238 -#define GC_VERSION_MAJOR 6
27239 -#define GC_VERSION_MINOR 1
27240 -#define GC_ALPHA_VERSION 3
27241 +/* The version here should match that in configure/configure.in */
27242 +/* Eventually this one may become unnecessary. For now we need */
27243 +/* it to keep the old-style build process working. */
27244 +#define GC_TMP_VERSION_MAJOR 6
27245 +#define GC_TMP_VERSION_MINOR 2
27246 +#define GC_TMP_ALPHA_VERSION 5
27248 +#if defined(GC_VERSION_MAJOR)
27249 +# if GC_TMP_VERSION_MAJOR != GC_VERSION_MAJOR || \
27250 + GC_TMP_VERSION_MINOR != GC_VERSION_MINOR || \
27251 + GC_TMP_ALPHA_VERSION != GC_ALPHA_VERSION
27252 +# error Inconsistent version info. Check version.h and configure.in.
27255 +# define GC_VERSION_MAJOR GC_TMP_VERSION_MAJOR
27256 +# define GC_VERSION_MINOR GC_TMP_VERSION_MINOR
27257 +# define GC_ALPHA_VERSION GC_TMP_ALPHA_VERSION
27260 +#ifndef GC_NOT_ALPHA
27261 # define GC_NOT_ALPHA 0xff
27264 #ifndef GC_NO_VERSION_VAR
27267 --- boehm-gc/win32_threads.c Fri Sep 26 16:46:24 2003
27268 +++ boehm-gc/win32_threads.c Fri Sep 26 16:46:46 2003
27269 @@ -337,7 +337,7 @@
27271 #if !defined(MSWINCE) && !(defined(__MINGW32__) && !defined(_DLL))
27273 -HANDLE WINAPI GC_CreateThread(
27274 +GC_API HANDLE GC_CreateThread(
27275 LPSECURITY_ATTRIBUTES lpThreadAttributes,
27276 DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress,
27277 LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId )
27278 @@ -357,7 +357,7 @@
27280 DWORD WINAPI thread_start(LPVOID arg);
27282 -HANDLE WINAPI GC_CreateThread(
27283 +GC_API HANDLE GC_CreateThread(
27284 LPSECURITY_ATTRIBUTES lpThreadAttributes,
27285 DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress,
27286 LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId )