aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am34
-rw-r--r--Makefile.in149
-rw-r--r--aclocal.m41615
-rwxr-xr-xconfigure5034
-rw-r--r--src/processor/memory_region.h65
-rw-r--r--src/processor/minidump.cc2025
-rw-r--r--src/processor/minidump.h699
-rw-r--r--src/processor/minidump_dump.cc110
-rwxr-xr-xsrc/processor/minidump_dump_test6
-rw-r--r--src/processor/minidump_format.h555
-rw-r--r--src/processor/range_map.h158
-rw-r--r--src/processor/range_map_unittest.cc334
-rw-r--r--src/processor/testdata/minidump1.dmpbin0 -> 64111 bytes
-rw-r--r--src/processor/testdata/minidump1.out3734
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
diff --git a/aclocal.m4 b/aclocal.m4
index dc1c165c..094df7b9 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -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 -*-
diff --git a/configure b/configure
index b7cf75d5..a8720931 100755
--- a/configure
+++ b/configure
@@ -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(&region_count, sizeof(region_count)))
+ return false;
+
+ if (minidump_->swap())
+ Swap(&region_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, &region_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
new file mode 100644
index 00000000..fd4e29fb
--- /dev/null
+++ b/src/processor/testdata/minidump1.dmp
Binary files differ
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