diff options
-rw-r--r-- | Makefile.am | 34 | ||||
-rw-r--r-- | Makefile.in | 149 | ||||
-rw-r--r-- | aclocal.m4 | 1615 | ||||
-rwxr-xr-x | configure | 5034 | ||||
-rw-r--r-- | src/processor/memory_region.h | 65 | ||||
-rw-r--r-- | src/processor/minidump.cc | 2025 | ||||
-rw-r--r-- | src/processor/minidump.h | 699 | ||||
-rw-r--r-- | src/processor/minidump_dump.cc | 110 | ||||
-rwxr-xr-x | src/processor/minidump_dump_test | 6 | ||||
-rw-r--r-- | src/processor/minidump_format.h | 555 | ||||
-rw-r--r-- | src/processor/range_map.h | 158 | ||||
-rw-r--r-- | src/processor/range_map_unittest.cc | 334 | ||||
-rw-r--r-- | src/processor/testdata/minidump1.dmp | bin | 0 -> 64111 bytes | |||
-rw-r--r-- | src/processor/testdata/minidump1.out | 3734 |
14 files changed, 11125 insertions, 3393 deletions
diff --git a/Makefile.am b/Makefile.am index 5baf460d..ea1d9e52 100644 --- a/Makefile.am +++ b/Makefile.am @@ -18,6 +18,7 @@ # This allows #includes to be relative to src/ AM_CPPFLAGS = -I$(top_srcdir)/src + ## Documentation docdir = $(prefix)/share/doc/$(PACKAGE)-$(VERSION) @@ -34,14 +35,34 @@ dist_doc_DATA = \ lib_LTLIBRARIES = src/libairbag.la src_libairbag_la_SOURCES = \ + src/google/airbag_types.h \ + src/google/crash_report.h \ + src/google/stack_frame.h \ + src/processor/memory_region.h \ + src/processor/minidump.cc \ + src/processor/minidump.h \ + src/processor/minidump_format.h \ + src/processor/range_map.h \ src/processor/source_line_resolver.cc \ src/processor/source_line_resolver.h +## Programs +bin_PROGRAMS = \ + src/processor/minidump_dump + + ## Tests -TESTS = src/processor/source_line_resolver_unittest +check_PROGRAMS = \ + src/processor/range_map_unittest \ + src/processor/source_line_resolver_unittest +check_SCRIPTS = \ + src/processor/minidump_dump_test +TESTS = $(check_PROGRAMS) $(check_SCRIPTS) TESTS_ENVIRONMENT = -check_SCRIPTS = + +src_processor_range_map_unittest_SOURCES = \ + src/processor/range_map_unittest.cc src_processor_source_line_resolver_unittest_SOURCES = \ src/processor/source_line_resolver_unittest.cc @@ -50,13 +71,20 @@ src_processor_source_line_resolver_unittest_LDADD = \ ## Non-installables -noinst_PROGRAMS = $(TESTS) +noinst_PROGRAMS = noinst_SCRIPTS = $(check_SCRIPTS) +src_processor_minidump_dump_SOURCES = \ + src/processor/minidump_dump.cc +src_processor_minidump_dump_LDADD = \ + src/processor/minidump.lo + ## Additional files to be included in a source distribution EXTRA_DIST = \ $(SCRIPTS) \ + src/processor/testdata/minidump1.dmp \ + src/processor/testdata/minidump1.out \ src/processor/testdata/module1.out \ src/processor/testdata/module2.out \ src/processor/testdata/module3_bad.out diff --git a/Makefile.in b/Makefile.in index 85c1e309..4120ce8a 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.9.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -31,8 +31,6 @@ -SOURCES = $(src_libairbag_la_SOURCES) $(src_processor_source_line_resolver_unittest_SOURCES) - srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ @@ -55,7 +53,10 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -noinst_PROGRAMS = $(am__EXEEXT_1) +bin_PROGRAMS = src/processor/minidump_dump$(EXEEXT) +check_PROGRAMS = src/processor/range_map_unittest$(EXEEXT) \ + src/processor/source_line_resolver_unittest$(EXEEXT) +noinst_PROGRAMS = DIST_COMMON = README $(am__configure_deps) $(dist_doc_DATA) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/configure $(top_srcdir)/src/config.h.in AUTHORS \ @@ -78,15 +79,27 @@ am__vpath_adj = case $$p in \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(docdir)" +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(docdir)" libLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) src_libairbag_la_LIBADD = am__dirstamp = $(am__leading_dot)dirstamp -am_src_libairbag_la_OBJECTS = src/processor/source_line_resolver.lo +am_src_libairbag_la_OBJECTS = src/processor/minidump.lo \ + src/processor/source_line_resolver.lo src_libairbag_la_OBJECTS = $(am_src_libairbag_la_OBJECTS) -am__EXEEXT_1 = src/processor/source_line_resolver_unittest$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) +am_src_processor_minidump_dump_OBJECTS = \ + src/processor/minidump_dump.$(OBJEXT) +src_processor_minidump_dump_OBJECTS = \ + $(am_src_processor_minidump_dump_OBJECTS) +src_processor_minidump_dump_DEPENDENCIES = src/processor/minidump.lo +am_src_processor_range_map_unittest_OBJECTS = \ + src/processor/range_map_unittest.$(OBJEXT) +src_processor_range_map_unittest_OBJECTS = \ + $(am_src_processor_range_map_unittest_OBJECTS) +src_processor_range_map_unittest_LDADD = $(LDADD) am_src_processor_source_line_resolver_unittest_OBJECTS = \ src/processor/source_line_resolver_unittest.$(OBJEXT) src_processor_source_line_resolver_unittest_OBJECTS = \ @@ -114,8 +127,12 @@ CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(src_libairbag_la_SOURCES) \ + $(src_processor_minidump_dump_SOURCES) \ + $(src_processor_range_map_unittest_SOURCES) \ $(src_processor_source_line_resolver_unittest_SOURCES) DIST_SOURCES = $(src_libairbag_la_SOURCES) \ + $(src_processor_minidump_dump_SOURCES) \ + $(src_processor_range_map_unittest_SOURCES) \ $(src_processor_source_line_resolver_unittest_SOURCES) dist_docDATA_INSTALL = $(INSTALL_DATA) DATA = $(dist_doc_DATA) @@ -243,12 +260,25 @@ dist_doc_DATA = \ lib_LTLIBRARIES = src/libairbag.la src_libairbag_la_SOURCES = \ + src/google/airbag_types.h \ + src/google/crash_report.h \ + src/google/stack_frame.h \ + src/processor/memory_region.h \ + src/processor/minidump.cc \ + src/processor/minidump.h \ + src/processor/minidump_format.h \ + src/processor/range_map.h \ src/processor/source_line_resolver.cc \ src/processor/source_line_resolver.h -TESTS = src/processor/source_line_resolver_unittest +check_SCRIPTS = \ + src/processor/minidump_dump_test + +TESTS = $(check_PROGRAMS) $(check_SCRIPTS) TESTS_ENVIRONMENT = -check_SCRIPTS = +src_processor_range_map_unittest_SOURCES = \ + src/processor/range_map_unittest.cc + src_processor_source_line_resolver_unittest_SOURCES = \ src/processor/source_line_resolver_unittest.cc @@ -256,8 +286,16 @@ src_processor_source_line_resolver_unittest_LDADD = \ src/processor/source_line_resolver.lo noinst_SCRIPTS = $(check_SCRIPTS) +src_processor_minidump_dump_SOURCES = \ + src/processor/minidump_dump.cc + +src_processor_minidump_dump_LDADD = \ + src/processor/minidump.lo + EXTRA_DIST = \ $(SCRIPTS) \ + src/processor/testdata/minidump1.dmp \ + src/processor/testdata/minidump1.out \ src/processor/testdata/module1.out \ src/processor/testdata/module2.out \ src/processor/testdata/module3_bad.out @@ -349,6 +387,8 @@ src/processor/$(am__dirstamp): src/processor/$(DEPDIR)/$(am__dirstamp): @$(mkdir_p) src/processor/$(DEPDIR) @: > src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/minidump.lo: src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) src/processor/source_line_resolver.lo: src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) src/$(am__dirstamp): @@ -356,6 +396,41 @@ src/$(am__dirstamp): @: > src/$(am__dirstamp) src/libairbag.la: $(src_libairbag_la_OBJECTS) $(src_libairbag_la_DEPENDENCIES) src/$(am__dirstamp) $(CXXLINK) -rpath $(libdir) $(src_libairbag_la_LDFLAGS) $(src_libairbag_la_OBJECTS) $(src_libairbag_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; for p in $$list; do \ @@ -363,6 +438,17 @@ clean-noinstPROGRAMS: echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done +src/processor/minidump_dump.$(OBJEXT): src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/minidump_dump$(EXEEXT): $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/minidump_dump$(EXEEXT) + $(CXXLINK) $(src_processor_minidump_dump_LDFLAGS) $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_LDADD) $(LIBS) +src/processor/range_map_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/range_map_unittest$(EXEEXT): $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/range_map_unittest$(EXEEXT) + $(CXXLINK) $(src_processor_range_map_unittest_LDFLAGS) $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_LDADD) $(LIBS) src/processor/source_line_resolver_unittest.$(OBJEXT): \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) @@ -372,6 +458,10 @@ src/processor/source_line_resolver_unittest$(EXEEXT): $(src_processor_source_lin mostlyclean-compile: -rm -f *.$(OBJEXT) + -rm -f src/processor/minidump.$(OBJEXT) + -rm -f src/processor/minidump.lo + -rm -f src/processor/minidump_dump.$(OBJEXT) + -rm -f src/processor/range_map_unittest.$(OBJEXT) -rm -f src/processor/source_line_resolver.$(OBJEXT) -rm -f src/processor/source_line_resolver.lo -rm -f src/processor/source_line_resolver_unittest.$(OBJEXT) @@ -379,6 +469,9 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump_dump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/range_map_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/source_line_resolver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/source_line_resolver_unittest.Po@am__quote@ @@ -559,7 +652,7 @@ check-TESTS: $(TESTS) distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) - $(mkdir_p) $(distdir)/autotools $(distdir)/src $(distdir)/src/processor/testdata + $(mkdir_p) $(distdir)/autotools $(distdir)/src $(distdir)/src/processor $(distdir)/src/processor/testdata @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ @@ -684,12 +777,14 @@ distcleancheck: distclean $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_SCRIPTS) + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +install-binPROGRAMS: install-libLTLIBRARIES + installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(docdir)"; do \ + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am @@ -721,8 +816,9 @@ maintainer-clean-generic: @echo "it deletes files that may require special tools to rebuild." clean: clean-am -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ - clean-noinstPROGRAMS mostlyclean-am +clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ + clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) @@ -743,7 +839,7 @@ info-am: install-data-am: install-dist_docDATA -install-exec-am: install-libLTLIBRARIES +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES install-info: install-info-am @@ -771,24 +867,25 @@ ps: ps-am ps-am: -uninstall-am: uninstall-dist_docDATA uninstall-info-am \ - uninstall-libLTLIBRARIES +uninstall-am: uninstall-binPROGRAMS uninstall-dist_docDATA \ + uninstall-info-am uninstall-libLTLIBRARIES .PHONY: CTAGS GTAGS all all-am am--refresh check check-TESTS check-am \ - clean clean-generic clean-libLTLIBRARIES clean-libtool \ - clean-noinstPROGRAMS ctags dist dist-all dist-bzip2 dist-gzip \ - dist-shar dist-tarZ dist-zip distcheck distclean \ - distclean-compile distclean-generic distclean-hdr \ - distclean-libtool distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ + clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ + clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS ctags \ + dist dist-all dist-bzip2 dist-gzip dist-shar dist-tarZ \ + dist-zip distcheck distclean distclean-compile \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am \ install-dist_docDATA install-exec install-exec-am install-info \ install-info-am install-libLTLIBRARIES install-man \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-dist_docDATA uninstall-info-am \ + uninstall-binPROGRAMS uninstall-dist_docDATA uninstall-info-am \ uninstall-libLTLIBRARIES @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.9.5 -*- Autoconf -*- +# generated automatically by aclocal 1.9.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005 Free Software Foundation, Inc. @@ -13,8 +13,7 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# serial 47 AC_PROG_LIBTOOL -# Debian $Rev: 214 $ +# serial 48 AC_PROG_LIBTOOL # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) @@ -124,7 +123,7 @@ esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' +Xsed='sed -e 1s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. @@ -144,7 +143,7 @@ rm="rm -f" default_ofile=libtool can_build_shared=yes -# All known linkers require a `.a' archive for static linking (except M$VC, +# All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" @@ -164,6 +163,7 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" @@ -183,15 +183,17 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) - old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi +_LT_CC_BASENAME([$compiler]) + # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) @@ -232,11 +234,56 @@ AC_DEFUN([_LT_AC_SYS_COMPILER], # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_AC_SYS_COMPILER +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_LINKER_BOILERPLATE + + # _LT_AC_SYS_LIBPATH_AIX # ---------------------- # Links a minimal program and checks the executable @@ -309,15 +356,15 @@ fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. -if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if (echo_test_string="`eval $cmd`") 2>/dev/null && - echo_test_string="`eval $cmd`" && + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break @@ -486,7 +533,7 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - case "`/usr/bin/file conftest.o`" in + case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*linux*) @@ -537,6 +584,22 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) CFLAGS="$SAVE_CFLAGS" fi ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) @@ -568,7 +631,7 @@ AC_CACHE_CHECK([$1], [$2], # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) @@ -578,8 +641,10 @@ AC_CACHE_CHECK([$1], [$2], echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi @@ -605,11 +670,16 @@ AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], LDFLAGS="$LDFLAGS $3" printf "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The compiler can only warn and ignore the option if not recognized + # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi else $2=yes fi @@ -668,11 +738,55 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=8192; ;; - *) + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && @@ -698,7 +812,7 @@ fi # _LT_AC_CHECK_DLFCN -# -------------------- +# ------------------ AC_DEFUN([_LT_AC_CHECK_DLFCN], [AC_CHECK_HEADERS(dlfcn.h)dnl ])# _LT_AC_CHECK_DLFCN @@ -706,7 +820,7 @@ AC_DEFUN([_LT_AC_CHECK_DLFCN], # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ------------------------------------------------------------------ +# --------------------------------------------------------------------- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "$cross_compiling" = yes; then : @@ -772,17 +886,19 @@ int main () else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } + else + puts (dlerror ()); exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; - x$lt_unknown|x*) $3 ;; + x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed @@ -794,7 +910,7 @@ rm -fr conftest* # AC_LIBTOOL_DLOPEN_SELF -# ------------------- +# ---------------------- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl if test "x$enable_dlopen" != xyes; then @@ -865,7 +981,7 @@ else test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" @@ -878,7 +994,7 @@ else ]) if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( @@ -926,7 +1042,7 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) @@ -938,11 +1054,13 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - if test ! -s out/conftest.err; then + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi - chmod u+w . + chmod u+w . 2>&AS_MESSAGE_LOG_FD $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation @@ -1006,8 +1124,8 @@ AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_AC_TAGVAR(hardcode_action, $1)= if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ - test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \ - test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existant directories. if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && @@ -1174,7 +1292,7 @@ beos*) shlibpath_var=LIBRARY_PATH ;; -bsdi4*) +bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -1202,7 +1320,8 @@ cygwin* | mingw* | pw32*) dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' @@ -1232,7 +1351,7 @@ cygwin* | mingw* | pw32*) ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; @@ -1255,7 +1374,7 @@ darwin* | rhapsody*) soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` @@ -1290,8 +1409,17 @@ kfreebsd*-gnu) dynamic_linker='GNU ld.so' ;; -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) @@ -1309,14 +1437,19 @@ freebsd*) freebsd2*) shlibpath_overrides_runpath=yes ;; - freebsd3.[01]* | freebsdelf3.[01]*) + freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; - *) # from 3.2 on + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; esac ;; @@ -1336,7 +1469,7 @@ hpux9* | hpux10* | hpux11*) version_type=sunos need_lib_prefix=no need_version=no - case "$host_cpu" in + case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes @@ -1376,6 +1509,18 @@ hpux9* | hpux10* | hpux11*) postinstall_cmds='chmod 555 $lib' ;; +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; @@ -1435,7 +1580,7 @@ linux*) # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -1448,18 +1593,6 @@ linux*) dynamic_linker='GNU/Linux ld.so' ;; -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - knetbsd*-gnu) version_type=linux need_lib_prefix=no @@ -1509,8 +1642,13 @@ nto-qnx*) openbsd*) version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no - need_version=yes + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH @@ -1548,13 +1686,6 @@ osf3* | osf4* | osf5*) sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - solaris*) version_type=linux need_lib_prefix=no @@ -1580,7 +1711,7 @@ sunos4*) need_version=yes ;; -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -1613,6 +1744,29 @@ sysv4*MP*) fi ;; +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -1626,6 +1780,11 @@ uts4*) esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER @@ -1650,6 +1809,9 @@ if test -f "$ltmain" && test -n "$tagnames"; then AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) fi fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. @@ -1676,7 +1838,9 @@ if test -f "$ltmain" && test -n "$tagnames"; then case $tagname in CXX) - if test -n "$CXX" && test "X$CXX" != "Xno"; then + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then AC_LIBTOOL_LANG_CXX_CONFIG else tagname="" @@ -1738,7 +1902,7 @@ AC_DEFUN([AC_LIBTOOL_DLOPEN], # AC_LIBTOOL_WIN32_DLL # -------------------- -# declare package support for building win32 dll's +# declare package support for building win32 DLLs AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ])# AC_LIBTOOL_WIN32_DLL @@ -1776,7 +1940,7 @@ AC_ARG_ENABLE([shared], # AC_DISABLE_SHARED # ----------------- -#- set the default shared flag to --disable-shared +# set the default shared flag to --disable-shared AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no) @@ -1912,7 +2076,7 @@ dnl not every word. This closes a longstanding sh security hole. if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then @@ -2022,7 +2186,7 @@ AC_CACHE_VAL(lt_cv_path_LD, if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. + # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) @@ -2054,7 +2218,7 @@ AC_PROG_LD_GNU AC_DEFUN([AC_PROG_LD_GNU], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +[# I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) lt_cv_prog_gnu_ld=yes @@ -2081,6 +2245,15 @@ case $reload_flag in *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac ])# AC_PROG_LD_RELOAD_FLAG @@ -2114,7 +2287,7 @@ beos*) lt_cv_deplibs_check_method=pass_all ;; -bsdi4*) +bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so @@ -2137,13 +2310,13 @@ darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; -freebsd* | kfreebsd*-gnu) +freebsd* | kfreebsd*-gnu | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; @@ -2159,7 +2332,7 @@ gnu*) hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file - case "$host_cpu" in + case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so @@ -2175,6 +2348,11 @@ hpux10.20* | hpux11*) esac ;; +interix3*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; @@ -2190,7 +2368,7 @@ linux*) lt_cv_deplibs_check_method=pass_all ;; -netbsd* | netbsdelf*-gnu | knetbsd*-gnu) +netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else @@ -2209,12 +2387,10 @@ nto-qnx*) ;; openbsd*) - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else - lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; @@ -2222,15 +2398,11 @@ osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - solaris*) lt_cv_deplibs_check_method=pass_all ;; -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' @@ -2251,10 +2423,13 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) siemens) lt_cv_deplibs_check_method=pass_all ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; esac ;; -sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac @@ -2274,36 +2449,43 @@ AC_DEFUN([AC_PROG_NM], # Let the user override the test. lt_cv_path_NM="$NM" else - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/${ac_tool_prefix}nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" break ;; *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac ;; esac - esac - fi + fi + done + IFS="$lt_save_ifs" done - IFS="$lt_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" @@ -2335,13 +2517,13 @@ esac # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will -# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with -# '${top_srcdir}/' (note the single quotes!). If your package is not -# flat and you're not using automake, define top_builddir and -# top_srcdir appropriately in the Makefiles. +# --enable-ltdl-convenience to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# it is assumed to be `libltdl'. LIBLTDL will be prefixed with +# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' +# (note the single quotes!). If your package is not flat and you're not +# using automake, define top_builddir and top_srcdir appropriately in +# the Makefiles. AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in @@ -2360,13 +2542,13 @@ AC_DEFUN([AC_LIBLTDL_CONVENIENCE], # ----------------------------------- # sets LIBLTDL to the link flags for the libltdl installable library and # LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-install to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided and an installed libltdl is not found, it is -# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' -# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single -# quotes!). If your package is not flat and you're not using automake, -# define top_builddir and top_srcdir appropriately in the Makefiles. +# --enable-ltdl-install to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# and an installed libltdl is not found, it is assumed to be `libltdl'. +# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and top_srcdir +# appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl @@ -2404,10 +2586,21 @@ AC_DEFUN([AC_LIBTOOL_CXX], # --------------- AC_DEFUN([_LT_AC_LANG_CXX], [AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PROG_CXXCPP]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ])# _LT_AC_LANG_CXX +# _LT_AC_PROG_CXXCPP +# ------------------ +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP # AC_LIBTOOL_F77 # -------------- @@ -2447,7 +2640,7 @@ _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) # AC_LIBTOOL_RC -# -------------- +# ------------- # enable support for Windows resource files AC_DEFUN([AC_LIBTOOL_RC], [AC_REQUIRE([LT_AC_PROG_RC]) @@ -2480,36 +2673,9 @@ lt_simple_link_test_code='int main(){return(0);}\n' _LT_AC_SYS_COMPILER -# -# Check for any special shared library compilation flags. -# -_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= -if test "$GCC" = no; then - case $host_os in - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' - ;; - esac -fi -if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then - AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) - if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : - else - AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) - _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no - fi -fi - - -# -# Check to make sure the static flag actually works. -# -AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], - _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), - $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), - [], - [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) - +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) @@ -2519,9 +2685,9 @@ AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF($1) +AC_LIBTOOL_DLOPEN_SELF -# Report which librarie types wil actually be built +# Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) @@ -2530,7 +2696,7 @@ test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. -case "$host_os" in +case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then @@ -2543,43 +2709,6 @@ aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi - ;; - darwin* | rhapsody*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup' - ;; - esac - fi - ;; - esac - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi ;; esac AC_MSG_RESULT([$enable_shared]) @@ -2605,7 +2734,7 @@ AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], [AC_LANG_PUSH(C++) AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PROG_CXXCPP]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(allow_undefined_flag, $1)= @@ -2617,6 +2746,7 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= _LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_AC_TAGVAR(hardcode_automatic, $1)=no _LT_AC_TAGVAR(module_cmds, $1)= _LT_AC_TAGVAR(module_expsym_cmds, $1)= @@ -2634,7 +2764,7 @@ _LT_AC_TAGVAR(postdeps, $1)= _LT_AC_TAGVAR(compiler_lib_search_path, $1)= # Source file extension for C++ test sources. -ac_ext=cc +ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o @@ -2644,11 +2774,15 @@ _LT_AC_TAGVAR(objext, $1)=$objext lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests -lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' +lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD @@ -2659,18 +2793,18 @@ lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else - unset lt_cv_prog_gnu_ld + $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else - unset lt_cv_path_LD + $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` +_LT_CC_BASENAME([$compiler]) # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately @@ -2759,6 +2893,7 @@ case $host_os in ;; esac done + ;; esac exp_sym_flag='-bexport' @@ -2777,7 +2912,7 @@ case $host_os in _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) + case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` @@ -2796,8 +2931,12 @@ case $host_os in _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi + ;; esac shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi else # not using gcc if test "$host_cpu" = ia64; then @@ -2824,12 +2963,12 @@ case $host_os in _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$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" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX @@ -2838,16 +2977,26 @@ case $host_os in # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + chorus*) case $cc_basename in *) @@ -2866,7 +3015,7 @@ case $host_os in _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then @@ -2875,70 +3024,81 @@ case $host_os in echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - darwin* | rhapsody*) - if test "$GXX" = yes; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup' - ;; - esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac fi - ;; - esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; + ;; dgux*) case $cc_basename in - ec++) + ec++*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - ghcx) + ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no @@ -2949,14 +3109,14 @@ case $host_os in ;; esac ;; - freebsd[12]*) + freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before switch to ELF _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; - freebsd* | kfreebsd*-gnu) + freebsd* | kfreebsd*-gnu | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_AC_TAGVAR(ld_shlibs, $1)=yes @@ -2973,11 +3133,11 @@ case $host_os in # location of the library. case $cc_basename in - CC) + CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - aCC) + aCC*) _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when @@ -2987,7 +3147,7 @@ case $host_os in # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then @@ -3001,33 +3161,22 @@ case $host_os in ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) + case $host_cpu in + hppa*64*|ia64*) _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. ;; *) _LT_AC_TAGVAR(hardcode_direct, $1)=yes @@ -3038,14 +3187,17 @@ case $host_os in esac case $cc_basename in - CC) + CC*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - aCC) - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + aCC*) + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' @@ -3064,9 +3216,12 @@ case $host_os in *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then - case "$host_cpu" in - ia64*|hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' @@ -3080,11 +3235,25 @@ case $host_os in ;; esac ;; + interix3*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; irix5* | irix6*) case $cc_basename in - CC) + CC*) # SGI C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -3095,7 +3264,7 @@ case $host_os in *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi @@ -3108,7 +3277,7 @@ case $host_os in ;; linux*) case $cc_basename in - KCC) + KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file @@ -3133,17 +3302,41 @@ case $host_os in # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - icpc) + icpc*) # Intel C++ with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; - cxx) + pgCC*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) # Compaq C++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' @@ -3174,7 +3367,7 @@ case $host_os in ;; mvs*) case $cc_basename in - cxx) + cxx*) # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; @@ -3184,7 +3377,7 @@ case $host_os in ;; esac ;; - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= @@ -3195,9 +3388,25 @@ case $host_os in # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; osf3*) case $cc_basename in - KCC) + KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file @@ -3213,14 +3422,14 @@ case $host_os in _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - RCC) + RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - cxx) + cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: @@ -3238,7 +3447,7 @@ case $host_os in *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $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' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: @@ -3257,7 +3466,7 @@ case $host_os in ;; osf4* | osf5*) case $cc_basename in - KCC) + KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file @@ -3272,17 +3481,17 @@ case $host_os in # the KAI C++ compiler. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - RCC) + RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - cxx) + cxx*) _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -3301,7 +3510,7 @@ case $host_os in *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $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' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: @@ -3322,27 +3531,14 @@ case $host_os in # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - sco*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; sunos4*) case $cc_basename in - CC) + CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - lcc) + lcc*) # Lucid # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no @@ -3355,36 +3551,33 @@ case $host_os in ;; solaris*) case $cc_basename in - CC) + CC*) # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system - # linker. + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is @@ -3392,7 +3585,7 @@ case $host_os in # in the archive. _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; - gcx) + gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' @@ -3430,12 +3623,63 @@ case $host_os in ;; esac ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac ;; tandem*) case $cc_basename in - NCC) + NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_AC_TAGVAR(ld_shlibs, $1)=no @@ -3468,8 +3712,6 @@ AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF($1) AC_LIBTOOL_CONFIG($1) @@ -3487,7 +3729,7 @@ lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ])# AC_LIBTOOL_LANG_CXX_CONFIG # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) -# ------------------------ +# ------------------------------------ # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary @@ -3541,7 +3783,7 @@ if AC_TRY_EVAL(ac_compile); then # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. - output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" + output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` for p in `eval $output_verbose_link_cmd`; do case $p in @@ -3617,13 +3859,37 @@ fi $rm -f confest.$objext +# PORTME: override above test on systems where it is broken +ifelse([$1],[CXX], +[case $host_os in +interix3*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_AC_TAGVAR(predep_objects,$1)= + _LT_AC_TAGVAR(postdep_objects,$1)= + _LT_AC_TAGVAR(postdeps,$1)= + ;; + +solaris*) + case $cc_basename in + CC*) + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun' + ;; + esac + ;; +esac +]) + case " $_LT_AC_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac ])# AC_LIBTOOL_POSTDEP_PREDEP # AC_LIBTOOL_LANG_F77_CONFIG -# ------------------------ +# -------------------------- # Ensure that the configuration vars for the C compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. @@ -3667,12 +3933,16 @@ lt_simple_link_test_code=" program t\n end\n" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` +_LT_CC_BASENAME([$compiler]) AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) @@ -3682,7 +3952,7 @@ test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. -case "$host_os" in +case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then @@ -3691,7 +3961,9 @@ aix3*) fi ;; aix4* | aix5*) - test "$enable_shared" = yes && enable_static=no + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi ;; esac AC_MSG_RESULT([$enable_shared]) @@ -3701,8 +3973,6 @@ AC_MSG_CHECKING([whether to build static libraries]) test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - _LT_AC_TAGVAR(GCC, $1)="$G77" _LT_AC_TAGVAR(LD, $1)="$LD" @@ -3712,8 +3982,6 @@ AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP - AC_LIBTOOL_CONFIG($1) @@ -3742,20 +4010,27 @@ _LT_AC_TAGVAR(objext, $1)=$objext lt_simple_compile_test_code="class foo {}\n" # Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds + AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) AC_LIBTOOL_PROG_COMPILER_PIC($1) AC_LIBTOOL_PROG_CC_C_O($1) @@ -3763,8 +4038,6 @@ AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) AC_LIBTOOL_PROG_LD_SHLIBS($1) AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF($1) AC_LIBTOOL_CONFIG($1) @@ -3774,7 +4047,7 @@ CC="$lt_save_CC" # AC_LIBTOOL_LANG_RC_CONFIG -# -------------------------- +# ------------------------- # Ensure that the configuration vars for the Windows resource compiler are # suitably defined. Those variables are subsequently used by # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. @@ -3798,11 +4071,16 @@ lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_AC_SYS_COMPILER +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC _LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes AC_LIBTOOL_CONFIG($1) @@ -3832,7 +4110,7 @@ if test -f "$ltmain"; then # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ @@ -3938,7 +4216,7 @@ ifelse([$1], [], # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -3949,11 +4227,11 @@ ifelse([$1], [], SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e s/^X//" +Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. -if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= @@ -3984,6 +4262,12 @@ fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo @@ -3995,6 +4279,9 @@ AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + # A language-specific compiler. CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) @@ -4060,7 +4347,7 @@ max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) -# Must we lock files when doing compilation ? +# Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? @@ -4334,9 +4621,6 @@ symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" @@ -4358,15 +4642,31 @@ hpux*) # Its linker distinguishes data from code symbols lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; -solaris* | sysv5*) +solaris*) symcode='[[BDRT]]' ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; sysv4) symcode='[[DFNSTU]]' ;; @@ -4389,8 +4689,11 @@ esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + # Write the raw and C identifiers. - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no @@ -4546,6 +4849,10 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) # DJGPP does not support shared libraries at all _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; sysv4*MP*) if test -d /usr/nec; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic @@ -4554,7 +4861,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. - case "$host_cpu" in + case $host_cpu in hppa*64*|ia64*) ;; *) @@ -4579,18 +4886,28 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; chorus*) case $cc_basename in - cxch68) + cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; dgux*) case $cc_basename in - ec++) + ec++*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; - ghcx) + ghcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; @@ -4598,22 +4915,22 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; esac ;; - freebsd* | kfreebsd*-gnu) + freebsd* | kfreebsd*-gnu | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in - CC) + CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; - aCC) + aCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - case "$host_cpu" in + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in hppa*64*|ia64*) # +Z the default ;; @@ -4626,9 +4943,13 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; esac ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; irix5* | irix6* | nonstopux*) case $cc_basename in - CC) + CC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. @@ -4639,18 +4960,24 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; linux*) case $cc_basename in - KCC) + KCC*) # KAI C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; - icpc) + icpc* | ecpc*) # Intel C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; - cxx) + pgCC*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. @@ -4667,25 +4994,25 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; mvs*) case $cc_basename in - cxx) + cxx*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in - KCC) + KCC*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; - RCC) + RCC*) # Rational C++ 2.4.1 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; - cxx) + cxx*) # Digital/Compaq C++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha @@ -4699,24 +5026,15 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; psos*) ;; - sco*) - case $cc_basename in - CC) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - *) - ;; - esac - ;; solaris*) case $cc_basename in - CC) + CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; - gcx) + gcx*) # Green Hills C++ Compiler _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; @@ -4726,12 +5044,12 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; sunos4*) case $cc_basename in - CC) + CC*) # Sun C++ 4.x _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; - lcc) + lcc*) # Lucid _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; @@ -4741,7 +5059,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; tandem*) case $cc_basename in - NCC) + NCC*) # NonStop-UX NCC 3.20 _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; @@ -4749,7 +5067,14 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; esac ;; - unixware*) + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac ;; vxworks*) ;; @@ -4796,6 +5121,11 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. @@ -4812,7 +5142,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. - case "$host_cpu" in + case $host_cpu in hppa*64*|ia64*) # +Z the default ;; @@ -4838,6 +5168,16 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being @@ -4849,7 +5189,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. - case "$host_cpu" in + case $host_cpu in hppa*64*|ia64*) # +Z the default ;; @@ -4873,12 +5213,19 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) ;; linux*) - case $CC in + case $cc_basename in icc* | ecc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; ccc*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. @@ -4893,15 +5240,15 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' - ;; - solaris*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac ;; sunos4*) @@ -4910,7 +5257,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + sysv4 | sysv4.2uw2* | sysv4.3*) _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' @@ -4923,6 +5270,17 @@ AC_MSG_CHECKING([for $compiler option to produce PIC]) fi ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + uts4*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' @@ -4950,7 +5308,7 @@ if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi -case "$host_os" in +case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= @@ -4959,6 +5317,16 @@ case "$host_os" in _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ;; esac + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) ]) @@ -4983,10 +5351,7 @@ ifelse([$1],[CXX],[ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' - ;; - linux*) - _LT_AC_TAGVAR(link_all_deplibs, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' @@ -5029,7 +5394,8 @@ ifelse([$1],[CXX],[ # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= - + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) case $host_os in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time @@ -5039,6 +5405,10 @@ ifelse([$1],[CXX],[ with_gnu_ld=no fi ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; openbsd*) with_gnu_ld=no ;; @@ -5049,6 +5419,27 @@ ifelse([$1],[CXX],[ # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) @@ -5099,10 +5490,10 @@ EOF _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_AC_TAGVAR(always_export_symbols, $1)=no _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then @@ -5111,13 +5502,59 @@ EOF echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix3*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi else - ld_shlibs=no + _LT_AC_TAGVAR(ld_shlibs, $1)=no fi ;; - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -5127,7 +5564,7 @@ EOF fi ;; - solaris* | sysv5*) + solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then _LT_AC_TAGVAR(ld_shlibs, $1)=no cat <<EOF 1>&2 @@ -5148,6 +5585,33 @@ EOF fi ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + sunos4*) _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= @@ -5155,32 +5619,6 @@ EOF _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds" - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - if test $supports_anon_versioning = yes; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ -cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -$echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds" - fi - _LT_AC_TAGVAR(link_all_deplibs, $1)=no - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' @@ -5191,16 +5629,11 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ ;; esac - if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) @@ -5212,7 +5645,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported @@ -5246,6 +5679,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ break fi done + ;; esac exp_sym_flag='-bexport' @@ -5264,7 +5698,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) + case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` @@ -5283,8 +5717,12 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= fi + ;; esac shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi else # not using gcc if test "$host_cpu" = ia64; then @@ -5292,11 +5730,11 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then + if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' - fi + fi fi fi @@ -5310,12 +5748,12 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$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" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. _LT_AC_SYS_LIBPATH_AIX @@ -5324,13 +5762,11 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ # -berok will link without error, but may produce a broken library. _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; @@ -5343,7 +5779,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ _LT_AC_TAGVAR(ld_shlibs, $1)=no ;; - bsdi4*) + bsdi[[45]]*) _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; @@ -5364,57 +5800,57 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) - if test "$GXX" = yes ; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup' - ;; - esac - fi - ;; + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_automatic, $1)=yes _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else - _LT_AC_TAGVAR(ld_shlibs, $1)=no + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac fi ;; @@ -5448,7 +5884,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu) + freebsd* | kfreebsd*-gnu | dragonfly*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_AC_TAGVAR(hardcode_direct, $1)=yes @@ -5471,47 +5907,62 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; - hpux10* | hpux11*) + hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; *) _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: _LT_AC_TAGVAR(hardcode_direct, $1)=yes _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' @@ -5535,7 +5986,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -5559,6 +6010,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else @@ -5604,7 +6056,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_AC_TAGVAR(archive_cmds, $1)='$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' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -5612,21 +6064,15 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ;; - sco3.2v5*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - solaris*) _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' if test "$GCC" = yes; then + wlarc='${wl}' _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else + wlarc='' _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' @@ -5635,8 +6081,18 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; esac _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ;; @@ -5693,36 +6149,45 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ fi ;; - sysv4.2uw2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; + runpath_var='LD_RUN_PATH' - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ;; - sysv5*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi ;; uts4*) @@ -5740,11 +6205,6 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - # # Do we need to explicitly link libc? # @@ -5772,6 +6232,7 @@ x|xyes) libobjs=conftest.$ac_objext deplibs= wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= @@ -5897,7 +6358,7 @@ lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && break + test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in @@ -5922,8 +6383,8 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do fi done done -SED=$lt_cv_path_SED ]) +SED=$lt_cv_path_SED AC_MSG_RESULT([$SED]) ]) @@ -5944,7 +6405,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) # Call AM_AUTOMAKE_VERSION so it can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.9.5])]) + [AM_AUTOMAKE_VERSION([1.9.6])]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- @@ -280,15 +280,15 @@ fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. -if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if (echo_test_string="`eval $cmd`") 2>/dev/null && - echo_test_string="`eval $cmd`" && + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break @@ -1142,7 +1142,7 @@ esac else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi - cd "$ac_popdir" + cd $ac_popdir done fi @@ -2509,7 +2509,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2567,7 +2568,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2683,7 +2685,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2737,7 +2740,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2782,7 +2786,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -2826,7 +2831,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3418,7 +3424,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3476,7 +3483,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3547,7 +3555,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3591,7 +3600,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -3886,7 +3896,7 @@ lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && break + test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in @@ -3911,10 +3921,10 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do fi done done -SED=$lt_cv_path_SED fi +SED=$lt_cv_path_SED echo "$as_me:$LINENO: result: $SED" >&5 echo "${ECHO_T}$SED" >&6 @@ -3991,7 +4001,7 @@ else if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. + # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) @@ -4025,7 +4035,7 @@ echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. + # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) lt_cv_prog_gnu_ld=yes @@ -4055,6 +4065,15 @@ case $reload_flag in *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 @@ -4065,36 +4084,43 @@ else # Let the user override the test. lt_cv_path_NM="$NM" else - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/${ac_tool_prefix}nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" break ;; *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac ;; esac - esac - fi + fi + done + IFS="$lt_save_ifs" done - IFS="$lt_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi @@ -4141,7 +4167,7 @@ beos*) lt_cv_deplibs_check_method=pass_all ;; -bsdi4*) +bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so @@ -4164,13 +4190,13 @@ darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; -freebsd* | kfreebsd*-gnu) +freebsd* | kfreebsd*-gnu | dragonfly*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; @@ -4186,7 +4212,7 @@ gnu*) hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file - case "$host_cpu" in + case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so @@ -4202,6 +4228,11 @@ hpux10.20* | hpux11*) esac ;; +interix3*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; @@ -4217,7 +4248,7 @@ linux*) lt_cv_deplibs_check_method=pass_all ;; -netbsd* | netbsdelf*-gnu | knetbsd*-gnu) +netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else @@ -4236,12 +4267,10 @@ nto-qnx*) ;; openbsd*) - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else - lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; @@ -4249,15 +4278,11 @@ osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - solaris*) lt_cv_deplibs_check_method=pass_all ;; -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' @@ -4278,10 +4303,13 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) siemens) lt_cv_deplibs_check_method=pass_all ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; esac ;; -sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; esac @@ -4299,6 +4327,9 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + # Allow CC to be a program name with arguments. compiler=$CC @@ -4334,7 +4365,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 4337 "configure"' > conftest.$ac_ext + echo '#line 4368 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -4377,7 +4408,7 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - case "`/usr/bin/file conftest.o`" in + case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*linux*) @@ -4454,7 +4485,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4489,6 +4521,26 @@ echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 CFLAGS="$SAVE_CFLAGS" fi ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + esac @@ -4529,7 +4581,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4699,7 +4752,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4766,7 +4820,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -4881,7 +4936,12 @@ fi done -ac_ext=cc + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' @@ -5111,6 +5171,8 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +fi + @@ -5158,11 +5220,55 @@ else lt_cv_sys_max_cmd_len=8192; ;; - *) + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ = "XX$teststring") >/dev/null 2>&1 && new_result=`expr "X$teststring" : ".*" 2>&1` && lt_cv_sys_max_cmd_len=$new_result && @@ -5208,9 +5314,6 @@ symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - # Transform an extracted symbol line into a proper C declaration lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" @@ -5232,15 +5335,31 @@ hpux*) # Its linker distinguishes data from code symbols lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; -solaris* | sysv5*) +solaris*) symcode='[BDRT]' ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; sysv4) symcode='[DFNSTU]' ;; @@ -5263,8 +5382,11 @@ esac # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + # Write the raw and C identifiers. - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no @@ -5426,7 +5548,7 @@ esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' +Xsed='sed -e 1s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. @@ -5446,7 +5568,7 @@ rm="rm -f" default_ofile=libtool can_build_shared=yes -# All known linkers require a `.a' archive for static linking (except M$VC, +# All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" @@ -5703,6 +5825,7 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" @@ -5722,15 +5845,26 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) - old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) @@ -5756,7 +5890,7 @@ else if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then @@ -5818,7 +5952,7 @@ else if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then @@ -5913,68 +6047,25 @@ lt_simple_link_test_code='int main(){return(0);}\n' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + # Allow CC to be a program name with arguments. compiler=$CC -# -# Check for any special shared library compilation flags. -# -lt_prog_cc_shlib= -if test "$GCC" = no; then - case $host_os in - sco3.2v5*) - lt_prog_cc_shlib='-belf' - ;; - esac -fi -if test -n "$lt_prog_cc_shlib"; then - { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 -echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} - if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : - else - { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 -echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} - lt_cv_prog_cc_can_build_shared=no - fi -fi - - -# -# Check to make sure the static flag actually works. -# -echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 -if test "${lt_prog_compiler_static_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_prog_compiler_static" - printf "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - else - lt_prog_compiler_static_works=yes - fi - fi - $rm conftest* - LDFLAGS="$save_LDFLAGS" - -fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 -echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 - -if test x"$lt_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* @@ -5999,18 +6090,20 @@ else # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6005: $lt_compile\"" >&5) + (eval echo "\"\$as_me:6096: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:6009: \$? = $ac_status" >&5 + echo "$as_me:6100: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi @@ -6071,6 +6164,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_pic='-fno-common' ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. @@ -6087,7 +6185,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. - case "$host_cpu" in + case $host_cpu in hppa*64*|ia64*) # +Z the default ;; @@ -6113,6 +6211,16 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being @@ -6124,7 +6232,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. - case "$host_cpu" in + case $host_cpu in hppa*64*|ia64*) # +Z the default ;; @@ -6148,12 +6256,19 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; linux*) - case $CC in + case $cc_basename in icc* | ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. @@ -6168,15 +6283,15 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-non_shared' ;; - sco3.2v5*) - lt_prog_compiler_pic='-Kpic' - lt_prog_compiler_static='-dn' - ;; - solaris*) - lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac ;; sunos4*) @@ -6185,7 +6300,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-Bstatic' ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' @@ -6198,6 +6313,17 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 fi ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' @@ -6232,18 +6358,20 @@ else # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6238: $lt_compile\"" >&5) + (eval echo "\"\$as_me:6364: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:6242: \$? = $ac_status" >&5 + echo "$as_me:6368: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works=yes fi fi @@ -6264,7 +6392,7 @@ else fi fi -case "$host_os" in +case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= @@ -6274,6 +6402,48 @@ case "$host_os" in ;; esac +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works=yes + fi + else + lt_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o+set}" = set; then @@ -6292,23 +6462,25 @@ else # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6298: $lt_compile\"" >&5) + (eval echo "\"\$as_me:6468: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:6302: \$? = $ac_status" >&5 + echo "$as_me:6472: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - if test ! -s out/conftest.err; then + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi - chmod u+w . + chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation @@ -6384,6 +6556,16 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) @@ -6394,6 +6576,10 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar with_gnu_ld=no fi ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; openbsd*) with_gnu_ld=no ;; @@ -6404,6 +6590,27 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) @@ -6454,10 +6661,10 @@ EOF allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then @@ -6466,13 +6673,59 @@ EOF echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + interix3*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs=no + fi + ;; + + netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -6482,7 +6735,7 @@ EOF fi ;; - solaris* | sysv5*) + solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<EOF 1>&2 @@ -6503,6 +6756,33 @@ EOF fi ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= @@ -6510,32 +6790,6 @@ EOF hardcode_shlibpath_var=no ;; - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_cmds="$tmp_archive_cmds" - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - if test $supports_anon_versioning = yes; then - archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ -cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -$echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - else - archive_expsym_cmds="$tmp_archive_cmds" - fi - link_all_deplibs=no - else - ld_shlibs=no - fi - ;; - *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' @@ -6546,16 +6800,11 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ ;; esac - if test "$ld_shlibs" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) @@ -6567,7 +6816,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported @@ -6601,6 +6850,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ break fi done + ;; esac exp_sym_flag='-bexport' @@ -6619,7 +6869,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ link_all_deplibs=yes if test "$GCC" = yes; then - case $host_os in aix4.012|aix4.012.*) + case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` @@ -6638,8 +6888,12 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi + ;; esac shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi else # not using gcc if test "$host_cpu" = ia64; then @@ -6647,11 +6901,11 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then + if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' - fi + fi fi fi @@ -6687,7 +6941,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6715,12 +6970,12 @@ rm -f conftest.err conftest.$ac_objext \ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - 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" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF @@ -6747,7 +7002,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -6779,13 +7035,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols=yes # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec=' ' + whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds it's shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; @@ -6798,7 +7052,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ld_shlibs=no ;; - bsdi4*) + bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; @@ -6824,52 +7078,52 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; darwin* | rhapsody*) - if test "$GXX" = yes ; then - archive_cmds_need_lc=no - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag='-flat_namespace -undefined suppress' - ;; - 10.*) - allow_undefined_flag='-undefined dynamic_lookup' - ;; - esac - fi - ;; + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - module_cmds='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='-all_load $convenience' + whole_archive_flag_spec='' link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else - ld_shlibs=no + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac fi ;; @@ -6903,7 +7157,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu) + freebsd* | kfreebsd*-gnu | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes @@ -6926,47 +7180,62 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi export_dynamic_flag_spec='${wl}-E' ;; - hpux10* | hpux11*) + hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; + ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: hardcode_direct=no hardcode_shlibpath_var=no ;; - ia64*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=no - hardcode_shlibpath_var=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; *) - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: hardcode_direct=yes export_dynamic_flag_spec='${wl}-E' @@ -6990,7 +7259,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi link_all_deplibs=yes ;; - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -7014,6 +7283,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else @@ -7059,7 +7329,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' @@ -7067,21 +7337,15 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_separator=: ;; - sco3.2v5*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - solaris*) no_undefined_flag=' -z text' if test "$GCC" = yes; then + wlarc='${wl}' archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else + wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' @@ -7090,8 +7354,18 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; esac link_all_deplibs=yes ;; @@ -7148,36 +7422,45 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi fi ;; - sysv4.2uw2*) - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=no + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no hardcode_shlibpath_var=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; + runpath_var='LD_RUN_PATH' - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no ;; - sysv5*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - hardcode_libdir_flag_spec= + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi ;; uts4*) @@ -7196,11 +7479,6 @@ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - # # Do we need to explicitly link libc? # @@ -7233,6 +7511,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= @@ -7365,7 +7644,7 @@ beos*) shlibpath_var=LIBRARY_PATH ;; -bsdi4*) +bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -7393,7 +7672,8 @@ cygwin* | mingw* | pw32*) dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' @@ -7423,7 +7703,7 @@ cygwin* | mingw* | pw32*) ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; @@ -7446,7 +7726,7 @@ darwin* | rhapsody*) soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` @@ -7481,8 +7761,17 @@ kfreebsd*-gnu) dynamic_linker='GNU ld.so' ;; -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) @@ -7500,14 +7789,19 @@ freebsd*) freebsd2*) shlibpath_overrides_runpath=yes ;; - freebsd3.01* | freebsdelf3.01*) + freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; - *) # from 3.2 on + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; esac ;; @@ -7527,7 +7821,7 @@ hpux9* | hpux10* | hpux11*) version_type=sunos need_lib_prefix=no need_version=no - case "$host_cpu" in + case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes @@ -7567,6 +7861,18 @@ hpux9* | hpux10* | hpux11*) postinstall_cmds='chmod 555 $lib' ;; +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; @@ -7626,7 +7932,7 @@ linux*) # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -7639,18 +7945,6 @@ linux*) dynamic_linker='GNU/Linux ld.so' ;; -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - knetbsd*-gnu) version_type=linux need_lib_prefix=no @@ -7700,8 +7994,13 @@ nto-qnx*) openbsd*) version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no - need_version=yes + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH @@ -7739,13 +8038,6 @@ osf3* | osf4* | osf5*) sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - solaris*) version_type=linux need_lib_prefix=no @@ -7771,7 +8063,7 @@ sunos4*) need_version=yes ;; -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -7804,6 +8096,29 @@ sysv4*MP*) fi ;; +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -7819,12 +8134,17 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ - test -n "$runpath_var " || \ - test "X$hardcode_automatic"="Xyes" ; then + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && @@ -7950,7 +8270,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8053,7 +8374,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8118,7 +8440,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8211,7 +8534,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8276,7 +8600,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8342,7 +8667,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8408,7 +8734,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -8467,7 +8794,7 @@ fi test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" @@ -8483,7 +8810,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 8486 "configure" +#line 8813 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -8540,6 +8867,8 @@ int main () else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } + else + puts (dlerror ()); exit (status); } @@ -8549,12 +8878,12 @@ EOF ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null + (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed @@ -8569,7 +8898,7 @@ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then @@ -8581,7 +8910,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 8584 "configure" +#line 8913 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -8638,6 +8967,8 @@ int main () else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } + else + puts (dlerror ()); exit (status); } @@ -8647,12 +8978,12 @@ EOF ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null + (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed @@ -8685,7 +9016,7 @@ echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi -# Report which librarie types wil actually be built +# Report which library types will actually be built echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 @@ -8697,7 +9028,7 @@ test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. -case "$host_os" in +case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then @@ -8710,43 +9041,6 @@ aix4* | aix5*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi - ;; - darwin* | rhapsody*) - if test "$GCC" = yes; then - archive_cmds_need_lc=no - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag='-flat_namespace -undefined suppress' - ;; - 10.*) - allow_undefined_flag='-undefined dynamic_lookup' - ;; - esac - fi - ;; - esac - output_verbose_link_cmd='echo' - archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' - module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='-all_load $convenience' - link_all_deplibs=yes - else - ld_shlibs=no - fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 @@ -8772,7 +9066,7 @@ if test -f "$ltmain"; then # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ @@ -8876,7 +9170,7 @@ echo "$as_me: creating $ofile" >&6;} # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -8887,11 +9181,11 @@ echo "$as_me: creating $ofile" >&6;} SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e s/^X//" +Xsed="$SED -e 1s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. -if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # The names of the tagged configurations supported by this script. available_tags= @@ -8921,6 +9215,12 @@ fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo @@ -8932,6 +9232,9 @@ AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + # A language-specific compiler. CC=$lt_compiler @@ -8997,7 +9300,7 @@ max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o -# Must we lock files when doing compilation ? +# Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? @@ -9262,6 +9565,9 @@ echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi # Extract list of available tagged configurations in $ofile. # Note that this assumes the entire list is on one line. @@ -9292,7 +9598,9 @@ echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} case $tagname in CXX) - if test -n "$CXX" && test "X$CXX" != "Xno"; then + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -9312,6 +9620,7 @@ hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= @@ -9329,7 +9638,7 @@ postdeps_CXX= compiler_lib_search_path_CXX= # Source file extension for C++ test sources. -ac_ext=cc +ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o @@ -9339,17 +9648,34 @@ objext_CXX=$objext lt_simple_compile_test_code="int some_variable = 0;\n" # Code to be used in simple link tests -lt_simple_link_test_code='int main(int, char *) { return(0); }\n' +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + # Allow CC to be a program name with arguments. compiler=$CC +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD @@ -9360,18 +9686,27 @@ lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else - unset lt_cv_prog_gnu_ld + $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else - unset lt_cv_path_LD + $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + # We don't want -fno-exception wen compiling C++ code, so set the # no_builtin_flag separately @@ -9442,7 +9777,7 @@ else if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. + # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) @@ -9476,7 +9811,7 @@ echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. + # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) lt_cv_prog_gnu_ld=yes @@ -9567,6 +9902,7 @@ case $host_os in ;; esac done + ;; esac exp_sym_flag='-bexport' @@ -9585,7 +9921,7 @@ case $host_os in link_all_deplibs_CXX=yes if test "$GXX" = yes; then - case $host_os in aix4.012|aix4.012.*) + case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` @@ -9604,8 +9940,12 @@ case $host_os in hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi + ;; esac shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi else # not using gcc if test "$host_cpu" = ia64; then @@ -9653,7 +9993,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -9682,12 +10023,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds_CXX="\$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" + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF @@ -9714,7 +10055,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -9746,16 +10088,26 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols_CXX=yes # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX=' ' + whole_archive_flag_spec_CXX='$convenience' archive_cmds_need_lc_CXX=yes - # This is similar to how AIX traditionally builds it's shared libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + chorus*) case $cc_basename in *) @@ -9774,7 +10126,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then @@ -9783,70 +10135,81 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes - darwin* | rhapsody*) - if test "$GXX" = yes; then - archive_cmds_need_lc_CXX=no - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag_CXX='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag_CXX='-flat_namespace -undefined suppress' + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag_CXX='-flat_namespace -undefined suppress' - ;; - 10.*) - allow_undefined_flag_CXX='-undefined dynamic_lookup' - ;; - esac + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac fi - ;; - esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - archive_cmds_CXX='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - module_cmds_CXX='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - whole_archive_flag_spec_CXX='-all_load $convenience' - link_all_deplibs_CXX=yes - else - ld_shlibs_CXX=no - fi - ;; + ;; dgux*) case $cc_basename in - ec++) + ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; - ghcx) + ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no @@ -9857,14 +10220,14 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; esac ;; - freebsd12*) + freebsd[12]*) # C++ shared libraries reported to be fairly broken before switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; - freebsd* | kfreebsd*-gnu) + freebsd* | kfreebsd*-gnu | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes @@ -9881,11 +10244,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # location of the library. case $cc_basename in - CC) + CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; - aCC) + aCC*) archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when @@ -9895,7 +10258,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ;; *) if test "$GXX" = yes; then @@ -9909,34 +10272,23 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then - case "$host_cpu" in - hppa*64*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_CXX='+b $libdir' - hardcode_libdir_separator_CXX=: - ;; - ia64*) - hardcode_libdir_flag_spec_CXX='-L$libdir' ;; *) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi - case "$host_cpu" in - hppa*64*) + case $host_cpu in + hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; - ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; *) hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, @@ -9946,14 +10298,17 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac case $cc_basename in - CC) + CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; - aCC) - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' @@ -9972,9 +10327,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then - case "$host_cpu" in - ia64*|hppa*64*) - archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' @@ -9988,11 +10346,25 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; esac ;; + interix3*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; irix5* | irix6*) case $cc_basename in - CC) + CC*) # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -10003,7 +10375,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' fi @@ -10016,7 +10388,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; linux*) case $cc_basename in - KCC) + KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file @@ -10041,17 +10413,41 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - icpc) + icpc*) # Intel C++ with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac archive_cmds_need_lc_CXX=no - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; - cxx) + pgCC*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' @@ -10082,7 +10478,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; mvs*) case $cc_basename in - cxx) + cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; @@ -10092,7 +10488,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; esac ;; - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= @@ -10103,9 +10499,25 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; osf3*) case $cc_basename in - KCC) + KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file @@ -10121,14 +10533,14 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - RCC) + RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; - cxx) + cxx*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: @@ -10146,7 +10558,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $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' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: @@ -10165,7 +10577,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; osf4* | osf5*) case $cc_basename in - KCC) + KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file @@ -10180,17 +10592,17 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # the KAI C++ compiler. old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - RCC) + RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; - cxx) + cxx*) allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ $rm $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' @@ -10209,7 +10621,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: @@ -10230,27 +10642,14 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; - sco*) - archive_cmds_need_lc_CXX=no - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; sunos4*) case $cc_basename in - CC) + CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; - lcc) + lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no @@ -10263,36 +10662,33 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; solaris*) case $cc_basename in - CC) + CC*) # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in - solaris2.0-5 | solaris2.0-5.*) ;; + solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The C++ compiler is used as linker so we must use $wl # flag to pass the commands to the underlying system - # linker. + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; esac link_all_deplibs_CXX=yes - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is @@ -10300,7 +10696,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; - gcx) + gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' @@ -10338,12 +10734,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; esac ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac ;; tandem*) case $cc_basename in - NCC) + NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no @@ -10396,7 +10843,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 # The `*' in the case matches for architectures that use `case' in # $output_verbose_cmd can trigger glob expansion during the loop # eval without this substitution. - output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" + output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` for p in `eval $output_verbose_link_cmd`; do case $p in @@ -10472,6 +10919,29 @@ fi $rm -f confest.$objext +# PORTME: override above test on systems where it is broken +case $host_os in +interix3*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +solaris*) + case $cc_basename in + CC*) + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + postdeps_CXX='-lCstd -lCrun' + ;; + esac + ;; +esac + + case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac @@ -10519,6 +10989,10 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic @@ -10527,7 +11001,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. - case "$host_cpu" in + case $host_cpu in hppa*64*|ia64*) ;; *) @@ -10552,18 +11026,28 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; chorus*) case $cc_basename in - cxch68) + cxch68*) # Green Hills C++ Compiler # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; dgux*) case $cc_basename in - ec++) + ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; - ghcx) + ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; @@ -10571,22 +11055,22 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; esac ;; - freebsd* | kfreebsd*-gnu) + freebsd* | kfreebsd*-gnu | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in - CC) + CC*) lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; - aCC) + aCC*) lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - case "$host_cpu" in + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in hppa*64*|ia64*) # +Z the default ;; @@ -10599,9 +11083,13 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; esac ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; irix5* | irix6* | nonstopux*) case $cc_basename in - CC) + CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. @@ -10612,18 +11100,24 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; linux*) case $cc_basename in - KCC) + KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; - icpc) + icpc* | ecpc*) # Intel C++ lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; - cxx) + pgCC*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. @@ -10640,25 +11134,25 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; mvs*) case $cc_basename in - cxx) + cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + netbsd*) ;; osf3* | osf4* | osf5*) case $cc_basename in - KCC) + KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; - RCC) + RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; - cxx) + cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha @@ -10672,24 +11166,15 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; psos*) ;; - sco*) - case $cc_basename in - CC) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - *) - ;; - esac - ;; solaris*) case $cc_basename in - CC) + CC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; - gcx) + gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; @@ -10699,12 +11184,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; sunos4*) case $cc_basename in - CC) + CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; - lcc) + lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; @@ -10714,7 +11199,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; tandem*) case $cc_basename in - NCC) + NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; @@ -10722,7 +11207,14 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; esac ;; - unixware*) + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac ;; vxworks*) ;; @@ -10755,18 +11247,20 @@ else # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10761: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11253: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:10765: \$? = $ac_status" >&5 + echo "$as_me:11257: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works_CXX=yes fi fi @@ -10787,7 +11281,7 @@ else fi fi -case "$host_os" in +case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= @@ -10797,6 +11291,48 @@ case "$host_os" in ;; esac +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_CXX=yes + fi + else + lt_prog_compiler_static_works_CXX=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6 + +if test x"$lt_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then @@ -10815,23 +11351,25 @@ else # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10821: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11357: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:10825: \$? = $ac_status" >&5 + echo "$as_me:11361: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - if test ! -s out/conftest.err; then + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi - chmod u+w . + chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation @@ -10886,10 +11424,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw*) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' - ;; - linux*) - link_all_deplibs_CXX=no + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' @@ -10900,11 +11435,6 @@ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 echo "${ECHO_T}$ld_shlibs_CXX" >&6 test "$ld_shlibs_CXX" = no && can_build_shared=no -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - # # Do we need to explicitly link libc? # @@ -10937,6 +11467,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= @@ -11069,7 +11600,7 @@ beos*) shlibpath_var=LIBRARY_PATH ;; -bsdi4*) +bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -11097,7 +11628,8 @@ cygwin* | mingw* | pw32*) dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' @@ -11127,7 +11659,7 @@ cygwin* | mingw* | pw32*) ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; @@ -11150,7 +11682,7 @@ darwin* | rhapsody*) soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` @@ -11185,8 +11717,17 @@ kfreebsd*-gnu) dynamic_linker='GNU ld.so' ;; -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) @@ -11204,14 +11745,19 @@ freebsd*) freebsd2*) shlibpath_overrides_runpath=yes ;; - freebsd3.01* | freebsdelf3.01*) + freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; - *) # from 3.2 on + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; esac ;; @@ -11231,7 +11777,7 @@ hpux9* | hpux10* | hpux11*) version_type=sunos need_lib_prefix=no need_version=no - case "$host_cpu" in + case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes @@ -11271,6 +11817,18 @@ hpux9* | hpux10* | hpux11*) postinstall_cmds='chmod 555 $lib' ;; +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; @@ -11330,7 +11888,7 @@ linux*) # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -11343,18 +11901,6 @@ linux*) dynamic_linker='GNU/Linux ld.so' ;; -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - knetbsd*-gnu) version_type=linux need_lib_prefix=no @@ -11404,8 +11950,13 @@ nto-qnx*) openbsd*) version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no - need_version=yes + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH @@ -11443,13 +11994,6 @@ osf3* | osf4* | osf5*) sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - solaris*) version_type=linux need_lib_prefix=no @@ -11475,7 +12019,7 @@ sunos4*) need_version=yes ;; -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -11508,6 +12052,29 @@ sysv4*MP*) fi ;; +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -11523,12 +12090,17 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ - test -n "$runpath_var CXX" || \ - test "X$hardcode_automatic_CXX"="Xyes" ; then + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_CXX" != no && @@ -11560,834 +12132,6 @@ elif test "$shlibpath_overrides_runpath" = yes || enable_fast_install=needless fi -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac -fi - -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 -if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define shl_load innocuous_shl_load - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef shl_load - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_shl_load) || defined (__stub___shl_load) -choke me -#else -char (*f) () = shl_load; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != shl_load; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6 -if test $ac_cv_func_shl_load = yes; then - lt_cv_dlopen="shl_load" -else - echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -int -main () -{ -shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 -if test $ac_cv_lib_dld_shl_load = yes; then - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" -else - echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define dlopen innocuous_dlopen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef dlopen - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_dlopen) || defined (__stub___dlopen) -choke me -#else -char (*f) () = dlopen; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != dlopen; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6 -if test $ac_cv_func_dlopen = yes; then - lt_cv_dlopen="dlopen" -else - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 -if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_svld_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_svld_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 -if test $ac_cv_lib_svld_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dld_link (); -int -main () -{ -dld_link (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_dld_link=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_dld_link=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 -if test $ac_cv_lib_dld_dld_link = yes; then - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF -#line 12190 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6 - - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF -#line 12288 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh @@ -12402,7 +12146,7 @@ if test -f "$ltmain"; then # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ @@ -12503,6 +12247,12 @@ fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo @@ -12514,6 +12264,9 @@ AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + # A language-specific compiler. CC=$lt_compiler_CXX @@ -12579,7 +12332,7 @@ max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX -# Must we lock files when doing compilation ? +# Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? @@ -12856,16 +12609,42 @@ lt_simple_link_test_code=" program t\n end\n" # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + # Allow CC to be a program name with arguments. compiler=$CC +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${F77-"f77"} compiler=$CC compiler_F77=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 @@ -12878,7 +12657,7 @@ test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. -case "$host_os" in +case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then @@ -12887,7 +12666,9 @@ aix3*) fi ;; aix4* | aix5*) - test "$enable_shared" = yes && enable_static=no + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi ;; esac echo "$as_me:$LINENO: result: $enable_shared" >&5 @@ -12900,8 +12681,6 @@ test "$enable_shared" = yes || enable_static=yes echo "$as_me:$LINENO: result: $enable_static" >&5 echo "${ECHO_T}$enable_static" >&6 -test "$ld_shlibs_F77" = no && can_build_shared=no - GCC_F77="$G77" LD_F77="$LD" @@ -12948,6 +12727,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_pic_F77='-fno-common' ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. @@ -12964,7 +12748,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. - case "$host_cpu" in + case $host_cpu in hppa*64*|ia64*) # +Z the default ;; @@ -12990,6 +12774,16 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' fi ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being @@ -13001,7 +12795,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_wl_F77='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. - case "$host_cpu" in + case $host_cpu in hppa*64*|ia64*) # +Z the default ;; @@ -13025,12 +12819,19 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; linux*) - case $CC in + case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-static' ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-Bstatic' + ;; ccc*) lt_prog_compiler_wl_F77='-Wl,' # All Alpha code is PIC. @@ -13045,15 +12846,15 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static_F77='-non_shared' ;; - sco3.2v5*) - lt_prog_compiler_pic_F77='-Kpic' - lt_prog_compiler_static_F77='-dn' - ;; - solaris*) - lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac ;; sunos4*) @@ -13062,7 +12863,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static_F77='-Bstatic' ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_F77='-Wl,' lt_prog_compiler_pic_F77='-KPIC' lt_prog_compiler_static_F77='-Bstatic' @@ -13075,6 +12876,17 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 fi ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + uts4*) lt_prog_compiler_pic_F77='-pic' lt_prog_compiler_static_F77='-Bstatic' @@ -13109,18 +12921,20 @@ else # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13115: $lt_compile\"" >&5) + (eval echo "\"\$as_me:12927: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13119: \$? = $ac_status" >&5 + echo "$as_me:12931: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works_F77=yes fi fi @@ -13141,7 +12955,7 @@ else fi fi -case "$host_os" in +case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_F77= @@ -13151,6 +12965,48 @@ case "$host_os" in ;; esac +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" +echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_F77=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_F77=yes + fi + else + lt_prog_compiler_static_works_F77=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6 + +if test x"$lt_prog_compiler_static_works_F77" = xyes; then + : +else + lt_prog_compiler_static_F77= +fi + + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then @@ -13169,23 +13025,25 @@ else # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13175: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13031: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:13179: \$? = $ac_status" >&5 + echo "$as_me:13035: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - if test ! -s out/conftest.err; then + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_F77=yes fi fi - chmod u+w . + chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation @@ -13261,6 +13119,16 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) @@ -13271,6 +13139,10 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar with_gnu_ld=no fi ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; openbsd*) with_gnu_ld=no ;; @@ -13281,6 +13153,27 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) @@ -13331,10 +13224,10 @@ EOF allow_undefined_flag_F77=unsupported always_export_symbols_F77=no enable_shared_with_static_runtimes_F77=yes - export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then @@ -13343,13 +13236,59 @@ EOF echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else - ld_shlibs=no + ld_shlibs_F77=no fi ;; - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + interix3*) + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_F77=no + fi + ;; + + netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -13359,7 +13298,7 @@ EOF fi ;; - solaris* | sysv5*) + solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_F77=no cat <<EOF 1>&2 @@ -13380,6 +13319,33 @@ EOF fi ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_F77=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + ;; + sunos4*) archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= @@ -13387,32 +13353,6 @@ EOF hardcode_shlibpath_var_F77=no ;; - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_cmds_F77="$tmp_archive_cmds" - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - if test $supports_anon_versioning = yes; then - archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ -cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -$echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - else - archive_expsym_cmds_F77="$tmp_archive_cmds" - fi - link_all_deplibs_F77=no - else - ld_shlibs_F77=no - fi - ;; - *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' @@ -13423,16 +13363,11 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ ;; esac - if test "$ld_shlibs_F77" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_F77='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_F77= - fi + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= fi else # PORTME fill in a description of your system's linker (not GNU ld) @@ -13444,7 +13379,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_F77=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_F77=unsupported @@ -13478,6 +13413,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ break fi done + ;; esac exp_sym_flag='-bexport' @@ -13496,7 +13432,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ link_all_deplibs_F77=yes if test "$GCC" = yes; then - case $host_os in aix4.012|aix4.012.*) + case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` @@ -13515,8 +13451,12 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ hardcode_libdir_flag_spec_F77='-L$libdir' hardcode_libdir_separator_F77= fi + ;; esac shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi else # not using gcc if test "$host_cpu" = ia64; then @@ -13524,11 +13464,11 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then + if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' - fi + fi fi fi @@ -13554,7 +13494,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -13582,12 +13523,12 @@ rm -f conftest.err conftest.$ac_objext \ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds_F77="\$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" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_F77="-z nodefs" - archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF @@ -13604,7 +13545,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -13636,13 +13578,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # -berok will link without error, but may produce a broken library. no_undefined_flag_F77=' ${wl}-bernotok' allow_undefined_flag_F77=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols_F77=yes # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_F77=' ' + whole_archive_flag_spec_F77='$convenience' archive_cmds_need_lc_F77=yes - # This is similar to how AIX traditionally builds it's shared libraries. - archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; @@ -13655,7 +13595,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ld_shlibs_F77=no ;; - bsdi4*) + bsdi[45]*) export_dynamic_flag_spec_F77=-rdynamic ;; @@ -13676,57 +13616,57 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi old_archive_From_new_cmds_F77='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_F77=yes ;; darwin* | rhapsody*) - if test "$GXX" = yes ; then - archive_cmds_need_lc_F77=no - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag_F77='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag_F77='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag_F77='-flat_namespace -undefined suppress' - ;; - 10.*) - allow_undefined_flag_F77='-undefined dynamic_lookup' - ;; - esac - fi - ;; + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - archive_cmds_F77='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - module_cmds_F77='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + archive_cmds_need_lc_F77=no hardcode_direct_F77=no hardcode_automatic_F77=yes hardcode_shlibpath_var_F77=unsupported - whole_archive_flag_spec_F77='-all_load $convenience' + whole_archive_flag_spec_F77='' link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else - ld_shlibs_F77=no + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac fi ;; @@ -13760,7 +13700,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu) + freebsd* | kfreebsd*-gnu | dragonfly*) archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_F77='-R$libdir' hardcode_direct_F77=yes @@ -13783,47 +13723,62 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi export_dynamic_flag_spec_F77='${wl}-E' ;; - hpux10* | hpux11*) + hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; + ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; *) archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + case $host_cpu in + hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_F77='+b $libdir' - hardcode_libdir_separator_F77=: hardcode_direct_F77=no hardcode_shlibpath_var_F77=no ;; - ia64*) - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_direct_F77=no - hardcode_shlibpath_var_F77=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_F77=yes - ;; *) - hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_F77=: hardcode_direct_F77=yes export_dynamic_flag_spec_F77='${wl}-E' @@ -13847,7 +13802,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi link_all_deplibs_F77=yes ;; - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -13871,6 +13826,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var_F77=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' export_dynamic_flag_spec_F77='${wl}-E' else @@ -13916,7 +13872,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi allow_undefined_flag_F77=' -expect_unresolved \*' archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_F77='-rpath $libdir' @@ -13924,21 +13880,15 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_separator_F77=: ;; - sco3.2v5*) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_F77=no - export_dynamic_flag_spec_F77='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - solaris*) no_undefined_flag_F77=' -z text' if test "$GCC" = yes; then + wlarc='${wl}' archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else + wlarc='' archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' @@ -13947,8 +13897,18 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var_F77=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; esac link_all_deplibs_F77=yes ;; @@ -14005,36 +13965,45 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi fi ;; - sysv4.2uw2*) - archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_F77=yes - hardcode_minus_L_F77=no + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag_F77='${wl}-z,text' + archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; + runpath_var='LD_RUN_PATH' - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - no_undefined_flag_F77='${wl}-z ${wl}text' if test "$GCC" = yes; then - archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var_F77=no ;; - sysv5*) - no_undefined_flag_F77=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - hardcode_libdir_flag_spec_F77= + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_F77='${wl}-z,text' + allow_undefined_flag_F77='${wl}-z,nodefs' + archive_cmds_need_lc_F77=no hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + export_dynamic_flag_spec_F77='${wl}-Bexport' runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi ;; uts4*) @@ -14053,11 +14022,6 @@ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 echo "${ECHO_T}$ld_shlibs_F77" >&6 test "$ld_shlibs_F77" = no && can_build_shared=no -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - # # Do we need to explicitly link libc? # @@ -14090,6 +14054,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_F77 + pic_flag=$lt_prog_compiler_pic_F77 compiler_flags=-v linker_flags=-v verstring= @@ -14222,7 +14187,7 @@ beos*) shlibpath_var=LIBRARY_PATH ;; -bsdi4*) +bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -14250,7 +14215,8 @@ cygwin* | mingw* | pw32*) dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' @@ -14280,7 +14246,7 @@ cygwin* | mingw* | pw32*) ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; @@ -14303,7 +14269,7 @@ darwin* | rhapsody*) soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` @@ -14338,8 +14304,17 @@ kfreebsd*-gnu) dynamic_linker='GNU ld.so' ;; -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) @@ -14357,14 +14332,19 @@ freebsd*) freebsd2*) shlibpath_overrides_runpath=yes ;; - freebsd3.01* | freebsdelf3.01*) + freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; - *) # from 3.2 on + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; esac ;; @@ -14384,7 +14364,7 @@ hpux9* | hpux10* | hpux11*) version_type=sunos need_lib_prefix=no need_version=no - case "$host_cpu" in + case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes @@ -14424,6 +14404,18 @@ hpux9* | hpux10* | hpux11*) postinstall_cmds='chmod 555 $lib' ;; +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; @@ -14483,7 +14475,7 @@ linux*) # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -14496,18 +14488,6 @@ linux*) dynamic_linker='GNU/Linux ld.so' ;; -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - knetbsd*-gnu) version_type=linux need_lib_prefix=no @@ -14557,8 +14537,13 @@ nto-qnx*) openbsd*) version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no - need_version=yes + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH @@ -14596,13 +14581,6 @@ osf3* | osf4* | osf5*) sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - solaris*) version_type=linux need_lib_prefix=no @@ -14628,7 +14606,7 @@ sunos4*) need_version=yes ;; -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -14661,6 +14639,29 @@ sysv4*MP*) fi ;; +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -14676,12 +14677,17 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ - test -n "$runpath_var F77" || \ - test "X$hardcode_automatic_F77"="Xyes" ; then + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_F77" != no && @@ -14713,36 +14719,6 @@ elif test "$shlibpath_overrides_runpath" = yes || enable_fast_install=needless fi -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac -fi - - # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh @@ -14757,7 +14733,7 @@ if test -f "$ltmain"; then # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ @@ -14858,6 +14834,12 @@ fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo @@ -14869,6 +14851,9 @@ AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + # A language-specific compiler. CC=$lt_compiler_F77 @@ -14934,7 +14919,7 @@ max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 -# Must we lock files when doing compilation ? +# Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? @@ -15172,26 +15157,55 @@ objext_GCJ=$objext lt_simple_compile_test_code="class foo {}\n" # Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n' +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + # Allow CC to be a program name with arguments. compiler=$CC +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${GCJ-"gcj"} compiler=$CC compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + # GCJ did not exist at the time GCC didn't implicitly link libc in. archive_cmds_need_lc_GCJ=no +old_archive_cmds_GCJ=$old_archive_cmds + lt_prog_compiler_no_builtin_flag_GCJ= @@ -15214,18 +15228,20 @@ else # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15220: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15234: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15224: \$? = $ac_status" >&5 + echo "$as_me:15238: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi @@ -15286,6 +15302,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_pic_GCJ='-fno-common' ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. @@ -15302,7 +15323,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 hpux*) # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. - case "$host_cpu" in + case $host_cpu in hppa*64*|ia64*) # +Z the default ;; @@ -15328,6 +15349,16 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' fi ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being @@ -15339,7 +15370,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_wl_GCJ='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. - case "$host_cpu" in + case $host_cpu in hppa*64*|ia64*) # +Z the default ;; @@ -15363,12 +15394,19 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; linux*) - case $CC in + case $cc_basename in icc* | ecc*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-static' ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; ccc*) lt_prog_compiler_wl_GCJ='-Wl,' # All Alpha code is PIC. @@ -15383,15 +15421,15 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static_GCJ='-non_shared' ;; - sco3.2v5*) - lt_prog_compiler_pic_GCJ='-Kpic' - lt_prog_compiler_static_GCJ='-dn' - ;; - solaris*) - lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac ;; sunos4*) @@ -15400,7 +15438,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static_GCJ='-Bstatic' ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_GCJ='-Wl,' lt_prog_compiler_pic_GCJ='-KPIC' lt_prog_compiler_static_GCJ='-Bstatic' @@ -15413,6 +15451,17 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 fi ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + uts4*) lt_prog_compiler_pic_GCJ='-pic' lt_prog_compiler_static_GCJ='-Bstatic' @@ -15447,18 +15496,20 @@ else # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15453: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15502: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15457: \$? = $ac_status" >&5 + echo "$as_me:15506: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_prog_compiler_pic_works_GCJ=yes fi fi @@ -15479,7 +15530,7 @@ else fi fi -case "$host_os" in +case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_GCJ= @@ -15489,6 +15540,48 @@ case "$host_os" in ;; esac +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" +echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_GCJ=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_GCJ=yes + fi + else + lt_prog_compiler_static_works_GCJ=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6 + +if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then + : +else + lt_prog_compiler_static_GCJ= +fi + + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then @@ -15507,23 +15600,25 @@ else # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15513: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15606: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:15517: \$? = $ac_status" >&5 + echo "$as_me:15610: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - if test ! -s out/conftest.err; then + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_GCJ=yes fi fi - chmod u+w . + chmod u+w . 2>&5 $rm conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation @@ -15599,6 +15694,16 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $host_os in cygwin* | mingw* | pw32*) @@ -15609,6 +15714,10 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar with_gnu_ld=no fi ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; openbsd*) with_gnu_ld=no ;; @@ -15619,6 +15728,27 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) @@ -15669,10 +15799,10 @@ EOF allow_undefined_flag_GCJ=unsupported always_export_symbols_GCJ=no enable_shared_with_static_runtimes_GCJ=yes - export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then @@ -15681,13 +15811,59 @@ EOF echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else - ld_shlibs=no + ld_shlibs_GCJ=no fi ;; - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + interix3*) + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -15697,7 +15873,7 @@ EOF fi ;; - solaris* | sysv5*) + solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs_GCJ=no cat <<EOF 1>&2 @@ -15718,6 +15894,33 @@ EOF fi ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_GCJ=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + ;; + sunos4*) archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= @@ -15725,32 +15928,6 @@ EOF hardcode_shlibpath_var_GCJ=no ;; - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_cmds_GCJ="$tmp_archive_cmds" - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - if test $supports_anon_versioning = yes; then - archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ -cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -$echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - else - archive_expsym_cmds_GCJ="$tmp_archive_cmds" - fi - link_all_deplibs_GCJ=no - else - ld_shlibs_GCJ=no - fi - ;; - *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' @@ -15761,16 +15938,11 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ ;; esac - if test "$ld_shlibs_GCJ" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_GCJ= - fi + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= fi else # PORTME fill in a description of your system's linker (not GNU ld) @@ -15782,7 +15954,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_GCJ=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_GCJ=unsupported @@ -15816,6 +15988,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ break fi done + ;; esac exp_sym_flag='-bexport' @@ -15834,7 +16007,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ link_all_deplibs_GCJ=yes if test "$GCC" = yes; then - case $host_os in aix4.012|aix4.012.*) + case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` @@ -15853,8 +16026,12 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ hardcode_libdir_flag_spec_GCJ='-L$libdir' hardcode_libdir_separator_GCJ= fi + ;; esac shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi else # not using gcc if test "$host_cpu" = ia64; then @@ -15862,11 +16039,11 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~ # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then + if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' - fi + fi fi fi @@ -15902,7 +16079,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -15930,12 +16108,12 @@ rm -f conftest.err conftest.$ac_objext \ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds_GCJ="\$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" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_GCJ="-z nodefs" - archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an empty executable. cat >conftest.$ac_ext <<_ACEOF @@ -15962,7 +16140,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -15994,13 +16173,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi # -berok will link without error, but may produce a broken library. no_undefined_flag_GCJ=' ${wl}-bernotok' allow_undefined_flag_GCJ=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols_GCJ=yes # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_GCJ=' ' + whole_archive_flag_spec_GCJ='$convenience' archive_cmds_need_lc_GCJ=yes - # This is similar to how AIX traditionally builds it's shared libraries. - archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; @@ -16013,7 +16190,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ld_shlibs_GCJ=no ;; - bsdi4*) + bsdi[45]*) export_dynamic_flag_spec_GCJ=-rdynamic ;; @@ -16034,57 +16211,57 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi old_archive_From_new_cmds_GCJ='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes_GCJ=yes ;; darwin* | rhapsody*) - if test "$GXX" = yes ; then - archive_cmds_need_lc_GCJ=no - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag_GCJ='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' - ;; - 10.*) - allow_undefined_flag_GCJ='-undefined dynamic_lookup' - ;; - esac - fi - ;; + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - module_cmds_GCJ='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + archive_cmds_need_lc_GCJ=no hardcode_direct_GCJ=no hardcode_automatic_GCJ=yes hardcode_shlibpath_var_GCJ=unsupported - whole_archive_flag_spec_GCJ='-all_load $convenience' + whole_archive_flag_spec_GCJ='' link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' else - ld_shlibs_GCJ=no + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac fi ;; @@ -16118,7 +16295,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu) + freebsd* | kfreebsd*-gnu | dragonfly*) archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_GCJ='-R$libdir' hardcode_direct_GCJ=yes @@ -16141,47 +16318,62 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi export_dynamic_flag_spec_GCJ='${wl}-E' ;; - hpux10* | hpux11*) + hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; + ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; *) archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + case $host_cpu in + hppa*64*|ia64*) hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' - hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=no hardcode_shlibpath_var_GCJ=no ;; - ia64*) - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_direct_GCJ=no - hardcode_shlibpath_var_GCJ=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_GCJ=yes - ;; *) - hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_GCJ=: hardcode_direct_GCJ=yes export_dynamic_flag_spec_GCJ='${wl}-E' @@ -16205,7 +16397,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi link_all_deplibs_GCJ=yes ;; - netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -16229,6 +16421,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var_GCJ=no if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' export_dynamic_flag_spec_GCJ='${wl}-E' else @@ -16274,7 +16467,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi allow_undefined_flag_GCJ=' -expect_unresolved \*' archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_GCJ='-rpath $libdir' @@ -16282,21 +16475,15 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_separator_GCJ=: ;; - sco3.2v5*) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_GCJ=no - export_dynamic_flag_spec_GCJ='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - solaris*) no_undefined_flag_GCJ=' -z text' if test "$GCC" = yes; then + wlarc='${wl}' archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' else + wlarc='' archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' @@ -16305,8 +16492,18 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_shlibpath_var_GCJ=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; esac link_all_deplibs_GCJ=yes ;; @@ -16363,36 +16560,45 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi fi ;; - sysv4.2uw2*) - archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_GCJ=yes - hardcode_minus_L_GCJ=no + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z,text' + archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; + runpath_var='LD_RUN_PATH' - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - no_undefined_flag_GCJ='${wl}-z ${wl}text' if test "$GCC" = yes; then - archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var_GCJ=no ;; - sysv5*) - no_undefined_flag_GCJ=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - hardcode_libdir_flag_spec_GCJ= + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_GCJ='${wl}-z,text' + allow_undefined_flag_GCJ='${wl}-z,nodefs' + archive_cmds_need_lc_GCJ=no hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-Bexport' runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi ;; uts4*) @@ -16411,11 +16617,6 @@ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 echo "${ECHO_T}$ld_shlibs_GCJ" >&6 test "$ld_shlibs_GCJ" = no && can_build_shared=no -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - # # Do we need to explicitly link libc? # @@ -16448,6 +16649,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_GCJ + pic_flag=$lt_prog_compiler_pic_GCJ compiler_flags=-v linker_flags=-v verstring= @@ -16580,7 +16782,7 @@ beos*) shlibpath_var=LIBRARY_PATH ;; -bsdi4*) +bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -16608,7 +16810,8 @@ cygwin* | mingw* | pw32*) dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' @@ -16638,7 +16841,7 @@ cygwin* | mingw* | pw32*) ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; @@ -16661,7 +16864,7 @@ darwin* | rhapsody*) soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. if test "$GCC" = yes; then sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` @@ -16696,8 +16899,17 @@ kfreebsd*-gnu) dynamic_linker='GNU ld.so' ;; -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) @@ -16715,14 +16927,19 @@ freebsd*) freebsd2*) shlibpath_overrides_runpath=yes ;; - freebsd3.01* | freebsdelf3.01*) + freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; - *) # from 3.2 on + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; esac ;; @@ -16742,7 +16959,7 @@ hpux9* | hpux10* | hpux11*) version_type=sunos need_lib_prefix=no need_version=no - case "$host_cpu" in + case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes @@ -16782,6 +16999,18 @@ hpux9* | hpux10* | hpux11*) postinstall_cmds='chmod 555 $lib' ;; +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; @@ -16841,7 +17070,7 @@ linux*) # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -16854,18 +17083,6 @@ linux*) dynamic_linker='GNU/Linux ld.so' ;; -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - knetbsd*-gnu) version_type=linux need_lib_prefix=no @@ -16915,8 +17132,13 @@ nto-qnx*) openbsd*) version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no - need_version=yes + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH @@ -16954,13 +17176,6 @@ osf3* | osf4* | osf5*) sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - solaris*) version_type=linux need_lib_prefix=no @@ -16986,7 +17201,7 @@ sunos4*) need_version=yes ;; -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -17019,6 +17234,29 @@ sysv4*MP*) fi ;; +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -17034,12 +17272,17 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ - test -n "$runpath_var GCJ" || \ - test "X$hardcode_automatic_GCJ"="Xyes" ; then + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then # We can hardcode non-existant directories. if test "$hardcode_direct_GCJ" != no && @@ -17071,834 +17314,6 @@ elif test "$shlibpath_overrides_runpath" = yes || enable_fast_install=needless fi -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac -fi - -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 -if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define shl_load innocuous_shl_load - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef shl_load - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_shl_load) || defined (__stub___shl_load) -choke me -#else -char (*f) () = shl_load; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != shl_load; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6 -if test $ac_cv_func_shl_load = yes; then - lt_cv_dlopen="shl_load" -else - echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -int -main () -{ -shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 -if test $ac_cv_lib_dld_shl_load = yes; then - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" -else - echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define dlopen innocuous_dlopen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef dlopen - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_dlopen) || defined (__stub___dlopen) -choke me -#else -char (*f) () = dlopen; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != dlopen; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6 -if test $ac_cv_func_dlopen = yes; then - lt_cv_dlopen="dlopen" -else - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 -if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_svld_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_svld_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 -if test $ac_cv_lib_svld_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dld_link (); -int -main () -{ -dld_link (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_dld_link=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_dld_link=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 -if test $ac_cv_lib_dld_dld_link = yes; then - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF -#line 17701 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6 - - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF -#line 17799 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh @@ -17913,7 +17328,7 @@ if test -f "$ltmain"; then # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ @@ -18014,6 +17429,12 @@ fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo @@ -18025,6 +17446,9 @@ AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + # A language-specific compiler. CC=$lt_compiler_GCJ @@ -18090,7 +17514,7 @@ max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ -# Must we lock files when doing compilation ? +# Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? @@ -18334,15 +17758,42 @@ lt_simple_link_test_code="$lt_simple_compile_test_code" # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + # Allow CC to be a program name with arguments. compiler=$CC +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + # Allow CC to be a program name with arguments. lt_save_CC="$CC" CC=${RC-"windres"} compiler=$CC compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + lt_cv_prog_compiler_c_o_RC=yes # The else clause should only fire when bootstrapping the @@ -18358,7 +17809,7 @@ if test -f "$ltmain"; then # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ SED SHELL STRIP \ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ @@ -18459,6 +17910,12 @@ fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os # An echo program that does not interpret backslashes. echo=$lt_echo @@ -18470,6 +17927,9 @@ AR_FLAGS=$lt_AR_FLAGS # A C compiler. LTCC=$lt_LTCC +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + # A language-specific compiler. CC=$lt_compiler_RC @@ -18535,7 +17995,7 @@ max_cmd_len=$lt_cv_sys_max_cmd_len # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC -# Must we lock files when doing compilation ? +# Must we lock files when doing compilation? need_locks=$lt_need_locks # Do we need the lib prefix for modules? @@ -18845,7 +18305,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? @@ -19858,6 +19319,11 @@ esac *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ @@ -19896,12 +19362,6 @@ echo "$as_me: error: cannot find input file: $f" >&2;} fi;; esac done` || { (exit 1); exit 1; } - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub diff --git a/src/processor/memory_region.h b/src/processor/memory_region.h new file mode 100644 index 00000000..83d6dbf4 --- /dev/null +++ b/src/processor/memory_region.h @@ -0,0 +1,65 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// memory_region.h: Access to memory regions. +// +// A MemoryRegion provides virtual access to a range of memory. It is an +// abstraction allowing the actual source of memory to be independent of +// methods which need to access a virtual memory space. +// +// Author: Mark Mentovai + +#ifndef PROCESSOR_MEMORY_REGION_H__ +#define PROCESSOR_MEMORY_REGION_H__ + + +#include "google/airbag_types.h" + + +namespace google_airbag { + + +class MemoryRegion { + public: + virtual ~MemoryRegion() {} + + // The base address of this memory region. + virtual u_int64_t GetBase() = 0; + + // The size of this memory region. + virtual u_int32_t GetSize() = 0; + + // Access to data of various sizes within the memory region. address + // is a pointer to read, and it must lie within the memory region as + // defined by its base address and size. The location pointed to by + // value is set to the value at address. Byte-swapping is performed + // if necessary so that the value is appropriate for the running + // program. Returns true on success. Fails and returns false if address + // is out of the region's bounds (after considering the width of value), + // or for other types of errors. + virtual bool GetMemoryAtAddress(u_int64_t address, + u_int8_t* value) = 0; + virtual bool GetMemoryAtAddress(u_int64_t address, + u_int16_t* value) = 0; + virtual bool GetMemoryAtAddress(u_int64_t address, + u_int32_t* value) = 0; + virtual bool GetMemoryAtAddress(u_int64_t address, + u_int64_t* value) = 0; +}; + + +} // namespace google_airbag + + +#endif // PROCESSOR_MEMORY_REGION_H__ diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc new file mode 100644 index 00000000..46aa7c43 --- /dev/null +++ b/src/processor/minidump.cc @@ -0,0 +1,2025 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// minidump.cc: A minidump reader. +// +// See minidump.h for documentation. +// +// Author: Mark Mentovai + + +#include <stdio.h> +#include <time.h> +#include <unistd.h> +#ifdef _WIN32 +#include <io.h> +typedef SSIZE_T ssize_t; +#define read _read +#define lseek _lseek +#endif // _WIN32 + +#include <map> +#include <memory> +#include <vector> + +#include "processor/minidump.h" + + +namespace google_airbag { + + +using std::auto_ptr; +using std::vector; + + +// +// Swapping routines +// +// Inlining these doesn't increase code size significantly, and it saves +// a whole lot of unnecessary jumping back and forth. +// + + +// Swapping an 8-bit quantity is a no-op. This function is only provided +// to account for certain templatized operations that require swapping for +// wider types but handle u_int8_t too +// (MinidumpMemoryRegion::GetMemoryAtAddressInternal). +static inline void Swap(u_int8_t* value) { +} + + +// Optimization: don't need to AND the furthest right shift, because we're +// shifting an unsigned quantity. The standard requires zero-filling in this +// case. If the quantities were signed, a bitmask whould be needed for this +// right shift to avoid an arithmetic shift (which retains the sign bit). +// The furthest left shift never needs to be ANDed bitmask. + + +static inline void Swap(u_int16_t* value) { + *value = (*value >> 8) | + (*value << 8); +} + + +static inline void Swap(u_int32_t* value) { + *value = (*value >> 24) | + ((*value >> 8) & 0x0000ff00) | + ((*value << 8) & 0x00ff0000) | + (*value << 24); +} + + +static inline void Swap(u_int64_t* value) { + *value = (*value >> 56) | + ((*value >> 40) & 0x000000000000ff00LL) | + ((*value >> 24) & 0x0000000000ff0000LL) | + ((*value >> 8) & 0x00000000ff000000LL) | + ((*value << 8) & 0x000000ff00000000LL) | + ((*value << 24) & 0x0000ff0000000000LL) | + ((*value << 40) & 0x00ff000000000000LL) | + (*value << 56); +} + + +static inline void Swap(MDLocationDescriptor* location_descriptor) { + Swap(&location_descriptor->data_size); + Swap(&location_descriptor->rva); +} + + +static inline void Swap(MDMemoryDescriptor* memory_descriptor) { + Swap(&memory_descriptor->start_of_memory_range); + Swap(&memory_descriptor->memory); +} + + +static inline void Swap(MDGUID* guid) { + Swap(&guid->data1); + Swap(&guid->data2); + Swap(&guid->data3); + // Don't swap guid->data4[] because it contains 8-bit quantities. +} + + +// +// Character conversion routines +// + + +// Standard wide-character conversion routines depend on the system's own +// idea of what width a wide character should be: some use 16 bits, and +// some use 32 bits. For the purposes of a minidump, wide strings are +// always represented with 16-bit UTF-16 chracters. iconv isn't available +// everywhere, and its interface varies where it is available. iconv also +// deals purely with char* pointers, so in addition to considering the swap +// parameter, a converter that uses iconv would also need to take the host +// CPU's endianness into consideration. It doesn't seems worth the trouble +// of making it a dependency when we don't care about anything but UTF-16. +static string* UTF16ToUTF8(const vector<u_int16_t>& in, + bool swap) { + auto_ptr<string> out(new string()); + + // Set the string's initial capacity to the number of UTF-16 characters, + // because the UTF-8 representation will always be at least this long. + // If the UTF-8 representation is longer, the string will grow dynamically. + out->reserve(in.size()); + + for (vector<u_int16_t>::const_iterator iterator = in.begin(); + iterator != in.end(); + ++iterator) { + // Get a 16-bit value from the input + u_int16_t in_word = *iterator; + if (swap) + Swap(&in_word); + + // Convert the input value (in_word) into a Unicode code point (unichar). + u_int32_t unichar; + if (in_word >= 0xdc00 && in_word <= 0xdcff) { + // Low surrogate not following high surrogate, fail. + return NULL; + } else if (in_word >= 0xd800 && in_word <= 0xdbff) { + // High surrogate. + unichar = (in_word - 0xd7c0) << 10; + if (++iterator == in.end()) { + // End of input + return NULL; + } + in_word = *iterator; + if (in_word < 0xdc00 || in_word > 0xdcff) { + // Expected low surrogate, found something else + return NULL; + } + unichar |= in_word & 0x03ff; + } else { + // The ordinary case, a single non-surrogate Unicode character encoded + // as a single 16-bit value. + unichar = in_word; + } + + // Convert the Unicode code point (unichar) into its UTF-8 representation, + // appending it to the out string. + if (unichar < 0x80) { + (*out) += unichar; + } else if (unichar < 0x800) { + (*out) += 0xc0 | (unichar >> 6); + (*out) += 0x80 | (unichar & 0x3f); + } else if (unichar < 0x10000) { + (*out) += 0xe0 | (unichar >> 12); + (*out) += 0x80 | ((unichar >> 6) & 0x3f); + (*out) += 0x80 | (unichar & 0x3f); + } else if (unichar < 0x200000) { + (*out) += 0xf0 | (unichar >> 18); + (*out) += 0x80 | ((unichar >> 12) & 0x3f); + (*out) += 0x80 | ((unichar >> 6) & 0x3f); + (*out) += 0x80 | (unichar & 0x3f); + } else { + // Some (high) value that's not (presently) defined in UTF-8 + return NULL; + } + } + + return out.release(); +} + + +// +// MinidumpObject +// + + +MinidumpObject::MinidumpObject(Minidump* minidump) + : minidump_(minidump) + , valid_(false) { +} + + +// +// MinidumpStream +// + + +MinidumpStream::MinidumpStream(Minidump* minidump) + : MinidumpObject(minidump) { +} + + +// +// MinidumpContext +// + + +MinidumpContext::MinidumpContext(Minidump* minidump) + : MinidumpStream(minidump) + , context_() { +} + + +bool MinidumpContext::Read(u_int32_t expected_size) { + valid_ = false; + + if (expected_size != sizeof(context_)) + return false; + + if (!minidump_->ReadBytes(&context_, sizeof(context_))) + return false; + + if (minidump_->swap()) { + Swap(&context_.context_flags); + Swap(&context_.dr0); + Swap(&context_.dr1); + Swap(&context_.dr2); + Swap(&context_.dr3); + Swap(&context_.dr6); + Swap(&context_.dr7); + Swap(&context_.float_save.control_word); + Swap(&context_.float_save.status_word); + Swap(&context_.float_save.tag_word); + Swap(&context_.float_save.error_offset); + Swap(&context_.float_save.error_selector); + Swap(&context_.float_save.data_offset); + Swap(&context_.float_save.data_selector); + // context_.float_save.register_area[] contains 8-bit quantities and does + // not need to be swapped. + Swap(&context_.float_save.cr0_npx_state); + Swap(&context_.gs); + Swap(&context_.fs); + Swap(&context_.es); + Swap(&context_.ds); + Swap(&context_.edi); + Swap(&context_.esi); + Swap(&context_.ebx); + Swap(&context_.edx); + Swap(&context_.ecx); + Swap(&context_.eax); + Swap(&context_.ebp); + Swap(&context_.eip); + Swap(&context_.cs); + Swap(&context_.eflags); + Swap(&context_.esp); + Swap(&context_.ss); + // context_.extended_registers[] contains 8-bit quantities and does not + // need to be swapped. + } + + valid_ = true; + return true; +} + + +void MinidumpContext::Print() { + if (!valid_) + return; + + printf("MDRawContextX86\n"); + printf(" context_flags = 0x%x\n", context_.context_flags); + printf(" dr0 = 0x%x\n", context_.dr0); + printf(" dr1 = 0x%x\n", context_.dr1); + printf(" dr2 = 0x%x\n", context_.dr2); + printf(" dr3 = 0x%x\n", context_.dr3); + printf(" dr6 = 0x%x\n", context_.dr6); + printf(" dr7 = 0x%x\n", context_.dr7); + printf(" float_save.control_word = 0x%x\n", + context_.float_save.control_word); + printf(" float_save.status_word = 0x%x\n", + context_.float_save.status_word); + printf(" float_save.tag_word = 0x%x\n", + context_.float_save.tag_word); + printf(" float_save.error_offset = 0x%x\n", + context_.float_save.error_offset); + printf(" float_save.error_selector = 0x%x\n", + context_.float_save.error_selector); + printf(" float_save.data_offset = 0x%x\n", + context_.float_save.data_offset); + printf(" float_save.data_selector = 0x%x\n", + context_.float_save.data_selector); + printf(" float_save.register_area[%2d] = 0x", + MD_FLOATINGSAVEAREA_SIZEOF_REGISTERAREA_X86); + for (unsigned int register_index = 0; + register_index < MD_FLOATINGSAVEAREA_SIZEOF_REGISTERAREA_X86; + ++register_index) { + printf("%02x", context_.float_save.register_area[register_index]); + } + printf("\n"); + printf(" float_save.cr0_npx_state = 0x%x\n", + context_.float_save.cr0_npx_state); + printf(" gs = 0x%x\n", context_.gs); + printf(" fs = 0x%x\n", context_.fs); + printf(" es = 0x%x\n", context_.es); + printf(" ds = 0x%x\n", context_.ds); + printf(" edi = 0x%x\n", context_.edi); + printf(" esi = 0x%x\n", context_.esi); + printf(" ebx = 0x%x\n", context_.ebx); + printf(" edx = 0x%x\n", context_.edx); + printf(" ecx = 0x%x\n", context_.ecx); + printf(" eax = 0x%x\n", context_.eax); + printf(" ebp = 0x%x\n", context_.ebp); + printf(" eip = 0x%x\n", context_.eip); + printf(" cs = 0x%x\n", context_.cs); + printf(" eflags = 0x%x\n", context_.eflags); + printf(" esp = 0x%x\n", context_.esp); + printf(" ss = 0x%x\n", context_.ss); + printf(" extended_registers[%3d] = 0x", + MD_CONTEXT_SIZEOF_EXTENDED_REGISTERS_X86); + for (unsigned int register_index = 0; + register_index < MD_CONTEXT_SIZEOF_EXTENDED_REGISTERS_X86; + ++register_index) { + printf("%02x", context_.extended_registers[register_index]); + } + printf("\n\n"); +} + + +// +// MinidumpMemoryRegion +// + + +MinidumpMemoryRegion::MinidumpMemoryRegion(Minidump* minidump) + : MinidumpObject(minidump) + , descriptor_(NULL) + , memory_(NULL) { +} + + +MinidumpMemoryRegion::~MinidumpMemoryRegion() { + delete memory_; +} + + +void MinidumpMemoryRegion::SetDescriptor(MDMemoryDescriptor* descriptor) { + descriptor_ = descriptor; + valid_ = descriptor && + (descriptor_->start_of_memory_range + + descriptor_->memory.data_size) > + descriptor_->start_of_memory_range; +} + + +const u_int8_t* MinidumpMemoryRegion::GetMemory() { + if (!valid_) + return NULL; + + if (!memory_) { + if (!minidump_->SeekSet(descriptor_->memory.rva)) + return NULL; + + // TODO(mmentovai): verify rational size! + auto_ptr<vector<u_int8_t> > memory( + new vector<u_int8_t>(descriptor_->memory.data_size)); + + if (!minidump_->ReadBytes(&(*memory)[0], descriptor_->memory.data_size)) + return NULL; + + memory_ = memory.release(); + } + + return &(*memory_)[0]; +} + + +u_int64_t MinidumpMemoryRegion::GetBase() { + return valid_ ? descriptor_->start_of_memory_range : (u_int64_t)-1; +} + + +u_int32_t MinidumpMemoryRegion::GetSize() { + return valid_ ? descriptor_->memory.data_size : 0; +} + + +void MinidumpMemoryRegion::FreeMemory() { + delete memory_; + memory_ = NULL; +} + + +template<typename T> +bool MinidumpMemoryRegion::GetMemoryAtAddressInternal(u_int64_t address, + T* value) { + if (!valid_ || !value) + return false; + + if (address < descriptor_->start_of_memory_range || + address + sizeof(T) > descriptor_->start_of_memory_range + + descriptor_->memory.data_size) { + return false; + } + + const u_int8_t* memory = GetMemory(); + if (!memory) + return false; + + // If the CPU requires memory accesses to be aligned, this can crash. + // x86 and ppc are able to cope, though. + *value = *reinterpret_cast<const T*>( + &memory[address - descriptor_->start_of_memory_range]); + + if (minidump_->swap()) + Swap(value); + + return true; +} + + +bool MinidumpMemoryRegion::GetMemoryAtAddress(u_int64_t address, + u_int8_t* value) { + return GetMemoryAtAddressInternal(address, value); +} + + +bool MinidumpMemoryRegion::GetMemoryAtAddress(u_int64_t address, + u_int16_t* value) { + return GetMemoryAtAddressInternal(address, value); +} + + +bool MinidumpMemoryRegion::GetMemoryAtAddress(u_int64_t address, + u_int32_t* value) { + return GetMemoryAtAddressInternal(address, value); +} + + +bool MinidumpMemoryRegion::GetMemoryAtAddress(u_int64_t address, + u_int64_t* value) { + return GetMemoryAtAddressInternal(address, value); +} + + +void MinidumpMemoryRegion::Print() { + if (!valid_) + return; + + const u_int8_t* memory = GetMemory(); + if (memory) { + printf("0x"); + for (unsigned int byte_index = 0; + byte_index < descriptor_->memory.data_size; + byte_index++) { + printf("%02x", memory[byte_index]); + } + printf("\n"); + } else { + printf("No memory\n"); + } +} + + +// +// MinidumpThread +// + + +MinidumpThread::MinidumpThread(Minidump* minidump) + : MinidumpObject(minidump) + , thread_() + , memory_(NULL) + , context_(NULL) { +} + + +MinidumpThread::~MinidumpThread() { + delete memory_; + delete context_; +} + + +bool MinidumpThread::Read() { + // Invalidate cached data. + delete memory_; + memory_ = NULL; + delete context_; + context_ = NULL; + + valid_ = false; + + if (!minidump_->ReadBytes(&thread_, sizeof(thread_))) + return false; + + if (minidump_->swap()) { + Swap(&thread_.thread_id); + Swap(&thread_.suspend_count); + Swap(&thread_.priority_class); + Swap(&thread_.priority); + Swap(&thread_.teb); + Swap(&thread_.stack); + Swap(&thread_.thread_context); + } + + // Check for base + size overflow or undersize. A separate size==0 + // check is needed in case base == 0. + u_int64_t high_address = thread_.stack.start_of_memory_range + + thread_.stack.memory.data_size - 1; + if (thread_.stack.memory.data_size == 0 || + high_address < thread_.stack.start_of_memory_range) + return false; + + memory_ = new MinidumpMemoryRegion(minidump_); + memory_->SetDescriptor(&thread_.stack); + + valid_ = true; + return true; +} + + +MinidumpMemoryRegion* MinidumpThread::GetMemory() { + return !valid_ ? NULL : memory_; +} + + +MinidumpContext* MinidumpThread::GetContext() { + if (!valid_) + return NULL; + + if (!context_) { + if (!minidump_->SeekSet(thread_.thread_context.rva)) + return NULL; + + auto_ptr<MinidumpContext> context(new MinidumpContext(minidump_)); + + if (!context->Read(thread_.thread_context.data_size)) + return NULL; + + context_ = context.release(); + } + + return context_; +} + + +u_int32_t MinidumpThread::GetThreadID() { + return valid_ ? thread_.thread_id : (u_int32_t)-1; +} + + +void MinidumpThread::Print() { + if (!valid_) + return; + + printf("MDRawThread\n"); + printf(" thread_id = 0x%x\n", thread_.thread_id); + printf(" suspend_count = %d\n", thread_.suspend_count); + printf(" priority_class = 0x%x\n", thread_.priority_class); + printf(" priority = 0x%x\n", thread_.priority); + printf(" teb = 0x%llx\n", thread_.teb); + printf(" stack.start_of_memory_range = 0x%llx\n", + thread_.stack.start_of_memory_range); + printf(" stack.memory.data_size = 0x%x\n", + thread_.stack.memory.data_size); + printf(" stack.memory.rva = 0x%x\n", thread_.stack.memory.rva); + printf(" thread_context.data_size = 0x%x\n", + thread_.thread_context.data_size); + printf(" thread_context.rva = 0x%x\n", + thread_.thread_context.rva); + + MinidumpContext* context = GetContext(); + if (context) { + printf("\n"); + context->Print(); + } else { + printf(" (no context)\n"); + printf("\n"); + } + + MinidumpMemoryRegion* memory = GetMemory(); + if (memory) { + printf("Stack\n"); + memory->Print(); + } else { + printf("No stack\n"); + } + printf("\n"); +} + + +// +// MinidumpThreadList +// + + +MinidumpThreadList::MinidumpThreadList(Minidump* minidump) + : MinidumpStream(minidump) + , id_to_thread_map_() + , threads_(NULL) + , thread_count_(0) { +} + + +MinidumpThreadList::~MinidumpThreadList() { + delete threads_; +} + + +bool MinidumpThreadList::Read(u_int32_t expected_size) { + // Invalidate cached data. + id_to_thread_map_.clear(); + delete threads_; + threads_ = NULL; + thread_count_ = 0; + + valid_ = false; + + u_int32_t thread_count; + if (expected_size < sizeof(thread_count)) + return false; + if (!minidump_->ReadBytes(&thread_count, sizeof(thread_count))) + return false; + + if (minidump_->swap()) + Swap(&thread_count); + + if (expected_size != sizeof(thread_count) + + thread_count * sizeof(MDRawThread)) { + return false; + } + + // TODO(mmentovai): verify rational size! + auto_ptr<MinidumpThreads> threads( + new MinidumpThreads(thread_count, MinidumpThread(minidump_))); + + for (unsigned int thread_index = 0; + thread_index < thread_count; + ++thread_index) { + MinidumpThread* thread = &(*threads)[thread_index]; + + // Assume that the file offset is correct after the last read. + if (!thread->Read()) + return false; + + u_int32_t thread_id = thread->GetThreadID(); + if (GetThreadByID(thread_id)) { + // Another thread with this ID is already in the list. Data error. + return false; + } + id_to_thread_map_[thread_id] = thread; + } + + threads_ = threads.release(); + thread_count_ = thread_count; + + valid_ = true; + return true; +} + + +MinidumpThread* MinidumpThreadList::GetThreadAtIndex(unsigned int index) + const { + if (!valid_ || index >= thread_count_) + return NULL; + + return &(*threads_)[index]; +} + + +MinidumpThread* MinidumpThreadList::GetThreadByID(u_int32_t thread_id) { + // Don't check valid_. Read calls this method before everything is + // validated. It is safe to not check valid_ here. + return id_to_thread_map_[thread_id]; +} + + +void MinidumpThreadList::Print() { + if (!valid_) + return; + + printf("MinidumpThreadList\n"); + printf(" thread_count = %d\n", thread_count_); + printf("\n"); + + for (unsigned int thread_index = 0; + thread_index < thread_count_; + ++thread_index) { + printf("thread[%d]\n", thread_index); + + (*threads_)[thread_index].Print(); + } +} + + +// +// MinidumpModule +// + + +MinidumpModule::MinidumpModule(Minidump* minidump) + : MinidumpObject(minidump) + , module_() + , name_(NULL) + , cv_record_(NULL) + , misc_record_(NULL) + , debug_filename_(NULL) { +} + + +MinidumpModule::~MinidumpModule() { + delete name_; + delete cv_record_; + delete misc_record_; + delete debug_filename_; +} + + +bool MinidumpModule::Read() { + // Invalidate cached data. + delete name_; + name_ = NULL; + delete cv_record_; + cv_record_ = NULL; + delete misc_record_; + misc_record_ = NULL; + delete debug_filename_; + debug_filename_ = NULL; + + valid_ = false; + + if (!minidump_->ReadBytes(&module_, MD_MODULE_SIZE)) + return false; + + if (minidump_->swap()) { + Swap(&module_.base_of_image); + Swap(&module_.size_of_image); + Swap(&module_.checksum); + Swap(&module_.time_date_stamp); + Swap(&module_.module_name_rva); + Swap(&module_.version_info.signature); + Swap(&module_.version_info.struct_version); + Swap(&module_.version_info.file_version_hi); + Swap(&module_.version_info.file_version_lo); + Swap(&module_.version_info.product_version_hi); + Swap(&module_.version_info.product_version_lo); + Swap(&module_.version_info.file_flags_mask); + Swap(&module_.version_info.file_flags); + Swap(&module_.version_info.file_os); + Swap(&module_.version_info.file_type); + Swap(&module_.version_info.file_subtype); + Swap(&module_.version_info.file_date_hi); + Swap(&module_.version_info.file_date_lo); + Swap(&module_.cv_record); + Swap(&module_.misc_record); + // Don't swap reserved fields because their contents are unknown (as + // are their proper widths). + } + + // Check for base + size overflow or undersize. A separate size==0 + // check is needed in case base == 0. + u_int64_t high_address = module_.base_of_image + module_.size_of_image - 1; + if (module_.size_of_image == 0 || high_address < module_.base_of_image) + return false; + + valid_ = true; + return true; +} + + +const string* MinidumpModule::GetName() { + if (!valid_) + return NULL; + + if (!name_) + name_ = minidump_->ReadString(module_.module_name_rva); + + return name_; +} + + +const u_int8_t* MinidumpModule::GetCVRecord() { + if (!valid_) + return NULL; + + if (!cv_record_) { + // Only check against the smallest possible structure size now - recheck + // if necessary later if the actual structure is larger. + if (sizeof(MDCVInfoPDB20) > module_.cv_record.data_size) + return NULL; + + if (!minidump_->SeekSet(module_.cv_record.rva)) + return NULL; + + // TODO(mmentovai): verify rational size! + + // Allocating something that will be accessed as MDCVInfoPDB70 or + // MDCVInfoPDB20 but is allocated as u_int8_t[] can cause alignment + // problems. x86 and ppc are able to cope, though. This allocation + // style is needed because the MDCVInfoPDB70 or MDCVInfoPDB20 are + // variable-sized due to their pdb_file_name fields; these structures + // are not sizeof(MDCVInfoPDB70) or sizeof(MDCVInfoPDB20) and treating + // them as such would result in incomplete structures or overruns. + auto_ptr<vector<u_int8_t> > cv_record( + new vector<u_int8_t>(module_.cv_record.data_size)); + + if (!minidump_->ReadBytes(&(*cv_record)[0], module_.cv_record.data_size)) + return NULL; + + MDCVInfoPDB70* cv_record_70 = + reinterpret_cast<MDCVInfoPDB70*>(&(*cv_record)[0]); + u_int32_t signature = cv_record_70->cv_signature; + if (minidump_->swap()) + Swap(&signature); + + if (signature == MD_CVINFOPDB70_SIGNATURE) { + // Now that the structure type is known, recheck the size. + if (sizeof(MDCVInfoPDB70) > module_.cv_record.data_size) + return NULL; + + if (minidump_->swap()) { + Swap(&cv_record_70->cv_signature); + Swap(&cv_record_70->signature); + Swap(&cv_record_70->age); + // Don't swap cv_record_70.pdb_file_name because it's an array of 8-bit + // quanities. (It's a path, is it UTF-8?) + } + } else if (signature == MD_CVINFOPDB20_SIGNATURE) { + if (minidump_->swap()) { + MDCVInfoPDB20* cv_record_20 = + reinterpret_cast<MDCVInfoPDB20*>(&(*cv_record)[0]); + Swap(&cv_record_20->cv_header.signature); + Swap(&cv_record_20->cv_header.offset); + Swap(&cv_record_20->signature); + Swap(&cv_record_20->age); + // Don't swap cv_record_20.pdb_file_name because it's an array of 8-bit + // quantities. (It's a path, is it UTF-8?) + } + } else { + // Some unknown structure type. We don't need to bail out here, but we + // do instead of returning it, because this method guarantees properly + // swapped data, and data in an unknown format can't possibly be swapped. + return NULL; + } + + // The last field of either structure is null-terminated 8-bit character + // data. Ensure that it's null-terminated. + if ((*cv_record)[module_.cv_record.data_size - 1] != '\0') + return NULL; + + // Store the vector type because that's how storage was allocated, but + // return it casted to u_int8_t*. + cv_record_ = cv_record.release(); + } + + return &(*cv_record_)[0]; +} + + +const MDImageDebugMisc* MinidumpModule::GetMiscRecord() { + if (!valid_) + return NULL; + + if (!misc_record_) { + if (sizeof(MDImageDebugMisc) > module_.misc_record.data_size) + return NULL; + + if (!minidump_->SeekSet(module_.misc_record.rva)) + return NULL; + + // TODO(mmentovai): verify rational size! + + // Allocating something that will be accessed as MDImageDebugMisc but + // is allocated as u_int8_t[] can cause alignment problems. x86 and + // ppc are able to cope, though. This allocation style is needed + // because the MDImageDebugMisc is variable-sized due to its data field; + // this structure is not sizeof(MDImageDebugMisc) and treating it as such + // would result in an incomplete structure or an overrun. + auto_ptr<vector<u_int8_t> > misc_record_mem( + new vector<u_int8_t>(module_.misc_record.data_size)); + MDImageDebugMisc* misc_record = + reinterpret_cast<MDImageDebugMisc*>(&(*misc_record_mem)[0]); + + if (!minidump_->ReadBytes(misc_record, module_.misc_record.data_size)) + return NULL; + + if (minidump_->swap()) { + Swap(&misc_record->data_type); + Swap(&misc_record->length); + // Don't swap misc_record.unicode because it's an 8-bit quantity. + // Don't swap the reserved fields for the same reason, and because + // they don't contain any valid data. + if (misc_record->unicode) { + // There is a potential alignment problem, but shouldn't be a problem + // in practice due to the layout of MDImageDebugMisc. + u_int16_t* data16 = reinterpret_cast<u_int16_t*>(&(misc_record->data)); + unsigned int dataBytes = module_.misc_record.data_size - + sizeof(MDImageDebugMisc); + unsigned int dataLength = dataBytes / 2; + for (unsigned int characterIndex = 0; + characterIndex < dataLength; + ++characterIndex) { + Swap(&data16[characterIndex]); + } + } + } + + if (module_.misc_record.data_size != misc_record->length) + return NULL; + + // Store the vector type because that's how storage was allocated, but + // return it casted to MDImageDebugMisc*. + misc_record_ = misc_record_mem.release(); + } + + return reinterpret_cast<MDImageDebugMisc*>(&(*misc_record_)[0]); +} + + +// This method will perform no allocation-size checking on its own; it relies +// on GetCVRecord() and GetMiscRecord() to have made the determination that +// the necessary structures aren't oversized. +const string* MinidumpModule::GetDebugFilename() { + if (!valid_) + return NULL; + + if (!debug_filename_) { + // Prefer the CodeView record if present. + const MDCVInfoPDB70* cv_record_70 = + reinterpret_cast<const MDCVInfoPDB70*>(GetCVRecord()); + if (cv_record_70) { + if (cv_record_70->cv_signature == MD_CVINFOPDB70_SIGNATURE) { + // GetCVRecord guarantees pdb_file_name is null-terminated. + debug_filename_ = new string( + reinterpret_cast<const char*>(cv_record_70->pdb_file_name)); + + return debug_filename_; + } else if (cv_record_70->cv_signature == MD_CVINFOPDB20_SIGNATURE) { + // It's actually a MDCVInfoPDB20 structure. + const MDCVInfoPDB20* cv_record_20 = + reinterpret_cast<const MDCVInfoPDB20*>(cv_record_70); + + // GetCVRecord guarantees pdb_file_name is null-terminated. + debug_filename_ = new string( + reinterpret_cast<const char*>(cv_record_20->pdb_file_name)); + + return debug_filename_; + } + + // If there's a CodeView record but it doesn't match either of those + // signatures, try the miscellaneous record - but it's suspicious because + // GetCVRecord shouldn't have returned a CodeView record that doesn't + // match either signature. + } + + // No usable CodeView record. Try the miscellaneous debug record. + const MDImageDebugMisc* misc_record = GetMiscRecord(); + if (!misc_record) + return NULL; + + if (!misc_record->unicode) { + // If it's not Unicode, just stuff it into the string. It's unclear + // if misc_record->data is 0-terminated, so use an explicit size. + debug_filename_ = new string( + reinterpret_cast<const char*>(misc_record->data), + module_.misc_record.data_size - sizeof(MDImageDebugMisc)); + + return debug_filename_; + } + + // There's a misc_record but it encodes the debug filename in UTF-16. + // (Actually, because miscellaneous records are so old, it's probably + // UCS-2.) Convert it to UTF-8 for congruity with the other strings that + // this method (and all other methods in the Minidump family) return. + + unsigned int bytes = + module_.misc_record.data_size - sizeof(MDImageDebugMisc); + if (bytes % 2 != 0) + return NULL; + unsigned int utf16_words = bytes / 2; + + // UTF16ToUTF8 expects a vector<u_int16_t>, so create a temporary one and + // copy the UTF-16 data into it. + vector<u_int16_t> string_utf16(utf16_words); + memcpy(&string_utf16[0], &misc_record->data, bytes); + + // GetMiscRecord already byte-swapped the data[] field if it contains + // UTF-16, so pass false as the swap argument. + debug_filename_ = UTF16ToUTF8(string_utf16, false); + } + + return debug_filename_; +} + + +void MinidumpModule::Print() { + if (!valid_) + return; + + printf("MDRawModule\n"); + printf(" base_of_image = 0x%llx\n", + module_.base_of_image); + printf(" size_of_image = 0x%x\n", + module_.size_of_image); + printf(" checksum = 0x%x\n", + module_.checksum); + printf(" time_date_stamp = 0x%x\n", + module_.time_date_stamp); + printf(" module_name_rva = 0x%x\n", + module_.module_name_rva); + printf(" version_info.signature = 0x%x\n", + module_.version_info.signature); + printf(" version_info.struct_version = 0x%x\n", + module_.version_info.struct_version); + printf(" version_info.file_version = 0x%x:0x%x\n", + module_.version_info.file_version_hi, + module_.version_info.file_version_lo); + printf(" version_info.product_version = 0x%x:0x%x\n", + module_.version_info.product_version_hi, + module_.version_info.product_version_lo); + printf(" version_info.file_flags_mask = 0x%x\n", + module_.version_info.file_flags_mask); + printf(" version_info.file_flags = 0x%x\n", + module_.version_info.file_flags); + printf(" version_info.file_os = 0x%x\n", + module_.version_info.file_os); + printf(" version_info.file_type = 0x%x\n", + module_.version_info.file_type); + printf(" version_info.file_subtype = 0x%x\n", + module_.version_info.file_subtype); + printf(" version_info.file_date = 0x%x:0x%x\n", + module_.version_info.file_date_hi, + module_.version_info.file_date_lo); + printf(" cv_record.data_size = %d\n", + module_.cv_record.data_size); + printf(" cv_record.rva = 0x%x\n", + module_.cv_record.rva); + printf(" misc_record.data_size = %d\n", + module_.misc_record.data_size); + printf(" misc_record.rva = 0x%x\n", + module_.misc_record.rva); + + const char* module_name = GetName()->c_str(); + if (module_name) + printf(" (module_name) = \"%s\"\n", module_name); + else + printf(" (module_name) = (null)\n"); + + const MDCVInfoPDB70* cv_record = + reinterpret_cast<const MDCVInfoPDB70*>(GetCVRecord()); + if (cv_record) { + if (cv_record->cv_signature == MD_CVINFOPDB70_SIGNATURE) { + printf(" (cv_record).cv_signature = 0x%x\n", + cv_record->cv_signature); + printf(" (cv_record).signature = %08x-%04x-%04x-%02x%02x-", + cv_record->signature.data1, + cv_record->signature.data2, + cv_record->signature.data3, + cv_record->signature.data4[0], + cv_record->signature.data4[1]); + for (unsigned int guidIndex = 2; + guidIndex < 8; + ++guidIndex) { + printf("%02x", cv_record->signature.data4[guidIndex]); + } + printf("\n"); + printf(" (cv_record).age = %d\n", + cv_record->age); + printf(" (cv_record).pdb_file_name = \"%s\"\n", + cv_record->pdb_file_name); + } else { + const MDCVInfoPDB20* cv_record_20 = + reinterpret_cast<const MDCVInfoPDB20*>(cv_record); + printf(" (cv_record).cv_header.signature = 0x%x\n", + cv_record_20->cv_header.signature); + printf(" (cv_record).cv_header.offset = 0x%x\n", + cv_record_20->cv_header.offset); + printf(" (cv_record).signature = 0x%x\n", + cv_record_20->signature); + printf(" (cv_record).age = %d\n", + cv_record_20->age); + printf(" (cv_record).pdb_file_name = \"%s\"\n", + cv_record_20->pdb_file_name); + } + } else { + printf(" (cv_record) = (null)\n"); + } + + const MDImageDebugMisc* misc_record = GetMiscRecord(); + if (misc_record) { + printf(" (misc_record).data_type = 0x%x\n", + misc_record->data_type); + printf(" (misc_record).length = 0x%x\n", + misc_record->length); + printf(" (misc_record).unicode = %d\n", + misc_record->unicode); + // Don't bother printing the UTF-16, we don't really even expect to ever + // see this misc_record anyway. + if (misc_record->unicode) + printf(" (misc_record).data = \"%s\"\n", + misc_record->data); + else + printf(" (misc_record).data = (UTF-16)\n"); + } else { + printf(" (misc_record) = (null)\n"); + } + + const string* debug_filename = GetDebugFilename(); + if (debug_filename) { + printf(" (debug_filename) = \"%s\"\n", + debug_filename->c_str()); + } else { + printf(" (debug_filename) = (null)\n"); + } + printf("\n"); +} + + +// +// MinidumpModuleList +// + + +MinidumpModuleList::MinidumpModuleList(Minidump* minidump) + : MinidumpStream(minidump) + , range_map_() + , modules_(NULL) + , module_count_(0) { +} + + +MinidumpModuleList::~MinidumpModuleList() { + delete modules_; +} + + +bool MinidumpModuleList::Read(u_int32_t expected_size) { + // Invalidate cached data. + range_map_.Clear(); + delete modules_; + modules_ = NULL; + module_count_ = 0; + + valid_ = false; + + u_int32_t module_count; + if (expected_size < sizeof(module_count)) + return false; + if (!minidump_->ReadBytes(&module_count, sizeof(module_count))) + return false; + + if (minidump_->swap()) + Swap(&module_count); + + if (expected_size != sizeof(module_count) + + module_count * MD_MODULE_SIZE) { + return false; + } + + // TODO(mmentovai): verify rational size! + auto_ptr<MinidumpModules> modules( + new MinidumpModules(module_count, MinidumpModule(minidump_))); + + for (unsigned int module_index = 0; + module_index < module_count; + ++module_index) { + MinidumpModule* module = &(*modules)[module_index]; + + // Assume that the file offset is correct after the last read. + if (!module->Read()) + return false; + + u_int64_t base_address = module->base_address(); + u_int64_t module_size = module->size(); + if (base_address == (u_int64_t)-1) + return false; + + if (!range_map_.StoreRange(base_address, module_size, module_index)) + return false; + } + + modules_ = modules.release(); + module_count_ = module_count; + + valid_ = true; + return true; +} + + +MinidumpModule* MinidumpModuleList::GetModuleAtIndex(unsigned int index) + const { + if (!valid_ || index >= module_count_) + return NULL; + + return &(*modules_)[index]; +} + + +MinidumpModule* MinidumpModuleList::GetModuleForAddress(u_int64_t address) { + if (!valid_) + return NULL; + + unsigned int module_index; + if (!range_map_.RetrieveRange(address, &module_index)) + return NULL; + + return GetModuleAtIndex(module_index); +} + + +void MinidumpModuleList::Print() { + if (!valid_) + return; + + printf("MinidumpModuleList\n"); + printf(" module_count = %d\n", module_count_); + printf("\n"); + + for (unsigned int module_index = 0; + module_index < module_count_; + ++module_index) { + printf("module[%d]\n", module_index); + + (*modules_)[module_index].Print(); + } +} + + +// +// MinidumpMemoryList +// + + +MinidumpMemoryList::MinidumpMemoryList(Minidump* minidump) + : MinidumpStream(minidump) + , range_map_() + , descriptors_(NULL) + , regions_(NULL) + , region_count_(0) { +} + + +MinidumpMemoryList::~MinidumpMemoryList() { + delete descriptors_; + delete regions_; +} + + +bool MinidumpMemoryList::Read(u_int32_t expected_size) { + // Invalidate cached data. + delete descriptors_; + descriptors_ = NULL; + delete regions_; + regions_ = NULL; + range_map_.Clear(); + region_count_ = 0; + + valid_ = false; + + u_int32_t region_count; + if (expected_size < sizeof(region_count)) + return false; + if (!minidump_->ReadBytes(®ion_count, sizeof(region_count))) + return false; + + if (minidump_->swap()) + Swap(®ion_count); + + if (expected_size != sizeof(region_count) + + region_count * sizeof(MDMemoryDescriptor)) { + return false; + } + + // TODO(mmentovai): verify rational size! + auto_ptr<MemoryDescriptors> descriptors(new MemoryDescriptors(region_count)); + + // Read the entire array in one fell swoop, instead of reading one entry + // at a time in the loop. + if (!minidump_->ReadBytes(&(*descriptors)[0], + sizeof(MDMemoryDescriptor) * region_count)) { + return false; + } + + auto_ptr<MemoryRegions> regions( + new MemoryRegions(region_count, MinidumpMemoryRegion(minidump_))); + + for (unsigned int region_index = 0; + region_index < region_count; + ++region_index) { + MDMemoryDescriptor* descriptor = &(*descriptors)[region_index]; + + if (minidump_->swap()) + Swap(&*descriptor); + + u_int64_t base_address = descriptor->start_of_memory_range; + u_int32_t region_size = descriptor->memory.data_size; + + // Check for base + size overflow or undersize. A separate size==0 + // check is needed in case base == 0. + u_int64_t high_address = base_address + region_size - 1; + if (region_size == 0 || high_address < base_address) + return false; + + if (!range_map_.StoreRange(base_address, region_size, region_index)) + return false; + + (*regions)[region_index].SetDescriptor(descriptor); + } + + region_count_ = region_count; + descriptors_ = descriptors.release(); + regions_ = regions.release(); + + valid_ = true; + return true; +} + + +MinidumpMemoryRegion* MinidumpMemoryList::GetMemoryRegionAtIndex( + unsigned int index) { + if (!valid_ || index >= region_count_) + return NULL; + + return &(*regions_)[index]; +} + + +MinidumpMemoryRegion* MinidumpMemoryList::GetMemoryRegionForAddress( + u_int64_t address) { + if (!valid_) + return NULL; + + unsigned int region_index; + if (!range_map_.RetrieveRange(address, ®ion_index)) + return NULL; + + return GetMemoryRegionAtIndex(region_index); +} + + +void MinidumpMemoryList::Print() { + if (!valid_) + return; + + printf("MinidumpMemoryList\n"); + printf(" region_count = %d\n", region_count_); + printf("\n"); + + for (unsigned int region_index = 0; + region_index < region_count_; + ++region_index) { + MDMemoryDescriptor* descriptor = &(*descriptors_)[region_index]; + printf("region[%d]\n", region_index); + printf("MDMemoryDescriptor\n"); + printf(" start_of_memory_range = 0x%llx\n", + descriptor->start_of_memory_range); + printf(" memory.data_size = 0x%x\n", descriptor->memory.data_size); + printf(" memory.rva = 0x%x\n", descriptor->memory.rva); + MinidumpMemoryRegion* region = GetMemoryRegionAtIndex(region_index); + if (region) { + printf("Memory\n"); + region->Print(); + } else { + printf("No memory\n"); + } + printf("\n"); + } +} + + +// +// MinidumpException +// + + +MinidumpException::MinidumpException(Minidump* minidump) + : MinidumpStream(minidump) + , exception_() + , context_(NULL) { +} + + +MinidumpException::~MinidumpException() { + delete context_; +} + + +bool MinidumpException::Read(u_int32_t expected_size) { + // Invalidate cached data. + delete context_; + context_ = NULL; + + valid_ = false; + + if (expected_size != sizeof(exception_)) + return false; + + if (!minidump_->ReadBytes(&exception_, sizeof(exception_))) + return false; + + if (minidump_->swap()) { + Swap(&exception_.thread_id); + // exception_.__align is for alignment only and does not need to be + // swapped. + Swap(&exception_.exception_record.exception_code); + Swap(&exception_.exception_record.exception_flags); + Swap(&exception_.exception_record.exception_record); + Swap(&exception_.exception_record.exception_address); + Swap(&exception_.exception_record.number_parameters); + // exception_.exception_record.__align is for alignment only and does not + // need to be swapped. + for (unsigned int parameter_index = 0; + parameter_index < MD_EXCEPTION_MAXIMUM_PARAMETERS; + ++parameter_index) { + Swap(&exception_.exception_record.exception_information[parameter_index]); + } + Swap(&exception_.thread_context); + } + + valid_ = true; + return true; +} + + +u_int32_t MinidumpException::GetThreadID() { + return valid_ ? exception_.thread_id : 0; +} + + +MinidumpContext* MinidumpException::GetContext() { + if (!valid_) + return NULL; + + if (!context_) { + if (!minidump_->SeekSet(exception_.thread_context.rva)) + return NULL; + + auto_ptr<MinidumpContext> context(new MinidumpContext(minidump_)); + + if (!context->Read(exception_.thread_context.data_size)) + return NULL; + + context_ = context.release(); + } + + return context_; +} + + +void MinidumpException::Print() { + if (!valid_) + return; + + printf("MDException\n"); + printf(" thread_id = 0x%x\n", + exception_.thread_id); + printf(" exception_record.exception_code = 0x%x\n", + exception_.exception_record.exception_code); + printf(" exception_record.exception_flags = 0x%x\n", + exception_.exception_record.exception_flags); + printf(" exception_record.exception_record = 0x%llx\n", + exception_.exception_record.exception_record); + printf(" exception_record.exception_address = 0x%llx\n", + exception_.exception_record.exception_address); + printf(" exception_record.number_parameters = %d\n", + exception_.exception_record.number_parameters); + for (unsigned int parameterIndex = 0; + parameterIndex < exception_.exception_record.number_parameters; + ++parameterIndex) { + printf(" exception_record.exception_information[%2d] = 0x%llx\n", + parameterIndex, + exception_.exception_record.exception_information[parameterIndex]); + } + printf(" thread_context.data_size = %d\n", + exception_.thread_context.data_size); + printf(" thread_context.rva = 0x%x\n", + exception_.thread_context.rva); + MinidumpContext* context = GetContext(); + if (context) { + printf("\n"); + context->Print(); + } else { + printf(" (no context)\n"); + printf("\n"); + } +} + + +// +// MinidumpSystemInfo +// + + +MinidumpSystemInfo::MinidumpSystemInfo(Minidump* minidump) + : MinidumpStream(minidump) + , system_info_() + , csd_version_(NULL) { +} + + +MinidumpSystemInfo::~MinidumpSystemInfo() { + delete csd_version_; +} + + +bool MinidumpSystemInfo::Read(u_int32_t expected_size) { + // Invalidate cached data. + delete csd_version_; + csd_version_ = NULL; + + valid_ = false; + + if (expected_size != sizeof(system_info_)) + return false; + + if (!minidump_->ReadBytes(&system_info_, sizeof(system_info_))) + return false; + + if (minidump_->swap()) { + Swap(&system_info_.processor_architecture); + Swap(&system_info_.processor_level); + Swap(&system_info_.processor_revision); + // number_of_processors and product_type are 8-bit quantities and need no + // swapping. + Swap(&system_info_.major_version); + Swap(&system_info_.minor_version); + Swap(&system_info_.build_number); + Swap(&system_info_.platform_id); + Swap(&system_info_.csd_version_rva); + Swap(&system_info_.suite_mask); + Swap(&system_info_.reserved2); + // TODO(mmentovai): This obviously only supports x86 for the time being. + for (unsigned int i = 0; i < 3; ++i) + Swap(&system_info_.cpu.x86_cpu_info.vendor_id[i]); + Swap(&system_info_.cpu.x86_cpu_info.version_information); + Swap(&system_info_.cpu.x86_cpu_info.feature_information); + Swap(&system_info_.cpu.x86_cpu_info.amd_extended_cpu_features); + } + + valid_ = true; + return true; +} + + +const string* MinidumpSystemInfo::GetCSDVersion() { + if (!valid_) + return NULL; + + if (!csd_version_) + csd_version_ = minidump_->ReadString(system_info_.csd_version_rva); + + return csd_version_; +} + + +void MinidumpSystemInfo::Print() { + if (!valid_) + return; + + printf("MDRawSystemInfo\n"); + printf(" processor_architecture = %d\n", + system_info_.processor_architecture); + printf(" processor_level = %d\n", + system_info_.processor_level); + printf(" number_of_processors = %d\n", + system_info_.number_of_processors); + printf(" product_type = %d\n", + system_info_.product_type); + printf(" major_version = %d\n", + system_info_.major_version); + printf(" minor_version = %d\n", + system_info_.minor_version); + printf(" build_number = %d\n", + system_info_.build_number); + printf(" platform_id = %d\n", + system_info_.platform_id); + printf(" csd_version_rva = 0x%x\n", + system_info_.csd_version_rva); + printf(" suite_mask = 0x%x\n", + system_info_.suite_mask); + printf(" reserved2 = 0x%x\n", + system_info_.reserved2); + for (unsigned int i = 0; i < 3; ++i) { + printf(" cpu.x86_cpu_info.vendor_id[%d] = 0x%x\n", + i, system_info_.cpu.x86_cpu_info.vendor_id[i]); + } + printf(" cpu.x86_cpu_info.version_information = 0x%x\n", + system_info_.cpu.x86_cpu_info.version_information); + printf(" cpu.x86_cpu_info.feature_information = 0x%x\n", + system_info_.cpu.x86_cpu_info.feature_information); + printf(" cpu.x86_cpu_info.amd_extended_cpu_features = 0x%x\n", + system_info_.cpu.x86_cpu_info.amd_extended_cpu_features); + const char* csd_version = GetCSDVersion()->c_str(); + if (csd_version) + printf(" (csd_version) = \"%s\"\n", + csd_version); + else + printf(" (csd_version) = (null)\n"); + printf("\n"); +} + + +// +// MinidumpMiscInfo +// + + +MinidumpMiscInfo::MinidumpMiscInfo(Minidump* minidump) + : MinidumpStream(minidump) + , misc_info_() { +} + + +bool MinidumpMiscInfo::Read(u_int32_t expected_size) { + valid_ = false; + + if (expected_size != MD_MISCINFO_SIZE && + expected_size != MD_MISCINFO2_SIZE) { + return false; + } + + if (!minidump_->ReadBytes(&misc_info_, expected_size)) + return false; + + if (minidump_->swap()) { + Swap(&misc_info_.size_of_info); + Swap(&misc_info_.flags1); + Swap(&misc_info_.process_id); + Swap(&misc_info_.process_create_time); + Swap(&misc_info_.process_user_time); + Swap(&misc_info_.process_kernel_time); + if (misc_info_.size_of_info > MD_MISCINFO_SIZE) { + Swap(&misc_info_.processor_max_mhz); + Swap(&misc_info_.processor_current_mhz); + Swap(&misc_info_.processor_mhz_limit); + Swap(&misc_info_.processor_max_idle_state); + Swap(&misc_info_.processor_current_idle_state); + } + } + + if (misc_info_.size_of_info != expected_size) + return false; + + valid_ = true; + return true; +} + + +void MinidumpMiscInfo::Print() { + if (!valid_) + return; + + printf("MDRawMiscInfo\n"); + printf(" size_of_info = %d\n", misc_info_.size_of_info); + printf(" flags1 = 0x%x\n", misc_info_.flags1); + printf(" process_id = 0x%x\n", misc_info_.process_id); + printf(" process_create_time = 0x%x\n", + misc_info_.process_create_time); + printf(" process_user_time = 0x%x\n", + misc_info_.process_user_time); + printf(" process_kernel_time = 0x%x\n", + misc_info_.process_kernel_time); + if (misc_info_.size_of_info > MD_MISCINFO_SIZE) { + printf(" processor_max_mhz = %d\n", + misc_info_.processor_max_mhz); + printf(" processor_current_mhz = %d\n", + misc_info_.processor_current_mhz); + printf(" processor_mhz_limit = %d\n", + misc_info_.processor_mhz_limit); + printf(" processor_max_idle_state = 0x%x\n", + misc_info_.processor_max_idle_state); + printf(" processor_current_idle_state = 0x%x\n", + misc_info_.processor_current_idle_state); + } +} + + +// +// Minidump +// + + +Minidump::Minidump(int fd) + : header_() + , directory_(NULL) + , stream_map_(NULL) + , fd_(fd) + , swap_(false) + , valid_(false) { +} + + +Minidump::~Minidump() { + delete directory_; + delete stream_map_; +} + + +bool Minidump::Read() { + // Invalidate cached data. + delete directory_; + directory_ = NULL; + delete stream_map_; + stream_map_ = NULL; + + valid_ = false; + + if (!ReadBytes(&header_, sizeof(MDRawHeader))) + return false; + + if (header_.signature != MD_HEADER_SIGNATURE) { + // The file may be byte-swapped. Under the present architecture, these + // classes don't know or need to know what CPU (or endianness) the + // minidump was produced on in order to parse it. Use the signature as + // a byte order marker. + u_int32_t signature_swapped = header_.signature; + Swap(&signature_swapped); + if (signature_swapped != MD_HEADER_SIGNATURE) { + // This isn't a minidump or a byte-swapped minidump. + return false; + } + swap_ = true; + } else { + // The file is not byte-swapped. Set swap_ false (it may have been true + // if the object is being reused?) + swap_ = false; + } + + if (swap_) { + Swap(&header_.signature); + Swap(&header_.version); + Swap(&header_.stream_count); + Swap(&header_.stream_directory_rva); + Swap(&header_.checksum); + Swap(&header_.time_date_stamp); + Swap(&header_.flags); + } + + // Version check. The high 16 bits of header_.version contain something + // else "implementation specific." + if ((header_.version & 0x0000ffff) != MD_HEADER_VERSION) { + return false; + } + + if (!SeekSet(header_.stream_directory_rva)) + return false; + + // TODO(mmentovai): verify rational size! + auto_ptr<MinidumpDirectoryEntries> directory( + new MinidumpDirectoryEntries(header_.stream_count)); + + // Read the entire array in one fell swoop, instead of reading one entry + // at a time in the loop. + if (!ReadBytes(&(*directory)[0], + sizeof(MDRawDirectory) * header_.stream_count)) + return false; + + auto_ptr<MinidumpStreamMap> stream_map(new MinidumpStreamMap()); + + for (unsigned int stream_index = 0; + stream_index < header_.stream_count; + ++stream_index) { + MDRawDirectory* directory_entry = &(*directory)[stream_index]; + + if (swap_) { + Swap(&directory_entry->stream_type); + Swap(&directory_entry->location); + } + + // Initialize the stream_map map, which speeds locating a stream by + // type. + unsigned int stream_type = directory_entry->stream_type; + switch(stream_type) { + case THREAD_LIST_STREAM: + case MODULE_LIST_STREAM: + case MEMORY_LIST_STREAM: + case EXCEPTION_STREAM: + case SYSTEM_INFO_STREAM: + case MISC_INFO_STREAM: { + if (stream_map->find(stream_type) != stream_map->end()) { + // Another stream with this type was already found. A minidump + // file should contain at most one of each of these stream types. + return false; + } + // Fall through to default + } + + default: { + // Overwrites for stream types other than those above, but it's + // expected to be the user's burden in that case. + (*stream_map)[stream_type].stream_index = stream_index; + } + } + } + + directory_ = directory.release(); + stream_map_ = stream_map.release(); + + valid_ = true; + return true; +} + + +MinidumpThreadList* Minidump::GetThreadList() { + MinidumpThreadList* thread_list; + return GetStream(&thread_list); +} + + +MinidumpModuleList* Minidump::GetModuleList() { + MinidumpModuleList* module_list; + return GetStream(&module_list); +} + + +MinidumpMemoryList* Minidump::GetMemoryList() { + MinidumpMemoryList* memory_list; + return GetStream(&memory_list); +} + + +MinidumpException* Minidump::GetException() { + MinidumpException* exception; + return GetStream(&exception); +} + + +MinidumpSystemInfo* Minidump::GetSystemInfo() { + MinidumpSystemInfo* system_info; + return GetStream(&system_info); +} + + +MinidumpMiscInfo* Minidump::GetMiscInfo() { + MinidumpMiscInfo* misc_info; + return GetStream(&misc_info); +} + + +void Minidump::Print() { + if (!valid_) + return; + + printf("MDRawHeader\n"); + printf(" signature = 0x%x\n", header_.signature); + printf(" version = 0x%x\n", header_.version); + printf(" stream_count = %d\n", header_.stream_count); + printf(" stream_directory_rva = 0x%x\n", header_.stream_directory_rva); + printf(" checksum = 0x%x\n", header_.checksum); + struct tm* timestruct = localtime((time_t*)&header_.time_date_stamp); + char timestr[20]; + strftime(timestr, 20, "%Y-%m-%d %H:%M:%S", timestruct); + printf(" time_date_stamp = 0x%x %s\n", header_.time_date_stamp, + timestr); + printf(" flags = 0x%llx\n", header_.flags); + printf("\n"); + + for (unsigned int stream_index = 0; + stream_index < header_.stream_count; + ++stream_index) { + MDRawDirectory* directory_entry = &(*directory_)[stream_index]; + + printf("mDirectory[%d]\n", stream_index); + printf("MDRawDirectory\n"); + printf(" stream_type = %d\n", directory_entry->stream_type); + printf(" location.data_size = %d\n", + directory_entry->location.data_size); + printf(" location.rva = 0x%x\n", directory_entry->location.rva); + printf("\n"); + } + + printf("Streams:\n"); + for (MinidumpStreamMap::const_iterator iterator = stream_map_->begin(); + iterator != stream_map_->end(); + ++iterator) { + u_int32_t stream_type = iterator->first; + MinidumpStreamInfo info = iterator->second; + printf(" stream type %2d at index %d\n", stream_type, info.stream_index); + } + printf("\n"); +} + + +const MDRawDirectory* Minidump::GetDirectoryEntryAtIndex(unsigned int index) + const { + if (!valid_ || index >= header_.stream_count) + return NULL; + + return &(*directory_)[index]; +} + + +bool Minidump::ReadBytes(void* bytes, size_t count) { + // Can't check valid_ because Read needs to call this method before + // validity can be determined. The only member that this method + // depends on is mFD, and an unset or invalid fd may generate an + // error but should not cause a crash. + ssize_t bytes_read = read(fd_, bytes, count); + if (static_cast<size_t>(bytes_read) != count) + return false; + return true; +} + + +bool Minidump::SeekSet(off_t offset) { + // Can't check valid_ because Read needs to call this method before + // validity can be determined. The only member that this method + // depends on is mFD, and an unset or invalid fd may generate an + // error but should not cause a crash. + off_t sought = lseek(fd_, offset, SEEK_SET); + if (sought != offset) + return false; + return true; +} + + +string* Minidump::ReadString(off_t offset) { + if (!valid_) + return NULL; + if (!SeekSet(offset)) + return NULL; + + u_int32_t bytes; + if (!ReadBytes(&bytes, sizeof(bytes))) + return NULL; + if (swap_) + Swap(&bytes); + + if (bytes % 2 != 0) + return NULL; + unsigned int utf16_words = bytes / 2; + + // TODO(mmentovai): verify rational size! + vector<u_int16_t> string_utf16(utf16_words); + + if (!ReadBytes(&string_utf16[0], bytes)) + return NULL; + + return UTF16ToUTF8(string_utf16, swap_); +} + + +bool Minidump::SeekToStreamType(u_int32_t stream_type, + u_int32_t* stream_length) { + if (!valid_ || !stream_length) + return false; + + MinidumpStreamMap::const_iterator iterator = stream_map_->find(stream_type); + if (iterator == stream_map_->end()) { + // This stream type didn't exist in the directory. + return false; + } + + MinidumpStreamInfo info = iterator->second; + if (info.stream_index >= header_.stream_count) + return false; + + MDRawDirectory* directory_entry = &(*directory_)[info.stream_index]; + if (!SeekSet(directory_entry->location.rva)) + return false; + + *stream_length = directory_entry->location.data_size; + + return true; +} + + +template<typename T> +T* Minidump::GetStream(T** stream) { + // stream is a garbage parameter that's present only to account for C++'s + // inability to overload a method based solely on its return type. + + if (!stream) + return NULL; + *stream = NULL; + + if (!valid_) + return NULL; + + u_int32_t stream_type = T::kStreamType; + MinidumpStreamMap::iterator iterator = stream_map_->find(stream_type); + if (iterator == stream_map_->end()) { + // This stream type didn't exist in the directory. + return NULL; + } + + // Get a pointer so that the stored stream field can be altered. + MinidumpStreamInfo* info = &iterator->second; + + if (info->stream) { + // This cast is safe because info.stream is only populated by this + // method, and there is a direct correlation between T and stream_type. + *stream = static_cast<T*>(info->stream); + return *stream; + } + + u_int32_t stream_length; + if (!SeekToStreamType(stream_type, &stream_length)) + return NULL; + + auto_ptr<T> new_stream(new T(this)); + + if (!new_stream->Read(stream_length)) + return NULL; + + *stream = new_stream.release(); + info->stream = *stream; + return *stream; +} + + +} // namespace google_airbag diff --git a/src/processor/minidump.h b/src/processor/minidump.h new file mode 100644 index 00000000..bbef1c99 --- /dev/null +++ b/src/processor/minidump.h @@ -0,0 +1,699 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// minidump.h: A minidump reader. +// +// The basic structure of this module tracks the structure of the minidump +// file itself. At the top level, a minidump file is represented by a +// Minidump object. Like most other classes in this module, Minidump +// provides a Read method that initializes the object with information from +// the file. Most of the classes in this file are wrappers around the +// "raw" structures found in the minidump file itself, and defined in +// minidump_format.h. For example, each thread is represented by a +// MinidumpThread object, whose parameters are specified in an MDRawThread +// structure. A properly byte-swapped MDRawThread can be obtained from a +// MinidumpThread easily by calling its thread() method. +// +// Most of the module lazily reads only the portion of the minidump file +// necessary to fulfill the user's request. Calling Minidump::Read +// only reads the minidump's directory. The thread list is not read until +// it is needed, and even once it's read, the memory regions for each +// thread's stack aren't read until they're needed. This strategy avoids +// unnecessary file input, and allocating memory for data in which the user +// has no interest. Note that although memory allocations for a typical +// minidump file are not particularly large, it is possible for legitimate +// minidumps to be sizable. A full-memory minidump, for example, contains +// a snapshot of the entire mapped memory space. Even a normal minidump, +// with stack memory only, can be large if, for example, the dump was +// generated in response to a crash that occurred due to an infinite- +// recursion bug that caused the stack's limits to be exceeded. Finally, +// some users of this library will unfortunately find themselves in the +// position of having to process potentially-hostile minidumps that might +// attempt to cause problems by forcing the minidump processor to over- +// allocate memory. +// +// Memory management in this module is based on a strict +// you-don't-own-anything policy. The only object owned by the user is +// the top-level Minidump object, the creation and destruction of which +// must be the user's own responsibility. All other objects obtained +// through interaction with this module are ultimately owned by the +// Minidump object, and will be freed upon the Minidump object's destruction. +// Because memory regions can potentially involve large allocations, a +// FreeMemory method is provided by MinidumpMemoryRegion, allowing the user +// to release data when it is no longer needed. Use of this method is +// optional but recommended. If freed data is later required, it will +// be read back in from the minidump file again. +// +// There is one exception to this memory management policy: +// Minidump::ReadString will return a string object to the user, and the user +// is responsible for its deletion. +// +// Author: Mark Mentovai + +#ifndef PROCESSOR_MINIDUMP_H__ +#define PROCESSOR_MINIDUMP_H__ + + +// TODO(mmentovai): is it ok to include non-<string> header in .h? +#include <map> +#include <string> +#include <vector> + +#include "processor/minidump_format.h" +#include "processor/memory_region.h" +#include "processor/range_map.h" + + +namespace google_airbag { + + +using std::map; +using std::string; +using std::vector; + + +class Minidump; + + +// MinidumpObject is the base of all Minidump* objects except for Minidump +// itself. +class MinidumpObject { + public: + virtual ~MinidumpObject() {} + + protected: + MinidumpObject(Minidump* minidump); + + // Refers to the Minidump object that is the ultimate parent of this + // Some MinidumpObjects are owned by other MinidumpObjects, but at the + // root of the ownership tree is always a Minidump. The Minidump object + // is kept here for access to its seeking and reading facilities, and + // for access to data about the minidump file itself, such as whether + // it should be byte-swapped. + Minidump* minidump_; + + // MinidumpObjects are not valid when created. When a subclass populates + // its own fields, it can set valid_ to true. Accessors and mutators may + // wish to consider or alter the valid_ state as they interact with + // objects. + bool valid_; +}; + + +// This class exists primarily to provide a virtual destructor in a base +// class common to all objects that might be stored in +// Minidump::mStreamObjects. Some object types (MinidumpContext) will +// never be stored in Minidump::mStreamObjects, but are represented as +// streams and adhere to the same interface, and may be derived from +// this class. +class MinidumpStream : public MinidumpObject { + public: + virtual ~MinidumpStream() {} + + protected: + MinidumpStream(Minidump* minidump); + + private: + // Populate (and validate) the MinidumpStream. minidump_ is expected + // to be positioned at the beginning of the stream, so that the next + // read from the minidump will be at the beginning of the stream. + // expected_size should be set to the stream's length as contained in + // the MDRawDirectory record or other identifying record. A class + // that implements MinidumpStream can compare expected_size to a + // known size as an integrity check. + virtual bool Read(u_int32_t expected_size) = 0; +}; + + +// MinidumpContext carries a CPU-specific MDRawContext structure, which +// contains CPU context such as register states. Each thread has its +// own context, and the exception record, if present, also has its own +// context. Note that if the exception record is present, the context it +// refers to is probably what the user wants to use for the exception +// thread, instead of that thread's own context. The exception thread's +// context (as opposed to the exception record's context) will contain +// context for the exception handler (which performs minidump generation), +// and not the context that caused the exception (which is probably what the +// user wants). +class MinidumpContext : public MinidumpStream { + public: + const MDRawContextX86* context() const { + return valid_ ? &context_ : NULL; } + + // Print a human-readable representation of the object to stdout. + void Print(); + + private: + friend class MinidumpThread; + friend class MinidumpException; + + MinidumpContext(Minidump* minidump); + + bool Read(u_int32_t expected_size); + + // TODO(mmentovai): This is x86-only for now. When other CPUs are + // supported, this class can move to MinidumpContext_x86 and derive from + // a new abstract MinidumpContext. + MDRawContextX86 context_; +}; + + +// MinidumpMemoryRegion does not wrap any MDRaw structure, and only contains +// a reference to an MDMemoryDescriptor. This object is intended to wrap +// portions of a minidump file that contain memory dumps. In normal +// minidumps, each MinidumpThread owns a MinidumpMemoryRegion corresponding +// to the thread's stack memory. MinidumpMemoryList also gives access to +// memory regions in its list as MinidumpMemoryRegions. This class +// adheres to MemoryRegion so that it may be used as a data provider to +// the Stackwalker family of classes. +class MinidumpMemoryRegion : public MinidumpObject, + public MemoryRegion { + public: + ~MinidumpMemoryRegion(); + + // Returns a pointer to the base of the memory region. Returns the + // cached value if available, otherwise, reads the minidump file and + // caches the memory region. + const u_int8_t* GetMemory(); + + // The address of the base of the memory region. + u_int64_t GetBase(); + + // The size, in bytes, of the memory region. + u_int32_t GetSize(); + + // Frees the cached memory region, if cached. + void FreeMemory(); + + // Obtains the value of memory at the pointer specified by address. + bool GetMemoryAtAddress(u_int64_t address, u_int8_t* value); + bool GetMemoryAtAddress(u_int64_t address, u_int16_t* value); + bool GetMemoryAtAddress(u_int64_t address, u_int32_t* value); + bool GetMemoryAtAddress(u_int64_t address, u_int64_t* value); + + // Print a human-readable representation of the object to stdout. + void Print(); + + private: + friend class MinidumpThread; + friend class MinidumpMemoryList; + + MinidumpMemoryRegion(Minidump* minidump); + + // Identify the base address and size of the memory region, and the + // location it may be found in the minidump file. + void SetDescriptor(MDMemoryDescriptor* descriptor); + + // Implementation for GetMemoryAtAddress + template<typename T> bool GetMemoryAtAddressInternal(u_int64_t address, + T* value); + + // Base address and size of the memory region, and its position in the + // minidump file. + MDMemoryDescriptor* descriptor_; + + // Cached memory. + vector<u_int8_t>* memory_; +}; + + +// MinidumpThread contains information about a thread of execution, +// including a snapshot of the thread's stack and CPU context. For +// the thread that caused an exception, the context carried by +// MinidumpException is probably desired instead of the CPU context +// provided here. +class MinidumpThread : public MinidumpObject { + public: + ~MinidumpThread(); + + const MDRawThread* thread() const { return valid_ ? &thread_ : NULL; } + MinidumpMemoryRegion* GetMemory(); + MinidumpContext* GetContext(); + + // The thread ID is used to determine if a thread is the exception thread, + // so a special getter is provided to retrieve this data from the + // MDRawThread structure. + u_int32_t GetThreadID(); + + // Print a human-readable representation of the object to stdout. + void Print(); + + private: + // This objects are managed by MinidumpThreadList. + friend class MinidumpThreadList; + + MinidumpThread(Minidump* minidump); + + // This works like MinidumpStream::Read, but is driven by + // MinidumpThreadList. No size checking is done, because + // MinidumpThreadList handles that directly. + bool Read(); + + MDRawThread thread_; + MinidumpMemoryRegion* memory_; + MinidumpContext* context_; +}; + + +// MinidumpThreadList contains all of the threads (as MinidumpThreads) in +// a process. +class MinidumpThreadList : public MinidumpStream { + public: + ~MinidumpThreadList(); + + unsigned int thread_count() const { return valid_ ? thread_count_ : 0; } + + // Sequential access to threads. + MinidumpThread* GetThreadAtIndex(unsigned int index) const; + + // Random access to threads. + MinidumpThread* GetThreadByID(u_int32_t thread_id); + + // Print a human-readable representation of the object to stdout. + void Print(); + + private: + friend class Minidump; + + typedef map<u_int32_t, MinidumpThread*> IDToThreadMap; + typedef vector<MinidumpThread> MinidumpThreads; + + static const u_int32_t kStreamType = THREAD_LIST_STREAM; + + MinidumpThreadList(Minidump* aMinidump); + + bool Read(u_int32_t aExpectedSize); + + // Access to threads using the thread ID as the key. + IDToThreadMap id_to_thread_map_; + + // The list of threads. + MinidumpThreads* threads_; + u_int32_t thread_count_; +}; + + +// MinidumpModule wraps MDRawModule, which contains information about loaded +// code modules. Access is provided to various data referenced indirectly +// by MDRawModule, such as the module's name and a specification for where +// to locate debugging information for the module. +class MinidumpModule : public MinidumpObject { + public: + ~MinidumpModule(); + + const MDRawModule* module() const { return valid_ ? &module_ : 0; } + u_int64_t base_address() const { + return valid_ ? module_.base_of_image : static_cast<u_int64_t>(-1); } + u_int32_t size() const { return valid_ ? module_.size_of_image : 0; } + + // The name of the file containing this module's code (exe, dll, so, + // dylib). + const string* GetName(); + + // The CodeView record, which contains information to locate the module's + // debugging information (pdb). This is returned as u_int8_t* because + // the data can be one of two types: MDCVInfoPDB20* or MDCVInfoPDB70*. + // Check the record's signature in the first four bytes to differentiate. + // Current toolchains generate modules which carry MDCVInfoPDB70. + const u_int8_t* GetCVRecord(); + + // The miscellaneous debug record, which is obsolete. Current toolchains + // do not generate this type of debugging information (dbg), and this + // field is not expected to be present. + const MDImageDebugMisc* GetMiscRecord(); + + // The filename of the file containing debugging information for this + // module. This data is supplied by the CodeView record, if present, or + // the miscellaneous debug record. As such, it will reference either a + // pdb or dbg file. + const string* GetDebugFilename(); + + // Print a human-readable representation of the object to stdout. + void Print(); + + private: + // These objects are managed by MinidumpModuleList. + friend class MinidumpModuleList; + + MinidumpModule(Minidump* minidump); + + // This works like MinidumpStream::Read, but is driven by + // MinidumpModuleList. No size checking is done, because + // MinidumpModuleList handles that directly. + bool Read(); + + MDRawModule module_; + + // Cached module name. + const string* name_; + + // Cached CodeView record - this is MDCVInfoPDB20 or (likely) + // MDCVInfoPDB70. Stored as a u_int8_t because the structure contains + // a variable-sized string and its exact size cannot be known until it + // is processed. + vector<u_int8_t>* cv_record_; + + // Cached MDImageDebugMisc (usually not present), stored as u_int8_t + // because the structure contains a variable-sized string and its exact + // size cannot be known until it is processed. + vector<u_int8_t>* misc_record_; + + // Cached debug filename. + const string* debug_filename_; +}; + + +// MinidumpModuleList contains all of the loaded code modules for a process +// in the form of MinidumpModules. It maintains a map of these modules +// so that it may easily provide a code module corresponding to a specific +// address. +class MinidumpModuleList : public MinidumpStream { + public: + ~MinidumpModuleList(); + + unsigned int module_count() const { return valid_ ? module_count_ : 0; } + + // Sequential access to modules. + MinidumpModule* GetModuleAtIndex(unsigned int index) const; + + // Random access to modules. Returns the module whose code is present + // at the address identified by address. + MinidumpModule* GetModuleForAddress(u_int64_t address); + + // Print a human-readable representation of the object to stdout. + void Print(); + + private: + friend class Minidump; + + typedef vector<MinidumpModule> MinidumpModules; + + static const u_int32_t kStreamType = MODULE_LIST_STREAM; + + MinidumpModuleList(Minidump* minidump); + + bool Read(u_int32_t expected_size); + + // Access to modules using addresses as the key. + RangeMap<u_int64_t, unsigned int> range_map_; + + MinidumpModules* modules_; + u_int32_t module_count_; +}; + + +// MinidumpMemoryList corresponds to a minidump's MEMORY_LIST_STREAM stream, +// which references the snapshots of all of the memory regions contained +// within the minidump. For a normal minidump, this includes stack memory +// (also referenced by each MinidumpThread, in fact, the MDMemoryDescriptors +// here and in MDRawThread both point to exactly the same data in a +// minidump file, conserving space), as well as a 256-byte snapshot of memory +// surrounding the instruction pointer in the case of an exception. Other +// types of minidumps may contain significantly more memory regions. Full- +// memory minidumps contain all of a process' mapped memory. +class MinidumpMemoryList : public MinidumpStream { + public: + ~MinidumpMemoryList(); + + unsigned int region_count() const { return valid_ ? region_count_ : 0; } + + // Sequential access to memory regions. + MinidumpMemoryRegion* GetMemoryRegionAtIndex(unsigned int index); + + // Random access to memory regions. Returns the region encompassing + // the address identified by address. + MinidumpMemoryRegion* GetMemoryRegionForAddress(u_int64_t address); + + // Print a human-readable representation of the object to stdout. + void Print(); + + private: + friend class Minidump; + + typedef vector<MDMemoryDescriptor> MemoryDescriptors; + typedef vector<MinidumpMemoryRegion> MemoryRegions; + + static const u_int32_t kStreamType = MEMORY_LIST_STREAM; + + MinidumpMemoryList(Minidump* minidump); + + bool Read(u_int32_t expected_size); + + // Access to memory regions using addresses as the key. + RangeMap<u_int64_t, unsigned int> range_map_; + + // The list of descriptors. This is maintained separately from the list + // of regions, because MemoryRegion doesn't own its MemoryDescriptor, it + // maintains a pointer to it. descriptors_ provides the storage for this + // purpose. + MemoryDescriptors* descriptors_; + + // The list of regions. + MemoryRegions* regions_; + u_int32_t region_count_; +}; + + +// MinidumpException wraps MDRawExceptionStream, which contains information +// about the exception that caused the minidump to be generated, if the +// minidump was generated in an exception handler called as a result of +// an exception. It also provides access to a MinidumpContext object, +// which contains the CPU context for the exception thread at the time +// the exception occurred. +class MinidumpException : public MinidumpStream { + public: + ~MinidumpException(); + + const MDRawExceptionStream* exception() const { + return valid_ ? &exception_ : 0; } + + // The thread ID is used to determine if a thread is the exception thread, + // so a special getter is provided to retrieve this data from the + // MDRawExceptionStream structure. + u_int32_t GetThreadID(); + + MinidumpContext* GetContext(); + + // Print a human-readable representation of the object to stdout. + void Print(); + + private: + friend class Minidump; + + static const u_int32_t kStreamType = EXCEPTION_STREAM; + + MinidumpException(Minidump* minidump); + + bool Read(u_int32_t expected_size); + + MDRawExceptionStream exception_; + MinidumpContext* context_; +}; + + +// MinidumpSystemInfo wraps MDRawSystemInfo and provides information about +// the system on which the minidump was generated. See also MinidumpMiscInfo. +class MinidumpSystemInfo : public MinidumpStream { + public: + ~MinidumpSystemInfo(); + + const MDRawSystemInfo* system_info() const { + return valid_ ? &system_info_ : 0; } + + // I don't know what CSD stands for, but this field is documented as + // returning a textual representation of the OS service pack. + const string* GetCSDVersion(); + + // Print a human-readable representation of the object to stdout. + void Print(); + + private: + friend class Minidump; + + static const u_int32_t kStreamType = SYSTEM_INFO_STREAM; + + MinidumpSystemInfo(Minidump* minidump); + + bool Read(u_int32_t expected_size); + + MDRawSystemInfo system_info_; + + // Textual representation of the OS service pack, for minidumps produced + // by MiniDumpWriteDump on Windows. + const string* csd_version_; +}; + + +// MinidumpMiscInfo wraps MDRawMiscInfo and provides information about +// the process that generated the minidump, and optionally additional system +// information. See also MinidumpSystemInfo. +class MinidumpMiscInfo : public MinidumpStream { + public: + const MDRawMiscInfo* misc_info() const { + return valid_ ? &misc_info_ : 0; } + + // Print a human-readable representation of the object to stdout. + void Print(); + + private: + friend class Minidump; + + static const u_int32_t kStreamType = MISC_INFO_STREAM; + + MinidumpMiscInfo(Minidump* minidump_); + + bool Read(u_int32_t expected_size_); + + MDRawMiscInfo misc_info_; +}; + + +// Minidump is the user's interface to a minidump file. It wraps MDRawHeader +// and provides access to the minidump's top-level stream directory. +class Minidump { + public: + // fd is a randomly seekable file descriptor that is open and is + // positioned at the beginning of the MDRawHeader structure (byte offset + // 0). + Minidump(int fd); + + ~Minidump(); + + const MDRawHeader* header() const { return valid_ ? &header_ : 0; } + + // Reads the minidump file's header and top-level stream directory. + // The minidump is expected to be positioned at the beginning of the + // header. Read() sets up the stream list and map, and validates the + // Minidump object. + bool Read(); + + // The next 6 methods are stubs that call GetStream. They exist to + // force code generation of the templatized API within the module, and + // to avoid exposing an ugly API (GetStream needs to accept a garbage + // parameter). + MinidumpThreadList* GetThreadList(); + MinidumpModuleList* GetModuleList(); + MinidumpMemoryList* GetMemoryList(); + MinidumpException* GetException(); + MinidumpSystemInfo* GetSystemInfo(); + MinidumpMiscInfo* GetMiscInfo(); + + // The next set of methods are provided for users who wish to access + // data in minidump files directly, while leveraging the rest of + // this class and related classes to handle the basic minidump + // structure and known stream types. + + unsigned int GetDirectoryEntryCount() const { + return valid_ ? header_.stream_count : 0; } + const MDRawDirectory* GetDirectoryEntryAtIndex(unsigned int index) const; + + // The next 2 methods are lower-level I/O routines. They use fd_. + + // Reads count bytes from the minidump at the current position into + // the storage area pointed to by bytes. bytes must be of sufficient + // size. After the read, the file position is advanced by count. + bool ReadBytes(void* bytes, size_t count); + + // Sets the position of the minidump file to offset. + bool SeekSet(off_t offset); + + // The next 2 methods are medium-level I/O routines. + + // ReadString returns a string which is owned by the caller! offset + // specifies the offset that a length-encoded string is stored at in the + // minidump file. + string* ReadString(off_t offset); + + // SeekToStreamType positions the file at the beginning of a stream + // identified by stream_type, and informs the caller of the stream's + // length by setting *stream_length. Because stream_map maps each stream + // type to only one stream in the file, this might mislead the user into + // thinking that the stream that this seeks to is the only stream with + // type stream_type. That can't happen for streams that these classes + // deal with directly, because they're only supposed to be present in the + // file singly, and that's verified when stream_map_ is built. Users who + // are looking for other stream types should be aware of this + // possibility, and consider using GetDirectoryEntryAtIndex (possibly + // with GetDirectoryEntryCount) if expecting multiple streams of the same + // type in a single minidump file. + bool SeekToStreamType(u_int32_t stream_type, u_int32_t* stream_length); + + // Print a human-readable representation of the object to stdout. + void Print(); + + private: + // These classes are friends to give them access to this class' file + // I/O utility routines. + friend class MinidumpContext; + friend class MinidumpMemoryRegion; + friend class MinidumpThread; + friend class MinidumpThreadList; + friend class MinidumpModule; + friend class MinidumpModuleList; + friend class MinidumpMemoryList; + friend class MinidumpException; + friend class MinidumpSystemInfo; + friend class MinidumpMiscInfo; + + // MinidumpStreamInfo is used in the MinidumpStreamMap. It lets + // the Minidump object locate interesting streams quickly, and + // provides a convenient place to stash MinidumpStream objects. + struct MinidumpStreamInfo { + MinidumpStreamInfo() + : stream_index(0) + , stream(NULL) {} + ~MinidumpStreamInfo() { delete stream; } + + // Index into the MinidumpDirectoryEntries vector + unsigned int stream_index; + + // Pointer to the stream if cached, or NULL if not yet populated + MinidumpStream* stream; + }; + + typedef vector<MDRawDirectory> MinidumpDirectoryEntries; + typedef map<u_int32_t, MinidumpStreamInfo> MinidumpStreamMap; + + bool swap() const { return valid_ ? swap_ : false; } + + template<typename T> T* GetStream(T** stream); + + MDRawHeader header_; + + // The list of streams. + MinidumpDirectoryEntries* directory_; + + // Access to streams using the stream type as the key. + MinidumpStreamMap* stream_map_; + + // The file descriptor for all file I/O. Used by ReadBytes and SeekSet. + int fd_; + + // swap_ is true if the minidump file should be byte-swapped. If the + // minidump was produced by a CPU that is other-endian than the CPU + // processing the minidump, this will be true. If the two CPUs are + // same-endian, this will be false. + bool swap_; + + // Validity of the Minidump structure, false immediately after + // construction or after a failed Read(); true following a successful + // Read(). + bool valid_; +}; + + +} // namespace google_airbag + + +#endif // PROCESSOR_MINIDUMP_H__ diff --git a/src/processor/minidump_dump.cc b/src/processor/minidump_dump.cc new file mode 100644 index 00000000..cf707b54 --- /dev/null +++ b/src/processor/minidump_dump.cc @@ -0,0 +1,110 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// minidump_dump.cc: Print the contents of a minidump file in somewhat +// readable text. +// +// Author: Mark Mentovai + +#include <errno.h> +#include <fcntl.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#ifndef _WIN32 +#include <unistd.h> +#define O_BINARY 0 +#else // !_WIN32 +#include <io.h> +#define open _open +#endif // !_WIN32 + +#include "processor/minidump.h" + + +using namespace google_airbag; + + +int main(int argc, char** argv) { + if (argc != 2) { + fprintf(stderr, "usage: %s <file>\n", argv[0]); + exit(1); + } + + int fd = open(argv[1], O_RDONLY | O_BINARY); + if (fd == -1) { + printf("open failed\n"); + exit(1); + } + + Minidump minidump(fd); + if (!minidump.Read()) { + printf("minidump.Read() failed\n"); + exit(1); + } + minidump.Print(); + + int error = 0; + + MinidumpThreadList* threadList = minidump.GetThreadList(); + if (!threadList) { + error |= 1 << 2; + printf("minidump.GetThreadList() failed\n"); + } else { + threadList->Print(); + } + + MinidumpModuleList* moduleList = minidump.GetModuleList(); + if (!moduleList) { + error |= 1 << 3; + printf("minidump.GetModuleList() failed\n"); + } else { + moduleList->Print(); + } + + MinidumpMemoryList* memoryList = minidump.GetMemoryList(); + if (!memoryList) { + error |= 1 << 4; + printf("minidump.GetMemoryList() failed\n"); + } else { + memoryList->Print(); + } + + MinidumpException* exception = minidump.GetException(); + if (!exception) { + error |= 1 << 5; + printf("minidump.GetException() failed\n"); + } else { + exception->Print(); + } + + MinidumpSystemInfo* systemInfo = minidump.GetSystemInfo(); + if (!systemInfo) { + error |= 1 << 6; + printf("minidump.GetSystemInfo() failed\n"); + } else { + systemInfo->Print(); + } + + MinidumpMiscInfo* miscInfo = minidump.GetMiscInfo(); + if (!miscInfo) { + error |= 1 << 7; + printf("minidump.GetMiscInfo() failed\n"); + } else { + miscInfo->Print(); + } + + // Use return instead of exit to allow destructors to run. + return(error); +} diff --git a/src/processor/minidump_dump_test b/src/processor/minidump_dump_test new file mode 100755 index 00000000..a35edfff --- /dev/null +++ b/src/processor/minidump_dump_test @@ -0,0 +1,6 @@ +#!/bin/sh +testdata_dir=$srcdir/src/processor/testdata +./src/processor/minidump_dump $testdata_dir/minidump1.dmp | \ + tr -s '\015' '\012' | \ + diff -u $testdata_dir/minidump1.out - +exit $? diff --git a/src/processor/minidump_format.h b/src/processor/minidump_format.h new file mode 100644 index 00000000..af24c6fb --- /dev/null +++ b/src/processor/minidump_format.h @@ -0,0 +1,555 @@ +/* Copyright (C) 2006 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ + +/* minidump_format.h: A cross-platform reimplementation of minidump-related + * portions of DbgHelp.h from the Windows Platform SDK. + * + * (This is C99 source, please don't corrupt it with C++.) + * + * This file contains the necessary definitions to read minidump files + * produced on win32/x86. These files may be read on any platform provided + * that the alignments of these structures on the processing system are + * identical to the alignments of these structures on the producing system. + * For this reason, precise-sized types are used. The structures defined by + * by this file have been laid out to minimize alignment problems by ensuring + * ensuring that all members are aligned on their natural boundaries. In + * In some cases, tail-padding may be significant when different ABIs specify + * different tail-padding behaviors. To avoid problems when reading or + * writing affected structures, MD_*_SIZE macros are provided where needed, + * containing the useful size of the structures without padding. + * + * These structures are also sufficient to populate minidump files. + * + * These definitions may be extended to support handling minidump files + * for other CPUs and other operating systems. + * + * Because precise data type sizes are crucial for this implementation to + * function properly and portably in terms of interoperability with minidumps + * produced by DbgHelp on Windows, a set of primitive types with known sizes + * are used as the basis of each structure defined by this file. DbgHelp + * on Windows is assumed to be the reference implementation; this file + * seeks to provide a cross-platform compatible implementation. To avoid + * collisions with the types and values defined and used by DbgHelp in the + * event that this implementation is used on Windows, each type and value + * defined here is given a new name, beginning with "MD". Names of the + * equivlaent types and values in the Windows Platform SDK are given in + * comments. + * + * Author: Mark Mentovai */ + + +#ifndef PROCESSOR_MINIDUMP_FORMAT_H__ +#define PROCESSOR_MINIDUMP_FORMAT_H__ + + +#include "google/airbag_types.h" + + +/* + * guiddef.h + */ + + +typedef struct { + u_int32_t data1; + u_int16_t data2; + u_int16_t data3; + u_int8_t data4[8]; +} MDGUID; /* GUID */ + + +/* + * WinNT.h + */ + + +#define MD_FLOATINGSAVEAREA_SIZEOF_REGISTERAREA_X86 80 + /* SIZE_OF_80387_REGISTERS */ + +typedef struct { + u_int32_t control_word; + u_int32_t status_word; + u_int32_t tag_word; + u_int32_t error_offset; + u_int32_t error_selector; + u_int32_t data_offset; + u_int32_t data_selector; + u_int8_t register_area[MD_FLOATINGSAVEAREA_SIZEOF_REGISTERAREA_X86]; + u_int32_t cr0_npx_state; +} MDFloatingSaveAreaX86; /* FLOATING_SAVE_AREA */ + + +#define MD_CONTEXT_SIZEOF_EXTENDED_REGISTERS_X86 512 + /* MAXIMUM_SUPPORTED_EXTENSION */ + +typedef struct { + /* The next field determines the layout of the structure, and what parts + * of it are populated */ + u_int32_t context_flags; + + /* The next 6 registers are included with MD_CONTEXT_X86_DEBUG_REGISTERS */ + u_int32_t dr0; + u_int32_t dr1; + u_int32_t dr2; + u_int32_t dr3; + u_int32_t dr6; + u_int32_t dr7; + + /* The next field is included with MD_CONTEXT_X86_FLOATING_POINT */ + MDFloatingSaveAreaX86 float_save; + + /* The next 4 registers are included with MD_CONTEXT_X86_SEGMENTS */ + u_int32_t gs; + u_int32_t fs; + u_int32_t es; + u_int32_t ds; + /* The next 6 registers are included with MD_CONTEXT_X86_INTEGER */ + u_int32_t edi; + u_int32_t esi; + u_int32_t ebx; + u_int32_t edx; + u_int32_t ecx; + u_int32_t eax; + + /* The next 6 registers are included with MD_CONTEXT_X86_CONTROL */ + u_int32_t ebp; + u_int32_t eip; + u_int32_t cs; /* WinNT.h says "must be sanitized" */ + u_int32_t eflags; /* WinNT.h says "must be sanitized" */ + u_int32_t esp; + u_int32_t ss; + + /* The next field is included with MD_CONTEXT_X86_EXTENDED_REGISTERS */ + u_int8_t extended_registers[ + MD_CONTEXT_SIZEOF_EXTENDED_REGISTERS_X86]; +} MDRawContextX86; /* CONTEXT */ + +/* For (MDRawContextX86).context_flags. These values indicate the type of + * context stored in the structure. */ +#define MD_CONTEXT_X86_X86 0x00010000 + /* CONTEXT_i386, CONTEXT_i486: identifies CPU */ +#define MD_CONTEXT_X86_CONTROL (MD_CONTEXT_X86_X86 | 0x00000001) + /* CONTEXT_CONTROL */ +#define MD_CONTEXT_X86_INTEGER (MD_CONTEXT_X86_X86 | 0x00000002) + /* CONTEXT_INTEGER */ +#define MD_CONTEXT_X86_SEGMENTS (MD_CONTEXT_X86_X86 | 0x00000004) + /* CONTEXT_SEGMENTS */ +#define MD_CONTEXT_X86_FLOATING_POINT (MD_CONTEXT_X86_X86 | 0x00000008) + /* CONTEXT_FLOATING_POINT */ +#define MD_CONTEXT_X86_DEBUG_REGISTERS (MD_CONTEXT_X86_X86 | 0x00000010) + /* CONTEXT_DEBUG_REGISTERS */ +#define MD_CONTEXT_X86_EXTENED_REGISTERS (MD_CONTEXT_X86_X86 | 0x00000020) + /* CONTEXT_EXTENDED_REGISTERS */ + +#define MD_CONTEXT_X86_FULL (MD_CONTEXT_X86_CONTROL | \ + MD_CONTEXT_X86_INTEGER | \ + MD_CONTEXT_X86_SEGMENTS) + /* CONTEXT_FULL */ + +#define MD_CONTEXT_X86_ALL (MD_CONTEXT_X86_FULL | \ + MD_CONTEXT_X86_FLOATING_POINT | \ + MD_CONTEXT_X86_DEBUG_REGISTERS | \ + MD_CONTEXT_X86_EXTENDED_REGISTERS) + /* CONTEXT_ALL */ + + +/* + * WinVer.h + */ + + +typedef struct { + u_int32_t signature; + u_int32_t struct_version; + u_int32_t file_version_hi; + u_int32_t file_version_lo; + u_int32_t product_version_hi; + u_int32_t product_version_lo; + u_int32_t file_flags_mask; /* Identifies valid bits in fileFlags */ + u_int32_t file_flags; + u_int32_t file_os; + u_int32_t file_type; + u_int32_t file_subtype; + u_int32_t file_date_hi; + u_int32_t file_date_lo; +} MDVSFixedFileInfo; /* VS_FIXEDFILEINFO */ + +/* For (MDVSFixedFileInfo).signature */ +#define MD_VSFIXEDFILEINFO_SIGNATURE 0xfeef04bd + /* VS_FFI_SIGNATURE */ + +/* For (MDVSFixedFileInfo).version */ +#define MD_VSFIXEDFILEINFO_VERSION 0x00010000 + /* VS_FFI_STRUCVERSION */ + +/* For (MDVSFixedFileInfo).file_flags_mask and + * (MDVSFixedFileInfo).file_flags */ +#define MD_VSFIXEDFILEINFO_FILE_FLAGS_DEBUG 0x00000001 + /* VS_FF_DEBUG */ +#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PRERELEASE 0x00000002 + /* VS_FF_PRERELEASE */ +#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PATCHED 0x00000004 + /* VS_FF_PATCHED */ +#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PRIVATEBUILD 0x00000008 + /* VS_FF_PRIVATEBUILD */ +#define MD_VSFIXEDFILEINFO_FILE_FLAGS_INFOINFERRED 0x00000010 + /* VS_FF_INFOINFERRED */ +#define MD_VSFIXEDFILEINFO_FILE_FLAGS_SPECIALBUILD 0x00000020 + /* VS_FF_SPECIALBUILD */ + +/* For (MDVSFixedFileInfo).file_os: high 16 bits */ +#define MD_VSFIXEDFILEINFO_FILE_OS_UNKNOWN 0 /* VOS_UNKNOWN */ +#define MD_VSFIXEDFILEINFO_FILE_OS_DOS (1 << 16) /* VOS_DOS */ +#define MD_VSFIXEDFILEINFO_FILE_OS_OS216 (2 << 16) /* VOS_OS216 */ +#define MD_VSFIXEDFILEINFO_FILE_OS_OS232 (3 << 16) /* VOS_OS232 */ +#define MD_VSFIXEDFILEINFO_FILE_OS_NT (4 << 16) /* VOS_NT */ +#define MD_VSFIXEDFILEINFO_FILE_OS_WINCE (5 << 16) /* VOS_WINCE */ +/* Low 16 bits */ +#define MD_VSFIXEDFILEINFO_FILE_OS__BASE 0 /* VOS__BASE */ +#define MD_VSFIXEDFILEINFO_FILE_OS__WINDOWS16 1 /* VOS__WINDOWS16 */ +#define MD_VSFIXEDFILEINFO_FILE_OS__PM16 2 /* VOS__PM16 */ +#define MD_VSFIXEDFILEINFO_FILE_OS__PM32 3 /* VOS__PM32 */ +#define MD_VSFIXEDFILEINFO_FILE_OS__WINDOWS32 4 /* VOS__WINDOWS32 */ + +/* For (MDVSFixedFileInfo).file_type */ +#define MD_VSFIXEDFILEINFO_FILE_TYPE_UNKNOWN 0 /* VFT_UNKNOWN */ +#define MD_VSFIXEDFILEINFO_FILE_TYPE_APP 1 /* VFT_APP */ +#define MD_VSFIXEDFILEINFO_FILE_TYPE_DLL 2 /* VFT_DLL */ +#define MD_VSFIXEDFILEINFO_FILE_TYPE_DRV 3 /* VFT_DLL */ +#define MD_VSFIXEDFILEINFO_FILE_TYPE_FONT 4 /* VFT_FONT */ +#define MD_VSFIXEDFILEINFO_FILE_TYPE_VXD 5 /* VFT_VXD */ +#define MD_VSFIXEDFILEINFO_FILE_TYPE_STATIC_LIB 7 /* VFT_STATIC_LIB */ + +/* For (MDVSFixedFileInfo).file_subtype */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_UNKNOWN 0 + /* VFT2_UNKNOWN */ +/* with file_type = MD_VSFIXEDFILEINFO_FILETYPE_DRV */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_PRINTER 1 + /* VFT2_DRV_PRINTER */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_KEYBOARD 2 + /* VFT2_DRV_KEYBOARD */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_LANGUAGE 3 + /* VFT2_DRV_LANGUAGE */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_DISPLAY 4 + /* VFT2_DRV_DISPLAY */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_MOUSE 5 + /* VFT2_DRV_MOUSE */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_NETWORK 6 + /* VFT2_DRV_NETWORK */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_SYSTEM 7 + /* VFT2_DRV_SYSTEM */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_INSTALLABLE 8 + /* VFT2_DRV_INSTALLABLE */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_SOUND 9 + /* VFT2_DRV_SOUND */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_COMM 10 + /* VFT2_DRV_COMM */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_INPUTMETHOD 11 + /* VFT2_DRV_INPUTMETHOD */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_VERSIONED_PRINTER 12 + /* VFT2_DRV_VERSIONED_PRINTER */ +/* with file_type = MD_VSFIXEDFILEINFO_FILETYPE_FONT */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_RASTER 1 + /* VFT2_FONT_RASTER */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_VECTOR 2 + /* VFT2_FONT_VECTOR */ +#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_TRUETYPE 3 + /* VFT2_FONT_TRUETYPE */ + + +/* + * DbgHelp.h + */ + + +typedef u_int32_t MDRVA; /* RVA */ + + +typedef struct { + u_int32_t data_size; + MDRVA rva; +} MDLocationDescriptor; /* MINIDUMP_LOCATION_DESCRIPTOR */ + + +typedef struct { + u_int64_t start_of_memory_range; + MDLocationDescriptor memory; +} MDMemoryDescriptor; /* MINIDUMP_MEMORY_DESCRIPTOR */ + + +typedef struct { + u_int32_t signature; + u_int32_t version; + u_int32_t stream_count; + MDRVA stream_directory_rva; + u_int32_t checksum; + u_int32_t time_date_stamp; /* time_t */ + u_int64_t flags; +} MDRawHeader; /* MINIDUMP_HEADER */ + +/* For (MDRawHeader).signature and (MDRawHeader).version. Note that only the + * low 16 bits of (MDRawHeader).version are MD_HEADER_VERSION. Per the + * documentation, the high 16 bits are implementation-specific. */ +#define MD_HEADER_SIGNATURE 0x504d444d /* 'PMDM' */ + /* MINIDUMP_SIGNATURE */ +#define MD_HEADER_VERSION 0x0000a793 /* 42899 */ + /* MINIDUMP_VERSION */ + +/* For (MDRawHeader).flags */ +typedef enum { + MINIDUMP_NORMAL = 0x00000000, + MINIDUMP_WITH_DATA_SEGS = 0x00000001, + MINIDUMP_WITH_FULL_MEMORY = 0x00000002, + MINIDUMP_WITH_HANDLE_DATA = 0x00000004, + MINIDUMP_FILTER_MEMORY = 0x00000008, + MINIDUMP_SCAN_MEMORY = 0x00000010, + MINIDUMP_WITH_UNLOADED_MODULES = 0x00000020, + MINIDUMP_WITH_INDIRECTLY_REFERENCED_MEMORY = 0X00000040, + MINIDUMP_FILTER_MODULE_PATHS = 0x00000080, + MINIDUMP_WITH_PROCESS_THREAD_DATA = 0x00000100, + MINIDUMP_WITH_PRIVATE_READ_WRITE_MEMORY = 0x00000200, + MINIDUMP_WITHOUT_OPTIONAL_DATA = 0x00000400, + MINIDUMP_WITH_FULL_MEMORY_INFO = 0x00000800, + MINIDUMP_WITH_THREAD_INFO = 0x00001000, + MINIDUMP_WITH_CODE_SEGS = 0x00002000 +} MDType; /* MINIDUMP_TYPE */ + + +typedef struct { + u_int32_t stream_type; + MDLocationDescriptor location; +} MDRawDirectory; /* MINIDUMP_DIRECTORY */ + +/* For (MDRawDirectory).stream_type */ +typedef enum { + UNUSED_STREAM = 0, + RESERVED_STREAM_0 = 1, + RESERVED_STREAM_1 = 2, + THREAD_LIST_STREAM = 3, + MODULE_LIST_STREAM = 4, + MEMORY_LIST_STREAM = 5, + EXCEPTION_STREAM = 6, + SYSTEM_INFO_STREAM = 7, + THREAD_EX_LIST_STREAM = 8, + MEMORY_64_LIST_STREAM = 9, + COMMENT_STREAM_A = 10, + COMMENT_STREAM_W = 11, + HANDLE_DATA_STREAM = 12, + FUNCTION_TABLE_STREAM = 13, + UNLOADED_MODULE_LIST_STREAM = 14, + MISC_INFO_STREAM = 15, + LAST_RESERVED_STREAM = 0x0000FFFF +} MDStreamType; /* MINIDUMP_STREAM_TYPE */ + + +typedef struct { + u_int32_t thread_id; + u_int32_t suspend_count; + u_int32_t priority_class; + u_int32_t priority; + u_int64_t teb; /* Thread environment block */ + MDMemoryDescriptor stack; + MDLocationDescriptor thread_context; +} MDRawThread; /* MINIDUMP_THREAD */ + + +typedef struct { + u_int32_t number_of_threads; + MDRawThread threads[0]; +} MDRawThreadList; /* MINIDUMP_THREAD_LIST */ + + +typedef struct { + u_int64_t base_of_image; + u_int32_t size_of_image; + u_int32_t checksum; + u_int32_t time_date_stamp; + MDRVA module_name_rva; + MDVSFixedFileInfo version_info; + + /* The next field stores a CodeView record and is populated when a module's + * debug information resides in a PDB file. It identifies the PDB file. */ + MDLocationDescriptor cv_record; + + /* The next field is populated when a module's debug information resides + * in a DBG file. It identifies the DBG file. This field is effectively + * obsolete with modules built by recent toolchains. */ + MDLocationDescriptor misc_record; + + /* Alignment problem: reserved0 and reserved1 are defined by the platform + * SDK as 64-bit quantities. However, that results in a structure whose + * alignment is unpredictable on different CPUs and ABIs. If the ABI + * specifies full alignment of 64-bit quantities in structures (as ppc + * does), there will be padding between miscRecord and reserved0. If + * 64-bit quantities can be aligned on 32-bit boundaries (as on x86), + * this padding will not exist. (Note that the structure up to this point + * contains 1 64-bit member followed by 21 32-bit members.) + * As a workaround, reserved0 and reserved1 are instead defined here as + * four 32-bit quantities. This should be harmless, as there are + * currently no known uses for these fields. */ + u_int32_t reserved0[2]; + u_int32_t reserved1[2]; +} MDRawModule; /* MINIDUMP_MODULE */ + +/* The inclusion of a 64-bit type in MINIDUMP_MODULE forces the struct to + * be tail-padded out to a multiple of 64 bits under some ABIs (such as PPC). + * This doesn't occur on systems that don't tail-pad in this manner. Define + * this macro to be the usable size of the MDRawModule struct, and use it in + * place of sizeof(MDRawModule). */ +#define MD_MODULE_SIZE 108 + + +/* (MDRawModule).cv_record can reference MDCVInfoPDB20 or MDCVInfoPDB70. + * Ref.: http://www.debuginfo.com/articles/debuginfomatch.html + * MDCVInfoPDB70 is the expected structure type with recent toolchains. */ + +typedef struct { + u_int32_t signature; + u_int32_t offset; /* Offset to debug data (expect 0 in minidump) */ +} MDCVHeader; + +typedef struct { + MDCVHeader cv_header; + u_int32_t signature; /* time_t debug information created */ + u_int32_t age; /* revision of PDB file */ + u_int8_t pdb_file_name[0]; +} MDCVInfoPDB20; + +#define MD_CVINFOPDB20_SIGNATURE 0x3031424e /* cvHeader.signature = '01BN' */ + +typedef struct { + u_int32_t cv_signature; + MDGUID signature; /* GUID, identifies PDB file */ + u_int32_t age; /* Identifies incremental changes to PDB file */ + u_int8_t pdb_file_name[0]; /* 0-terminated 8-bit character data (UTF-8?) */ +} MDCVInfoPDB70; + +#define MD_CVINFOPDB70_SIGNATURE 0x53445352 /* cvSignature = 'SDSR' */ + +/* (MDRawModule).miscRecord can reference MDImageDebugMisc. The Windows + * structure is actually defined in WinNT.h. This structure is effectively + * obsolete with modules built by recent toolchains. */ + +typedef struct { + u_int32_t data_type; + u_int32_t length; + u_int8_t unicode; + u_int8_t reserved[3]; + u_int8_t data[0]; +} MDImageDebugMisc; /* IMAGE_DEBUG_MISC */ + + +typedef struct { + u_int32_t number_of_modules; + MDRawModule modules[0]; +} MDRawModuleList; /* MINIDUMP_MODULE_LIST */ + + +typedef struct { + u_int32_t number_of_memory_ranges; + MDMemoryDescriptor memory_ranges[0]; +} MDRawMemoryList; /* MINIDUMP_MEMORY_LIST */ + + +#define MD_EXCEPTION_MAXIMUM_PARAMETERS 15 + +typedef struct { + u_int32_t exception_code; + u_int32_t exception_flags; + u_int64_t exception_record; + u_int64_t exception_address; + u_int32_t number_parameters; + u_int32_t __align; + u_int64_t exception_information[MD_EXCEPTION_MAXIMUM_PARAMETERS]; +} MDException; /* MINIDUMP_EXCEPTION */ + + +typedef struct { + u_int32_t thread_id; + u_int32_t __align; + MDException exception_record; + MDLocationDescriptor thread_context; +} MDRawExceptionStream; /* MINIDUMP_EXCEPTION_STREAM */ + + +typedef union { + struct { + u_int32_t vendor_id[3]; /* cpuid 0: eax, ebx, ecx */ + u_int32_t version_information; /* cpuid 1: eax */ + u_int32_t feature_information; /* cpuid 1: edx */ + u_int32_t amd_extended_cpu_features; /* cpuid 0x80000001, ebx */ + } x86_cpu_info; + struct { + u_int64_t processor_features[2]; + } other_cpu_info; +} MDCPUInformation; /* CPU_INFORMATION */ + + +typedef struct { + /* The next 3 fields and numberOfProcessors are from the SYSTEM_INFO + * structure as returned by GetSystemInfo */ + u_int16_t processor_architecture; + u_int16_t processor_level; + u_int16_t processor_revision; + union { + u_int16_t reserved0; + struct { + u_int8_t number_of_processors; + u_int8_t product_type; + }; + }; + + /* The next 5 fields are from the OSVERSIONINFO structure as returned + * by GetVersionEx */ + u_int32_t major_version; + u_int32_t minor_version; + u_int32_t build_number; + u_int32_t platform_id; + MDRVA csd_version_rva; /* Name of the installed OS service pack */ + + union { + u_int32_t reserved1; + struct { + u_int16_t suite_mask; + u_int16_t reserved2; + }; + }; + MDCPUInformation cpu; +} MDRawSystemInfo; /* MINIDUMP_SYSTEM_INFO */ + + +typedef struct { + u_int32_t size_of_info; + u_int32_t flags1; + u_int32_t process_id; + u_int32_t process_create_time; + u_int32_t process_user_time; + u_int32_t process_kernel_time; + + /* The following fields are not present in MINIDUMP_MISC_INFO but are + * in MINIDUMP_MISC_INFO_2. When this struct is populated, these values + * may not be set. Use flags1 or sizeOfInfo to determine whether these + * values are present. */ + u_int32_t processor_max_mhz; + u_int32_t processor_current_mhz; + u_int32_t processor_mhz_limit; + u_int32_t processor_max_idle_state; + u_int32_t processor_current_idle_state; +} MDRawMiscInfo; /* MINIDUMP_MISC_INFO, MINIDUMP_MISC_INFO2 */ + +#define MD_MISCINFO_SIZE 24 +#define MD_MISCINFO2_SIZE 44 + + +#endif /* PROCESSOR_MINIDUMP_FORMAT_H__ */ diff --git a/src/processor/range_map.h b/src/processor/range_map.h new file mode 100644 index 00000000..a55efb13 --- /dev/null +++ b/src/processor/range_map.h @@ -0,0 +1,158 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// range_map.h: Range maps. +// +// A range map associates a range of addresses with a specific object. This +// is useful when certain objects of variable size are located within an +// address space. The range map makes it simple to determine which object is +// associated with a specific address, which may be any address within the +// range associated with an object. +// +// Author: Mark Mentovai + +#ifndef PROCESSOR_RANGE_MAP_H__ +#define PROCESSOR_RANGE_MAP_H__ + + +#include <map> + + +namespace google_airbag { + + +using std::map; + + +template<typename AddressType, typename EntryType> +class RangeMap { + public: + RangeMap() : map_() {} + + // Inserts a range into the map. Returns false for a parameter error, + // or if the location of the range would conflict with a range already + // stored in the map. + bool StoreRange(const AddressType& base, + const AddressType& size, + const EntryType& entry); + + // Locates the range encompassing the supplied address. If there is + // no such range, or if there is a parameter error, returns false. + bool RetrieveRange(const AddressType& address, EntryType* entry); + + // Empties the range map, restoring it to the state it was when it was + // initially created. + void Clear(); + + private: + class Range { + public: + Range(const AddressType& base, const EntryType& entry) + : base_(base), entry_(entry) {} + + AddressType base() const { return base_; } + EntryType entry() const { return entry_; } + + private: + // The base address of the range. The high address does not need to + // be stored, because RangeMap uses it as the key to the map. + const AddressType base_; + + // The entry, owned by the Range object. + const EntryType entry_; + }; + + typedef map<AddressType, Range> AddressToRangeMap; + + // Can't depend on implicit typenames in a template + typedef typename AddressToRangeMap::const_iterator const_iterator; + typedef typename AddressToRangeMap::value_type value_type; + + // Maps the high address of each range to a EntryType. + AddressToRangeMap map_; +}; + + +template<typename AddressType, typename EntryType> +bool RangeMap<AddressType, EntryType>::StoreRange(const AddressType& base, + const AddressType& size, + const EntryType& entry) { + AddressType high = base + size - 1; + + // Check for undersize or overflow. + if (size <= 0 || high < base) + return false; + + // Ensure that this range does not overlap with another one already in the + // map. + const_iterator iterator_base = map_.lower_bound(base); + const_iterator iterator_high = map_.lower_bound(high); + + if (iterator_base != iterator_high) { + // Some other range begins in the space used by this range. It may be + // contained within the space used by this range, or it may extend lower. + // Regardless, it is an error. + return false; + } + + if (iterator_high != map_.end()) { + if (iterator_high->second.base() <= high) { + // The range above this one overlaps with this one. It may fully + // contain this range, or it may begin within this range and extend + // higher. Regardless, it's an error. + return false; + } + } + + // Store the range in the map by its high address, so that lower_bound can + // be used to quickly locate a range by address. + map_.insert(value_type(high, Range(base, entry))); + return true; +} + + +template<typename AddressType, typename EntryType> +bool RangeMap<AddressType, EntryType>::RetrieveRange( + const AddressType& address, + EntryType* entry) { + if (!entry) + return false; + + const_iterator iterator = map_.lower_bound(address); + if (iterator == map_.end()) + return false; + + // The map is keyed by the high address of each range, so |address| is + // guaranteed to be lower than the range's high address. If |range| is + // not directly preceded by another range, it's possible for address to + // be below the range's low address, though. When that happens, address + // references something not within any range, so return false. + if (address < iterator->second.base()) + return false; + + *entry = iterator->second.entry(); + return true; +} + + +template<typename AddressType, typename EntryType> +void RangeMap<AddressType, EntryType>::Clear() { + map_.clear(); +} + + +} // namespace google_airbag + + +#endif // PROCESSOR_RANGE_MAP_H__ diff --git a/src/processor/range_map_unittest.cc b/src/processor/range_map_unittest.cc new file mode 100644 index 00000000..f81bcdf7 --- /dev/null +++ b/src/processor/range_map_unittest.cc @@ -0,0 +1,334 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// range_map_unittest.cc: Unit tests for RangeMap +// +// Author: Mark Mentovai + + +#include <stdio.h> + +#include <climits> +#include <memory> + +#include "processor/range_map.h" + + +using std::auto_ptr; +using google_airbag::RangeMap; + + +// A CountedObject holds an int. A global (not thread safe!) count of +// allocated CountedObjects is maintained to help test memory management. +class CountedObject { + public: + CountedObject(int id) : id_(id) { ++count_; } + CountedObject(const CountedObject& that) : id_(that.id_) { ++count_; } + ~CountedObject() { --count_; } + + static int count() { return count_; } + int id() const { return id_; } + + private: + static int count_; + int id_; +}; + +int CountedObject::count_; + + +typedef int AddressType; +typedef RangeMap<AddressType, CountedObject> TestMap; + + +// RangeTest contains data to use for store and retrieve tests. See +// RunTests for descriptions of the tests. +struct RangeTest { + // Base address to use for test + AddressType address; + + // Size of range to use for test + AddressType size; + + // Unique ID of range - unstorable ranges must have unique IDs too + int id; + + // Whether this range is expected to be stored successfully or not + bool expect_storable; +}; + + +// A RangeTestSet encompasses multiple RangeTests, which are run in +// sequence on the same RangeMap. +struct RangeTestSet { + // An array of RangeTests + const RangeTest* range_tests; + + // The number of tests in the set + unsigned int range_test_count; +}; + + +// StoreTest uses the data in a RangeTest and calls StoreRange on the +// test RangeMap. It returns true if the expected result occurred, and +// false if something else happened. +bool StoreTest(TestMap* range_map, const RangeTest* range_test) { + CountedObject object(range_test->id); + bool stored = range_map->StoreRange(range_test->address, + range_test->size, + object); + + if (stored != range_test->expect_storable) { + fprintf(stderr, "FAILED: " + "StoreRange id %d, expected %s, observed %s\n", + range_test->id, + range_test->expect_storable ? "storable" : "not storable", + stored ? "stored" : "not stored"); + return false; + } + + return true; +} + + +// RetrieveTest uses the data in RangeTest and calls RetrieveRange on the +// test RangeMap. If it retrieves the expected value (which can be no +// map entry at the specified range,) it returns true, otherwise, it returns +// false. RetrieveTest will check the values around the base address and +// the high address of a range to guard against off-by-one errors. +bool RetrieveTest(TestMap* range_map, const RangeTest* range_test) { + for (unsigned int side = 0; side <= 1; ++side) { + // When side == 0, check the low side (base address) of each range. + // When side == 1, check the high side (base + size) of each range. + + // Check one-less and one-greater than the target address in addition + // to the target address itself. + + // If the size of the range is only 1, don't check one greater than + // the base or one less than the high - for a successfully stored + // range, these tests would erroneously fail because the range is too + // small. + AddressType low_offset = -1; + AddressType high_offset = 1; + if (range_test->size == 1) { + if (!side) // when checking the low side, + high_offset = 0; // don't check one over the target + else // when checking the high side, + low_offset = 0; // don't check one under the target + } + + for (AddressType offset = low_offset; offset <= high_offset; ++offset) { + AddressType address = + offset + + (!side ? range_test->address : + range_test->address + range_test->size - 1); + + bool expected_result = false; // correct for tests not stored + if (range_test->expect_storable) { + if (offset == 0) // when checking target, + expected_result = true; // should always succeed + else if (offset == -1) // when checking one below target, + expected_result = side; // should fail low and succeed high + else // when checking one above target, + expected_result = !side; // should succeed low and fail high + } + + CountedObject object(-1); + bool retrieved = range_map->RetrieveRange(address, &object); + + bool observed_result = retrieved && object.id() == range_test->id; + + if (observed_result != expected_result) { + fprintf(stderr, "FAILED: " + "RetrieveRange id %d, side %d, offset %d, " + "expected %s, observed %s\n", + range_test->id, + side, + offset, + expected_result ? "true" : "false", + observed_result ? "true" : "false"); + return false; + } + } + } + + return true; +} + + +// RunTests runs a series of test sets. +bool RunTests() { + // These tests will be run sequentially. The first set of tests exercises + // most functions of RangeTest, and verifies all of the bounds-checking. + const RangeTest range_tests_0[] = { + { INT_MIN, 16, 1, true }, // lowest possible range + { -2, 5, 2, true }, // a range through zero + { INT_MAX - 9, 11, 3, false }, // tests anti-overflow + { INT_MAX - 9, 10, 4, true }, // highest possible range + { 5, 0, 5, false }, // tests anti-zero-size + { 5, 1, 6, true }, // smallest possible range + { -20, 15, 7, true }, // entirely negative + + { 10, 10, 10, true }, // causes the following tests to fail + { 9, 10, 11, false }, // one-less base, one-less high + { 9, 11, 12, false }, // one-less base, identical high + { 9, 12, 13, false }, // completely contains existing + { 10, 9, 14, false }, // identical base, one-less high + { 10, 10, 15, false }, // exactly identical to existing range + { 10, 11, 16, false }, // identical base, one-greater high + { 11, 8, 17, false }, // contained completely within + { 11, 9, 18, false }, // one-greater base, identical high + { 11, 10, 19, false }, // one-greater base, one-greater high + { 9, 2, 20, false }, // overlaps bottom by one + { 10, 1, 21, false }, // overlaps bottom by one, contained + { 19, 1, 22, false }, // overlaps top by one, contained + { 19, 2, 23, false }, // overlaps top by one + + { 9, 1, 24, true }, // directly below without overlap + { 20, 1, 25, true }, // directly above without overlap + + { 6, 3, 26, true }, // exactly between two ranges, gapless + { 7, 3, 27, false }, // tries to span two ranges + { 7, 5, 28, false }, // tries to span three ranges + { 4, 20, 29, false }, // tries to contain several ranges + + { 30, 50, 30, true }, + { 90, 25, 31, true }, + { 35, 65, 32, false }, // tries to span two noncontiguous + { 120, 10000, 33, true }, // > 8-bit + { 20000, 20000, 34, true }, // > 8-bit + { 0x10001, 0x10001, 35, true }, // > 16-bit + + { 27, -1, 36, false } // tests high < base + }; + + // Attempt to fill the entire space. The entire space must be filled with + // three stores because AddressType is signed for these tests, so RangeMap + // treats the size as signed and rejects sizes that appear to be negative. + // Even if these tests were run as unsigned, two stores would be needed + // to fill the space because the entire size of the space could only be + // described by using one more bit than would be present in AddressType. + const RangeTest range_tests_1[] = { + { INT_MIN, INT_MAX, 50, true }, // From INT_MIN to -2, inclusive + { -1, 2, 51, true }, // From -1 to 0, inclusive + { 1, INT_MAX, 52, true }, // From 1 to INT_MAX, inclusive + { INT_MIN, INT_MAX, 53, false }, // Can't fill the space twice + { -1, 2, 54, false }, + { 1, INT_MAX, 55, false }, + { -3, 6, 56, false }, // -3 to 2, inclusive - spans 3 ranges + }; + + // A light round of testing to verify that RetrieveRange does the right + // the right thing at the extremities of the range when nothing is stored + // there. Checks are forced without storing anything at the extremities + // by setting size = 0. + const RangeTest range_tests_2[] = { + { INT_MIN, 0, 100, false }, // makes RetrieveRange check low end + { -1, 3, 101, true }, + { INT_MAX, 0, 102, false }, // makes RetrieveRange check high end + }; + + // Similar to the previous test set, but with a couple of ranges closer + // to the extremities. + const RangeTest range_tests_3[] = { + { INT_MIN + 1, 1, 110, true }, + { INT_MAX - 1, 1, 111, true }, + { INT_MIN, 0, 112, false }, // makes RetrieveRange check low end + { INT_MAX, 0, 113, false } // makes RetrieveRange check high end + }; + + // The range map is cleared between sets of tests listed here. + const RangeTestSet range_test_sets[] = { + { range_tests_0, sizeof(range_tests_0) / sizeof(RangeTest) }, + { range_tests_1, sizeof(range_tests_1) / sizeof(RangeTest) }, + { range_tests_2, sizeof(range_tests_2) / sizeof(RangeTest) }, + { range_tests_3, sizeof(range_tests_3) / sizeof(RangeTest) }, + { range_tests_0, sizeof(range_tests_0) / sizeof(RangeTest) } // Run again + }; + + // Maintain the range map in a pointer so that deletion can be meaningfully + // tested. + auto_ptr<TestMap> range_map(new TestMap()); + + // Run all of the test sets in sequence. + unsigned int range_test_set_count = sizeof(range_test_sets) / + sizeof(RangeTestSet); + for (unsigned int range_test_set_index = 0; + range_test_set_index < range_test_set_count; + ++range_test_set_index) { + const RangeTest* range_tests = + range_test_sets[range_test_set_index].range_tests; + unsigned int range_test_count = + range_test_sets[range_test_set_index].range_test_count; + + // Run the StoreRange test, which validates StoreRange and initializes + // the RangeMap with data for the RetrieveRange test. + int stored_count = 0; // The number of ranges successfully stored + for (unsigned int range_test_index = 0; + range_test_index < range_test_count; + ++range_test_index) { + const RangeTest* range_test = &range_tests[range_test_index]; + if (!StoreTest(range_map.get(), range_test)) + return false; + + if (range_test->expect_storable) + ++stored_count; + } + + // There should be exactly one CountedObject for everything successfully + // stored in the RangeMap. + if (CountedObject::count() != stored_count) { + fprintf(stderr, "FAILED: " + "stored object counts don't match, expected %d, observed %d\n", + stored_count, + CountedObject::count()); + + return false; + } + + // Run the RetrieveRange test + for (unsigned int range_test_index = 0; + range_test_index < range_test_count; + ++range_test_index) { + const RangeTest* range_test = &range_tests[range_test_index]; + if (!RetrieveTest(range_map.get(), range_test)) + return false; + } + + // Clear the map between test sets. If this is the final test set, + // delete the map instead to test destruction. + if (range_test_set_index < range_test_set_count - 1) + range_map->Clear(); + else + range_map.reset(); + + // Test that all stored objects are freed when the RangeMap is cleared + // or deleted. + if (CountedObject::count() != 0) { + fprintf(stderr, "FAILED: " + "did not free all objects after %s, %d still allocated\n", + range_test_set_index < range_test_set_count - 1 ? "clear" + : "delete", + CountedObject::count()); + + return false; + } + } + + return true; +} + +int main(int argc, char** argv) { + return RunTests() ? 0 : 1; +} diff --git a/src/processor/testdata/minidump1.dmp b/src/processor/testdata/minidump1.dmp Binary files differnew file mode 100644 index 00000000..fd4e29fb --- /dev/null +++ b/src/processor/testdata/minidump1.dmp diff --git a/src/processor/testdata/minidump1.out b/src/processor/testdata/minidump1.out new file mode 100644 index 00000000..f6fae1f9 --- /dev/null +++ b/src/processor/testdata/minidump1.out @@ -0,0 +1,3734 @@ +MDRawHeader + signature = 0x504d444d + version = 0x5128a793 + stream_count = 8 + stream_directory_rva = 0x20 + checksum = 0x0 + time_date_stamp = 0x44172f15 2006-03-14 16:01:09 + flags = 0x0 +mDirectory[0] +MDRawDirectory + stream_type = 3 + location.data_size = 436 + location.rva = 0x178 +mDirectory[1] +MDRawDirectory + stream_type = 4 + location.data_size = 11992 + location.rva = 0x32c +mDirectory[2] +MDRawDirectory + stream_type = 5 + location.data_size = 164 + location.rva = 0x9343 +mDirectory[3] +MDRawDirectory + stream_type = 6 + location.data_size = 168 + location.rva = 0xd0 +mDirectory[4] +MDRawDirectory + stream_type = 7 + location.data_size = 56 + location.rva = 0x80 +mDirectory[5] +MDRawDirectory + stream_type = 15 + location.data_size = 24 + location.rva = 0xb8 +mDirectory[6] +MDRawDirectory + stream_type = 0 + location.data_size = 0 + location.rva = 0x0 +mDirectory[7] +MDRawDirectory + stream_type = 0 + location.data_size = 0 + location.rva = 0x0 +Streams: + stream type 0 at index 7 + stream type 3 at index 0 + stream type 4 at index 1 + stream type 5 at index 2 + stream type 6 at index 3 + stream type 7 at index 4 + stream type 15 at index 5 +MinidumpThreadList + thread_count = 9 +thread[0] +MDRawThread + thread_id = 0x124c + suspend_count = 0 + priority_class = 0x0 + priority = 0x0 + teb = 0x7ffdf000 + stack.start_of_memory_range = 0x12d940 + stack.memory.data_size = 0x26c0 + stack.memory.rva = 0x94e7 + thread_context.data_size = 0x2cc + thread_context.rva = 0x5ef0 +MDRawContextX86 + context_flags = 0x1003f + dr0 = 0x0 + dr1 = 0x0 + dr2 = 0x0 + dr3 = 0x0 + dr6 = 0x0 + dr7 = 0x0 + float_save.control_word = 0xffff027f + float_save.status_word = 0xffff0100 + float_save.tag_word = 0xffffffff + float_save.error_offset = 0x23ae71f + float_save.error_selector = 0x11c001b + float_save.data_offset = 0x12bb30 + float_save.data_selector = 0xffff0023 + float_save.register_area[80] = 0xd3a68400d3a68400ffffd3a68400eab68400ffffffffed00f8ffff00ffffd4b7c600d4a78500ffff9cf2120060f2120052e900000000000000d002400000000000000080024000000000000000000000 + float_save.cr0_npx_state = 0x0 + gs = 0x0 + fs = 0x3b + es = 0x23 + ds = 0x23 + edi = 0x4ec7aa8 + esi = 0x4ec7a50 + ebx = 0x4ec7a78 + edx = 0x7c90eb94 + ecx = 0x7 + eax = 0x4b50000 + ebp = 0x12d954 + eip = 0x7c90eb94 + cs = 0x1b + eflags = 0x246 + esp = 0x12d944 + ss = 0x23 + extended_registers[512] = 0x7f02000100001c011fe73a021b00000030bb120023000000a01f0000ffff0000d3a68400d3a68400ffff000000000000d3a68400eab68400ffff000000000000ffffed00f8ffff00ffff000000000000d4b7c600d4a78500ffff0000000000009cf2120060f2120052e900000000000000000000000000d002400000000000000000000000000080024000000000000000000000000000000000000000000000d0f012003815917c9615917ceb06917c181100108800000000000000650063006900660069006500640020005b00770069006e0064006f00770073002000730079007300740065006d0020006500720072006f007200200032005d000000120000000000c805917c684e1600d8ef12005105917ca80714006d05917c00000000e878a403de0100003600000000f512000c000000f078a4030000000070059100f888100100000000a5ae2110e878a403000000000000000000000000e878a40360000000f078a40350000000d801ac0060000000fcf500000000ac00ecf3120098c00c013cf6120018ee907cf006917cffffffffeb06917cb5a621100000ac00000000005100000062696e00587cac0000f0fd7fabf3003014f8120068f61200d695201098f6120034c0201062696e003a9820101079a403cd0000002d000000510000007d290200f078a4030000000094282010b0eb2710a8f61200d4942010 +Stack +0x8000108078dc12009fd7907c00000000a0d9120005000f000000ec0400000000a4d91200bfb7807c00000000000000003103917c780115000000000061dc907c79b7807c00000000ffffffffc8d912000000000000000000acd9120078cded040100000000000000020000000000000000000000d4d91200a8b7807c0e00000004000000006000000000b504780115000000000050cded0492d5907cbb9b807cbc02000028db120078011500bc02000080cded04c8caed0420dea85968dc120078011500c0020000e0dd120028cbed04bc02000000000000780115000000000050cded04000000000000000000000000780115005104000000000000000000000000000000000000000000000000000078011500000000000000000000000000000000005704000000000000000000000000000050cded045c0057000600000078011500000000005c00730079007300740065006d00330048cded0468011500000000000000000048cded041ccbed04c8caed04c8da120061eea859e000b5040000b5041c4e0000dcda1200bdeea859e000b5040000b5041c4e0000fcda12005fefa8590000b50400000000060000001cdb1200e000b504b8e0120020db12005abfa8590000b50400000000060000001c0000001ccbed04c8caed04380000006ce9907c10b8807cffffffff0000b50400000000c8caed0488dc12007fc3a859a0c4a85908de1200b8e012004072ec04504500004c010400ca9610410000000000000000e0000e210b01070a00400000003a000000000000f1100000001000000000bf760000000000100000000200000500010005000100040000000000000000b00000000400009ba20000000015000075ec04000000008cdc1200780115008cdc1200910e917c080615006d05917c108a3d00a48a3d004072ec0400000000b04800000075ec0478011500e00300000875ec0400000000000000000000000078011500c403000078cded043800000000000000000000000000000000000000000000000000000080cded0448050000780200003800000000100000ec000000b8470000400000000000000000000000000000000000150000000000c8caed0400000000000000000000000000000101a9000000b8e0120060e7120060e7120000c0fd7fd0dc1200acdc1200ad9d917ce4dc1200c2066f7f0e000000000000001c010000d0dc1200108a3d00c0dc12000dad807cd0de12007cde120083dba859d0de1200e4dc1200800000008edba8591401000005000000010000007807000010df12003815917c9615917ceb06917cb8e01200b8e012001ce0120030dd1200000015003207917c21000000b80c1500000015009818170008dd1200ffffffff4cdf120018ee907c3807917cffffffff3207917cab06917ceb06917ca472ec04b8e012004072ec04e00040003cdd12000000ec04ccdd120018ee907c3808917cffffffff3308917cce29817cfa29817c000000004cde12000000000000000000510c00000000ec040000ec04bcdf12003815917c00f0fd7feb06917c4072ec04b8e012007801150000c0fd7f04de1200000000000000040048e11200e8e012000000000070dd12000d29817c40f4ed04f399837cffe9907c0e10817c8402000000000000ffe9907c0e10817c080000000000000000000000000000000875ec0494de120080cded04000000002e10817c1ce01200b8e012000875ec0400de120048f4ed04000000000075ec0410de12007801150060e71200f399837c3810817cffffffff2e10817c97eaa8598402000094de12003800000068de12000000000074de12007807000038000000ffe9907c0e10817cffe9907c0e10817c840200007801150000000000c805917c901817005cdf12005105917cb80c15006d05917c9818170080cded0400000000d9040000cc02000000000000a8000000ffe9907cc7e2907ce721807cffffffff40d9120080cded04c0060000f0de120004df1200d2e2a859ffffffff40d9120080cded04c00600001cdf120080cded04b8e012001ce0120024df12004ee3a859ffffffff40d912000000000080cded04c026000038df12004cdf120093b2a859ffffffff40d912000000000080cded04c02600001ce01200b8e01200507aec04d0df1200a5b3a859b8e012001ce012004072ec0440d9120000000000c02600000000000002000000d8df12001ce01200b8e0120000000000b8e01200981817004072ec04a472ec04a472ec04d0df1200b5b4a859b8e012001ce012004072ec0414eb907c000000000001000000000000010000000000000009000000d07dec04f05e0000f0df12005eb7a859b8e012001ce012004072ec04c08a3d0000000000000000002ce112007bb9a859b8e012001ce012004072ec049871ec0400000000000000000000000060e11200c0e71200080000000000000020000000200000006000000080000000380000001e000000b8000000d0000000a800000078010000b40100007c010000300000002c030000d82e00002c030000043200000000000004320000043200000000000043930000a400000057930000e793000088660000e794000004320000202a000026320000245c00001f370000bc61000043930000000000006ffa000000000000ffffffffd80d0000108a3d00c08a3d00d08a3d000000000000000000000000004c010000fc39a6590000000002000000050000000100000000003d00280a000001000001cc0200009c0000000b0000005000000004000000001000000000000000000000000100000000000000000000000000008ce1120078baa8599871ec04d80d0000108a3d0000000000d08a3d004072ec0460e11200000000000000000000000000c0e712004c120000b4e8120000000000d0e8120000000000000000000200000000000000d08a3d00c08a3d00108a3d00f4e41200a1b00110ffffffffd80d00008402000000000000b0e1120000000000000000004c120000c0e71200000000000a00000084020000633a5c444f43554d457e315c4d4d454e544f7e315c4c4f43414c537e315c54656d705c466f78794d6f7869652e646d700022550408e212009577fb0124000000e8026a0414e212002fd0fb01240000004ce212001c674b044ce2120030e21200400103300a000000c02dac0038e21200668702304ce21200abf3003000000000c02dac000000000070e212006b682f0001000000903e880498747a04903e8804ec197a04000000007ce2120080e21200400103304ce3890494e212000c51990390e21200df6cea010c5199039ce212003b7efe01f8118804b4e21200fc7dfe0114017504f8118804b844090158e289046ce95b04c0e21200fcfe870440e3120009000000a80775041c0000004c641d0258e2890404e31200da432700660a2299000000000000000058e289046ce95b0420e31200fcfe87043e682d5d660a229918e312000cf65c0260e312000000000028e31200d3d1fd012ce31200400103300a000000c02dac0034e312006687023048e31200abf3003000000000c02dac00000000006ce312006b682f000100000000000000e44e540400000000000000004ce3890480e312007af90e02304e090170e28904010000000100000048e41200c1f30902304e09010000000058e289043ce4120014e4120058e289046ce95b04ace31200fcfe87042ce4120009000000a80775041c0000004c641d0258e28904f0e31200da432700660a229900000000b0b9a859fce31200633a5c6c697a6172645c7472756e6b5c6d6f7a696c6c615c646973745c62696e5c44424748454c502e444c4c00757a04ac9675024c5388044c757a04b0747a042ce41200db43fc0198747a044c5388044ce412002d95ff0107000000381b7a040100000007000000381b7a040000000058e41200c1fee801881b7a0468e41200e15ee901981a7a04681c7a047ce41200733ff801681c7a04000000000000000098e412001140f801881b7a04d41a7a04681c7a04d41a7a04a4e4120016d7f001b4e4120014e51200dce41200129f807c0000000001000000c0e7120000a0011000a00110ace412009647fc0160e71200f399837c189f807cffffffff129f807c66bb807cf0ae011000000000000000000000a6590000000070e712003e5b0063c0e71200050000c0d32c867cc0e71200000000000000000000000000abf3003000000000c02dac000000000050e512001b642f0001000000010000000000000058e2890424e9120050e512003a6dea011085880468e51200dc40ea01ec197a040400000014f55702ec197a0474e51200797aea01dce5120010e612008352ea01a4578804d86e8604000000000a000000c02dac0098e5120066870230744e88040000000048e9120054e9120058e912000000000000000000a45788040000000000000000904c090158e28904f8225504a4578804087a8004881b7a0426000000ec197a041a000000000000000000000018e612007a442700660a2299c0e712000100000058e289040000000000000000087a800440000000660a22992ce6120007eced0101000000ec22550404000000b4e61200ace6120000000000879ee90100000000d86e860400000000000000000000000008000000013e8804e8026a04ec197a0470e61200400103300a000000c02dac00a8e6120024197a04481a7a04ac967502181a7a043c1a7a0428197a04a0e612009647fc01c0197a048000000010197a04b4e612009943fc0107000000c0197a04181a7a04d4e612002d95ff0107000000ec197a040100000007000000ec197a0400000000e0e61200c1fee801981a7a04f0e61200e15ee901a4578804c81b7a0404e71200733ff801c81b7a041fe2907c45b8807cffffffffd83040000000000050e712001c00000030e7120034e712006eb8807cffffffffd830400050e712001c000000a4e712002ef92010dffa2010e0f027100000000000000000ffffffff00304000085700000ce5120000100000e0e71200f399837ce035867cffffffff94e71200bdd32010c0e712000100000000f0fd7fd830400001000000b01eac0088c52710c0ff1200f8114000050000c0c0e7120095c02010c8e7120000000000c8e71200000000000000000000000000b4e81200d0e81200ece71200bf37907cb4e81200b0ff1200d0e8120088e812003cfc1200d837907cb0ff12009ce812008b37907cb4e81200b0ff1200d0e8120088e81200e014400001000000b4e81200b0ff12006078937cb4e81200b0ff1200d0e8120088e81200e014400002000000b4e81200f87dac006d05917c02000000c02dac000000ac0068cd80040000000024e912005c0d917c0000ac00910e917c0806ac006d05917c02000000c02dac0000c0fd7f000096030100000068cd800450d0ea010200000098e81200400103300000130000201200a0e81200b8ec1200faea907c00000000d0e81200b4e81200d0e81200050000c0000000000000000015150a020200000000000000e1dddddd3f0001000000000000000000000000000000000000000000000000007f02ffff2040ffffffffffffe17ef5011b00e9022c1a7a042300ffff8080800080808000ffffc8d0d400ffffff00ffff8080800080808000ffffc8d0d400ffffff00ffffaeb5b921b3babe1bffffb300ba00be000000ffff0000000000000080ff3f0000000000000080ff3f00000000000000003b000000230000002300000002000000f87dac0000c0fd7fdddddddd7c8588042ced1200b8ec120015150a021b000000020201009ceb1200230000007f0220400000e902e17ef5011b0000002c1a7a0423000000a01f0000ffff00008080800080808000ffff000000000000c8d0d400ffffff00ffff0000000000008080800080808000ffff000000000000c8d0d400ffffff00ffff000000000000aeb5b921b3babe1bffff000000000000b300ba00be000000ffff0000000000000000000000000080ff3f0000000000000000000000000080ff3f000000000000fe030000000000000000000000000000ff01000000000000000000000000000035000000000000003304000000000000000000fcffe788c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e03f0000000000000000e878a403de0100003600000000f512000c000000f078a4030000000070059100f888100100000000a5ae2110e878a403000000000000000000000000e878a40360000000f078a40350000000d801ac0060000000fcf500000000ac00ecf3120098c00c013cf6120018ee907cf006917cffffffffeb06917cb5a621100000ac00000000005100000062696e00587cac0000f0fd7fabf3003014f8120068f61200d695201098f6120034c0201062696e003a9820101079a403cd0000002d000000510000007d290200f078a4030000000094282010b0eb2710a8f61200d49420107c8588047c8588040200000058e2890458e2890400000000abf300306c1e1001cceb1200400103300a000000c02dac00dceb1200400103300a000000c02dac000100000066870230f8eb1200abf3003000000000c02dac000000000020ec12005b5e2f00010000000cec120018ec1200400103302cec120008250a02a89f8804b49f88043cec1200958f3c02a89f88040c00000074e289044c0000000c0000007c8588046c1d1302a89f8804000000000000000000000000c02dac0060ec12006687023074ec120074ec1200400103300a000000c02dac007cec12006687023090ec1200abf3003000000000c02dac002c010000b8ec1200f0868804a89f880458e28904b8f57204010000000100ea010000000001000000b8f57204d8ec1200e3030a020100000074e289047c858804a89f8804b8f572042ced1200f0ec1200288a3c02a89f880474e289047c8588042ced120030ed1200d9cf3c02a89f880474e289047c8588042ced1200cc9f88049ee54d032ced120020ed1200909e530360ed1200cc9f88047c858804000000007c85880464ed120012fd22022c8488040000000074e28904000000005ced120058e289042c8488045ced12000000000090e3890474e2890494ed1200dd112302b0ff330400f81200000000002c84880498eb89047cea89042c8488042c84880498ed120000000000c8ed1200f1b04e0328bc5b0498eb8904b0ff3304f08c4a040100000000f81200c4ed120028bc5b04a0ee120098eb890401000000b0ee1200a4bd4900b0ff3304f08c4a040100000000f81200d418420065cf0d010500000005000000f08c4a0401000000010000000100000098b8890400000000d0eb0f010000000000000000000000000000000000000000988c4a0402000000e4b88904908c4a0400000000ecb8890494f812007dea89040400000004000000ecb88904000000000000000000000000010000000000000000000000ecb8890464583504dcb889043b11420039f3540300000000b0312b04fc565f0460b04e03fc565f04ffffffff0000000000ec89047cea890470af4e03f08c4a0441000000c88c4a040000000034f812002fb94700b0ff3304f08c4a040100000000f81200e0c38f020000000040ad89049615917ceb06917cc0fa1200f07b88040000000044ee1200000000000cef1200f9b3d477ce02050020000000e2020100010000020000000054ef120093b3d477ce02050020000000e2020100a7b3d477d8ef1200e0c38f020000000000000000000000000000000024ef120000009603f4ef12006704d777b0b3d477e0c38f02a7b3d47735c48f02ce02050020000000e202010001000002000000009cef12003487d477ce02050020000000e202010001000002e0c38f02cdabbadc00000000d8ef1200e0c38f0204f012001688d47700f0fd7f04f012005a88d477c4ef12002a88d47720000000e0c38f020000000014000000010000000000000000000000e4ef1200400103300a000000c02dac00ecef12006687023000f01200abf3003000000000c02dac000000000028f012001b642f00010000002d00000001000000b0312b042000000004b7400404b7400401000000c88c4a042d000000e8f732044cf01200e3aa8f02f0c18f02ce02050020000000297a51000f0000000f000000d4f7320490f0120068f0120030bd8f0290f01200a0f0120076c38f02d4f732040000000028ad2110d4f73204f0c18f0240ad8904d0f7320448fb1200d4f7320424f1120008769502ffffffffccf012003487d477ce02050020000000e202010001000002f0c18f02cdabbadc0000000008f11200f0c18f0234f112001688d47700f0fd7f34f112005a88d477f4f012002a88d47700000000ce020500e815610014000000010000000000000000000000100000000000000078f11200000000000000000000000000e8f012000000000078f112006704d7773088d477ffffffff2a88d477c0b4d47700000000f0c18f02ce02050020000000e20201000100000204da7800cbb4d47720000000e8da7800e815610000000400000000005cf11200e09a91027cf212006704d777d0b4d477ffffffffcbb4d4770cb5d477f0d9780020000000e20201001cb5d4770000000000000000000000000000000028f21200e3ea907cc0f1120065cf0d010500000005000000b0312b040500000005000000a08c4a0465cf0d01050000000500000020000000e202010001000002000000009e0200000000000010f31200e0c38f020000000074f4120030aa2a002cf212000e0000000000000080ef8904e8ad890440f2120044f21200f9b3d477d002050020000000e202010001000002000000008cf2120093b3d477d002050020000000e2020100a7b3d47710f31200e0c38f02000000000000000000000000000000005cf212007cf212002cf312006704d777b0b3d477e0c38f02a7b3d47735c48f02d002050020000000e20201000100000200000000d4f212003487d477d002050020000000e202010001000002e0c38f02cdabbadc0000000010f31200e0c38f023cf312001688d47700f0fd7f3cf312005a88d477fcf212002a88d47720000000e0c38f0200000000140000000100000000000000000000001cf31200400103300a000000c02dac0024f312006687023038f31200abf3003000000000c02dac000000000060f312001b642f000100000000000000e0c38f02d00205002000000064f31200400103300a00000084f312007caa8f0250d8350484f31200e3aa8f02f0c18f02d00205002000000094f3120094f31200495027003cd83504c8f31200a0f3120030bd8f02c8f31200d8f3120076c38f023cd8350400000000c4f312003cd83504f0c18f023f00000038d83504300031003cd835045cf4120008769502ffffffff04f412003487d477d002050020000000e202010001000002f0c18f02cdabbadc0000000040f41200f0c18f026cf412003800000000f0fd7f6cf412005a88d4772cf412002a88d47700000000d0020500e8156100140000000100000000000000000000001000000000000000b0f4120000000000000000000000000020f4120000000000b0f412006704d7773088d477ffffffffe6450000e645000048472b04500e4604f1030000f0ee0f01500e4604780e10019cf41200400103300a000000c02dac00a4f41200b0f41200400103300a000000c02dac00b8f4120066870230ccf4120094f51200ccf4120030bd8f0294f51200e4f41200afbd8f0274f51200fcf51200d6759502fffffffff0f412004fbd8f0274f51200fcf412006fbf8f0274f5120008f512001f39900274f5120008f61200b34d9002f0c18f022db4d477e002010020000000e202010054488804504888049e0200000000000000000000e0c38f02ef450000ef45000000000000000000009f010000f0ee0f0100000000e8fb0f0143006f0001000000f9b3d4777c00000062020000000000000a0000022c0100007c00000062020000b35446002000000001000000000000000000000000000000000000000000000000000000000000000000000000000000e7450000e745000000000000000000000c030000f0ee0f010000000050071001f87dac0000c0fd7f000000000cf612003487d4777c000000620200000000000000000000010000008cfa120045799502ffffffff28f612001f5990022c010000000000007c006202ffffffff504888040000000098fa1200201b90022c010000483b8a047c006202000000000000000054f61200400103300a000000c02dac005cf612006687023000009603abf3003000000000c02dac000000000098f612001b642f000100000000000000e0c38f02e0020100fb00000078b88904400103300a000000bcf612007caa8f02200f5404bcf61200e3aa8f02b0d88904e00201002000000018e98904ccf61200b8d889040c0f5404403b8a04090000007801ac0000f7120010f7120076c38f020c0f540400000000e8ad89047801ac00f0c18f0200000000080f54045c0d917c0c0f540414f71200400103300a000000c02dac0024f71200400103300a000000c02dac0034f71200400103300a0000000600000030851001c4565f04400103300a0000006701000038000000f08c4a04bcb88904c02dac0068f71200483b8a0400000000c02dac00583ea901000000000a000000086a0c0188f71200000000002c000000dcb88904623ea90100000000bcb88904da432700a2aa82e3d0eb0f01f8b88804583ea9014012210201000000f08c4a04b0312b0470b889044020000078b88904000000007801ac0040200000c08852000000ac00d0f51200e80ebd0194f8120000000000f006917cffffffffc88c4a040000000001000000e0b88904908c4a0402000000f87dac00a08c4a0420f8120006000000c15d4a0402000000000000006558350400000000010000000f0000003cf9120045c94600b0ff330446b9880430f912000000000094282010b0eb27108cf81200d494201004000000cb94201002000000f87dac00297a51000f0000000f000000b0312b040f0000000f000000e8792610ffffffff0000000009942010000000000000000000000000f8b88804c05d4a04b0312b0401000000b8b889040100008000000000bcb8890450f9120000000000b0312b0446b98804e0b88904d4b889040000000000000000020000000000000000000000bcb88904c8ff3304b0b889040000000014000000f8b88804b0312b0400000000287a510046b64600b0b8890450f91200b0312b0400000000bcb88904a8b889040000000001000080c05d4a0408b74004c8f9120045d34600b0ff33040100000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bcb88904000000000000000000000000000000000000000000000000b092790400000000d8ff33040000000050f91200bcb8890401000000b0312b04f0f91200c30e4300b0ff3304b0312b0408b74004000000000100000040755304c4fa1200b0312b044cfa12007f3b2102b0ff3304b0312b0408b740040100000040755304c4fa120001000000b8881001e8f6370402000000d6075e0438fa12001429670238fa120008b7400402000e0000000000b888100102000000e8f637040000000060fb1200ed9c2402b0312b0408b740040100000040755304c4fa12008cfa12007caa8f0268488804e8f63704e3aa8f02f0c18f0248637304e8f63704d0985e04e8f63704a8985e0454488804d0fa1200a8fa120030bd8f02d0fa1200e0fa120076c38f025448880400000000350c000000000000f0c18f0201000080400103300a00000000000000dcfa120002000000f0fa12004863730488995e04e8f63704f8fa12005f30e7c1fa0e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000020000005f30e7c1fa0e0400000000000000000001000000b0ff330448637304d0985e0470fb120010a824024863730448637304bcfb1200f8bf2e0020ac88044863730402fb1200668702309cfb12009bf1003025aa02306c45ac03c02dac00b0fb1200028f2e0020ac880400000000c8fb1200bcfb1200af544600b3544600e4fb1200ecc82e00000000005045ac0300000000000000005045ac03010000000100000020ac880448fc1200b5939102887a3601887a3601887a3601887a3601887a36015482ac00e0299703fc42960214fc1200010000000000000001000000e202010000020000000000007c006202b3544600ea010000db020000887a3601b0ff1200e8879502000000005cfc1200194b1703f0199703f01997039ada001054ff1200608e0010581997030000000000000000581997034882ac006812990308380a01c8d13e01000015000000000058199703e8474d016812990318ee907c5e020000d0fe12003815917c60239703eb06917cb884ac00b884ac000081ac000081ac00a882ac004882ac00f4fe120018ee90003807917cffffffff48940210ab06917c407eac008c92021000000000f091021000ee907c00a1917c78fe1200000000003c453400b4900210000000000000000000000000008e917cfffffffffa8d917c07000000cfea907c387eac0001000000170001000000000000000000e48f0210000000003c4534004c8f02100000000048ff1200285da2830000001260fa9b025cfa9bf77801150098fb9886205093864000000000000000a803ac0010ff1200007a63863cff12006420fab210bd150008ff12000800000080fd3600e08c02100e0000000100000088fe1200020000000000000018ff1200dfffffff7801150039000000e0bc1500230000000200000008380a01c8d13e01780115006cf4120018bd1500570000006708817c1b00000078011500fcff12002300000018629c860000000018629c860d0000000000000040000000881e1500e4fe12005105917ce8121500d07dac006401ac000000000000000000d07dac0068000000d87dac0078011500a803ac006800000000c000000000ac004cfc120088d564819cfe120018ee907c60239703ffffffff58199703be43ac006812990320a69a03e8474d01b4b6ac00000000000081ac00680115000000000080fd3600048e02100e00000001000000000000000100000080fd3600c4fe120021000000110001003f000000c4fe1200312e3661315f303030303030303030302f312e3961315f3030303030303030303000000000c0fd7ff87dac0000000000901e1500b0ff120034c02010e879261000000000b884ac00000000002084ac00000000004882ac0018a7021004a7021000000000a882ac00000000000081ac002084ac00010000000081ac00010000000100000000000000020000000100000068ff12003610400001000000f87dac0090304000c0ff1200bc11400001000000f87dac006036ac00020000000000000000c0fd7f050000c000000000000000006036ac0000000000f87dac0001000000000000007cff1200c0e71200e0ff1200e0144000d830400000000000f0ff12004f6d817c020000000000000000c0fd7ffd3d5480c8ff120068c2fc83fffffffff399837c586d817c0000000000000000000000009010400000000000 +thread[1] +MDRawThread + thread_id = 0x103c + suspend_count = 0 + priority_class = 0x0 + priority = 0x0 + teb = 0x7ffde000 + stack.start_of_memory_range = 0x107fe2c + stack.memory.data_size = 0x1d4 + stack.memory.rva = 0xbba7 + thread_context.data_size = 0x2cc + thread_context.rva = 0x61bc +MDRawContextX86 + context_flags = 0x1003f + dr0 = 0x0 + dr1 = 0x0 + dr2 = 0x0 + dr3 = 0x0 + dr6 = 0x0 + dr7 = 0x0 + float_save.control_word = 0xffff027f + float_save.status_word = 0xffff0020 + float_save.tag_word = 0xffffffff + float_save.error_offset = 0x2f6e62 + float_save.error_selector = 0x41d001b + float_save.data_offset = 0x369d98 + float_save.data_selector = 0xffff0023 + float_save.register_area[80] = 0x02000000f87dac0000c002000000f87dac0000c03cf71200000000000cf87009917ca0f712000000acf7120000001500320778071500000015000000000000000050b0991e40002003f9d2e6c3dafe3f + float_save.cr0_npx_state = 0x0 + gs = 0x0 + fs = 0x3b + es = 0x23 + ds = 0x23 + edi = 0x0 + esi = 0xc4 + ebx = 0xac9078 + edx = 0xe0 + ecx = 0x8355c000 + eax = 0x7fffffff + ebp = 0x107fe94 + eip = 0x7c90eb94 + cs = 0x1b + eflags = 0x297 + esp = 0x107fe30 + ss = 0x23 + extended_registers[512] = 0x7f02200000001d04626e2f001b000000989d360023000000801f0000ffff000002000000f87dac0000c000000000000002000000f87dac0000c00000000000003cf71200000000000cf80000000000007009917ca0f712000000000000000000acf7120000001500320700000000000078071500000015000000000000000000000000000050b0991e40000000000000002003f9d2e6c3dafe3f000000000000d48fac00f87dac00000000000000000045040000fcf912007801ac0000000000eb06917c020000000000000000c0fd7f800000007801ac00010000009615917c0891ac0000000000f87dac0000c0fd7f488fac0000000000000000005090ac000800000050f8120000001500a08fac007801ac00780715005890ac00080000000000000002000000e08dac007801ac003807917c1091ac00400615007801ac00eb06917c7801ac007801ac00000000005890ac00780115007801ac004006ac007801ac000000000000001500000000007801ac007cf81200df030000a8cd15003807917cffffffff170400009615917c080000007801ac00f87dac0008000000780115000c04000060cd1500780115007801ac0088cd15005890ac00780115001700000088cd15000000000000000000b0cd1500a88fac00000000005090ac006801ac0000000000000000005090ac00b80000005890ac00a08fac007801ac00 +Stack +0x00000000c0e9907cdb25807cc40000000000000064fe07015436817c10f712007890ac00140000000100000000000000000000001000000000ba3cdcffffffff00c0fd7f00e0fd7f64fe07010000000044fe070100000000a4ff0701f399837c0826807c00000000a8fe07014225807cc400000060ea000000000000c8fe0701ff1e0330c400000060ea000060ea000000000000008eac0060ea0000e4fe070131980230cc8cac004c8bac0060ea0000000000004c8bac0000ff0701ff9f0230008eac00588cac00308bac0060ea0000008eac0040ff07011c742f00588cac0060ea00002cff07012df200300100000000020000308bac000000000000000000308bac00010000000000000000000000000000005cff0701d35d2e000c6639000c6639000000000000000000088dac006cff0701d9b70230088dac00008eac007cff070157fd0230008eac00008eac00b4ff070166322010008eac005436817c10f712007890ac0000000000f0a3ac0088ff070114015080dcff070134c020107877261000000000ecff07010bb5807cf0a3ac005436817c10f712007890ac0000e0fd7f00069c86c0ff0701703c9183fffffffff399837c18b5807c000000000000000000000000b03120107890ac0000000000 +thread[2] +MDRawThread + thread_id = 0x141c + suspend_count = 0 + priority_class = 0x0 + priority = 0x0 + teb = 0x7ffdd000 + stack.start_of_memory_range = 0x374ff78 + stack.memory.data_size = 0x88 + stack.memory.rva = 0xbd7b + thread_context.data_size = 0x2cc + thread_context.rva = 0x6488 +MDRawContextX86 + context_flags = 0x1003f + dr0 = 0x0 + dr1 = 0x0 + dr2 = 0x0 + dr3 = 0x0 + dr6 = 0x0 + dr7 = 0x0 + float_save.control_word = 0xffff027f + float_save.status_word = 0xffff0000 + float_save.tag_word = 0xffffffff + float_save.error_offset = 0x0 + float_save.error_selector = 0x4910000 + float_save.data_offset = 0x0 + float_save.data_selector = 0xffff0000 + float_save.register_area[80] = 0x32005c0000000000d8f0e80017005cef12000000a1004c0200000802f0ec0000000040ef12000000780715007801150000000000000038ef120018ee48ef12003815917c96159cef120094ef12000000 + float_save.cr0_npx_state = 0x0 + gs = 0x0 + fs = 0x3b + es = 0x23 + ds = 0x23 + edi = 0x71a87558 + esi = 0x0 + ebx = 0xc0000000 + edx = 0x17f310 + ecx = 0x7ffdd000 + eax = 0x7ffdd000 + ebp = 0x374ffb4 + eip = 0x7c90eb94 + cs = 0x1b + eflags = 0x202 + esp = 0x374ff7c + ss = 0x23 + extended_registers[512] = 0x7f0200000000917c00000000000000000000000000000000801f000074c1977c32005c0000000000d8f0120060ef1200e80017005cef12000000000000000000a1004c0200000802f0ec1200000000000000000040ef12000000917c05000000780715007801150000000000f4ec12000000000038ef120018ee907cd202000048ef12003815917c9615917cf80817009cef120094ef12000000000000f2160028ed1200d4ed12006cef120078ed1200000015003207917c06000000a80715000000150030f1160050ed12000000000094ef120018ee907c3807917cffffffff3207917cab06917ceb06917c0000a57103001f000000000064ee12007801150064ee1200910e917c080615006d05917cf2081700da0017000000000000000000c8ed120070f916007801150018f0120078f916003b01000000f012004509917c0009170000000000f808170000c0fd7f110000000000000000c0fd7f0510907c00000000e800170078011500700700000e44917c7009917cc0e4977c8144917cf835887ca143917ce0001700f808170044ee1200460f917ce1000000f808170000001500e00017000000000018ef12007801150018ef1200910e917c080615006d05917c000000000000000000000000000000000000150070f9160078011500f8e5807c78f916006ce2807c00000000620764077801150000f0fd7f5105917c +Stack +0xe3d8a5711be3907c09d6a57178010000bcff7403b0ff7403a4ff740350d6a57104ef120018ee907c30f1160000000000000000000000a57168ef1700ecff74030bb5807cecd8a57104ef120018ee907c30f1160000d0fd7f00069c86c0ff740370b74085fffffffff399837c18b5807c000000000000000000000000afd5a57130f1160000000000 +thread[3] +MDRawThread + thread_id = 0x1338 + suspend_count = 0 + priority_class = 0x0 + priority = 0x0 + teb = 0x7ffdb000 + stack.start_of_memory_range = 0x384ccac + stack.memory.data_size = 0x3354 + stack.memory.rva = 0xbe03 + thread_context.data_size = 0x2cc + thread_context.rva = 0x6754 +MDRawContextX86 + context_flags = 0x1003f + dr0 = 0x0 + dr1 = 0x0 + dr2 = 0x0 + dr3 = 0x0 + dr6 = 0x0 + dr7 = 0x0 + float_save.control_word = 0xffff027f + float_save.status_word = 0xffff0000 + float_save.tag_word = 0xffffffff + float_save.error_offset = 0x0 + float_save.error_selector = 0x0 + float_save.data_offset = 0x0 + float_save.data_selector = 0xffff0000 + float_save.register_area[80] = 0x02000000f87dac0000c002000000f87dac0000c000000000000000000000b8f11200c0ef12000000ccef12000000150032077807150000001500000090020000e8f1120018ee000000003815917c9615 + float_save.cr0_npx_state = 0x0 + gs = 0x0 + fs = 0x3b + es = 0x23 + ds = 0x23 + edi = 0xffffffff + esi = 0x7fffffff + ebx = 0x16fb30 + edx = 0x11228d8 + ecx = 0x0 + eax = 0x11228d8 + ebp = 0x384ccec + eip = 0x7c90eb94 + cs = 0x1b + eflags = 0x293 + esp = 0x384ccb0 + ss = 0x23 + extended_registers[512] = 0x7f0200000000000000000000000000000000000000000000801f0000ffff000002000000f87dac0000c000000000000002000000f87dac0000c000000000000000000000000000000000000000000000b8f11200c0ef12000000000000000000ccef12000000150032070000000000007807150000001500000000000000000090020000e8f1120018ee000000000000000000003815917c9615000000000000ac2a1201f87dac000000000000000000030900001cf212007801ac0000000000eb06917c020000000000000000c0fd7f000000007801ac000100000000000000e02b120100000000000000007801ac00202a1201e82b120100000901282b1201080000007801ac007801ac00782a12017801ac007801ac00302b1201080000007801ac0000000000b8281201000000007801ac00802a1201400615007801ac00eb06917c282a1201780115000000000000000000780115000000000030fa160038f2120000000000efd8907c584da57180fb1600480100009d080000a8fb1600e0f0120047200100d5080000f80000007801ac00b4080000040000000800000078011500ca08000060fb160078011500f800000088fb1600302b12017801ac001700000088fb16000000000006000000b0fb1600c870120100000000282b12016801ac000000000000000000282b1201b8000000302b1201782a12017801ac00 +Stack +0xeccc8403c0e9907c3340a5719c01000001000000d8cc840390cd84039cde840380cd8403c6c1a568aa47c601ffffffffffffff7f30fb16000000000000000000e0cd8403a75fa5719c01000070010000000000000400000000000000a8f816000000000000000000000000000000000000000000010000008096186a67ffffff6ccd8403000000001c0000000000000018ee907cd85f1800502b120178f217000000000014ce84033ccd84030cb915001c00000030fb16009ccd840300000000000000000000000080cd84030000000000000000ffffffffffffff7f01000000000000007001000019000000000000008402000019000000a4ee7a048402000002010000c0cd8403400103300a000000cccd8403f18f0230a24e000004cd84030c15aa7120ce8403c871a771682ea571ffffffff30ce8403672eab71000000009cde840300000000000000000000000014ce840318ee907c95020000502b120170010000010000000000000000ce840300000000a4ff8403af24ac71882eab71ffffffffd4fe8403dd510330000000009cde840300000000000000000000000000000000000000007001000001000000e8030000000000000000000000000000700100000100000000000000000000000000000084020000840200007c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000020043183917cffffffffd0cf840380cf8403ba82917ce0df5f040000ac00002060040000ac007801ac00c8cf84034585917c0000ac0000206004e8df5f04e0df5f0400009603880f00000000ac0090a78a04c1080000d4cf8403ff1b917c0000ac0090a78a0490a78a040000ac000000200400002004000096041cd08403ac1d917cc108000090a78a00000000000000ac0090a78a0400000000980d000000e08a0418d08403000020040000000000000000000000000e01000000000000b3010000ecd08403ca0e917c910e917c0806ac006d05917c48fe840340fe8804502b120100009603c805917c90a78a0414d184035105917c0000ac000000ac00883e8a04fe0a000084d08403ff1b917c0000ac00883e8a04883e8a040000ac0020ba8804911a0000a4d08403ff1b917c0000ac0020ba880420ba88040000ac00000020040000200400009604ecd08403ac1d917c911a000020ba8800000000000000ac0020ba880400000000a80e000000808904e8d0840300002004000000000000000000000000bc00000000000000d5010000bcd18403ca0e917c910e917c0806ac006d05917c48fe840340fe8804502b1201000096034007180020ba88047801ac00d8185804a09b8a04ac2e63048004ac00a09b8a0402000000b8a989043048000001000000a89b8a04b00000002802ac000000ac0040000000000000000000ac00f02b0000000000000000ac00ccd18403f80a967cf00b967c0806ac00cc0b967c48fe840340fe88040000ac00000000000000000000000101000000000000000000000101911a000000d18403502b1201f4d1840318ee907c7005917cffffffff6d05917ca5ae21100000ac000000000060d2880448fe840340fe8804502b120160d2880404d2840368ad20100000ac000000000060d2880438d2840334c0201088a32610ffffffff14d28403fea3201094282010b0eb271048d2840309a020100400000000a0201048fe840340fe8804502b120134c02010a07c2610a4ff840334c02010a07c2610ffffffff58d284037e9f201080d288040100000064d284032d0c013080d2880470d28403c3fce80280d2880448fe84037570f90280d2880418ee907c9502000088d2840300000000683efa023133000000000000010000000100000001000000000000000000000001000000010301030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8b08404000000000000000000000000a8dc320400000000000000000000000000000000e03ed402000000002004d602f0ea7a04b015d602f0ea7a040f33d402f0ea7a04f8ea7a04ffffffffffffffff1400000000000000000000000000000000000000000000000000000000000000b0385a04000000000000de00de0000000100000000000000a0468904f80000000048000010010000000000000000000000000000000000000000000000000000f8000000f8000000b03e8a041001000000480000170301011000000000000000000000000000000008f08a040000000000480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039000103380001033500010366000100330001033200010304000103050001032f0001031600010313000103fffe01030a0001031500010012000100fefe010009000100640001006200010003000100060001000200010001000100000000000000000008ec8804d0d9880408ec8804d0d988040000000000000000000000000000000001000000000000000000000000000000000000000000000044172f10110df1785fca64b01b0a7434971e5cfd832dfba1e8cc7bf5822bcb6400001201e8aaa67fb1b12b319e0e51c59191adb33f10a1bfcbff19fff1c05ab10b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8eb7a04683b15011034fa0239000000b835fa0200000000000000000000000000000000000000001400000000000000000000000000000000000000010000000000000000000000000000000000000000480000000000008031fa026036fa02000000002045f7022045f702000000000000000000000000000000000000000000000000020000000000000002000000010300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d8281201000000009cde8403010000000000000000000000010000007001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e032fa02a036fa02140000009402fa029402fa02000000000000000000000000000000000000000000000000030000000000000002000000010300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098a0207925d89b2e062421fd4c9d48d50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059be7cd652ff24cd4c782c3022488d76000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d02e8804fcfc8403460f917c05000000d02e88040000ac00882e880400000000d0fd84035c0d917c0000ac00910e917c0806ac006d05917c18ee907c95020000502b12010000960301000000882e880400000000000000000000000000000000902e88040000000000000000000000000000000000000000e801ac0000000000400000000000000000000000e801ac000000000048000000000000000000ac00e0fd8403f80a967cf00b967c0806ac00cc0b967c18ee907c950200000000ac000000000024fe8403ef2203306c165804b92403305416580418ee907c95020000502b12010000000018ee907c5c175804ffffffff6d05917c010000005c175804ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0eb27100000000001000000d4fd840348fe8403f9270330541658040000000054fe8403400103300a000000d82812015cfe84036687023070fe8403abf3003000000000d82812010000000098fe84031b642f000100000061fdd90290fe840394fe8403400103300a000000d82812019cfe840366870230b0fe8403abf3003000000000d828120100000000d8fe84031b642f0001000000ccfe84030000000000000000e84e13011c2512011c251201e8fe8403945f02301425120101000000ffffffff14ff84034925b5021425120101000000ffffffff28201201ffffffffc022120101000000305546001425120140ff84037b2eb5022cff84035c2012011c25120100001201000000000100000001000000ffffffff020000005cff8403d35d2e0030201201302012010000000000000000e02712016cff8403d9b70230e0271201d82812017cff840357fd0230d8281201d8281201b4ff840366322010d828120118ee907c95020000502b12010000000048bb140188ff840314015080dcff840334c020107877261000000000ecff84030bb5807c48bb140118ee907c95020000502b120100b0fd7f00069c86c0ff840370b74085fffffffff399837c18b5807c000000000000000000000000b0312010502b120100000000 +thread[4] +MDRawThread + thread_id = 0x145c + suspend_count = 0 + priority_class = 0x0 + priority = 0x0 + teb = 0x7ffda000 + stack.start_of_memory_range = 0x394fe30 + stack.memory.data_size = 0x1d0 + stack.memory.rva = 0xf157 + thread_context.data_size = 0x2cc + thread_context.rva = 0x6a20 +MDRawContextX86 + context_flags = 0x1003f + dr0 = 0x0 + dr1 = 0x0 + dr2 = 0x0 + dr3 = 0x0 + dr6 = 0x0 + dr7 = 0x0 + float_save.control_word = 0xffff027f + float_save.status_word = 0xffff0000 + float_save.tag_word = 0xffffffff + float_save.error_offset = 0x0 + float_save.error_selector = 0x0 + float_save.data_offset = 0x0 + float_save.data_selector = 0xffff0000 + float_save.register_area[80] = 0x02000000f87dac0000c002000000f87dac0000c063006c0068005f00630067006f008cf11200000098f11200000015003207780715000000150000003807917cb4f3120018ee000000003815917c9615 + float_save.cr0_npx_state = 0x0 + gs = 0x0 + fs = 0x3b + es = 0x23 + ds = 0x23 + edi = 0x0 + esi = 0x1a8 + ebx = 0x114da00 + edx = 0x114d788 + ecx = 0xac89d0 + eax = 0xac8920 + ebp = 0x394fe98 + eip = 0x7c90eb94 + cs = 0x1b + eflags = 0x297 + esp = 0x394fe34 + ss = 0x23 + extended_registers[512] = 0x7f0200000000000000000000000000000000000000000000801f0000eb06917c02000000f87dac0000c0fd7feb06917c02000000f87dac0000c0fd7f0c00000063006c0068005f00630061007400650067006f008cf11200000015003207917c98f11200000015003207917c0500000078071500000015000000000070f112003807917cb4f3120018ee907cbf010000000000003815917c9615917c000009015cd91401f87dac00000000000000000014010000e8f312007801ac0000000000eb06917c020000000000000000c0fd7f020000007801ac00010000006a09e66f90da140100000000040000000e000000d0d814010000000002000000d8d91401080000003cf212000000150028d914017801ac0078071500e0d91401080000007801ac006d006f0068d714017801ac003807917c98da1401400615007801ac00eb06917c7801ac007801ac0000000000e0d91401780115007801ac00000009017801ac00000000000000090174696f6e7801ac0005000000ae000000080217000200000000000000e60000006361744d616e00007801ac00480000000800000060d71401db00000000000000780115007801ac00e8011700e0d9140100000000170000005400013a000000000e0000001002170030d9140100000000d8d914016801ac000000000000000000d8d91401b8000000e0d9140128d914017801ac00 +Stack +0x00000000c0e9907cdb25807ca80100000000000068fe9403650072000b00000000da1401140000000100000000000000000000001000000030519bfcffffffff00c0fd7f00a0fd7f68fe94030000000048fe940300000000a4ff9403f399837c0826807c00000000acfe94034225807ca80100003d16000000000000ccfe9403ff1e0330a80100003d1600003d1600000a00000088d714013d160000e8fe940331980230448aac003c89ac003d160000000000006488ac0004ff9403ff9f023088d71401d089ac002089ac003d16000088d7140140ff9403f6e92e00d089ac003d1600002df200300100000037744600fa5d4600c0fa97033d1600002089ac0000000000000000002089ac00010000005cff9403d35d2e003888ac003888ac000000000000000000988813016cff9403d9b702309888130188d714017cff940357fd023088d7140188d71401b4ff94036632201088d71401650072000b00000000da140100000000d00a160188ff940314015080dcff940334c020107877261000000000ecff94030bb5807cd00a1601650072000b00000000da140100a0fd7f00069c86c0ff940328bf6f86fffffffff399837c18b5807c000000000000000000000000b031201000da140100000000 +thread[5] +MDRawThread + thread_id = 0xa6c + suspend_count = 0 + priority_class = 0x0 + priority = 0x0 + teb = 0x7ffd8000 + stack.start_of_memory_range = 0x3f6fe18 + stack.memory.data_size = 0x1e8 + stack.memory.rva = 0xf327 + thread_context.data_size = 0x2cc + thread_context.rva = 0x6cec +MDRawContextX86 + context_flags = 0x1003f + dr0 = 0x0 + dr1 = 0x0 + dr2 = 0x0 + dr3 = 0x0 + dr6 = 0x0 + dr7 = 0x0 + float_save.control_word = 0xffff027f + float_save.status_word = 0xffff0000 + float_save.tag_word = 0xffffffff + float_save.error_offset = 0x0 + float_save.error_selector = 0x7ff0000 + float_save.data_offset = 0x0 + float_save.data_selector = 0xffff0000 + float_save.register_area[80] = 0x3807917cffffffff3207eb06917c38db12001f0018d81200000015003207a80715000000150040123207917c34da120018eeffffffff3207917cab0638db120060db1200ed10ab06917ceb06917cc42f + float_save.cr0_npx_state = 0x0 + gs = 0x0 + fs = 0x3b + es = 0x23 + ds = 0x23 + edi = 0x0 + esi = 0x152f88 + ebx = 0x0 + edx = 0x7c90eb94 + ecx = 0x152f88 + eax = 0x3f6ff54 + ebp = 0x3f6ff80 + eip = 0x7c90eb94 + cs = 0x1b + eflags = 0x246 + esp = 0x3f6fe1c + ss = 0x23 + extended_registers[512] = 0x7f0200000000ffff00000000000000000000000000000000801f0000d81117003807917cffffffff3207917cab06917ceb06917c38db12001f000000948ce77718d81200000015003207917c06000000a80715000000150040121700f0d712003207917c34da120018ee907c3807917cffffffff3207917cab06917ceb06917c38db120060db1200ed10907c3207917cab06917ceb06917cc42f150020db1200000000001000000080d81200000015003207917c0b000000980815000000150098d81200000015003207917c12000000e80915000000150058d4160070d812009615917cb4da120018ee907c3807917cffffffff3207917cab06917ceb06917cd01b170000000000e08d1600a0d81200e0da120018ee907c3807917cffffffff3207917cab06917ceb06917c882f150014db4e77ed10907c0800000000001500d002150008000000080815000000150050fc1600e8d81200201c17000500000018ee907c04000000ffffffff3207917cab06917c000000002cd9120000000000c805917cd0111700220000005105917cf80815006d05917c00000000d0021500d81117008800827cd612907c0000000018001a0078ff817c240026008800827c4000000078131700d00100005cd91200090000000000000000080000e0010000481217000c00000000000000d8121700300215000000000080131700d8121700 +Stack +0x85d3907c99e3907c0367e777d001000070fff60300000000b85c170054fff603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005ca93f8524acb3b0d99a4f80e19a4f802ca93f85c0a73f85f4a73f8580fff6039966e7774cfff603a966e777ed10907cd01b170058d4160000a22f4dffffffff005d1eeeffffffff0000000038fef60358d41600ffffffff54fff60300000000b85c1700000000000000000088fff603226ce777a8fff6033b6ae777882f150000000000acd7120058d4160058d4160058d41600b4fff6030a6ce777e08d1600ecfff6030bb5807c58d4160000000000acd7120058d416000080fd7f00069c86c0fff603f0399383fffffffff399837c18b5807c000000000000000000000000f06be77758d4160000000000 +thread[6] +MDRawThread + thread_id = 0xf94 + suspend_count = 0 + priority_class = 0x0 + priority = 0x0 + teb = 0x7ffd6000 + stack.start_of_memory_range = 0x41ffe24 + stack.memory.data_size = 0x1dc + stack.memory.rva = 0xf50f + thread_context.data_size = 0x2cc + thread_context.rva = 0x6fb8 +MDRawContextX86 + context_flags = 0x1003f + dr0 = 0x0 + dr1 = 0x0 + dr2 = 0x0 + dr3 = 0x0 + dr6 = 0x0 + dr7 = 0x0 + float_save.control_word = 0xffff027f + float_save.status_word = 0xffff0000 + float_save.tag_word = 0xffffffff + float_save.error_offset = 0x0 + float_save.error_selector = 0x120000 + float_save.data_offset = 0x0 + float_save.data_selector = 0xffff0000 + float_save.register_area[80] = 0x00000000305a1700961548fb120030dd2e00000000000000a8dd010000008cdb120048db120000000500000078071500000020db12000d00000064dd3807917cffffffff3207000096032cb6c20330dd + float_save.cr0_npx_state = 0x0 + gs = 0x0 + fs = 0x3b + es = 0x23 + ds = 0x23 + edi = 0x0 + esi = 0x1f0 + ebx = 0x3c2b760 + edx = 0x10 + ecx = 0x16d158 + eax = 0x102031b0 + ebp = 0x41ffe8c + eip = 0x7c90eb94 + cs = 0x1b + eflags = 0x246 + esp = 0x41ffe28 + ss = 0x23 + extended_registers[512] = 0x7f0200000000120000000000000000000000000000000000801f0000ffff000000000000305a1700961500000000000048fb120030dd2e00000000000000000000000000a8dd010000000000000000008cdb120048db120000000000000000000500000078071500000000000000000020db12000d00000064dd0000000000003807917cffffffff3207000000000000000096032cb6c20330dd000000000000000096037004ac0000000000d0dd1200360000006c00fd7f0b00000000009603eb06917c48fb12000000000000000000d0b5c2030d00000001000000b804ac00f0b7c20364005c002805ac001300000038b7c203000000007022917c9615917c08000000f8db1200000015009803ac000c000000f8b7c2030000150008000000d0db12009803ac0008000000080000005004ac005004ac00f0a9b703ab06917cc0bec203f4bdc20330dd2e000b000000a801ac0010000000000015000002ac000500000008000000eb06917c48fb120030dd2e00000000004400000018ee907c3807917cffffffff5b0000005004ac00eb06917cacbcc20330dd2e000000000060bec2030600000030dd2e000000000030dd2e002805ac000002ac007801ac0017000000b4de1200000000080002ac002e00000010bac2030000000038b7c2036401ac00000000000000000038b7c203b800000040b7c203000000005004ac00 +Stack +0x00000000c0e9907cdb25807cf001000000000000000000003431917cf4da120060b7c20314000000010000000000000000000000100000000060fd7fb8fe1f0400c0fd7f0060fd7f000000003431917c3cfe1f0460b7c203a4ff1f04f399837c0826807c00000000a0fe1f044225807cf0010000ffffffff00000000c0fe1f04ff1e0330f0010000fffffffffffffffffffffffff0b5c203ffffffffdcfe1f043198023064bcc2035cbbc203ffffffff000000005cbbc203f8fe1f04ff9f0230f0b5c203f0bbc20340bbc203fffffffff0b5c20324ff1f04016b0d03f0bbc203ffffffff40bbc203000000000000000040bbc20301000000000000000000000040ff1f0447580d0344ff1f04e6662e00a0bdc20344ff1f04e96a2e005cff1f04d35d2e0050bdc20350bdc203000000000000000090bdc2036cff1f04d9b7023090bdc203f0b5c2037cff1f0457fd0230f0b5c203f0b5c203b4ff1f0466322010f0b5c2033431917cf4da120060b7c2030000000040aec20388ff1f0414015080dcff1f0434c020107877261000000000ecff1f040bb5807c40aec2033431917cf4da120060b7c2030060fd7f00069c86c0ff1f04f0399383fffffffff399837c18b5807c000000000000000000000000b031201060b7c20300000000 +thread[7] +MDRawThread + thread_id = 0x2f8 + suspend_count = 0 + priority_class = 0x0 + priority = 0x0 + teb = 0x7ffd9000 + stack.start_of_memory_range = 0x3e6fe50 + stack.memory.data_size = 0x1b0 + stack.memory.rva = 0xf6eb + thread_context.data_size = 0x2cc + thread_context.rva = 0x7284 +MDRawContextX86 + context_flags = 0x1003f + dr0 = 0x0 + dr1 = 0x0 + dr2 = 0x0 + dr3 = 0x0 + dr6 = 0x0 + dr7 = 0x0 + float_save.control_word = 0xffff027f + float_save.status_word = 0xffff0000 + float_save.tag_word = 0xffffffff + float_save.error_offset = 0x0 + float_save.error_selector = 0x120000 + float_save.data_offset = 0x0 + float_save.data_selector = 0xffff0000 + float_save.register_area[80] = 0x188d5504788c5504961584af1200f0c18f02000000000001145f12000c7c010000006c5d1200000005000000780715000000445d120000000000885f3807917cffffffff320700009603f47f5504f0c1 + float_save.cr0_npx_state = 0x0 + gs = 0x0 + fs = 0x3b + es = 0x23 + ds = 0x23 + edi = 0x0 + esi = 0x1b4 + ebx = 0x4558180 + edx = 0x2000 + ecx = 0x3e6fa1c + eax = 0x4563000 + ebp = 0x3e6feb8 + eip = 0x7c90eb94 + cs = 0x1b + eflags = 0x297 + esp = 0x3e6fe54 + ss = 0x23 + extended_registers[512] = 0x7f0200000000120000000000000000000000000000000000801f0000ffff0000188d5504788c5504961500000000000084af1200f0c18f02000000000000000000000001145f12000c7c000000000000010000006c5d1200000000000000000005000000780715000000000000000000445d120000000000885f0000000000003807917cffffffff320700000000000000009603f47f5504f0c1000000000000000096030c0000000c0000007801ac0084af1200000000000000000000009603c85d12007801ac0000000000f87e5504987f5504fc5d12000100000088a32610108255049615917ceb06917c0c00000000815504000000000c6012003815917c080000007801ac004e0100001803ac000c00000018825504cb00000006000000840000001803ac000800000008000000d003ac002804ac00d003ac0050601200608155049615917c0900000009000000d003ac001000000018bf26102804ac00407f5504400000000b00000000000000000000003207917c34000000b083550408000000387f550456000000d003ac0000000000387f550458000000407f55047801ac004b00000058000000000000000000ac00905c12002804ac00e05e120017000000f006917c00080000eb06917c2e000000b083550400000000588155046401ac00000000000000000058815504b80000006081550400000000d003ac00 +Stack +0x00000000c0e9907cdb25807cb40100000000000088fee6030000ac00f87e550480815504140000000100000000000000000000001000000000ba3cdcffffffff00c0fd7f0090fd7f88fee6030000000068fee60300000000a4ffe603f399837c0826807c00000000ccfee6034225807cb401000060ea000000000000ecfee603ff1e0330b401000060ea000060ea00000a000000b87f550460ea000008ffe60331980230a4a39b039ca29b0360ea000000000000f87e550424ffe603ff9f0230b87f550430a39b0380a29b0360ea0000b87f55045cffe6032851b40230a39b0360ea000020ed7204f00c000060ea0000db55460080a29b03000000000000000080a29b0301000000a8a19b036cffe603d9b70230a8a19b03b87f55047cffe60357fd0230b87f5504b87f5504b4ffe60366322010b87f55040000ac00f87e55048081550400000000b018560488ffe60314015080dcffe60334c020107877261000000000ecffe6030bb5807cb01856040000ac00f87e5504808155040090fd7f00069c86c0ffe603b8e3b683fffffffff399837c18b5807c000000000000000000000000b03120108081550400000000 +thread[8] +MDRawThread + thread_id = 0x12f8 + suspend_count = 0 + priority_class = 0x0 + priority = 0x0 + teb = 0x7ffd7000 + stack.start_of_memory_range = 0x406fe2c + stack.memory.data_size = 0x1d4 + stack.memory.rva = 0xf89b + thread_context.data_size = 0x2cc + thread_context.rva = 0x7550 +MDRawContextX86 + context_flags = 0x1003f + dr0 = 0x0 + dr1 = 0x0 + dr2 = 0x0 + dr3 = 0x0 + dr6 = 0x0 + dr7 = 0x0 + float_save.control_word = 0xffff027f + float_save.status_word = 0xffff0000 + float_save.tag_word = 0xffffffff + float_save.error_offset = 0x0 + float_save.error_selector = 0x4900000 + float_save.data_offset = 0x0 + float_save.data_selector = 0xffff0000 + float_save.register_area[80] = 0x44fb84033815917c961518ee907c95020000502b00000000000000000000000000007cf9840300000500000078071500780154f98403e8093d0098fb3807917cffffffff3207000096037801ac009502 + float_save.cr0_npx_state = 0x0 + gs = 0x0 + fs = 0x3b + es = 0x23 + ds = 0x23 + edi = 0x0 + esi = 0x21c + ebx = 0x455fb58 + edx = 0x303b2 + ecx = 0x10 + eax = 0xfb + ebp = 0x406fe94 + eip = 0x7c90eb94 + cs = 0x1b + eflags = 0x297 + esp = 0x406fe30 + ss = 0x23 + extended_registers[512] = 0x7f0200000000900400000000000000000000000000000000801f0000ffff000044fb84033815917c961500000000000018ee907c95020000502b00000000000000000000000000000000000000000000000000007cf9840300000000000000000500000078071500780100000000000054f98403e8093d0098fb0000000000003807917cffffffff3207000000000000000096037801ac0095020000000000000000960300000000d8f9840300002004c0f9840368f955047801ac000000960338fb55043815917c00000000eb06917c70f955049502000001000000f0f75504e8fb55040000000002000000e0fa5504d8fa55040000000000000000d8f984030800000000000000b4f9840330fb55040c000000c871a771b844a571ffffffff7801ac007943ab71700100007801ac007801ac00f0fb550488fa84037801ac00a8f816007801ac008243ab717801ac00950200007801ac007801ac000000960338fb55047001000000002004010000007801ac0088fa84038300000000000000000400000cfb8403a500000000f95504700100007801ac000200000000000000080000009a0000007001000068f95504c8fa84039615917c38fb550418ee907c17000000502b1201000000000c0000002e000000e4fa84030000000030fb55046801ac00000000000000000030fb5504b800000038fb5504000000007801ac00 +Stack +0x00000000c0e9907cdb25807c1c0200000000000064fe0604000000000000000058fb5504140000000100000000000000000000001000000000ba3cdcffffffff00c0fd7f0070fd7f64fe06040000000044fe060400000000a4ff0604f399837c0826807c00000000a8fe06044225807c1c02000060ea000000000000c8fe0604ff1e03301c02000060ea000060ea0000ccfe060490f9550460ea0000e4fe060431980230043d1201fc3b120160ea0000000000000000000000ff0604ff9f023090f95504903c1201e03b120160ea000090f955043cff0604fbecb702903c120160ea0000503b120168ad2010e03b12010000000060ea00006f334600e03b12010000000000000000e03b1201010000005cff0604c5efb70258ff06040000000020800000201b6204503b1201481a62046cff0604d9b70230503b120190f955047cff060457fd023090f9550490f95504b4ff06046632201090f95504000000000000000058fb5504000000002823560488ff060414015080dcff060434c020107877261000000000ecff06040bb5807c28235604000000000000000058fb55040070fd7f00069c86c0ff06048881f184fffffffff399837c18b5807c000000000000000000000000b031201058fb550400000000 +MinidumpModuleList + module_count = 111 +module[0] +MDRawModule + base_of_image = 0x400000 + size_of_image = 0x1b000 + checksum = 0x0 + time_date_stamp = 0x44172bbf + module_name_rva = 0x3226 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x10006:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 72 + cv_record.rva = 0x781c + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\firefox.exe" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = ce283cf5-b088-4941-b668-af615ab364dc + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\browser\app\firefox.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\browser\app\firefox.pdb" +module[1] +MDRawModule + base_of_image = 0x7c900000 + size_of_image = 0xb0000 + checksum = 0xaf2f7 + time_date_stamp = 0x411096b4 + module_name_rva = 0x3284 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 34 + cv_record.rva = 0x7864 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\ntdll.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 36515fb5-d043-45e4-91f6-72fa2e2878c0 + (cv_record).age = 2 + (cv_record).pdb_file_name = "ntdll.pdb" + (misc_record) = (null) + (debug_filename) = "ntdll.pdb" +module[2] +MDRawModule + base_of_image = 0x7c800000 + size_of_image = 0xf4000 + checksum = 0xff848 + time_date_stamp = 0x411096b4 + module_name_rva = 0x32c4 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 37 + cv_record.rva = 0x7886 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\kernel32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = fb334fb2-8fa3-4128-bde9-229285be4c2f + (cv_record).age = 2 + (cv_record).pdb_file_name = "kernel32.pdb" + (misc_record) = (null) + (debug_filename) = "kernel32.pdb" +module[3] +MDRawModule + base_of_image = 0x10000000 + size_of_image = 0x34000 + checksum = 0x0 + time_date_stamp = 0x44172a6a + module_name_rva = 0x330a + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 72 + cv_record.rva = 0x78ab + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\xul.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 1e9ed19a-1192-4b84-b659-91b62955c394 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\toolkit\library\xul.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\toolkit\library\xul.pdb" +module[4] +MDRawModule + base_of_image = 0x270000 + size_of_image = 0x133000 + checksum = 0x0 + time_date_stamp = 0x441720bc + module_name_rva = 0x3360 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 75 + cv_record.rva = 0x78f3 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\xpcom_core.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 584a7c15-1182-4dce-b5f1-6143772e544e + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\xpcom\build\xpcom_core.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\xpcom\build\xpcom_core.pdb" +module[5] +MDRawModule + base_of_image = 0x30000000 + size_of_image = 0x4c000 + checksum = 0x0 + time_date_stamp = 0x44171ff0 + module_name_rva = 0x33c4 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x40007:0x0 + version_info.product_version = 0x40007:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x3 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 73 + cv_record.rva = 0x793e + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\nspr4.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = bdca0efb-2da1-42f1-a9e4-4ae53ecc8357 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\nsprpub\pr\src\nspr4.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\nsprpub\pr\src\nspr4.pdb" +module[6] +MDRawModule + base_of_image = 0x77dd0000 + size_of_image = 0x9b000 + checksum = 0xa0de4 + time_date_stamp = 0x411096a7 + module_name_rva = 0x341e + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 37 + cv_record.rva = 0x7987 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\advapi32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 455d6c5f-184d-45bb-b5c5-f30f82975114 + (cv_record).age = 2 + (cv_record).pdb_file_name = "advapi32.pdb" + (misc_record) = (null) + (debug_filename) = "advapi32.pdb" +module[7] +MDRawModule + base_of_image = 0x77e70000 + size_of_image = 0x91000 + checksum = 0x9c482 + time_date_stamp = 0x411096ae + module_name_rva = 0x3464 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 35 + cv_record.rva = 0x79ac + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\rpcrt4.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = bea45a72-1da1-41da-a3ba-86b3a2031153 + (cv_record).age = 2 + (cv_record).pdb_file_name = "rpcrt4.pdb" + (misc_record) = (null) + (debug_filename) = "rpcrt4.pdb" +module[8] +MDRawModule + base_of_image = 0x71ad0000 + size_of_image = 0x9000 + checksum = 0x12c31 + time_date_stamp = 0x411096ff + module_name_rva = 0x34a6 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 36 + cv_record.rva = 0x79cf + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\wsock32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = e7b6c17e-4360-4822-813d-3b65499b6c0f + (cv_record).age = 2 + (cv_record).pdb_file_name = "wsock32.pdb" + (misc_record) = (null) + (debug_filename) = "wsock32.pdb" +module[9] +MDRawModule + base_of_image = 0x71ab0000 + size_of_image = 0x17000 + checksum = 0x2030b + time_date_stamp = 0x411096f2 + module_name_rva = 0x34ea + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 35 + cv_record.rva = 0x79f3 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\ws2_32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 07ac0883-1007-408d-919e-0ccf1ea499bf + (cv_record).age = 2 + (cv_record).pdb_file_name = "ws2_32.pdb" + (misc_record) = (null) + (debug_filename) = "ws2_32.pdb" +module[10] +MDRawModule + base_of_image = 0x77c10000 + size_of_image = 0x58000 + checksum = 0x57cd3 + time_date_stamp = 0x41109752 + module_name_rva = 0x352c + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x70000:0xa280884 + version_info.product_version = 0x60001:0x21be0884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x1 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 35 + cv_record.rva = 0x7a16 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\msvcrt.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = a678f3c3-0ded-426b-8390-32b996987e38 + (cv_record).age = 1 + (cv_record).pdb_file_name = "msvcrt.pdb" + (misc_record) = (null) + (debug_filename) = "msvcrt.pdb" +module[11] +MDRawModule + base_of_image = 0x71aa0000 + size_of_image = 0x8000 + checksum = 0xaff6 + time_date_stamp = 0x411096f3 + module_name_rva = 0x356e + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 36 + cv_record.rva = 0x7a39 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\ws2help.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 537ce830-efe9-4fe3-a92c-95153bdb7146 + (cv_record).age = 2 + (cv_record).pdb_file_name = "ws2help.pdb" + (misc_record) = (null) + (debug_filename) = "ws2help.pdb" +module[12] +MDRawModule + base_of_image = 0x76b40000 + size_of_image = 0x2d000 + checksum = 0x2ed0a + time_date_stamp = 0x411096d6 + module_name_rva = 0x35b2 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 34 + cv_record.rva = 0x7a5d + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\winmm.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 4fc9f179-9647-45ca-a3c7-8d6fadfc2832 + (cv_record).age = 2 + (cv_record).pdb_file_name = "winmm.pdb" + (misc_record) = (null) + (debug_filename) = "winmm.pdb" +module[13] +MDRawModule + base_of_image = 0x77d40000 + size_of_image = 0x90000 + checksum = 0x9505c + time_date_stamp = 0x42260159 + module_name_rva = 0x35f2 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280a3e + version_info.product_version = 0x50001:0xa280a3e + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 35 + cv_record.rva = 0x7a7f + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\user32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = ee2b714d-83a3-4c9d-8802-7621272f8326 + (cv_record).age = 2 + (cv_record).pdb_file_name = "user32.pdb" + (misc_record) = (null) + (debug_filename) = "user32.pdb" +module[14] +MDRawModule + base_of_image = 0x77f10000 + size_of_image = 0x47000 + checksum = 0x4d0d0 + time_date_stamp = 0x43b34feb + module_name_rva = 0x3634 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280b02 + version_info.product_version = 0x50001:0xa280b02 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 34 + cv_record.rva = 0x7aa2 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\gdi32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = c0ea66be-00a6-4bd7-aef7-9e443a91869c + (cv_record).age = 2 + (cv_record).pdb_file_name = "gdi32.pdb" + (misc_record) = (null) + (debug_filename) = "gdi32.pdb" +module[15] +MDRawModule + base_of_image = 0x10200000 + size_of_image = 0x87000 + checksum = 0x915f5 + time_date_stamp = 0x3e77de16 + module_name_rva = 0x3674 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x7000a:0xc050000 + version_info.product_version = 0x7000a:0xc050000 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x1 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 37 + cv_record.rva = 0x7ac4 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\msvcr71d.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = a286c371-23da-449e-bb63-b87354610d22 + (cv_record).age = 1 + (cv_record).pdb_file_name = "msvcr71d.pdb" + (misc_record) = (null) + (debug_filename) = "msvcr71d.pdb" +module[16] +MDRawModule + base_of_image = 0x3b0000 + size_of_image = 0xb000 + checksum = 0x0 + time_date_stamp = 0x44171ff4 + module_name_rva = 0x36ba + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x40007:0x0 + version_info.product_version = 0x40007:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x3 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 78 + cv_record.rva = 0x7ae9 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\plc4.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = d420f074-81bb-4eb3-8d6b-5e4c33e7db73 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\nsprpub\lib\libc\src\plc4.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\nsprpub\lib\libc\src\plc4.pdb" +module[17] +MDRawModule + base_of_image = 0x3c0000 + size_of_image = 0x9000 + checksum = 0x0 + time_date_stamp = 0x44171ff1 + module_name_rva = 0x3712 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x40007:0x0 + version_info.product_version = 0x40007:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x3 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 73 + cv_record.rva = 0x7b37 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\plds4.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 385f5c08-a70d-491f-b48f-e0d1f3c9a1c7 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\nsprpub\lib\ds\plds4.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\nsprpub\lib\ds\plds4.pdb" +module[18] +MDRawModule + base_of_image = 0x7c9c0000 + size_of_image = 0x815000 + checksum = 0x81cd3e + time_date_stamp = 0x433370f6 + module_name_rva = 0x376c + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x60000:0xb540acb + version_info.product_version = 0x60000:0xb540acb + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 36 + cv_record.rva = 0x7b80 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\shell32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 48106cb6-8068-4680-899c-05c75658bb15 + (cv_record).age = 2 + (cv_record).pdb_file_name = "shell32.pdb" + (misc_record) = (null) + (debug_filename) = "shell32.pdb" +module[19] +MDRawModule + base_of_image = 0x77f60000 + size_of_image = 0x76000 + checksum = 0x7fcb5 + time_date_stamp = 0x43c2a517 + module_name_rva = 0x37b0 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x60000:0xb540b07 + version_info.product_version = 0x60000:0xb540b07 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 36 + cv_record.rva = 0x7ba4 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\shlwapi.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 2c2623fd-8435-4ae6-b89e-3457ef94bd2e + (cv_record).age = 2 + (cv_record).pdb_file_name = "shlwapi.pdb" + (misc_record) = (null) + (debug_filename) = "shlwapi.pdb" +module[20] +MDRawModule + base_of_image = 0x774e0000 + size_of_image = 0x13d000 + checksum = 0x13dc6b + time_date_stamp = 0x42e5be93 + module_name_rva = 0x37f4 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280aa6 + version_info.product_version = 0x50001:0xa280aa6 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 34 + cv_record.rva = 0x7bc8 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\ole32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 683b65b2-46f4-4187-96d2-ee6d4c55eb11 + (cv_record).age = 2 + (cv_record).pdb_file_name = "ole32.pdb" + (misc_record) = (null) + (debug_filename) = "ole32.pdb" +module[21] +MDRawModule + base_of_image = 0x77c00000 + size_of_image = 0x8000 + checksum = 0x11d78 + time_date_stamp = 0x411096b7 + module_name_rva = 0x3834 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 36 + cv_record.rva = 0x7bea + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\version.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 180a90c4-0384-463e-82dd-c45b2c8ab76e + (cv_record).age = 2 + (cv_record).pdb_file_name = "version.pdb" + (misc_record) = (null) + (debug_filename) = "version.pdb" +module[22] +MDRawModule + base_of_image = 0x420000 + size_of_image = 0x126000 + checksum = 0x0 + time_date_stamp = 0x44172054 + module_name_rva = 0x3878 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x40000:0x0 + version_info.product_version = 0x40000:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x10004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 66 + cv_record.rva = 0x7c0e + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\js3250.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 6fb91d31-f9c7-4198-a3c9-096daf9aeb7d + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\js\src\js3250.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\js\src\js3250.pdb" +module[23] +MDRawModule + base_of_image = 0x773d0000 + size_of_image = 0x102000 + checksum = 0x1043f0 + time_date_stamp = 0x4110968c + module_name_rva = 0x38d4 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x60000:0xb540884 + version_info.product_version = 0x60000:0xb540884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 83 + cv_record.rva = 0x7c50 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = c454919c-0316-4361-8f4c-ac675cbc6440 + (cv_record).age = 1 + (cv_record).pdb_file_name = "MicrosoftWindowsCommon-Controls-6.0.2600.2180-comctl32.pdb" + (misc_record) = (null) + (debug_filename) = "MicrosoftWindowsCommon-Controls-6.0.2600.2180-comctl32.pdb" +module[24] +MDRawModule + base_of_image = 0x74720000 + size_of_image = 0x4b000 + checksum = 0x49029 + time_date_stamp = 0x411096ea + module_name_rva = 0x39bc + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 34 + cv_record.rva = 0x7ca3 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\MSCTF.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 27ce4025-aee4-4b56-9b9e-d28f7b4e15e3 + (cv_record).age = 2 + (cv_record).pdb_file_name = "msctf.pdb" + (misc_record) = (null) + (debug_filename) = "msctf.pdb" +module[25] +MDRawModule + base_of_image = 0x63000000 + size_of_image = 0x14000 + checksum = 0x0 + time_date_stamp = 0x3ef8d1d1 + module_name_rva = 0x39fc + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x70002:0x3000a + version_info.product_version = 0x70002:0x3000a + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 0 + cv_record.rva = 0x0 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\SynTPFcs.dll" + (cv_record) = (null) + (misc_record) = (null) + (debug_filename) = (null) +module[26] +MDRawModule + base_of_image = 0xf50000 + size_of_image = 0x6000 + checksum = 0x0 + time_date_stamp = 0x42a71e65 + module_name_rva = 0x3a42 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x4000b:0x8a + version_info.product_version = 0x4000b:0x8a + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 0 + cv_record.rva = 0x0 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\Program Files\Utimaco\SafeGuard Easy\SgMsgBhk.dll" + (cv_record) = (null) + (misc_record) = (null) + (debug_filename) = (null) +module[27] +MDRawModule + base_of_image = 0x76fd0000 + size_of_image = 0x7f000 + checksum = 0x7b912 + time_date_stamp = 0x42e5be90 + module_name_rva = 0x3ab0 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x7d1000c:0x113e0134 + version_info.product_version = 0x30000:0x113e + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x20 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 36 + cv_record.rva = 0x7cc5 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\clbcatq.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 58d39469-4efa-45de-961f-5c692b3211bc + (cv_record).age = 2 + (cv_record).pdb_file_name = "clbcatq.pdb" + (misc_record) = (null) + (debug_filename) = "clbcatq.pdb" +module[28] +MDRawModule + base_of_image = 0x77050000 + size_of_image = 0xc5000 + checksum = 0xc916e + time_date_stamp = 0x411096b4 + module_name_rva = 0x3af4 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x7d1000c:0x113e0102 + version_info.product_version = 0x30000:0x113e + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x20 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 35 + cv_record.rva = 0x7ce9 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\comres.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = d81244c4-1029-461f-aabc-731cfddf0ae0 + (cv_record).age = 8 + (cv_record).pdb_file_name = "COMRes.pdb" + (misc_record) = (null) + (debug_filename) = "COMRes.pdb" +module[29] +MDRawModule + base_of_image = 0x77120000 + size_of_image = 0x8c000 + checksum = 0x96957 + time_date_stamp = 0x411096f3 + module_name_rva = 0x3b36 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 37 + cv_record.rva = 0x7d0c + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\oleaut32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 149fb0c8-30bc-400d-ba99-728efb58a113 + (cv_record).age = 2 + (cv_record).pdb_file_name = "oleaut32.pdb" + (misc_record) = (null) + (debug_filename) = "oleaut32.pdb" +module[30] +MDRawModule + base_of_image = 0x11a0000 + size_of_image = 0xab000 + checksum = 0x0 + time_date_stamp = 0x441728d6 + module_name_rva = 0x3b7c + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 83 + cv_record.rva = 0x7d31 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\accessibility.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = ba2e9f7e-baf4-4a93-b83d-fe608deaf5bf + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\accessible\build\accessibility.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\accessible\build\accessibility.pdb" +module[31] +MDRawModule + base_of_image = 0x1250000 + size_of_image = 0x28000 + checksum = 0x0 + time_date_stamp = 0x44172342 + module_name_rva = 0x3bfc + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 66 + cv_record.rva = 0x7d84 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\gkgfx.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 8cc0258b-8361-4115-b006-c6e06b2d1f94 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\gfx\src\gkgfx.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\gfx\src\gkgfx.pdb" +module[32] +MDRawModule + base_of_image = 0x10480000 + size_of_image = 0xbc000 + checksum = 0xc6ae8 + time_date_stamp = 0x3e77de37 + module_name_rva = 0x3c56 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x7000a:0xc050000 + version_info.product_version = 0x7000a:0xc050000 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x1 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 37 + cv_record.rva = 0x7dc6 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\msvcp71d.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = e4296eeb-3f9a-4d0b-a18d-6207eb11426b + (cv_record).age = 1 + (cv_record).pdb_file_name = "msvcp71d.pdb" + (misc_record) = (null) + (debug_filename) = "msvcp71d.pdb" +module[33] +MDRawModule + base_of_image = 0x1280000 + size_of_image = 0x35000 + checksum = 0x0 + time_date_stamp = 0x44172922 + module_name_rva = 0x3c9c + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 83 + cv_record.rva = 0x7deb + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\appcomps.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = d106f767-3a2e-43ce-b03e-5bca76381590 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\xpfe\components\build\appcomps.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\xpfe\components\build\appcomps.pdb" +module[34] +MDRawModule + base_of_image = 0x18f0000 + size_of_image = 0x3c000 + checksum = 0x0 + time_date_stamp = 0x4417283e + module_name_rva = 0x3d12 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 79 + cv_record.rva = 0x7e3e + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\appshell.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 7a9f6f93-778e-434c-850c-7045e0e002ba + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\xpfe\appshell\src\appshell.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\xpfe\appshell\src\appshell.pdb" +module[35] +MDRawModule + base_of_image = 0x12c0000 + size_of_image = 0x11000 + checksum = 0x0 + time_date_stamp = 0x44172842 + module_name_rva = 0x3d88 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 73 + cv_record.rva = 0x7e8d + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\auth.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 48a2d3e3-4ecb-46ad-bbed-6d8ec74be5a1 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\extensions\auth\auth.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\extensions\auth\auth.pdb" +module[36] +MDRawModule + base_of_image = 0x1930000 + size_of_image = 0x18000 + checksum = 0x0 + time_date_stamp = 0x44172a51 + module_name_rva = 0x3df6 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 94 + cv_record.rva = 0x7ed6 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\autoconfig.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 892f887b-90bc-4a77-a94c-6a5e458beb08 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\extensions\pref\autoconfig\src\autoconfig.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\extensions\pref\autoconfig\src\autoconfig.pdb" +module[37] +MDRawModule + base_of_image = 0x1950000 + size_of_image = 0xc000 + checksum = 0x0 + time_date_stamp = 0x44172b8f + module_name_rva = 0x3e70 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 102 + cv_record.rva = 0x7f34 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\browserdirprovider.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 6e2d9bbd-9cd7-4163-b294-e952567e69ca + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\browser\components\dirprovider\browserdirprovider.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\browser\components\dirprovider\browserdirprovider.pdb" +module[38] +MDRawModule + base_of_image = 0x1960000 + size_of_image = 0xde000 + checksum = 0x0 + time_date_stamp = 0x44172bb6 + module_name_rva = 0x3efa + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 86 + cv_record.rva = 0x7f9a + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\brwsrcmp.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 14128c9f-69d5-4d8d-8d95-b54d7a7b4d85 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\browser\components\build\brwsrcmp.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\browser\components\build\brwsrcmp.pdb" +module[39] +MDRawModule + base_of_image = 0x1a40000 + size_of_image = 0x2f000 + checksum = 0x0 + time_date_stamp = 0x441720c7 + module_name_rva = 0x3f70 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 80 + cv_record.rva = 0x7ff0 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\xpcom_compat.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 4ef11cba-8daa-4975-b122-6e6c2f3fb51e + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\xpcom\obsolete\xpcom_compat.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\xpcom\obsolete\xpcom_compat.pdb" +module[40] +MDRawModule + base_of_image = 0x1a70000 + size_of_image = 0x2d000 + checksum = 0x0 + time_date_stamp = 0x44172307 + module_name_rva = 0x3fd8 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 66 + cv_record.rva = 0x8040 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\caps.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = a90d22b0-0f75-45d7-b20b-6e9673ceb799 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\caps\src\caps.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\caps\src\caps.pdb" +module[41] +MDRawModule + base_of_image = 0x1aa0000 + size_of_image = 0x2f000 + checksum = 0x0 + time_date_stamp = 0x44172912 + module_name_rva = 0x4046 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 70 + cv_record.rva = 0x8082 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\chrome.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = e35cbd83-d29a-45a5-a7ad-b5709d4abd3a + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\chrome\src\chrome.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\chrome\src\chrome.pdb" +module[42] +MDRawModule + base_of_image = 0x1ad0000 + size_of_image = 0x11000 + checksum = 0x0 + time_date_stamp = 0x4417293d + module_name_rva = 0x40b8 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 97 + cv_record.rva = 0x80c8 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\cmdlines.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 08e29112-a3fa-44ff-bd5c-d38db16e79af + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\toolkit\components\commandlines\src\cmdlines.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\toolkit\components\commandlines\src\cmdlines.pdb" +module[43] +MDRawModule + base_of_image = 0x1af0000 + size_of_image = 0x35000 + checksum = 0x0 + time_date_stamp = 0x44172832 + module_name_rva = 0x412e + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 81 + cv_record.rva = 0x8129 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\composer.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 6e5d68fc-fdc1-4559-a1e8-8e9b1deb4ea9 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\editor\composer\src\composer.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\editor\composer\src\composer.pdb" +module[44] +MDRawModule + base_of_image = 0x1b30000 + size_of_image = 0x1a000 + checksum = 0x0 + time_date_stamp = 0x44172b33 + module_name_rva = 0x41a4 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 77 + cv_record.rva = 0x817a + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\cookie.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = b0e47f99-d675-42d8-b7cc-2d9ea0c837b0 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\extensions\cookie\cookie.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\extensions\cookie\cookie.pdb" +module[45] +MDRawModule + base_of_image = 0x1b50000 + size_of_image = 0xa8000 + checksum = 0x0 + time_date_stamp = 0x441727b9 + module_name_rva = 0x4216 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 76 + cv_record.rva = 0x81c7 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\docshell.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = d2aceac9-ca3b-44b5-9d96-fa5413f2f3d3 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\docshell\build\docshell.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\docshell\build\docshell.pdb" +module[46] +MDRawModule + base_of_image = 0x1c00000 + size_of_image = 0x132000 + checksum = 0x0 + time_date_stamp = 0x44172824 + module_name_rva = 0x428c + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 82 + cv_record.rva = 0x8213 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\editor.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = ef8148d4-c16f-4bd5-be41-e41dd89a776b + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\editor\libeditor\build\editor.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\editor\libeditor\build\editor.pdb" +module[47] +MDRawModule + base_of_image = 0x1d40000 + size_of_image = 0x7b000 + checksum = 0x0 + time_date_stamp = 0x441727df + module_name_rva = 0x42fe + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 95 + cv_record.rva = 0x8265 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\embedcomponents.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 716f8df6-9152-4353-a9cc-364864025f18 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\embedding\components\build\embedcomponents.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\embedding\components\build\embedcomponents.pdb" +module[48] +MDRawModule + base_of_image = 0x73000000 + size_of_image = 0x26000 + checksum = 0x2a147 + time_date_stamp = 0x411096b6 + module_name_rva = 0x4382 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x3 + version_info.file_subtype = 0x1 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 37 + cv_record.rva = 0x82c4 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\winspool.drv" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 97a6ecc9-4ea7-450c-a7d3-75bd9dffca5e + (cv_record).age = 2 + (cv_record).pdb_file_name = "winspool.pdb" + (misc_record) = (null) + (debug_filename) = "winspool.pdb" +module[49] +MDRawModule + base_of_image = 0x763b0000 + size_of_image = 0x49000 + checksum = 0x4b1df + time_date_stamp = 0x411096b0 + module_name_rva = 0x43c8 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x60000:0xb540884 + version_info.product_version = 0x60000:0xb540884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 37 + cv_record.rva = 0x82e9 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\comdlg32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 4fcbead6-3d73-4599-8c1f-92d8dbb0dc27 + (cv_record).age = 2 + (cv_record).pdb_file_name = "comdlg32.pdb" + (misc_record) = (null) + (debug_filename) = "comdlg32.pdb" +module[50] +MDRawModule + base_of_image = 0x1dd0000 + size_of_image = 0x2f000 + checksum = 0x0 + time_date_stamp = 0x4417234e + module_name_rva = 0x440e + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 79 + cv_record.rva = 0x830e + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\gkgfxthebes.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = d73dd8a2-49bd-483a-8aad-ac22101cc29b + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\gfx\src\thebes\gkgfxthebes.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\gfx\src\thebes\gkgfxthebes.pdb" +module[51] +MDRawModule + base_of_image = 0x1e00000 + size_of_image = 0x68000 + checksum = 0x0 + time_date_stamp = 0x4417233a + module_name_rva = 0x448a + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 74 + cv_record.rva = 0x835d + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\thebes.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = b596a90c-d8d4-4c5c-84fe-0e64a981d63c + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\gfx\thebes\src\thebes.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\gfx\thebes\src\thebes.pdb" +module[52] +MDRawModule + base_of_image = 0x74d90000 + size_of_image = 0x6b000 + checksum = 0x656c9 + time_date_stamp = 0x411096ba + module_name_rva = 0x44e6 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x101a4:0xa280884 + version_info.product_version = 0x101a4:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 34 + cv_record.rva = 0x83a7 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\usp10.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 14c8d7f8-ab3c-48a4-b95a-73bac9a6b02c + (cv_record).age = 1 + (cv_record).pdb_file_name = "usp10.pdb" + (misc_record) = (null) + (debug_filename) = "usp10.pdb" +module[53] +MDRawModule + base_of_image = 0x1e80000 + size_of_image = 0x951000 + checksum = 0x0 + time_date_stamp = 0x4417271d + module_name_rva = 0x4526 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 74 + cv_record.rva = 0x83c9 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\gklayout.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 72800c10-fc1d-485c-865c-faf7e123534c + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\layout\build\gklayout.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\layout\build\gklayout.pdb" +module[54] +MDRawModule + base_of_image = 0x27e0000 + size_of_image = 0x85000 + checksum = 0x0 + time_date_stamp = 0x44172319 + module_name_rva = 0x459c + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 83 + cv_record.rva = 0x8413 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\gkparser.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 55b1514d-a272-4ad7-a4ef-47a75d4f956d + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\parser\htmlparser\src\gkparser.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\parser\htmlparser\src\gkparser.pdb" +module[55] +MDRawModule + base_of_image = 0x2870000 + size_of_image = 0x72000 + checksum = 0x0 + time_date_stamp = 0x44172372 + module_name_rva = 0x4612 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 85 + cv_record.rva = 0x8466 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\gkplugin.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = cf6be981-d782-4329-99df-b1659f73ef36 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\modules\plugin\base\src\gkplugin.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\modules\plugin\base\src\gkplugin.pdb" +module[56] +MDRawModule + base_of_image = 0x28f0000 + size_of_image = 0x9f000 + checksum = 0x0 + time_date_stamp = 0x441723d6 + module_name_rva = 0x4688 + version_info.signature = 0x0 + version_info.struct_version = 0x0 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x0 + version_info.file_flags = 0x0 + version_info.file_os = 0x0 + version_info.file_type = 0x0 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 78 + cv_record.rva = 0x84bb + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\gkwidget.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 8e419b10-afd6-4da8-ba8d-70b75f0f9b65 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\widget\src\build\gkwidget.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\widget\src\build\gkwidget.pdb" +module[57] +MDRawModule + base_of_image = 0x2990000 + size_of_image = 0x63000 + checksum = 0x0 + time_date_stamp = 0x4417224a + module_name_rva = 0x46fe + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 68 + cv_record.rva = 0x8509 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\i18n.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 05a30357-0008-4eab-81eb-004caaebc3c7 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\intl\build\i18n.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\intl\build\i18n.pdb" +module[58] +MDRawModule + base_of_image = 0x2a00000 + size_of_image = 0x13000 + checksum = 0x0 + time_date_stamp = 0x44172357 + module_name_rva = 0x476c + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 90 + cv_record.rva = 0x854d + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\imgicon.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 039e19b8-270a-4187-b4eb-4eccc0dc6292 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\modules\libpr0n\decoders\icon\imgicon.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\modules\libpr0n\decoders\icon\imgicon.pdb" +module[59] +MDRawModule + base_of_image = 0x2a20000 + size_of_image = 0x70000 + checksum = 0x0 + time_date_stamp = 0x44172360 + module_name_rva = 0x47e0 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 82 + cv_record.rva = 0x85a7 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\imglib2.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 1cc6948c-5364-405b-95fa-f6a8cc17e949 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\modules\libpr0n\build\imglib2.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\modules\libpr0n\build\imglib2.pdb" +module[60] +MDRawModule + base_of_image = 0x2a90000 + size_of_image = 0x1f000 + checksum = 0x0 + time_date_stamp = 0x44172012 + module_name_rva = 0x4854 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 74 + cv_record.rva = 0x85f9 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\mozz.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 072d6b76-ecd2-41cf-9623-2897a3866bf3 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\modules\zlib\src\mozz.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\modules\zlib\src\mozz.pdb" +module[61] +MDRawModule + base_of_image = 0x2ab0000 + size_of_image = 0xf000 + checksum = 0x0 + time_date_stamp = 0x4417224c + module_name_rva = 0x48ac + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 84 + cv_record.rva = 0x8643 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\intlcmpt.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 9bbbd5a9-bc77-41b5-9a71-3e73302c69b4 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\intl\compatibility\src\intlcmpt.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\intl\compatibility\src\intlcmpt.pdb" +module[62] +MDRawModule + base_of_image = 0x2ac0000 + size_of_image = 0x29000 + checksum = 0x0 + time_date_stamp = 0x441722d8 + module_name_rva = 0x4922 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 73 + cv_record.rva = 0x8697 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\jar50.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 15d6ee0d-b935-4be4-8984-3d6768449a64 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\modules\libjar\jar50.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\modules\libjar\jar50.pdb" +module[63] +MDRawModule + base_of_image = 0x2af0000 + size_of_image = 0x2e000 + checksum = 0x0 + time_date_stamp = 0x441729aa + module_name_rva = 0x4992 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 67 + cv_record.rva = 0x86e0 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\jsd3250.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 91f68816-8388-40a8-b90e-24ba5da2b786 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\js\jsd\jsd3250.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\js\jsd\jsd3250.pdb" +module[64] +MDRawModule + base_of_image = 0x2b20000 + size_of_image = 0xa000 + checksum = 0x0 + time_date_stamp = 0x4417291d + module_name_rva = 0x4a06 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 85 + cv_record.rva = 0x8723 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\mozfind.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = e91e5878-f2d4-4602-88da-47bef2986c78 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\xpfe\components\find\src\mozfind.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\xpfe\components\find\src\mozfind.pdb" +module[65] +MDRawModule + base_of_image = 0x2b30000 + size_of_image = 0x174000 + checksum = 0x0 + time_date_stamp = 0x441722be + module_name_rva = 0x4a7a + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 72 + cv_record.rva = 0x8778 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\necko.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 6a7583d2-b97e-4f29-9c40-59a1a2f3a021 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\netwerk\build\necko.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\netwerk\build\necko.pdb" +module[66] +MDRawModule + base_of_image = 0x2cb0000 + size_of_image = 0x21000 + checksum = 0x0 + time_date_stamp = 0x44172894 + module_name_rva = 0x4aea + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 72 + cv_record.rva = 0x87c0 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\oji.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 0cc03cae-31ba-4d6b-b16f-26ece3d85a09 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\modules\oji\src\oji.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\modules\oji\src\oji.pdb" +module[67] +MDRawModule + base_of_image = 0x2ce0000 + size_of_image = 0x28000 + checksum = 0x0 + time_date_stamp = 0x44172886 + module_name_rva = 0x4b56 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 79 + cv_record.rva = 0x8808 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\jsj3250.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 1c18ef87-64f1-44c7-a437-4efc3da223c9 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\js\src\liveconnect\jsj3250.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\js\src\liveconnect\jsj3250.pdb" +module[68] +MDRawModule + base_of_image = 0x2d10000 + size_of_image = 0xd000 + checksum = 0x0 + time_date_stamp = 0x44172b64 + module_name_rva = 0x4bb4 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 81 + cv_record.rva = 0x8857 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\perms.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 3f95755e-5b8f-4755-a098-922125ab7724 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\extensions\permissions\perms.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\extensions\permissions\perms.pdb" +module[69] +MDRawModule + base_of_image = 0x2d20000 + size_of_image = 0x18000 + checksum = 0x0 + time_date_stamp = 0x44172a17 + module_name_rva = 0x4c24 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 86 + cv_record.rva = 0x88a8 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\pipboot.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 16d11d56-afd1-4bd3-abff-80413e12c52a + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\security\manager\boot\src\pipboot.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\security\manager\boot\src\pipboot.pdb" +module[70] +MDRawModule + base_of_image = 0x2d40000 + size_of_image = 0x9e000 + checksum = 0x0 + time_date_stamp = 0x44172a3f + module_name_rva = 0x4c98 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 84 + cv_record.rva = 0x88fe + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\pipnss.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = a81e4e81-8507-4ee6-89ad-94b7af5f1095 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\security\manager\ssl\src\pipnss.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\security\manager\ssl\src\pipnss.pdb" +module[71] +MDRawModule + base_of_image = 0x2de0000 + size_of_image = 0x3a000 + checksum = 0x0 + time_date_stamp = 0x441729f2 + module_name_rva = 0x4d0a + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x3000b:0x10000 + version_info.product_version = 0x3000b:0x10000 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x3 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 69 + cv_record.rva = 0x8952 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\smime3.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 7c369855-5aae-437d-8a9b-fef4c6f6f272 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\nss\smime\smime3.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\nss\smime\smime3.pdb" +module[72] +MDRawModule + base_of_image = 0x2e20000 + size_of_image = 0xc9000 + checksum = 0x0 + time_date_stamp = 0x441729e0 + module_name_rva = 0x4d66 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x3000b:0x10000 + version_info.product_version = 0x3000b:0x10000 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x3 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 65 + cv_record.rva = 0x8997 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\nss3.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 4bfc7d95-5db2-452a-a22b-de636b85b417 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\nss\nss\nss3.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\nss\nss\nss3.pdb" +module[73] +MDRawModule + base_of_image = 0x2ef0000 + size_of_image = 0x71000 + checksum = 0x0 + time_date_stamp = 0x441729c6 + module_name_rva = 0x4dbe + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x3000b:0x10000 + version_info.product_version = 0x3000b:0x10000 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x3 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 73 + cv_record.rva = 0x89d8 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\softokn3.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 2834c90f-1695-4d72-9a1d-d2bfe14b76f9 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\nss\softokn\softokn3.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\nss\softokn\softokn3.pdb" +module[74] +MDRawModule + base_of_image = 0x2f70000 + size_of_image = 0x4a000 + checksum = 0x0 + time_date_stamp = 0x441729e8 + module_name_rva = 0x4e1e + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x3000b:0x10000 + version_info.product_version = 0x3000b:0x10000 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x3 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 65 + cv_record.rva = 0x8a21 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\ssl3.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = bd1c8dec-e181-4c32-b774-45b4ac769699 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\nss\ssl\ssl3.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\nss\ssl\ssl3.pdb" +module[75] +MDRawModule + base_of_image = 0x2fc0000 + size_of_image = 0x14000 + checksum = 0x0 + time_date_stamp = 0x44172a4c + module_name_rva = 0x4e76 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 84 + cv_record.rva = 0x8a62 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\pippki.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = f151d2ee-5bb2-474e-aa89-d9a33a7d51a5 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\security\manager\pki\src\pippki.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\security\manager\pki\src\pippki.pdb" +module[76] +MDRawModule + base_of_image = 0x2fe0000 + size_of_image = 0x56000 + checksum = 0x0 + time_date_stamp = 0x441722eb + module_name_rva = 0x4ee8 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 66 + cv_record.rva = 0x8ab6 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\rdf.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = ffd69462-7676-439a-8bcf-a91691b53a0c + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\rdf\build\rdf.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\rdf\build\rdf.pdb" +module[77] +MDRawModule + base_of_image = 0x3040000 + size_of_image = 0x3c000 + checksum = 0x0 + time_date_stamp = 0x44172938 + module_name_rva = 0x4f54 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 91 + cv_record.rva = 0x8af8 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\satchel.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = a060def4-62a9-4f01-9ce7-5431f4f76bbc + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\toolkit\components\satchel\src\satchel.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\toolkit\components\satchel\src\satchel.pdb" +module[78] +MDRawModule + base_of_image = 0x3080000 + size_of_image = 0x46000 + checksum = 0x0 + time_date_stamp = 0x44172b88 + module_name_rva = 0x4fc8 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 87 + cv_record.rva = 0x8b53 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\srchsvc.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 2bc65c93-99d5-4f75-a2bd-8d34558b326d + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\xpfe\components\search\src\srchsvc.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\xpfe\components\search\src\srchsvc.pdb" +module[79] +MDRawModule + base_of_image = 0x30d0000 + size_of_image = 0x7a000 + checksum = 0x0 + time_date_stamp = 0x44172a69 + module_name_rva = 0x503c + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 75 + cv_record.rva = 0x8baa + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\strgcmps.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 01cdab52-fbc2-4a10-9521-3fa689eda27d + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\storage\build\strgcmps.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\storage\build\strgcmps.pdb" +module[80] +MDRawModule + base_of_image = 0x3150000 + size_of_image = 0x15000 + checksum = 0x0 + time_date_stamp = 0x44172931 + module_name_rva = 0x50b2 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 96 + cv_record.rva = 0x8bf5 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\tkautoc.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = e07f7b03-7890-4b91-9e2c-bad76a2f0e97 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\toolkit\components\autocomplete\src\tkautoc.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\toolkit\components\autocomplete\src\tkautoc.pdb" +module[81] +MDRawModule + base_of_image = 0x3170000 + size_of_image = 0x3a000 + checksum = 0x0 + time_date_stamp = 0x44172941 + module_name_rva = 0x5126 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 86 + cv_record.rva = 0x8c55 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\tkitcmps.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 80fcaf2c-b79a-4f63-8789-7b37dd2723cd + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\toolkit\components\build\tkitcmps.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\toolkit\components\build\tkitcmps.pdb" +module[82] +MDRawModule + base_of_image = 0x31b0000 + size_of_image = 0xe000 + checksum = 0x0 + time_date_stamp = 0x44172828 + module_name_rva = 0x519c + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 75 + cv_record.rva = 0x8cab + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\txmgr.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = d65a5b44-ee41-46d9-9a49-92dab2f3624f + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\editor\txmgr\src\txmgr.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\editor\txmgr\src\txmgr.pdb" +module[83] +MDRawModule + base_of_image = 0x31c0000 + size_of_image = 0x106000 + checksum = 0x0 + time_date_stamp = 0x44172231 + module_name_rva = 0x520c + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 73 + cv_record.rva = 0x8cf6 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\uconv.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 99ac9d48-211b-477a-9415-1809725cb0a2 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\intl\uconv\src\uconv.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\intl\uconv\src\uconv.pdb" +module[84] +MDRawModule + base_of_image = 0x32d0000 + size_of_image = 0xf000 + checksum = 0x0 + time_date_stamp = 0x44172237 + module_name_rva = 0x527c + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 79 + cv_record.rva = 0x8d3f + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\ucvmath.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 66957e12-9a5c-4837-9f85-c9f6a9541006 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\intl\uconv\ucvmath\ucvmath.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\intl\uconv\ucvmath\ucvmath.pdb" +module[85] +MDRawModule + base_of_image = 0x32e0000 + size_of_image = 0x25000 + checksum = 0x0 + time_date_stamp = 0x4417287b + module_name_rva = 0x52f0 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 107 + cv_record.rva = 0x8d8e + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\universalchardet.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 8836d118-c383-434c-a312-887673b8c08e + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\extensions\universalchardet\src\xpcom\universalchardet.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\extensions\universalchardet\src\xpcom\universalchardet.pdb" +module[86] +MDRawModule + base_of_image = 0x3310000 + size_of_image = 0x3c000 + checksum = 0x0 + time_date_stamp = 0x441727eb + module_name_rva = 0x5376 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 85 + cv_record.rva = 0x8df9 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\webbrwsr.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 2ccf6083-dfd6-4b15-a9c5-9b86eda25dd3 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\embedding\browser\build\webbrwsr.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\embedding\browser\build\webbrwsr.pdb" +module[87] +MDRawModule + base_of_image = 0x3350000 + size_of_image = 0xf1000 + checksum = 0x0 + time_date_stamp = 0x44172870 + module_name_rva = 0x53ec + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 94 + cv_record.rva = 0x8e4e + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\websrvcs.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 819e3a3b-f285-4597-85cf-3123b523076a + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\extensions\webservices\build\src\websrvcs.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\extensions\webservices\build\src\websrvcs.pdb" +module[88] +MDRawModule + base_of_image = 0x3450000 + size_of_image = 0x33000 + checksum = 0x0 + time_date_stamp = 0x4417284b + module_name_rva = 0x5462 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 93 + cv_record.rva = 0x8eac + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\xmlextras.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 783e36d0-3d5e-40d7-b8d5-fede8eb80aac + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\extensions\xmlextras\build\src\xmlextras.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\extensions\xmlextras\build\src\xmlextras.pdb" +module[89] +MDRawModule + base_of_image = 0x3490000 + size_of_image = 0xd1000 + checksum = 0x0 + time_date_stamp = 0x441721cf + module_name_rva = 0x54da + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 81 + cv_record.rva = 0x8f09 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\xpc3250.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 409e253a-3ecc-4122-8663-8d98ff8bc066 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\js\src\xpconnect\src\xpc3250.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\js\src\xpconnect\src\xpc3250.pdb" +module[90] +MDRawModule + base_of_image = 0x3570000 + size_of_image = 0xe000 + checksum = 0x0 + time_date_stamp = 0x441720c9 + module_name_rva = 0x554e + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 92 + cv_record.rva = 0x8f5a + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\xpcom_compat_c.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 2ecedf87-ad8e-46c7-a809-5c59ac00087a + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\xpcom\obsolete\component\xpcom_compat_c.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\xpcom\obsolete\component\xpcom_compat_c.pdb" +module[91] +MDRawModule + base_of_image = 0x3580000 + size_of_image = 0x67000 + checksum = 0x0 + time_date_stamp = 0x44172999 + module_name_rva = 0x55d0 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 75 + cv_record.rva = 0x8fb6 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\xpinstal.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = bbfd3719-a789-48c8-b539-af0c32c3539c + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\xpinstall\src\xpinstal.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\xpinstall\src\xpinstal.pdb" +module[92] +MDRawModule + base_of_image = 0x35f0000 + size_of_image = 0x22000 + checksum = 0x0 + time_date_stamp = 0x441722fb + module_name_rva = 0x5646 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 81 + cv_record.rva = 0x9001 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\components\xppref32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 8dafa073-6c6c-46c8-b696-f12d084461c8 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\modules\libpref\src\xppref32.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\modules\libpref\src\xppref32.pdb" +module[93] +MDRawModule + base_of_image = 0x3620000 + size_of_image = 0x22000 + checksum = 0x0 + time_date_stamp = 0x44172b3e + module_name_rva = 0x56bc + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x0:0x0 + version_info.product_version = 0x0:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x9 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 93 + cv_record.rva = 0x9052 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\extensions\inspector@mozilla.org\components\inspector.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 67646af8-4653-4337-a45f-0beb845c92fc + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\extensions\inspector\build\src\inspector.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\extensions\inspector\build\src\inspector.pdb" +module[94] +MDRawModule + base_of_image = 0x71a50000 + size_of_image = 0x3f000 + checksum = 0x47a3c + time_date_stamp = 0x41109758 + module_name_rva = 0x5776 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 36 + cv_record.rva = 0x90af + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\mswsock.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = f6648803-69e2-43b7-8a86-03165451eab0 + (cv_record).age = 2 + (cv_record).pdb_file_name = "mswsock.pdb" + (misc_record) = (null) + (debug_filename) = "mswsock.pdb" +module[95] +MDRawModule + base_of_image = 0x662b0000 + size_of_image = 0x58000 + checksum = 0x57fcb + time_date_stamp = 0x411096a0 + module_name_rva = 0x57ba + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 36 + cv_record.rva = 0x90d3 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\hnetcfg.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = f662d314-f374-4997-84bc-0592b8db8bef + (cv_record).age = 1 + (cv_record).pdb_file_name = "HNetCfg.pdb" + (misc_record) = (null) + (debug_filename) = "HNetCfg.pdb" +module[96] +MDRawModule + base_of_image = 0x71a90000 + size_of_image = 0x8000 + checksum = 0x12290 + time_date_stamp = 0x411096fd + module_name_rva = 0x57fe + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 37 + cv_record.rva = 0x90f7 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\wshtcpip.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = de010d61-8735-45f4-9d43-d91367e871dc + (cv_record).age = 2 + (cv_record).pdb_file_name = "wshtcpip.pdb" + (misc_record) = (null) + (debug_filename) = "wshtcpip.pdb" +module[97] +MDRawModule + base_of_image = 0x746f0000 + size_of_image = 0x2a000 + checksum = 0x341bd + time_date_stamp = 0x41109729 + module_name_rva = 0x5844 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 35 + cv_record.rva = 0x911c + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\MSIMTF.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = cd2a06b7-a887-43cf-9cca-81dea9a98842 + (cv_record).age = 2 + (cv_record).pdb_file_name = "msimtf.pdb" + (misc_record) = (null) + (debug_filename) = "msimtf.pdb" +module[98] +MDRawModule + base_of_image = 0x20000000 + size_of_image = 0x2c5000 + checksum = 0x2d3044 + time_date_stamp = 0x411096b9 + module_name_rva = 0x5886 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 0 + cv_record.rva = 0x0 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\xpsp2res.dll" + (cv_record) = (null) + (misc_record) = (null) + (debug_filename) = (null) +module[99] +MDRawModule + base_of_image = 0x5ad70000 + size_of_image = 0x38000 + checksum = 0x3e638 + time_date_stamp = 0x411096bb + module_name_rva = 0x58cc + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x60000:0xb540884 + version_info.product_version = 0x60000:0xb540884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 36 + cv_record.rva = 0x913f + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\uxtheme.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = b982b8fe-390b-4359-ad3c-cecc16c0d59f + (cv_record).age = 2 + (cv_record).pdb_file_name = "uxtheme.pdb" + (misc_record) = (null) + (debug_filename) = "uxtheme.pdb" +module[100] +MDRawModule + base_of_image = 0x76390000 + size_of_image = 0x1d000 + checksum = 0x2a024 + time_date_stamp = 0x411096ae + module_name_rva = 0x5910 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 34 + cv_record.rva = 0x9163 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\imm32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 2c17a49c-251b-4c8e-b9e2-ad13d7d9ea16 + (cv_record).age = 2 + (cv_record).pdb_file_name = "imm32.pdb" + (misc_record) = (null) + (debug_filename) = "imm32.pdb" +module[101] +MDRawModule + base_of_image = 0x76380000 + size_of_image = 0x5000 + checksum = 0x5405 + time_date_stamp = 0x41109727 + module_name_rva = 0x5950 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 36 + cv_record.rva = 0x9185 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\msimg32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = e28d4258-d66b-428e-b5d7-4279eb57a08f + (cv_record).age = 2 + (cv_record).pdb_file_name = "msimg32.pdb" + (misc_record) = (null) + (debug_filename) = "msimg32.pdb" +module[102] +MDRawModule + base_of_image = 0x605d0000 + size_of_image = 0x9000 + checksum = 0x1447d + time_date_stamp = 0x4110972f + module_name_rva = 0x5994 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 35 + cv_record.rva = 0x91a9 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\mslbui.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 4e81fe42-1742-46f3-8bc5-8280403dd780 + (cv_record).age = 1 + (cv_record).pdb_file_name = "MSLBUI.pdb" + (misc_record) = (null) + (debug_filename) = "MSLBUI.pdb" +module[103] +MDRawModule + base_of_image = 0x76f20000 + size_of_image = 0x27000 + checksum = 0x31afa + time_date_stamp = 0x411096bd + module_name_rva = 0x59d6 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 35 + cv_record.rva = 0x91cc + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\dnsapi.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = a799adc3-1552-4318-b409-040f33c17aa2 + (cv_record).age = 2 + (cv_record).pdb_file_name = "dnsapi.pdb" + (misc_record) = (null) + (debug_filename) = "dnsapi.pdb" +module[104] +MDRawModule + base_of_image = 0x76fb0000 + size_of_image = 0x8000 + checksum = 0xad6f + time_date_stamp = 0x411096b3 + module_name_rva = 0x5a18 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 35 + cv_record.rva = 0x91ef + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\winrnr.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = a5953730-a350-4120-bceb-95b11d0d3b97 + (cv_record).age = 2 + (cv_record).pdb_file_name = "winrnr.pdb" + (misc_record) = (null) + (debug_filename) = "winrnr.pdb" +module[105] +MDRawModule + base_of_image = 0x76f60000 + size_of_image = 0x2c000 + checksum = 0x3811e + time_date_stamp = 0x411096bb + module_name_rva = 0x5a5a + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 36 + cv_record.rva = 0x9212 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\wldap32.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 025e111a-1921-44b0-a76e-5d156ba8a6a5 + (cv_record).age = 2 + (cv_record).pdb_file_name = "wldap32.pdb" + (misc_record) = (null) + (debug_filename) = "wldap32.pdb" +module[106] +MDRawModule + base_of_image = 0x76fc0000 + size_of_image = 0x6000 + checksum = 0xca69 + time_date_stamp = 0x411096a8 + module_name_rva = 0x5a9e + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 37 + cv_record.rva = 0x9236 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\rasadhlp.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 1fa989b2-899c-4e3e-94cb-74000514f592 + (cv_record).age = 2 + (cv_record).pdb_file_name = "rasadhlp.pdb" + (misc_record) = (null) + (debug_filename) = "rasadhlp.pdb" +module[107] +MDRawModule + base_of_image = 0x4a10000 + size_of_image = 0x4d000 + checksum = 0x0 + time_date_stamp = 0x441729c1 + module_name_rva = 0x5ae4 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x3000b:0x10000 + version_info.product_version = 0x3000b:0x10000 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x3 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 90 + cv_record.rva = 0x925b + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\freebl3.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 8a694ad9-aad6-4304-8447-8ed7270c325a + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\nss\freebl\WIN95_SINGLE_SHLIB\freebl3.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\nss\freebl\WIN95_SINGLE_SHLIB\freebl3.pdb" +module[108] +MDRawModule + base_of_image = 0x4a60000 + size_of_image = 0x5f000 + checksum = 0x0 + time_date_stamp = 0x441729fe + module_name_rva = 0x5b42 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x1003c:0x0 + version_info.product_version = 0x1003c:0x0 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x1 + version_info.file_os = 0x4 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 72 + cv_record.rva = 0x92b5 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "c:\lizard\trunk\mozilla\dist\bin\nssckbi.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 0b60d8ee-9dcd-4ca8-b18a-66183619e989 + (cv_record).age = 1 + (cv_record).pdb_file_name = "c:\lizard\trunk\mozilla\nss\nssckbi\nssckbi.pdb" + (misc_record) = (null) + (debug_filename) = "c:\lizard\trunk\mozilla\nss\nssckbi\nssckbi.pdb" +module[109] +MDRawModule + base_of_image = 0x59a60000 + size_of_image = 0xa1000 + checksum = 0xa8824 + time_date_stamp = 0x4110969a + module_name_rva = 0x5ba0 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 36 + cv_record.rva = 0x92fd + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\dbghelp.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = 39559573-e21b-46f2-8e28-6923be9e6a76 + (cv_record).age = 1 + (cv_record).pdb_file_name = "dbghelp.pdb" + (misc_record) = (null) + (debug_filename) = "dbghelp.pdb" +module[110] +MDRawModule + base_of_image = 0x76bf0000 + size_of_image = 0xb000 + checksum = 0xa29b + time_date_stamp = 0x411096ca + module_name_rva = 0x5be4 + version_info.signature = 0xfeef04bd + version_info.struct_version = 0x10000 + version_info.file_version = 0x50001:0xa280884 + version_info.product_version = 0x50001:0xa280884 + version_info.file_flags_mask = 0x3f + version_info.file_flags = 0x0 + version_info.file_os = 0x40004 + version_info.file_type = 0x2 + version_info.file_subtype = 0x0 + version_info.file_date = 0x0:0x0 + cv_record.data_size = 34 + cv_record.rva = 0x9321 + misc_record.data_size = 0 + misc_record.rva = 0x0 + (module_name) = "C:\WINDOWS\system32\psapi.dll" + (cv_record).cv_signature = 0x53445352 + (cv_record).signature = a5c3a1f9-689f-43d8-ad22-8a0929388970 + (cv_record).age = 2 + (cv_record).pdb_file_name = "psapi.pdb" + (misc_record) = (null) + (debug_filename) = "psapi.pdb" +MinidumpMemoryList + region_count = 10 +region[0] +MDMemoryDescriptor + start_of_memory_range = 0x7c90eb14 + memory.data_size = 0x100 + memory.rva = 0x93e7 +Memory +0xff83c4ec890424c744240401000000895c2408c74424100000000054e877000000c208009090909090558bec83ec508944240c64a1180000008b80a4010000890424c744240400000000c744240800000000c74424100000000054e8380000008b04248be55dc3908da424000000008d490090909090908bd40f349090909090c38da424000000008d64240090909090908d542408cd2ec3558bec9c81ecd00200008985dcfdffff898dd8fdffff8b45088b4d0489480c8d852cfdffff8988b80000008998a40000008990a800000089b0a000000089b89c0000008d4d0c8988c40000008b4d008988b40000008b4dfc8988c00000008c88bc0000008c989800 +region[1] +MDMemoryDescriptor + start_of_memory_range = 0x12d940 + memory.data_size = 0x26c0 + memory.rva = 0x94e7 +Memory +0x8000108078dc12009fd7907c00000000a0d9120005000f000000ec0400000000a4d91200bfb7807c00000000000000003103917c780115000000000061dc907c79b7807c00000000ffffffffc8d912000000000000000000acd9120078cded040100000000000000020000000000000000000000d4d91200a8b7807c0e00000004000000006000000000b504780115000000000050cded0492d5907cbb9b807cbc02000028db120078011500bc02000080cded04c8caed0420dea85968dc120078011500c0020000e0dd120028cbed04bc02000000000000780115000000000050cded04000000000000000000000000780115005104000000000000000000000000000000000000000000000000000078011500000000000000000000000000000000005704000000000000000000000000000050cded045c0057000600000078011500000000005c00730079007300740065006d00330048cded0468011500000000000000000048cded041ccbed04c8caed04c8da120061eea859e000b5040000b5041c4e0000dcda1200bdeea859e000b5040000b5041c4e0000fcda12005fefa8590000b50400000000060000001cdb1200e000b504b8e0120020db12005abfa8590000b50400000000060000001c0000001ccbed04c8caed04380000006ce9907c10b8807cffffffff0000b50400000000c8caed0488dc12007fc3a859a0c4a85908de1200b8e012004072ec04504500004c010400ca9610410000000000000000e0000e210b01070a00400000003a000000000000f1100000001000000000bf760000000000100000000200000500010005000100040000000000000000b00000000400009ba20000000015000075ec04000000008cdc1200780115008cdc1200910e917c080615006d05917c108a3d00a48a3d004072ec0400000000b04800000075ec0478011500e00300000875ec0400000000000000000000000078011500c403000078cded043800000000000000000000000000000000000000000000000000000080cded0448050000780200003800000000100000ec000000b8470000400000000000000000000000000000000000150000000000c8caed0400000000000000000000000000000101a9000000b8e0120060e7120060e7120000c0fd7fd0dc1200acdc1200ad9d917ce4dc1200c2066f7f0e000000000000001c010000d0dc1200108a3d00c0dc12000dad807cd0de12007cde120083dba859d0de1200e4dc1200800000008edba8591401000005000000010000007807000010df12003815917c9615917ceb06917cb8e01200b8e012001ce0120030dd1200000015003207917c21000000b80c1500000015009818170008dd1200ffffffff4cdf120018ee907c3807917cffffffff3207917cab06917ceb06917ca472ec04b8e012004072ec04e00040003cdd12000000ec04ccdd120018ee907c3808917cffffffff3308917cce29817cfa29817c000000004cde12000000000000000000510c00000000ec040000ec04bcdf12003815917c00f0fd7feb06917c4072ec04b8e012007801150000c0fd7f04de1200000000000000040048e11200e8e012000000000070dd12000d29817c40f4ed04f399837cffe9907c0e10817c8402000000000000ffe9907c0e10817c080000000000000000000000000000000875ec0494de120080cded04000000002e10817c1ce01200b8e012000875ec0400de120048f4ed04000000000075ec0410de12007801150060e71200f399837c3810817cffffffff2e10817c97eaa8598402000094de12003800000068de12000000000074de12007807000038000000ffe9907c0e10817cffe9907c0e10817c840200007801150000000000c805917c901817005cdf12005105917cb80c15006d05917c9818170080cded0400000000d9040000cc02000000000000a8000000ffe9907cc7e2907ce721807cffffffff40d9120080cded04c0060000f0de120004df1200d2e2a859ffffffff40d9120080cded04c00600001cdf120080cded04b8e012001ce0120024df12004ee3a859ffffffff40d912000000000080cded04c026000038df12004cdf120093b2a859ffffffff40d912000000000080cded04c02600001ce01200b8e01200507aec04d0df1200a5b3a859b8e012001ce012004072ec0440d9120000000000c02600000000000002000000d8df12001ce01200b8e0120000000000b8e01200981817004072ec04a472ec04a472ec04d0df1200b5b4a859b8e012001ce012004072ec0414eb907c000000000001000000000000010000000000000009000000d07dec04f05e0000f0df12005eb7a859b8e012001ce012004072ec04c08a3d0000000000000000002ce112007bb9a859b8e012001ce012004072ec049871ec0400000000000000000000000060e11200c0e71200080000000000000020000000200000006000000080000000380000001e000000b8000000d0000000a800000078010000b40100007c010000300000002c030000d82e00002c030000043200000000000004320000043200000000000043930000a400000057930000e793000088660000e794000004320000202a000026320000245c00001f370000bc61000043930000000000006ffa000000000000ffffffffd80d0000108a3d00c08a3d00d08a3d000000000000000000000000004c010000fc39a6590000000002000000050000000100000000003d00280a000001000001cc0200009c0000000b0000005000000004000000001000000000000000000000000100000000000000000000000000008ce1120078baa8599871ec04d80d0000108a3d0000000000d08a3d004072ec0460e11200000000000000000000000000c0e712004c120000b4e8120000000000d0e8120000000000000000000200000000000000d08a3d00c08a3d00108a3d00f4e41200a1b00110ffffffffd80d00008402000000000000b0e1120000000000000000004c120000c0e71200000000000a00000084020000633a5c444f43554d457e315c4d4d454e544f7e315c4c4f43414c537e315c54656d705c466f78794d6f7869652e646d700022550408e212009577fb0124000000e8026a0414e212002fd0fb01240000004ce212001c674b044ce2120030e21200400103300a000000c02dac0038e21200668702304ce21200abf3003000000000c02dac000000000070e212006b682f0001000000903e880498747a04903e8804ec197a04000000007ce2120080e21200400103304ce3890494e212000c51990390e21200df6cea010c5199039ce212003b7efe01f8118804b4e21200fc7dfe0114017504f8118804b844090158e289046ce95b04c0e21200fcfe870440e3120009000000a80775041c0000004c641d0258e2890404e31200da432700660a2299000000000000000058e289046ce95b0420e31200fcfe87043e682d5d660a229918e312000cf65c0260e312000000000028e31200d3d1fd012ce31200400103300a000000c02dac0034e312006687023048e31200abf3003000000000c02dac00000000006ce312006b682f000100000000000000e44e540400000000000000004ce3890480e312007af90e02304e090170e28904010000000100000048e41200c1f30902304e09010000000058e289043ce4120014e4120058e289046ce95b04ace31200fcfe87042ce4120009000000a80775041c0000004c641d0258e28904f0e31200da432700660a229900000000b0b9a859fce31200633a5c6c697a6172645c7472756e6b5c6d6f7a696c6c615c646973745c62696e5c44424748454c502e444c4c00757a04ac9675024c5388044c757a04b0747a042ce41200db43fc0198747a044c5388044ce412002d95ff0107000000381b7a040100000007000000381b7a040000000058e41200c1fee801881b7a0468e41200e15ee901981a7a04681c7a047ce41200733ff801681c7a04000000000000000098e412001140f801881b7a04d41a7a04681c7a04d41a7a04a4e4120016d7f001b4e4120014e51200dce41200129f807c0000000001000000c0e7120000a0011000a00110ace412009647fc0160e71200f399837c189f807cffffffff129f807c66bb807cf0ae011000000000000000000000a6590000000070e712003e5b0063c0e71200050000c0d32c867cc0e71200000000000000000000000000abf3003000000000c02dac000000000050e512001b642f0001000000010000000000000058e2890424e9120050e512003a6dea011085880468e51200dc40ea01ec197a040400000014f55702ec197a0474e51200797aea01dce5120010e612008352ea01a4578804d86e8604000000000a000000c02dac0098e5120066870230744e88040000000048e9120054e9120058e912000000000000000000a45788040000000000000000904c090158e28904f8225504a4578804087a8004881b7a0426000000ec197a041a000000000000000000000018e612007a442700660a2299c0e712000100000058e289040000000000000000087a800440000000660a22992ce6120007eced0101000000ec22550404000000b4e61200ace6120000000000879ee90100000000d86e860400000000000000000000000008000000013e8804e8026a04ec197a0470e61200400103300a000000c02dac00a8e6120024197a04481a7a04ac967502181a7a043c1a7a0428197a04a0e612009647fc01c0197a048000000010197a04b4e612009943fc0107000000c0197a04181a7a04d4e612002d95ff0107000000ec197a040100000007000000ec197a0400000000e0e61200c1fee801981a7a04f0e61200e15ee901a4578804c81b7a0404e71200733ff801c81b7a041fe2907c45b8807cffffffffd83040000000000050e712001c00000030e7120034e712006eb8807cffffffffd830400050e712001c000000a4e712002ef92010dffa2010e0f027100000000000000000ffffffff00304000085700000ce5120000100000e0e71200f399837ce035867cffffffff94e71200bdd32010c0e712000100000000f0fd7fd830400001000000b01eac0088c52710c0ff1200f8114000050000c0c0e7120095c02010c8e7120000000000c8e71200000000000000000000000000b4e81200d0e81200ece71200bf37907cb4e81200b0ff1200d0e8120088e812003cfc1200d837907cb0ff12009ce812008b37907cb4e81200b0ff1200d0e8120088e81200e014400001000000b4e81200b0ff12006078937cb4e81200b0ff1200d0e8120088e81200e014400002000000b4e81200f87dac006d05917c02000000c02dac000000ac0068cd80040000000024e912005c0d917c0000ac00910e917c0806ac006d05917c02000000c02dac0000c0fd7f000096030100000068cd800450d0ea010200000098e81200400103300000130000201200a0e81200b8ec1200faea907c00000000d0e81200b4e81200d0e81200050000c0000000000000000015150a020200000000000000e1dddddd3f0001000000000000000000000000000000000000000000000000007f02ffff2040ffffffffffffe17ef5011b00e9022c1a7a042300ffff8080800080808000ffffc8d0d400ffffff00ffff8080800080808000ffffc8d0d400ffffff00ffffaeb5b921b3babe1bffffb300ba00be000000ffff0000000000000080ff3f0000000000000080ff3f00000000000000003b000000230000002300000002000000f87dac0000c0fd7fdddddddd7c8588042ced1200b8ec120015150a021b000000020201009ceb1200230000007f0220400000e902e17ef5011b0000002c1a7a0423000000a01f0000ffff00008080800080808000ffff000000000000c8d0d400ffffff00ffff0000000000008080800080808000ffff000000000000c8d0d400ffffff00ffff000000000000aeb5b921b3babe1bffff000000000000b300ba00be000000ffff0000000000000000000000000080ff3f0000000000000000000000000080ff3f000000000000fe030000000000000000000000000000ff01000000000000000000000000000035000000000000003304000000000000000000fcffe788c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e03f0000000000000000e878a403de0100003600000000f512000c000000f078a4030000000070059100f888100100000000a5ae2110e878a403000000000000000000000000e878a40360000000f078a40350000000d801ac0060000000fcf500000000ac00ecf3120098c00c013cf6120018ee907cf006917cffffffffeb06917cb5a621100000ac00000000005100000062696e00587cac0000f0fd7fabf3003014f8120068f61200d695201098f6120034c0201062696e003a9820101079a403cd0000002d000000510000007d290200f078a4030000000094282010b0eb2710a8f61200d49420107c8588047c8588040200000058e2890458e2890400000000abf300306c1e1001cceb1200400103300a000000c02dac00dceb1200400103300a000000c02dac000100000066870230f8eb1200abf3003000000000c02dac000000000020ec12005b5e2f00010000000cec120018ec1200400103302cec120008250a02a89f8804b49f88043cec1200958f3c02a89f88040c00000074e289044c0000000c0000007c8588046c1d1302a89f8804000000000000000000000000c02dac0060ec12006687023074ec120074ec1200400103300a000000c02dac007cec12006687023090ec1200abf3003000000000c02dac002c010000b8ec1200f0868804a89f880458e28904b8f57204010000000100ea010000000001000000b8f57204d8ec1200e3030a020100000074e289047c858804a89f8804b8f572042ced1200f0ec1200288a3c02a89f880474e289047c8588042ced120030ed1200d9cf3c02a89f880474e289047c8588042ced1200cc9f88049ee54d032ced120020ed1200909e530360ed1200cc9f88047c858804000000007c85880464ed120012fd22022c8488040000000074e28904000000005ced120058e289042c8488045ced12000000000090e3890474e2890494ed1200dd112302b0ff330400f81200000000002c84880498eb89047cea89042c8488042c84880498ed120000000000c8ed1200f1b04e0328bc5b0498eb8904b0ff3304f08c4a040100000000f81200c4ed120028bc5b04a0ee120098eb890401000000b0ee1200a4bd4900b0ff3304f08c4a040100000000f81200d418420065cf0d010500000005000000f08c4a0401000000010000000100000098b8890400000000d0eb0f010000000000000000000000000000000000000000988c4a0402000000e4b88904908c4a0400000000ecb8890494f812007dea89040400000004000000ecb88904000000000000000000000000010000000000000000000000ecb8890464583504dcb889043b11420039f3540300000000b0312b04fc565f0460b04e03fc565f04ffffffff0000000000ec89047cea890470af4e03f08c4a0441000000c88c4a040000000034f812002fb94700b0ff3304f08c4a040100000000f81200e0c38f020000000040ad89049615917ceb06917cc0fa1200f07b88040000000044ee1200000000000cef1200f9b3d477ce02050020000000e2020100010000020000000054ef120093b3d477ce02050020000000e2020100a7b3d477d8ef1200e0c38f020000000000000000000000000000000024ef120000009603f4ef12006704d777b0b3d477e0c38f02a7b3d47735c48f02ce02050020000000e202010001000002000000009cef12003487d477ce02050020000000e202010001000002e0c38f02cdabbadc00000000d8ef1200e0c38f0204f012001688d47700f0fd7f04f012005a88d477c4ef12002a88d47720000000e0c38f020000000014000000010000000000000000000000e4ef1200400103300a000000c02dac00ecef12006687023000f01200abf3003000000000c02dac000000000028f012001b642f00010000002d00000001000000b0312b042000000004b7400404b7400401000000c88c4a042d000000e8f732044cf01200e3aa8f02f0c18f02ce02050020000000297a51000f0000000f000000d4f7320490f0120068f0120030bd8f0290f01200a0f0120076c38f02d4f732040000000028ad2110d4f73204f0c18f0240ad8904d0f7320448fb1200d4f7320424f1120008769502ffffffffccf012003487d477ce02050020000000e202010001000002f0c18f02cdabbadc0000000008f11200f0c18f0234f112001688d47700f0fd7f34f112005a88d477f4f012002a88d47700000000ce020500e815610014000000010000000000000000000000100000000000000078f11200000000000000000000000000e8f012000000000078f112006704d7773088d477ffffffff2a88d477c0b4d47700000000f0c18f02ce02050020000000e20201000100000204da7800cbb4d47720000000e8da7800e815610000000400000000005cf11200e09a91027cf212006704d777d0b4d477ffffffffcbb4d4770cb5d477f0d9780020000000e20201001cb5d4770000000000000000000000000000000028f21200e3ea907cc0f1120065cf0d010500000005000000b0312b040500000005000000a08c4a0465cf0d01050000000500000020000000e202010001000002000000009e0200000000000010f31200e0c38f020000000074f4120030aa2a002cf212000e0000000000000080ef8904e8ad890440f2120044f21200f9b3d477d002050020000000e202010001000002000000008cf2120093b3d477d002050020000000e2020100a7b3d47710f31200e0c38f02000000000000000000000000000000005cf212007cf212002cf312006704d777b0b3d477e0c38f02a7b3d47735c48f02d002050020000000e20201000100000200000000d4f212003487d477d002050020000000e202010001000002e0c38f02cdabbadc0000000010f31200e0c38f023cf312001688d47700f0fd7f3cf312005a88d477fcf212002a88d47720000000e0c38f0200000000140000000100000000000000000000001cf31200400103300a000000c02dac0024f312006687023038f31200abf3003000000000c02dac000000000060f312001b642f000100000000000000e0c38f02d00205002000000064f31200400103300a00000084f312007caa8f0250d8350484f31200e3aa8f02f0c18f02d00205002000000094f3120094f31200495027003cd83504c8f31200a0f3120030bd8f02c8f31200d8f3120076c38f023cd8350400000000c4f312003cd83504f0c18f023f00000038d83504300031003cd835045cf4120008769502ffffffff04f412003487d477d002050020000000e202010001000002f0c18f02cdabbadc0000000040f41200f0c18f026cf412003800000000f0fd7f6cf412005a88d4772cf412002a88d47700000000d0020500e8156100140000000100000000000000000000001000000000000000b0f4120000000000000000000000000020f4120000000000b0f412006704d7773088d477ffffffffe6450000e645000048472b04500e4604f1030000f0ee0f01500e4604780e10019cf41200400103300a000000c02dac00a4f41200b0f41200400103300a000000c02dac00b8f4120066870230ccf4120094f51200ccf4120030bd8f0294f51200e4f41200afbd8f0274f51200fcf51200d6759502fffffffff0f412004fbd8f0274f51200fcf412006fbf8f0274f5120008f512001f39900274f5120008f61200b34d9002f0c18f022db4d477e002010020000000e202010054488804504888049e0200000000000000000000e0c38f02ef450000ef45000000000000000000009f010000f0ee0f0100000000e8fb0f0143006f0001000000f9b3d4777c00000062020000000000000a0000022c0100007c00000062020000b35446002000000001000000000000000000000000000000000000000000000000000000000000000000000000000000e7450000e745000000000000000000000c030000f0ee0f010000000050071001f87dac0000c0fd7f000000000cf612003487d4777c000000620200000000000000000000010000008cfa120045799502ffffffff28f612001f5990022c010000000000007c006202ffffffff504888040000000098fa1200201b90022c010000483b8a047c006202000000000000000054f61200400103300a000000c02dac005cf612006687023000009603abf3003000000000c02dac000000000098f612001b642f000100000000000000e0c38f02e0020100fb00000078b88904400103300a000000bcf612007caa8f02200f5404bcf61200e3aa8f02b0d88904e00201002000000018e98904ccf61200b8d889040c0f5404403b8a04090000007801ac0000f7120010f7120076c38f020c0f540400000000e8ad89047801ac00f0c18f0200000000080f54045c0d917c0c0f540414f71200400103300a000000c02dac0024f71200400103300a000000c02dac0034f71200400103300a0000000600000030851001c4565f04400103300a0000006701000038000000f08c4a04bcb88904c02dac0068f71200483b8a0400000000c02dac00583ea901000000000a000000086a0c0188f71200000000002c000000dcb88904623ea90100000000bcb88904da432700a2aa82e3d0eb0f01f8b88804583ea9014012210201000000f08c4a04b0312b0470b889044020000078b88904000000007801ac0040200000c08852000000ac00d0f51200e80ebd0194f8120000000000f006917cffffffffc88c4a040000000001000000e0b88904908c4a0402000000f87dac00a08c4a0420f8120006000000c15d4a0402000000000000006558350400000000010000000f0000003cf9120045c94600b0ff330446b9880430f912000000000094282010b0eb27108cf81200d494201004000000cb94201002000000f87dac00297a51000f0000000f000000b0312b040f0000000f000000e8792610ffffffff0000000009942010000000000000000000000000f8b88804c05d4a04b0312b0401000000b8b889040100008000000000bcb8890450f9120000000000b0312b0446b98804e0b88904d4b889040000000000000000020000000000000000000000bcb88904c8ff3304b0b889040000000014000000f8b88804b0312b0400000000287a510046b64600b0b8890450f91200b0312b0400000000bcb88904a8b889040000000001000080c05d4a0408b74004c8f9120045d34600b0ff33040100000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bcb88904000000000000000000000000000000000000000000000000b092790400000000d8ff33040000000050f91200bcb8890401000000b0312b04f0f91200c30e4300b0ff3304b0312b0408b74004000000000100000040755304c4fa1200b0312b044cfa12007f3b2102b0ff3304b0312b0408b740040100000040755304c4fa120001000000b8881001e8f6370402000000d6075e0438fa12001429670238fa120008b7400402000e0000000000b888100102000000e8f637040000000060fb1200ed9c2402b0312b0408b740040100000040755304c4fa12008cfa12007caa8f0268488804e8f63704e3aa8f02f0c18f0248637304e8f63704d0985e04e8f63704a8985e0454488804d0fa1200a8fa120030bd8f02d0fa1200e0fa120076c38f025448880400000000350c000000000000f0c18f0201000080400103300a00000000000000dcfa120002000000f0fa12004863730488995e04e8f63704f8fa12005f30e7c1fa0e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000020000005f30e7c1fa0e0400000000000000000001000000b0ff330448637304d0985e0470fb120010a824024863730448637304bcfb1200f8bf2e0020ac88044863730402fb1200668702309cfb12009bf1003025aa02306c45ac03c02dac00b0fb1200028f2e0020ac880400000000c8fb1200bcfb1200af544600b3544600e4fb1200ecc82e00000000005045ac0300000000000000005045ac03010000000100000020ac880448fc1200b5939102887a3601887a3601887a3601887a3601887a36015482ac00e0299703fc42960214fc1200010000000000000001000000e202010000020000000000007c006202b3544600ea010000db020000887a3601b0ff1200e8879502000000005cfc1200194b1703f0199703f01997039ada001054ff1200608e0010581997030000000000000000581997034882ac006812990308380a01c8d13e01000015000000000058199703e8474d016812990318ee907c5e020000d0fe12003815917c60239703eb06917cb884ac00b884ac000081ac000081ac00a882ac004882ac00f4fe120018ee90003807917cffffffff48940210ab06917c407eac008c92021000000000f091021000ee907c00a1917c78fe1200000000003c453400b4900210000000000000000000000000008e917cfffffffffa8d917c07000000cfea907c387eac0001000000170001000000000000000000e48f0210000000003c4534004c8f02100000000048ff1200285da2830000001260fa9b025cfa9bf77801150098fb9886205093864000000000000000a803ac0010ff1200007a63863cff12006420fab210bd150008ff12000800000080fd3600e08c02100e0000000100000088fe1200020000000000000018ff1200dfffffff7801150039000000e0bc1500230000000200000008380a01c8d13e01780115006cf4120018bd1500570000006708817c1b00000078011500fcff12002300000018629c860000000018629c860d0000000000000040000000881e1500e4fe12005105917ce8121500d07dac006401ac000000000000000000d07dac0068000000d87dac0078011500a803ac006800000000c000000000ac004cfc120088d564819cfe120018ee907c60239703ffffffff58199703be43ac006812990320a69a03e8474d01b4b6ac00000000000081ac00680115000000000080fd3600048e02100e00000001000000000000000100000080fd3600c4fe120021000000110001003f000000c4fe1200312e3661315f303030303030303030302f312e3961315f3030303030303030303000000000c0fd7ff87dac0000000000901e1500b0ff120034c02010e879261000000000b884ac00000000002084ac00000000004882ac0018a7021004a7021000000000a882ac00000000000081ac002084ac00010000000081ac00010000000100000000000000020000000100000068ff12003610400001000000f87dac0090304000c0ff1200bc11400001000000f87dac006036ac00020000000000000000c0fd7f050000c000000000000000006036ac0000000000f87dac0001000000000000007cff1200c0e71200e0ff1200e0144000d830400000000000f0ff12004f6d817c020000000000000000c0fd7ffd3d5480c8ff120068c2fc83fffffffff399837c586d817c0000000000000000000000009010400000000000 +region[2] +MDMemoryDescriptor + start_of_memory_range = 0x107fe2c + memory.data_size = 0x1d4 + memory.rva = 0xbba7 +Memory +0x00000000c0e9907cdb25807cc40000000000000064fe07015436817c10f712007890ac00140000000100000000000000000000001000000000ba3cdcffffffff00c0fd7f00e0fd7f64fe07010000000044fe070100000000a4ff0701f399837c0826807c00000000a8fe07014225807cc400000060ea000000000000c8fe0701ff1e0330c400000060ea000060ea000000000000008eac0060ea0000e4fe070131980230cc8cac004c8bac0060ea0000000000004c8bac0000ff0701ff9f0230008eac00588cac00308bac0060ea0000008eac0040ff07011c742f00588cac0060ea00002cff07012df200300100000000020000308bac000000000000000000308bac00010000000000000000000000000000005cff0701d35d2e000c6639000c6639000000000000000000088dac006cff0701d9b70230088dac00008eac007cff070157fd0230008eac00008eac00b4ff070166322010008eac005436817c10f712007890ac0000000000f0a3ac0088ff070114015080dcff070134c020107877261000000000ecff07010bb5807cf0a3ac005436817c10f712007890ac0000e0fd7f00069c86c0ff0701703c9183fffffffff399837c18b5807c000000000000000000000000b03120107890ac0000000000 +region[3] +MDMemoryDescriptor + start_of_memory_range = 0x374ff78 + memory.data_size = 0x88 + memory.rva = 0xbd7b +Memory +0xe3d8a5711be3907c09d6a57178010000bcff7403b0ff7403a4ff740350d6a57104ef120018ee907c30f1160000000000000000000000a57168ef1700ecff74030bb5807cecd8a57104ef120018ee907c30f1160000d0fd7f00069c86c0ff740370b74085fffffffff399837c18b5807c000000000000000000000000afd5a57130f1160000000000 +region[4] +MDMemoryDescriptor + start_of_memory_range = 0x384ccac + memory.data_size = 0x3354 + memory.rva = 0xbe03 +Memory +0xeccc8403c0e9907c3340a5719c01000001000000d8cc840390cd84039cde840380cd8403c6c1a568aa47c601ffffffffffffff7f30fb16000000000000000000e0cd8403a75fa5719c01000070010000000000000400000000000000a8f816000000000000000000000000000000000000000000010000008096186a67ffffff6ccd8403000000001c0000000000000018ee907cd85f1800502b120178f217000000000014ce84033ccd84030cb915001c00000030fb16009ccd840300000000000000000000000080cd84030000000000000000ffffffffffffff7f01000000000000007001000019000000000000008402000019000000a4ee7a048402000002010000c0cd8403400103300a000000cccd8403f18f0230a24e000004cd84030c15aa7120ce8403c871a771682ea571ffffffff30ce8403672eab71000000009cde840300000000000000000000000014ce840318ee907c95020000502b120170010000010000000000000000ce840300000000a4ff8403af24ac71882eab71ffffffffd4fe8403dd510330000000009cde840300000000000000000000000000000000000000007001000001000000e8030000000000000000000000000000700100000100000000000000000000000000000084020000840200007c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000020043183917cffffffffd0cf840380cf8403ba82917ce0df5f040000ac00002060040000ac007801ac00c8cf84034585917c0000ac0000206004e8df5f04e0df5f0400009603880f00000000ac0090a78a04c1080000d4cf8403ff1b917c0000ac0090a78a0490a78a040000ac000000200400002004000096041cd08403ac1d917cc108000090a78a00000000000000ac0090a78a0400000000980d000000e08a0418d08403000020040000000000000000000000000e01000000000000b3010000ecd08403ca0e917c910e917c0806ac006d05917c48fe840340fe8804502b120100009603c805917c90a78a0414d184035105917c0000ac000000ac00883e8a04fe0a000084d08403ff1b917c0000ac00883e8a04883e8a040000ac0020ba8804911a0000a4d08403ff1b917c0000ac0020ba880420ba88040000ac00000020040000200400009604ecd08403ac1d917c911a000020ba8800000000000000ac0020ba880400000000a80e000000808904e8d0840300002004000000000000000000000000bc00000000000000d5010000bcd18403ca0e917c910e917c0806ac006d05917c48fe840340fe8804502b1201000096034007180020ba88047801ac00d8185804a09b8a04ac2e63048004ac00a09b8a0402000000b8a989043048000001000000a89b8a04b00000002802ac000000ac0040000000000000000000ac00f02b0000000000000000ac00ccd18403f80a967cf00b967c0806ac00cc0b967c48fe840340fe88040000ac00000000000000000000000101000000000000000000000101911a000000d18403502b1201f4d1840318ee907c7005917cffffffff6d05917ca5ae21100000ac000000000060d2880448fe840340fe8804502b120160d2880404d2840368ad20100000ac000000000060d2880438d2840334c0201088a32610ffffffff14d28403fea3201094282010b0eb271048d2840309a020100400000000a0201048fe840340fe8804502b120134c02010a07c2610a4ff840334c02010a07c2610ffffffff58d284037e9f201080d288040100000064d284032d0c013080d2880470d28403c3fce80280d2880448fe84037570f90280d2880418ee907c9502000088d2840300000000683efa023133000000000000010000000100000001000000000000000000000001000000010301030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8b08404000000000000000000000000a8dc320400000000000000000000000000000000e03ed402000000002004d602f0ea7a04b015d602f0ea7a040f33d402f0ea7a04f8ea7a04ffffffffffffffff1400000000000000000000000000000000000000000000000000000000000000b0385a04000000000000de00de0000000100000000000000a0468904f80000000048000010010000000000000000000000000000000000000000000000000000f8000000f8000000b03e8a041001000000480000170301011000000000000000000000000000000008f08a040000000000480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039000103380001033500010366000100330001033200010304000103050001032f0001031600010313000103fffe01030a0001031500010012000100fefe010009000100640001006200010003000100060001000200010001000100000000000000000008ec8804d0d9880408ec8804d0d988040000000000000000000000000000000001000000000000000000000000000000000000000000000044172f10110df1785fca64b01b0a7434971e5cfd832dfba1e8cc7bf5822bcb6400001201e8aaa67fb1b12b319e0e51c59191adb33f10a1bfcbff19fff1c05ab10b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8eb7a04683b15011034fa0239000000b835fa0200000000000000000000000000000000000000001400000000000000000000000000000000000000010000000000000000000000000000000000000000480000000000008031fa026036fa02000000002045f7022045f702000000000000000000000000000000000000000000000000020000000000000002000000010300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d8281201000000009cde8403010000000000000000000000010000007001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e032fa02a036fa02140000009402fa029402fa02000000000000000000000000000000000000000000000000030000000000000002000000010300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098a0207925d89b2e062421fd4c9d48d50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059be7cd652ff24cd4c782c3022488d76000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d02e8804fcfc8403460f917c05000000d02e88040000ac00882e880400000000d0fd84035c0d917c0000ac00910e917c0806ac006d05917c18ee907c95020000502b12010000960301000000882e880400000000000000000000000000000000902e88040000000000000000000000000000000000000000e801ac0000000000400000000000000000000000e801ac000000000048000000000000000000ac00e0fd8403f80a967cf00b967c0806ac00cc0b967c18ee907c950200000000ac000000000024fe8403ef2203306c165804b92403305416580418ee907c95020000502b12010000000018ee907c5c175804ffffffff6d05917c010000005c175804ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0eb27100000000001000000d4fd840348fe8403f9270330541658040000000054fe8403400103300a000000d82812015cfe84036687023070fe8403abf3003000000000d82812010000000098fe84031b642f000100000061fdd90290fe840394fe8403400103300a000000d82812019cfe840366870230b0fe8403abf3003000000000d828120100000000d8fe84031b642f0001000000ccfe84030000000000000000e84e13011c2512011c251201e8fe8403945f02301425120101000000ffffffff14ff84034925b5021425120101000000ffffffff28201201ffffffffc022120101000000305546001425120140ff84037b2eb5022cff84035c2012011c25120100001201000000000100000001000000ffffffff020000005cff8403d35d2e0030201201302012010000000000000000e02712016cff8403d9b70230e0271201d82812017cff840357fd0230d8281201d8281201b4ff840366322010d828120118ee907c95020000502b12010000000048bb140188ff840314015080dcff840334c020107877261000000000ecff84030bb5807c48bb140118ee907c95020000502b120100b0fd7f00069c86c0ff840370b74085fffffffff399837c18b5807c000000000000000000000000b0312010502b120100000000 +region[5] +MDMemoryDescriptor + start_of_memory_range = 0x394fe30 + memory.data_size = 0x1d0 + memory.rva = 0xf157 +Memory +0x00000000c0e9907cdb25807ca80100000000000068fe9403650072000b00000000da1401140000000100000000000000000000001000000030519bfcffffffff00c0fd7f00a0fd7f68fe94030000000048fe940300000000a4ff9403f399837c0826807c00000000acfe94034225807ca80100003d16000000000000ccfe9403ff1e0330a80100003d1600003d1600000a00000088d714013d160000e8fe940331980230448aac003c89ac003d160000000000006488ac0004ff9403ff9f023088d71401d089ac002089ac003d16000088d7140140ff9403f6e92e00d089ac003d1600002df200300100000037744600fa5d4600c0fa97033d1600002089ac0000000000000000002089ac00010000005cff9403d35d2e003888ac003888ac000000000000000000988813016cff9403d9b702309888130188d714017cff940357fd023088d7140188d71401b4ff94036632201088d71401650072000b00000000da140100000000d00a160188ff940314015080dcff940334c020107877261000000000ecff94030bb5807cd00a1601650072000b00000000da140100a0fd7f00069c86c0ff940328bf6f86fffffffff399837c18b5807c000000000000000000000000b031201000da140100000000 +region[6] +MDMemoryDescriptor + start_of_memory_range = 0x3f6fe18 + memory.data_size = 0x1e8 + memory.rva = 0xf327 +Memory +0x85d3907c99e3907c0367e777d001000070fff60300000000b85c170054fff603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005ca93f8524acb3b0d99a4f80e19a4f802ca93f85c0a73f85f4a73f8580fff6039966e7774cfff603a966e777ed10907cd01b170058d4160000a22f4dffffffff005d1eeeffffffff0000000038fef60358d41600ffffffff54fff60300000000b85c1700000000000000000088fff603226ce777a8fff6033b6ae777882f150000000000acd7120058d4160058d4160058d41600b4fff6030a6ce777e08d1600ecfff6030bb5807c58d4160000000000acd7120058d416000080fd7f00069c86c0fff603f0399383fffffffff399837c18b5807c000000000000000000000000f06be77758d4160000000000 +region[7] +MDMemoryDescriptor + start_of_memory_range = 0x41ffe24 + memory.data_size = 0x1dc + memory.rva = 0xf50f +Memory +0x00000000c0e9907cdb25807cf001000000000000000000003431917cf4da120060b7c20314000000010000000000000000000000100000000060fd7fb8fe1f0400c0fd7f0060fd7f000000003431917c3cfe1f0460b7c203a4ff1f04f399837c0826807c00000000a0fe1f044225807cf0010000ffffffff00000000c0fe1f04ff1e0330f0010000fffffffffffffffffffffffff0b5c203ffffffffdcfe1f043198023064bcc2035cbbc203ffffffff000000005cbbc203f8fe1f04ff9f0230f0b5c203f0bbc20340bbc203fffffffff0b5c20324ff1f04016b0d03f0bbc203ffffffff40bbc203000000000000000040bbc20301000000000000000000000040ff1f0447580d0344ff1f04e6662e00a0bdc20344ff1f04e96a2e005cff1f04d35d2e0050bdc20350bdc203000000000000000090bdc2036cff1f04d9b7023090bdc203f0b5c2037cff1f0457fd0230f0b5c203f0b5c203b4ff1f0466322010f0b5c2033431917cf4da120060b7c2030000000040aec20388ff1f0414015080dcff1f0434c020107877261000000000ecff1f040bb5807c40aec2033431917cf4da120060b7c2030060fd7f00069c86c0ff1f04f0399383fffffffff399837c18b5807c000000000000000000000000b031201060b7c20300000000 +region[8] +MDMemoryDescriptor + start_of_memory_range = 0x3e6fe50 + memory.data_size = 0x1b0 + memory.rva = 0xf6eb +Memory +0x00000000c0e9907cdb25807cb40100000000000088fee6030000ac00f87e550480815504140000000100000000000000000000001000000000ba3cdcffffffff00c0fd7f0090fd7f88fee6030000000068fee60300000000a4ffe603f399837c0826807c00000000ccfee6034225807cb401000060ea000000000000ecfee603ff1e0330b401000060ea000060ea00000a000000b87f550460ea000008ffe60331980230a4a39b039ca29b0360ea000000000000f87e550424ffe603ff9f0230b87f550430a39b0380a29b0360ea0000b87f55045cffe6032851b40230a39b0360ea000020ed7204f00c000060ea0000db55460080a29b03000000000000000080a29b0301000000a8a19b036cffe603d9b70230a8a19b03b87f55047cffe60357fd0230b87f5504b87f5504b4ffe60366322010b87f55040000ac00f87e55048081550400000000b018560488ffe60314015080dcffe60334c020107877261000000000ecffe6030bb5807cb01856040000ac00f87e5504808155040090fd7f00069c86c0ffe603b8e3b683fffffffff399837c18b5807c000000000000000000000000b03120108081550400000000 +region[9] +MDMemoryDescriptor + start_of_memory_range = 0x406fe2c + memory.data_size = 0x1d4 + memory.rva = 0xf89b +Memory +0x00000000c0e9907cdb25807c1c0200000000000064fe0604000000000000000058fb5504140000000100000000000000000000001000000000ba3cdcffffffff00c0fd7f0070fd7f64fe06040000000044fe060400000000a4ff0604f399837c0826807c00000000a8fe06044225807c1c02000060ea000000000000c8fe0604ff1e03301c02000060ea000060ea0000ccfe060490f9550460ea0000e4fe060431980230043d1201fc3b120160ea0000000000000000000000ff0604ff9f023090f95504903c1201e03b120160ea000090f955043cff0604fbecb702903c120160ea0000503b120168ad2010e03b12010000000060ea00006f334600e03b12010000000000000000e03b1201010000005cff0604c5efb70258ff06040000000020800000201b6204503b1201481a62046cff0604d9b70230503b120190f955047cff060457fd023090f9550490f95504b4ff06046632201090f95504000000000000000058fb5504000000002823560488ff060414015080dcff060434c020107877261000000000ecff06040bb5807c28235604000000000000000058fb55040070fd7f00069c86c0ff06048881f184fffffffff399837c18b5807c000000000000000000000000b031201058fb550400000000 +MDException + thread_id = 0x124c + exception_record.exception_code = 0xc0000005 + exception_record.exception_flags = 0x0 + exception_record.exception_record = 0x0 + exception_record.exception_address = 0x20a1515 + exception_record.number_parameters = 2 + exception_record.exception_information[ 0] = 0x0 + exception_record.exception_information[ 1] = 0xffffffffdddddde1 + thread_context.data_size = 716 + thread_context.rva = 0x5c24 +MDRawContextX86 + context_flags = 0x1003f + dr0 = 0x0 + dr1 = 0x0 + dr2 = 0x0 + dr3 = 0x0 + dr6 = 0x0 + dr7 = 0x0 + float_save.control_word = 0xffff027f + float_save.status_word = 0xffff4020 + float_save.tag_word = 0xffffffff + float_save.error_offset = 0x1f57ee1 + float_save.error_selector = 0x2e9001b + float_save.data_offset = 0x47a1a2c + float_save.data_selector = 0xffff0023 + float_save.register_area[80] = 0x8080800080808000ffffc8d0d400ffffff00ffff8080800080808000ffffc8d0d400ffffff00ffffaeb5b921b3babe1bffffb300ba00be000000ffff0000000000000080ff3f0000000000000080ff3f + float_save.cr0_npx_state = 0x0 + gs = 0x0 + fs = 0x3b + es = 0x23 + ds = 0x23 + edi = 0x2 + esi = 0xac7df8 + ebx = 0x7ffdc000 + edx = 0xdddddddd + ecx = 0x488857c + eax = 0x12ed2c + ebp = 0x12ecb8 + eip = 0x20a1515 + cs = 0x1b + eflags = 0x10202 + esp = 0x12eb9c + ss = 0x23 + extended_registers[512] = 0x7f0220400000e902e17ef5011b0000002c1a7a0423000000a01f0000ffff00008080800080808000ffff000000000000c8d0d400ffffff00ffff0000000000008080800080808000ffff000000000000c8d0d400ffffff00ffff000000000000aeb5b921b3babe1bffff000000000000b300ba00be000000ffff0000000000000000000000000080ff3f0000000000000000000000000080ff3f000000000000fe030000000000000000000000000000ff01000000000000000000000000000035000000000000003304000000000000000000fcffe788c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e03f0000000000000000e878a403de0100003600000000f512000c000000f078a4030000000070059100f888100100000000a5ae2110e878a403000000000000000000000000e878a40360000000f078a40350000000d801ac0060000000fcf500000000ac00ecf3120098c00c013cf6120018ee907cf006917cffffffffeb06917cb5a621100000ac00000000005100000062696e00587cac0000f0fd7fabf3003014f8120068f61200d695201098f6120034c0201062696e003a9820101079a403cd0000002d000000510000007d290200f078a4030000000094282010b0eb2710a8f61200d4942010 +MDRawSystemInfo + processor_architecture = 0 + processor_level = 6 + number_of_processors = 1 + product_type = 1 + major_version = 5 + minor_version = 1 + build_number = 2600 + platform_id = 2 + csd_version_rva = 0x3204 + suite_mask = 0x100 + reserved2 = 0x0 + cpu.x86_cpu_info.vendor_id[0] = 0x756e6547 + cpu.x86_cpu_info.vendor_id[1] = 0x49656e69 + cpu.x86_cpu_info.vendor_id[2] = 0x6c65746e + cpu.x86_cpu_info.version_information = 0x6d8 + cpu.x86_cpu_info.feature_information = 0xafe9fbff + cpu.x86_cpu_info.amd_extended_cpu_features = 0xffffffff + (csd_version) = "Service Pack 2" +MDRawMiscInfo + size_of_info = 24 + flags1 = 0x3 + process_id = 0xdd8 + process_create_time = 0x44172e6e + process_user_time = 0x0 + process_kernel_time = 0x4 |