diff options
author | Jeff Law <law@redhat.com> | 2013-10-26 04:14:34 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2013-10-26 04:14:34 -0600 |
commit | 98906124e3aa4cb17695d900fe19498e5bde63e4 (patch) | |
tree | db4fb2e3b3425e4080112ab6c0fa8e4922a5a2d7 | |
parent | 19b632c6dd5e1e901ae1bac3fc92164a724ccab5 (diff) | |
download | gcc-98906124e3aa4cb17695d900fe19498e5bde63e4.zip gcc-98906124e3aa4cb17695d900fe19498e5bde63e4.tar.gz gcc-98906124e3aa4cb17695d900fe19498e5bde63e4.tar.bz2 |
Makefile.def (target_modules): Remove libmudflap
* Makefile.def (target_modules): Remove libmudflap
(languages): Remove check-target-libmudflap).
* Makefile.in: Rebuilt.
* Makefile.tpl (check-target-libmudflap-c++): Remove.
* configure.ac (target_libraries): Remove target-libmudflap.
Remove checks which disabled libmudflap on some systems.
* configure: Rebuilt.
* libmudflap: Directory removed.
* Makefile.in (C_COMMON_OBJS): Remove tree-mudflap.
(OBJS): Remove tree-nomudflap.o
(GTFILES): Remove tree-mudflap.c
* builtins.c (expand_builtin_alloc): Remove mudflap support.
* gcc.c (MFWRAP_SPEC, MFLIB_SPEC): Likewise.
(mfwrap_spec, mflib_spec): Likewise.
(cpp_unique_options, cc1_options, static_specs): Likewise.
* gimplify (gimplify_vla_decl, build_va_arg_indirect_ref): Likewise.
* passes.def: Likewise.
* toplev.c (compile_file, process_options): Likewise.
* tree-inline.c (copy_tree_r): Likewise.
* tree-pass.,h (make_pass_mudflap_1, make_pass_mudflap_2): Likewise.
* varasm.c (make_decl_rtl, make_decl_rtl_for_debug): Likewise.
(build_constant_desc, output_constant_def_contents): Likewise.
(categorize_decl_for_section): Likewise.
* tree-mudflap.c: Removed.
* tree-mudflap.h: Removed.
* tree-nomudflap.c: Removed.
* bfin/uclinux.h (MFWRAP_SPEC): Remove.
* moxie/uclinux.h (MFWRAP_SPEC): Likewise.
* rs6000/aix.h (MFWRAP_SPEC, MFLIB_SPEC): Likewise.
* config/sol2.h (MFLIB_SPEC): Likewise.
* doc/install.texi: Remove mudflap references.
* doc/passes.texi: Similarly.
* doc/sourcebuild.texi: Similarly.
* doc/invoke.texi: Remove mudlfap related options.
* c-family/c-common.c (c_define_builtins): Remove mudflap support.
* c-family/c.opt: Ignore and warn for mudflap options.
* g++.dg/torture/pr49309.C: Removed.
* gcc.dg/dfp/pr35739.c: Removed.
From-SVN: r204090
178 files changed, 70 insertions, 31750 deletions
@@ -1,3 +1,14 @@ +2013-10-26 Jeff Law <law@redhat.com> + + * Makefile.def (target_modules): Remove libmudflap + (languages): Remove check-target-libmudflap). + * Makefile.in: Rebuilt. + * Makefile.tpl (check-target-libmudflap-c++): Remove. + * configure.ac (target_libraries): Remove target-libmudflap. + Remove checks which disabled libmudflap on some systems. + * configure: Rebuilt. + * libmudflap: Directory removed. + 2013-10-21 Cong Hou <congh@google.com> * MAINTAINERS (Write After Approval): Add myself. diff --git a/MAINTAINERS b/MAINTAINERS index a6954da..bf16972 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -239,7 +239,6 @@ tree-ssa Diego Novillo dnovillo@google.com tree-ssa Andrew MacLeod amacleod@redhat.com PRE Daniel Berlin dberlin@dberlin.org code sinking Daniel Berlin dberlin@dberlin.org -mudflap Frank Ch. Eigler fche@redhat.com tree browser/unparser Sebastian Pop sebastian.pop@amd.com scev, data dependence Daniel Berlin dberlin@dberlin.org scev, data dependence Sebastian Pop sebastian.pop@amd.com diff --git a/Makefile.def b/Makefile.def index 3ba1a5b..df4b224 100644 --- a/Makefile.def +++ b/Makefile.def @@ -117,7 +117,6 @@ target_modules = { module= libstdc++-v3; bootstrap=true; lib_path=src/.libs; raw_cxx=true; }; -target_modules = { module= libmudflap; lib_path=.libs; }; target_modules = { module= libsanitizer; bootstrap=true; lib_path=.libs; @@ -551,7 +550,6 @@ dependencies = { module=configure-target-libgfortran; on=all-target-libquadmath; languages = { language=c; gcc-check-target=check-gcc; }; languages = { language=c++; gcc-check-target=check-c++; lib-check-target=check-target-libstdc++-v3; - lib-check-target=check-target-libmudflap-c++; lib-check-target=check-target-libitm-c++; lib-check-target=check-target-libgomp-c++; }; languages = { language=fortran; gcc-check-target=check-fortran; diff --git a/Makefile.in b/Makefile.in index a13771d..ff434fe 100644 --- a/Makefile.in +++ b/Makefile.in @@ -575,16 +575,12 @@ all: # This is the list of directories that may be needed in RPATH_ENVVAR # so that programs built for the target machine work. -TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libmudflap)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) +TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) @if target-libstdc++-v3 TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs: @endif target-libstdc++-v3 -@if target-libmudflap -TARGET_LIB_PATH_libmudflap = $$r/$(TARGET_SUBDIR)/libmudflap/.libs: -@endif target-libmudflap - @if target-libsanitizer TARGET_LIB_PATH_libsanitizer = $$r/$(TARGET_SUBDIR)/libsanitizer/.libs: @endif target-libsanitizer @@ -927,7 +923,6 @@ configure-host: \ .PHONY: configure-target configure-target: \ maybe-configure-target-libstdc++-v3 \ - maybe-configure-target-libmudflap \ maybe-configure-target-libsanitizer \ maybe-configure-target-libvtv \ maybe-configure-target-libssp \ @@ -1077,7 +1072,6 @@ all-host: maybe-all-lto-plugin @if target-libstdc++-v3-no-bootstrap all-target: maybe-all-target-libstdc++-v3 @endif target-libstdc++-v3-no-bootstrap -all-target: maybe-all-target-libmudflap @if target-libsanitizer-no-bootstrap all-target: maybe-all-target-libsanitizer @endif target-libsanitizer-no-bootstrap @@ -1173,7 +1167,6 @@ info-host: maybe-info-lto-plugin .PHONY: info-target info-target: maybe-info-target-libstdc++-v3 -info-target: maybe-info-target-libmudflap info-target: maybe-info-target-libsanitizer info-target: maybe-info-target-libvtv info-target: maybe-info-target-libssp @@ -1256,7 +1249,6 @@ dvi-host: maybe-dvi-lto-plugin .PHONY: dvi-target dvi-target: maybe-dvi-target-libstdc++-v3 -dvi-target: maybe-dvi-target-libmudflap dvi-target: maybe-dvi-target-libsanitizer dvi-target: maybe-dvi-target-libvtv dvi-target: maybe-dvi-target-libssp @@ -1339,7 +1331,6 @@ pdf-host: maybe-pdf-lto-plugin .PHONY: pdf-target pdf-target: maybe-pdf-target-libstdc++-v3 -pdf-target: maybe-pdf-target-libmudflap pdf-target: maybe-pdf-target-libsanitizer pdf-target: maybe-pdf-target-libvtv pdf-target: maybe-pdf-target-libssp @@ -1422,7 +1413,6 @@ html-host: maybe-html-lto-plugin .PHONY: html-target html-target: maybe-html-target-libstdc++-v3 -html-target: maybe-html-target-libmudflap html-target: maybe-html-target-libsanitizer html-target: maybe-html-target-libvtv html-target: maybe-html-target-libssp @@ -1505,7 +1495,6 @@ TAGS-host: maybe-TAGS-lto-plugin .PHONY: TAGS-target TAGS-target: maybe-TAGS-target-libstdc++-v3 -TAGS-target: maybe-TAGS-target-libmudflap TAGS-target: maybe-TAGS-target-libsanitizer TAGS-target: maybe-TAGS-target-libvtv TAGS-target: maybe-TAGS-target-libssp @@ -1588,7 +1577,6 @@ install-info-host: maybe-install-info-lto-plugin .PHONY: install-info-target install-info-target: maybe-install-info-target-libstdc++-v3 -install-info-target: maybe-install-info-target-libmudflap install-info-target: maybe-install-info-target-libsanitizer install-info-target: maybe-install-info-target-libvtv install-info-target: maybe-install-info-target-libssp @@ -1671,7 +1659,6 @@ install-pdf-host: maybe-install-pdf-lto-plugin .PHONY: install-pdf-target install-pdf-target: maybe-install-pdf-target-libstdc++-v3 -install-pdf-target: maybe-install-pdf-target-libmudflap install-pdf-target: maybe-install-pdf-target-libsanitizer install-pdf-target: maybe-install-pdf-target-libvtv install-pdf-target: maybe-install-pdf-target-libssp @@ -1754,7 +1741,6 @@ install-html-host: maybe-install-html-lto-plugin .PHONY: install-html-target install-html-target: maybe-install-html-target-libstdc++-v3 -install-html-target: maybe-install-html-target-libmudflap install-html-target: maybe-install-html-target-libsanitizer install-html-target: maybe-install-html-target-libvtv install-html-target: maybe-install-html-target-libssp @@ -1837,7 +1823,6 @@ installcheck-host: maybe-installcheck-lto-plugin .PHONY: installcheck-target installcheck-target: maybe-installcheck-target-libstdc++-v3 -installcheck-target: maybe-installcheck-target-libmudflap installcheck-target: maybe-installcheck-target-libsanitizer installcheck-target: maybe-installcheck-target-libvtv installcheck-target: maybe-installcheck-target-libssp @@ -1920,7 +1905,6 @@ mostlyclean-host: maybe-mostlyclean-lto-plugin .PHONY: mostlyclean-target mostlyclean-target: maybe-mostlyclean-target-libstdc++-v3 -mostlyclean-target: maybe-mostlyclean-target-libmudflap mostlyclean-target: maybe-mostlyclean-target-libsanitizer mostlyclean-target: maybe-mostlyclean-target-libvtv mostlyclean-target: maybe-mostlyclean-target-libssp @@ -2003,7 +1987,6 @@ clean-host: maybe-clean-lto-plugin .PHONY: clean-target clean-target: maybe-clean-target-libstdc++-v3 -clean-target: maybe-clean-target-libmudflap clean-target: maybe-clean-target-libsanitizer clean-target: maybe-clean-target-libvtv clean-target: maybe-clean-target-libssp @@ -2086,7 +2069,6 @@ distclean-host: maybe-distclean-lto-plugin .PHONY: distclean-target distclean-target: maybe-distclean-target-libstdc++-v3 -distclean-target: maybe-distclean-target-libmudflap distclean-target: maybe-distclean-target-libsanitizer distclean-target: maybe-distclean-target-libvtv distclean-target: maybe-distclean-target-libssp @@ -2169,7 +2151,6 @@ maintainer-clean-host: maybe-maintainer-clean-lto-plugin .PHONY: maintainer-clean-target maintainer-clean-target: maybe-maintainer-clean-target-libstdc++-v3 -maintainer-clean-target: maybe-maintainer-clean-target-libmudflap maintainer-clean-target: maybe-maintainer-clean-target-libsanitizer maintainer-clean-target: maybe-maintainer-clean-target-libvtv maintainer-clean-target: maybe-maintainer-clean-target-libssp @@ -2307,7 +2288,6 @@ check-host: \ .PHONY: check-target check-target: \ maybe-check-target-libstdc++-v3 \ - maybe-check-target-libmudflap \ maybe-check-target-libsanitizer \ maybe-check-target-libvtv \ maybe-check-target-libssp \ @@ -2463,7 +2443,6 @@ install-host: \ .PHONY: install-target install-target: \ maybe-install-target-libstdc++-v3 \ - maybe-install-target-libmudflap \ maybe-install-target-libsanitizer \ maybe-install-target-libvtv \ maybe-install-target-libssp \ @@ -2566,7 +2545,6 @@ install-strip-host: \ .PHONY: install-strip-target install-strip-target: \ maybe-install-strip-target-libstdc++-v3 \ - maybe-install-strip-target-libmudflap \ maybe-install-strip-target-libsanitizer \ maybe-install-strip-target-libvtv \ maybe-install-strip-target-libssp \ @@ -31745,463 +31723,6 @@ maintainer-clean-target-libstdc++-v3: -.PHONY: configure-target-libmudflap maybe-configure-target-libmudflap -maybe-configure-target-libmudflap: -@if gcc-bootstrap -configure-target-libmudflap: stage_current -@endif gcc-bootstrap -@if target-libmudflap -maybe-configure-target-libmudflap: configure-target-libmudflap -configure-target-libmudflap: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libmudflap..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmudflap ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libmudflap/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libmudflap/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libmudflap/multilib.tmp $(TARGET_SUBDIR)/libmudflap/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libmudflap/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libmudflap/Makefile; \ - mv $(TARGET_SUBDIR)/libmudflap/multilib.tmp $(TARGET_SUBDIR)/libmudflap/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libmudflap/multilib.tmp $(TARGET_SUBDIR)/libmudflap/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libmudflap/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmudflap ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libmudflap; \ - cd "$(TARGET_SUBDIR)/libmudflap" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libmudflap/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libmudflap"; \ - libsrcdir="$$s/libmudflap"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libmudflap - - - - - -.PHONY: all-target-libmudflap maybe-all-target-libmudflap -maybe-all-target-libmudflap: -@if gcc-bootstrap -all-target-libmudflap: stage_current -@endif gcc-bootstrap -@if target-libmudflap -TARGET-target-libmudflap=all -maybe-all-target-libmudflap: all-target-libmudflap -all-target-libmudflap: configure-target-libmudflap - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-libmudflap)) -@endif target-libmudflap - - - - - -.PHONY: check-target-libmudflap maybe-check-target-libmudflap -maybe-check-target-libmudflap: -@if target-libmudflap -maybe-check-target-libmudflap: check-target-libmudflap - -check-target-libmudflap: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-libmudflap - -.PHONY: install-target-libmudflap maybe-install-target-libmudflap -maybe-install-target-libmudflap: -@if target-libmudflap -maybe-install-target-libmudflap: install-target-libmudflap - -install-target-libmudflap: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libmudflap - -.PHONY: install-strip-target-libmudflap maybe-install-strip-target-libmudflap -maybe-install-strip-target-libmudflap: -@if target-libmudflap -maybe-install-strip-target-libmudflap: install-strip-target-libmudflap - -install-strip-target-libmudflap: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) - -@endif target-libmudflap - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libmudflap info-target-libmudflap -maybe-info-target-libmudflap: -@if target-libmudflap -maybe-info-target-libmudflap: info-target-libmudflap - -info-target-libmudflap: \ - configure-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-dvi-target-libmudflap dvi-target-libmudflap -maybe-dvi-target-libmudflap: -@if target-libmudflap -maybe-dvi-target-libmudflap: dvi-target-libmudflap - -dvi-target-libmudflap: \ - configure-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-pdf-target-libmudflap pdf-target-libmudflap -maybe-pdf-target-libmudflap: -@if target-libmudflap -maybe-pdf-target-libmudflap: pdf-target-libmudflap - -pdf-target-libmudflap: \ - configure-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-html-target-libmudflap html-target-libmudflap -maybe-html-target-libmudflap: -@if target-libmudflap -maybe-html-target-libmudflap: html-target-libmudflap - -html-target-libmudflap: \ - configure-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-TAGS-target-libmudflap TAGS-target-libmudflap -maybe-TAGS-target-libmudflap: -@if target-libmudflap -maybe-TAGS-target-libmudflap: TAGS-target-libmudflap - -TAGS-target-libmudflap: \ - configure-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-install-info-target-libmudflap install-info-target-libmudflap -maybe-install-info-target-libmudflap: -@if target-libmudflap -maybe-install-info-target-libmudflap: install-info-target-libmudflap - -install-info-target-libmudflap: \ - configure-target-libmudflap \ - info-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-install-pdf-target-libmudflap install-pdf-target-libmudflap -maybe-install-pdf-target-libmudflap: -@if target-libmudflap -maybe-install-pdf-target-libmudflap: install-pdf-target-libmudflap - -install-pdf-target-libmudflap: \ - configure-target-libmudflap \ - pdf-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-install-html-target-libmudflap install-html-target-libmudflap -maybe-install-html-target-libmudflap: -@if target-libmudflap -maybe-install-html-target-libmudflap: install-html-target-libmudflap - -install-html-target-libmudflap: \ - configure-target-libmudflap \ - html-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-installcheck-target-libmudflap installcheck-target-libmudflap -maybe-installcheck-target-libmudflap: -@if target-libmudflap -maybe-installcheck-target-libmudflap: installcheck-target-libmudflap - -installcheck-target-libmudflap: \ - configure-target-libmudflap - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-mostlyclean-target-libmudflap mostlyclean-target-libmudflap -maybe-mostlyclean-target-libmudflap: -@if target-libmudflap -maybe-mostlyclean-target-libmudflap: mostlyclean-target-libmudflap - -mostlyclean-target-libmudflap: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-clean-target-libmudflap clean-target-libmudflap -maybe-clean-target-libmudflap: -@if target-libmudflap -maybe-clean-target-libmudflap: clean-target-libmudflap - -clean-target-libmudflap: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-distclean-target-libmudflap distclean-target-libmudflap -maybe-distclean-target-libmudflap: -@if target-libmudflap -maybe-distclean-target-libmudflap: distclean-target-libmudflap - -distclean-target-libmudflap: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libmudflap - -.PHONY: maybe-maintainer-clean-target-libmudflap maintainer-clean-target-libmudflap -maybe-maintainer-clean-target-libmudflap: -@if target-libmudflap -maybe-maintainer-clean-target-libmudflap: maintainer-clean-target-libmudflap - -maintainer-clean-target-libmudflap: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libmudflap/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libmudflap" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libmudflap && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libmudflap - - - - - .PHONY: configure-target-libsanitizer maybe-configure-target-libsanitizer maybe-configure-target-libsanitizer: @if gcc-bootstrap @@ -44237,13 +43758,6 @@ maintainer-clean-target-libatomic: -@if target-libmudflap -.PHONY: check-target-libmudflap-c++ -check-target-libmudflap-c++: - $(MAKE) RUNTESTFLAGS="$(RUNTESTFLAGS) c++frags.exp" check-target-libmudflap - -@endif target-libmudflap - @if target-libgomp .PHONY: check-target-libgomp-c++ check-target-libgomp-c++: @@ -44292,7 +43806,7 @@ check-gcc-c++: s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++); -check-c++: check-gcc-c++ check-target-libstdc++-v3 check-target-libmudflap-c++ check-target-libitm-c++ check-target-libgomp-c++ +check-c++: check-gcc-c++ check-target-libstdc++-v3 check-target-libitm-c++ check-target-libgomp-c++ .PHONY: check-gcc-fortran check-fortran check-gcc-fortran: @@ -46375,7 +45889,6 @@ configure-stage3-target-libstdc++-v3: maybe-all-stage3-gcc configure-stage4-target-libstdc++-v3: maybe-all-stage4-gcc configure-stageprofile-target-libstdc++-v3: maybe-all-stageprofile-gcc configure-stagefeedback-target-libstdc++-v3: maybe-all-stagefeedback-gcc -configure-target-libmudflap: stage_last configure-stage1-target-libsanitizer: maybe-all-stage1-gcc configure-stage2-target-libsanitizer: maybe-all-stage2-gcc configure-stage3-target-libsanitizer: maybe-all-stage3-gcc @@ -46422,7 +45935,6 @@ configure-target-libatomic: stage_last @if gcc-no-bootstrap configure-target-libstdc++-v3: maybe-all-gcc -configure-target-libmudflap: maybe-all-gcc configure-target-libsanitizer: maybe-all-gcc configure-target-libvtv: maybe-all-gcc configure-target-libssp: maybe-all-gcc @@ -47268,7 +46780,6 @@ configure-stagefeedback-target-libgomp: maybe-all-stagefeedback-target-libgcc @if gcc-no-bootstrap configure-target-libstdc++-v3: maybe-all-target-libgcc -configure-target-libmudflap: maybe-all-target-libgcc configure-target-libsanitizer: maybe-all-target-libgcc configure-target-libvtv: maybe-all-target-libgcc configure-target-libssp: maybe-all-target-libgcc @@ -47295,8 +46806,6 @@ configure-target-libatomic: maybe-all-target-libgcc configure-target-libstdc++-v3: maybe-all-target-newlib maybe-all-target-libgloss -configure-target-libmudflap: maybe-all-target-newlib maybe-all-target-libgloss - configure-target-libsanitizer: maybe-all-target-newlib maybe-all-target-libgloss configure-target-libvtv: maybe-all-target-newlib maybe-all-target-libgloss diff --git a/Makefile.tpl b/Makefile.tpl index 3233a78..3e187e1 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -1404,13 +1404,6 @@ ENDIF raw_cxx +] [+ ENDFOR recursive_targets +] [+ ENDFOR target_modules +] -@if target-libmudflap -.PHONY: check-target-libmudflap-c++ -check-target-libmudflap-c++: - $(MAKE) RUNTESTFLAGS="$(RUNTESTFLAGS) c++frags.exp" check-target-libmudflap - -@endif target-libmudflap - @if target-libgomp .PHONY: check-target-libgomp-c++ check-target-libgomp-c++: @@ -2775,7 +2775,6 @@ target_libraries="target-libgcc \ target-libatomic \ target-libitm \ target-libstdc++-v3 \ - target-libmudflap \ target-libsanitizer \ target-libvtv \ target-libssp \ @@ -3128,22 +3127,6 @@ if test x$enable_static_libjava != xyes ; then fi -# Disable libmudflap on some systems. -if test x$enable_libmudflap = x ; then - case "${target}" in - *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | bfin*-*-uclinux* | *-*-kopensolaris*-gnu) - # Enable libmudflap by default in GNU and friends. - ;; - *-*-freebsd*) - # Enable libmudflap by default in FreeBSD. - ;; - *) - # Disable it by default everywhere else. - noconfigdirs="$noconfigdirs target-libmudflap" - ;; - esac -fi - # Disable libgomp on non POSIX hosted systems. if test x$enable_libgomp = x ; then # Enable libgomp by default on hosted POSIX systems. diff --git a/configure.ac b/configure.ac index 4c23652..595b2b9 100644 --- a/configure.ac +++ b/configure.ac @@ -159,7 +159,6 @@ target_libraries="target-libgcc \ target-libatomic \ target-libitm \ target-libstdc++-v3 \ - target-libmudflap \ target-libsanitizer \ target-libvtv \ target-libssp \ @@ -473,22 +472,6 @@ if test x$enable_static_libjava != xyes ; then fi AC_SUBST(EXTRA_CONFIGARGS_LIBJAVA) -# Disable libmudflap on some systems. -if test x$enable_libmudflap = x ; then - case "${target}" in - *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | bfin*-*-uclinux* | *-*-kopensolaris*-gnu) - # Enable libmudflap by default in GNU and friends. - ;; - *-*-freebsd*) - # Enable libmudflap by default in FreeBSD. - ;; - *) - # Disable it by default everywhere else. - noconfigdirs="$noconfigdirs target-libmudflap" - ;; - esac -fi - # Disable libgomp on non POSIX hosted systems. if test x$enable_libgomp = x ; then # Enable libgomp by default on hosted POSIX systems. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 29035aa..2e90a39 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,32 @@ +2013-10-26 Jeff Law <law@redhat.com> + + * Makefile.in (C_COMMON_OBJS): Remove tree-mudflap. + (OBJS): Remove tree-nomudflap.o + (GTFILES): Remove tree-mudflap.c + * builtins.c (expand_builtin_alloc): Remove mudflap support. + * gcc.c (MFWRAP_SPEC, MFLIB_SPEC): Likewise. + (mfwrap_spec, mflib_spec): Likewise. + (cpp_unique_options, cc1_options, static_specs): Likewise. + * gimplify (gimplify_vla_decl, build_va_arg_indirect_ref): Likewise. + * passes.def: Likewise. + * toplev.c (compile_file, process_options): Likewise. + * tree-inline.c (copy_tree_r): Likewise. + * tree-pass.,h (make_pass_mudflap_1, make_pass_mudflap_2): Likewise. + * varasm.c (make_decl_rtl, make_decl_rtl_for_debug): Likewise. + (build_constant_desc, output_constant_def_contents): Likewise. + (categorize_decl_for_section): Likewise. + * tree-mudflap.c: Removed. + * tree-mudflap.h: Removed. + * tree-nomudflap.c: Removed. + * bfin/uclinux.h (MFWRAP_SPEC): Remove. + * moxie/uclinux.h (MFWRAP_SPEC): Likewise. + * rs6000/aix.h (MFWRAP_SPEC, MFLIB_SPEC): Likewise. + * config/sol2.h (MFLIB_SPEC): Likewise. + * doc/install.texi: Remove mudflap references. + * doc/passes.texi: Similarly. + * doc/sourcebuild.texi: Similarly. + * doc/invoke.texi: Remove mudlfap related options. + 2013-10-25 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/58759 diff --git a/gcc/Makefile.in b/gcc/Makefile.in index f519455..29609fd 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1132,14 +1132,11 @@ GCC_OBJS = gcc.o ggc-none.o c-family-warn = $(STRICT_WARN) # Language-specific object files shared by all C-family front ends. -# FIXME: tree-mudflap is C-family only, but it is also part of the middle-end. -# The mudflap machinery should be properly separated from the front ends, and -# perhaps turned into a plugin. C_COMMON_OBJS = c-family/c-common.o c-family/c-cppbuiltin.o c-family/c-dump.o \ c-family/c-format.o c-family/c-gimplify.o c-family/c-lex.o \ c-family/c-omp.o c-family/c-opts.o c-family/c-pch.o \ c-family/c-ppoutput.o c-family/c-pragma.o c-family/c-pretty-print.o \ - c-family/c-semantics.o c-family/c-ada-spec.o tree-mudflap.o \ + c-family/c-semantics.o c-family/c-ada-spec.o \ c-family/array-notation-common.o c-family/c-ubsan.o # Language-independent object files. @@ -1388,7 +1385,6 @@ OBJS = \ tree-iterator.o \ tree-loop-distribution.o \ tree-nested.o \ - tree-nomudflap.o \ tree-nrv.o \ tree-object-size.o \ tree-outof-ssa.o \ @@ -2252,7 +2248,7 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \ $(srcdir)/sdbout.c $(srcdir)/stor-layout.c \ $(srcdir)/stringpool.c $(srcdir)/tree.c $(srcdir)/varasm.c \ $(srcdir)/gimple.h \ - $(srcdir)/tree-mudflap.c $(srcdir)/gimple-ssa.h \ + $(srcdir)/gimple-ssa.h \ $(srcdir)/tree-ssanames.c $(srcdir)/tree-eh.c $(srcdir)/tree-ssa-address.c \ $(srcdir)/tree-cfg.c \ $(srcdir)/tree-dfa.c \ diff --git a/gcc/builtins.c b/gcc/builtins.c index b380c2c..10758ca 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -4362,10 +4362,6 @@ expand_builtin_alloca (tree exp, bool cannot_accumulate) bool alloca_with_align = (DECL_FUNCTION_CODE (get_callee_fndecl (exp)) == BUILT_IN_ALLOCA_WITH_ALIGN); - /* Emit normal call if we use mudflap. */ - if (flag_mudflap) - return NULL_RTX; - valid_arglist = (alloca_with_align ? validate_arglist (exp, INTEGER_TYPE, INTEGER_TYPE, VOID_TYPE) diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 25bb465..1fab5a8 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2013-10-26 Jeff Law <law@redhat.com> + + * c-family/c-common.c (c_define_builtins): Remove mudflap support. + * c-family/c.opt: Ignore and warn for mudflap options. + 2013-10-24 Tobias Burnus <burnus@net-b.de> PR other/33426 diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index d830288..b20fdd6 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -39,7 +39,6 @@ along with GCC; see the file COPYING3. If not see #include "diagnostic.h" #include "tree-iterator.h" #include "hashtab.h" -#include "tree-mudflap.h" #include "opts.h" #include "cgraph.h" #include "target-def.h" @@ -5220,9 +5219,6 @@ c_define_builtins (tree va_list_ref_type_node, tree va_list_arg_type_node) targetm.init_builtins (); build_common_builtin_nodes (); - - if (flag_mudflap) - mudflap_init (); } /* Like get_identifier, but avoid warnings about null arguments when diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index e8dde93..b862eb9 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -538,8 +538,7 @@ C ObjC Var(warn_missing_prototypes) Warning Warn about global functions without prototypes Wmudflap -C ObjC C++ ObjC++ Var(warn_mudflap) Init(1) Warning -Warn about constructs not instrumented by -fmudflap +C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported) Wmultichar C ObjC C++ ObjC++ Warning @@ -997,16 +996,13 @@ C ObjC C++ ObjC++ Var(flag_ms_extensions) Don't warn about uses of Microsoft extensions fmudflap -C ObjC C++ ObjC++ RejectNegative Report Var(flag_mudflap) -Add mudflap bounds-checking instrumentation for single-threaded program +C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported) fmudflapth -C ObjC C++ ObjC++ RejectNegative Report Var(flag_mudflap,2) -Add mudflap bounds-checking instrumentation for multi-threaded program +C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported) fmudflapir -C ObjC C++ ObjC++ RejectNegative Report Var(flag_mudflap_ignore_reads) -Ignore read operations when inserting mudflap instrumentation +C ObjC C++ ObjC++ Ignore Warn(switch %qs is no longer supported) fname-mangling-version- C++ ObjC++ Joined Ignore Warn(switch %qs is no longer supported) diff --git a/gcc/config/bfin/uclinux.h b/gcc/config/bfin/uclinux.h index 63cba99..848515c 100644 --- a/gcc/config/bfin/uclinux.h +++ b/gcc/config/bfin/uclinux.h @@ -32,14 +32,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see %{mfast-fp:-lbffastfp} %G %L %{mfast-fp:-lbffastfp} %G \ " -/* Like the definition in gcc.c, but for purposes of uClinux, every link is - static. */ -#define MFWRAP_SPEC " %{fmudflap|fmudflapth: \ - --wrap=malloc --wrap=free --wrap=calloc --wrap=realloc\ - --wrap=mmap --wrap=munmap --wrap=alloca\ - %{fmudflapth: --wrap=pthread_create\ -}} %{fmudflap|fmudflapth: --wrap=main}" - #undef TARGET_SUPPORTS_SYNC_CALLS #define TARGET_SUPPORTS_SYNC_CALLS 1 diff --git a/gcc/config/moxie/uclinux.h b/gcc/config/moxie/uclinux.h index 85c65f2..fb8c925 100644 --- a/gcc/config/moxie/uclinux.h +++ b/gcc/config/moxie/uclinux.h @@ -30,13 +30,5 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #define TARGET_OS_CPP_BUILTINS() GNU_USER_TARGET_OS_CPP_BUILTINS() -/* Like the definition in gcc.c, but for purposes of uClinux, every link is - static. */ -#define MFWRAP_SPEC " %{fmudflap|fmudflapth: \ - --wrap=malloc --wrap=free --wrap=calloc --wrap=realloc\ - --wrap=mmap --wrap=munmap --wrap=alloca\ - %{fmudflapth: --wrap=pthread_create\ -}} %{fmudflap|fmudflapth: --wrap=main}" - #undef TARGET_LIBC_HAS_FUNCTION #define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function diff --git a/gcc/config/rs6000/aix.h b/gcc/config/rs6000/aix.h index f81666a..a11bd57 100644 --- a/gcc/config/rs6000/aix.h +++ b/gcc/config/rs6000/aix.h @@ -66,30 +66,6 @@ /* Because of the above, we must have gcc search itself to find libgcc.a. */ #define LINK_LIBGCC_SPECIAL_1 -#define MFWRAP_SPEC " %{static: %{fmudflap|fmudflapth: \ - -brename:malloc,__wrap_malloc -brename:__real_malloc,malloc \ - -brename:free,__wrap_free -brename:__real_free,free \ - -brename:calloc,__wrap_calloc -brename:__real_calloc,calloc \ - -brename:realloc,__wrap_realloc -brename:__real_realloc,realloc \ - -brename:mmap,__wrap_mmap -brename:__real_mmap,mmap \ - -brename:munmap,__wrap_munmap -brename:__real_munmap,munmap \ - -brename:alloca,__wrap_alloca -brename:__real_alloca,alloca \ -} %{fmudflapth: \ - -brename:pthread_create,__wrap_pthread_create \ - -brename:__real_pthread_create,pthread_create \ - -brename:pthread_join,__wrap_pthread_join \ - -brename:__real_pthread_join,pthread_join \ - -brename:pthread_exit,__wrap_pthread_exit \ - -brename:__real_pthread_exit,pthread_exit \ -}} %{fmudflap|fmudflapth: \ - -brename:main,__wrap_main -brename:__real_main,main \ -}" - -#define MFLIB_SPEC " %{fmudflap: -lmudflap \ - %{static:%(link_gcc_c_sequence) -lmudflap}} \ - %{fmudflapth: -lmudflapth -lpthread \ - %{static:%(link_gcc_c_sequence) -lmudflapth}} " - /* Names to predefine in the preprocessor for this target machine. */ #define TARGET_OS_AIX_CPP_BUILTINS() \ do \ diff --git a/gcc/config/sol2.h b/gcc/config/sol2.h index b606595..749e168 100644 --- a/gcc/config/sol2.h +++ b/gcc/config/sol2.h @@ -194,11 +194,6 @@ along with GCC; see the file COPYING3. If not see #endif /* HAVE_LD_EH_FRAME && TARGET_DL_ITERATE_PHDR */ #endif -#ifndef USE_GLD -/* The default MFLIB_SPEC is GNU ld specific. */ -#define MFLIB_SPEC "" -#endif - /* collect2.c can only parse GNU nm -n output. Solaris nm needs -png to produce the same format. */ #define NM_FLAGS "-png" diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 5cb4d3c..308f3e8 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -1391,7 +1391,7 @@ addition, @samp{libstdc++}'s include files will be installed into @option{--with-gxx-include-dir=@var{dirname}}. Using this option is particularly useful if you intend to use several versions of GCC in parallel. This is currently supported by @samp{libgfortran}, -@samp{libjava}, @samp{libmudflap}, @samp{libstdc++}, and @samp{libobjc}. +@samp{libjava}, @samp{libstdc++}, and @samp{libobjc}. @item --enable-languages=@var{lang1},@var{lang2},@dots{} Specify that only a particular subset of compilers and diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index d9d81a9..ab25922 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -256,7 +256,6 @@ Objective-C and Objective-C++ Dialects}. -Wlogical-op -Wlong-long @gol -Wmain -Wmaybe-uninitialized -Wmissing-braces -Wmissing-field-initializers @gol -Wmissing-include-dirs @gol --Wno-mudflap @gol -Wno-multichar -Wnonnull -Wno-overflow @gol -Woverlength-strings -Wpacked -Wpacked-bitfield-compat -Wpadded @gol -Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format @gol @@ -308,7 +307,7 @@ Objective-C and Objective-C++ Dialects}. -fdump-tree-ch @gol -fdump-tree-ssa@r{[}-@var{n}@r{]} -fdump-tree-pre@r{[}-@var{n}@r{]} @gol -fdump-tree-ccp@r{[}-@var{n}@r{]} -fdump-tree-dce@r{[}-@var{n}@r{]} @gol --fdump-tree-gimple@r{[}-raw@r{]} -fdump-tree-mudflap@r{[}-@var{n}@r{]} @gol +-fdump-tree-gimple@r{[}-raw@r{]} @gol -fdump-tree-dom@r{[}-@var{n}@r{]} @gol -fdump-tree-dse@r{[}-@var{n}@r{]} @gol -fdump-tree-phiprop@r{[}-@var{n}@r{]} @gol @@ -384,7 +383,7 @@ Objective-C and Objective-C++ Dialects}. -floop-parallelize-all -flto -flto-compression-level @gol -flto-partition=@var{alg} -flto-report -flto-report-wpa -fmerge-all-constants @gol -fmerge-constants -fmodulo-sched -fmodulo-sched-allow-regmoves @gol --fmove-loop-invariants fmudflap -fmudflapir -fmudflapth -fno-branch-count-reg @gol +-fmove-loop-invariants -fno-branch-count-reg @gol -fno-defer-pop -fno-function-cse -fno-guess-branch-probability @gol -fno-inline -fno-math-errno -fno-peephole -fno-peephole2 @gol -fno-sched-interblock -fno-sched-spec -fno-signed-zeros @gol @@ -4991,11 +4990,6 @@ This option is only supported for C and Objective-C@. It is implied by This option is only active when @option{-fstack-protector} is active. It warns about functions that are not protected against stack smashing. -@item -Wno-mudflap -@opindex Wno-mudflap -Suppress warnings about constructs that cannot be instrumented by -@option{-fmudflap}. - @item -Woverlength-strings @opindex Woverlength-strings @opindex Wno-overlength-strings @@ -6200,11 +6194,6 @@ by appending @file{.store_copyprop} to the source file name. Dump each function after dead code elimination. The file name is made by appending @file{.dce} to the source file name. -@item mudflap -@opindex fdump-tree-mudflap -Dump each function after adding mudflap instrumentation. The file name is -made by appending @file{.mudflap} to the source file name. - @item sra @opindex fdump-tree-sra Dump each function after performing scalar replacement of aggregates. The @@ -7071,32 +7060,6 @@ assumptions based on that. The default is @option{-fzero-initialized-in-bss}. -@item -fmudflap -fmudflapth -fmudflapir -@opindex fmudflap -@opindex fmudflapth -@opindex fmudflapir -@cindex bounds checking -@cindex mudflap -For front-ends that support it (C and C++), instrument all risky -pointer/array dereferencing operations, some standard library -string/heap functions, and some other associated constructs with -range/validity tests. Modules so instrumented should be immune to -buffer overflows, invalid heap use, and some other classes of C/C++ -programming errors. The instrumentation relies on a separate runtime -library (@file{libmudflap}), which is linked into a program if -@option{-fmudflap} is given at link time. Run-time behavior of the -instrumented program is controlled by the @env{MUDFLAP_OPTIONS} -environment variable. See @code{env MUDFLAP_OPTIONS=-help a.out} -for its options. - -Use @option{-fmudflapth} instead of @option{-fmudflap} to compile and to -link if your program is multi-threaded. Use @option{-fmudflapir}, in -addition to @option{-fmudflap} or @option{-fmudflapth}, if -instrumentation should ignore pointer reads. This produces less -instrumentation (and therefore faster execution) and still provides -some protection against outright memory corrupting writes, but allows -erroneously read data to propagate within a program. - @item -fthread-jumps @opindex fthread-jumps Perform optimizations that check to see if a jump branches to a diff --git a/gcc/doc/passes.texi b/gcc/doc/passes.texi index 045f964..d8e4315 100644 --- a/gcc/doc/passes.texi +++ b/gcc/doc/passes.texi @@ -225,20 +225,6 @@ stuff quickly rather than wait until later when it's more work to get rid of it. This pass is located in @file{tree-cfg.c} and described by @code{pass_remove_useless_stmts}. -@item Mudflap declaration registration - -If mudflap (@pxref{Optimize Options,,-fmudflap -fmudflapth --fmudflapir,gcc,Using the GNU Compiler Collection (GCC)}) is -enabled, we generate code to register some variable declarations with -the mudflap runtime. Specifically, the runtime tracks the lifetimes of -those variable declarations that have their addresses taken, or whose -bounds are unknown at compile time (@code{extern}). This pass generates -new exception handling constructs (@code{try}/@code{finally}), and so -must run before those are lowered. In addition, the pass enqueues -declarations of static variables whose lifetimes extend to the entire -program. The pass is located in @file{tree-mudflap.c} and is described -by @code{pass_mudflap_1}. - @item OpenMP lowering If OpenMP generation (@option{-fopenmp}) is enabled, this pass lowers @@ -576,18 +562,6 @@ run last so that we have as much time as possible to prove that the statement is not reachable. It is located in @file{tree-cfg.c} and is described by @code{pass_warn_function_return}. -@item Mudflap statement annotation - -If mudflap is enabled, we rewrite some memory accesses with code to -validate that the memory access is correct. In particular, expressions -involving pointer dereferences (@code{INDIRECT_REF}, @code{ARRAY_REF}, -etc.) are replaced by code that checks the selected address range -against the mudflap runtime's database of valid regions. This check -includes an inline lookup into a direct-mapped cache, based on -shift/mask operations of the pointer value, with a fallback function -call into the runtime. The pass is located in @file{tree-mudflap.c} and -is described by @code{pass_mudflap_2}. - @item Leave static single assignment form This pass rewrites the function such that it is in normal form. At @@ -968,10 +942,7 @@ This pass outputs the assembler code for the function. The source files are @file{final.c} plus @file{insn-output.c}; the latter is generated automatically from the machine description by the tool @file{genoutput}. The header file @file{conditions.h} is used for communication between -these files. If mudflap is enabled, the queue of deferred declarations -and any addressed constants (e.g., string literals) is processed by -@code{mudflap_finish_file} into a synthetic constructor function -containing calls into the mudflap runtime. +these files. @item Debugging information output diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index 90bd0bd..1a70916 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -103,10 +103,6 @@ The runtime support library for transactional memory. @item libjava The Java runtime library. -@item libmudflap -The @code{libmudflap} library, used for instrumenting pointer and array -dereferencing operations. - @item libobjc The Objective-C and Objective-C++ runtime library. @@ -523,28 +523,12 @@ proper position among the other output files. */ #define LIB_SPEC "%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}}" #endif -/* mudflap specs */ -#ifndef MFWRAP_SPEC -/* XXX: valid only for GNU ld */ -/* XXX: should exactly match hooks provided by libmudflap.a */ -#define MFWRAP_SPEC " %{static: %{fmudflap|fmudflapth: \ - --wrap=malloc --wrap=free --wrap=calloc --wrap=realloc\ - --wrap=mmap --wrap=mmap64 --wrap=munmap --wrap=alloca\ -} %{fmudflapth: --wrap=pthread_create\ -}} %{fmudflap|fmudflapth: --wrap=main}" -#endif -#ifndef MFLIB_SPEC -#define MFLIB_SPEC "%{fmudflap|fmudflapth: -export-dynamic}" -#endif - /* When using -fsplit-stack we need to wrap pthread_create, in order to initialize the stack guard. We always use wrapping, rather than shared library ordering, and we keep the wrapper function in libgcc. This is not yet a real spec, though it could become one; it is currently just stuffed into LINK_SPEC. FIXME: This wrapping - only works with GNU ld and gold. FIXME: This is incompatible with - -fmudflap when linking statically, which wants to do its own - wrapping. */ + only works with GNU ld and gold. */ #define STACK_SPLIT_SPEC " %{fsplit-stack: --wrap=pthread_create}" #ifndef LIBASAN_SPEC @@ -820,8 +804,6 @@ static const char *asm_spec = ASM_SPEC; static const char *asm_final_spec = ASM_FINAL_SPEC; static const char *link_spec = LINK_SPEC; static const char *lib_spec = LIB_SPEC; -static const char *mfwrap_spec = MFWRAP_SPEC; -static const char *mflib_spec = MFLIB_SPEC; static const char *link_gomp_spec = ""; static const char *libgcc_spec = LIBGCC_SPEC; static const char *endfile_spec = ENDFILE_SPEC; @@ -862,8 +844,6 @@ static const char *cpp_unique_options = %{remap} %{g3|ggdb3|gstabs3|gcoff3|gxcoff3|gvms3:-dD}\ %{!iplugindir*:%{fplugin*:%:find-plugindir()}}\ %{H} %C %{D*&U*&A*} %{i*} %Z %i\ - %{fmudflap:-D_MUDFLAP -include mf-runtime.h}\ - %{fmudflapth:-D_MUDFLAP -D_MUDFLAPTH -include mf-runtime.h}\ %{E|M|MM:%W{o*}}"; /* This contains cpp options which are common with cc1_options and are passed @@ -895,7 +875,6 @@ static const char *cc1_options = %{-help=*:--help=%*}\ %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\ %{fsyntax-only:-o %j} %{-param*}\ - %{fmudflap|fmudflapth:-fno-builtin -fno-merge-constants}\ %{coverage:-fprofile-arcs -ftest-coverage}"; static const char *asm_options = @@ -1309,8 +1288,6 @@ static struct spec_list static_specs[] = INIT_STATIC_SPEC ("endfile", &endfile_spec), INIT_STATIC_SPEC ("link", &link_spec), INIT_STATIC_SPEC ("lib", &lib_spec), - INIT_STATIC_SPEC ("mfwrap", &mfwrap_spec), - INIT_STATIC_SPEC ("mflib", &mflib_spec), INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec), INIT_STATIC_SPEC ("libgcc", &libgcc_spec), INIT_STATIC_SPEC ("startfile", &startfile_spec), diff --git a/gcc/gimplify.c b/gcc/gimplify.c index d5b535d2..4b4eb4c 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -51,7 +51,6 @@ along with GCC; see the file COPYING3. If not see #include "langhooks-def.h" /* FIXME: for lhd_set_decl_assembler_name */ #include "tree-pass.h" /* FIXME: only for PROP_gimple_any */ -#include "tree-mudflap.h" #include "expr.h" #include "tm_p.h" @@ -1236,8 +1235,7 @@ gimplify_bind_expr (tree *expr_p, gimple_seq *pre_p) gimple stack_restore; /* Save stack on entry and restore it on exit. Add a try_finally - block to achieve this. Note that mudflap depends on the - format of the emitted code: see mx_register_decls(). */ + block to achieve this. */ build_stack_save_restore (&stack_save, &stack_restore); gimplify_seq_add_stmt (&cleanup, stack_restore); @@ -1395,8 +1393,7 @@ static void gimplify_vla_decl (tree decl, gimple_seq *seq_p) { /* This is a variable-sized decl. Simplify its size and mark it - for deferred expansion. Note that mudflap depends on the format - of the emitted code: see mx_register_decls(). */ + for deferred expansion. */ tree t, addr, ptr_type; gimplify_one_sizepos (&DECL_SIZE (decl), seq_p); diff --git a/gcc/passes.def b/gcc/passes.def index 84eb3f3..404b790 100644 --- a/gcc/passes.def +++ b/gcc/passes.def @@ -34,7 +34,6 @@ along with GCC; see the file COPYING3. If not see NEXT_PASS (pass_warn_unused_result); NEXT_PASS (pass_diagnose_omp_blocks); NEXT_PASS (pass_diagnose_tm_blocks); - NEXT_PASS (pass_mudflap_1); NEXT_PASS (pass_lower_omp); NEXT_PASS (pass_lower_cf); NEXT_PASS (pass_lower_tm); @@ -305,7 +304,6 @@ along with GCC; see the file COPYING3. If not see NEXT_PASS (pass_cleanup_eh); NEXT_PASS (pass_lower_resx); NEXT_PASS (pass_nrv); - NEXT_PASS (pass_mudflap_2); NEXT_PASS (pass_cleanup_cfg_post_optimizing); NEXT_PASS (pass_warn_function_noreturn); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6b98112..9a979e2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-10-26 Jeff Law <law@redhat.com> + + * g++.dg/torture/pr49309.C: Removed. + * gcc.dg/dfp/pr35739.c: Removed. + 2013-10-25 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/58759 diff --git a/gcc/testsuite/g++.dg/torture/pr49309.C b/gcc/testsuite/g++.dg/torture/pr49309.C deleted file mode 100644 index f96967d..0000000 --- a/gcc/testsuite/g++.dg/torture/pr49309.C +++ /dev/null @@ -1,16 +0,0 @@ -// PR tree-optimization/49309 -// { dg-do compile } -// { dg-skip-if "" { *-*-* } { "-flto" } { "" } } -// { dg-options "-fpreprocessed -fmudflap" } - -struct A -{ - int i; - - A(); - A(const A&); -}; - -inline void foo(A a) { a = A(); } - -void bar() { foo(A()); } diff --git a/gcc/testsuite/gcc.dg/dfp/pr35739.c b/gcc/testsuite/gcc.dg/dfp/pr35739.c deleted file mode 100644 index 0fc9d47..0000000 --- a/gcc/testsuite/gcc.dg/dfp/pr35739.c +++ /dev/null @@ -1,16 +0,0 @@ -/* PR c/35739 */ -/* { dg-do compile { target *-*-linux* *-*-gnu* } } */ -/* { dg-options "-O -fpreprocessed -fmudflap" } */ - -_Decimal128 -foo (int n, ...) -{ - int i; - _Decimal128 j = 0; - __builtin_va_list ap; - __builtin_va_start (ap, n); - for (i = 0; i < n; i++) - j += __builtin_va_arg (ap, _Decimal128); - __builtin_va_end (ap); - return j; -} diff --git a/gcc/toplev.c b/gcc/toplev.c index cc8e905..db269b7 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -68,7 +68,6 @@ along with GCC; see the file COPYING3. If not see #include "coverage.h" #include "value-prof.h" #include "alloc-pool.h" -#include "tree-mudflap.h" #include "asan.h" #include "tsan.h" #include "gimple.h" @@ -568,10 +567,6 @@ compile_file (void) basically finished. */ if (in_lto_p || !flag_lto || flag_fat_lto_objects) { - /* Likewise for mudflap static object registrations. */ - if (flag_mudflap) - mudflap_finish_file (); - /* File-scope initialization for AddressSanitizer. */ if (flag_sanitize & SANITIZE_ADDRESS) asan_finish_file (); @@ -1287,9 +1282,6 @@ process_options (void) "and -ftree-loop-linear)"); #endif - if (flag_mudflap && flag_lto) - sorry ("mudflap cannot be used together with link-time optimization"); - /* One region RA really helps to decrease the code size. */ if (flag_ira_region == IRA_REGION_AUTODETECT) flag_ira_region diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 8852311..a20e73b 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -34,7 +34,6 @@ along with GCC; see the file COPYING3. If not see #include "basic-block.h" #include "tree-iterator.h" #include "intl.h" -#include "tree-mudflap.h" #include "gimple.h" #include "gimple-ssa.h" #include "tree-cfg.h" @@ -4592,10 +4591,6 @@ copy_tree_r (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) /* Copy the node. */ new_tree = copy_node (*tp); - /* Propagate mudflap marked-ness. */ - if (flag_mudflap && mf_marked_p (*tp)) - mf_mark (new_tree); - *tp = new_tree; /* Now, restore the chain, if appropriate. That will cause @@ -4617,11 +4612,6 @@ copy_tree_r (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) tree new_tree; new_tree = copy_node (*tp); - - /* Propagate mudflap marked-ness. */ - if (flag_mudflap && mf_marked_p (*tp)) - mf_mark (new_tree); - CONSTRUCTOR_ELTS (new_tree) = vec_safe_copy (CONSTRUCTOR_ELTS (*tp)); *tp = new_tree; } diff --git a/gcc/tree-mudflap.c b/gcc/tree-mudflap.c deleted file mode 100644 index a150311..0000000 --- a/gcc/tree-mudflap.c +++ /dev/null @@ -1,1450 +0,0 @@ -/* Mudflap: narrow-pointer bounds-checking by tree rewriting. - Copyright (C) 2002-2013 Free Software Foundation, Inc. - Contributed by Frank Ch. Eigler <fche@redhat.com> - and Graydon Hoare <graydon@redhat.com> - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING3. If not see -<http://www.gnu.org/licenses/>. */ - - -#include "config.h" -#include "system.h" -#include "coretypes.h" -#include "tm.h" -#include "tree.h" -#include "tm_p.h" -#include "basic-block.h" -#include "flags.h" -#include "function.h" -#include "tree-inline.h" -#include "gimple.h" -#include "tree-iterator.h" -#include "cgraph.h" -#include "tree-cfg.h" -#include "tree-mudflap.h" -#include "tree-pass.h" -#include "hashtab.h" -#include "diagnostic.h" -#include "demangle.h" -#include "langhooks.h" -#include "ggc.h" -#include "tree-ssa-address.h" - -extern void add_bb_to_loop (basic_block, struct loop *); - -/* Internal function decls */ - - -/* Options. */ -#define flag_mudflap_threads (flag_mudflap == 2) - -/* Helpers. */ -static tree mf_build_string (const char *string); -static tree mf_varname_tree (tree); -static tree mf_file_function_line_tree (location_t); - -/* Indirection-related instrumentation. */ -static void mf_decl_cache_locals (void); -static void mf_decl_clear_locals (void); -static void mf_xform_statements (void); -static unsigned int execute_mudflap_function_ops (void); - -/* Addressable variables instrumentation. */ -static void mf_xform_decls (gimple_seq, tree); -static tree mx_xfn_xform_decls (gimple_stmt_iterator *, bool *, - struct walk_stmt_info *); -static gimple_seq mx_register_decls (tree, gimple_seq, location_t); -static unsigned int execute_mudflap_function_decls (void); - -/* Return true if DECL is artificial stub that shouldn't be instrumented by - mf. We should instrument clones of non-artificial functions. */ -static inline bool -mf_artificial (const_tree decl) -{ - return DECL_ARTIFICIAL (DECL_ORIGIN (decl)); -} - -/* ------------------------------------------------------------------------ */ -/* Some generally helpful functions for mudflap instrumentation. */ - -/* Build a reference to a literal string. */ -static tree -mf_build_string (const char *string) -{ - size_t len = strlen (string); - tree result = mf_mark (build_string (len + 1, string)); - - TREE_TYPE (result) = build_array_type - (char_type_node, build_index_type (size_int (len))); - TREE_CONSTANT (result) = 1; - TREE_READONLY (result) = 1; - TREE_STATIC (result) = 1; - - result = build1 (ADDR_EXPR, build_pointer_type (char_type_node), result); - - return mf_mark (result); -} - -/* Create a properly typed STRING_CST node that describes the given - declaration. It will be used as an argument for __mf_register(). - Try to construct a helpful string, including file/function/variable - name. */ - -static tree -mf_varname_tree (tree decl) -{ - const char *buf_contents; - tree result; - - gcc_assert (decl); - - pretty_printer buf; - - /* Add FILENAME[:LINENUMBER[:COLUMNNUMBER]]. */ - { - expanded_location xloc = expand_location (DECL_SOURCE_LOCATION (decl)); - const char *sourcefile; - unsigned sourceline = xloc.line; - unsigned sourcecolumn = 0; - sourcecolumn = xloc.column; - sourcefile = xloc.file; - if (sourcefile == NULL && current_function_decl != NULL_TREE) - sourcefile = DECL_SOURCE_FILE (current_function_decl); - if (sourcefile == NULL) - sourcefile = "<unknown file>"; - - pp_string (&buf, sourcefile); - - if (sourceline != 0) - { - pp_colon (&buf); - pp_decimal_int (&buf, sourceline); - - if (sourcecolumn != 0) - { - pp_colon (&buf); - pp_decimal_int (&buf, sourcecolumn); - } - } - } - - if (current_function_decl != NULL_TREE) - { - /* Add (FUNCTION) */ - pp_string (&buf, " ("); - { - const char *funcname = NULL; - if (DECL_NAME (current_function_decl)) - funcname = lang_hooks.decl_printable_name (current_function_decl, 1); - if (funcname == NULL) - funcname = "anonymous fn"; - - pp_string (&buf, funcname); - } - pp_string (&buf, ") "); - } - else - pp_space (&buf); - - /* Add <variable-declaration>, possibly demangled. */ - { - const char *declname = NULL; - - if (DECL_NAME (decl) != NULL) - { - if (strcmp ("GNU C++", lang_hooks.name) == 0) - { - /* The gcc/cp decl_printable_name hook doesn't do as good a job as - the libiberty demangler. */ - declname = cplus_demangle (IDENTIFIER_POINTER (DECL_NAME (decl)), - DMGL_AUTO | DMGL_VERBOSE); - } - if (declname == NULL) - declname = lang_hooks.decl_printable_name (decl, 3); - } - if (declname == NULL) - declname = "<unnamed variable>"; - - pp_string (&buf, declname); - } - - /* Return the lot as a new STRING_CST. */ - buf_contents = ggc_strdup (pp_formatted_text (&buf)); - result = mf_build_string (buf_contents); - pp_clear_output_area (&buf); - - return result; -} - - -/* And another friend, for producing a simpler message. */ - -static tree -mf_file_function_line_tree (location_t location) -{ - expanded_location xloc = expand_location (location); - const char *file = NULL, *colon, *line, *op, *name, *cp; - char linecolbuf[30]; /* Enough for two decimal numbers plus a colon. */ - char *string; - tree result; - - /* Add FILENAME[:LINENUMBER[:COLUMNNUMBER]]. */ - file = xloc.file; - if (file == NULL && current_function_decl != NULL_TREE) - file = DECL_SOURCE_FILE (current_function_decl); - if (file == NULL) - file = "<unknown file>"; - - if (xloc.line > 0) - { - if (xloc.column > 0) - sprintf (linecolbuf, "%d:%d", xloc.line, xloc.column); - else - sprintf (linecolbuf, "%d", xloc.line); - colon = ":"; - line = linecolbuf; - } - else - colon = line = ""; - - /* Add (FUNCTION). */ - name = lang_hooks.decl_printable_name (current_function_decl, 1); - if (name) - { - op = " ("; - cp = ")"; - } - else - op = name = cp = ""; - - string = concat (file, colon, line, op, name, cp, NULL); - result = mf_build_string (string); - free (string); - - return result; -} - - -/* global tree nodes */ - -/* Global tree objects for global variables and functions exported by - mudflap runtime library. mf_init_extern_trees must be called - before using these. */ - -/* uintptr_t (usually "unsigned long") */ -static GTY (()) tree mf_uintptr_type; - -/* struct __mf_cache { uintptr_t low; uintptr_t high; }; */ -static GTY (()) tree mf_cache_struct_type; - -/* struct __mf_cache * const */ -static GTY (()) tree mf_cache_structptr_type; - -/* extern struct __mf_cache __mf_lookup_cache []; */ -static GTY (()) tree mf_cache_array_decl; - -/* extern unsigned char __mf_lc_shift; */ -static GTY (()) tree mf_cache_shift_decl; - -/* extern uintptr_t __mf_lc_mask; */ -static GTY (()) tree mf_cache_mask_decl; - -/* Their function-scope local shadows, used in single-threaded mode only. */ - -/* auto const unsigned char __mf_lc_shift_l; */ -static GTY (()) tree mf_cache_shift_decl_l; - -/* auto const uintptr_t __mf_lc_mask_l; */ -static GTY (()) tree mf_cache_mask_decl_l; - -/* extern void __mf_check (void *ptr, size_t sz, int type, const char *); */ -static GTY (()) tree mf_check_fndecl; - -/* extern void __mf_register (void *ptr, size_t sz, int type, const char *); */ -static GTY (()) tree mf_register_fndecl; - -/* extern void __mf_unregister (void *ptr, size_t sz, int type); */ -static GTY (()) tree mf_unregister_fndecl; - -/* extern void __mf_init (); */ -static GTY (()) tree mf_init_fndecl; - -/* extern int __mf_set_options (const char*); */ -static GTY (()) tree mf_set_options_fndecl; - - -/* Helper for mudflap_init: construct a decl with the given category, - name, and type, mark it an external reference, and pushdecl it. */ -static inline tree -mf_make_builtin (enum tree_code category, const char *name, tree type) -{ - tree decl = mf_mark (build_decl (UNKNOWN_LOCATION, - category, get_identifier (name), type)); - TREE_PUBLIC (decl) = 1; - DECL_EXTERNAL (decl) = 1; - lang_hooks.decls.pushdecl (decl); - /* The decl was declared by the compiler. */ - DECL_ARTIFICIAL (decl) = 1; - /* And we don't want debug info for it. */ - DECL_IGNORED_P (decl) = 1; - return decl; -} - -/* Helper for mudflap_init: construct a tree corresponding to the type - struct __mf_cache { uintptr_t low; uintptr_t high; }; - where uintptr_t is the FIELD_TYPE argument. */ -static inline tree -mf_make_mf_cache_struct_type (tree field_type) -{ - /* There is, abominably, no language-independent way to construct a - RECORD_TYPE. So we have to call the basic type construction - primitives by hand. */ - tree fieldlo = build_decl (UNKNOWN_LOCATION, - FIELD_DECL, get_identifier ("low"), field_type); - tree fieldhi = build_decl (UNKNOWN_LOCATION, - FIELD_DECL, get_identifier ("high"), field_type); - - tree struct_type = make_node (RECORD_TYPE); - DECL_CONTEXT (fieldlo) = struct_type; - DECL_CONTEXT (fieldhi) = struct_type; - DECL_CHAIN (fieldlo) = fieldhi; - TYPE_FIELDS (struct_type) = fieldlo; - TYPE_NAME (struct_type) = get_identifier ("__mf_cache"); - layout_type (struct_type); - - return struct_type; -} - -/* Initialize the global tree nodes that correspond to mf-runtime.h - declarations. */ -void -mudflap_init (void) -{ - static bool done = false; - tree mf_const_string_type; - tree mf_cache_array_type; - tree mf_check_register_fntype; - tree mf_unregister_fntype; - tree mf_init_fntype; - tree mf_set_options_fntype; - - if (done) - return; - done = true; - - mf_uintptr_type = lang_hooks.types.type_for_mode (ptr_mode, - /*unsignedp=*/true); - mf_const_string_type - = build_pointer_type (build_qualified_type - (char_type_node, TYPE_QUAL_CONST)); - - mf_cache_struct_type = mf_make_mf_cache_struct_type (mf_uintptr_type); - mf_cache_structptr_type = build_pointer_type (mf_cache_struct_type); - mf_cache_array_type = build_array_type (mf_cache_struct_type, 0); - mf_check_register_fntype = - build_function_type_list (void_type_node, ptr_type_node, size_type_node, - integer_type_node, mf_const_string_type, NULL_TREE); - mf_unregister_fntype = - build_function_type_list (void_type_node, ptr_type_node, size_type_node, - integer_type_node, NULL_TREE); - mf_init_fntype = - build_function_type_list (void_type_node, NULL_TREE); - mf_set_options_fntype = - build_function_type_list (integer_type_node, mf_const_string_type, NULL_TREE); - - mf_cache_array_decl = mf_make_builtin (VAR_DECL, "__mf_lookup_cache", - mf_cache_array_type); - mf_cache_shift_decl = mf_make_builtin (VAR_DECL, "__mf_lc_shift", - unsigned_char_type_node); - mf_cache_mask_decl = mf_make_builtin (VAR_DECL, "__mf_lc_mask", - mf_uintptr_type); - /* Don't process these in mudflap_enqueue_decl, should they come by - there for some reason. */ - mf_mark (mf_cache_array_decl); - mf_mark (mf_cache_shift_decl); - mf_mark (mf_cache_mask_decl); - mf_check_fndecl = mf_make_builtin (FUNCTION_DECL, "__mf_check", - mf_check_register_fntype); - mf_register_fndecl = mf_make_builtin (FUNCTION_DECL, "__mf_register", - mf_check_register_fntype); - mf_unregister_fndecl = mf_make_builtin (FUNCTION_DECL, "__mf_unregister", - mf_unregister_fntype); - mf_init_fndecl = mf_make_builtin (FUNCTION_DECL, "__mf_init", - mf_init_fntype); - mf_set_options_fndecl = mf_make_builtin (FUNCTION_DECL, "__mf_set_options", - mf_set_options_fntype); -} - - -/* ------------------------------------------------------------------------ */ -/* This is the second part of the mudflap instrumentation. It works on - low-level GIMPLE using the CFG, because we want to run this pass after - tree optimizations have been performed, but we have to preserve the CFG - for expansion from trees to RTL. - Below is the list of transformations performed on statements in the - current function. - - 1) Memory reference transforms: Perform the mudflap indirection-related - tree transforms on memory references. - - 2) Mark BUILTIN_ALLOCA calls not inlineable. - - */ - -static unsigned int -execute_mudflap_function_ops (void) -{ - struct gimplify_ctx gctx; - - /* Don't instrument functions such as the synthetic constructor - built during mudflap_finish_file. */ - if (mf_marked_p (current_function_decl) - || mf_artificial (current_function_decl)) - return 0; - - push_gimplify_context (&gctx); - - /* In multithreaded mode, don't cache the lookup cache parameters. */ - if (! flag_mudflap_threads) - mf_decl_cache_locals (); - - mf_xform_statements (); - - if (! flag_mudflap_threads) - mf_decl_clear_locals (); - - pop_gimplify_context (NULL); - return 0; -} - -/* Insert a gimple_seq SEQ on all the outgoing edges out of BB. Note that - if BB has more than one edge, STMT will be replicated for each edge. - Also, abnormal edges will be ignored. */ - -static void -insert_edge_copies_seq (gimple_seq seq, basic_block bb) -{ - edge e; - edge_iterator ei; - unsigned n_copies = -1; - - FOR_EACH_EDGE (e, ei, bb->succs) - if (!(e->flags & EDGE_ABNORMAL)) - n_copies++; - - FOR_EACH_EDGE (e, ei, bb->succs) - if (!(e->flags & EDGE_ABNORMAL)) - gsi_insert_seq_on_edge (e, n_copies-- > 0 ? gimple_seq_copy (seq) : seq); -} - -/* Create and initialize local shadow variables for the lookup cache - globals. Put their decls in the *_l globals for use by - mf_build_check_statement_for. */ - -static void -mf_decl_cache_locals (void) -{ - gimple g; - gimple_seq seq = NULL; - - /* Build the cache vars. */ - mf_cache_shift_decl_l - = mf_mark (create_tmp_reg (TREE_TYPE (mf_cache_shift_decl), - "__mf_lookup_shift_l")); - - mf_cache_mask_decl_l - = mf_mark (create_tmp_reg (TREE_TYPE (mf_cache_mask_decl), - "__mf_lookup_mask_l")); - - /* Build initialization nodes for the cache vars. We just load the - globals into the cache variables. */ - g = gimple_build_assign (mf_cache_shift_decl_l, mf_cache_shift_decl); - gimple_set_location (g, DECL_SOURCE_LOCATION (current_function_decl)); - gimple_seq_add_stmt (&seq, g); - - g = gimple_build_assign (mf_cache_mask_decl_l, mf_cache_mask_decl); - gimple_set_location (g, DECL_SOURCE_LOCATION (current_function_decl)); - gimple_seq_add_stmt (&seq, g); - - insert_edge_copies_seq (seq, ENTRY_BLOCK_PTR); - - gsi_commit_edge_inserts (); -} - - -static void -mf_decl_clear_locals (void) -{ - /* Unset local shadows. */ - mf_cache_shift_decl_l = NULL_TREE; - mf_cache_mask_decl_l = NULL_TREE; -} - -static void -mf_build_check_statement_for (tree base, tree limit, - gimple_stmt_iterator *instr_gsi, - location_t location, tree dirflag) -{ - gimple_stmt_iterator gsi; - basic_block cond_bb, then_bb, join_bb; - edge e; - tree cond, t, u, v; - tree mf_base; - tree mf_elem; - tree mf_limit; - gimple g; - gimple_seq seq, stmts; - - /* We first need to split the current basic block, and start altering - the CFG. This allows us to insert the statements we're about to - construct into the right basic blocks. */ - - cond_bb = gimple_bb (gsi_stmt (*instr_gsi)); - gsi = *instr_gsi; - gsi_prev (&gsi); - if (! gsi_end_p (gsi)) - e = split_block (cond_bb, gsi_stmt (gsi)); - else - e = split_block_after_labels (cond_bb); - cond_bb = e->src; - join_bb = e->dest; - - /* A recap at this point: join_bb is the basic block at whose head - is the gimple statement for which this check expression is being - built. cond_bb is the (possibly new, synthetic) basic block the - end of which will contain the cache-lookup code, and a - conditional that jumps to the cache-miss code or, much more - likely, over to join_bb. */ - - /* Create the bb that contains the cache-miss fallback block (mf_check). */ - then_bb = create_empty_bb (cond_bb); - make_edge (cond_bb, then_bb, EDGE_TRUE_VALUE); - make_single_succ_edge (then_bb, join_bb, EDGE_FALLTHRU); - - /* Mark the pseudo-fallthrough edge from cond_bb to join_bb. */ - e = find_edge (cond_bb, join_bb); - e->flags = EDGE_FALSE_VALUE; - e->count = cond_bb->count; - e->probability = REG_BR_PROB_BASE; - - /* Update dominance info. Note that bb_join's data was - updated by split_block. */ - if (dom_info_available_p (CDI_DOMINATORS)) - { - set_immediate_dominator (CDI_DOMINATORS, then_bb, cond_bb); - set_immediate_dominator (CDI_DOMINATORS, join_bb, cond_bb); - } - - /* Update loop info. */ - if (current_loops) - add_bb_to_loop (then_bb, cond_bb->loop_father); - - /* Build our local variables. */ - mf_elem = create_tmp_reg (mf_cache_structptr_type, "__mf_elem"); - mf_base = create_tmp_reg (mf_uintptr_type, "__mf_base"); - mf_limit = create_tmp_reg (mf_uintptr_type, "__mf_limit"); - - /* Build: __mf_base = (uintptr_t) <base address expression>. */ - seq = NULL; - t = fold_convert_loc (location, mf_uintptr_type, - unshare_expr (base)); - t = force_gimple_operand (t, &stmts, false, NULL_TREE); - gimple_seq_add_seq (&seq, stmts); - g = gimple_build_assign (mf_base, t); - gimple_set_location (g, location); - gimple_seq_add_stmt (&seq, g); - - /* Build: __mf_limit = (uintptr_t) <limit address expression>. */ - t = fold_convert_loc (location, mf_uintptr_type, - unshare_expr (limit)); - t = force_gimple_operand (t, &stmts, false, NULL_TREE); - gimple_seq_add_seq (&seq, stmts); - g = gimple_build_assign (mf_limit, t); - gimple_set_location (g, location); - gimple_seq_add_stmt (&seq, g); - - /* Build: __mf_elem = &__mf_lookup_cache [(__mf_base >> __mf_shift) - & __mf_mask]. */ - t = build2 (RSHIFT_EXPR, mf_uintptr_type, mf_base, - flag_mudflap_threads ? mf_cache_shift_decl - : mf_cache_shift_decl_l); - t = build2 (BIT_AND_EXPR, mf_uintptr_type, t, - flag_mudflap_threads ? mf_cache_mask_decl - : mf_cache_mask_decl_l); - t = build4 (ARRAY_REF, - TREE_TYPE (TREE_TYPE (mf_cache_array_decl)), - mf_cache_array_decl, t, NULL_TREE, NULL_TREE); - t = build1 (ADDR_EXPR, mf_cache_structptr_type, t); - t = force_gimple_operand (t, &stmts, false, NULL_TREE); - gimple_seq_add_seq (&seq, stmts); - g = gimple_build_assign (mf_elem, t); - gimple_set_location (g, location); - gimple_seq_add_stmt (&seq, g); - - /* Quick validity check. - - if (__mf_elem->low > __mf_base - || (__mf_elem_high < __mf_limit)) - { - __mf_check (); - ... and only if single-threaded: - __mf_lookup_shift_1 = f...; - __mf_lookup_mask_l = ...; - } - - It is expected that this body of code is rarely executed so we mark - the edge to the THEN clause of the conditional jump as unlikely. */ - - /* Construct t <-- '__mf_elem->low > __mf_base'. */ - t = build3 (COMPONENT_REF, mf_uintptr_type, - build1 (INDIRECT_REF, mf_cache_struct_type, mf_elem), - TYPE_FIELDS (mf_cache_struct_type), NULL_TREE); - t = build2 (GT_EXPR, boolean_type_node, t, mf_base); - - /* Construct '__mf_elem->high < __mf_limit'. - - First build: - 1) u <-- '__mf_elem->high' - 2) v <-- '__mf_limit'. - - Then build 'u <-- (u < v). */ - - u = build3 (COMPONENT_REF, mf_uintptr_type, - build1 (INDIRECT_REF, mf_cache_struct_type, mf_elem), - DECL_CHAIN (TYPE_FIELDS (mf_cache_struct_type)), NULL_TREE); - - v = mf_limit; - - u = build2 (LT_EXPR, boolean_type_node, u, v); - - /* Build the composed conditional: t <-- 't || u'. Then store the - result of the evaluation of 't' in a temporary variable which we - can use as the condition for the conditional jump. */ - t = build2 (TRUTH_OR_EXPR, boolean_type_node, t, u); - t = force_gimple_operand (t, &stmts, false, NULL_TREE); - gimple_seq_add_seq (&seq, stmts); - cond = create_tmp_reg (boolean_type_node, "__mf_unlikely_cond"); - g = gimple_build_assign (cond, t); - gimple_set_location (g, location); - gimple_seq_add_stmt (&seq, g); - - /* Build the conditional jump. 'cond' is just a temporary so we can - simply build a void COND_EXPR. We do need labels in both arms though. */ - g = gimple_build_cond (NE_EXPR, cond, boolean_false_node, NULL_TREE, - NULL_TREE); - gimple_set_location (g, location); - gimple_seq_add_stmt (&seq, g); - - /* At this point, after so much hard work, we have only constructed - the conditional jump, - - if (__mf_elem->low > __mf_base - || (__mf_elem_high < __mf_limit)) - - The lowered GIMPLE tree representing this code is in the statement - list starting at 'head'. - - We can insert this now in the current basic block, i.e. the one that - the statement we're instrumenting was originally in. */ - gsi = gsi_last_bb (cond_bb); - gsi_insert_seq_after (&gsi, seq, GSI_CONTINUE_LINKING); - - /* Now build up the body of the cache-miss handling: - - __mf_check(); - refresh *_l vars. - - This is the body of the conditional. */ - - seq = NULL; - /* u is a string, so it is already a gimple value. */ - u = mf_file_function_line_tree (location); - /* NB: we pass the overall [base..limit] range to mf_check. */ - v = fold_build2_loc (location, PLUS_EXPR, mf_uintptr_type, - fold_build2_loc (location, - MINUS_EXPR, mf_uintptr_type, mf_limit, mf_base), - build_int_cst (mf_uintptr_type, 1)); - v = force_gimple_operand (v, &stmts, true, NULL_TREE); - gimple_seq_add_seq (&seq, stmts); - g = gimple_build_call (mf_check_fndecl, 4, mf_base, v, dirflag, u); - gimple_seq_add_stmt (&seq, g); - - if (! flag_mudflap_threads) - { - if (stmt_ends_bb_p (g)) - { - gsi = gsi_start_bb (then_bb); - gsi_insert_seq_after (&gsi, seq, GSI_CONTINUE_LINKING); - e = split_block (then_bb, g); - then_bb = e->dest; - seq = NULL; - } - - g = gimple_build_assign (mf_cache_shift_decl_l, mf_cache_shift_decl); - gimple_seq_add_stmt (&seq, g); - - g = gimple_build_assign (mf_cache_mask_decl_l, mf_cache_mask_decl); - gimple_seq_add_stmt (&seq, g); - } - - /* Insert the check code in the THEN block. */ - gsi = gsi_start_bb (then_bb); - gsi_insert_seq_after (&gsi, seq, GSI_CONTINUE_LINKING); - - *instr_gsi = gsi_start_bb (join_bb); -} - - -/* Check whether the given decl, generally a VAR_DECL or PARM_DECL, is - eligible for instrumentation. For the mudflap1 pass, this implies - that it should be registered with the libmudflap runtime. For the - mudflap2 pass this means instrumenting an indirection operation with - respect to the object. -*/ -static int -mf_decl_eligible_p (tree decl) -{ - return ((TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == PARM_DECL) - /* The decl must have its address taken. In the case of - arrays, this flag is also set if the indexes are not - compile-time known valid constants. */ - /* XXX: not sufficient: return-by-value structs! */ - && TREE_ADDRESSABLE (decl) - /* The type of the variable must be complete. */ - && COMPLETE_OR_VOID_TYPE_P (TREE_TYPE (decl)) - /* The decl hasn't been decomposed somehow. */ - && !DECL_HAS_VALUE_EXPR_P (decl)); -} - - -static void -mf_xform_derefs_1 (gimple_stmt_iterator *iter, tree *tp, - location_t location, tree dirflag) -{ - tree type, base, limit, addr, size, t; - - /* Don't instrument read operations. */ - if (dirflag == integer_zero_node && flag_mudflap_ignore_reads) - return; - - /* Don't instrument marked nodes. */ - if (mf_marked_p (*tp)) - return; - - t = *tp; - type = TREE_TYPE (t); - - if (type == error_mark_node) - return; - - size = TYPE_SIZE_UNIT (type); - - switch (TREE_CODE (t)) - { - case ARRAY_REF: - case COMPONENT_REF: - { - /* This is trickier than it may first appear. The reason is - that we are looking at expressions from the "inside out" at - this point. We may have a complex nested aggregate/array - expression (e.g. "a.b[i].c"), maybe with an indirection as - the leftmost operator ("p->a.b.d"), where instrumentation - is necessary. Or we may have an innocent "a.b.c" - expression that must not be instrumented. We need to - recurse all the way down the nesting structure to figure it - out: looking just at the outer node is not enough. */ - tree var; - int component_ref_only = (TREE_CODE (t) == COMPONENT_REF); - /* If we have a bitfield component reference, we must note the - innermost addressable object in ELT, from which we will - construct the byte-addressable bounds of the bitfield. */ - tree elt = NULL_TREE; - int bitfield_ref_p = (TREE_CODE (t) == COMPONENT_REF - && DECL_BIT_FIELD_TYPE (TREE_OPERAND (t, 1))); - - /* Iterate to the top of the ARRAY_REF/COMPONENT_REF - containment hierarchy to find the outermost VAR_DECL. */ - var = TREE_OPERAND (t, 0); - while (1) - { - if (bitfield_ref_p && elt == NULL_TREE - && (TREE_CODE (var) == ARRAY_REF - || TREE_CODE (var) == COMPONENT_REF)) - elt = var; - - if (TREE_CODE (var) == ARRAY_REF) - { - component_ref_only = 0; - var = TREE_OPERAND (var, 0); - } - else if (TREE_CODE (var) == COMPONENT_REF) - var = TREE_OPERAND (var, 0); - else if (INDIRECT_REF_P (var) - || TREE_CODE (var) == MEM_REF) - { - base = TREE_OPERAND (var, 0); - break; - } - else if (TREE_CODE (var) == VIEW_CONVERT_EXPR) - { - var = TREE_OPERAND (var, 0); - if (CONSTANT_CLASS_P (var) - && TREE_CODE (var) != STRING_CST) - return; - } - else - { - gcc_assert (TREE_CODE (var) == VAR_DECL - || TREE_CODE (var) == PARM_DECL - || TREE_CODE (var) == RESULT_DECL - || TREE_CODE (var) == STRING_CST); - /* Don't instrument this access if the underlying - variable is not "eligible". This test matches - those arrays that have only known-valid indexes, - and thus are not labeled TREE_ADDRESSABLE. */ - if (! mf_decl_eligible_p (var) || component_ref_only) - return; - else - { - base = build1 (ADDR_EXPR, - build_pointer_type (TREE_TYPE (var)), var); - break; - } - } - } - - /* Handle the case of ordinary non-indirection structure - accesses. These have only nested COMPONENT_REF nodes (no - INDIRECT_REF), but pass through the above filter loop. - Note that it's possible for such a struct variable to match - the eligible_p test because someone else might take its - address sometime. */ - - /* We need special processing for bitfield components, because - their addresses cannot be taken. */ - if (bitfield_ref_p) - { - tree field = TREE_OPERAND (t, 1); - - if (TREE_CODE (DECL_SIZE_UNIT (field)) == INTEGER_CST) - size = DECL_SIZE_UNIT (field); - - if (elt) - elt = build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (elt)), - elt); - addr = fold_convert_loc (location, ptr_type_node, elt ? elt : base); - addr = fold_build_pointer_plus_loc (location, - addr, byte_position (field)); - } - else - addr = build1 (ADDR_EXPR, build_pointer_type (type), t); - - limit = fold_build2_loc (location, MINUS_EXPR, mf_uintptr_type, - fold_build2_loc (location, PLUS_EXPR, mf_uintptr_type, - fold_convert (mf_uintptr_type, addr), - size), - integer_one_node); - } - break; - - case INDIRECT_REF: - addr = TREE_OPERAND (t, 0); - base = addr; - limit = fold_build_pointer_plus_hwi_loc - (location, fold_build_pointer_plus_loc (location, base, size), -1); - break; - - case MEM_REF: - if (addr_expr_of_non_mem_decl_p (TREE_OPERAND (t, 0))) - return; - - addr = fold_build_pointer_plus_loc (location, TREE_OPERAND (t, 0), - TREE_OPERAND (t, 1)); - base = addr; - limit = fold_build_pointer_plus_hwi_loc (location, - fold_build_pointer_plus_loc (location, - base, size), -1); - break; - - case TARGET_MEM_REF: - if (addr_expr_of_non_mem_decl_p (TMR_BASE (t))) - return; - - addr = tree_mem_ref_addr (ptr_type_node, t); - base = addr; - limit = fold_build_pointer_plus_hwi_loc (location, - fold_build_pointer_plus_loc (location, - base, size), -1); - break; - - case ARRAY_RANGE_REF: - warning (OPT_Wmudflap, - "mudflap checking not yet implemented for ARRAY_RANGE_REF"); - return; - - case BIT_FIELD_REF: - /* ??? merge with COMPONENT_REF code above? */ - { - tree ofs, rem, bpu; - - /* If we're not dereferencing something, then the access - must be ok. */ - if (TREE_CODE (TREE_OPERAND (t, 0)) != INDIRECT_REF) - return; - - bpu = bitsize_int (BITS_PER_UNIT); - ofs = fold_convert (bitsizetype, TREE_OPERAND (t, 2)); - rem = size_binop_loc (location, TRUNC_MOD_EXPR, ofs, bpu); - ofs = size_binop_loc (location, TRUNC_DIV_EXPR, ofs, bpu); - - size = fold_convert (bitsizetype, TREE_OPERAND (t, 1)); - size = size_binop_loc (location, PLUS_EXPR, size, rem); - size = size_binop_loc (location, CEIL_DIV_EXPR, size, bpu); - size = fold_convert (sizetype, size); - - addr = TREE_OPERAND (TREE_OPERAND (t, 0), 0); - addr = fold_convert (ptr_type_node, addr); - addr = fold_build_pointer_plus_loc (location, addr, ofs); - - base = addr; - limit = fold_build_pointer_plus_hwi_loc (location, - fold_build_pointer_plus_loc (location, - base, size), -1); - } - break; - - default: - return; - } - - mf_build_check_statement_for (base, limit, iter, location, dirflag); -} -/* Transform - 1) Memory references. -*/ -static void -mf_xform_statements (void) -{ - basic_block bb, next; - gimple_stmt_iterator i; - int saved_last_basic_block = last_basic_block; - enum gimple_rhs_class grhs_class; - - bb = ENTRY_BLOCK_PTR ->next_bb; - do - { - next = bb->next_bb; - for (i = gsi_start_bb (bb); !gsi_end_p (i); gsi_next (&i)) - { - gimple s = gsi_stmt (i); - - /* Only a few GIMPLE statements can reference memory. */ - switch (gimple_code (s)) - { - case GIMPLE_ASSIGN: - mf_xform_derefs_1 (&i, gimple_assign_lhs_ptr (s), - gimple_location (s), integer_one_node); - mf_xform_derefs_1 (&i, gimple_assign_rhs1_ptr (s), - gimple_location (s), integer_zero_node); - grhs_class = get_gimple_rhs_class (gimple_assign_rhs_code (s)); - if (grhs_class == GIMPLE_BINARY_RHS) - mf_xform_derefs_1 (&i, gimple_assign_rhs2_ptr (s), - gimple_location (s), integer_zero_node); - break; - - case GIMPLE_RETURN: - if (gimple_return_retval (s) != NULL_TREE) - { - mf_xform_derefs_1 (&i, gimple_return_retval_ptr (s), - gimple_location (s), - integer_zero_node); - } - break; - - default: - ; - } - } - bb = next; - } - while (bb && bb->index <= saved_last_basic_block); -} - -/* ------------------------------------------------------------------------ */ -/* ADDR_EXPR transforms. Perform the declaration-related mudflap tree - transforms on the current function. - - This is the first part of the mudflap instrumentation. It works on - high-level GIMPLE because after lowering, all variables are moved out - of their BIND_EXPR binding context, and we lose liveness information - for the declarations we wish to instrument. */ - -static unsigned int -execute_mudflap_function_decls (void) -{ - struct gimplify_ctx gctx; - - /* Don't instrument functions such as the synthetic constructor - built during mudflap_finish_file. */ - if (mf_marked_p (current_function_decl) - || mf_artificial (current_function_decl)) - return 0; - - push_gimplify_context (&gctx); - - mf_xform_decls (gimple_body (current_function_decl), - DECL_ARGUMENTS (current_function_decl)); - - pop_gimplify_context (NULL); - return 0; -} - -/* This struct is passed between mf_xform_decls to store state needed - during the traversal searching for objects that have their - addresses taken. */ -struct mf_xform_decls_data -{ - tree param_decls; -}; - - -/* Synthesize a CALL_EXPR and a TRY_FINALLY_EXPR, for this chain of - _DECLs if appropriate. Arrange to call the __mf_register function - now, and the __mf_unregister function later for each. Return the - gimple sequence after synthesis. */ -gimple_seq -mx_register_decls (tree decl, gimple_seq seq, location_t location) -{ - gimple_seq finally_stmts = NULL; - gimple_stmt_iterator initially_stmts = gsi_start (seq); - - while (decl != NULL_TREE) - { - if (mf_decl_eligible_p (decl) - /* Not already processed. */ - && ! mf_marked_p (decl) - /* Automatic variable. */ - && ! DECL_EXTERNAL (decl) - && ! TREE_STATIC (decl)) - { - tree size = NULL_TREE, variable_name; - gimple unregister_fncall, register_fncall; - tree unregister_fncall_param, register_fncall_param; - - /* Variable-sized objects should have sizes already been - gimplified when we got here. */ - size = fold_convert (size_type_node, - TYPE_SIZE_UNIT (TREE_TYPE (decl))); - gcc_assert (is_gimple_val (size)); - - - unregister_fncall_param = - mf_mark (build1 (ADDR_EXPR, - build_pointer_type (TREE_TYPE (decl)), - decl)); - /* __mf_unregister (&VARIABLE, sizeof (VARIABLE), __MF_TYPE_STACK) */ - unregister_fncall = gimple_build_call (mf_unregister_fndecl, 3, - unregister_fncall_param, - size, - integer_three_node); - - - variable_name = mf_varname_tree (decl); - register_fncall_param = - mf_mark (build1 (ADDR_EXPR, - build_pointer_type (TREE_TYPE (decl)), - decl)); - /* __mf_register (&VARIABLE, sizeof (VARIABLE), __MF_TYPE_STACK, - "name") */ - register_fncall = gimple_build_call (mf_register_fndecl, 4, - register_fncall_param, - size, - integer_three_node, - variable_name); - - - /* Accumulate the two calls. */ - gimple_set_location (register_fncall, location); - gimple_set_location (unregister_fncall, location); - - /* Add the __mf_register call at the current appending point. */ - if (gsi_end_p (initially_stmts)) - { - if (!mf_artificial (decl)) - warning (OPT_Wmudflap, - "mudflap cannot track %qE in stub function", - DECL_NAME (decl)); - } - else - { - gsi_insert_before (&initially_stmts, register_fncall, - GSI_SAME_STMT); - - /* Accumulate the FINALLY piece. */ - gimple_seq_add_stmt (&finally_stmts, unregister_fncall); - } - mf_mark (decl); - } - - decl = DECL_CHAIN (decl); - } - - /* Actually, (initially_stmts!=NULL) <=> (finally_stmts!=NULL) */ - if (finally_stmts != NULL) - { - gimple stmt = gimple_build_try (seq, finally_stmts, GIMPLE_TRY_FINALLY); - gimple_seq new_seq = NULL; - - gimple_seq_add_stmt (&new_seq, stmt); - return new_seq; - } - else - return seq; -} - - -/* Process every variable mentioned in BIND_EXPRs. */ -static tree -mx_xfn_xform_decls (gimple_stmt_iterator *gsi, - bool *handled_operands_p ATTRIBUTE_UNUSED, - struct walk_stmt_info *wi) -{ - struct mf_xform_decls_data *d = (struct mf_xform_decls_data *) wi->info; - gimple stmt = gsi_stmt (*gsi); - - switch (gimple_code (stmt)) - { - case GIMPLE_BIND: - { - /* Process function parameters now (but only once). */ - if (d->param_decls) - { - gimple_bind_set_body (stmt, - mx_register_decls (d->param_decls, - gimple_bind_body (stmt), - gimple_location (stmt))); - d->param_decls = NULL_TREE; - } - - gimple_bind_set_body (stmt, - mx_register_decls (gimple_bind_vars (stmt), - gimple_bind_body (stmt), - gimple_location (stmt))); - } - break; - - default: - break; - } - - return NULL_TREE; -} - -/* Perform the object lifetime tracking mudflap transform on the given function - tree. The tree is mutated in place, with possibly copied subtree nodes. - - For every auto variable declared, if its address is ever taken - within the function, then supply its lifetime to the mudflap - runtime with the __mf_register and __mf_unregister calls. -*/ - -static void -mf_xform_decls (gimple_seq fnbody, tree fnparams) -{ - struct mf_xform_decls_data d; - struct walk_stmt_info wi; - struct pointer_set_t *pset = pointer_set_create (); - - d.param_decls = fnparams; - memset (&wi, 0, sizeof (wi)); - wi.info = (void*) &d; - wi.pset = pset; - walk_gimple_seq (fnbody, mx_xfn_xform_decls, NULL, &wi); - pointer_set_destroy (pset); -} - - -/* ------------------------------------------------------------------------ */ -/* Externally visible mudflap functions. */ - - -/* Mark and return the given tree node to prevent further mudflap - transforms. */ -static GTY ((param_is (union tree_node))) htab_t marked_trees = NULL; - -tree -mf_mark (tree t) -{ - void **slot; - - if (marked_trees == NULL) - marked_trees = htab_create_ggc (31, htab_hash_pointer, htab_eq_pointer, - NULL); - - slot = htab_find_slot (marked_trees, t, INSERT); - *slot = t; - return t; -} - -int -mf_marked_p (tree t) -{ - void *entry; - - if (marked_trees == NULL) - return 0; - - entry = htab_find (marked_trees, t); - return (entry != NULL); -} - -/* Remember given node as a static of some kind: global data, - function-scope static, or an anonymous constant. Its assembler - label is given. */ - -/* A list of globals whose incomplete declarations we encountered. - Instead of emitting the __mf_register call for them here, it's - delayed until program finish time. If they're still incomplete by - then, warnings are emitted. */ - -static GTY (()) vec<tree, va_gc> *deferred_static_decls; - -/* A list of statements for calling __mf_register() at startup time. */ -static GTY (()) tree enqueued_call_stmt_chain; - -static void -mudflap_register_call (tree obj, tree object_size, tree varname) -{ - tree arg, call_stmt; - - arg = build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (obj)), obj); - arg = fold_convert (ptr_type_node, arg); - - call_stmt = build_call_expr (mf_register_fndecl, 4, - arg, - fold_convert (size_type_node, object_size), - /* __MF_TYPE_STATIC */ - build_int_cst (integer_type_node, 4), - varname); - - append_to_statement_list (call_stmt, &enqueued_call_stmt_chain); -} - -void -mudflap_enqueue_decl (tree obj) -{ - if (mf_marked_p (obj)) - return; - - /* We don't need to process variable decls that are internally - generated extern. If we did, we'd end up with warnings for them - during mudflap_finish_file (). That would confuse the user, - since the text would refer to variables that don't show up in the - user's source code. */ - if (DECL_P (obj) && DECL_EXTERNAL (obj) && mf_artificial (obj)) - return; - - vec_safe_push (deferred_static_decls, obj); -} - - -void -mudflap_enqueue_constant (tree obj) -{ - tree object_size, varname; - - if (mf_marked_p (obj)) - return; - - if (TREE_CODE (obj) == STRING_CST) - object_size = size_int (TREE_STRING_LENGTH (obj)); - else - object_size = size_in_bytes (TREE_TYPE (obj)); - - if (TREE_CODE (obj) == STRING_CST) - varname = mf_build_string ("string literal"); - else - varname = mf_build_string ("constant"); - - mudflap_register_call (obj, object_size, varname); -} - - -/* Emit any file-wide instrumentation. */ -void -mudflap_finish_file (void) -{ - tree ctor_statements = NULL_TREE; - - /* No need to continue when there were errors. */ - if (seen_error ()) - return; - - /* Insert a call to __mf_init. */ - { - tree call2_stmt = build_call_expr (mf_init_fndecl, 0); - append_to_statement_list (call2_stmt, &ctor_statements); - } - - /* If appropriate, call __mf_set_options to pass along read-ignore mode. */ - if (flag_mudflap_ignore_reads) - { - tree arg = mf_build_string ("-ignore-reads"); - tree call_stmt = build_call_expr (mf_set_options_fndecl, 1, arg); - append_to_statement_list (call_stmt, &ctor_statements); - } - - /* Process all enqueued object decls. */ - if (deferred_static_decls) - { - size_t i; - tree obj; - FOR_EACH_VEC_ELT (*deferred_static_decls, i, obj) - { - gcc_assert (DECL_P (obj)); - - if (mf_marked_p (obj)) - continue; - - /* Omit registration for static unaddressed objects. NB: - Perform registration for non-static objects regardless of - TREE_USED or TREE_ADDRESSABLE, because they may be used - from other compilation units. */ - if (! TREE_PUBLIC (obj) && ! TREE_ADDRESSABLE (obj)) - continue; - - /* If we're neither emitting nor referencing the symbol, - don't register it. We have to register external symbols - if they happen to be in other files not compiled with - mudflap (say system libraries), and we must not register - internal symbols that we don't emit or they'll become - dangling references or force symbols to be emitted that - didn't have to. */ - if (!symtab_get_node (obj)) - continue; - - if (! COMPLETE_TYPE_P (TREE_TYPE (obj))) - { - warning (OPT_Wmudflap, - "mudflap cannot track unknown size extern %qE", - DECL_NAME (obj)); - continue; - } - - mudflap_register_call (obj, - size_in_bytes (TREE_TYPE (obj)), - mf_varname_tree (obj)); - } - - deferred_static_decls->truncate (0); - } - - /* Append all the enqueued registration calls. */ - if (enqueued_call_stmt_chain) - { - append_to_statement_list (enqueued_call_stmt_chain, &ctor_statements); - enqueued_call_stmt_chain = NULL_TREE; - } - - cgraph_build_static_cdtor ('I', ctor_statements, - MAX_RESERVED_INIT_PRIORITY-1); -} - - -static bool -gate_mudflap (void) -{ - return flag_mudflap != 0; -} - -namespace { - -const pass_data pass_data_mudflap_1 = -{ - GIMPLE_PASS, /* type */ - "mudflap1", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_NONE, /* tv_id */ - PROP_gimple_any, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_mudflap_1 : public gimple_opt_pass -{ -public: - pass_mudflap_1 (gcc::context *ctxt) - : gimple_opt_pass (pass_data_mudflap_1, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_mudflap (); } - unsigned int execute () { return execute_mudflap_function_decls (); } - -}; // class pass_mudflap_1 - -} // anon namespace - -gimple_opt_pass * -make_pass_mudflap_1 (gcc::context *ctxt) -{ - return new pass_mudflap_1 (ctxt); -} - -namespace { - -const pass_data pass_data_mudflap_2 = -{ - GIMPLE_PASS, /* type */ - "mudflap2", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - true, /* has_execute */ - TV_NONE, /* tv_id */ - ( PROP_ssa | PROP_cfg | PROP_gimple_leh ), /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - ( TODO_verify_flow | TODO_verify_stmts - | TODO_update_ssa ), /* todo_flags_finish */ -}; - -class pass_mudflap_2 : public gimple_opt_pass -{ -public: - pass_mudflap_2 (gcc::context *ctxt) - : gimple_opt_pass (pass_data_mudflap_2, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_mudflap (); } - unsigned int execute () { return execute_mudflap_function_ops (); } - -}; // class pass_mudflap_2 - -} // anon namespace - -gimple_opt_pass * -make_pass_mudflap_2 (gcc::context *ctxt) -{ - return new pass_mudflap_2 (ctxt); -} - -#include "gt-tree-mudflap.h" diff --git a/gcc/tree-mudflap.h b/gcc/tree-mudflap.h deleted file mode 100644 index 96f38c4..0000000 --- a/gcc/tree-mudflap.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Mudflap: narrow-pointer bounds-checking by tree rewriting. - Copyright (C) 2001-2013 Free Software Foundation, Inc. - Contributed by Frank Ch. Eigler <fche@redhat.com> - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING3. If not see -<http://www.gnu.org/licenses/>. */ - -#ifndef TREE_MUDFLAP_H -#define TREE_MUDFLAP_H - -/* Instrumentation. */ -extern void mudflap_init (void); -extern void mudflap_enqueue_decl (tree); -extern void mudflap_enqueue_constant (tree); -extern void mudflap_finish_file (void); - -/* Tree node marking. */ -extern int mf_marked_p (tree); -extern tree mf_mark (tree); - -#endif /* TREE_MUDFLAP_H */ diff --git a/gcc/tree-nomudflap.c b/gcc/tree-nomudflap.c deleted file mode 100644 index fe9ea60..0000000 --- a/gcc/tree-nomudflap.c +++ /dev/null @@ -1,169 +0,0 @@ -/* Mudflap: narrow-pointer bounds-checking by tree rewriting. - Copyright (C) 2001-2013 Free Software Foundation, Inc. - Contributed by Frank Ch. Eigler <fche@redhat.com> - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING3. If not see -<http://www.gnu.org/licenses/>. */ - - -#include "config.h" -#include "system.h" -#include "coretypes.h" -#include "tm.h" -#include "tree.h" -#include "tree-inline.h" -#include "gimple.h" -#include "hashtab.h" -#include "langhooks.h" -#include "tree-mudflap.h" -#include "tree-pass.h" -#include "ggc.h" -#include "diagnostic-core.h" - - - -/* This file contains placeholder functions, to be used only for - language processors that cannot handle tree-mudflap.c directly. - (e.g. Fortran). */ - -static void -nogo (void) -{ - sorry ("mudflap: this language is not supported"); -} - -void -mudflap_enqueue_decl (tree obj ATTRIBUTE_UNUSED) -{ - nogo (); -} - -void -mudflap_enqueue_constant (tree obj ATTRIBUTE_UNUSED) -{ - nogo (); -} - -void -mudflap_finish_file (void) -{ - nogo (); -} - -int -mf_marked_p (tree t ATTRIBUTE_UNUSED) -{ - nogo (); - return 0; -} - -tree -mf_mark (tree t ATTRIBUTE_UNUSED) -{ - nogo (); - return NULL; -} - -/* The pass structures must exist, but need not do anything. */ - -static bool -gate_mudflap (void) -{ - return flag_mudflap != 0; -} - -namespace { - -const pass_data pass_data_mudflap_1 = -{ - GIMPLE_PASS, /* type */ - "mudflap1", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - false, /* has_execute */ - TV_NONE, /* tv_id */ - 0, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_mudflap_1 : public gimple_opt_pass -{ -public: - pass_mudflap_1 (gcc::context *ctxt) - : gimple_opt_pass (pass_data_mudflap_1, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_mudflap (); } - -}; // class pass_mudflap_1 - -} // anon namespace - -gimple_opt_pass * -make_pass_mudflap_1 (gcc::context *ctxt) -{ - return new pass_mudflap_1 (ctxt); -} - -namespace { - -const pass_data pass_data_mudflap_2 = -{ - GIMPLE_PASS, /* type */ - "mudflap2", /* name */ - OPTGROUP_NONE, /* optinfo_flags */ - true, /* has_gate */ - false, /* has_execute */ - TV_NONE, /* tv_id */ - 0, /* properties_required */ - 0, /* properties_provided */ - 0, /* properties_destroyed */ - 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ -}; - -class pass_mudflap_2 : public gimple_opt_pass -{ -public: - pass_mudflap_2 (gcc::context *ctxt) - : gimple_opt_pass (pass_data_mudflap_2, ctxt) - {} - - /* opt_pass methods: */ - bool gate () { return gate_mudflap (); } - -}; // class pass_mudflap_2 - -} // anon namespace - -gimple_opt_pass * -make_pass_mudflap_2 (gcc::context *ctxt) -{ - return new pass_mudflap_2 (ctxt); -} - -/* Instead of: -#include "gt-tree-mudflap.h" -We prepare a little dummy struct here. -*/ - -EXPORTED_CONST struct ggc_root_tab gt_ggc_r_gt_tree_mudflap_h[] = { - LAST_GGC_ROOT_TAB -}; diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index e72fe9a..5237438 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -338,8 +338,6 @@ extern void register_pass (register_pass_info *); extern void register_pass (opt_pass* pass, pass_positioning_ops pos, const char* ref_pass_name, int ref_pass_inst_number); -extern gimple_opt_pass *make_pass_mudflap_1 (gcc::context *ctxt); -extern gimple_opt_pass *make_pass_mudflap_2 (gcc::context *ctxt); extern gimple_opt_pass *make_pass_asan (gcc::context *ctxt); extern gimple_opt_pass *make_pass_asan_O0 (gcc::context *ctxt); extern gimple_opt_pass *make_pass_tsan (gcc::context *ctxt); diff --git a/gcc/varasm.c b/gcc/varasm.c index 52ba182..e56ca1b 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -46,7 +46,6 @@ along with GCC; see the file COPYING3. If not see #include "target.h" #include "common/common-target.h" #include "targhooks.h" -#include "tree-mudflap.h" #include "cgraph.h" #include "pointer-set.h" #include "asan.h" @@ -1247,10 +1246,6 @@ make_decl_rtl (tree decl) && SYMBOL_REF_HAS_BLOCK_INFO_P (XEXP (x, 0))) change_symbol_block (XEXP (x, 0), get_block_for_decl (decl)); - /* Make this function static known to the mudflap runtime. */ - if (flag_mudflap && TREE_CODE (decl) == VAR_DECL) - mudflap_enqueue_decl (decl); - return; } @@ -1387,10 +1382,6 @@ make_decl_rtl (tree decl) If the name is changed, the macro ASM_OUTPUT_LABELREF will have to know how to strip this information. */ targetm.encode_section_info (decl, DECL_RTL (decl), true); - - /* Make this function static known to the mudflap runtime. */ - if (flag_mudflap && TREE_CODE (decl) == VAR_DECL) - mudflap_enqueue_decl (decl); } /* Like make_decl_rtl, but inhibit creation of new alias sets when @@ -1400,7 +1391,7 @@ make_decl_rtl (tree decl) rtx make_decl_rtl_for_debug (tree decl) { - unsigned int save_aliasing_flag, save_mudflap_flag; + unsigned int save_aliasing_flag; rtx rtl; if (DECL_RTL_SET_P (decl)) @@ -1411,12 +1402,9 @@ make_decl_rtl_for_debug (tree decl) we do not want to create alias sets that will throw the alias numbers off in the comparison dumps. So... clearing flag_strict_aliasing will keep new_alias_set() from creating a - new set. It is undesirable to register decl with mudflap - in this case as well. */ + new set. */ save_aliasing_flag = flag_strict_aliasing; flag_strict_aliasing = 0; - save_mudflap_flag = flag_mudflap; - flag_mudflap = 0; rtl = DECL_RTL (decl); /* Reset DECL_RTL back, as various parts of the compiler expects @@ -1424,8 +1412,6 @@ make_decl_rtl_for_debug (tree decl) SET_DECL_RTL (decl, NULL); flag_strict_aliasing = save_aliasing_flag; - flag_mudflap = save_mudflap_flag; - return rtl; } @@ -3206,10 +3192,6 @@ build_constant_desc (tree exp) desc = ggc_alloc_constant_descriptor_tree (); desc->value = copy_constant (exp); - /* Propagate marked-ness to copied constant. */ - if (flag_mudflap && mf_marked_p (exp)) - mf_mark (desc->value); - /* Create a string containing the label name, in LABEL. */ labelno = const_labelno++; ASM_GENERATE_INTERNAL_LABEL (label, "LC", labelno); @@ -3405,8 +3387,6 @@ output_constant_def_contents (rtx symbol) assemble_zeros (asan_red_zone_size (size)); } } - if (flag_mudflap) - mudflap_enqueue_constant (exp); } /* Look up EXP in the table of constant descriptors. Return the rtl @@ -6294,9 +6274,8 @@ categorize_decl_for_section (const_tree decl, int reloc) return SECCAT_TEXT; else if (TREE_CODE (decl) == STRING_CST) { - if (flag_mudflap - || ((flag_sanitize & SANITIZE_ADDRESS) - && asan_protect_global (CONST_CAST_TREE (decl)))) + if ((flag_sanitize & SANITIZE_ADDRESS) + && asan_protect_global (CONST_CAST_TREE (decl))) /* or !flag_merge_constants */ return SECCAT_RODATA; else @@ -6321,7 +6300,7 @@ categorize_decl_for_section (const_tree decl, int reloc) } else if (reloc & targetm.asm_out.reloc_rw_mask ()) ret = reloc == 1 ? SECCAT_DATA_REL_RO_LOCAL : SECCAT_DATA_REL_RO; - else if (reloc || flag_merge_constants < 2 || flag_mudflap + else if (reloc || flag_merge_constants < 2 || ((flag_sanitize & SANITIZE_ADDRESS) && asan_protect_global (CONST_CAST_TREE (decl)))) /* C and C++ don't allow different variables to share the same diff --git a/libmudflap/ChangeLog b/libmudflap/ChangeLog deleted file mode 100644 index 17ce18d..0000000 --- a/libmudflap/ChangeLog +++ /dev/null @@ -1,2069 +0,0 @@ -2013-10-17 Bernd Edlinger <bernd.edlinger@hotmail.de> - - PR libmudflap/58230 - * testsuite/lib/mfdg.exp: Use C locale. - -2013-09-20 Jakub Jelinek <jakub@redhat.com> - - PR testsuite/57605 - * testsuite/lib/libmudflap.exp (libmudflap-init): Append - -fdiagnostics-color=never to cxxflags. - -2013-09-20 Alan Modra <amodra@gmail.com> - - * configure: Regenerate. - -2013-03-14 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/53265 - * testsuite/libmudflap.c/fail37-frag.c: Add optimization barrier. - -2013-02-03 Richard Sandiford <rdsandiford@googlemail.com> - - Update copyright years. - -2013-01-03 Jakub Jelinek <jakub@redhat.com> - - * mf-runtime.c (__mf_usage): Update copyright notice dates. - -2012-12-15 Alexandre Oliva <aoliva@redhat.com> - - * mf-hooks1.c (free): Return on NULL before any logging. - -2012-09-14 David Edelsohn <dje.gcc@gmail.com> - - * configure: Regenerated. - -2012-07-13 Richard Guenther <rguenther@suse.de> - - * testsuite/libmudflap.c++/ctors.exp: Explicitely specify -O0. - * testsuite/libmudflap.c++/c++frags.exp: Likewise. - * testsuite/libmudflap.cth/cthfrags.exp: Likewise. - * testsuite/libmudflap.c/cfrags.exp: Likewise. - * testsuite/libmudflap.c/externs.exp: Likewise. - -2012-07-13 Richard Guenther <rguenther@suse.de> - - * testsuite/libmudflap.c/fail11-frag.c: Adjust to not look like memset. - * testsuite/libmudflap.c/fail12-frag.c: Likewise. - -2012-05-29 Joseph Myers <joseph@codesourcery.com> - - * mf-impl.h: Fix typo. - -2012-05-16 H.J. Lu <hongjiu.lu@intel.com> - - * configure: Regenerated. - -2012-04-11 Manuel López-Ibáñez <manu@gcc.gnu.org> - - PR 24985 - * testsuite/lib/libmudflap.exp: Handle caret. - -2012-01-19 Jakub Jelinek <jakub@redhat.com> - - PR libmudflap/40778 - * testsuite/libmudflap.c/fail68-frag.c: New test. - -2012-01-01 Jakub Jelinek <jakub@redhat.com> - - * mf-runtime.c (__mf_usage): Update copyright notice dates. - -2011-11-21 Andreas Tobler <andreast@fgznet.ch> - - * configure: Regenerate. - -2011-07-31 Tom de Vries <tom@codesourcery.com> - - PR middle-end/43513 - * testsuite/libmudflap.c/fail31-frag.c: Adapt testcase to prevent - folding of alloca. - -2011-07-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> - - Revert: - 2011-07-15 Jakub Jelinek <jakub@redhat.com> - - PR testsuite/49753 - PR tree-optimization/49309 - * testsuite/libmudflap.c++/pass68-frag.cxx: New test. - -2011-07-15 Jakub Jelinek <jakub@redhat.com> - - PR testsuite/49753 - PR tree-optimization/49309 - * testsuite/libmudflap.c++/pass68-frag.cxx: New test. - -2011-07-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> - - * configure.ac: Don't create pth. - Check for library containing sched_yield. - * configure: Regenerate. - * config.h.in: Regenerate. - - * testsuite/lib/libmudflap.exp (libmudflap-init): Use - mfconfig_libs in -static check. - -2011-07-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> - - PR libmudflap/49550 - * mf-runtime.c (__wrap_main) [__sun__ && __svr4__]: Don't register - stdin, stdout, stderr. - Register __ctype, __ctype_mask. - - * configure.ac: Check for mmap64. - Check for rawmemchr, stpcpy, mempcpy. - * configure: Regenerate. - * config.h.in: Regenerate. - * mf-hooks1.c [HAVE_MMAP64] (__mf_0fn_mmap64): New function. - (mmap64): New wrapper function. - * mf-impl.h (__mf_dynamic_index) [HAVE_MMAP64]: Add dyn_mmap64. - * mf-runtime.c (__mf_dynamic) [HAVE_MMAP64]: Handle mmap64. - - * mf-hooks2.c [HAVE_GETMNTENT && HAVE_SYS_MNTTAB_H]: Implement - getmntent wrapper. - - * mf-hooks3.c (_REENTRANT): Define. - - * testsuite/libmudflap.c/heap-scalestress.c (SCALE): Reduce to 10000. - - * testsuite/libmudflap.c/pass-stratcliff.c: Include ../config.h. - (MIN): Define. - Use HAVE_RAWMEMCHR, HAVE_STPCPY, HAVE_MEMPCPY as guards. - - * testsuite/libmudflap.c/pass47-frag.c: Expect __ctype warning on - *-*-solaris2.*. - -2011-07-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> - - PR libmudflap/49549 - * testsuite/lib/libmudflap.exp (load_gcc_lib): Load - target-supports.exp. - * testsuite/libmudflap.cth/cthfrags.exp: Only pass - --noinhibit-exec to GNU ld. - -2011-06-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> - - PR libmudflap/38738 - * configure.ac: Check for sys/mnttab.h. - Check for library containing connect. - * configure: Regenerate. - * config.h.in: Regenerate. - * mf-hooks2.c [HAVE_SYS_MNTTAB_H]: Include <sys/mnttab.h>. - * testsuite/libmudflap.c/pass-stratcliff.c (main) [__sun__ && - __svr4__]: Disable rawmemchr, stpcpy, mempcpy tests. - -2011-02-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * configure: Regenerate. - -2011-01-03 Jakub Jelinek <jakub@redhat.com> - - * mf-runtime.c (__mf_usage): Update copyright notice dates. - -2010-10-31 Jason Merrill <jason@redhat.com> - - PR testsuite/20003 - * testsuite/libmudflap.cth/pass40-frag.c: Increase timeout to 30. - -2010-08-20 Uros Bizjak <ubizjak@gmail.com> - - * testsuite/libmudflap.c++/pass41-frag.cxx (dg-prune-output): - New dg directive. - -2010-06-09 Iain Sandoe <iains@gcc.gnu.org> - - PR bootstrap/43170 - * configure: Regenerate. - -2010-05-16 Uros Bizjak <ubizjak@gmail.com> - - * testsuite/libmudflap.c/pass46-frag.c (dg-options): Remove -Wall. - -2010-05-15 Uros Bizjak <ubizjak@gmail.com> - - * testsuite/lib/mfdg.exp (additional_prunes): New global. - (dg-test): Clear additional_prunes before test is run. - (dg-prune-output): New procedure. - * testsuite/lib/libmudflap.exp (libmudflap-dg-test): Do not call - prune_gcc_output. - (libmudflap-dg-prune): New procedure. - * testsuite/libmudflap.c++/pass57-frag.cxx (dg-prune-output): - New dg directive. - -2010-05-04 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - PR other/43620 - * configure.ac (AM_INIT_AUTOMAKE): Add no-dist. - * Makefile.in: Regenerate. - * testsuite/Makefile.in: Regenerate. - -2010-04-02 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * testsuite/Makefile.in: Regenerate. - -2010-03-15 David S. Miller <davem@davemloft.net> - - * testsuite/libmudflap.c/pass54-frag.c: Add explicit return from - main. - -2010-01-09 Jakub Jelinek <jakub@redhat.com> - - * mf-runtime.c (__mf_usage): Update copyright notice dates. - -2009-12-05 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * Makefile.in: Regenerate. - * configure: Regenerate. - * testsuite/Makefile.in: Regenerate. - -2009-09-22 Frank Ch. Eigler <fche@redhat.com> - - PR libmudflap/41433 - * mf-runtime.c (__mf_init): Ignore $MUDFLAP_OPTIONS if - running setuid or setgid. - -2009-09-01 Loren J. Rittle <ljrittle@acm.org> - - * mf-runtime.c (__mf_init): Support FreeBSD. - Prime mutex which calls calloc upon first lock to avoid deadlock. - * mf-hooks1.c (__mf_0fn_mmap): Support FreeBSD. - Ignore red zone allocation request for initial thread's stack. - -2009-09-01 Loren J. Rittle <ljrittle@acm.org> - Andreas Schwab <schwab@linux-m68k.org> - - * testsuite/libmudflap.c/pass51-frag.c (MAP_FAILED): Define, - if not in system header; use it. On FreeBSD, must pass fd==-1 - with MAP_ANON flag. Correct mmap error check. - * testsuite/libmudflap.c/fail40-frag.c: Ditto. - -2009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * configure.ac (AC_PREREQ): Bump to 2.64. - -2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * Makefile.am (install-html, install-pdf): Remove. - * Makefile.in: Regenerate. - - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * config.h.in: Regenerate. - * configure: Regenerate. - * testsuite/Makefile.in: Regenerate. - -2009-07-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force. - -2009-07-16 Joseph Myers <joseph@codesourcery.com> - - * configure: Regenerate. - -2009-07-11 Richard Sandiford <rdsandiford@googlemail.com> - - PR testsuite/40699 - PR testsuite/40707 - PR testsuite/40709 - * testsuite/lib/libmudflap.exp: Revert 2009-06-30 commit. - -2009-07-01 Richard Guenther <rguenther@suse.de> - - PR tree-optimization/19831 - * testsuite/libmudflap.c/fail11-frag.c: Make allocated memory - escape. - * testsuite/libmudflap.c/fail12-frag.c: Likewise. - * testsuite/libmudflap.c/fail16-frag.c: Likewise. - * testsuite/libmudflap.c/fail31-frag.c: Likewise. - -2009-06-30 Richard Sandiford <r.sandiford@uk.ibm.com> - - * testsuite/lib/libmudflap.exp (libmudflap-init): Don't add "." - to ld_library_path. Use add_path. Add just find_libgcc_s to - ld_library_path, not every libgcc multilib directory. - -2009-04-09 Nick Clifton <nickc@redhat.com> - - * mf-hooks1.c: Change copyright header to refer to version 3 - of the GNU General Public License with version 3.1 of the GCC - Runtime Library Exception and to point readers at the COPYING3 - and COPYING3.RUNTIME files and the FSF's license web page. - * mf-heuristics.c: Likewise. - * mf-hooks2.c: Likewise. - * mf-hooks3.c: Likewise. - * mf-impl.h: Likewise. - * mf-runtime.c: Likewise. - * mf-runtime.h: Likewise. - -2009-04-09 Jakub Jelinek <jakub@redhat.com> - - * testsuite/lib/mfdg.exp: Change copyright header to refer to - version 3 of the GNU General Public License and to point readers - at the COPYING3 file and the FSF's license web page. - * testsuite/lib/libmudflap.exp: Likewise. - -2009-03-31 Ben Elliston <bje@au.ibm.com> - - PR libmudflap/38462 - * testsuite/libmudflap.c/fail27-frag.c: Match `mudflap dead - object', not `mudflap object'. - -2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * configure: Regenerate. - -2009-02-03 Jakub Jelinek <jakub@redhat.com> - - * mf-runtime.c (__mf_usage): Update copyright notice dates. - -2009-01-23 Jie Zhang <jie.zhang@analog.com> - - * mf-impl.h (__mf_get_state, __mf_set_state): Don't use - __thread when TLS support is emulated. - * mf-hooks3.c (__mf_get_state, __mf_set_state): Likewise. - * mf-runtime.c (__mf_state_1): Likewise. - * configure.ac: Use GCC_CHECK_EMUTLS. - * configure: Regenerate. - * config.h.in: Regenerate. - -2008-12-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * configure: Regenerate. - -2008-11-26 Janis Johnson <janis187@us.ibm.com> - - PR testsuite/28870 - * testsuite/lib/mfdg.exp (dg-test): Use new timeout support. - (dg-timeout): Remove. - (standard-wait): Remove. - * testsuite/lib/libmudflap.exp: Include new timeout library files. - (libmudflap_target_compile): Set timeout value from new proc. - -2008-11-10 Jakub Jelinek <jakub@redhat.com> - - PR middle-end/35314 - * testsuite/libmudflap.c/pass67-frag.c: New test. - -2008-10-09 Jakub Jelinek <jakub@redhat.com> - - PR c++/37568 - * testsuite/libmudflap.c++/pass66-frag.cxx: New test. - -2008-09-26 Peter O'Gorman <pogma@thewrittenword.com> - Steve Ellcey <sje@cup.hp.com> - - * configure: Regenerate for new libtool. - * Makefile.in: Ditto. - * testsuite/Makefile.in: Ditto. - -2008-09-15 Jakub Jelinek <jakub@redhat.com> - - PR libmudflap/36397 - * testsuite/libmudflap.c/pass64-frag.c: New test. - -2008-06-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * Makefile.in: Regenerate. - * config.h.in: Regenerate. - * configure: Regenerate. - * testsuite/Makefile.in: Regenerate. - -2008-04-18 Paolo Bonzini <bonzini@gnu.org> - - PR bootstrap/35457 - * aclocal.m4: Regenerate. - * configure: Regenerate. - -2008-03-20 Volker Reichelt <v.reichelt@netcologne.de> - - * testsuite/libmudflap.c/pass63-frag.c: New test. - -2008-03-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> - - * aclocal.m4: Regenerate. - * configure: Likewise. - * Makefile.in: Likewise. - * testsuite/Makefile.in: Likewise. - -2008-03-02 Jakub Jelinek <jakub@redhat.com> - - * mf-runtime.c (__mf_usage): Update copyright notice dates. - -2008-02-21 Uros Bizjak <ubizjak@gmail.com> - - * testsuite/libmudflap.c/fail8-frag.c: Adjust scan pattern for - mudflap dead object. - * testsuite/libmudflap.c/fail9-frag.c: Ditto. - -2008-01-24 David Edelsohn <edelsohn@gnu.org> - - * configure: Regenerate. - -2008-01-05 Jakub Jelinek <jakub@redhat.com> - - PR tree-optimization/34618 - * testsuite/libmudflap.c/pass62-frag.c: New test. - -2008-01-03 Jakub Jelinek <jakub@redhat.com> - - PR c++/34619 - * testsuite/libmudflap.c++/pass61-frag.cxx: New test. - -2008-01-01 Volker Reichelt <v.reichelt@netcologne.de> - - PR libmudflap/26442 - * testsuite/libmudflap.c++/pass60-frag.cxx: New test. - -2007-10-15 Maciej W. Rozycki <macro@linux-mips.org> - - * configure: Regenerate following changes to ../config/tls.m4. - -2007-07-26 Tom Tromey <tromey@redhat.com> - - * Makefile.in: Rebuilt. - * Makefile.am (clean-local): Removed. - (pth/mf-runtime.lo, pth/mf-heuristics.lo, pth/mf-hooks1.lo, - pth/mf-hooks2.lo, pth/mf-hooks3.lo): Likewise. - (libmudflapth_la_SOURCES): List sources. - (libmudflapth_la_LIBADD): Clear. - (libmudflapth_la_CFLAGS): New variable. - -2007-07-05 H.J. Lu <hongjiu.lu@intel.com> - - * aclocal.m4: Regenerated. - -2007-06-02 Paolo Bonzini <bonzini@gnu.org> - - * configure: Regenerate. - -2007-05-31 Frank Ch. Eigler <fche@redhat.com> - - From Andi Kleen <ak@suse.de>: - * mf-runtime.c (options): Rename structure for compatibility with - glibc getopt_long. - -2007-05-23 Steve Ellcey <sje@cup.hp.com> - - * Makefile.in: Regenerate. - * configure: Regenerate. - * aclocal.m4: Regenerate. - * testsuite/Makefile.in: Regenerate. - -2007-03-14 Uros Bizjak <ubizjak@gmail.com> - - * testsuite/libmudflap.cth/pass59-frag.c (main): Fix casting of arg. - -2007-03-01 Brooks Moses <brooks.moses@codesourcery.com> - - * Makefile.am: Add dummy install-pdf target. - * Makefile.in: Regenerate - -2007-02-07 Jakub Jelinek <jakub@redhat.com> - - PR libgomp/28468 - * configure: Regenerate. - -2006-12-04 Eric Botcazou <ebotcazou@libertysurf.fr> - - * configure: Regenerate. - -2006-11-13 Daniel Jacobowitz <dan@codesourcery.com> - - * configure: Regenerated. - -2006-11-10 Frank Ch. Eigler <fche@redhat.com> - - PR libmudflap/28578 - * mf-hooks1.c (__mf_0fn_malloc): Make the bootstrap buffers - static but not function scope static. - (free): Skip deallocation attempts for objects placed into - bootstrap buffers. - * testsuite/libmudflap.cth/pass59-frag.c: New test. - -2006-11-06 Frank Ch. Eigler <fche@redhat.com> - - From Herman ten Brugge <hermantenbrugge@home.nl>: - * mf-runtime.c (__mf_uncache_object): Optimize the code so that - small and large objects are handled a lot faster. - -2006-11-06 Frank Ch. Eigler <fche@redhat.com> - - * configure.ac (__libc_freeres): Look for it. - * mf-impl.h (call_libc_freeres): New configuration flag. - * mf-runtime.c (__mf_set_default_options): Set it by default. - (__mfu_report): Call it if needed. - (__mfu_unregister): Remove "unaccessed registered object" warning. - * configure, config.h.in: Regenerated. - -2006-09-18 Tom Tromey <tromey@redhat.com> - - * configure: Rebuilt. - -2006-06-21 Frank Ch. Eigler <fche@redhat.com> - - PR 21274 - mf-runtime.h installation based on ssp patch for PR 26473 from - Mark Mitchell <mark@codesourcery.com>. - * configure.ac (ACX_NONCANONICAL_TARGET): Use it. - * Makefile.am (target_noncanonical): Define. - (libsubincludedir): New variable. - (nobase_libsubinclude_HEADERS): Add mf-runtime.h. - (include_HEADERS): Remove. - * configure, aclocal.m4, config.h.in: Regenerated. - * Makefile.in, testsuite/Makefile.in: Likewise. - * mf-runtime.h: Add #ifndef protection for conflicting _REENTRANT - and _THREAD_SAFE redefinition values. - -2006-05-23 Carlos O'Donell <carlos@codesourcery.com> - - * Makefile.am: Add install-html target. Add install-html to .PHONY - * Makefile.in: Regenerate. - -2006-04-19 Volker Reichelt <reichelt@igpm.rwth-aachen.de> - - PR mudflap/26789 - * testsuite/libmudflap.c++/error1-frag.cxx: New test. - - PR mudflap/26790 - * testsuite/libmudflap.c++/error2-frag.cxx: New test. - -2006-04-10 Matthias Klose <doko@debian.org> - - * testsuite/lib/libmudflap.exp (libmudflap-init): Recognize multilib - directory names containing underscores. - -2005-11-22 Janis Johnson <janis187@us.ibm.com> - - * testsuite/lib/libmudflap.exp (libmudflap-init): Remove -static from - MUDFLAP_FLAGS if static library not supported. - * testsuite/libmudflap.c/cfrags.exp (MUDFLAP_FLAGS): new. - * testsuite/libmudflap.c/externs.exp: Ditto. - * testsuite/libmudflap.c++/ctors.exp: Ditto. - * testsuite/libmudflap.c++/c++frags.exp: Ditto. - * testsuite/libmudflap.cth/cthfrags.exp: Ditto. - -2005-10-04 James E Wilson <wilson@specifix.com> - - * configure.ac (mudflap_cv_entry_point): Use quadrigraphs to declare - $name as array of characters with unknown bound. Also store into the - array. - * configure: Regenerate. - -2005-09-30 James E. Wilson <wilson@specifix.com> - - * configure.ac (pthread.h): Use AC_CHECK_HEADERS instead of - AC_CHECK_HEADER. - (target_thread_file): New. Set from sed'ed gcc output. - (posix_threads): New. Set from target_thread_file. Use instead of - ac_have_pthread_h. - (pthread_create_version): Move initialization before code using it. - * configure: Regenerate. - - * mf-heuristics.c (_end, ENTRY_POINT): Make them arrays with unknown - bounds. - -2005-09-29 James E. Wilson <wilson@specifix.com> - - * mf-hooks1.c (__mf_0fn_mmap, mmap, __mf_0fn_munmap, munmap): Protect - with HAVE_MMAP ifdef. - -2005-09-23 Frank Ch. Eigler <fche@elastic.org> - - PR 23084. - * mf-hooks2.c (accept): Tolerate NULL sockaddr* parameter. - -2005-09-23 Frank Ch. Eigler <fche@elastic.org> - - * testsuite/libmudflap.c++/pass58-frag.cxx: New test for heisenbug 19319. - -2005-09-23 Tom Tromey <tromey@redhat.com> - - * aclocal.m4, configure: Rebuilt. - * configure.ac: Use GCC_CHECK_TLS. - * acinclude.m4 (LIBMUDFLAP_CHECK_TLS, LIBMUDFLAP_ENABLE): Moved - to ../config. - -2005-08-22 Jim Wilson <wilson@specifix.com> - - * mf-hooks2.c (MF_REGISTER_fopen): Define to __MF_TYPE_STATIC when - __FreeBSD__ is defined. - -2005-08-17 Jim Wilson <wilson@specifix.com> - - * mf-hooks1.c (malloc, calloc, realloc, free, - __mf_wrap_alloca_indirect): Call BEGIN_MALLOC_PROTECT before calling - the real routines, and END_MALLOC_PROTECT afterwards. - * mf-impl.h (enum __mf_state_enum): Expand comment. Add in_malloc. - (BEGIN_PROTECT): Handle in_malloc state. - (BEGIN_MALLOC_PROTECT, END_MALLOC_PROTECT): New. - * testsuite/libmudflap.c/hook2-allocstuff.c: New. - -2005-08-17 Kelley Cook <kcook@gcc.gnu.org> - - * All files: Update FSF address. - -2005-08-15 Ulrich Weigand <weigand@informatik.uni-erlangen.de> - - * mf-hooks3.c (main_seen_p): Remove. - (__mf_get_state): Remove attempt to recognize the main thread. - -2005-08-15 Maciej W. Rozycki <macro@linux-mips.org> - - * configure.ac: Test for the name of the symbol used for the entry - point; define ENTRY_POINT to the result. - * configure: Regenerate. - * config.h.in: Regenerate. - * mf-heuristics.c: Replace _start with ENTRY_POINT throughout. - -2005-08-14 Ulrich Weigand <weigand@informatik.uni-erlangen.de> - - * mf-runtime.c (__mf_state_1): Initialize to reentrant. - (__mf_init): Set thread state active. - * mf-hooks3.c (__mf_pthread_spawner): Always set thread - state active. - (pthread_create wrapper): Always use thread spawner. - - * testsuite/libmudflap.cth/pass37-frag.c: Increase timeout. - * testsuite/libmudflap.cth/pass39-frag.c: Likewise. - -2005-07-16 Richard Henderson <rth@redhat.com> - - * acinclude.m4: New file. - * configure.ac: Invoke LIBMUDFLAP_CHECK_TLS. - * configure, config.h.in, Makefile.in, testsuite/Makefile.in: Rebuild. - * mf-hooks1.c (__mf_0fn_malloc): Move body from ... - (__mf_0fn_calloc): ... here. - * mf-hooks3.c (struct pthread_info): Remove. - (__mf_pthread_info, __mf_pthread_info_idx): Remove. - (LIBMUDFLAPTH_THREADS_MAX): Set to 1021. - (struct mf_thread_data): New. - (mf_thread_data, mf_thread_data_lock): New. - (__mf_allocate_blank_threadinfo): Remove. - (__mf_find_threadinfo): Rewrite and simplify. Only use if TLS is - not available. - (__mf_state_perthread): Remove. - (__mf_get_state, __mf_set_state): New. - (__mf_pthread_cleanup): Use &errno, rather than saved pointer. - Update mf_thread_data killing procedure. - (__mf_pthread_spawner): Similarly. - (__mf_0fn_pthread_create): Only use wrapper if necessary. Remove - code to allocate thread stack space. - (__mf_0fn_pthread_join, pthread_join): Remove. - (__mf_0fn_pthread_exit, pthread_exit): Remove. - * mf-impl.h (dyn_pthread_join, dyn_pthread_exit): Remove. - (__mf_state_1): Rename from __mf_state; use TLS when available. - (__mf_get_state, __mf_set_state): New. Update all users. - * mf-runtime.c (begin_recursion_protect1): New. - (BEGIN_RECURSION_PROTECT): Use it. - (__mf_state_1): Rename from __mf_state; use TLS when available. - (threads_active_p): Remove. - (__mf_usage): Compute it directly. - -2005-06-19 Ulrich Weigand <uweigand@de.ibm.com> - - * testsuite/libmudflap.c/externs-1.c (main): Add return statement. - -2005-06-15 Frank Ch. Eigler <fche@redhat.com> - - Fix for uncaching bug reported by Herman ten Brugge. - * mf-runtime.c (__mf_uncache_object): Search whole cache. - * testsuite/libmudflap.c/fail40-frag.c: New test. - -2005-05-23 Alfred M. Szmidt <ams@gnu.org> - - PR libmudflap/21724 - * Makefile.am (AM_MAKEFLAGS): Pass includedir. - * Makefile.in: Amend. - -2005-06-14 Frank Ch. Eigler <fche@redhat.com> - - PR mudflap/21023 - * testsuite/libmudflap.c/externs.exp, externs-{1,2}.c: New test files. - * testsuite/libmudflap.c/cfrags.exp: Bypass new sources. - -2005-06-14 Frank Ch. Eigler <fche@redhat.com> - - PR libmudflap/21094 - * testsuite/libmudflap.c++/*.exp: Assert build tree g++. - -2005-06-14 Frank Ch. Eigler <fche@redhat.com> - - PR mudflap/22064 - * mf-impl.h (mudflap_mode, violation_mode): Make these ordinary - unsigned vars with #defines instead of enums. - -2005-05-09 Mike Stump <mrs@apple.com> - - * configure: Regenerate. - -2005-04-12 Mike Stump <mrs@apple.com> - - * configure: Regenerate. - -2005-04-12 Frank Ch. Eigler <fche@redhat.com> - - PR mudflap/19266 - * testsuite/libmudflap.c++/c++frags.exp: Also test -O permutation. - * testsuite/libmudflap.c++/pass57-frag.cxx: New test. - -2005-04-04 Alan Modra <amodra@bigpond.net.au> - - * mf-runtime.c (__mfu_unregister): Warning fix for char unsigned. - -2005-03-31 Mike Stump <mrs@apple.com> - - * mf-runtime.h: Add libmudflap copyright clause. - -2005-03-21 Mike Stump <mrs@apple.com> - - * mf-heuristics.c: Fix whitespace at end of line. - * mf-hooks1.c: Likewise. - * mf-hooks2.c: Likewise. - * mf-hooks3.c: Likewise. - * mf-impl.h: Likewise. - * mf-runtime.c: Likewise. - * mf-runtime.h: Likewise. - -2005-03-21 Zack Weinberg <zack@codesourcery.com> - - * configure.ac: Do not invoke TL_AC_GCC_VERSION. - In all substitutions, expand gcc_version in Makefile. - * aclocal.m4, configure: Regenerate. - * Makefile.am: Set gcc_version. - * Makefile.in, testsuite/Makefile.in: Regenerate. - -2005-03-17 Frank Ch. Eigler <fche@redhat.com> - - * mf-runtime.c (__mfu_check): Respect ignore_reads configuration. - * testsuite/libmudflap.c/{pass56,fail39}-frag.c: New tests. - -2005-02-13 Frank Ch. Eigler <fche@redhat.com> - - PR mudflap/19319 - * testsuite/libmudflap.c++/pass55-frag.c: New test. - -2005-01-05 Richard Henderson <rth@redhat.com> - - * testsuite/libmudflap.c/pass32-frag.c: Fix typo. - -2005-01-02 Greg McGary <greg@mcgary.org> - - * mf-impl.h (uintptr_t): Get typedef via stdint.h or define explicitly. - * mf-runtime.h: New file, replaces mf-runtime.h.in. - * configure.ac (AC_CONFIG_FILES): mf-runtime.h is no longer generated. - * Makefile.in: Ditto. - * testsuite/lib/libmudflap.exp: Add -I${srcdir}/.. to get mf-runtime.h - * testsuite/libmudflap.c/pass32-frag.c: s/uintptr_t/__mf_uintptr_t/ - * testsuite/libmudflap.c/fail36-frag.c: New test. - * testsuite/libmudflap.c/fail37-frag.c: New test. - * testsuite/libmudflap.c/fail38-frag.c: New test. - -2004-12-08 Kelley Cook <kcook@gcc.gnu.org> - - * Makefile.am: Add ../config to ACLOCAL_AMFLAGS. - * aclocal.m4, Makefile.in, testsuite/Makefile.in: Regenerate. - -2004-12-02 Richard Sandiford <rsandifo@redhat.com> - - * configure.ac: Use TL_AC_GCC_VERSION to set gcc_version. - * aclocal.m4: Include ../config/gcc-version.m4. - * configure, Makefile.in, testsuite/Makefile.in: Regenerate. - -2004-11-29 Kelley Cook <kcook@gcc.gnu.org> - - * Makefile.am: Define ACLOCAL_AMFLAGS. - * acinclude.m4: Remove. - * stamp-h.in: Remove superfluous stamp file. - * aclocal.m4, configure, Makefile.in: Regenerate. - * testsuite/Makefile.in: Likewise. - -2004-11-24 Kelley Cook <kcook@gcc.gnu.org> - - * Makefile.am: Revert previous. - * acinclude.m4: Restore. - * aclocal.m4, configure, Makefile.in: Regenerate. - * testsuite/Makefile.in: Likewise. - -2004-11-24 Kelley Cook <kcook@gcc.gnu.org> - - * Makefile.am: Define ACLOCAL_AMFLAGS. - * acinclude.m4: Remove. - * aclocal.m4, configure, Makefile.in: Regenerate. - * testsuite/Makefile.in: Likewise. - -2004-11-23 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> - - * testsuite/lib/libmudflap.exp: Use new procs in target-libpath.exp. - -2004-11-23 Kelley Cook <kcook@gcc.gnu.org> - - * Makefile.in, configure, aclocal.m4: Regenerate with automake 1.9.3. - * testsuite/Makefile.in: Likewise. - -2004-11-01 Andreas Schwab <schwab@suse.de> - - * configure.ac: (target_alias): Default to $host_alias, not - $target. - * configure: Regenerated. - -2004-10-28 Frank Ch. Eigler <fche@redhat.com> - - * testsuite/libmudflap.c/fail35-,pass53-,pass54-frag.c: New tests. - * testsuite/libmudflap.c/pass35-frag.c: Correct embedded warning - message. - -2004-10-25 Eric Botcazou <ebotcazou@libertysurf.fr> - - PR other/18138 - * testsuite/lib/libmudflap.exp: Accept more than one multilib libgcc. - -2004-10-12 Frank Ch. Eigler <fche@redhat.com> - - * configure.ac: Check for more headers, functions. - * mf-hooks2.c (mkbuffer, unmkbuffer): New helper functions for - tracking overridden FILE buffers. - (fopen, setvbuf): New/revised hook functions for buffer overriding. - (setbuf,setlinebuf,fdopen,freopen,fopen64,freopen64,fclose): Ditto. - (fflush): Accept given NULL stream (means "all streams"). - * mf-runtime.h.in: - * mf-runtime.c (__mfu_check): Accept accesses that span adjacent - HEAP/GUESS objects. - (LOOKUP_CACHE_SIZE_MAX): Raise to 64K entries tentatively. - (__mf_adapt_cache): Use them all. - * testsuite/libmudflap.c/pass35-frag.c: Update warning message. - * testsuite/libmudflap.c++/ctors.exp: Ditto. - * testsuite/libmudflap.c/{pass51,pass52}-frag.c: New tests. - * configure, config.h.in: Regenerated. - -2004-10-05 Frank Ch. Eigler <fche@redhat.com> - - * configure.ac: Checking for sys/socket.h once is enough. - * configure: Regenerated. - -2004-10-04 Frank Ch. Eigler <fche@redhat.com> - - * configure.ac: Look for more headers & functions. - * mf-hooks2.c (getmntent, inet_ntoa, getproto*): New wrapper functions. - * mf-runtime.h.in: Add new "#pragma redefine_extname"s for them. - * mf-runtime.c (options): Clean up integer signedness warnings. - (main): Add a declaration to fix a warning. - * mf-hooks3.c (pthread_exit): Add not-reached exit() to wrapper. - * configure, config.h.in: Regenerated. - -2004-10-02 Frank Ch. Eigler <fche@redhat.com> - - * testsuite/libmudflap.c/pass50-frag.c, fail33-frag.c, fail34-frag.c: - New tests for proper base/limit checking for aggregates. - -2004-09-15 Joseph S. Myers <jsm@polyomino.org.uk> - - * testsuite/libmudflap.c/pass35-frag.c: Update expected message. - -2004-09-07 Frank Ch. Eigler <fche@redhat.com> - - * configure.ac: Look for pwd.h, grp.h, netdb.h headers and functions. - * mf-hooks2.c (strerror): Unregister previous string returned by - previous strerror. - (getlogin,cuserid,getpwnam,getpwuid,getgrnam,getgrgid): New wrappers. - (getservent,getservbyname,getservbyport,gai_strerror): Ditto. - * mf-runtime.h.in: Add redefine_extname pragmas for them all. - * mf-runtime.c (__mf_describe_object): Clarify object life status. - * testsuite/libmudflap.c/pass48-frag.c, pass49-frag.c, fail32-frag.c: - New tests. - * configure, config.h.in: Regenerated. - -2004-08-03 Dale Johannesen <dalej@apple.com> - - * mf-runtime.c: Conditionalize POSIX_SOURCE for Darwin. - -2004-08-03 Frank Ch. Eigler <fche@redhat.com> - - * mf-runtime.c (compare_uintptr_t): Remove function. Inline - simplified contents in all former callers. - -2004-07-27 Ulrich Weigand <weigand@informatik.uni-erlangen.de> - - * mf-runtime.c (__mf_fini): Set mudflap_mode to mode_nop in - the statically linked case. - -2004-07-27 Frank Ch. Eigler <fche@redhat.com> - - * splay-tree.[ch]: Remove. Merge contents into ... - * mf-runtime.c: ... here, renaming symbols and making all functions - static. Remove unused min/max functions. - * Makefile.am: Forget about splay-tree.[ch]. - * Makefile.in, testsuite/Makefile.in: Regenerated. - -2004-07-21 Frank Ch. Eigler <fche@redhat.com> - - * mf-runtime.c (__mfu_check): Remove mistaken mode-nop handling. - (__mfu_usage): Include (C) 2004. - * mf-hooks3.c (__mf_find_threadinfo): Don't call tracing functions - here. Include a comment explaining why. - -2004-07-20 Frank Ch. Eigler <fche@redhat.com> - - * mf-impl.h (__mf_options): Add ignore_reads and timestamps fields. - * mf-runtime.c (options): Give them a name. - (__mf_set_default_options): Set them. - (__mf_insert_new_object, __mfu_unregister): Optionalize timestamps. - (__mf_violation): Warning cleanup. - * mf-impl.h (MF_VALIDATE_EXTENT): Support ignore_reads option. - * splay-tree.c (splay_tree_delete_helper): Remove obsolete decl. - -2004-07-15 Frank Ch. Eigler <fche@redhat.com> - - g++/15861 - * mf-runtime.c (__mf_init): Make it non-static. Tolerate - repeated invocation. - -2004-07-09 Frank Ch. Eigler <fche@redhat.com> - - Test case for g++/15861 - * testsuite/libmudflap.c++/ctors-[12].cxx: New test case halves. - * testsuite/libmudflap.c++/ctors.exp: Driver. - * testsuite/libmudflap.c++/c++frags.exp: Elide redundant default. - Look only for *frag* test cases. - -2004-07-08 Frank Ch. Eigler <fche@redhat.com> - - ANSI C conversion, libmudflap specialization, recursion limiting. - * splay-tree.h (splay_tree_{de,}allocate_fn): Remove allocation_data - argument and indirection function pointers, update callers. - (splay_tree_s): Add statistics and recursion control fields - num_keys, max_depth, depth, rebalance_p. - * splay-tree.c (splay_tree_splay_helper): Track recursion depth. - Back out of search if it exceeds limit. - (splay_tree_splay): Manage recursion limiting with rebalancing as - needed. - (splay_tree_new): More initialization. - (splay_tree_rebalance): New function. - (splay_tree_foreach): Rewrite using nonrecursive logic. - (splay_tree_xmalloc_allocate, splay_tree_xmalloc_deallocate): - Remove. Point indirect calls to mf-runtime.c's routines. - (splay_tree_compare_ints, splay_tree_compare_pointers): Remove unused - functions. - (splay_tree_delete, splay_tree_delete_helper): Ditto. - * testsuite/heap-scalestress.c: New test based on one from - Eyal Lebedinsky <eyal@eyal.emu.id.au>: - -2004-07-05 Matthias Klose <doko@debian.org> - - * libtool-version: New. - * Makefile.am (libmudflap_la_LDFLAGS, libmudflapth_la_LDFLAGS): - Use -version-info for soname. - * Makefile.in: Regenerate. - * configure.ac: Remove libtool_VERSION macro - * configure: Regenerate - -2004-07-05 Zack Weinberg <zack@codesourcery.com> - - * mf-runtime.h.in: Wrap declarations of struct __mf_cache, - __mf_lookup_cache, __mf_lc_mask, or __mf_lc_shift in - #ifndef _MUDFLAP. - -2004-06-29 Frank Ch. Eigler <fche@redhat.com> - - Splay tree implementation fork. - * splay-tree.c, splay-tree.h: Copied & modified from libiberty. - Use hard-coded comparison function for uintptr_t. Remove key/value - deallocation logic. Cache last splayed key for consecutive lookups. - * Makefile.am, Makefile.in: Use them, don't link to them. - * mf-runtime.c (__mf_object_tree): Adapt to simpler splay_tree_new. - (__mf_find_objects2): Flip successor/predecessor search sequence. - * ansidecl.h, libiberty.h: Removed dummy files. - -2004-06-29 Nick Clifton <nickc@redhat.com> - - * configure.ac (AC_CHECK_HEADERS): Add dirent.h - * configure: Regenerate. - * mf-hooks2.c: Surround uses of dirent.h with #ifdef - HAVE_DIRENT_H. - Remove spurious inclusion of <strings.h>. - -2004-06-29 Nick Clifton <nickc@redhat.com> - - * mf-runtime.c (pthread_join): Only apply the weak pragma if the - function actually exists. - -2004-06-25 Frank Ch. Eigler <fche@redhat.com> - - * ansidecl.h, libiberty.h: New dummy files for building splay-tree. - * config.h.in: Regenerated. - -2004-06-24 Frank Ch. Eigler <fche@redhat.com> - - Adopt splay trees for object database. - * Makefile.am: Copy splay-tree.* from libiberty. - * Makefile.in, testsuite/Makefile.in: Regenerated. - * mf-runtime.h.in (__mf_unregister): Add third parameter (type). - * mf-hooks[123].c (*): Add new third parameter to mf_unregister. - * mf-impl.h (BEGIN_PROTECT): Remove some trace text. - * mf-runtime.c: Rewrite code dealing with object database to use - libiberty splay trees. Remove tree liveness aging option. - * testsuite/libmudflap.c/fail18-frag.c: Add volatile flag. - -2004-06-15 Paolo Bonzini <bonzini@gnu.org> - - * configure.ac: New name of configure.in. Update - AC_INIT, AC_CONFIG_SRCDIR, AC_CONFIG_HEADERS, AC_CONFIG_FILES, - AC_OUTPUT, AM_INIT_AUTOMAKE to the preferred style for - Autoconf 2.5x and Automake 1.7 or later. - * configure.in: Remove. - * configure: Regenerate. - - * Makefile.am: Remove useless multilib rules. - * Makefile.in: Regenerate. - -2004-06-15 Paolo Bonzini <bonzini@gnu.org> - - * .cvsignore: New file. - -2004-06-10 Stephen Crowley <stephen.crowley@sbcglobal.net> - - PR libmudflap/13505 - * mf-hooks2.c (semctl): Add cygwin porting hack. - -2004-06-09 Frank Ch. Eigler <fche@redhat.com> - - ctype support. - * configure.in: Look for ctype header and glibc implementation. - * mf-hooks2.c (__ctype_{b,toupper,tolower}_loc): Sample ctype - array hooks for glibc 2.3. - * mf-runtime.h.in: Wrap them. - * mf-runtime.c (__mf_init): Leave marker regarding other ctype - implementations. - * testsuite/libmudflap.c/pass47-frag.c: New test. - * configure, config.h.in: Regenerated. - -2004-06-04 Frank Ch. Eigler <fche@redhat.com> - - Portability improvements, e.g., libmudflap/15293. - * configure.in: Look for glibc extension functions. Look for - support of -f{function,data}-sections. Look for more headers. - Create testsuite/mfconfig.exp. Correct more "test x.." thinkos. - * Makefile.am: Use $(SECTION_FLAGS). Collapse piecemeal-compiled - mf-hooks* into usual single object per source. - * mf-hooks*.c: Remove all #if WRAP_foo conditionals. - * mf-hooks2.c: #include a bunch more system headers. Define strnlen - if system doesn't provide one. - * mf-hooks3.c (struct pthread_info): Add stack_*_alloc fields. - (pthread_create): Use it to properly GC dead thread stacks. - * mf-runtime.c (__mf_violation): Correct snprintf type warning. - * testsuite/Makefile.am: Stop generating site.exp. - * testsuite/mfconfig.exp.in: New file. - * testsuite/config/default.exp: Load new mfconfig.exp. - * testsuite/lib/libmudflap.exp (libmudflap-init): Add extra libraries. - (prune_gcc_output): Add glibc static linking warnings. - * testsuite/libmudflap.*/*frags.exp: Enumerate needed -lmudflap* libs. - * testsuite/libmudflap.c/pass46-frag.c: Ditto. - * configure, Makefile, aclocal.m4, config.h.in, testsuite/Makefile.in: - Regenerated with autoconf 2.57 and automake 1.7. - -2004-06-04 Per Bothner <per@bothner.com> - - * configure.in (LIBMUDFLAPTH): Fix thinko. - - * configure.in: Check for more headers. - * mf-hooks2.c: Conditionalize on HAVE_SYS_SOCKET_H etc. - - * mf-runtime.c: In two places conditionalize on SIUSR1 rather than - HAVE_SIGNAL as mingw has signal.h but not SIUSR1. - -2004-06-01 Andreas Jaeger <aj@suse.de> - - * configure.in: Handle multilibs, support - --enable-version-specific-runtime-libs. - * Makefile.am (lib_LTLIBRARIES): Rename to ... - (toolexeclib_LTLIBRARIES): this for multilib support. - * Makefile.in: Regenerated. - * configure: Regenerated. - * aclocal.m4: Regenerated. - * config.h.in: Regenerated. - * testsuite/Makefile.in: Regenerated. - -2004-06-01 Andreas Jaeger <aj@suse.de> - - * testsuite/lib/libmudflap.exp (libmudflap-init): Handle - multilibs, using multilib directory instead of hardcoded path. - Set LD_RUN_PATH. - -2004-05-21 Frank Ch. Eigler <fche@redhat.com> - - * Makefile.am (AM_MAKEFLAGS): Pass RUNTESTFLAGS. - * Makefile.in: Ditto. - -2004-05-18 Kaz Kojima <kkojima@gcc.gnu.org> - - * acinclude.m4 (lt_cv_deplibs_check_method): Use pass_all on sh*. - * aclocal.m4, configure: Rebuilt. - -2004-05-17 Frank Ch. Eigler <fche@redhat.com> - - * lib/libmudflap.exp (libmudflap-init): For C++ test cases only, - import some build settings from libstdc++-v3 testsuite_flags. - * .../cfrags.exp, .../c++frags.exp, .../cthfrags.exp: Corresponding - changes to pass test language. - - * mf-runtime.c (__mfu_check): Poison the cache with antidote for - quicker mode-nop handling. - -2004-03-25 Frank Ch. Eigler <fche@redhat.com> - - * mf-impl.h: Added libgcc license header. - -2004-03-20 Frank Ch. Eigler <fche@redhat.com> - - * mf-hooks[123].c, mf-runtime.c, mf-heuristics.c: - Added libgcc license header. - * mf-hooks3.c (__mf_0fn_pthread_create): Correct arg constness. - (pthread_create): Simplify stack allocation syntax. - -2004-03-08 Loren J. Rittle <ljrittle@acm.org> - - * mf-hooks2.c: Support FreeBSD. - (WRAP_gets): Avoid gets(). - * testsuite/libmudflap.c/pass-stratcliff.c: Do not - test unimplemented mem/str calls on FreeBSD. - * testsuite/libmudflap.c/pass21-frag.c: Do not include - <alloca.h> on FreeBSD. - -2004-01-30 Frank Ch. Eigler <fche@redhat.com> - - * testsuite/libmudflap.c/pass36-frag.c: Add missing free() call. - * testsuite/libmudflap.c/pass46-frag.c: New test for -fmudflapir. - * testsuite/libmudflap.cth/cthfrags.exp: Add -DSTATIC to compiler - flags for static linking permutation. - * testsuite/libmudflap.cth/pass40-frag.c: When -DSTATIC, avoid - some pthreads code that croaks on linux glibc tls. - -2004-01-27 Frank Ch. Eigler <fche@redhat.com> - - * testsuite/libmudflap.c/fail31-frag.c, pass45-frag.c: New tests. - -2004-01-15 Frank Ch. Eigler <fche@redhat.com> - - * testsuite/libmudflap.c/pass44-frag.c: New test. - -2004-01-12 Frank Ch. Eigler <fche@redhat.com> - - * testsuite/libmudflap.c/fail{28,29,30}-frag.c: New tests. - -2004-01-08 Frank Ch. Eigler <fche@redhat.com> - - * testsuite/libmudflap.c/pass43-frag.c: Added missing program rc. - -2003-12-11 Frank Ch. Eigler <fche@redhat.com> - - * testsuite/libmudflap.c/pass42-frag.c, pass43-frag.c: New tests. - -2003-12-08 Andrew Pinski <pinskia@physics.uc.edu> - - PR libmudflap/12670 - * configure.in: Add check for see if - socklen_t typedef is in sys/socket.h. - * mf-hooks1.c: Add define if socklen_t - is not typedef. - * mf-hooks2.c: Likewise. - * mf-hooks3.c: Likewise. - * config.h.in: Regen. - * configure: Regen. - -2003-12-08 Frank Ch. Eigler <fche@redhat.com> - - * mf-runtime.c (__mf_watch_or_not): Tweak tracing message. - * testsuite/libmudflap.c/fail21-frag.c: Defeat aliasing - optimizations. - * testsuite/libmudflap.c/pass25-frag.c: Ditto. - * testsuite/libmudflap.c/pass26-frag.c: Tolerate non-overlapping - (unoptimized) allocation of stack space. - -2003-12-07 Richard Henderson <rth@redhat.com> - - * testsuite/libmudflap.c/fail23-frag.c (main): Adjust addend to 11. - * testsuite/libmudflap.c/fail27-frag.c (foo): Mark noinline. - -2003-12-06 Andrew Pinski <apinski@apple.com> - - partial PR libmudflap/12670 - * mf-hooks1.c: Respect Darwin checks. Conditionalize POSIX_SOURCE. - * mf-hooks2.c: Likewise. - * mf-hooks3.c: Likewise. - -2003-11-19 Frank Ch. Eigler <fche@redhat.com> - - libstdc++/11696 - * mf-runtime.h.in: Switch to #pragma redefine_extname for - symbols interposed at compile time. - * testsuite/libmudflap.c++/pass41-frag.cxx: New test. - - libmudflap/12939 - * mf-hooks2.c (semctl): Tolerate FreeBSD. - - * configure.in: Reorganize check for <pthread.h>. - * configure: Regenerated. - -2003-11-04 David Edelsohn <edelsohn@gnu.org> - - * mf-runtime.c (_ALL_SOURCE): Define for AIX. - (_LARGE_FILE_API): Define for AIX. - * mf-hooks[123]: Same. - (_XOPEN_SOURCE_EXTENDED): Define to 1 for AIX. - -2003-10-21 David Edelsohn <edelsohn@gnu.org> - - * mf-runtime.c (_XOPEN_SOURCE_EXTENDED): Define to 1 for AIX. - -2003-07-29 Frank Ch. Eigler <fche@redhat.com> - - 2003-07-29 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> - - * configure.in: Update check for union semun. - -2003-07-29 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> - - PR other/11673 - * mf-hooks2.c [WRAP_semctl]: Fix check for HAVE_UNION_SEMUN. - -2003-07-29 Frank Ch. Eigler <fche@redhat.com> - - PR other/11673 - * configure.in: Add checks for 64-bit LFS functions, struct semun - definition, for BSD compatibility. - * mf-hooks1.c: Respect BSD checks. Conditionalize POSIX_SOURCE. - * mf-hooks2.c: Ditto. Include <strings.h> for bcmp* decls. - * mf-hooks3.c: Ditto. - (pthread_create): Try MAP_ANON on platforms without the MAP_ANONYMOUS - mmap flag. - * configure, config.h.in: Regenerated. - -2003-07-23 Frank Ch. Eigler <fche@redhat.com> - - Multithreading fixes: - * mf-runtime.c (__mf_object): Store allocating/deallocating - thread id. - (options): Support new "-thread-stack" option. - Rename "-heur-argv-environ" option to "-heur-stdlib". - Disable "-lc-mask" and "-lc-shift" options. - (__mf_dynamic): Add function pointers for pthread_join/_exit. - (__assert_fail): New self-contained function for glibc. - * mf-hooks3.c: Essentially rewritten, particularly related to - use of __mf_pthread_info array. - (pthread_join, _exit): New hook functions. - * mf-impl.h (BEGIN_PROTECT): Handle starting_p case. - * testsuite/libmudflap.cth/pass40-frag.c: New test. - - Warning cleanups: - * mf-heuristics.c: Add type casts for tracing, sub calls. - * mf-impl.h (BEGIN_PROTECT): Redefine to omit result type. - Update all callers to declare explicit result holder. - (END_PROTECT): Removed. - * testsuite/*/*frags.exp: Clean up default MUDFLAP_OPTIONS. - -2003-07-15 Diego Novillo <dnovillo@redhat.com> - - * testsuite/libmudflap.c/fail21-frag.c: Add volatile modifiers. - * testsuite/libmudflap.c/fail15-frag.c: Likewise. - * testsuite/libmudflap.c/fail13-frag.c: Likewise. - -2003-07-04 Frank Ch. Eigler <fche@redhat.com> - - * mf-hooks1.c, 2.c, 3.c: New file, splits up content from old ... - * mf-hooks: Removed. - * mf-impl.h (MF_VALIDATE_EXTENT, BEGIN_PROTECT, END_PROTECT): - Move these macros from old mf-hooks.c here. - * Makefile.am: Adapt to split-up hook sources for faster builds. - * Makefile.in: Regenerated. - - * mf-heuristics.c: Remove #if-0 block. - - * mf-impl.h (__mf_state): Reorganize declaration and implementation. - (__mf_starting_p): New state only for use while dlsym bootstrapping. - (CALL_REAL, __mf_init): Corresponding changes. - (TRACE, VERBOSE_TRACE): Include thread id and "mf:" prefix. Update - all callers to remove redundant "mf:" prefix. - * mf-runtime.h.in: #define a few reentrancy macros for libmudflapth. - * mf-hooks3.c: Rewrite chunks to support per-thread __mf_state value. - (__mf_pthread_info): Become a hash table. - - * testsuite/lib/mfdg.exp: Support new "dg-timeout" and - "dg-repetitions" directives to control test case execution. - * testsuite/libmudflap.cth/pass37-frag.c: Add timeout and repeat - options. - * testsuite/libmudflap.cth/pass39-frag.c: Ditto for this new test. - -2003-06-25 Frank Ch. Eigler <fche@redhat.com> - - * mf-hooks.c (alloca): Separate into stub. - (__mf_wrap_alloca_indirect): New function. Use CALL_REAL - malloc/free for alloca blocks. - (pthread_create): Tolerate failing pthread_attr_get* calls. - * mf-runtime.c (__mf_fini): Call __mf_wrap_alloca_indirect. - * mf-impl.h (CALL_WRAP): Remove macro. - * testsuite/libmudflap.c/pass21-frag.c: Include <alloca.h>. - * testsuite/libmudflap.c/pass23-frag.c: Include more struct - padding for ia64 BIT_FIELD_REF constructs. - -2003-06-19 Frank Ch. Eigler <fche@redhat.com> - - * mf-hooks.c (struct pthread_info): Add "thread_errno" field. - (__mf_pthread_spawner, __mf_pthread_cleanup): Use it with GUESS - libmudflap object type. - * mf-runtime.c (__mfu_unregister): Correct cemetary logic to avoid - crashes on unregistering STATIC objects. - -2003-06-17 Frank Ch. Eigler <fche@redhat.com> - - Based on patch from Eyal Lebedinsky <eyal@eyal.emu.id.au>: - * mf-hooks.c (__mf_pthread_spawner): Register thread errno. - (time, strerror, fopen, fopen64, fclose, fread): New hooks. - (fwrite, fgetc, fgets, getc, gets, ungetc, fputc): New hooks. - (fputs, putc, puts, clearerr, feof, ferror, fileno): New hooks. - (printf, fprintf, sprintf, snprintf, vprintf, vfprintf): New hooks. - (vsprintf, vsnprintf, access, remove, fflush, fseek): New hooks. - (fseeko64, ftell, ftello64, rewind, fgetpos, fsetpos): New hooks. - (stat, stat64, fstat, lstat, mkfifo, setvbuf, setbuf): New hooks. - (setvbuf, opendir, closedir, readdir, recv, recvfrom): New hooks. - (recvmsg, send, sendto, sendmsg, setsockopt, getsockopt): New hooks. - (accept, bind, connect, gethostname, sethostname): New hooks. - (gethostbyname, wait, waitpid, popen, pclose, execve): New hooks. - (execv, execvp, system, dlopen, dlclose, dlerror, dlsym): New hooks. - (semop, semctl, shmctl, shmat, shmdt): New hooks. - * mf-runtime.h.in: Corresponding changes. - * mf-runtime.c (__mf_ini): Register stdio objects. Use STATIC type. - (opts) Rename heur_argv_environ to heur_std_data. - (__mf_wrap_main): Use STATIC type for argv/environ strings. - * Makefile.am: Corresponding changes. - * Makefile.in: Regenerated. - -2003-06-11 Frank Ch. Eigler <fche@redhat.com> - - * mf-heuristics.c (__mf_heuristic_check): Disable stack_bounds - heuristic for threaded case, and for non-x86-linux targets. - * mf-hooks.c (__mf_0fn_calloc): Provide a working dummy implementation - for use during pre-main() program startup. - (__mf_0fn_*): Make these functions non-static. - * mf-impl.h (DECLARE, CALL_REAL): Support calls to 0fn backup hook - functions. - * mf-runtime.c (__mf_state): Set initial state to "starting". - (__mf_resolve_single_dynamic): Tolerate repeated calls for same symbol. - (__wrap_main): New function to register argv[] and environ[] strings. - (__mf_ini): Call it. - (*): In all trace functions, use "%p" as formatter for uintptr_t. - - * testsuite/libmudflap.c/pass38-frag.c: New test case. - * testsuite/libmudflap.cth/pass37-frag.c: Improved test. - - * acinclude.m4: Add comments with aoliva's concerns about x86_64 - pass_all. - * aclocal.m4, configure: Regenerated. - -2003-06-04 Frank Ch. Eigler <fche@redhat.com> - - * acinclude.m4: Correct typo in AC_MSG_CHECKING. - * aclocal.m4, configure: Regenerated. - -2003-06-03 Frank Ch. Eigler <fche@redhat.com> - - * acinclude.m4: Force "pass_all" deplibs_check_method for libtool - for x86_64 target. Disable caching for this value. - * aclocal.m4, configure: Regenerated. - -2003-06-02 Frank Ch. Eigler <fche@redhat.com> - - * testsuite/libmudflap.c/pass38-frag.c: Deleted. -fwritable-strings - is about to become deprecated, and its present handling bugs are - unworthy of fixing. - -2003-05-30 Frank Ch. Eigler <fche@redhat.com> - - * testsuite/libmudflap.c/pass38-frag.c: New test for - -fwritable-strings. - -2003-05-23 Frank Ch. Eigler <fche@redhat.com> - - * mf-runtime.c (__mf_sigusr1_handle): Call unlocked variant of - __mf_report, asserting reentrant calling context. - -2003-05-23 Frank Ch. Eigler <fche@redhat.com> - - * mf-hooks.c (realloc): Correct reentrancy logic. - * testsuite/libmudflap.c/hook-allocstuff.c: New test case. - -2003-05-20 Frank Ch. Eigler <fche@redhat.com> - - * mf-hooks.c (LIBMUDFLAPTH_THREADS_MAX): New macro, replaces - PTHREAD_THREADS_MAX. Update users. - * mf-runtime.c (__mf_usage): Print [active] instead of [default] - for active options. - * testsuite/Makefile.am (all-local): Prime dejagnu site.exp file - with libmudflapth presence indicator. - * testsuite/Makefile.in: Regenerated. - -2003-05-16 Frank Ch. Eigler <fche@redhat.com> - - * Makefile.am (AM_CFLAGS): Remove "-ansi". - * configure.in: Remove silly no-pthreads => no-shared logic. - * Makefile.in, configure: Regenerated. - * mf-heuristics.c (__mf_heuristic_check): Remove reentrancy hacks. - * mf-hooks.c (BEGIN_PROTECT, END_PROTECT): Reorganize reentrancy - code. Count reentrancy events. - (all hook functions): Don't directly manipulate __mf_state variable. - Add TRACE calls to hook functions without them. - * mf-impl.h (LOCKTH): Try to count lock contention events. - (VERBOSE_TRACE, TRACE): Remove reentrancy hacks. - * mf-runtime.c (BEGIN_RECURSION_PROTECT, END_RECURSION_PROTECT): - Reorganize reentrancy code. - (external __mf_ entry points): Use RECURSION_PROTECT mechanism to - identify reentrancy with mutex holding times. - (internal __mfu_ entry points): Remove internal reentrancy code. - (__mf_init): Use ordinary locked calls. - (__mfu_report): Print the two new counts. - * testsuite/lib/libmudflap.exp: Filter out junk ld/pthreads messages. - * testsuite/libmudfap.cth/cthfrags.exp: New test driver. - * testsuite/libmudflap.cth/pass37-frag.c: New pthreads test. - * testsuite/libmudfap.cth/cfrags.exp: Adapt to new libmudflap - option defaults. - -2003-05-09 Frank Ch. Eigler <fche@redhat.com> - - * configure.in: Add pthread support, plus glibc and porting hacks. - * Makefile.am (LIBMUDFLAPTH): New conditional, to build -lmudflapth - from objects built into ./pth/. - * mf-runtime.c (__mfu_watch,register,...): Fork new unlocked - functions for internal entry points. Update callers to pick - locked vs. unlocked variants. - (__mf_resolve_single_dynamic): Extend to support symbol versioning - info coming in from a static data structure. - (*): Reorder miscellaneous declarations to group data vs functions. - (__mf_set_default_options): Simplify. - (__mf_usage): Mention threading status of host executable. - * mf-impl.h: Move max/min decls here. Reorganize __mf_dynamic - decls to match above. - (LOCKTH, UNLOCKTH): New macros for Big Libmudflap Lock management. - * mf-heuristics.c: Choose between locked/unlocked calls. Add - some lock/unlock markers. Remove some unused code. - * mf-hooks: Ditto. - (pthread_create): New hook function. - (__mf_pthread_cleanup, _spawner): New helper functions. - * configure. aclocal.m4, config.h.in, Makefile.in: Regenerated. - -2003-05-02 Frank Ch. Eigler <fche@redhat.com> - - * testsuite/libmudflap.c/fail27-frag.c: Add more volatile flags. - -2002-04-28 Frank Ch. Eigler <fche@redhat.com> - - * Makefile.am (HOOKOBJS): Add *time related hooks. - * configure.in: Look for pthreads.h header. - * mf-hooks.c (asctime, ctime, gmtime, localtime): New wrappers. - * mf-runtime.c: Begin sketching some pthreads support. - (__mf_usage): Check for -lpthread presence. - (__mf_unregister): Confirm matching unregistration base. - (__mf_find_objects_rec): Reduce unnecessary recursion. - * mf-runtime.h.in: Add "nothrow" attribute to functions. Add - #defines for new hook functions. - * mf-impl.h: Corresponding changes. - * config.h.in, configure, Makefile.in: Regenerated. - -2002-04-27 Diego Novillo <dnovillo@redhat.com> - - * testsuite/libmudflap.c/fail1-frag.c: Add volatile - modifiers to prevent being optimized away. - * testsuite/libmudflap.c/fail10-frag.c: Likewise. - * testsuite/libmudflap.c/fail13-frag.c: Likewise. - * testsuite/libmudflap.c/fail14-frag.c: Likewise. - * testsuite/libmudflap.c/fail15-frag.c: Likewise. - * testsuite/libmudflap.c/fail2-frag.c: Likewise. - * testsuite/libmudflap.c/fail20-frag.c: Likewise. - * testsuite/libmudflap.c/fail3-frag.c: Likewise. - -2003-04-15 Frank Ch. Eigler <fche@redhat.com> - - * Makefile.am (libmudflap_la_LIBADD): Remove -ldl. - * configure.in: Look for uintptr_t and -ldl on target. - * mf-runtime.h.in: Adjust uintptr_t declaration logic. - * Makefile.in, aclocal.m4, configure, config.h.in: Regenerated. - * testsuite/Makefile.in: Regenerated. - * mf-runtime.c (__mf_sigusr1_respond): Tweak declaration and calls - for better C compliance. - -2003-04-15 Frank Ch. Eigler <fche@redhat.com> - - * mf-hooks.c (MF_VALIDATE_EXTENT): Remove unnecessary reentrancy - prevention code. - * mf-runtime.c (__mf_set_default_options): Turn off - check-initialization. - (__mf_describe_object): Shorten description. - * testsuite/libmudflap.c/fail25-frag.c: Turn on check-initialization. - -2003-04-07 Frank Ch. Eigler <fche@redhat.com> - - * mf-hooks.c (__mf_0fn_mmap): Correct return value, as per <rth>. - -2003-04-02 Frank Ch. Eigler <fche@redhat.com> - - * mf-hooks.c (BEGIN_PROTECT): Handle startup-time reentrant - calls specially. - (__mf_0fn_malloc ... _munmap): New dummy backup calls. - * mf-impl.h (CALL_BACKUP): New macros. - * mf-runtime.c (__mf_init): Tweak __mf_state during startup. - -2003-03-31 Frank Ch. Eigler <fche@redhat.com> - - * Makefile.am (AM_CFLAGS): Remove optimization flags. - (HOOKOBJS): Remove dlopen hook. - (libmudflap_la_LIBADD): Add -ldl. - * mf-hooks.c (dlopen): Remove hook. - * mf-impl.h (__mf_dynamic): Ditto. - * mf-runtime.c (__mf_resolve_dynamics): Ditto. - * Makefile.in: Regenerated. - -2003-03-28 Frank Ch. Eigler <fche@redhat.com> - - * configure.in: Check for target gettimeofday, signal, some headers. - * mf-impl.h (__mf_opts): Add new "sigusr1_report" field. Comment - out inop multi_threaded field. - * mf-runtime.c (options): Handle new "-sigusr1-report" option. - (__mf_set_options): Correct handling of "-help". - (__mf_sigusr1_respond): New function to manage SIGUSR1 response. - (__mf_check, __mf_register, __mf_unregister): Call it. - (__mf_insert_new_object, __mf_unregister): Respect HAVE_GETTIMEOFDAY. - (__mf_report_leaks): Make callable - (__mf_tree_analyze): Traverse in-order. Accumulate address bit - distribution statistics. - (__mf_adapt_cache): Rewrite shift guessing logic based on address - bit distributions. - * config.h.in, configure: Regenerated. - * testsuite/libmudflap.c/fail27-frag.c: New test. - * testsuite/libmudflap.c/pass36-frag.c: New test. - -2003-03-11 Frank Ch. Eigler <fche@redhat.com> - - * mf-runtime.h.in: Tweak. - * Makefile.am, configure.in: Tweak mf-runtime.h generation some more. - Don't use intermediate files nor AC_OUTPUT-time postprocessing. - * Makefile.in, testsuite/Makefile.in, configure: Regenerated. - -2003-03-10 Frank Ch. Eigler <fche@redhat.com> - - * configure.in: Tweak generation of mf-runtime.h some more. It - needs to work from both config.status and configure. - * configure: Regenerated. - -2003-03-10 Frank Ch. Eigler <fche@redhat.com> - - * Makefile.am: Reorganize hook file building. Add auto dependencies. - * configure.in: Tweak generation of mf-runtime.h. - * mf-runtime.h.in: Add new __MF_TYPE_HEAP_I. - * mf-hooks.c (*): Adapt to initialized-heap object type. - * mf-impl.h: Tweak cemetary boundaries. - * mf-runtime.c (__mf_check): Adapt to new initialized-heap object - type. - (__mf_insert_new_object, __mf_register, __mf_unregister): Ditto. - (__mf_describe_object, __mf_report_leaks, __mf_violation): Ditto. - * testsuite/lib/libmudflap.exp (includes): Include build tree. - * testsuite/libmudflap.c/pass{26,5}: Further adapt to initialization - checking. - * testsuite/.../fail{25,26}-frag.c: New tests. - * testsuite/.../pass{32,33,34,35}-frag.c: New tests. - * Makefile.in, configure: Regenerated. - -2003-03-05 Frank Ch. Eigler <fche@redhat.com> - - * mf-runtime.c (__mf_set_default_options): Turn on initialization - checking by default. - (__mf_insert_new_object): As a temporary hack, assume that new - objects registered on the stack start out initialized. - * testsuite/libmudflap.c/fail9,pass23,pass[6789]-*: Initialize - heap objects by hand. - -2003-03-05 Frank Ch. Eigler <fche@redhat.com> - - Switch to macro-style hooks for str*/mem*/b* functions. - * mf-runtime.h.in (__MF_TYPE_*): Moved some internal values out. - (mem*, str*, b*): Added macro-style hooks for _MUDFLAP case. - * mf-runtime.c: #include config.h to enable glibc backtraces again. - (__mf_set_default_options): Turn off heur_proc_map. - (*): Adapt to to macro-style hook functions. - (__mf_object_dead_head, __mf_object_cemetary): Correct bounds. - (__mf_check, __mf_register, __mf_unregister): Tweak tracing message. - (__mf_violation): Handle __MF_VIOL_WATCH. - * mf-impl.h (__MF_TYPE_*): Moved these internal values here. - (__mf_dynamic): Removed mem*/str*/b* functions. - (TRACE, VERBOSE_TRACE): Add reentrancy locking. - (WRAPPER2): New macro for macro-style hooks. - * mf-hooks.c: Convert mem*/str*/b* functions to simpler - macro-style hooks. - (BEGIN_PROTECT): Tweak tracing vs reentrancy-lock ordering. - * mf-heuristics.c: Adapt to macro-style hook functions. - Correct some comments. - * testsuite/lib/mfdg.exp (dg-test): Simplify result string for - output pattern tests. - * testsuite/libmudflap.c/fail[89]-frag.c: Elaborate output test. - * testsuite/libmudflap.c++/c++frags.exp: Enable non-static tests. - -2003-02-28 Frank Ch. Eigler <fche@redhat.com> - - * testsuite/libmudflap.c/fail23-frag.c, pass30-frag.c: New tests - for global array registration. - * testsuite/libmudflap.c++/fail24-frag.cxx, pass31-frag.cxx: Ditto. - * testsuite/libmudflap.c++/c++frags.exp: Tweak -static multilib hack. - -2003-02-27 Frank Ch. Eigler <fche@redhat.com> - - * Makefile.am: Add gross make bug workarounds. Tweaked - SUBDIRS and AM_CFLAGS. - * Makefile.in: Regenerated. - -2003-02-26 Frank Ch. Eigler <fche@redhat.com> - - Switch to dejagnu. - * configure.in (AC_PROG_CXX): Don't look for C++ any more. - * Makefile.am (TESTS): Remove simple automake testing. - * configure, Makefile.in: Regenerated. - (SUBDIRS): Include new testsuite/ directory. - * tests/*: Removed all files; moved bulk under: - * testsuite/*: New subdirectory tree. - * testsuite/libmudflap.c/cfrags.exp: New file, C test driver. - * testsuite/libmudflap.c++/c++frags.exp: New file, C++ test driver. - * testsuite/lib/libmudflap.exp: New file, derived from libstdc++. - * testsuite/lib/mfdg.exp: New file, derived from dejagnu. - * testsuite/config/default.exp: New file. - * testsuite/Makefile.am, Makefile.in: New files. - -2003-01-29 Frank Ch. Eigler <fche@redhat.com> - - * Makefile.am (TESTS_ENVIRONMENT): Remove redundant "-mode-check". - (TESTS): Add fail22 and pass29 tests. - * mf-runtime.h.in: Change API to take void*/size_t region parameters. - Add new access-type parameter for __mf_check. Move __MF_VIOL* out. - * mf-impl.h: Corresponding changes. Update CLAMP* macros for void* - values. Move __MF_VIOL* here. - * mf-runtime.c (*): Adapt to void*/size_t API in mf-runtime.h. - (check_initialization): New field in __mf_opts. Default off. - (read_count,write_count): New fields in __mf_object. - (__mf_check): Implement basic initialization checking. - (__mf_insert_new_object): Assume STATIC|GUESS regions are initialized. - (__mf_describe_object): Print new fields. - (__mf_violation): Identify check/read vs. check/write in messages. - * test/pass29-frag.c, test/fail22-frag.c: Basic tests for new - "-check-initialized" mudflap option. - * test/pass25-frag.c, test/fail21-frag.c: Adapt to API changes. - * mf-hooks.c (MF_VALIDATE_EXTENT): Add new access-type parameter. - Drop __FILE__/__LINE__ hack. Update callers. - (*): Adapt to new mf-runtime.h API. - * Makefile.in: regenerated. - -2003-01-24 Frank Ch. Eigler <fche@redhat.com> - - * configure.in: Build mf-runtime.h a more proper way. - * mf-hooks.c (strdup, strndup): Correct reentrancy logic. - * mf-runtime.c (verbose_violations): Turn on by default. - * mf-runtime.h.in: Remove some miscellaneous stuff ... - * mf-impl.h: ... and move it here. - * configure: Regenerated. - -2003-01-22 Frank Ch. Eigler <fche@redhat.com> - - * configure.in: Look for C++ compiler. - * test/*-frag.c, mf-driver.c: Reformatted with GNU indent and - fixed type warnings when built with C++. - * test/pass27-frag.cxx, pass28-frag.cxx: New C++ tests. - * Makefile.am (TESTS): Run them. - (*) Add new rules for building and running C++ tests. - (TESTFLAGS): Set new default to avoid libstdc++-v3 shlib issues. - * mf-runtime.h.in: Protect with extern "C". - * Makefile, configure: Regenerated. - -2003-01-06 Frank Ch. Eigler <fche@redhat.com> - - Portability improvements. - * configure.in: Look for glibc backtrace headers/functions. - * mf-hooks.c: Don't include <execinfo.h> any more. - * mf-runtime.c (__mf_set_options): Call more stdlib functions - via CALL_REAL. - (__mf_backtrace): Provide alternate baby implementation in - absence of glibc. - * test/mf-driver.c: Portability tweaks. - * acinclude.m4: New file, containing top level libtool.m4. - * aclocal.m4, configure, Makefile.in, config.h.in: Regenerated. - -2002-12-19 Frank Ch. Eigler <fche@redhat.com> - - * mf-runtime.h.in (HAVE_UINTPTR_T): Define unconditionally. - -2002-11-08 Frank Ch. Eigler <fche@redhat.com> - - * mf-runtime.c (options): Add new "wipe-heap", "wipe-stack" - options. - (__mf_unregister): Implement stack/heap object wiping. - (__mf_set_options): Renamed from __mf_process_opts. - (__mf_uncache_object): Change arg type, correct callers. - * mf-impl.h: Corresponding changes. - * mf-hooks.c (realloc): Save/restore heap-wiping flag. - * mf-runtime.h.in (__mf_set_options): Extend public API. - * test/pass26-frag.c: New test for stack wiping. - * Makefile.am (TESTS): Run it. - * Makefile.in: Regenerated. - -2002-11-07 Frank Ch. Eigler <fche@redhat.com> - - * mf-runtime.h.in (__mf_watch, __mf_unwatch): Extend public API. - * mf-runtime.c (__mf_object_t): Add watching_p field. - (__mf_watch_or_not): New function to implement - object watch flagging. - (__mf_watch, __mf_unwatch): New wrappers for above. - (__mf_check, __mf_describe_object): Handle objects with watching_p. - (__mf_count_violation): Enlarge array. - (__mf_uncache_object): Renamed from __mf_remove_old_object. Don't - unlink object. Clear cache properly. - (__mf_unregister): Unlink object explicitly before uncaching. - * test/fail21-frag.c, pass25-frag.c: New tests. - * Makefile.in, aclocal.m4: Regenerated. - -2002-11-05 Frank Ch. Eigler <fche@redhat.com> - - * test/fail20-frag.c: New test for NULL pointer dereferencing. - * Makefile.am (TESTS): Add it. - * test/pass-stratcliff.c: Add decls of stpcpy. - * configure.in: Test for <stdint.h>. Generate mf-runtime.h in - build tree from config.h and new file mf-runtime.h.in. - * mf-runtime.h.in: Renamed from mf-runtime.h. Tweak uintptr_t decl. - * Makefile.in, configure, config.h.in: Regenerated. - * mf-hooks.c: Add #undef for wrapped glibc str*/mem* macros. - * mf-runtime.c (options, __mf_set_default_options): Support new - default "abbreviate" option. - (__mf_object.description_epoch): New field. - (__mf_describe_object): Conditionally abbreviate objects already - displayed in current epoch. Accept NULL input to increment epoch. - (__mf_fini, __mf_ini): Reset description epoch. - (__mf_register, __mf_unregister, __mf_adapt_cache, __mf_init): Ensure - that NULL pointer slot in lookup cache is invalidated. Register a - NOACCESS region around NULL. - * mf-impl.h: Corresponding changes. - -2002-10-16 Frank Ch. Eigler <fche@redhat.com> - - * test/fail19-frag.c, pass24-frag.c, pass-stratcliff.c: New tests. - * Makefile.am: Run them. Install mf-runtime.h. - * Makefile.in: Regenerated. - * mf-hooks.c: Add some markers for more missing functions. - * mf-runtime.c (__mf_adapt_cache): Experiment with a utilization-based - statistic to tune tune cache size (mask). - -2002-10-01 Frank Ch. Eigler <fche@redhat.com> - - * test/pass23-frag.c: New test for bit_field_ref expressions. - * Makefile.am, Makefile.in: Add new test. - * mf-hooks.c (mmap, munmap): Rewrite to track individual pages. - (MF_VALIDATE_EXTENT): Accept zero-size mem/str operations. - * mf-runtime.c (__mf_init): Register errno global. - (__mf_find_object): Removed function. - (__mf_check): Rewrite logic to support accesses across some - contiguous but distinctly registered objects. - (__mf_remove_old_object): Tolerate cache entries that span - contiguous objects. - -2002-09-30 Frank Ch. Eigler <fche@redhat.com> - - * test/pass21-frag.c, pass22-frag.c: New tests: alloca, bitfields. - * Makefile.am, Makefile.in: Run new tests. - * mf-hooks.c (alloca): Correct stack direction logic. - -2002-09-26 Frank Ch. Eigler <fche@redhat.com> - - * mf-impl.h (adapt_cache): New option. - * mf-runtime.c (__mf_set_default_options): Set its default value. - Tweak the tree_aging parameter down. - (__mf_check): Maintain separate counter for cache-adaptation. - (__mf_tree_analyze): New function to collect object tree stats. - (__mf_adapt_cache): New function to automate cache parameters. - -2002-09-24 Frank Ch. Eigler <fche@redhat.com> - - * mf-heuristics.c (__init_misc, __mf_heuristic_check): Add - hypothetical #if-0'd argv/envp region registration. - * mf-runtime.c (__mf_init): Add kludged form of above. - (*) Add "heur_argv_environ" flag, default on, to govern this. - * mf-impl.h: Corresponding changes. - -2002-09-20 Frank Ch. Eigler <fche@redhat.com> - - * test/fail18-frag.c: New test file for NOACCESS regions. - * Makefile.am (TESTS): Add new test. - * Makefile.in: Regenerated. - - * mf-heuristics.c (__mf_heuristics_check): Correct deja_vu logic. - * mf-impl.h (tree_aging): Add new mudflap_option, default 1000000. - (optimize_object_tree): Remove unused mudflap_option. - * mf-runtime.h (__MF_TYPE_NOACCESS): New region type. Add printing - support throughout. Use .._MAX_CEM for cemetary upper bound. - * mf-runtime.c (__mf_init): Register __mf_* globals as NOACCESS - regions. - (__mf_object): Add new liveness field for use by tree aging. - (__mf_check): Trigger tree aging when needed. - (__mf_age_tree): New function to decay liveness field. - (__mf_find_objects_rec): Use liveness field to rotate tree. - (__mf_insert_new_object): Only provide backtrace for HEAP objects. - (__mf_unregister): Ditto. - (__mf_register): Tweak duplicate-static message. - (__mf_violation: Tweak nearby-object counter printing. - -2002-09-16 Frank Ch. Eigler <fche@redhat.com> - - * test/pass20-frag.c: New test file. - * Makefile.am (TESTS): Reorganize. Add pass20 test. - * Makefile.in: Regenerated. - - * mf-impl.h (TRACE_IN, TRACE_OUT): Remove macros. Update callers. - * mf-hooks.c (BEGIN_PROTECT): Add hook tracing here. - * mf-heuristic.c (__mf_heuristic_check): Track seen /proc/self/map - entries to avoid repeat registration. - * mf-runtime.c (__mf_object_cemetary): Don't bother bury GUESS regions. - (__mf_register, __mf_unregister): Rewrite GUESS handling logic. - -2002-09-09 Frank Ch. Eigler <fche@redhat.com> - - * Makefile.am: Create test sources with #include, not cat>>. - * Makefile.in: Regenerated. - * test/buildtest.sh: Removed. - * test/driver.c (abort_handler, main): Be quiet. - -2002-09-06 Frank Ch. Eigler <fche@redhat.com> - - * test/pass18-frag.c, pass19-frag.c: New tests. - * Makefile.am (check): Run them. Rebuild test programs each time. - * Makefile.in: Regenerated. - -2002-09-06 Frank Ch. Eigler <fche@redhat.com> - - * mf-runtime.c (__mf_register): Correct SEGV-inducing error in - overlapping object search. - (__mf_violation): Likewise for nearby objects. - Improve nearby-object listing. - - cleanup: - * mf-runtime.c, mf-hooks.c: Remove "{{{"/"}}}" folding marks. - * mf-heuristics.c (__mf_heuristic_check): Tweak message. - -2002-09-03 Frank Ch. Eigler <fche@redhat.com> - - alloca support: - * Makefile.am (AM_CFLAGS): New definition of needed settings. - (HOOKOBJS): Add alloca-hook.o. - * mf-hooks.c (alloca): New function to implement alloca in libiberty - style. - * mf-runtime.c (__mf_report): Call alloca(0) to flush remaining blocks. - (__mf_backtrace): Reimplement without using alloca. - * Makefile.in: Regenerated. - - cleanup: - * mf-hooks.c: Use VERBOSE_TRACE throughout instead of fprintf(stderr). - Correct signedness bugs in length-tracking variables. - * mf-impl.h: Make options unsigned. - (CALL_WRAP): New macro to parallel CALL_REAL(). - (DECLARE): Remove erroneous ";" at end. - * mf-runtime.c, mf-hooks.c, mf-heuristics.c: Replace remaining %p - formatting specs with %08lx. Correct several compiler warnings. - -2002-08-28 Frank Ch. Eigler <fche@redhat.com> - - * mf-runtime.c (__mf_violation): Try harder to locate nearby objects. - -2002-08-27 Frank Ch. Eigler <fche@redhat.com> - - libmudflap hook breakup: - * Makefile.am (TESTS_ENVIRONMENT): Add ../../gcc to LD_LIBRARY_PATH - for libgcc_s. - (TESTS): Make dependent on libmudflap. - (HOOKOBJS): Break up mf-hooks.o into many little hook objects, - compiled from segments of mf-hooks.c. - * mf-hooks.c: Corresponding changes: wrap each function in - #ifdef/#endif. - * Makefile.in: Regenerated. - - Heuristics reorganization: - * mf-heuristics.c (__mf_register_ro_sections, __mf_init_heuristics): - Remove these functions. Update callers. - (__mf_heuristic_check): Incorporate all the various heuristics. - Encode cacheability/retry judgement into trinary return value. - Separate start-end logic into a separate fallback heuristic. Only - register relevant /proc/self/map segments. - * mf-impl.h: Corresponding changes. - * mf-runtime.c (__mf_check): Reorganize heuristics fallback logic. - (__mf_init): Don't call __mf_init_heuristics. - - Tracing cleanup: - * mf-heuristics.c, mf-runtime.c: Use new MUDFLAP_OPTION - "-verbose-trace" to emit all tracing messages other than those of - basic public api. Eliminate some duplicate/excessive messages. - * mf-runtime.h: Corresponding changes. - -2002-08-27 Graydon Hoare <graydon@redhat.com> - - * mf-impl.h (WRAPPER): Change to create linker aliases for __wrap - and __real when compiled with -DPIC. - * mf-hooks.c (WRAPPER): Change all uses of WRAPPER macro slightly. - * Makefile.am (AUTOMAKE_OPTIONS): Fix LD_LIBRARY_PATH for tests. - * Makefile.in: Regenerate. - -2002-08-26 Graydon Hoare <graydon@redhat.com> - - * mf-impl.h: New file, private implementation header. - * mf-runtime.h: Reorganize a bit. - (CLAMPSZ): Fix arithmetic. - (__MF_CACHE_MISS_P): Fix arithmetic. - * mf-runtime.c: Reorganize a bit. - (__mf_dynamic): New structure. - (resolve_single_dynamic): New function. - (__mf_resolve_dynamics): New function. - (__mf_init): Initialize dynamic wrappers. - * mf-hooks.c: Macro-ize __real calls. - Clamp various bits of arithmetic. - Add explicit __mf_check call contexts. - * Makefile.am: Add dependencies on mf-impl.h - * Makefile.in: Regenerate. - * configure.in: Comment out shared override. - * configure: Regenerate. - -2002-08-22 Graydon Hoare <graydon@redhat.com> - - * mf-runtime.c (__mf_process_opts): Sanity-check free_queue_length. - (__mf_check): Re-inialize and check heuristics before violation. - (__mf_register): Permit updating pure-guess regions. - * mf-hooks.c (__wrap_free): Correct some free queue logic. - (__wrap_dlopen): New wrapper function. - (__wrap_mmap): New wrapper function. - (__wrap_munmap): New wrapper function. - * mf-heuristics.c (__mf_register_ro_sections): Register *all* regions - which are not stack addresses. - (is_stack_address): New function. - (__mf_init_heuristics): Save and restore state, always initialize with - "starting" state. - -2002-08-21 Frank Ch. Eigler <fche@redhat.com> - - * mf-hooks.c (MF_VALIDATE_EXTENT): Rewrite to correct off-by-one - error. Pass location string. - (wrap_strcpy, wrap_strncpy): Remove extra %s in trace strings. - * mf-runtime.c (options): Add lc-mask, lc-shift options. - (__mf_process_opts): Apply some sanity checking for lc-mask. - (__mf_check, __mf_violation): Take new location-string argument. - Update callers to pass NULL if necessary. - (__mf_backtrace): New smart backtracer function. Calls replace - several ad-hoc blocks elsewhere. - (__mf_describe_object): Remove bad reentrancy test. Improve - tracing message. - * mf-runtime.h: Corresponding changes. Public/private markup. - (__MF_CACHE_MISS_P): New macro. - -2002-08-20 Graydon Hoare <graydon@redhat.com> - - * mf-runtime.h: New option: stack_bound (heuristic). - Move some macros out of implementation files. - * mf-runtime.c: New option string: -stack-bound. - Unify recursion protection with hooks. - Add more logging. - (__mf_check): Call __mf_heuristic_check. - (__mf_process_opts): Fix "no-" processing. - * mf-heuristics.c (__mf_heuristic_check): New function. - * mf-hooks.c: Much off-by-one fixing, recursion protection. - -2002-08-20 Frank Ch. Eigler <fche@redhat.com> - - Option parsing improvements, region splitting bug fixes: - * mf-heuristics.c (__mf_register_ro_sections): Add warned casts. - * mf-runtime.h (heur_proc_map): New libmudflap option. - * mf-runtime.c (__mf_set_default_options): Set it. - (__mf_usage): Print default values/status. - (__mf_process_opts): Support general "no-" option string prefix. - (__mf_init): Print __mf_usage on unknown-option error. - (__mf_register): Print trace message up front. - Correct region splitting logic for case where a subregion disappears. - Correct memory leak. - (__mf_violation): Make even basic message conditional on option. - - Build cleanup: - * Makefile.am (TESTS_ENVIRONMENT): Add -no-heur-proc-map. - (clean-local): New target. - (test/*x rules): Add -g CFLAGS. - (CFLAGS): Add -freorder-blocks. - (MFCONFIG_CFLAGS, INCLUDE): Remove unneeded settings. - * Makefile.in: Regenerated. - * Makefile, mf-config.h: Removed files. - -2002-08-16 Graydon Hoare <graydon@redhat.com> - - * mf-runtime.c (__mf_insert_new_object): Factor out of - __mf_register. - (__mf_remove_old_object): Factor out of __mf_unregister. - (__mf_register): Handle guessed regions, splitting - guesses when new registrations arrive. - (__mf_unregister): Do not unregister guesses. - * mf-runtime.h: Move convenience macros around, - declare new option fields. Add __MF_TYPE_GUESS. - * mf-hooks.c (__wrap_*alloc): Use crumple zones. - (__wrap_free): Call __real_free for deferred frees. - * Makefile.am: Add more tests, fix dependency. - * Makefile.in: Regenerate. - * test/pass[13..17]-frag.c: New testcases. - * test/fail[13..17]-frag.c: New testcases. - -2002-08-15 Graydon Hoare <graydon@redhat.com> - - * mf-heuristics.c: New file. - * mf-runtime.c (options): Add -trace-calls option. - (__mf_init): Call __mf_init_heuristics. - -2002-08-14 Graydon Hoare <graydon@redhat.com> - - * Makefile.am (TESTS): Add testsuite support. - * Makefile.in: Regenerate. - * test/mf-driver.c: New file. - * test/buildtest.sh: New file. - * test/passNN-frag.c: New testcases. - * test/failNN-frag.c: New testcases. - -2002-08-14 Graydon Hoare <graydon@redhat.com> - - * mf-hooks.c: Change __real_strlen() to __real_strlen()+1 when - verifying non-size-limited string extents. - -2002-08-14 Frank Ch. Eigler <fche@redhat.com> - - * mf-hooks.c: Make __wrap string* functions use __real_str[n]len - instead of plain str[n]len for internal checks. - * mf-runtime.c (__mf_violation): Print optional stack traceback. - -2002-08-14 Frank Ch. Eigler <fche@redhat.com> - - * mf-hooks.c: Remove #if-0 around hooks that are now ld-wrapped. - -2002-08-13 Graydon Hoare <graydon@redhat.com> - - * mf-runtime.c: Rework configuration to operate on - environment variable options rather than #defines - (__mf_violation): Add simple fork-a-gdb violaiton mode. - (__mf_init): Set static __mf_active_p flag on startup, - to inhibit mudflap wrap-based checking during crt0.s. - * mf-runtime.h: Declare options structure. - * mf-hooks.c: New wrappings for mem*, b*, str* - libc functions (temporarily #if 0-ed out). - -2002-08-12 Frank Ch. Eigler <fche@redhat.com> - - * Makefile.am, configure.in: New files. - * Makefile.in, Makefile, configure, config.h.in: New generated files. - * stamp-h.in, aclocal.m4: Ditto. - -2002-08-08 Frank Ch. Eigler <fche@redhat.com> - - * Makefile: New file. - * mf-config.h: New file: runtime configuration. - * mf-hooks.c: New file: interposed libc functions. - * mf-runtime.c: New file: bulk of runtime. - * mf-runtime.h: New file: public functions. diff --git a/libmudflap/Makefile.am b/libmudflap/Makefile.am deleted file mode 100644 index 40a70ae..0000000 --- a/libmudflap/Makefile.am +++ /dev/null @@ -1,97 +0,0 @@ -## Makefile for the toplevel directory of the mudflap library. -## -## Copyright (C) 2002-2013 Free Software Foundation, Inc. -## - -AUTOMAKE_OPTIONS = 1.8 foreign -ACLOCAL_AMFLAGS = -I .. -I ../config -MAINT_CHARSET = latin1 -SUBDIRS = testsuite - -# May be used by various substitution variables. -gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) - -SECTION_FLAGS = @SECTION_FLAGS@ -AM_CFLAGS = -Wall $(SECTION_FLAGS) - -if LIBMUDFLAPTH -libmudflapth = libmudflapth.la -else -libmudflapth = -endif - -toolexeclib_LTLIBRARIES = libmudflap.la $(libmudflapth) -target_noncanonical = @target_noncanonical@ -libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include -nobase_libsubinclude_HEADERS = mf-runtime.h - - -libmudflap_la_SOURCES = \ - mf-runtime.c \ - mf-heuristics.c \ - mf-hooks1.c \ - mf-hooks2.c -libmudflap_la_LIBADD = -libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD) -libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` - - -libmudflapth_la_SOURCES = \ - mf-runtime.c \ - mf-heuristics.c \ - mf-hooks1.c \ - mf-hooks2.c \ - mf-hooks3.c -libmudflapth_la_CFLAGS = -DLIBMUDFLAPTH -libmudflapth_la_LIBADD = -libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD) -libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` - - -# XXX hack alert -# From libffi/Makefile.am - -# Work around what appears to be a GNU make bug handling MAKEFLAGS -# values defined in terms of make variables, as is the case for CC and -# friends when we are called from the top level Makefile. -AM_MAKEFLAGS = \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ - "CFLAGS=$(CFLAGS)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ - "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "JC1FLAGS=$(JC1FLAGS)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ - "MAKE=$(MAKE)" \ - "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ - "PICFLAG=$(PICFLAG)" \ - "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ - "SHELL=$(SHELL)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "libdir=$(libdir)" \ - "prefix=$(prefix)" \ - "includedir=$(includedir)" \ - "AR=$(AR)" \ - "AS=$(AS)" \ - "CC=$(CC)" \ - "CXX=$(CXX)" \ - "LD=$(LD)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "NM=$(NM)" \ - "PICFLAG=$(PICFLAG)" \ - "RANLIB=$(RANLIB)" \ - "DESTDIR=$(DESTDIR)" - -MAKEOVERRIDES= - -## ################################################################ - diff --git a/libmudflap/Makefile.in b/libmudflap/Makefile.in deleted file mode 100644 index ae342cf8..0000000 --- a/libmudflap/Makefile.in +++ /dev/null @@ -1,822 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = . -DIST_COMMON = ChangeLog $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/configure $(am__configure_deps) \ - $(srcdir)/config.h.in $(srcdir)/../mkinstalldirs \ - $(srcdir)/../depcomp $(nobase_libsubinclude_HEADERS) -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ - $(top_srcdir)/../config/depstand.m4 \ - $(top_srcdir)/../config/enable.m4 \ - $(top_srcdir)/../config/lead-dot.m4 \ - $(top_srcdir)/../config/multi.m4 \ - $(top_srcdir)/../config/override.m4 \ - $(top_srcdir)/../config/tls.m4 $(top_srcdir)/../ltoptions.m4 \ - $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ - $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/../libtool.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \ - "$(DESTDIR)$(libsubincludedir)" -LTLIBRARIES = $(toolexeclib_LTLIBRARIES) -am_libmudflap_la_OBJECTS = mf-runtime.lo mf-heuristics.lo mf-hooks1.lo \ - mf-hooks2.lo -libmudflap_la_OBJECTS = $(am_libmudflap_la_OBJECTS) -libmudflap_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libmudflap_la_LDFLAGS) $(LDFLAGS) -o $@ -am_libmudflapth_la_OBJECTS = libmudflapth_la-mf-runtime.lo \ - libmudflapth_la-mf-heuristics.lo libmudflapth_la-mf-hooks1.lo \ - libmudflapth_la-mf-hooks2.lo libmudflapth_la-mf-hooks3.lo -libmudflapth_la_OBJECTS = $(am_libmudflapth_la_OBJECTS) -libmudflapth_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libmudflapth_la_CFLAGS) \ - $(CFLAGS) $(libmudflapth_la_LDFLAGS) $(LDFLAGS) -o $@ -@LIBMUDFLAPTH_TRUE@am_libmudflapth_la_rpath = -rpath $(toolexeclibdir) -DEFAULT_INCLUDES = -I.@am__isrc@ -depcomp = $(SHELL) $(top_srcdir)/../depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libmudflap_la_SOURCES) $(libmudflapth_la_SOURCES) -MULTISRCTOP = -MULTIBUILDTOP = -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -HEADERS = $(nobase_libsubinclude_HEADERS) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MF_HAVE_STDINT_H = @MF_HAVE_STDINT_H@ -MF_HAVE_UINTPTR_T = @MF_HAVE_UINTPTR_T@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SECTION_FLAGS = @SECTION_FLAGS@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_libmudflapth = @build_libmudflapth@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -multi_basedir = @multi_basedir@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_noncanonical = @target_noncanonical@ -target_os = @target_os@ -target_vendor = @target_vendor@ -toolexecdir = @toolexecdir@ -toolexeclibdir = @toolexeclibdir@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.8 foreign -ACLOCAL_AMFLAGS = -I .. -I ../config -MAINT_CHARSET = latin1 -SUBDIRS = testsuite - -# May be used by various substitution variables. -gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) -AM_CFLAGS = -Wall $(SECTION_FLAGS) -@LIBMUDFLAPTH_FALSE@libmudflapth = -@LIBMUDFLAPTH_TRUE@libmudflapth = libmudflapth.la -toolexeclib_LTLIBRARIES = libmudflap.la $(libmudflapth) -libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include -nobase_libsubinclude_HEADERS = mf-runtime.h -libmudflap_la_SOURCES = \ - mf-runtime.c \ - mf-heuristics.c \ - mf-hooks1.c \ - mf-hooks2.c - -libmudflap_la_LIBADD = -libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD) -libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -libmudflapth_la_SOURCES = \ - mf-runtime.c \ - mf-heuristics.c \ - mf-hooks1.c \ - mf-hooks2.c \ - mf-hooks3.c - -libmudflapth_la_CFLAGS = -DLIBMUDFLAPTH -libmudflapth_la_LIBADD = -libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD) -libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` - -# XXX hack alert -# From libffi/Makefile.am - -# Work around what appears to be a GNU make bug handling MAKEFLAGS -# values defined in terms of make variables, as is the case for CC and -# friends when we are called from the top level Makefile. -AM_MAKEFLAGS = \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ - "CFLAGS=$(CFLAGS)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ - "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "JC1FLAGS=$(JC1FLAGS)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ - "MAKE=$(MAKE)" \ - "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ - "PICFLAG=$(PICFLAG)" \ - "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ - "SHELL=$(SHELL)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "libdir=$(libdir)" \ - "prefix=$(prefix)" \ - "includedir=$(includedir)" \ - "AR=$(AR)" \ - "AS=$(AS)" \ - "CC=$(CC)" \ - "CXX=$(CXX)" \ - "LD=$(LD)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "NM=$(NM)" \ - "PICFLAG=$(PICFLAG)" \ - "RANLIB=$(RANLIB)" \ - "DESTDIR=$(DESTDIR)" - -MAKEOVERRIDES = -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -am--refresh: - @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ - else :; fi - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(toolexeclibdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" - @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \ - } - -uninstall-toolexeclibLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \ - done - -clean-toolexeclibLTLIBRARIES: - -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES) - @list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libmudflap.la: $(libmudflap_la_OBJECTS) $(libmudflap_la_DEPENDENCIES) - $(libmudflap_la_LINK) -rpath $(toolexeclibdir) $(libmudflap_la_OBJECTS) $(libmudflap_la_LIBADD) $(LIBS) -libmudflapth.la: $(libmudflapth_la_OBJECTS) $(libmudflapth_la_DEPENDENCIES) - $(libmudflapth_la_LINK) $(am_libmudflapth_la_rpath) $(libmudflapth_la_OBJECTS) $(libmudflapth_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmudflapth_la-mf-heuristics.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmudflapth_la-mf-hooks1.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmudflapth_la-mf-hooks2.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmudflapth_la-mf-hooks3.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmudflapth_la-mf-runtime.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mf-heuristics.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mf-hooks1.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mf-hooks2.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mf-runtime.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -libmudflapth_la-mf-runtime.lo: mf-runtime.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmudflapth_la_CFLAGS) $(CFLAGS) -MT libmudflapth_la-mf-runtime.lo -MD -MP -MF $(DEPDIR)/libmudflapth_la-mf-runtime.Tpo -c -o libmudflapth_la-mf-runtime.lo `test -f 'mf-runtime.c' || echo '$(srcdir)/'`mf-runtime.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libmudflapth_la-mf-runtime.Tpo $(DEPDIR)/libmudflapth_la-mf-runtime.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mf-runtime.c' object='libmudflapth_la-mf-runtime.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmudflapth_la_CFLAGS) $(CFLAGS) -c -o libmudflapth_la-mf-runtime.lo `test -f 'mf-runtime.c' || echo '$(srcdir)/'`mf-runtime.c - -libmudflapth_la-mf-heuristics.lo: mf-heuristics.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmudflapth_la_CFLAGS) $(CFLAGS) -MT libmudflapth_la-mf-heuristics.lo -MD -MP -MF $(DEPDIR)/libmudflapth_la-mf-heuristics.Tpo -c -o libmudflapth_la-mf-heuristics.lo `test -f 'mf-heuristics.c' || echo '$(srcdir)/'`mf-heuristics.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libmudflapth_la-mf-heuristics.Tpo $(DEPDIR)/libmudflapth_la-mf-heuristics.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mf-heuristics.c' object='libmudflapth_la-mf-heuristics.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmudflapth_la_CFLAGS) $(CFLAGS) -c -o libmudflapth_la-mf-heuristics.lo `test -f 'mf-heuristics.c' || echo '$(srcdir)/'`mf-heuristics.c - -libmudflapth_la-mf-hooks1.lo: mf-hooks1.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmudflapth_la_CFLAGS) $(CFLAGS) -MT libmudflapth_la-mf-hooks1.lo -MD -MP -MF $(DEPDIR)/libmudflapth_la-mf-hooks1.Tpo -c -o libmudflapth_la-mf-hooks1.lo `test -f 'mf-hooks1.c' || echo '$(srcdir)/'`mf-hooks1.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libmudflapth_la-mf-hooks1.Tpo $(DEPDIR)/libmudflapth_la-mf-hooks1.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mf-hooks1.c' object='libmudflapth_la-mf-hooks1.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmudflapth_la_CFLAGS) $(CFLAGS) -c -o libmudflapth_la-mf-hooks1.lo `test -f 'mf-hooks1.c' || echo '$(srcdir)/'`mf-hooks1.c - -libmudflapth_la-mf-hooks2.lo: mf-hooks2.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmudflapth_la_CFLAGS) $(CFLAGS) -MT libmudflapth_la-mf-hooks2.lo -MD -MP -MF $(DEPDIR)/libmudflapth_la-mf-hooks2.Tpo -c -o libmudflapth_la-mf-hooks2.lo `test -f 'mf-hooks2.c' || echo '$(srcdir)/'`mf-hooks2.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libmudflapth_la-mf-hooks2.Tpo $(DEPDIR)/libmudflapth_la-mf-hooks2.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mf-hooks2.c' object='libmudflapth_la-mf-hooks2.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmudflapth_la_CFLAGS) $(CFLAGS) -c -o libmudflapth_la-mf-hooks2.lo `test -f 'mf-hooks2.c' || echo '$(srcdir)/'`mf-hooks2.c - -libmudflapth_la-mf-hooks3.lo: mf-hooks3.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmudflapth_la_CFLAGS) $(CFLAGS) -MT libmudflapth_la-mf-hooks3.lo -MD -MP -MF $(DEPDIR)/libmudflapth_la-mf-hooks3.Tpo -c -o libmudflapth_la-mf-hooks3.lo `test -f 'mf-hooks3.c' || echo '$(srcdir)/'`mf-hooks3.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libmudflapth_la-mf-hooks3.Tpo $(DEPDIR)/libmudflapth_la-mf-hooks3.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mf-hooks3.c' object='libmudflapth_la-mf-hooks3.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmudflapth_la_CFLAGS) $(CFLAGS) -c -o libmudflapth_la-mf-hooks3.lo `test -f 'mf-hooks3.c' || echo '$(srcdir)/'`mf-hooks3.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt - -# GNU Make needs to see an explicit $(MAKE) variable in the command it -# runs to enable its job server during parallel builds. Hence the -# comments below. -all-multi: - $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) -install-multi: - $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE) - -mostlyclean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE) -clean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE) -distclean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE) -maintainer-clean-multi: - $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE) -install-nobase_libsubincludeHEADERS: $(nobase_libsubinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(libsubincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libsubincludedir)" - @list='$(nobase_libsubinclude_HEADERS)'; test -n "$(libsubincludedir)" || list=; \ - $(am__nobase_list) | while read dir files; do \ - xfiles=; for file in $$files; do \ - if test -f "$$file"; then xfiles="$$xfiles $$file"; \ - else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ - test -z "$$xfiles" || { \ - test "x$$dir" = x. || { \ - echo "$(MKDIR_P) '$(DESTDIR)$(libsubincludedir)/$$dir'"; \ - $(MKDIR_P) "$(DESTDIR)$(libsubincludedir)/$$dir"; }; \ - echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(libsubincludedir)/$$dir'"; \ - $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(libsubincludedir)/$$dir" || exit $$?; }; \ - done - -uninstall-nobase_libsubincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nobase_libsubinclude_HEADERS)'; test -n "$(libsubincludedir)" || list=; \ - $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(libsubincludedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(libsubincludedir)" && rm -f $$files - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -check-am: all-am -check: check-recursive -all-am: Makefile $(LTLIBRARIES) all-multi $(HEADERS) config.h -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(libsubincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-multi clean-recursive - -clean-am: clean-generic clean-libtool clean-toolexeclibLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-multi distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-hdr distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-nobase_libsubincludeHEADERS - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-multi install-toolexeclibLTLIBRARIES - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-multi maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-multi mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-nobase_libsubincludeHEADERS \ - uninstall-toolexeclibLTLIBRARIES - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all all-multi \ - clean-multi ctags-recursive distclean-multi install-am \ - install-multi install-strip maintainer-clean-multi \ - mostlyclean-multi tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am all-multi am--refresh check check-am clean \ - clean-generic clean-libtool clean-multi \ - clean-toolexeclibLTLIBRARIES ctags ctags-recursive distclean \ - distclean-compile distclean-generic distclean-hdr \ - distclean-libtool distclean-multi distclean-tags dvi dvi-am \ - html html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-multi \ - install-nobase_libsubincludeHEADERS install-pdf install-pdf-am \ - install-ps install-ps-am install-strip \ - install-toolexeclibLTLIBRARIES installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-multi mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - mostlyclean-multi pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-nobase_libsubincludeHEADERS \ - uninstall-toolexeclibLTLIBRARIES - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libmudflap/acinclude.m4 b/libmudflap/acinclude.m4 deleted file mode 100644 index 38e0808..0000000 --- a/libmudflap/acinclude.m4 +++ /dev/null @@ -1,12 +0,0 @@ -dnl ---------------------------------------------------------------------- -dnl This whole bit snagged from libgfortran. - -sinclude(../libtool.m4) -dnl The lines below arrange for aclocal not to bring an installed -dnl libtool.m4 into aclocal.m4, while still arranging for automake to -dnl add a definition of LIBTOOL to Makefile.in. -ifelse(,,,[AC_SUBST(LIBTOOL) -AC_DEFUN([AM_PROG_LIBTOOL]) -AC_DEFUN([AC_LIBTOOL_DLOPEN]) -AC_DEFUN([AC_PROG_LD]) -]) diff --git a/libmudflap/aclocal.m4 b/libmudflap/aclocal.m4 deleted file mode 100644 index b62d573..0000000 --- a/libmudflap/aclocal.m4 +++ /dev/null @@ -1,982 +0,0 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.64],, -[m4_warning([this file was generated for autoconf 2.64. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) - -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 9 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 10 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -#serial 5 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 16 - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) - -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST(install_sh)]) - -# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- -# From Jim Meyering - -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_MAINTAINER_MODE([DEFAULT-MODE]) -# ---------------------------------- -# Control maintainer-specific portions of Makefiles. -# Default is to disable them, unless `enable' is passed literally. -# For symmetry, `disable' may be passed as well. Anyway, the user -# can override the default with the --enable/--disable switch. -AC_DEFUN([AM_MAINTAINER_MODE], -[m4_case(m4_default([$1], [disable]), - [enable], [m4_define([am_maintainer_other], [disable])], - [disable], [m4_define([am_maintainer_other], [enable])], - [m4_define([am_maintainer_other], [enable]) - m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) -AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles]) - dnl maintainer-mode's default is 'disable' unless 'enable' is passed - AC_ARG_ENABLE([maintainer-mode], -[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - [USE_MAINTAINER_MODE=$enableval], - [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) - AC_MSG_RESULT([$USE_MAINTAINER_MODE]) - AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST([MAINT])dnl -] -) - -AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar <conftest.tar]) - grep GrepMe conftest.dir/file >/dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([../config/acx.m4]) -m4_include([../config/depstand.m4]) -m4_include([../config/enable.m4]) -m4_include([../config/lead-dot.m4]) -m4_include([../config/multi.m4]) -m4_include([../config/override.m4]) -m4_include([../config/tls.m4]) -m4_include([../ltoptions.m4]) -m4_include([../ltsugar.m4]) -m4_include([../ltversion.m4]) -m4_include([../lt~obsolete.m4]) -m4_include([acinclude.m4]) diff --git a/libmudflap/config.h.in b/libmudflap/config.h.in deleted file mode 100644 index ffdd672..0000000 --- a/libmudflap/config.h.in +++ /dev/null @@ -1,308 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define to the name of the symbol used for the entry point. */ -#undef ENTRY_POINT - -/* Define to 1 if you have the `addmntent' function. */ -#undef HAVE_ADDMNTENT - -/* Define to 1 if you have the <arpa/inet.h> header file. */ -#undef HAVE_ARPA_INET_H - -/* Define to 1 if you have the `backtrace' function. */ -#undef HAVE_BACKTRACE - -/* Define to 1 if you have the `backtrace_symbols' function. */ -#undef HAVE_BACKTRACE_SYMBOLS - -/* Define to 1 if the target assembler supports thread-local storage. */ -#undef HAVE_CC_TLS - -/* Define to 1 if you have the <ctype.h> header file. */ -#undef HAVE_CTYPE_H - -/* Define to 1 if you have the `cuserid' function. */ -#undef HAVE_CUSERID - -/* Define to 1 if you have the <dirent.h> header file. */ -#undef HAVE_DIRENT_H - -/* Define to 1 if you have the <dlfcn.h> header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the `dlvsym' function. */ -#undef HAVE_DLVSYM - -/* Define to 1 if you have the <execinfo.h> header file. */ -#undef HAVE_EXECINFO_H - -/* Define to 1 if you have the `fopen64' function. */ -#undef HAVE_FOPEN64 - -/* Define to 1 if you have the `freopen64' function. */ -#undef HAVE_FREOPEN64 - -/* Define to 1 if you have the `fseeko64' function. */ -#undef HAVE_FSEEKO64 - -/* Define to 1 if you have the `ftello64' function. */ -#undef HAVE_FTELLO64 - -/* Define to 1 if you have the `gai_strerror' function. */ -#undef HAVE_GAI_STRERROR - -/* Define to 1 if you have the `getaddrinfo' function. */ -#undef HAVE_GETADDRINFO - -/* Define to 1 if you have the `getgrent' function. */ -#undef HAVE_GETGRENT - -/* Define to 1 if you have the `getgrgid' function. */ -#undef HAVE_GETGRGID - -/* Define to 1 if you have the `getgrgid_r' function. */ -#undef HAVE_GETGRGID_R - -/* Define to 1 if you have the `getgrnam' function. */ -#undef HAVE_GETGRNAM - -/* Define to 1 if you have the `getgrnam_r' function. */ -#undef HAVE_GETGRNAM_R - -/* Define to 1 if you have the `getlogin' function. */ -#undef HAVE_GETLOGIN - -/* Define to 1 if you have the `getlogin_r' function. */ -#undef HAVE_GETLOGIN_R - -/* Define to 1 if you have the `getmntent' function. */ -#undef HAVE_GETMNTENT - -/* Define to 1 if you have the `getprotobyname' function. */ -#undef HAVE_GETPROTOBYNAME - -/* Define to 1 if you have the `getprotobynumber' function. */ -#undef HAVE_GETPROTOBYNUMBER - -/* Define to 1 if you have the `getprotoent' function. */ -#undef HAVE_GETPROTOENT - -/* Define to 1 if you have the `getpwent' function. */ -#undef HAVE_GETPWENT - -/* Define to 1 if you have the `getpwnam' function. */ -#undef HAVE_GETPWNAM - -/* Define to 1 if you have the `getpwnam_r' function. */ -#undef HAVE_GETPWNAM_R - -/* Define to 1 if you have the `getpwuid' function. */ -#undef HAVE_GETPWUID - -/* Define to 1 if you have the `getpwuid_r' function. */ -#undef HAVE_GETPWUID_R - -/* Define to 1 if you have the `getservbyname' function. */ -#undef HAVE_GETSERVBYNAME - -/* Define to 1 if you have the `getservbyport' function. */ -#undef HAVE_GETSERVBYPORT - -/* Define to 1 if you have the `getservent' function. */ -#undef HAVE_GETSERVENT - -/* Define to 1 if you have the `gettimeofday' function. */ -#undef HAVE_GETTIMEOFDAY - -/* Define to 1 if you have the <grp.h> header file. */ -#undef HAVE_GRP_H - -/* Define to 1 if you have the `inet_ntoa' function. */ -#undef HAVE_INET_NTOA - -/* Define to 1 if you have the <inttypes.h> header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the `dl' library (-ldl). */ -#undef HAVE_LIBDL - -/* Define to 1 if you have the `rt' library (-lrt). */ -#undef HAVE_LIBRT - -/* Define to 1 if you have the `socket' library (-lsocket). */ -#undef HAVE_LIBSOCKET - -/* Define to 1 if you have the `memmem' function. */ -#undef HAVE_MEMMEM - -/* Define to 1 if you have the <memory.h> header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the `mempcpy' function. */ -#undef HAVE_MEMPCPY - -/* Define to 1 if you have the `memrchr' function. */ -#undef HAVE_MEMRCHR - -/* Define to 1 if you have the `mmap' function. */ -#undef HAVE_MMAP - -/* Define to 1 if you have the `mmap64' function. */ -#undef HAVE_MMAP64 - -/* Define to 1 if you have the <mntent.h> header file. */ -#undef HAVE_MNTENT_H - -/* Define to 1 if you have the `munmap' function. */ -#undef HAVE_MUNMAP - -/* Define to 1 if you have the <netdb.h> header file. */ -#undef HAVE_NETDB_H - -/* Define to 1 if you have the <netinet/in.h> header file. */ -#undef HAVE_NETINET_IN_H - -/* Define to 1 if you have the <pthread.h> header file. */ -#undef HAVE_PTHREAD_H - -/* Define to 1 if you have the <pwd.h> header file. */ -#undef HAVE_PWD_H - -/* Define to 1 if you have the `rawmemchr' function. */ -#undef HAVE_RAWMEMCHR - -/* Define to 1 if you have the `setbuf' function. */ -#undef HAVE_SETBUF - -/* Define to 1 if you have the `setbuffer' function. */ -#undef HAVE_SETBUFFER - -/* Define to 1 if you have the `sethostname' function. */ -#undef HAVE_SETHOSTNAME - -/* Define to 1 if you have the `setlinebuf' function. */ -#undef HAVE_SETLINEBUF - -/* Define to 1 if you have the `setmntent' function. */ -#undef HAVE_SETMNTENT - -/* Define to 1 if you have the `setvbuf' function. */ -#undef HAVE_SETVBUF - -/* Define to 1 if you have the `signal' function. */ -#undef HAVE_SIGNAL - -/* Define to 1 if you have the <signal.h> header file. */ -#undef HAVE_SIGNAL_H - -/* Define it socklen_t typedef is in sys/socket.h. */ -#undef HAVE_SOCKLEN_T - -/* Define to 1 if you have the `stat64' function. */ -#undef HAVE_STAT64 - -/* Define to 1 if you have the <stdint.h> header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the <stdlib.h> header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the `stpcpy' function. */ -#undef HAVE_STPCPY - -/* Define to 1 if you have the <strings.h> header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the <string.h> header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the `strncpy' function. */ -#undef HAVE_STRNCPY - -/* Define to 1 if you have the `strnlen' function. */ -#undef HAVE_STRNLEN - -/* Define to 1 if you have the <sys/ipc.h> header file. */ -#undef HAVE_SYS_IPC_H - -/* Define to 1 if you have the <sys/mman.h> header file. */ -#undef HAVE_SYS_MMAN_H - -/* Define to 1 if you have the <sys/mnttab.h> header file. */ -#undef HAVE_SYS_MNTTAB_H - -/* Define to 1 if you have the <sys/sem.h> header file. */ -#undef HAVE_SYS_SEM_H - -/* Define to 1 if you have the <sys/shm.h> header file. */ -#undef HAVE_SYS_SHM_H - -/* Define to 1 if you have the <sys/socket.h> header file. */ -#undef HAVE_SYS_SOCKET_H - -/* Define to 1 if you have the <sys/stat.h> header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the <sys/types.h> header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the <sys/wait.h> header file. */ -#undef HAVE_SYS_WAIT_H - -/* Define to 1 if the target supports thread-local storage. */ -#undef HAVE_TLS - -/* union semun defined in sys/ipc.h or sys/sem.h */ -#undef HAVE_UNION_SEMUN - -/* Define to 1 if you have the <unistd.h> header file. */ -#undef HAVE_UNISTD_H - -/* Define to 1 if you have the `__ctype_b_loc' function. */ -#undef HAVE___CTYPE_B_LOC - -/* Define to 1 if you have the `__ctype_tolower_loc' function. */ -#undef HAVE___CTYPE_TOLOWER_LOC - -/* Define to 1 if you have the `__ctype_toupper_loc' function. */ -#undef HAVE___CTYPE_TOUPPER_LOC - -/* Define to 1 if you have the `__libc_freeres' function. */ -#undef HAVE___LIBC_FREERES - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#undef LT_OBJDIR - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* pthread_create symbol version */ -#undef PTHREAD_CREATE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define to 1 if the target use emutls for thread-local storage. */ -#undef USE_EMUTLS - -/* Version number of package */ -#undef VERSION diff --git a/libmudflap/configure b/libmudflap/configure deleted file mode 100755 index 1e91dbb..0000000 --- a/libmudflap/configure +++ /dev/null @@ -1,14050 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.64 for libmudflap 1.0. -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software -# Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error ERROR [LINENO LOG_FD] -# --------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with status $?, using 1 if that was 0. -as_fn_error () -{ - as_status=$?; test $as_status -eq 0 && as_status=1 - if test "$3"; then - as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 - fi - $as_echo "$as_me: error: $1" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -exec 7<&0 </dev/null 6>&1 - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='libmudflap' -PACKAGE_TARNAME='libmudflap' -PACKAGE_VERSION='1.0' -PACKAGE_STRING='libmudflap 1.0' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' - -ac_unique_file="mf-runtime.c" -# Factoring default headers for most tests. -ac_includes_default="\ -#include <stdio.h> -#ifdef HAVE_SYS_TYPES_H -# include <sys/types.h> -#endif -#ifdef HAVE_SYS_STAT_H -# include <sys/stat.h> -#endif -#ifdef STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#else -# ifdef HAVE_STDLIB_H -# include <stdlib.h> -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include <memory.h> -# endif -# include <string.h> -#endif -#ifdef HAVE_STRINGS_H -# include <strings.h> -#endif -#ifdef HAVE_INTTYPES_H -# include <inttypes.h> -#endif -#ifdef HAVE_STDINT_H -# include <stdint.h> -#endif -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -SECTION_FLAGS -toolexeclibdir -toolexecdir -build_libmudflapth -LIBMUDFLAPTH_FALSE -LIBMUDFLAPTH_TRUE -MF_HAVE_UINTPTR_T -MF_HAVE_STDINT_H -enable_static -enable_shared -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -RANLIB -AR -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -SED -LIBTOOL -EGREP -GREP -CPP -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -multi_basedir -MAINT -MAINTAINER_MODE_FALSE -MAINTAINER_MODE_TRUE -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_noncanonical -target_os -target_vendor -target_cpu -target -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_version_specific_runtime_libs -enable_maintainer_mode -enable_multilib -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -enable_libtool_lock -enable_tls -' - ac_precious_vars='build_alias -host_alias -target_alias -CPP -CPPFLAGS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information." - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures libmudflap 1.0 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/libmudflap] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of libmudflap 1.0:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer - --enable-multilib build many library versions (default) - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --enable-tls Use thread-local storage [default=yes] - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - LIBS libraries to pass to the linker, e.g. -l<library> - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if - you have headers in a nonstandard directory <include dir> - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -libmudflap configure 1.0 -generated by GNU Autoconf 2.64 - -Copyright (C) 2009 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - return $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case <limits.h> declares $2. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); 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 $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* 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_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - -} # ac_fn_c_check_func -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by libmudflap $as_me 1.0, which was -generated by GNU Autoconf 2.64. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## -## File substitutions. ## -## ------------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - ac_site_file1=$CONFIG_SITE -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - for ac_t in install-sh install.sh shtool; do - if test -f "$ac_dir/$ac_t"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/$ac_t -c" - break 2 - fi - done -done -if test -z "$ac_aux_dir"; then - as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if test "${ac_cv_build+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if test "${ac_cv_host+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 -$as_echo_n "checking target system type... " >&6; } -if test "${ac_cv_target+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host -else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 -$as_echo "$ac_cv_target" >&6; } -case $ac_cv_target in -*-*-*) ;; -*) as_fn_error "invalid value of canonical target" "$LINENO" 5;; -esac -target=$ac_cv_target -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_target -shift -target_cpu=$1 -target_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -target_os=$* -IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - - case ${build_alias} in - "") build_noncanonical=${build} ;; - *) build_noncanonical=${build_alias} ;; -esac - - case ${host_alias} in - "") host_noncanonical=${build_noncanonical} ;; - *) host_noncanonical=${host_alias} ;; -esac - - case ${target_alias} in - "") target_noncanonical=${host_noncanonical} ;; - *) target_noncanonical=${target_alias} ;; -esac - - - - -am__api_version='1.11' - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if test "${ac_cv_path_mkdir+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - test -d ./--version && rmdir ./--version - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_AWK+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='libmudflap' - VERSION='1.0' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-version-specific-runtime-libs" >&5 -$as_echo_n "checking for --enable-version-specific-runtime-libs... " >&6; } -# Check whether --enable-version-specific-runtime-libs was given. -if test "${enable_version_specific_runtime_libs+set}" = set; then : - enableval=$enable_version_specific_runtime_libs; case "$enableval" in - yes) version_specific_libs=yes ;; - no) version_specific_libs=no ;; - *) as_fn_error "Unknown argument to enable/disable version-specific libs" "$LINENO" 5;; - esac -else - version_specific_libs=no -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $version_specific_libs" >&5 -$as_echo "$version_specific_libs" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 -$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } - # Check whether --enable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then : - enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 -$as_echo "$USE_MAINTAINER_MODE" >&6; } - if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - - - - -# Default to --enable-multilib -# Check whether --enable-multilib was given. -if test "${enable_multilib+set}" = set; then : - enableval=$enable_multilib; case "$enableval" in - yes) multilib=yes ;; - no) multilib=no ;; - *) as_fn_error "bad value $enableval for multilib option" "$LINENO" 5 ;; - esac -else - multilib=yes -fi - - -# We may get other options which we leave undocumented: -# --with-target-subdir, --with-multisrctop, --with-multisubdir -# See config-ml.in if you want the gory details. - -if test "$srcdir" = "."; then - if test "$with_target_subdir" != "."; then - multi_basedir="$srcdir/$with_multisrctop../.." - else - multi_basedir="$srcdir/$with_multisrctop.." - fi -else - multi_basedir="$srcdir/.." -fi - - -# Even if the default multilib is not a cross compilation, -# it may be that some of the other multilibs are. -if test $cross_compiling = no && test $multilib = yes \ - && test "x${with_multisubdir}" != x ; then - cross_compiling=maybe -fi - -ac_config_commands="$ac_config_commands default-1" - - -target_alias=${target_alias-$host_alias} - - -ac_config_headers="$ac_config_headers config.h" - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -# The same as in boehm-gc and libstdc++. Have to borrow it from there. -# We must force CC to /not/ be precious variables; otherwise -# the wrong, non-multilib-adjusted value will be used in multilibs. -# As a side effect, we have to subst CFLAGS ourselves. - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "no acceptable C compiler found in \$PATH -See \`config.log' for more details." "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - rm -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -if test -z "$ac_file"; then : - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -{ as_fn_set_status 77 -as_fn_error "C compiler cannot create executables -See \`config.log' for more details." "$LINENO" 5; }; } -fi -ac_exeext=$ac_cv_exeext - -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out -ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." "$LINENO" 5; } -fi -rm -f conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if test "${ac_cv_objext+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot compute suffix of object files: cannot compile -See \`config.log' for more details." "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - - - - -if test "x$GCC" != "xyes"; then - as_fn_error "libmudflap must be built with GCC" "$LINENO" 5 -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Some hosts don't have dlsym(RTLD_NEXT, "symbol") for use in -# symbol interposition. We disable shared libraries for these. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dlsym(RTLD_NEXT,...) is available" >&5 -$as_echo_n "checking whether dlsym(RTLD_NEXT,...) is available... " >&6; } - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define _GNU_SOURCE -#include <dlfcn.h> - -int -main () -{ -void *foo = dlsym (RTLD_NEXT, "exit"); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -enable_shared=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if test "${ac_cv_path_GREP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if test "${ac_cv_header_stdc+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <string.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdlib.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ctype.h> -#include <stdlib.h> -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -eval as_val=\$$as_ac_Header - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in stdint.h execinfo.h signal.h dlfcn.h dirent.h pwd.h grp.h \ - netdb.h sys/ipc.h sys/sem.h sys/shm.h sys/wait.h ctype.h mntent.h \ - sys/mnttab.h sys/socket.h netinet/in.h arpa/inet.h dlfcn.h sys/mman.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -eval as_val=\$$as_ac_Header - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_func in backtrace backtrace_symbols gettimeofday signal -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in fopen64 fseeko64 ftello64 stat64 freopen64 -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in setbuf setbuffer setlinebuf setvbuf -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in strnlen memrchr strncpy memmem sethostname -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in __ctype_b_loc __ctype_tolower_loc __ctype_toupper_loc -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in getlogin cuserid getpwnam getpwuid getpwent getgrnam getgrgid getgrent -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in getlogin_r getpwnam_r getpwuid_r getgrnam_r getgrgid_r -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in getservent getservbyname getservbyport getaddrinfo gai_strerror -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in getprotoent getprotobyname getprotobynumber -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in getmntent setmntent addmntent -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in inet_ntoa mmap munmap -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in mmap64 -do : - ac_fn_c_check_func "$LINENO" "mmap64" "ac_cv_func_mmap64" -if test "x$ac_cv_func_mmap64" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MMAP64 1 -_ACEOF - -fi -done - -for ac_func in __libc_freeres -do : - ac_fn_c_check_func "$LINENO" "__libc_freeres" "ac_cv_func___libc_freeres" -if test "x$ac_cv_func___libc_freeres" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE___LIBC_FREERES 1 -_ACEOF - -fi -done - -for ac_func in rawmemchr stpcpy mempcpy -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -eval as_val=\$$as_ac_var - if test "x$as_val" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <sys/types.h> -#include <sys/ipc.h> -#include <sys/sem.h> -int -main () -{ -union semun foo; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - mf_have_semun=1 -else - mf_have_semun=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -if test $mf_have_semun = 1 -then - -$as_echo "#define HAVE_UNION_SEMUN 1" >>confdefs.h - -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t in sys/socket.h" >&5 -$as_echo_n "checking for socklen_t in sys/socket.h... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#define _POSIX_PII_SOCKET -#include <sys/types.h> -#include <sys/socket.h> -int -main () -{ -socklen_t x = 5; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_SOCKLEN_T 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -enable_dlopen=yes - - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.2.7a' -macro_revision='1.3134' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`print -r -- -n 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case "$ECHO" in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if test "${ac_cv_path_SED+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if test "${ac_cv_path_FGREP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if test "${lt_cv_path_LD+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - 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 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'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$lt_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if test "${lt_cv_prog_gnu_ld+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - # 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 - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if test "${lt_cv_path_NM+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - 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 - ;; - *) - 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 - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_DUMPBIN+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if test "${lt_cv_nm_interface+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if test "${lt_cv_sys_max_cmd_len+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - 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 - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - 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` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # 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"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if test "${lt_cv_ld_reload_flag+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -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 - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_OBJDUMP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if test "${lt_cv_deplibs_check_method+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -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 - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | 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|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.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - 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 - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # 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;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -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 - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -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]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_AR+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="ar" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -else - AR="$ac_cv_prog_AR" -fi - -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_STRIP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# 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 command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, 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. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - - - - - - - - - - - - - - - - - - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if test "${lt_cv_cc_needs_belf+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_DSYMUTIL+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_NMEDIT+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_LIPO+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_OTOOL+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_OTOOL64+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if test "${lt_cv_apple_cc_single_mod+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if test "${lt_cv_ld_exported_symbols_list+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if test "${lt_cv_ld_force_load+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - -# Set options - - - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if test "${lt_cv_objdir+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "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 - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "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 - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# 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 the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$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 -echo "$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 -r conftest* - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # 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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/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 - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - lt_prog_compiler_pic='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # 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. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - lt_prog_compiler_pic='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - 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 - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # 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. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - 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*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - 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' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 -$as_echo "$lt_prog_compiler_pic" >&6; } - - - - - - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if test "${lt_cv_prog_compiler_pic_works+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # 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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/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_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if test "${lt_cv_prog_compiler_static_works+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$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 "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if test "${lt_cv_prog_compiler_c_o+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # 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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/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 . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if test "${lt_cv_prog_compiler_c_o+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # 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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $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 - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/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 . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - 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 - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # 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>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [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 - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - 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 '\''/^[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}--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 - cp $export_symbols $output_objdir/$soname.def; - else - 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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - 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' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag= - tmp_sharedflag='-shared' - 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; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # 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; func_echo_all \"$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' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; 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 '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; 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~ - $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - 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= - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $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' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - 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 - ;; - *) - # 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. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$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= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - 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' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - 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) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # 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 "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - 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` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - 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 - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -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 '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${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 '"\${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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then - aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - # 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 - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes=yes - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - 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_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=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 && test "$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 -fPIC ${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*) - 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' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if test "${lt_cv_prog_compiler__b+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -b" - echo "$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 "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${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 - - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=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 - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo(void) {} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - 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 - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-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; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_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' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared ${wl}-z ${wl}text ${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}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - 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' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $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 -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - 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,$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 - ;; - - 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='${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,$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,$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 - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if test "${lt_cv_archive_cmds_need_lc+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - 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' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - 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~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - 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}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - 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`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - 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 - ;; - -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[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - 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 - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -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 - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - 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=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - 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 ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-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' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if test "${lt_cv_shlibpath_overrides_runpath+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - 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='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - 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='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # 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 - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - 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 - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - 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=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -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' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - 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 - shlibpath_overrides_runpath=yes - 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' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - 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' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - 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}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - 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' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$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 - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -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* | cegcc*) - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = x""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 - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = x""yes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if test "${ac_cv_lib_dld_shl_load+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = x""yes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = x""yes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if test "${ac_cv_lib_dl_dlopen+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if test "${ac_cv_lib_svld_dlopen+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = x""yes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if test "${ac_cv_lib_dld_dld_link+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = x""yes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -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" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if test "${lt_cv_dlopen_self+set}" = set; then : - $as_echo_n "(cached) " >&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 <<_LT_EOF -#line 10624 "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 - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -void fnord () __attribute__((visibility("default"))); -#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; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./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_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if test "${lt_cv_dlopen_self_static+set}" = set; then : - $as_echo_n "(cached) " >&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 <<_LT_EOF -#line 10730 "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 - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -void fnord () __attribute__((visibility("default"))); -#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; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./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_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$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 - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&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" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "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" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - 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 - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - - - -ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" -if test "x$ac_cv_header_stdint_h" = x""yes; then : - MF_HAVE_STDINT_H=1 -else - MF_HAVE_STDINT_H=0 -fi - - - -if test $MF_HAVE_STDINT_H = 1 -then - MF_HAVE_UINTPTR_T=1 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <sys/types.h> -int -main () -{ -uintptr_t k = 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - MF_HAVE_UINTPTR_T=1 -else - MF_HAVE_UINTPTR_T=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - -for ac_header in pthread.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" -if test "x$ac_cv_header_pthread_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_PTHREAD_H 1 -_ACEOF - -fi - -done - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for thread model used by GCC" >&5 -$as_echo_n "checking for thread model used by GCC... " >&6; } -target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $target_thread_file" >&5 -$as_echo "$target_thread_file" >&6; } - -# We only support posix threads, or no threads at all. -posix_threads= -case ${target_thread_file} in - posix) - posix_threads=yes - ;; - single) - ;; - *) - echo "${target_thread_file} is an unsupported thread package" 1>&2 - exit 1 - ;; -esac - - if test "x$posix_threads" != "x"; then - LIBMUDFLAPTH_TRUE= - LIBMUDFLAPTH_FALSE='#' -else - LIBMUDFLAPTH_TRUE='#' - LIBMUDFLAPTH_FALSE= -fi - -if test "x$posix_threads" != "x" -then - build_libmudflapth=1 -else - build_libmudflapth=0 -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5 -$as_echo_n "checking for dlsym in -ldl... " >&6; } -if test "${ac_cv_lib_dl_dlsym+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlsym (); -int -main () -{ -return dlsym (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlsym=yes -else - ac_cv_lib_dl_dlsym=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlsym" >&5 -$as_echo "$ac_cv_lib_dl_dlsym" >&6; } -if test "x$ac_cv_lib_dl_dlsym" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBDL 1 -_ACEOF - - LIBS="-ldl $LIBS" - -fi - - -ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" -if test "x$ac_cv_func_connect" = x""yes; then : - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 -$as_echo_n "checking for connect in -lsocket... " >&6; } -if test "${ac_cv_lib_socket_connect+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char connect (); -int -main () -{ -return connect (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_socket_connect=yes -else - ac_cv_lib_socket_connect=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 -$as_echo "$ac_cv_lib_socket_connect" >&6; } -if test "x$ac_cv_lib_socket_connect" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSOCKET 1 -_ACEOF - - LIBS="-lsocket $LIBS" - -fi - -fi - -ac_fn_c_check_func "$LINENO" "sched_yield" "ac_cv_func_sched_yield" -if test "x$ac_cv_func_sched_yield" = x""yes; then : - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sched_yield in -lrt" >&5 -$as_echo_n "checking for sched_yield in -lrt... " >&6; } -if test "${ac_cv_lib_rt_sched_yield+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lrt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char sched_yield (); -int -main () -{ -return sched_yield (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_rt_sched_yield=yes -else - ac_cv_lib_rt_sched_yield=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_sched_yield" >&5 -$as_echo "$ac_cv_lib_rt_sched_yield" >&6; } -if test "x$ac_cv_lib_rt_sched_yield" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBRT 1 -_ACEOF - - LIBS="-lrt $LIBS" - -fi - -fi - - -# Calculate toolexeclibdir -# Also toolexecdir, though it's only used in toolexeclibdir -case ${version_specific_libs} in - yes) - # Need the gcc compiler version to know where to install libraries - # and header files if --enable-version-specific-runtime-libs option - # is selected. - toolexecdir='$(libdir)/gcc/$(target_alias)' - toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' - ;; - no) - if test -n "$with_cross_host" && - test x"$with_cross_host" != x"no"; then - # Install a library built with a cross compiler in tooldir, not libdir. - toolexecdir='$(exec_prefix)/$(target_alias)' - toolexeclibdir='$(toolexecdir)/lib' - else - toolexecdir='$(libdir)/gcc-lib/$(target_alias)' - toolexeclibdir='$(libdir)' - fi - multi_os_directory=`$CC -print-multi-os-directory` - case $multi_os_directory in - .) ;; # Avoid trailing /. - *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac - ;; -esac - - - -includedir=${toolexecdir}/include - - -pthread_create_version='""' -if test "x$enable_shared" = "xyes" && test "x$posix_threads" != "x"; then - # NB: don't check for -lpthread here, because then it would be - # added to LIBS. For the thread-unaware libmudflap.la, we don't - # want it there. - - # glibc-related hacks. dlsym() may pick the wrong version of - # interposed functions like pthread_create on modern glibc. - # We need to find the proper symbol version string, and use - # the nonstandard dlvsym(). - for ac_func in dlvsym -do : - ac_fn_c_check_func "$LINENO" "dlvsym" "ac_cv_func_dlvsym" -if test "x$ac_cv_func_dlvsym" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLVSYM 1 -_ACEOF - -fi -done - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args. -set dummy ${ac_tool_prefix}nm; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_NM+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - ac_cv_prog_NM="$NM" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NM="${ac_tool_prefix}nm" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NM=$ac_cv_prog_NM -if test -n "$NM"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5 -$as_echo "$NM" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NM"; then - ac_ct_NM=$NM - # Extract the first word of "nm", so it can be a program name with args. -set dummy nm; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_NM+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NM"; then - ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NM="nm" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NM=$ac_cv_prog_ac_ct_NM -if test -n "$ac_ct_NM"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5 -$as_echo "$ac_ct_NM" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NM" = x; then - NM="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NM=$ac_ct_NM - fi -else - NM="$ac_cv_prog_NM" -fi - - if test "x$ac_cv_have_dlvsym" != "x"; then - # Try compiling a simple pthreads program. Find the shared libraries it - # ends up with. Then use "nm" on those libraries to extract the - # default symbol versioning suffix ("@@"), if any. But that's tricky. - # Rather, run nm on the resulting executable. Unfortunately, autoconf - # doesn't appear to have a macro that builds a test executable for - # subsequent analysis ... so we do it by hand here. - cat >> conftest.c << EOF -#include <pthread.h> -int main () { void *p = (void *) & pthread_create; return (int) p; } -EOF - oldLIBS="$LIBS" - LIBS="$LIBS -lpthread" - pthread_create_version="\"\"" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pthread_create symbol version" >&5 -$as_echo_n "checking pthread_create symbol version... " >&6; } - if eval $ac_link 2>&5 && test -s conftest${ac_exeext}; then - version=`$NM conftest${ac_exeect} | grep 'pthread_create@@' | sed -e 's/^.*@@//'` - if test "x$version" != "x"; then - pthread_create_version="\"$version\"" - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pthread_create_version" >&5 -$as_echo "$pthread_create_version" >&6; } - LIBS="$oldLIBS" - fi -fi - -cat >>confdefs.h <<_ACEOF -#define PTHREAD_CREATE_VERSION $pthread_create_version -_ACEOF - - - -# Figure out whether the compiler supports "-ffunction-sections -fdata-sections", -# similarly to how libstdc++ does it -ac_test_CFLAGS="${CFLAGS+set}" -ac_save_CFLAGS="$CFLAGS" - -# Check for -ffunction-sections -fdata-sections -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc that supports -ffunction-sections -fdata-sections" >&5 -$as_echo_n "checking for gcc that supports -ffunction-sections -fdata-sections... " >&6; } -CFLAGS='-Werror -ffunction-sections -fdata-sections' -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -int foo; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_fdsections=yes -else - ac_fdsections=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" -else - # this is the suspicious part - CFLAGS="" -fi -if test x"$ac_fdsections" = x"yes"; then - SECTION_FLAGS='-ffunction-sections -fdata-sections' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_fdsections" >&5 -$as_echo "$ac_fdsections" >&6; } - - - -# Check for the name of the symbol used for the entry point. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the name of the symbol used for the entry point" >&5 -$as_echo_n "checking for the name of the symbol used for the entry point... " >&6; } -if test "${mudflap_cv_entry_point+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - -for name in _start __start unknown; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -extern char $name[]; -int -main () -{ -$name[0] = 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - break -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -done -mudflap_cv_entry_point="$name" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $mudflap_cv_entry_point" >&5 -$as_echo "$mudflap_cv_entry_point" >&6; } -if test "$mudflap_cv_entry_point" = unknown; then - as_fn_error "none of the known symbol names works" "$LINENO" 5 -fi - -cat >>confdefs.h <<_ACEOF -#define ENTRY_POINT $mudflap_cv_entry_point -_ACEOF - - - -if test ${multilib} = yes; then - multilib_arg="--enable-multilib" -else - multilib_arg= -fi - -# See if we support thread-local storage. - - - # Check whether --enable-tls was given. -if test "${enable_tls+set}" = set; then : - enableval=$enable_tls; - case "$enableval" in - yes|no) ;; - *) as_fn_error "Argument to enable/disable tls must be yes or no" "$LINENO" 5 ;; - esac - -else - enable_tls=yes -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports thread-local storage" >&5 -$as_echo_n "checking whether the target supports thread-local storage... " >&6; } -if test "${gcc_cv_have_tls+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - - if test "$cross_compiling" = yes; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -__thread int a; int b; int main() { return a = b; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - chktls_save_LDFLAGS="$LDFLAGS" - case $host in - *-*-linux*) - LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS" - ;; - esac - chktls_save_CFLAGS="$CFLAGS" - CFLAGS="-fPIC $CFLAGS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int f() { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -__thread int a; int b; int f() { return a = b; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gcc_cv_have_tls=yes -else - gcc_cv_have_tls=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -else - gcc_cv_have_tls=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="$chktls_save_CFLAGS" - LDFLAGS="$chktls_save_LDFLAGS" -else - gcc_cv_have_tls=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -__thread int a; int b; int main() { return a = b; } -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - chktls_save_LDFLAGS="$LDFLAGS" - LDFLAGS="-static $LDFLAGS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int main() { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot run test program while cross compiling -See \`config.log' for more details." "$LINENO" 5; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -__thread int a; int b; int main() { return a = b; } -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gcc_cv_have_tls=yes -else - gcc_cv_have_tls=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -else - gcc_cv_have_tls=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$chktls_save_LDFLAGS" - if test $gcc_cv_have_tls = yes; then - chktls_save_CFLAGS="$CFLAGS" - thread_CFLAGS=failed - for flag in '' '-pthread' '-lpthread'; do - CFLAGS="$flag $chktls_save_CFLAGS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <pthread.h> - void *g(void *d) { return NULL; } -int -main () -{ -pthread_t t; pthread_create(&t,NULL,g,NULL); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - thread_CFLAGS="$flag" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "X$thread_CFLAGS" != Xfailed; then - break - fi - done - CFLAGS="$chktls_save_CFLAGS" - if test "X$thread_CFLAGS" != Xfailed; then - CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS" - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error "cannot run test program while cross compiling -See \`config.log' for more details." "$LINENO" 5; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <pthread.h> - __thread int a; - static int *volatile a_in_other_thread; - static void * - thread_func (void *arg) - { - a_in_other_thread = &a; - return (void *)0; - } -int -main () -{ -pthread_t thread; - void *thread_retval; - int *volatile a_in_main_thread; - a_in_main_thread = &a; - if (pthread_create (&thread, (pthread_attr_t *)0, - thread_func, (void *)0)) - return 0; - if (pthread_join (thread, &thread_retval)) - return 0; - return (a_in_other_thread == a_in_main_thread); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gcc_cv_have_tls=yes -else - gcc_cv_have_tls=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - CFLAGS="$chktls_save_CFLAGS" - fi - fi -else - gcc_cv_have_tls=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_have_tls" >&5 -$as_echo "$gcc_cv_have_tls" >&6; } - if test "$enable_tls $gcc_cv_have_tls" = "yes yes"; then - -$as_echo "#define HAVE_TLS 1" >>confdefs.h - - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the thread-local storage support is from emutls" >&5 -$as_echo_n "checking whether the thread-local storage support is from emutls... " >&6; } -if test "${gcc_cv_use_emutls+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - - gcc_cv_use_emutls=no - echo '__thread int a; int b; int main() { return a = b; }' > conftest.c - if { ac_try='${CC-cc} -Werror -S -o conftest.s conftest.c 1>&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - if grep __emutls_get_address conftest.s > /dev/null; then - gcc_cv_use_emutls=yes - fi - fi - rm -f conftest.* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_use_emutls" >&5 -$as_echo "$gcc_cv_use_emutls" >&6; } - if test "$gcc_cv_use_emutls" = "yes" ; then - -$as_echo "#define USE_EMUTLS 1" >>confdefs.h - - fi - -ac_config_files="$ac_config_files Makefile testsuite/Makefile testsuite/mfconfig.exp" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - as_fn_error "conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${LIBMUDFLAPTH_TRUE}" && test -z "${LIBMUDFLAPTH_FALSE}"; then - as_fn_error "conditional \"LIBMUDFLAPTH\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: ${CONFIG_STATUS=./config.status} -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error ERROR [LINENO LOG_FD] -# --------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with status $?, using 1 if that was 0. -as_fn_error () -{ - as_status=$?; test $as_status -eq 0 && as_status=1 - if test "$3"; then - as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 - fi - $as_echo "$as_me: error: $1" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by libmudflap $as_me 1.0, which was -generated by GNU Autoconf 2.64. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_version="\\ -libmudflap config.status 1.0 -configured by $0, generated by GNU Autoconf 2.64, - with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2009 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# - -srcdir="$srcdir" -host="$host" -target="$target" -with_multisubdir="$with_multisubdir" -with_multisrctop="$with_multisrctop" -with_target_subdir="$with_target_subdir" -ac_configure_args="${multilib_arg} ${ac_configure_args}" -multi_basedir="$multi_basedir" -CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -CC="$CC" -CXX="$CXX" -GFORTRAN="$GFORTRAN" -GCJ="$GCJ" -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -AR \ -AR_FLAGS \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_wl \ -lt_prog_compiler_pic \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ -hardcode_libdir_separator \ -fix_srcfile_path \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;; - "testsuite/mfconfig.exp") CONFIG_FILES="$CONFIG_FILES testsuite/mfconfig.exp" ;; - - *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= - trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\).*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\).*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' <conf$$subs.awk | sed ' -/^[^""]/{ - N - s/\n// -} -' >>$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ - || as_fn_error "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ -s/:*$// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_t=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_t"; then - break - elif $ac_last_try; then - as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' <confdefs.h | sed ' -s/'"$ac_delim"'/"\\\ -"/g' >>$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # 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. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin" \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} - - rm -f "$tmp/stdin" - case $ac_file in - -) cat "$tmp/out" && rm -f "$tmp/out";; - *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; - esac \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" - } >"$tmp/config.h" \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$tmp/config.h" "$ac_file" \ - || as_fn_error "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "default-1":C) -# Only add multilib support code if we just rebuilt the top-level -# Makefile. -case " $CONFIG_FILES " in - *" Makefile "*) - ac_file=Makefile . ${multi_basedir}/config-ml.in - ;; -esac ;; - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="" - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# 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 - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path=$lt_fix_srcfile_path - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - case $xsi_shell in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac -} - -# func_basename file -func_basename () -{ - func_basename_result="${1##*/}" -} - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}" -} - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -func_stripname () -{ - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"} -} - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=${1%%=*} - func_opt_split_arg=${1#*=} -} - -# func_lo2o object -func_lo2o () -{ - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=${1%.*}.lo -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=$(( $* )) -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=${#1} -} - -_LT_EOF - ;; - *) # Bourne compatible functions. - cat << \_LT_EOF >> "$cfgfile" - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} - -# sed scripts: -my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' -my_sed_long_arg='1s/^-[^=]*=//' - -# func_opt_split -func_opt_split () -{ - func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` -} - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "$@"` -} - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` -} - -_LT_EOF -esac - -case $lt_shell_append in - yes) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1+=\$2" -} -_LT_EOF - ;; - *) - cat << \_LT_EOF >> "$cfgfile" - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "$1=\$$1\$2" -} - -_LT_EOF - ;; - esac - - - sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit $? -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/libmudflap/configure.ac b/libmudflap/configure.ac deleted file mode 100644 index 83aba5a..0000000 --- a/libmudflap/configure.ac +++ /dev/null @@ -1,270 +0,0 @@ -# Process this file with autoconf to produce a configure script, like so: -# aclocal -I .. -I ../config && autoconf && autoheader && automake - -AC_PREREQ(2.64) -AC_INIT(libmudflap, 1.0) -AC_CONFIG_SRCDIR(mf-runtime.c) -AC_CANONICAL_SYSTEM -ACX_NONCANONICAL_TARGET - -AM_INIT_AUTOMAKE([no-dist]) - -AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) -AC_ARG_ENABLE(version-specific-runtime-libs, -[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ], -[case "$enableval" in - yes) version_specific_libs=yes ;; - no) version_specific_libs=no ;; - *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);; - esac], -[version_specific_libs=no]) -AC_MSG_RESULT($version_specific_libs) - -AM_MAINTAINER_MODE -AC_EXEEXT - -AM_ENABLE_MULTILIB(, ..) - -target_alias=${target_alias-$host_alias} -AC_SUBST(target_alias) - -AC_CONFIG_HEADERS(config.h) - -AC_LANG_C -# The same as in boehm-gc and libstdc++. Have to borrow it from there. -# We must force CC to /not/ be precious variables; otherwise -# the wrong, non-multilib-adjusted value will be used in multilibs. -# As a side effect, we have to subst CFLAGS ourselves. - -m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) -m4_define([_AC_ARG_VAR_PRECIOUS],[]) -AC_PROG_CC -m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) - -AC_SUBST(CFLAGS) - -if test "x$GCC" != "xyes"; then - AC_MSG_ERROR([libmudflap must be built with GCC]) -fi -AC_PROG_CPP - -# Some hosts don't have dlsym(RTLD_NEXT, "symbol") for use in -# symbol interposition. We disable shared libraries for these. -AC_MSG_CHECKING([whether dlsym(RTLD_NEXT,...) is available]) -AC_TRY_COMPILE([ -#define _GNU_SOURCE -#include <dlfcn.h> -], -[void *foo = dlsym (RTLD_NEXT, "exit");], -[AC_MSG_RESULT(yes)], -[AC_MSG_RESULT(no) -enable_shared=no]) - -AC_CHECK_HEADERS(stdint.h execinfo.h signal.h dlfcn.h dirent.h pwd.h grp.h \ - netdb.h sys/ipc.h sys/sem.h sys/shm.h sys/wait.h ctype.h mntent.h \ - sys/mnttab.h sys/socket.h netinet/in.h arpa/inet.h dlfcn.h sys/mman.h) - -AC_CHECK_FUNCS(backtrace backtrace_symbols gettimeofday signal) -AC_CHECK_FUNCS(fopen64 fseeko64 ftello64 stat64 freopen64) -AC_CHECK_FUNCS(setbuf setbuffer setlinebuf setvbuf) -AC_CHECK_FUNCS(strnlen memrchr strncpy memmem sethostname) -AC_CHECK_FUNCS(__ctype_b_loc __ctype_tolower_loc __ctype_toupper_loc) -AC_CHECK_FUNCS(getlogin cuserid getpwnam getpwuid getpwent getgrnam getgrgid getgrent) -AC_CHECK_FUNCS(getlogin_r getpwnam_r getpwuid_r getgrnam_r getgrgid_r) -AC_CHECK_FUNCS(getservent getservbyname getservbyport getaddrinfo gai_strerror) -AC_CHECK_FUNCS(getprotoent getprotobyname getprotobynumber) -AC_CHECK_FUNCS(getmntent setmntent addmntent) -AC_CHECK_FUNCS(inet_ntoa mmap munmap) -AC_CHECK_FUNCS(mmap64) -AC_CHECK_FUNCS(__libc_freeres) -AC_CHECK_FUNCS(rawmemchr stpcpy mempcpy) - -AC_TRY_COMPILE([#include <sys/types.h> -#include <sys/ipc.h> -#include <sys/sem.h>],[union semun foo;], [mf_have_semun=1], [mf_have_semun=0]) -if test $mf_have_semun = 1 -then - AC_DEFINE(HAVE_UNION_SEMUN, 1, [union semun defined in sys/ipc.h or sys/sem.h]) -fi - - -AC_MSG_CHECKING([for socklen_t in sys/socket.h]) -AC_TRY_COMPILE([#define _POSIX_PII_SOCKET -#include <sys/types.h> -#include <sys/socket.h>], [socklen_t x = 5;], - [AC_DEFINE(HAVE_SOCKLEN_T, 1, [Define it socklen_t typedef is in sys/socket.h.]) - AC_MSG_RESULT(yes)], - [AC_MSG_RESULT(no)]) - -AC_LIBTOOL_DLOPEN -AM_PROG_LIBTOOL -AC_SUBST(enable_shared) -AC_SUBST(enable_static) - -AC_CHECK_HEADER(stdint.h, [MF_HAVE_STDINT_H=1], [MF_HAVE_STDINT_H=0]) -AC_SUBST(MF_HAVE_STDINT_H) -if test $MF_HAVE_STDINT_H = 1 -then - MF_HAVE_UINTPTR_T=1 -else - AC_TRY_COMPILE([#include <sys/types.h>], [uintptr_t k = 0;], - [MF_HAVE_UINTPTR_T=1], [MF_HAVE_UINTPTR_T=0]) -fi -AC_SUBST(MF_HAVE_UINTPTR_T) - -AC_CHECK_HEADERS(pthread.h) - -AC_MSG_CHECKING([for thread model used by GCC]) -target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` -AC_MSG_RESULT([$target_thread_file]) - -# We only support posix threads, or no threads at all. -posix_threads= -case ${target_thread_file} in - posix) - posix_threads=yes - ;; - single) - ;; - *) - echo "${target_thread_file} is an unsupported thread package" 1>&2 - exit 1 - ;; -esac - -AM_CONDITIONAL(LIBMUDFLAPTH, [test "x$posix_threads" != "x"]) -if test "x$posix_threads" != "x" -then - build_libmudflapth=1 -else - build_libmudflapth=0 -fi -AC_SUBST(build_libmudflapth) - -AC_CHECK_LIB(dl, dlsym) - -AC_CHECK_FUNC(connect,, AC_CHECK_LIB(socket, connect)) -AC_CHECK_FUNC(sched_yield,, AC_CHECK_LIB(rt, sched_yield)) - -# Calculate toolexeclibdir -# Also toolexecdir, though it's only used in toolexeclibdir -case ${version_specific_libs} in - yes) - # Need the gcc compiler version to know where to install libraries - # and header files if --enable-version-specific-runtime-libs option - # is selected. - toolexecdir='$(libdir)/gcc/$(target_alias)' - toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' - ;; - no) - if test -n "$with_cross_host" && - test x"$with_cross_host" != x"no"; then - # Install a library built with a cross compiler in tooldir, not libdir. - toolexecdir='$(exec_prefix)/$(target_alias)' - toolexeclibdir='$(toolexecdir)/lib' - else - toolexecdir='$(libdir)/gcc-lib/$(target_alias)' - toolexeclibdir='$(libdir)' - fi - multi_os_directory=`$CC -print-multi-os-directory` - case $multi_os_directory in - .) ;; # Avoid trailing /. - *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; - esac - ;; -esac -AC_SUBST(toolexecdir) -AC_SUBST(toolexeclibdir) - -includedir=${toolexecdir}/include -AC_SUBST(includedir) - -pthread_create_version='""' -if test "x$enable_shared" = "xyes" && test "x$posix_threads" != "x"; then - # NB: don't check for -lpthread here, because then it would be - # added to LIBS. For the thread-unaware libmudflap.la, we don't - # want it there. - - # glibc-related hacks. dlsym() may pick the wrong version of - # interposed functions like pthread_create on modern glibc. - # We need to find the proper symbol version string, and use - # the nonstandard dlvsym(). - AC_CHECK_FUNCS(dlvsym) - AC_CHECK_TOOL(NM, nm) - if test "x$ac_cv_have_dlvsym" != "x"; then - # Try compiling a simple pthreads program. Find the shared libraries it - # ends up with. Then use "nm" on those libraries to extract the - # default symbol versioning suffix ("@@"), if any. But that's tricky. - # Rather, run nm on the resulting executable. Unfortunately, autoconf - # doesn't appear to have a macro that builds a test executable for - # subsequent analysis ... so we do it by hand here. - cat >> conftest.c << EOF -#include <pthread.h> -int main () { void *p = (void *) & pthread_create; return (int) p; } -EOF - oldLIBS="$LIBS" - LIBS="$LIBS -lpthread" - pthread_create_version="\"\"" - AC_MSG_CHECKING(pthread_create symbol version) - if eval $ac_link 2>&5 && test -s conftest${ac_exeext}; then - version=`$NM conftest${ac_exeect} | grep 'pthread_create@@' | sed -e 's/^.*@@//'` - if test "x$version" != "x"; then - pthread_create_version="\"$version\"" - fi - fi - AC_MSG_RESULT($pthread_create_version) - LIBS="$oldLIBS" - fi -fi -AC_DEFINE_UNQUOTED(PTHREAD_CREATE_VERSION, $pthread_create_version, [pthread_create symbol version]) - - -# Figure out whether the compiler supports "-ffunction-sections -fdata-sections", -# similarly to how libstdc++ does it -ac_test_CFLAGS="${CFLAGS+set}" -ac_save_CFLAGS="$CFLAGS" - -# Check for -ffunction-sections -fdata-sections -AC_MSG_CHECKING([for gcc that supports -ffunction-sections -fdata-sections]) -CFLAGS='-Werror -ffunction-sections -fdata-sections' -AC_TRY_COMPILE(, [int foo;], [ac_fdsections=yes], [ac_fdsections=no]) -if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" -else - # this is the suspicious part - CFLAGS="" -fi -if test x"$ac_fdsections" = x"yes"; then - SECTION_FLAGS='-ffunction-sections -fdata-sections' -fi -AC_MSG_RESULT($ac_fdsections) -AC_SUBST(SECTION_FLAGS) - - -# Check for the name of the symbol used for the entry point. -AC_CACHE_CHECK([for the name of the symbol used for the entry point], - [mudflap_cv_entry_point], [ -for name in _start __start unknown; do - AC_LINK_IFELSE([AC_LANG_PROGRAM([extern char $name@<:@@:>@;], [$name@<:@0@:>@ = 0;])], - [break]) -done -mudflap_cv_entry_point="$name"]) -if test "$mudflap_cv_entry_point" = unknown; then - AC_MSG_ERROR([none of the known symbol names works]) -fi -AC_DEFINE_UNQUOTED([ENTRY_POINT], [$mudflap_cv_entry_point], - [Define to the name of the symbol used for the entry point.]) - - -if test ${multilib} = yes; then - multilib_arg="--enable-multilib" -else - multilib_arg= -fi - -# See if we support thread-local storage. -GCC_CHECK_TLS -GCC_CHECK_EMUTLS - -AC_CONFIG_FILES([Makefile testsuite/Makefile testsuite/mfconfig.exp]) -AC_OUTPUT diff --git a/libmudflap/libtool-version b/libmudflap/libtool-version deleted file mode 100644 index 204fdd2..0000000 --- a/libmudflap/libtool-version +++ /dev/null @@ -1,6 +0,0 @@ -# This file is used to maintain libtool version info for libmudflap. See -# the libtool manual to understand the meaning of the fields. This is -# a separate file so that version updates don't involve re-running -# automake. -# CURRENT:REVISION:AGE -0:0:0 diff --git a/libmudflap/mf-heuristics.c b/libmudflap/mf-heuristics.c deleted file mode 100644 index fa2dacb..0000000 --- a/libmudflap/mf-heuristics.c +++ /dev/null @@ -1,169 +0,0 @@ -/* Mudflap: narrow-pointer bounds-checking by tree rewriting. - Copyright (C) 2002-2013 Free Software Foundation, Inc. - Contributed by Frank Ch. Eigler <fche@redhat.com> - and Graydon Hoare <graydon@redhat.com> - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. */ - -#include "config.h" - -#include <stdio.h> - -#include "mf-runtime.h" -#include "mf-impl.h" - -#ifdef _MUDFLAP -#error "Do not compile this file with -fmudflap!" -#endif - - -extern char _end[]; -extern char ENTRY_POINT[]; - - -/* Run some quick validation of the given region. - Return -1 / 0 / 1 if the access known-invalid, possibly-valid, or known-valid. -*/ -int -__mf_heuristic_check (uintptr_t ptr, uintptr_t ptr_high) -{ - VERBOSE_TRACE ("mf: heuristic check\n"); - - /* XXX: Disable the stack bounding check for libmudflapth. We do - actually have enough information to track stack bounds (see - __mf_pthread_info in mf-hooks.c), so with a bit of future work, - this heuristic can be turned on. */ -#ifndef LIBMUDFLAPTH - - /* The first heuristic is to check stack bounds. This is a - transient condition and quick to check. */ - if (__mf_opts.heur_stack_bound) - { - uintptr_t stack_top_guess = (uintptr_t)__builtin_frame_address(0); -#if defined(__i386__) && defined (__linux__) - uintptr_t stack_segment_base = 0xC0000000; /* XXX: Bad assumption. */ -#else - /* Cause tests to fail. */ - uintptr_t stack_segment_base = 0; -#endif - - VERBOSE_TRACE ("mf: stack estimated as %p-%p\n", - (void *) stack_top_guess, (void *) stack_segment_base); - - if (ptr_high <= stack_segment_base && - ptr >= stack_top_guess && - ptr_high >= ptr) - { - return 1; - } - } -#endif - - - /* The second heuristic is to scan the range of memory regions - listed in /proc/self/maps, a special file provided by the Linux - kernel. Its results may be cached, and in fact, a GUESS object - may as well be recorded for interesting matching sections. */ - if (__mf_opts.heur_proc_map) - { - /* Keep a record of seen records from /proc/self/map. */ - enum { max_entries = 500 }; - struct proc_self_map_entry - { - uintptr_t low; - uintptr_t high; - }; - static struct proc_self_map_entry entry [max_entries]; - static unsigned entry_used [max_entries]; - - /* Look for a known proc_self_map entry that may cover this - region. If one exists, then this heuristic has already run, - and should not be run again. The check should be allowed to - fail. */ - unsigned i; - unsigned deja_vu = 0; - for (i=0; i<max_entries; i++) - { - if (entry_used[i] && - (entry[i].low <= ptr) && - (entry[i].high >= ptr_high)) - deja_vu = 1; - } - - if (! deja_vu) - { - /* Time to run the heuristic. Rescan /proc/self/maps; update the - entry[] array; XXX: remove expired entries, add new ones. - XXX: Consider entries that have grown (e.g., stack). */ - char buf[512]; - char flags[4]; - void *low, *high; - FILE *fp; - - fp = fopen ("/proc/self/maps", "r"); - if (fp) - { - while (fgets (buf, sizeof(buf), fp)) - { - if (sscanf (buf, "%p-%p %4c", &low, &high, flags) == 3) - { - if ((uintptr_t) low <= ptr && - (uintptr_t) high >= ptr_high) - { - for (i=0; i<max_entries; i++) - { - if (! entry_used[i]) - { - entry[i].low = (uintptr_t) low; - entry[i].high = (uintptr_t) high; - entry_used[i] = 1; - break; - } - } - - VERBOSE_TRACE ("mf: registering region #%d " - "%p-%p given %s", - i, (void *) low, (void *) high, buf); - - __mfu_register ((void *) low, (size_t) (high-low), - __MF_TYPE_GUESS, - "/proc/self/maps segment"); - - return 0; /* undecided (tending to cachable) */ - } - } - } - fclose (fp); - } - } - } - - - /* The third heuristic is to approve all accesses between _start (or its - equivalent for the given target) and _end, which should include all - text and initialized data. */ - if (__mf_opts.heur_start_end) - if (ptr >= (uintptr_t) & ENTRY_POINT && ptr_high <= (uintptr_t) & _end) - return 1; /* uncacheable */ - - return 0; /* unknown */ -} diff --git a/libmudflap/mf-hooks1.c b/libmudflap/mf-hooks1.c deleted file mode 100644 index 474c835..0000000 --- a/libmudflap/mf-hooks1.c +++ /dev/null @@ -1,555 +0,0 @@ -/* Mudflap: narrow-pointer bounds-checking by tree rewriting. - Copyright (C) 2002-2013 Free Software Foundation, Inc. - Contributed by Frank Ch. Eigler <fche@redhat.com> - and Graydon Hoare <graydon@redhat.com> - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. */ - -#include "config.h" - -#ifndef HAVE_SOCKLEN_T -#define socklen_t int -#endif - - -/* These attempt to coax various unix flavours to declare all our - needed tidbits in the system headers. */ -#if !defined(__FreeBSD__) && !defined(__APPLE__) -#define _POSIX_SOURCE -#endif /* Some BSDs break <sys/socket.h> if this is defined. */ -#define _GNU_SOURCE -#define _XOPEN_SOURCE -#define _BSD_TYPES -#define __EXTENSIONS__ -#define _ALL_SOURCE -#define _LARGE_FILE_API -#define _XOPEN_SOURCE_EXTENDED 1 - -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <sys/time.h> -#include <sys/types.h> -#include <unistd.h> -#include <assert.h> -#include <errno.h> -#include <limits.h> -#include <time.h> - -#include "mf-runtime.h" -#include "mf-impl.h" - -#ifdef _MUDFLAP -#error "Do not compile this file with -fmudflap!" -#endif - - -/* Memory allocation related hook functions. Some of these are - intercepted via linker wrapping or symbol interposition. Others - use plain macros in mf-runtime.h. */ - - -#if PIC - -enum { BS = 4096, NB=10 }; -static char __mf_0fn_bufs[NB][BS]; -static unsigned __mf_0fn_bufs_used[NB]; - - -/* A special bootstrap variant. */ -void * -__mf_0fn_malloc (size_t c) -{ - unsigned i; - - for (i=0; i<NB; i++) - { - if (! __mf_0fn_bufs_used[i] && c < BS) - { - __mf_0fn_bufs_used[i] = 1; - return & __mf_0fn_bufs[i][0]; - } - } - return NULL; -} -#endif - - -#undef malloc -WRAPPER(void *, malloc, size_t c) -{ - size_t size_with_crumple_zones; - DECLARE(void *, malloc, size_t c); - void *result; - BEGIN_PROTECT (malloc, c); - - size_with_crumple_zones = - CLAMPADD(c,CLAMPADD(__mf_opts.crumple_zone, - __mf_opts.crumple_zone)); - BEGIN_MALLOC_PROTECT (); - result = (char *) CALL_REAL (malloc, size_with_crumple_zones); - END_MALLOC_PROTECT (); - - if (LIKELY(result)) - { - result += __mf_opts.crumple_zone; - __mf_register (result, c, __MF_TYPE_HEAP, "malloc region"); - /* XXX: register __MF_TYPE_NOACCESS for crumple zones. */ - } - - return result; -} - - -#ifdef PIC -/* A special bootstrap variant. */ -void * -__mf_0fn_calloc (size_t c, size_t n) -{ - return __mf_0fn_malloc (c * n); -} -#endif - - -#undef calloc -WRAPPER(void *, calloc, size_t c, size_t n) -{ - size_t size_with_crumple_zones; - DECLARE(void *, calloc, size_t, size_t); - DECLARE(void *, malloc, size_t); - DECLARE(void *, memset, void *, int, size_t); - char *result; - BEGIN_PROTECT (calloc, c, n); - - size_with_crumple_zones = - CLAMPADD((c * n), /* XXX: CLAMPMUL */ - CLAMPADD(__mf_opts.crumple_zone, - __mf_opts.crumple_zone)); - BEGIN_MALLOC_PROTECT (); - result = (char *) CALL_REAL (malloc, size_with_crumple_zones); - END_MALLOC_PROTECT (); - - if (LIKELY(result)) - memset (result, 0, size_with_crumple_zones); - - if (LIKELY(result)) - { - result += __mf_opts.crumple_zone; - __mf_register (result, c*n /* XXX: clamp */, __MF_TYPE_HEAP_I, "calloc region"); - /* XXX: register __MF_TYPE_NOACCESS for crumple zones. */ - } - - return result; -} - - -#if PIC -/* A special bootstrap variant. */ -void * -__mf_0fn_realloc (void *buf, size_t c) -{ - return NULL; -} -#endif - - -#undef realloc -WRAPPER(void *, realloc, void *buf, size_t c) -{ - DECLARE(void * , realloc, void *, size_t); - size_t size_with_crumple_zones; - char *base = buf; - unsigned saved_wipe_heap; - char *result; - BEGIN_PROTECT (realloc, buf, c); - - if (LIKELY(buf)) - base -= __mf_opts.crumple_zone; - - size_with_crumple_zones = - CLAMPADD(c, CLAMPADD(__mf_opts.crumple_zone, - __mf_opts.crumple_zone)); - BEGIN_MALLOC_PROTECT (); - result = (char *) CALL_REAL (realloc, base, size_with_crumple_zones); - END_MALLOC_PROTECT (); - - /* Ensure heap wiping doesn't occur during this peculiar - unregister/reregister pair. */ - LOCKTH (); - __mf_set_state (reentrant); - saved_wipe_heap = __mf_opts.wipe_heap; - __mf_opts.wipe_heap = 0; - - if (LIKELY(buf)) - __mfu_unregister (buf, 0, __MF_TYPE_HEAP_I); - /* NB: underlying region may have been __MF_TYPE_HEAP. */ - - if (LIKELY(result)) - { - result += __mf_opts.crumple_zone; - __mfu_register (result, c, __MF_TYPE_HEAP_I, "realloc region"); - /* XXX: register __MF_TYPE_NOACCESS for crumple zones. */ - } - - /* Restore previous setting. */ - __mf_opts.wipe_heap = saved_wipe_heap; - - __mf_set_state (active); - UNLOCKTH (); - - return result; -} - - -#if PIC -/* A special bootstrap variant. */ -void -__mf_0fn_free (void *buf) -{ - return; -} -#endif - -#undef free -WRAPPER(void, free, void *buf) -{ - /* Use a circular queue to delay some number (__mf_opts.free_queue_length) of free()s. */ - static void *free_queue [__MF_FREEQ_MAX]; - static unsigned free_ptr = 0; - static int freeq_initialized = 0; - DECLARE(void, free, void *); - - if (UNLIKELY(buf == NULL)) - return; - - BEGIN_PROTECT (free, buf); - -#if PIC - /* Check whether the given buffer might have come from a - __mf_0fn_malloc/calloc call that for whatever reason was not - redirected back to __mf_0fn_free. If so, we just ignore the - call. */ - if (UNLIKELY((uintptr_t) buf >= (uintptr_t) __mf_0fn_bufs && - (uintptr_t) buf < ((uintptr_t) __mf_0fn_bufs + sizeof(__mf_0fn_bufs)))) - { - VERBOSE_TRACE ("skipping free of boot (0fn) alloc buffer %p\n", buf); - return; - } -#endif - - LOCKTH (); - if (UNLIKELY(!freeq_initialized)) - { - memset (free_queue, 0, - __MF_FREEQ_MAX * sizeof (void *)); - freeq_initialized = 1; - } - UNLOCKTH (); - - __mf_unregister (buf, 0, __MF_TYPE_HEAP_I); - /* NB: underlying region may have been __MF_TYPE_HEAP. */ - - if (UNLIKELY(__mf_opts.free_queue_length > 0)) - { - char *freeme = NULL; - LOCKTH (); - if (free_queue [free_ptr] != NULL) - { - freeme = free_queue [free_ptr]; - freeme -= __mf_opts.crumple_zone; - } - free_queue [free_ptr] = buf; - free_ptr = (free_ptr == (__mf_opts.free_queue_length-1) ? 0 : free_ptr + 1); - UNLOCKTH (); - if (freeme) - { - if (__mf_opts.trace_mf_calls) - { - VERBOSE_TRACE ("freeing deferred pointer %p (crumple %u)\n", - (void *) freeme, - __mf_opts.crumple_zone); - } - BEGIN_MALLOC_PROTECT (); - CALL_REAL (free, freeme); - END_MALLOC_PROTECT (); - } - } - else - { - /* back pointer up a bit to the beginning of crumple zone */ - char *base = (char *)buf; - base -= __mf_opts.crumple_zone; - if (__mf_opts.trace_mf_calls) - { - VERBOSE_TRACE ("freeing pointer %p = %p - %u\n", - (void *) base, - (void *) buf, - __mf_opts.crumple_zone); - } - BEGIN_MALLOC_PROTECT (); - CALL_REAL (free, base); - END_MALLOC_PROTECT (); - } -} - - -/* We can only wrap mmap if the target supports it. Likewise for munmap. - We assume we have both if we have mmap. */ -#ifdef HAVE_MMAP - -#if PIC -/* A special bootstrap variant. */ -void * -__mf_0fn_mmap (void *start, size_t l, int prot, int f, int fd, off_t off) -{ -#if defined(__FreeBSD__) - if (f == 0x1000 && fd == -1 && prot == 0 && off == 0) - return 0; -#endif /* Ignore red zone allocation request for initial thread's stack. */ - - return (void *) -1; -} -#endif - - -#undef mmap -WRAPPER(void *, mmap, - void *start, size_t length, int prot, - int flags, int fd, off_t offset) -{ - DECLARE(void *, mmap, void *, size_t, int, - int, int, off_t); - void *result; - BEGIN_PROTECT (mmap, start, length, prot, flags, fd, offset); - - result = CALL_REAL (mmap, start, length, prot, - flags, fd, offset); - - /* - VERBOSE_TRACE ("mmap (%08lx, %08lx, ...) => %08lx\n", - (uintptr_t) start, (uintptr_t) length, - (uintptr_t) result); - */ - - if (result != (void *)-1) - { - /* Register each page as a heap object. Why not register it all - as a single segment? That's so that a later munmap() call - can unmap individual pages. XXX: would __MF_TYPE_GUESS make - this more automatic? */ - size_t ps = getpagesize (); - uintptr_t base = (uintptr_t) result; - uintptr_t offset; - - for (offset=0; offset<length; offset+=ps) - { - /* XXX: We could map PROT_NONE to __MF_TYPE_NOACCESS. */ - /* XXX: Unaccessed HEAP pages are reported as leaks. Is this - appropriate for unaccessed mmap pages? */ - __mf_register ((void *) CLAMPADD (base, offset), ps, - __MF_TYPE_HEAP_I, "mmap page"); - } - } - - return result; -} - - -#if PIC -/* A special bootstrap variant. */ -int -__mf_0fn_munmap (void *start, size_t length) -{ - return -1; -} -#endif - - -#undef munmap -WRAPPER(int , munmap, void *start, size_t length) -{ - DECLARE(int, munmap, void *, size_t); - int result; - BEGIN_PROTECT (munmap, start, length); - - result = CALL_REAL (munmap, start, length); - - /* - VERBOSE_TRACE ("munmap (%08lx, %08lx, ...) => %08lx\n", - (uintptr_t) start, (uintptr_t) length, - (uintptr_t) result); - */ - - if (result == 0) - { - /* Unregister each page as a heap object. */ - size_t ps = getpagesize (); - uintptr_t base = (uintptr_t) start & (~ (ps - 1)); /* page align */ - uintptr_t offset; - - for (offset=0; offset<length; offset+=ps) - __mf_unregister ((void *) CLAMPADD (base, offset), ps, __MF_TYPE_HEAP_I); - } - return result; -} -#endif /* HAVE_MMAP */ - - -#ifdef HAVE_MMAP64 -#if PIC -/* A special bootstrap variant. */ -void * -__mf_0fn_mmap64 (void *start, size_t l, int prot, int f, int fd, off64_t off) -{ - return (void *) -1; -} -#endif - - -#undef mmap -WRAPPER(void *, mmap64, - void *start, size_t length, int prot, - int flags, int fd, off64_t offset) -{ - DECLARE(void *, mmap64, void *, size_t, int, - int, int, off64_t); - void *result; - BEGIN_PROTECT (mmap64, start, length, prot, flags, fd, offset); - - result = CALL_REAL (mmap64, start, length, prot, - flags, fd, offset); - - /* - VERBOSE_TRACE ("mmap64 (%08lx, %08lx, ...) => %08lx\n", - (uintptr_t) start, (uintptr_t) length, - (uintptr_t) result); - */ - - if (result != (void *)-1) - { - /* Register each page as a heap object. Why not register it all - as a single segment? That's so that a later munmap() call - can unmap individual pages. XXX: would __MF_TYPE_GUESS make - this more automatic? */ - size_t ps = getpagesize (); - uintptr_t base = (uintptr_t) result; - uintptr_t offset; - - for (offset=0; offset<length; offset+=ps) - { - /* XXX: We could map PROT_NONE to __MF_TYPE_NOACCESS. */ - /* XXX: Unaccessed HEAP pages are reported as leaks. Is this - appropriate for unaccessed mmap pages? */ - __mf_register ((void *) CLAMPADD (base, offset), ps, - __MF_TYPE_HEAP_I, "mmap64 page"); - } - } - - return result; -} -#endif /* HAVE_MMAP64 */ - - -/* This wrapper is a little different, as it's called indirectly from - __mf_fini also to clean up pending allocations. */ -void * -__mf_wrap_alloca_indirect (size_t c) -{ - DECLARE (void *, malloc, size_t); - DECLARE (void, free, void *); - - /* This struct, a linked list, tracks alloca'd objects. The newest - object is at the head of the list. If we detect that we've - popped a few levels of stack, then the listed objects are freed - as needed. NB: The tracking struct is allocated with - real_malloc; the user data with wrap_malloc. - */ - struct alloca_tracking { void *ptr; void *stack; struct alloca_tracking* next; }; - static struct alloca_tracking *alloca_history = NULL; - - void *stack = __builtin_frame_address (0); - void *result; - struct alloca_tracking *track; - - TRACE ("%s\n", __PRETTY_FUNCTION__); - VERBOSE_TRACE ("alloca stack level %p\n", (void *) stack); - - /* XXX: thread locking! */ - - /* Free any previously alloca'd blocks that belong to deeper-nested functions, - which must therefore have exited by now. */ - -#define DEEPER_THAN < /* XXX: for x86; steal find_stack_direction() from libiberty/alloca.c */ - - while (alloca_history && - ((uintptr_t) alloca_history->stack DEEPER_THAN (uintptr_t) stack)) - { - struct alloca_tracking *next = alloca_history->next; - __mf_unregister (alloca_history->ptr, 0, __MF_TYPE_HEAP); - BEGIN_MALLOC_PROTECT (); - CALL_REAL (free, alloca_history->ptr); - CALL_REAL (free, alloca_history); - END_MALLOC_PROTECT (); - alloca_history = next; - } - - /* Allocate new block. */ - result = NULL; - if (LIKELY (c > 0)) /* alloca(0) causes no allocation. */ - { - BEGIN_MALLOC_PROTECT (); - track = (struct alloca_tracking *) CALL_REAL (malloc, - sizeof (struct alloca_tracking)); - END_MALLOC_PROTECT (); - if (LIKELY (track != NULL)) - { - BEGIN_MALLOC_PROTECT (); - result = CALL_REAL (malloc, c); - END_MALLOC_PROTECT (); - if (UNLIKELY (result == NULL)) - { - BEGIN_MALLOC_PROTECT (); - CALL_REAL (free, track); - END_MALLOC_PROTECT (); - /* Too bad. XXX: What about errno? */ - } - else - { - __mf_register (result, c, __MF_TYPE_HEAP, "alloca region"); - track->ptr = result; - track->stack = stack; - track->next = alloca_history; - alloca_history = track; - } - } - } - - return result; -} - - -#undef alloca -WRAPPER(void *, alloca, size_t c) -{ - return __mf_wrap_alloca_indirect (c); -} - diff --git a/libmudflap/mf-hooks2.c b/libmudflap/mf-hooks2.c deleted file mode 100644 index 4af17df..0000000 --- a/libmudflap/mf-hooks2.c +++ /dev/null @@ -1,2198 +0,0 @@ -/* Mudflap: narrow-pointer bounds-checking by tree rewriting. - Copyright (C) 2002-2013 Free Software Foundation, Inc. - Contributed by Frank Ch. Eigler <fche@redhat.com> - and Graydon Hoare <graydon@redhat.com> - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. */ - -#include "config.h" - -#ifndef HAVE_SOCKLEN_T -#define socklen_t int -#endif - -/* These attempt to coax various unix flavours to declare all our - needed tidbits in the system headers. */ -#if !defined(__FreeBSD__) && !defined(__APPLE__) -#define _POSIX_SOURCE -#endif /* Some BSDs break <sys/socket.h> if this is defined. */ -#define _GNU_SOURCE -#define _XOPEN_SOURCE -#define _BSD_TYPES -#define __EXTENSIONS__ -#define _ALL_SOURCE -#define _LARGE_FILE_API -#define _LARGEFILE64_SOURCE -#define _XOPEN_SOURCE_EXTENDED 1 - -#include <string.h> -#include <stdarg.h> -#include <stdio.h> -#include <stdlib.h> -#include <sys/stat.h> -#include <sys/time.h> -#include <sys/types.h> -#include <unistd.h> -#include <assert.h> -#include <errno.h> -#include <limits.h> -#include <time.h> -#include <ctype.h> -#ifdef HAVE_DLFCN_H -#include <dlfcn.h> -#endif -#ifdef HAVE_DIRENT_H -#include <dirent.h> -#endif -#ifdef HAVE_SYS_SOCKET_H -#include <sys/socket.h> -#endif -#ifdef HAVE_NETDB_H -#include <netdb.h> -#endif -#ifdef HAVE_SYS_WAIT_H -#include <sys/wait.h> -#endif -#ifdef HAVE_SYS_IPC_H -#include <sys/ipc.h> -#endif -#ifdef HAVE_SYS_SEM_H -#include <sys/sem.h> -#endif -#ifdef HAVE_SYS_SHM_H -#include <sys/shm.h> -#endif -#ifdef HAVE_PWD_H -#include <pwd.h> -#endif -#ifdef HAVE_GRP_H -#include <grp.h> -#endif -#ifdef HAVE_MNTENT_H -#include <mntent.h> -#endif -#ifdef HAVE_SYS_MNTTAB_H -#include <sys/mnttab.h> -#endif -#ifdef HAVE_SYS_SOCKET_H -#include <sys/socket.h> -#endif -#ifdef HAVE_NETINET_IN_H -#include <netinet/in.h> -#endif -#ifdef HAVE_ARPA_INET_H -#include <arpa/inet.h> -#endif - -#include "mf-runtime.h" -#include "mf-impl.h" - -#ifdef _MUDFLAP -#error "Do not compile this file with -fmudflap!" -#endif - - -/* A bunch of independent stdlib/unistd hook functions, all - intercepted by mf-runtime.h macros. */ - -#ifndef HAVE_STRNLEN -static inline size_t (strnlen) (const char* str, size_t n) -{ - const char *s; - - for (s = str; n && *s; ++s, --n) - ; - return (s - str); -} -#endif - - -/* str*,mem*,b* */ - -WRAPPER2(void *, memcpy, void *dest, const void *src, size_t n) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(src, n, __MF_CHECK_READ, "memcpy source"); - MF_VALIDATE_EXTENT(dest, n, __MF_CHECK_WRITE, "memcpy dest"); - return memcpy (dest, src, n); -} - - -WRAPPER2(void *, memmove, void *dest, const void *src, size_t n) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(src, n, __MF_CHECK_READ, "memmove src"); - MF_VALIDATE_EXTENT(dest, n, __MF_CHECK_WRITE, "memmove dest"); - return memmove (dest, src, n); -} - - -WRAPPER2(void *, memset, void *s, int c, size_t n) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(s, n, __MF_CHECK_WRITE, "memset dest"); - return memset (s, c, n); -} - - -WRAPPER2(int, memcmp, const void *s1, const void *s2, size_t n) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(s1, n, __MF_CHECK_READ, "memcmp 1st arg"); - MF_VALIDATE_EXTENT(s2, n, __MF_CHECK_READ, "memcmp 2nd arg"); - return memcmp (s1, s2, n); -} - - -WRAPPER2(void *, memchr, const void *s, int c, size_t n) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(s, n, __MF_CHECK_READ, "memchr region"); - return memchr (s, c, n); -} - - -#ifdef HAVE_MEMRCHR -WRAPPER2(void *, memrchr, const void *s, int c, size_t n) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(s, n, __MF_CHECK_READ, "memrchr region"); - return memrchr (s, c, n); -} -#endif - - -WRAPPER2(char *, strcpy, char *dest, const char *src) -{ - /* nb: just because strlen(src) == n doesn't mean (src + n) or (src + n + - 1) are valid pointers. the allocated object might have size < n. - check anyways. */ - - size_t n = strlen (src); - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(src, CLAMPADD(n, 1), __MF_CHECK_READ, "strcpy src"); - MF_VALIDATE_EXTENT(dest, CLAMPADD(n, 1), __MF_CHECK_WRITE, "strcpy dest"); - return strcpy (dest, src); -} - - -#ifdef HAVE_STRNCPY -WRAPPER2(char *, strncpy, char *dest, const char *src, size_t n) -{ - size_t len = strnlen (src, n); - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(src, len, __MF_CHECK_READ, "strncpy src"); - MF_VALIDATE_EXTENT(dest, len, __MF_CHECK_WRITE, "strncpy dest"); /* nb: strNcpy */ - return strncpy (dest, src, n); -} -#endif - - -WRAPPER2(char *, strcat, char *dest, const char *src) -{ - size_t dest_sz; - size_t src_sz; - TRACE ("%s\n", __PRETTY_FUNCTION__); - dest_sz = strlen (dest); - src_sz = strlen (src); - MF_VALIDATE_EXTENT(src, CLAMPADD(src_sz, 1), __MF_CHECK_READ, "strcat src"); - MF_VALIDATE_EXTENT(dest, CLAMPADD(dest_sz, CLAMPADD(src_sz, 1)), - __MF_CHECK_WRITE, "strcat dest"); - return strcat (dest, src); -} - - -WRAPPER2(char *, strncat, char *dest, const char *src, size_t n) -{ - - /* nb: validating the extents (s,n) might be a mistake for two reasons. - - (1) the string s might be shorter than n chars, and n is just a - poor choice by the programmer. this is not a "true" error in the - sense that the call to strncat would still be ok. - - (2) we could try to compensate for case (1) by calling strlen(s) and - using that as a bound for the extent to verify, but strlen might fall off - the end of a non-terminated string, leading to a false positive. - - so we will call strnlen(s,n) and use that as a bound. - - if strnlen returns a length beyond the end of the registered extent - associated with s, there is an error: the programmer's estimate for n is - too large _AND_ the string s is unterminated, in which case they'd be - about to touch memory they don't own while calling strncat. - - this same logic applies to further uses of strnlen later down in this - file. */ - - size_t src_sz; - size_t dest_sz; - TRACE ("%s\n", __PRETTY_FUNCTION__); - src_sz = strnlen (src, n); - dest_sz = strnlen (dest, n); - MF_VALIDATE_EXTENT(src, src_sz, __MF_CHECK_READ, "strncat src"); - MF_VALIDATE_EXTENT(dest, (CLAMPADD(dest_sz, CLAMPADD(src_sz, 1))), - __MF_CHECK_WRITE, "strncat dest"); - return strncat (dest, src, n); -} - - -WRAPPER2(int, strcmp, const char *s1, const char *s2) -{ - size_t s1_sz; - size_t s2_sz; - TRACE ("%s\n", __PRETTY_FUNCTION__); - s1_sz = strlen (s1); - s2_sz = strlen (s2); - MF_VALIDATE_EXTENT(s1, CLAMPADD(s1_sz, 1), __MF_CHECK_READ, "strcmp 1st arg"); - MF_VALIDATE_EXTENT(s2, CLAMPADD(s2_sz, 1), __MF_CHECK_WRITE, "strcmp 2nd arg"); - return strcmp (s1, s2); -} - - -WRAPPER2(int, strcasecmp, const char *s1, const char *s2) -{ - size_t s1_sz; - size_t s2_sz; - TRACE ("%s\n", __PRETTY_FUNCTION__); - s1_sz = strlen (s1); - s2_sz = strlen (s2); - MF_VALIDATE_EXTENT(s1, CLAMPADD(s1_sz, 1), __MF_CHECK_READ, "strcasecmp 1st arg"); - MF_VALIDATE_EXTENT(s2, CLAMPADD(s2_sz, 1), __MF_CHECK_READ, "strcasecmp 2nd arg"); - return strcasecmp (s1, s2); -} - - -WRAPPER2(int, strncmp, const char *s1, const char *s2, size_t n) -{ - size_t s1_sz; - size_t s2_sz; - TRACE ("%s\n", __PRETTY_FUNCTION__); - s1_sz = strnlen (s1, n); - s2_sz = strnlen (s2, n); - MF_VALIDATE_EXTENT(s1, s1_sz, __MF_CHECK_READ, "strncmp 1st arg"); - MF_VALIDATE_EXTENT(s2, s2_sz, __MF_CHECK_READ, "strncmp 2nd arg"); - return strncmp (s1, s2, n); -} - - -WRAPPER2(int, strncasecmp, const char *s1, const char *s2, size_t n) -{ - size_t s1_sz; - size_t s2_sz; - TRACE ("%s\n", __PRETTY_FUNCTION__); - s1_sz = strnlen (s1, n); - s2_sz = strnlen (s2, n); - MF_VALIDATE_EXTENT(s1, s1_sz, __MF_CHECK_READ, "strncasecmp 1st arg"); - MF_VALIDATE_EXTENT(s2, s2_sz, __MF_CHECK_READ, "strncasecmp 2nd arg"); - return strncasecmp (s1, s2, n); -} - - -WRAPPER2(char *, strdup, const char *s) -{ - DECLARE(void *, malloc, size_t sz); - char *result; - size_t n = strlen (s); - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(s, CLAMPADD(n,1), __MF_CHECK_READ, "strdup region"); - result = (char *)CALL_REAL(malloc, - CLAMPADD(CLAMPADD(n,1), - CLAMPADD(__mf_opts.crumple_zone, - __mf_opts.crumple_zone))); - - if (UNLIKELY(! result)) return result; - - result += __mf_opts.crumple_zone; - memcpy (result, s, n); - result[n] = '\0'; - - __mf_register (result, CLAMPADD(n,1), __MF_TYPE_HEAP_I, "strdup region"); - return result; -} - - -WRAPPER2(char *, strndup, const char *s, size_t n) -{ - DECLARE(void *, malloc, size_t sz); - char *result; - size_t sz = strnlen (s, n); - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(s, sz, __MF_CHECK_READ, "strndup region"); /* nb: strNdup */ - - /* note: strndup still adds a \0, even with the N limit! */ - result = (char *)CALL_REAL(malloc, - CLAMPADD(CLAMPADD(n,1), - CLAMPADD(__mf_opts.crumple_zone, - __mf_opts.crumple_zone))); - - if (UNLIKELY(! result)) return result; - - result += __mf_opts.crumple_zone; - memcpy (result, s, n); - result[n] = '\0'; - - __mf_register (result, CLAMPADD(n,1), __MF_TYPE_HEAP_I, "strndup region"); - return result; -} - - -WRAPPER2(char *, strchr, const char *s, int c) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (s); - MF_VALIDATE_EXTENT(s, CLAMPADD(n,1), __MF_CHECK_READ, "strchr region"); - return strchr (s, c); -} - - -WRAPPER2(char *, strrchr, const char *s, int c) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (s); - MF_VALIDATE_EXTENT(s, CLAMPADD(n,1), __MF_CHECK_READ, "strrchr region"); - return strrchr (s, c); -} - - -WRAPPER2(char *, strstr, const char *haystack, const char *needle) -{ - size_t haystack_sz; - size_t needle_sz; - TRACE ("%s\n", __PRETTY_FUNCTION__); - haystack_sz = strlen (haystack); - needle_sz = strlen (needle); - MF_VALIDATE_EXTENT(haystack, CLAMPADD(haystack_sz, 1), __MF_CHECK_READ, "strstr haystack"); - MF_VALIDATE_EXTENT(needle, CLAMPADD(needle_sz, 1), __MF_CHECK_READ, "strstr needle"); - return strstr (haystack, needle); -} - - -#ifdef HAVE_MEMMEM -WRAPPER2(void *, memmem, - const void *haystack, size_t haystacklen, - const void *needle, size_t needlelen) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(haystack, haystacklen, __MF_CHECK_READ, "memmem haystack"); - MF_VALIDATE_EXTENT(needle, needlelen, __MF_CHECK_READ, "memmem needle"); - return memmem (haystack, haystacklen, needle, needlelen); -} -#endif - - -WRAPPER2(size_t, strlen, const char *s) -{ - size_t result = strlen (s); - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(s, CLAMPADD(result, 1), __MF_CHECK_READ, "strlen region"); - return result; -} - - -WRAPPER2(size_t, strnlen, const char *s, size_t n) -{ - size_t result = strnlen (s, n); - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(s, result, __MF_CHECK_READ, "strnlen region"); - return result; -} - - -WRAPPER2(void, bzero, void *s, size_t n) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(s, n, __MF_CHECK_WRITE, "bzero region"); - bzero (s, n); -} - - -#undef bcopy -WRAPPER2(void, bcopy, const void *src, void *dest, size_t n) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(src, n, __MF_CHECK_READ, "bcopy src"); - MF_VALIDATE_EXTENT(dest, n, __MF_CHECK_WRITE, "bcopy dest"); - bcopy (src, dest, n); -} - - -#undef bcmp -WRAPPER2(int, bcmp, const void *s1, const void *s2, size_t n) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(s1, n, __MF_CHECK_READ, "bcmp 1st arg"); - MF_VALIDATE_EXTENT(s2, n, __MF_CHECK_READ, "bcmp 2nd arg"); - return bcmp (s1, s2, n); -} - - -WRAPPER2(char *, index, const char *s, int c) -{ - size_t n = strlen (s); - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "index region"); - return index (s, c); -} - - -WRAPPER2(char *, rindex, const char *s, int c) -{ - size_t n = strlen (s); - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "rindex region"); - return rindex (s, c); -} - -/* XXX: stpcpy, memccpy */ - -/* XXX: *printf,*scanf */ - -/* XXX: setjmp, longjmp */ - -WRAPPER2(char *, asctime, struct tm *tm) -{ - static char *reg_result = NULL; - char *result; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(tm, sizeof (struct tm), __MF_CHECK_READ, "asctime tm"); - result = asctime (tm); - if (reg_result == NULL) - { - __mf_register (result, strlen (result)+1, __MF_TYPE_STATIC, "asctime string"); - reg_result = result; - } - return result; -} - - -WRAPPER2(char *, ctime, const time_t *timep) -{ - static char *reg_result = NULL; - char *result; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(timep, sizeof (time_t), __MF_CHECK_READ, "ctime time"); - result = ctime (timep); - if (reg_result == NULL) - { - /* XXX: what if asctime and ctime return the same static ptr? */ - __mf_register (result, strlen (result)+1, __MF_TYPE_STATIC, "ctime string"); - reg_result = result; - } - return result; -} - - -WRAPPER2(struct tm*, localtime, const time_t *timep) -{ - static struct tm *reg_result = NULL; - struct tm *result; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(timep, sizeof (time_t), __MF_CHECK_READ, "localtime time"); - result = localtime (timep); - if (reg_result == NULL) - { - __mf_register (result, sizeof (struct tm), __MF_TYPE_STATIC, "localtime tm"); - reg_result = result; - } - return result; -} - - -WRAPPER2(struct tm*, gmtime, const time_t *timep) -{ - static struct tm *reg_result = NULL; - struct tm *result; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT(timep, sizeof (time_t), __MF_CHECK_READ, "gmtime time"); - result = gmtime (timep); - if (reg_result == NULL) - { - __mf_register (result, sizeof (struct tm), __MF_TYPE_STATIC, "gmtime tm"); - reg_result = result; - } - return result; -} - - -/* EL start */ - -/* The following indicate if the result of the corresponding function - * should be explicitly un/registered by the wrapper -*/ - -#ifdef __FreeBSD__ -#define MF_REGISTER_fopen __MF_TYPE_STATIC -#else -#undef MF_REGISTER_fopen -#endif -#define MF_RESULT_SIZE_fopen (sizeof (FILE)) - -#undef MF_REGISTER_opendir -#define MF_RESULT_SIZE_opendir 0 /* (sizeof (DIR)) */ -#undef MF_REGISTER_readdir -#define MF_REGISTER_gethostbyname __MF_TYPE_STATIC -#undef MF_REGISTER_gethostbyname_items -#undef MF_REGISTER_dlopen -#undef MF_REGISTER_dlerror -#undef MF_REGISTER_dlsym -#define MF_REGISTER_shmat __MF_TYPE_GUESS - - -#include <time.h> -WRAPPER2(time_t, time, time_t *timep) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - if (NULL != timep) - MF_VALIDATE_EXTENT (timep, sizeof (*timep), __MF_CHECK_WRITE, - "time timep"); - return time (timep); -} - - -WRAPPER2(char *, strerror, int errnum) -{ - char *p; - static char * last_strerror = NULL; - - TRACE ("%s\n", __PRETTY_FUNCTION__); - p = strerror (errnum); - if (last_strerror != NULL) - __mf_unregister (last_strerror, 0, __MF_TYPE_STATIC); - if (NULL != p) - __mf_register (p, strlen (p) + 1, __MF_TYPE_STATIC, "strerror result"); - last_strerror = p; - return p; -} - - - -/* An auxiliary data structure for tracking the hand-made stdio - buffers we generate during the fopen/fopen64 hooks. In a civilized - language, this would be a simple dynamically sized FILE*->char* - lookup table, but this is C and we get to do it by hand. */ -struct mf_filebuffer -{ - FILE *file; - char *buffer; - struct mf_filebuffer *next; -}; -static struct mf_filebuffer *mf_filebuffers = NULL; - -static void -mkbuffer (FILE *f) -{ - /* Reset any buffer automatically provided by libc, since this may - have been done via mechanisms that libmudflap couldn't - intercept. */ - int rc; - size_t bufsize = BUFSIZ; - int bufmode; - char *buffer = malloc (bufsize); - struct mf_filebuffer *b = malloc (sizeof (struct mf_filebuffer)); - assert ((buffer != NULL) && (b != NULL)); - - /* Link it into list. */ - b->file = f; - b->buffer = buffer; - b->next = mf_filebuffers; - mf_filebuffers = b; - - /* Determine how the file is supposed to be buffered at the moment. */ - bufmode = fileno (f) == 2 ? _IONBF : (isatty (fileno (f)) ? _IOLBF : _IOFBF); - - rc = setvbuf (f, buffer, bufmode, bufsize); - assert (rc == 0); -} - -static void -unmkbuffer (FILE *f) -{ - struct mf_filebuffer *b = mf_filebuffers; - struct mf_filebuffer **pb = & mf_filebuffers; - while (b != NULL) - { - if (b->file == f) - { - *pb = b->next; - free (b->buffer); - free (b); - return; - } - pb = & b->next; - b = b->next; - } -} - - - -WRAPPER2(FILE *, fopen, const char *path, const char *mode) -{ - size_t n; - FILE *p; - TRACE ("%s\n", __PRETTY_FUNCTION__); - - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "fopen path"); - - n = strlen (mode); - MF_VALIDATE_EXTENT (mode, CLAMPADD(n, 1), __MF_CHECK_READ, "fopen mode"); - - p = fopen (path, mode); - if (NULL != p) { -#ifdef MF_REGISTER_fopen - __mf_register (p, sizeof (*p), MF_REGISTER_fopen, "fopen result"); -#endif - MF_VALIDATE_EXTENT (p, sizeof (*p), __MF_CHECK_WRITE, "fopen result"); - - mkbuffer (p); - } - - return p; -} - - -WRAPPER2(int, setvbuf, FILE *stream, char *buf, int mode, size_t size) -{ - int rc = 0; - TRACE ("%s\n", __PRETTY_FUNCTION__); - - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, "setvbuf stream"); - - unmkbuffer (stream); - - if (buf != NULL) - MF_VALIDATE_EXTENT (buf, size, __MF_CHECK_WRITE, "setvbuf buffer"); - - /* Override the user only if it's an auto-allocated buffer request. Otherwise - assume that the supplied buffer is already known to libmudflap. */ - if ((buf == NULL) && ((mode == _IOFBF) || (mode == _IOLBF))) - mkbuffer (stream); - else - rc = setvbuf (stream, buf, mode, size); - - return rc; -} - - -#ifdef HAVE_SETBUF -WRAPPER2(int, setbuf, FILE* stream, char *buf) -{ - return __mfwrap_setvbuf (stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ); -} -#endif - -#ifdef HAVE_SETBUFFER -WRAPPER2(int, setbuffer, FILE* stream, char *buf, size_t sz) -{ - return __mfwrap_setvbuf (stream, buf, buf ? _IOFBF : _IONBF, sz); -} -#endif - -#ifdef HAVE_SETLINEBUF -WRAPPER2(int, setlinebuf, FILE* stream) -{ - return __mfwrap_setvbuf(stream, NULL, _IOLBF, 0); -} -#endif - - - -WRAPPER2(FILE *, fdopen, int fd, const char *mode) -{ - size_t n; - FILE *p; - TRACE ("%s\n", __PRETTY_FUNCTION__); - - n = strlen (mode); - MF_VALIDATE_EXTENT (mode, CLAMPADD(n, 1), __MF_CHECK_READ, "fdopen mode"); - - p = fdopen (fd, mode); - if (NULL != p) { -#ifdef MF_REGISTER_fopen - __mf_register (p, sizeof (*p), MF_REGISTER_fopen, "fdopen result"); -#endif - MF_VALIDATE_EXTENT (p, sizeof (*p), __MF_CHECK_WRITE, "fdopen result"); - - mkbuffer (p); - } - - return p; -} - - -WRAPPER2(FILE *, freopen, const char *path, const char *mode, FILE *s) -{ - size_t n; - FILE *p; - TRACE ("%s\n", __PRETTY_FUNCTION__); - - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "freopen path"); - - MF_VALIDATE_EXTENT (s, (sizeof (*s)), __MF_CHECK_WRITE, "freopen stream"); - unmkbuffer (s); - - n = strlen (mode); - MF_VALIDATE_EXTENT (mode, CLAMPADD(n, 1), __MF_CHECK_READ, "freopen mode"); - - p = freopen (path, mode, s); - if (NULL != p) { -#ifdef MF_REGISTER_fopen - __mf_register (p, sizeof (*p), MF_REGISTER_fopen, "freopen result"); -#endif - MF_VALIDATE_EXTENT (p, sizeof (*p), __MF_CHECK_WRITE, "freopen result"); - - mkbuffer (p); - } - - return p; -} - - -#ifdef HAVE_FOPEN64 -WRAPPER2(FILE *, fopen64, const char *path, const char *mode) -{ - size_t n; - FILE *p; - TRACE ("%s\n", __PRETTY_FUNCTION__); - - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "fopen64 path"); - - n = strlen (mode); - MF_VALIDATE_EXTENT (mode, CLAMPADD(n, 1), __MF_CHECK_READ, "fopen64 mode"); - - p = fopen64 (path, mode); - if (NULL != p) { -#ifdef MF_REGISTER_fopen - __mf_register (p, sizeof (*p), MF_REGISTER_fopen, "fopen64 result"); -#endif - MF_VALIDATE_EXTENT (p, sizeof (*p), __MF_CHECK_WRITE, "fopen64 result"); - - mkbuffer (p); - } - - return p; -} -#endif - - -#ifdef HAVE_FREOPEN64 -WRAPPER2(FILE *, freopen64, const char *path, const char *mode, FILE *s) -{ - size_t n; - FILE *p; - TRACE ("%s\n", __PRETTY_FUNCTION__); - - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "freopen64 path"); - - MF_VALIDATE_EXTENT (s, (sizeof (*s)), __MF_CHECK_WRITE, "freopen64 stream"); - unmkbuffer (s); - - n = strlen (mode); - MF_VALIDATE_EXTENT (mode, CLAMPADD(n, 1), __MF_CHECK_READ, "freopen64 mode"); - - p = freopen (path, mode, s); - if (NULL != p) { -#ifdef MF_REGISTER_fopen - __mf_register (p, sizeof (*p), MF_REGISTER_fopen, "freopen64 result"); -#endif - MF_VALIDATE_EXTENT (p, sizeof (*p), __MF_CHECK_WRITE, "freopen64 result"); - - mkbuffer (p); - } - - return p; -} -#endif - - -WRAPPER2(int, fclose, FILE *stream) -{ - int resp; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fclose stream"); - resp = fclose (stream); -#ifdef MF_REGISTER_fopen - __mf_unregister (stream, sizeof (*stream), MF_REGISTER_fopen); -#endif - unmkbuffer (stream); - - return resp; -} - - -WRAPPER2(size_t, fread, void *ptr, size_t size, size_t nmemb, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fread stream"); - MF_VALIDATE_EXTENT (ptr, size * nmemb, __MF_CHECK_WRITE, "fread buffer"); - return fread (ptr, size, nmemb, stream); -} - - -WRAPPER2(size_t, fwrite, const void *ptr, size_t size, size_t nmemb, - FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fwrite stream"); - MF_VALIDATE_EXTENT (ptr, size * nmemb, __MF_CHECK_READ, "fwrite buffer"); - return fwrite (ptr, size, nmemb, stream); -} - - -WRAPPER2(int, fgetc, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fgetc stream"); - return fgetc (stream); -} - - -WRAPPER2(char *, fgets, char *s, int size, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fgets stream"); - MF_VALIDATE_EXTENT (s, size, __MF_CHECK_WRITE, "fgets buffer"); - return fgets (s, size, stream); -} - - -WRAPPER2(int, getc, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "getc stream"); - return getc (stream); -} - - -WRAPPER2(char *, gets, char *s) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (s, 1, __MF_CHECK_WRITE, "gets buffer"); - /* Avoid link-time warning... */ - s = fgets (s, INT_MAX, stdin); - if (NULL != s) { /* better late than never */ - size_t n = strlen (s); - MF_VALIDATE_EXTENT (s, CLAMPADD(n, 1), __MF_CHECK_WRITE, "gets buffer"); - } - return s; -} - - -WRAPPER2(int, ungetc, int c, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "ungetc stream"); - return ungetc (c, stream); -} - - -WRAPPER2(int, fputc, int c, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fputc stream"); - return fputc (c, stream); -} - - -WRAPPER2(int, fputs, const char *s, FILE *stream) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (s); - MF_VALIDATE_EXTENT (s, CLAMPADD(n, 1), __MF_CHECK_READ, "fputs buffer"); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fputs stream"); - return fputs (s, stream); -} - - -WRAPPER2(int, putc, int c, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "putc stream"); - return putc (c, stream); -} - - -WRAPPER2(int, puts, const char *s) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (s); - MF_VALIDATE_EXTENT (s, CLAMPADD(n, 1), __MF_CHECK_READ, "puts buffer"); - return puts (s); -} - - -WRAPPER2(void, clearerr, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "clearerr stream"); - clearerr (stream); -} - - -WRAPPER2(int, feof, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "feof stream"); - return feof (stream); -} - - -WRAPPER2(int, ferror, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "ferror stream"); - return ferror (stream); -} - - -WRAPPER2(int, fileno, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fileno stream"); - return fileno (stream); -} - - -WRAPPER2(int, printf, const char *format, ...) -{ - size_t n; - va_list ap; - int result; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (format); - MF_VALIDATE_EXTENT (format, CLAMPADD(n, 1), __MF_CHECK_READ, - "printf format"); - va_start (ap, format); - result = vprintf (format, ap); - va_end (ap); - return result; -} - - -WRAPPER2(int, fprintf, FILE *stream, const char *format, ...) -{ - size_t n; - va_list ap; - int result; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fprintf stream"); - n = strlen (format); - MF_VALIDATE_EXTENT (format, CLAMPADD(n, 1), __MF_CHECK_READ, - "fprintf format"); - va_start (ap, format); - result = vfprintf (stream, format, ap); - va_end (ap); - return result; -} - - -WRAPPER2(int, sprintf, char *str, const char *format, ...) -{ - size_t n; - va_list ap; - int result; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (str, 1, __MF_CHECK_WRITE, "sprintf str"); - n = strlen (format); - MF_VALIDATE_EXTENT (format, CLAMPADD(n, 1), __MF_CHECK_READ, - "sprintf format"); - va_start (ap, format); - result = vsprintf (str, format, ap); - va_end (ap); - n = strlen (str); - MF_VALIDATE_EXTENT (str, CLAMPADD(n, 1), __MF_CHECK_WRITE, "sprintf str"); - return result; -} - - -WRAPPER2(int, snprintf, char *str, size_t size, const char *format, ...) -{ - size_t n; - va_list ap; - int result; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (str, size, __MF_CHECK_WRITE, "snprintf str"); - n = strlen (format); - MF_VALIDATE_EXTENT (format, CLAMPADD(n, 1), __MF_CHECK_READ, - "snprintf format"); - va_start (ap, format); - result = vsnprintf (str, size, format, ap); - va_end (ap); - return result; -} - - -WRAPPER2(int, vprintf, const char *format, va_list ap) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (format); - MF_VALIDATE_EXTENT (format, CLAMPADD(n, 1), __MF_CHECK_READ, - "vprintf format"); - return vprintf (format, ap); -} - - -WRAPPER2(int, vfprintf, FILE *stream, const char *format, va_list ap) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "vfprintf stream"); - n = strlen (format); - MF_VALIDATE_EXTENT (format, CLAMPADD(n, 1), __MF_CHECK_READ, - "vfprintf format"); - return vfprintf (stream, format, ap); -} - - -WRAPPER2(int, vsprintf, char *str, const char *format, va_list ap) -{ - size_t n; - int result; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (str, 1, __MF_CHECK_WRITE, "vsprintf str"); - n = strlen (format); - MF_VALIDATE_EXTENT (format, CLAMPADD(n, 1), __MF_CHECK_READ, - "vsprintf format"); - result = vsprintf (str, format, ap); - n = strlen (str); - MF_VALIDATE_EXTENT (str, CLAMPADD(n, 1), __MF_CHECK_WRITE, "vsprintf str"); - return result; -} - - -WRAPPER2(int, vsnprintf, char *str, size_t size, const char *format, - va_list ap) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (str, size, __MF_CHECK_WRITE, "vsnprintf str"); - n = strlen (format); - MF_VALIDATE_EXTENT (format, CLAMPADD(n, 1), __MF_CHECK_READ, - "vsnprintf format"); - return vsnprintf (str, size, format, ap); -} - - -WRAPPER2(int , access, const char *path, int mode) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "access path"); - return access (path, mode); -} - - -WRAPPER2(int , remove, const char *path) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "remove path"); - return remove (path); -} - - -WRAPPER2(int, fflush, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - if (stream != NULL) - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fflush stream"); - return fflush (stream); -} - - -WRAPPER2(int, fseek, FILE *stream, long offset, int whence) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fseek stream"); - return fseek (stream, offset, whence); -} - - -#ifdef HAVE_FSEEKO64 -WRAPPER2(int, fseeko64, FILE *stream, off64_t offset, int whence) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fseeko64 stream"); - return fseeko64 (stream, offset, whence); -} -#endif - - -WRAPPER2(long, ftell, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "ftell stream"); - return ftell (stream); -} - - -#ifdef HAVE_FTELLO64 -WRAPPER2(off64_t, ftello64, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "ftello64 stream"); - return ftello64 (stream); -} -#endif - - -WRAPPER2(void, rewind, FILE *stream) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "rewind stream"); - rewind (stream); -} - - -WRAPPER2(int, fgetpos, FILE *stream, fpos_t *pos) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fgetpos stream"); - MF_VALIDATE_EXTENT (pos, sizeof (*pos), __MF_CHECK_WRITE, "fgetpos pos"); - return fgetpos (stream, pos); -} - - -WRAPPER2(int, fsetpos, FILE *stream, fpos_t *pos) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "fsetpos stream"); - MF_VALIDATE_EXTENT (pos, sizeof (*pos), __MF_CHECK_READ, "fsetpos pos"); - return fsetpos (stream, pos); -} - - -WRAPPER2(int , stat, const char *path, struct stat *buf) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "stat path"); - MF_VALIDATE_EXTENT (buf, sizeof (*buf), __MF_CHECK_READ, "stat buf"); - return stat (path, buf); -} - - -#ifdef HAVE_STAT64 -WRAPPER2(int , stat64, const char *path, struct stat64 *buf) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "stat64 path"); - MF_VALIDATE_EXTENT (buf, sizeof (*buf), __MF_CHECK_READ, "stat64 buf"); - return stat64 (path, buf); -} -#endif - - -WRAPPER2(int , fstat, int filedes, struct stat *buf) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (buf, sizeof (*buf), __MF_CHECK_READ, "fstat buf"); - return fstat (filedes, buf); -} - - -WRAPPER2(int , lstat, const char *path, struct stat *buf) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "lstat path"); - MF_VALIDATE_EXTENT (buf, sizeof (*buf), __MF_CHECK_READ, "lstat buf"); - return lstat (path, buf); -} - - -WRAPPER2(int , mkfifo, const char *path, mode_t mode) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "mkfifo path"); - return mkfifo (path, mode); -} - - -#ifdef HAVE_DIRENT_H -WRAPPER2(DIR *, opendir, const char *path) -{ - DIR *p; - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "opendir path"); - - p = opendir (path); - if (NULL != p) { -#ifdef MF_REGISTER_opendir - __mf_register (p, MF_RESULT_SIZE_opendir, MF_REGISTER_opendir, - "opendir result"); -#endif - MF_VALIDATE_EXTENT (p, MF_RESULT_SIZE_opendir, __MF_CHECK_WRITE, - "opendir result"); - } - return p; -} - - -WRAPPER2(int, closedir, DIR *dir) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (dir, 0, __MF_CHECK_WRITE, "closedir dir"); -#ifdef MF_REGISTER_opendir - __mf_unregister (dir, MF_RESULT_SIZE_opendir, MF_REGISTER_opendir); -#endif - return closedir (dir); -} - - -WRAPPER2(struct dirent *, readdir, DIR *dir) -{ - struct dirent *p; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (dir, 0, __MF_CHECK_READ, "readdir dir"); - p = readdir (dir); - if (NULL != p) { -#ifdef MF_REGISTER_readdir - __mf_register (p, sizeof (*p), MF_REGISTER_readdir, "readdir result"); -#endif - MF_VALIDATE_EXTENT (p, sizeof (*p), __MF_CHECK_WRITE, "readdir result"); - } - return p; -} -#endif - - -#ifdef HAVE_SYS_SOCKET_H - -WRAPPER2(int, recv, int s, void *buf, size_t len, int flags) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (buf, len, __MF_CHECK_WRITE, "recv buf"); - return recv (s, buf, len, flags); -} - - -WRAPPER2(int, recvfrom, int s, void *buf, size_t len, int flags, - struct sockaddr *from, socklen_t *fromlen) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (buf, len, __MF_CHECK_WRITE, "recvfrom buf"); - MF_VALIDATE_EXTENT (from, (size_t)*fromlen, __MF_CHECK_WRITE, - "recvfrom from"); - return recvfrom (s, buf, len, flags, from, fromlen); -} - - -WRAPPER2(int, recvmsg, int s, struct msghdr *msg, int flags) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (msg, sizeof (*msg), __MF_CHECK_WRITE, "recvmsg msg"); - return recvmsg (s, msg, flags); -} - - -WRAPPER2(int, send, int s, const void *msg, size_t len, int flags) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (msg, len, __MF_CHECK_READ, "send msg"); - return send (s, msg, len, flags); -} - - -WRAPPER2(int, sendto, int s, const void *msg, size_t len, int flags, - const struct sockaddr *to, socklen_t tolen) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (msg, len, __MF_CHECK_READ, "sendto msg"); - MF_VALIDATE_EXTENT (to, (size_t)tolen, __MF_CHECK_WRITE, "sendto to"); - return sendto (s, msg, len, flags, to, tolen); -} - - -WRAPPER2(int, sendmsg, int s, const void *msg, int flags) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (msg, sizeof (*msg), __MF_CHECK_READ, "sendmsg msg"); - return sendmsg (s, msg, flags); -} - - -WRAPPER2(int, setsockopt, int s, int level, int optname, const void *optval, - socklen_t optlen) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (optval, (size_t)optlen, __MF_CHECK_READ, - "setsockopt optval"); - return setsockopt (s, level, optname, optval, optlen); -} - - -WRAPPER2(int, getsockopt, int s, int level, int optname, void *optval, - socklen_t *optlen) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (optval, (size_t)*optlen, __MF_CHECK_WRITE, - "getsockopt optval"); - return getsockopt (s, level, optname, optval, optlen); -} - - -WRAPPER2(int, accept, int s, struct sockaddr *addr, socklen_t *addrlen) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - if (addr != NULL) - MF_VALIDATE_EXTENT (addr, (size_t)*addrlen, __MF_CHECK_WRITE, "accept addr"); - return accept (s, addr, addrlen); -} - - -WRAPPER2(int, bind, int sockfd, struct sockaddr *addr, socklen_t addrlen) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (addr, (size_t)addrlen, __MF_CHECK_WRITE, "bind addr"); - return bind (sockfd, addr, addrlen); -} - - -WRAPPER2(int, connect, int sockfd, const struct sockaddr *addr, - socklen_t addrlen) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (addr, (size_t)addrlen, __MF_CHECK_READ, - "connect addr"); - return connect (sockfd, addr, addrlen); -} - -#endif /* HAVE_SYS_SOCKET_H */ - - -WRAPPER2(int, gethostname, char *name, size_t len) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (name, len, __MF_CHECK_WRITE, "gethostname name"); - return gethostname (name, len); -} - - -#ifdef HAVE_SETHOSTNAME -WRAPPER2(int, sethostname, const char *name, size_t len) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (name, len, __MF_CHECK_READ, "sethostname name"); - return sethostname (name, len); -} -#endif - - -#ifdef HAVE_NETDB_H - -WRAPPER2(struct hostent *, gethostbyname, const char *name) -{ - struct hostent *p; - char **ss; - char *s; - size_t n; - int nreg; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (name); - MF_VALIDATE_EXTENT (name, CLAMPADD(n, 1), __MF_CHECK_READ, - "gethostbyname name"); - p = gethostbyname (name); - if (NULL != p) { -#ifdef MF_REGISTER_gethostbyname - __mf_register (p, sizeof (*p), MF_REGISTER_gethostbyname, - "gethostbyname result"); -#endif - MF_VALIDATE_EXTENT (p, sizeof (*p), __MF_CHECK_WRITE, - "gethostbyname result"); - if (NULL != (s = p->h_name)) { - n = strlen (s); - n = CLAMPADD(n, 1); -#ifdef MF_REGISTER_gethostbyname_items - __mf_register (s, n, MF_REGISTER_gethostbyname_items, - "gethostbyname result->h_name"); -#endif - MF_VALIDATE_EXTENT (s, n, __MF_CHECK_WRITE, - "gethostbyname result->h_name"); - } - - if (NULL != (ss = p->h_aliases)) { - for (nreg = 1;; ++nreg) { - s = *ss++; - if (NULL == s) - break; - n = strlen (s); - n = CLAMPADD(n, 1); -#ifdef MF_REGISTER_gethostbyname_items - __mf_register (s, n, MF_REGISTER_gethostbyname_items, - "gethostbyname result->h_aliases[]"); -#endif - MF_VALIDATE_EXTENT (s, n, __MF_CHECK_WRITE, - "gethostbyname result->h_aliases[]"); - } - nreg *= sizeof (*p->h_aliases); -#ifdef MF_REGISTER_gethostbyname_items - __mf_register (p->h_aliases, nreg, MF_REGISTER_gethostbyname_items, - "gethostbyname result->h_aliases"); -#endif - MF_VALIDATE_EXTENT (p->h_aliases, nreg, __MF_CHECK_WRITE, - "gethostbyname result->h_aliases"); - } - - if (NULL != (ss = p->h_addr_list)) { - for (nreg = 1;; ++nreg) { - s = *ss++; - if (NULL == s) - break; -#ifdef MF_REGISTER_gethostbyname_items - __mf_register (s, p->h_length, MF_REGISTER_gethostbyname_items, - "gethostbyname result->h_addr_list[]"); -#endif - MF_VALIDATE_EXTENT (s, p->h_length, __MF_CHECK_WRITE, - "gethostbyname result->h_addr_list[]"); - } - nreg *= sizeof (*p->h_addr_list); -#ifdef MF_REGISTER_gethostbyname_items - __mf_register (p->h_addr_list, nreg, MF_REGISTER_gethostbyname_items, - "gethostbyname result->h_addr_list"); -#endif - MF_VALIDATE_EXTENT (p->h_addr_list, nreg, __MF_CHECK_WRITE, - "gethostbyname result->h_addr_list"); - } - } - return p; -} - -#endif /* HAVE_NETDB_H */ - - -#ifdef HAVE_SYS_WAIT_H - -WRAPPER2(pid_t, wait, int *status) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - if (NULL != status) - MF_VALIDATE_EXTENT (status, sizeof (*status), __MF_CHECK_WRITE, - "wait status"); - return wait (status); -} - - -WRAPPER2(pid_t, waitpid, pid_t pid, int *status, int options) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - if (NULL != status) - MF_VALIDATE_EXTENT (status, sizeof (*status), __MF_CHECK_WRITE, - "waitpid status"); - return waitpid (pid, status, options); -} - -#endif /* HAVE_SYS_WAIT_H */ - - -WRAPPER2(FILE *, popen, const char *command, const char *mode) -{ - size_t n; - FILE *p; - TRACE ("%s\n", __PRETTY_FUNCTION__); - - n = strlen (command); - MF_VALIDATE_EXTENT (command, CLAMPADD(n, 1), __MF_CHECK_READ, "popen path"); - - n = strlen (mode); - MF_VALIDATE_EXTENT (mode, CLAMPADD(n, 1), __MF_CHECK_READ, "popen mode"); - - p = popen (command, mode); - if (NULL != p) { -#ifdef MF_REGISTER_fopen - __mf_register (p, sizeof (*p), MF_REGISTER_fopen, "popen result"); -#endif - MF_VALIDATE_EXTENT (p, sizeof (*p), __MF_CHECK_WRITE, "popen result"); - } - return p; -} - - -WRAPPER2(int, pclose, FILE *stream) -{ - int resp; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (stream, sizeof (*stream), __MF_CHECK_WRITE, - "pclose stream"); - resp = pclose (stream); -#ifdef MF_REGISTER_fopen - __mf_unregister (stream, sizeof (*stream), MF_REGISTER_fopen); -#endif - return resp; -} - - -WRAPPER2(int, execve, const char *path, char *const argv [], - char *const envp[]) -{ - size_t n; - char *const *p; - const char *s; - TRACE ("%s\n", __PRETTY_FUNCTION__); - - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "execve path"); - - for (p = argv;;) { - MF_VALIDATE_EXTENT (p, sizeof (*p), __MF_CHECK_READ, "execve *argv"); - s = *p++; - if (NULL == s) - break; - n = strlen (s); - MF_VALIDATE_EXTENT (s, CLAMPADD(n, 1), __MF_CHECK_READ, "execve **argv"); - } - - for (p = envp;;) { - MF_VALIDATE_EXTENT (p, sizeof (*p), __MF_CHECK_READ, "execve *envp"); - s = *p++; - if (NULL == s) - break; - n = strlen (s); - MF_VALIDATE_EXTENT (s, CLAMPADD(n, 1), __MF_CHECK_READ, "execve **envp"); - } - return execve (path, argv, envp); -} - - -WRAPPER2(int, execv, const char *path, char *const argv []) -{ - size_t n; - char *const *p; - const char *s; - TRACE ("%s\n", __PRETTY_FUNCTION__); - - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "execv path"); - - for (p = argv;;) { - MF_VALIDATE_EXTENT (p, sizeof (*p), __MF_CHECK_READ, "execv *argv"); - s = *p++; - if (NULL == s) - break; - n = strlen (s); - MF_VALIDATE_EXTENT (s, CLAMPADD(n, 1), __MF_CHECK_READ, "execv **argv"); - } - return execv (path, argv); -} - - -WRAPPER2(int, execvp, const char *path, char *const argv []) -{ - size_t n; - char *const *p; - const char *s; - TRACE ("%s\n", __PRETTY_FUNCTION__); - - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "execvp path"); - - for (p = argv;;) { - MF_VALIDATE_EXTENT (p, sizeof (*p), __MF_CHECK_READ, "execvp *argv"); - s = *p++; - if (NULL == s) - break; - n = strlen (s); - MF_VALIDATE_EXTENT (s, CLAMPADD(n, 1), __MF_CHECK_READ, "execvp **argv"); - } - return execvp (path, argv); -} - - -WRAPPER2(int, system, const char *string) -{ - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (string); - MF_VALIDATE_EXTENT (string, CLAMPADD(n, 1), __MF_CHECK_READ, - "system string"); - return system (string); -} - - -WRAPPER2(void *, dlopen, const char *path, int flags) -{ - void *p; - size_t n; - TRACE ("%s\n", __PRETTY_FUNCTION__); - n = strlen (path); - MF_VALIDATE_EXTENT (path, CLAMPADD(n, 1), __MF_CHECK_READ, "dlopen path"); - p = dlopen (path, flags); - if (NULL != p) { -#ifdef MF_REGISTER_dlopen - __mf_register (p, 0, MF_REGISTER_dlopen, "dlopen result"); -#endif - MF_VALIDATE_EXTENT (p, 0, __MF_CHECK_WRITE, "dlopen result"); - } - return p; -} - - -WRAPPER2(int, dlclose, void *handle) -{ - int resp; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (handle, 0, __MF_CHECK_READ, "dlclose handle"); - resp = dlclose (handle); -#ifdef MF_REGISTER_dlopen - __mf_unregister (handle, 0, MF_REGISTER_dlopen); -#endif - return resp; -} - - -WRAPPER2(char *, dlerror) -{ - char *p; - TRACE ("%s\n", __PRETTY_FUNCTION__); - p = dlerror (); - if (NULL != p) { - size_t n; - n = strlen (p); - n = CLAMPADD(n, 1); -#ifdef MF_REGISTER_dlerror - __mf_register (p, n, MF_REGISTER_dlerror, "dlerror result"); -#endif - MF_VALIDATE_EXTENT (p, n, __MF_CHECK_WRITE, "dlerror result"); - } - return p; -} - - -WRAPPER2(void *, dlsym, void *handle, char *symbol) -{ - size_t n; - void *p; - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (handle, 0, __MF_CHECK_READ, "dlsym handle"); - n = strlen (symbol); - MF_VALIDATE_EXTENT (symbol, CLAMPADD(n, 1), __MF_CHECK_READ, "dlsym symbol"); - p = dlsym (handle, symbol); - if (NULL != p) { -#ifdef MF_REGISTER_dlsym - __mf_register (p, 0, MF_REGISTER_dlsym, "dlsym result"); -#endif - MF_VALIDATE_EXTENT (p, 0, __MF_CHECK_WRITE, "dlsym result"); - } - return p; -} - - -#if defined (HAVE_SYS_IPC_H) && defined (HAVE_SYS_SEM_H) && defined (HAVE_SYS_SHM_H) - -WRAPPER2(int, semop, int semid, struct sembuf *sops, unsigned nsops) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - MF_VALIDATE_EXTENT (sops, sizeof (*sops) * nsops, __MF_CHECK_READ, - "semop sops"); - return semop (semid, sops, nsops); -} - - -#ifndef HAVE_UNION_SEMUN -union semun { - int val; /* value for SETVAL */ - struct semid_ds *buf; /* buffer for IPC_STAT, IPC_SET */ - unsigned short int *array; /* array for GETALL, SETALL */ - struct seminfo *__buf; /* buffer for IPC_INFO */ -}; -#endif -WRAPPER2(int, semctl, int semid, int semnum, int cmd, union semun arg) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - switch (cmd) { - case IPC_STAT: - MF_VALIDATE_EXTENT (arg.buf, sizeof (*arg.buf), __MF_CHECK_WRITE, - "semctl buf"); - break; - case IPC_SET: - MF_VALIDATE_EXTENT (arg.buf, sizeof (*arg.buf), __MF_CHECK_READ, - "semctl buf"); - break; - case GETALL: - MF_VALIDATE_EXTENT (arg.array, sizeof (*arg.array), __MF_CHECK_WRITE, - "semctl array"); - case SETALL: - MF_VALIDATE_EXTENT (arg.array, sizeof (*arg.array), __MF_CHECK_READ, - "semctl array"); - break; -#ifdef IPC_INFO - /* FreeBSD 5.1 And Cygwin headers include IPC_INFO but not the __buf field. */ -#if !defined(__FreeBSD__) && !defined(__CYGWIN__) - case IPC_INFO: - MF_VALIDATE_EXTENT (arg.__buf, sizeof (*arg.__buf), __MF_CHECK_WRITE, - "semctl __buf"); - break; -#endif -#endif - default: - break; - } - return semctl (semid, semnum, cmd, arg); -} - - -WRAPPER2(int, shmctl, int shmid, int cmd, struct shmid_ds *buf) -{ - TRACE ("%s\n", __PRETTY_FUNCTION__); - switch (cmd) { - case IPC_STAT: - MF_VALIDATE_EXTENT (buf, sizeof (*buf), __MF_CHECK_WRITE, - "shmctl buf"); - break; - case IPC_SET: - MF_VALIDATE_EXTENT (buf, sizeof (*buf), __MF_CHECK_READ, - "shmctl buf"); - break; - default: - break; - } - return shmctl (shmid, cmd, buf); -} - - -WRAPPER2(void *, shmat, int shmid, const void *shmaddr, int shmflg) -{ - void *p; - TRACE ("%s\n", __PRETTY_FUNCTION__); - p = shmat (shmid, shmaddr, shmflg); -#ifdef MF_REGISTER_shmat - if (NULL != p) { - struct shmid_ds buf; - __mf_register (p, shmctl (shmid, IPC_STAT, &buf) ? 0 : buf.shm_segsz, - MF_REGISTER_shmat, "shmat result"); - } -#endif - return p; -} - - -WRAPPER2(int, shmdt, const void *shmaddr) -{ - int resp; - TRACE ("%s\n", __PRETTY_FUNCTION__); - resp = shmdt (shmaddr); -#ifdef MF_REGISTER_shmat - __mf_unregister ((void *)shmaddr, 0, MF_REGISTER_shmat); -#endif - return resp; -} - - -#endif /* HAVE_SYS_IPC/SEM/SHM_H */ - - - -/* ctype stuff. This is host-specific by necessity, as the arrays - that is used by most is*()/to*() macros are implementation-defined. */ - -/* GLIBC 2.3 */ -#ifdef HAVE___CTYPE_B_LOC -WRAPPER2(unsigned short **, __ctype_b_loc, void) -{ - static unsigned short * last_buf = (void *) 0; - static unsigned short ** last_ptr = (void *) 0; - unsigned short ** ptr = (unsigned short **) __ctype_b_loc (); - unsigned short * buf = * ptr; - if (ptr != last_ptr) - { - /* XXX: unregister last_ptr? */ - last_ptr = ptr; - __mf_register (last_ptr, sizeof(last_ptr), __MF_TYPE_STATIC, "ctype_b_loc **"); - } - if (buf != last_buf) - { - last_buf = buf; - __mf_register ((void *) (last_buf - 128), 384 * sizeof(unsigned short), __MF_TYPE_STATIC, - "ctype_b_loc []"); - } - return ptr; -} -#endif - -#ifdef HAVE___CTYPE_TOUPPER_LOC -WRAPPER2(int **, __ctype_toupper_loc, void) -{ - static int * last_buf = (void *) 0; - static int ** last_ptr = (void *) 0; - int ** ptr = (int **) __ctype_toupper_loc (); - int * buf = * ptr; - if (ptr != last_ptr) - { - /* XXX: unregister last_ptr? */ - last_ptr = ptr; - __mf_register (last_ptr, sizeof(last_ptr), __MF_TYPE_STATIC, "ctype_toupper_loc **"); - } - if (buf != last_buf) - { - last_buf = buf; - __mf_register ((void *) (last_buf - 128), 384 * sizeof(int), __MF_TYPE_STATIC, - "ctype_toupper_loc []"); - } - return ptr; -} -#endif - -#ifdef HAVE___CTYPE_TOLOWER_LOC -WRAPPER2(int **, __ctype_tolower_loc, void) -{ - static int * last_buf = (void *) 0; - static int ** last_ptr = (void *) 0; - int ** ptr = (int **) __ctype_tolower_loc (); - int * buf = * ptr; - if (ptr != last_ptr) - { - /* XXX: unregister last_ptr? */ - last_ptr = ptr; - __mf_register (last_ptr, sizeof(last_ptr), __MF_TYPE_STATIC, "ctype_tolower_loc **"); - } - if (buf != last_buf) - { - last_buf = buf; - __mf_register ((void *) (last_buf - 128), 384 * sizeof(int), __MF_TYPE_STATIC, - "ctype_tolower_loc []"); - } - return ptr; -} -#endif - - -/* passwd/group related functions. These register every (static) pointer value returned, - and rely on libmudflap's quiet toleration of duplicate static registrations. */ - -#ifdef HAVE_GETLOGIN -WRAPPER2(char *, getlogin, void) -{ - char *buf = getlogin (); - if (buf != NULL) - __mf_register (buf, sizeof(*buf), __MF_TYPE_STATIC, - "getlogin() return"); - return buf; -} -#endif - - -#ifdef HAVE_CUSERID -WRAPPER2(char *, cuserid, char * buf) -{ - if (buf != NULL) - { - MF_VALIDATE_EXTENT(buf, L_cuserid, __MF_CHECK_WRITE, - "cuserid destination"); - return cuserid (buf); - } - buf = cuserid (NULL); - if (buf != NULL) - __mf_register (buf, sizeof(*buf), __MF_TYPE_STATIC, - "getcuserid() return"); - return buf; -} -#endif - - -#ifdef HAVE_GETPWNAM -WRAPPER2(struct passwd *, getpwnam, const char *name) -{ - struct passwd *buf; - MF_VALIDATE_EXTENT(name, strlen(name)+1, __MF_CHECK_READ, - "getpwnam name"); - buf = getpwnam (name); - if (buf != NULL) - __mf_register (buf, sizeof(*buf), __MF_TYPE_STATIC, - "getpw*() return"); - return buf; -} -#endif - - -#ifdef HAVE_GETPWUID -WRAPPER2(struct passwd *, getpwuid, uid_t uid) -{ - struct passwd *buf; - buf = getpwuid (uid); - if (buf != NULL) - __mf_register (buf, sizeof(*buf), __MF_TYPE_STATIC, - "getpw*() return"); - return buf; -} -#endif - - -#ifdef HAVE_GETGRNAM -WRAPPER2(struct group *, getgrnam, const char *name) -{ - struct group *buf; - MF_VALIDATE_EXTENT(name, strlen(name)+1, __MF_CHECK_READ, - "getgrnam name"); - buf = getgrnam (name); - if (buf != NULL) - __mf_register (buf, sizeof(*buf), __MF_TYPE_STATIC, - "getgr*() return"); - return buf; -} -#endif - - -#ifdef HAVE_GETGRGID -WRAPPER2(struct group *, getgrgid, uid_t uid) -{ - struct group *buf; - buf = getgrgid (uid); - if (buf != NULL) - __mf_register (buf, sizeof(*buf), __MF_TYPE_STATIC, - "getgr*() return"); - return buf; -} -#endif - - -#ifdef HAVE_GETSERVENT -WRAPPER2(struct servent *, getservent, void) -{ - struct servent *buf; - buf = getservent (); - if (buf != NULL) - __mf_register (buf, sizeof(*buf), __MF_TYPE_STATIC, - "getserv*() return"); - return buf; -} -#endif - - -#ifdef HAVE_GETSERVBYNAME -WRAPPER2(struct servent *, getservbyname, const char *name, const char *proto) -{ - struct servent *buf; - MF_VALIDATE_EXTENT(name, strlen(name)+1, __MF_CHECK_READ, - "getservbyname name"); - MF_VALIDATE_EXTENT(proto, strlen(proto)+1, __MF_CHECK_READ, - "getservbyname proto"); - buf = getservbyname (name, proto); - if (buf != NULL) - __mf_register (buf, sizeof(*buf), __MF_TYPE_STATIC, - "getserv*() return"); - return buf; -} -#endif - - -#ifdef HAVE_GETSERVBYPORT -WRAPPER2(struct servent *, getservbyport, int port, const char *proto) -{ - struct servent *buf; - MF_VALIDATE_EXTENT(proto, strlen(proto)+1, __MF_CHECK_READ, - "getservbyport proto"); - buf = getservbyport (port, proto); - if (buf != NULL) - __mf_register (buf, sizeof(*buf), __MF_TYPE_STATIC, - "getserv*() return"); - return buf; -} -#endif - - -#ifdef HAVE_GAI_STRERROR -WRAPPER2(const char *, gai_strerror, int errcode) -{ - const char *buf; - buf = gai_strerror (errcode); - if (buf != NULL) - __mf_register ((void *) buf, strlen(buf)+1, __MF_TYPE_STATIC, - "gai_strerror() return"); - return buf; -} -#endif - - -#ifdef HAVE_GETMNTENT -#ifdef HAVE_MNTENT_H -WRAPPER2(struct mntent *, getmntent, FILE *filep) -{ - struct mntent *m; - static struct mntent *last = NULL; - - MF_VALIDATE_EXTENT (filep, sizeof (*filep), __MF_CHECK_WRITE, - "getmntent stream"); -#define UR(field) __mf_unregister(last->field, strlen (last->field)+1, __MF_TYPE_STATIC) - if (last) - { - UR (mnt_fsname); - UR (mnt_dir); - UR (mnt_type); - UR (mnt_opts); - __mf_unregister (last, sizeof (*last), __MF_TYPE_STATIC); - } -#undef UR - - m = getmntent (filep); - last = m; - -#define R(field) __mf_register(last->field, strlen (last->field)+1, __MF_TYPE_STATIC, "mntent " #field) - if (m) - { - R (mnt_fsname); - R (mnt_dir); - R (mnt_type); - R (mnt_opts); - __mf_register (last, sizeof (*last), __MF_TYPE_STATIC, "getmntent result"); - } -#undef R - - return m; -} -#elif defined HAVE_SYS_MNTTAB_H -WRAPPER2(int, getmntent, FILE *filep, struct mnttab *mp) -{ - static struct mnttab *last = NULL; - int res; - - MF_VALIDATE_EXTENT (filep, sizeof (*filep), __MF_CHECK_WRITE, - "getmntent stream"); -#define UR(field) __mf_unregister(last->field, strlen (last->field)+1, __MF_TYPE_STATIC) - if (last) - { - UR (mnt_special); - UR (mnt_mountp); - UR (mnt_fstype); - UR (mnt_mntopts); - UR (mnt_time); - __mf_unregister (last, sizeof (*last), __MF_TYPE_STATIC); - } -#undef UR - - res = getmntent (filep, mp); - last = mp; - -#define R(field) __mf_register(last->field, strlen (last->field)+1, __MF_TYPE_STATIC, "mntent " #field) - if (mp) - { - R (mnt_special); - R (mnt_mountp); - R (mnt_fstype); - R (mnt_mntopts); - R (mnt_time); - __mf_register (last, sizeof (*last), __MF_TYPE_STATIC, "getmntent result"); - } -#undef R - - return res; -} -#endif -#endif - - -#ifdef HAVE_INET_NTOA -WRAPPER2(char *, inet_ntoa, struct in_addr in) -{ - static char *last_buf = NULL; - char *buf; - if (last_buf) - __mf_unregister (last_buf, strlen (last_buf)+1, __MF_TYPE_STATIC); - buf = inet_ntoa (in); - last_buf = buf; - if (buf) - __mf_register (last_buf, strlen (last_buf)+1, __MF_TYPE_STATIC, "inet_ntoa result"); - return buf; -} -#endif - - -#ifdef HAVE_GETPROTOENT -WRAPPER2(struct protoent *, getprotoent, void) -{ - struct protoent *buf; - buf = getprotoent (); - if (buf != NULL) - __mf_register (buf, sizeof(*buf), __MF_TYPE_STATIC, "getproto*() return"); - return buf; -} -#endif - - -#ifdef HAVE_GETPROTOBYNAME -WRAPPER2(struct protoent *, getprotobyname, const char *name) -{ - struct protoent *buf; - MF_VALIDATE_EXTENT(name, strlen(name)+1, __MF_CHECK_READ, - "getprotobyname name"); - buf = getprotobyname (name); - if (buf != NULL) - __mf_register (buf, sizeof(*buf), __MF_TYPE_STATIC, - "getproto*() return"); - return buf; -} -#endif - - -#ifdef HAVE_GETPROTOBYNUMBER -WRAPPER2(struct protoent *, getprotobynumber, int port) -{ - struct protoent *buf; - buf = getprotobynumber (port); - if (buf != NULL) - __mf_register (buf, sizeof(*buf), __MF_TYPE_STATIC, - "getproto*() return"); - return buf; -} -#endif diff --git a/libmudflap/mf-hooks3.c b/libmudflap/mf-hooks3.c deleted file mode 100644 index 552cbb5..0000000 --- a/libmudflap/mf-hooks3.c +++ /dev/null @@ -1,284 +0,0 @@ -/* Mudflap: narrow-pointer bounds-checking by tree rewriting. - Copyright (C) 2002-2013 Free Software Foundation, Inc. - Contributed by Frank Ch. Eigler <fche@redhat.com> - and Graydon Hoare <graydon@redhat.com> - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. */ - - -#include "config.h" - -#ifndef HAVE_SOCKLEN_T -#define socklen_t int -#endif - -/* These attempt to coax various unix flavours to declare all our - needed tidbits in the system headers. */ -#if !defined(__FreeBSD__) && !defined(__APPLE__) -#define _POSIX_SOURCE -#endif /* Some BSDs break <sys/socket.h> if this is defined. */ -#define _GNU_SOURCE -#define _XOPEN_SOURCE -#define _BSD_TYPES -#define __EXTENSIONS__ -#define _ALL_SOURCE -#define _LARGE_FILE_API -#define _XOPEN_SOURCE_EXTENDED 1 -#define _REENTRANT - -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <assert.h> -#include <errno.h> -#include <stdbool.h> - -#include "mf-runtime.h" -#include "mf-impl.h" - -#ifdef _MUDFLAP -#error "Do not compile this file with -fmudflap!" -#endif - -#ifndef LIBMUDFLAPTH -#error "pthreadstuff is to be included only in libmudflapth" -#endif - -/* ??? Why isn't this done once in the header files. */ -DECLARE(void *, malloc, size_t sz); -DECLARE(void, free, void *ptr); -DECLARE(int, pthread_create, pthread_t *thr, const pthread_attr_t *attr, - void * (*start) (void *), void *arg); - - -/* Multithreading support hooks. */ - - -#if !defined(HAVE_TLS) || defined(USE_EMUTLS) -/* We don't have TLS. Ordinarily we could use pthread keys, but since we're - commandeering malloc/free that presents a few problems. The first is that - we'll recurse from __mf_get_state to pthread_setspecific to malloc back to - __mf_get_state during thread startup. This can be solved with clever uses - of a mutex. The second problem is that thread shutdown is indistinguishable - from thread startup, since libpthread is deallocating our state variable. - I've no good solution for this. - - Which leaves us to handle this mess by totally by hand. */ - -/* Yes, we want this prime. If pthread_t is a pointer, it's almost always - page aligned, and if we use a smaller power of 2, this results in "%N" - being the worst possible hash -- all threads hash to zero. */ -#define LIBMUDFLAPTH_THREADS_MAX 1021 - -struct mf_thread_data -{ - pthread_t self; - unsigned char used_p; - unsigned char state; -}; - -static struct mf_thread_data mf_thread_data[LIBMUDFLAPTH_THREADS_MAX]; -static pthread_mutex_t mf_thread_data_lock = PTHREAD_MUTEX_INITIALIZER; - -#define PTHREAD_HASH(p) ((unsigned long) (p) % LIBMUDFLAPTH_THREADS_MAX) - -static struct mf_thread_data * -__mf_find_threadinfo (int alloc) -{ - pthread_t self = pthread_self (); - unsigned long hash = PTHREAD_HASH (self); - unsigned long rehash; - -#ifdef __alpha__ - /* Alpha has the loosest memory ordering rules of all. We need a memory - barrier to flush the reorder buffer before considering a *read* of a - shared variable. Since we're not always taking a lock, we have to do - this by hand. */ - __sync_synchronize (); -#endif - - rehash = hash; - while (1) - { - if (mf_thread_data[rehash].used_p && mf_thread_data[rehash].self == self) - return &mf_thread_data[rehash]; - - rehash += 7; - if (rehash >= LIBMUDFLAPTH_THREADS_MAX) - rehash -= LIBMUDFLAPTH_THREADS_MAX; - if (rehash == hash) - break; - } - - if (alloc) - { - pthread_mutex_lock (&mf_thread_data_lock); - - rehash = hash; - while (1) - { - if (!mf_thread_data[rehash].used_p) - { - mf_thread_data[rehash].self = self; - __sync_synchronize (); - mf_thread_data[rehash].used_p = 1; - - pthread_mutex_unlock (&mf_thread_data_lock); - return &mf_thread_data[rehash]; - } - - rehash += 7; - if (rehash >= LIBMUDFLAPTH_THREADS_MAX) - rehash -= LIBMUDFLAPTH_THREADS_MAX; - if (rehash == hash) - break; - } - - pthread_mutex_unlock (&mf_thread_data_lock); - } - - return NULL; -} - -enum __mf_state_enum -__mf_get_state (void) -{ - struct mf_thread_data *data = __mf_find_threadinfo (0); - if (data) - return data->state; - - /* If we've never seen this thread before, consider it to be in the - reentrant state. The state gets reset to active for the main thread - in __mf_init, and for child threads in __mf_pthread_spawner. - - The trickiest bit here is that the LinuxThreads pthread_manager thread - should *always* be considered to be reentrant, so that none of our - hooks actually do anything. Why? Because that thread isn't a real - thread from the point of view of the thread library, and so lots of - stuff isn't initialized, leading to SEGV very quickly. Even calling - pthread_self is a bit suspect, but it happens to work. */ - - return reentrant; -} - -void -__mf_set_state (enum __mf_state_enum new_state) -{ - struct mf_thread_data *data = __mf_find_threadinfo (1); - data->state = new_state; -} -#endif - -/* The following two functions are used only with __mf_opts.heur_std_data. - We're interested in recording the location of the thread-local errno - variable. - - Note that this doesn't handle TLS references in general; we have no - visibility into __tls_get_data for when that memory is allocated at - runtime. Hopefully we get to see the malloc or mmap operation that - eventually allocates the backing store. */ - -/* Describe the startup information for a new user thread. */ -struct mf_thread_start_info -{ - /* The user's thread entry point and argument. */ - void * (*user_fn)(void *); - void *user_arg; -}; - - -static void -__mf_pthread_cleanup (void *arg) -{ - if (__mf_opts.heur_std_data) - __mf_unregister (&errno, sizeof (errno), __MF_TYPE_GUESS); - -#if !defined(HAVE_TLS) || defined(USE_EMUTLS) - struct mf_thread_data *data = __mf_find_threadinfo (0); - if (data) - data->used_p = 0; -#endif -} - - -static void * -__mf_pthread_spawner (void *arg) -{ - void *result = NULL; - - __mf_set_state (active); - - /* NB: We could use __MF_TYPE_STATIC here, but we guess that the thread - errno is coming out of some dynamically allocated pool that we already - know of as __MF_TYPE_HEAP. */ - if (__mf_opts.heur_std_data) - __mf_register (&errno, sizeof (errno), __MF_TYPE_GUESS, - "errno area (thread)"); - - /* We considered using pthread_key_t objects instead of these - cleanup stacks, but they were less cooperative with the - interposed malloc hooks in libmudflap. */ - /* ??? The pthread_key_t problem is solved above... */ - pthread_cleanup_push (__mf_pthread_cleanup, NULL); - - /* Extract given entry point and argument. */ - struct mf_thread_start_info *psi = arg; - void * (*user_fn)(void *) = psi->user_fn; - void *user_arg = psi->user_arg; - CALL_REAL (free, arg); - - result = (*user_fn)(user_arg); - - pthread_cleanup_pop (1 /* execute */); - - return result; -} - - -#if PIC -/* A special bootstrap variant. */ -int -__mf_0fn_pthread_create (pthread_t *thr, const pthread_attr_t *attr, - void * (*start) (void *), void *arg) -{ - return -1; -} -#endif - - -#undef pthread_create -WRAPPER(int, pthread_create, pthread_t *thr, const pthread_attr_t *attr, - void * (*start) (void *), void *arg) -{ - struct mf_thread_start_info *si; - - TRACE ("pthread_create\n"); - - /* Fill in startup-control fields. */ - si = CALL_REAL (malloc, sizeof (*si)); - si->user_fn = start; - si->user_arg = arg; - - /* Actually create the thread. */ - return CALL_REAL (pthread_create, thr, attr, __mf_pthread_spawner, si); -} diff --git a/libmudflap/mf-impl.h b/libmudflap/mf-impl.h deleted file mode 100644 index 107ed40..0000000 --- a/libmudflap/mf-impl.h +++ /dev/null @@ -1,419 +0,0 @@ -/* Implementation header for mudflap runtime library. - Mudflap: narrow-pointer bounds-checking by tree rewriting. - Copyright (C) 2002-2013 Free Software Foundation, Inc. - Contributed by Frank Ch. Eigler <fche@redhat.com> - and Graydon Hoare <graydon@redhat.com> - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. */ - -#ifndef __MF_IMPL_H -#define __MF_IMPL_H - -#ifdef _MUDFLAP -#error "Do not compile this file with -fmudflap!" -#endif - -#if HAVE_PTHREAD_H -#include <pthread.h> -#elif LIBMUDFLAPTH -#error "Cannot build libmudflapth without pthread.h." -#endif - -#if HAVE_STDINT_H -#include <stdint.h> -#else -typedef __mf_uintptr_t uintptr_t; -#endif - -/* Private definitions related to mf-runtime.h */ - -#define __MF_TYPE_MAX_CEM __MF_TYPE_STACK /* largest type# for the cemetery */ -#define __MF_TYPE_MAX __MF_TYPE_GUESS - - -#ifndef max -#define max(a,b) ((a) > (b) ? (a) : (b)) -#endif - -#ifndef min -#define min(a,b) ((a) < (b) ? (a) : (b)) -#endif - -/* Address calculation macros. */ - -#define MINPTR ((uintptr_t) 0) -#define MAXPTR (~ (uintptr_t) 0) - -/* Clamp the addition/subtraction of uintptr_t's to [MINPTR,MAXPTR] */ -#define CLAMPSUB(ptr,offset) (((uintptr_t) ptr) >= (offset) ? ((uintptr_t) ptr)-((uintptr_t) offset) : MINPTR) -#define CLAMPADD(ptr,offset) (((uintptr_t) ptr) <= MAXPTR-(offset) ? ((uintptr_t) ptr)+((uintptr_t) offset) : MAXPTR) -#define CLAMPSZ(ptr,size) ((size) ? (((uintptr_t) ptr) <= MAXPTR-(size)+1 ? ((uintptr_t) ptr)+((uintptr_t) size) - 1 : MAXPTR) : ((uintptr_t) ptr)) - -#define __MF_CACHE_INDEX(ptr) ((((uintptr_t) (ptr)) >> __mf_lc_shift) & __mf_lc_mask) -#define __MF_CACHE_MISS_P(ptr,sz) ({ \ - struct __mf_cache *elem = & __mf_lookup_cache[__MF_CACHE_INDEX((ptr))]; \ - ((elem->low > (uintptr_t) (ptr)) || \ - (elem->high < (CLAMPADD((uintptr_t) (ptr), (uintptr_t) CLAMPSUB(sz,1) )))); }) -/* XXX: the above should use CLAMPSZ () */ - - - -/* Private functions. */ - -extern void __mf_violation (void *ptr, size_t sz, - uintptr_t pc, const char *location, - int type); -extern size_t __mf_backtrace (char ***, void *, unsigned); -extern int __mf_heuristic_check (uintptr_t, uintptr_t); - -/* ------------------------------------------------------------------------ */ -/* Type definitions. */ -/* ------------------------------------------------------------------------ */ - -/* The mf_state type codes describe recursion and initialization order. - - reentrant means we are inside a mf-runtime support routine, such as - __mf_register, and thus there should be no calls to any wrapped functions, - such as the wrapped malloc. This indicates a bug if it occurs. - in_malloc means we are inside a real malloc call inside a wrapped malloc - call, and thus there should be no calls to any wrapped functions like the - wrapped mmap. This happens on some systems due to how the system libraries - are constructed. */ - -enum __mf_state_enum { active, reentrant, in_malloc }; - -/* The __mf_options structure records optional or tunable aspects of the - mudflap library's behavior. There is a single global instance of this - structure which is populated from user input (in an environment variable) - when the library initializes. */ - -struct __mf_options -{ - /* Emit a trace message for each call. */ - unsigned trace_mf_calls; - - /* Collect and emit statistics. */ - unsigned collect_stats; - - /* Set up a SIGUSR1 -> __mf_report handler. */ - unsigned sigusr1_report; - - /* Execute internal checking code. */ - unsigned internal_checking; - - /* Age object liveness periodically. */ - unsigned tree_aging; - - /* Adapt the lookup cache to working set. */ - unsigned adapt_cache; - - /* Print list of leaked heap objects on shutdown. */ - unsigned print_leaks; - -#ifdef HAVE___LIBC_FREERES - /* Call __libc_freeres before leak analysis. */ - unsigned call_libc_freeres; -#endif - - /* Detect reads of uninitialized objects. */ - unsigned check_initialization; - - /* Print verbose description of violations. */ - unsigned verbose_violations; - - /* Abbreviate duplicate object descriptions. */ - unsigned abbreviate; - - /* Emit internal tracing message. */ - unsigned verbose_trace; - - /* Wipe stack/heap objects upon unwind. */ - unsigned wipe_stack; - unsigned wipe_heap; - - /* Maintain a queue of this many deferred free()s, - to trap use of freed memory. */ - unsigned free_queue_length; - - /* Maintain a history of this many past unregistered objects. */ - unsigned persistent_count; - - /* Pad allocated extents by this many bytes on either side. */ - unsigned crumple_zone; - - /* Maintain this many stack frames for contexts. */ - unsigned backtrace; - - /* Ignore read operations even if mode_check is in effect. */ - unsigned ignore_reads; - - /* Collect register/unregister timestamps. */ - unsigned timestamps; - -#ifdef LIBMUDFLAPTH - /* Thread stack size. */ - unsigned thread_stack; -#endif - - /* Major operation mode */ -#define mode_nop 0 /* Do nothing. */ -#define mode_populate 1 /* Populate tree but do not check for violations. */ -#define mode_check 2 /* Populate and check for violations (normal). */ -#define mode_violate 3 /* Trigger a violation on every call (diagnostic). */ - unsigned mudflap_mode; - - /* How to handle a violation. */ -#define viol_nop 0 /* Return control to application. */ -#define viol_segv 1 /* Signal self with segv. */ -#define viol_abort 2 /* Call abort (). */ -#define viol_gdb 3 /* Fork a debugger on self */ - unsigned violation_mode; - - /* Violation heuristics selection. */ - unsigned heur_stack_bound; /* allow current stack region */ - unsigned heur_proc_map; /* allow & cache /proc/self/map regions. */ - unsigned heur_start_end; /* allow _start .. _end */ - unsigned heur_std_data; /* allow & cache stdlib data */ -}; - - -#ifdef PIC - -/* This is a table of dynamically resolved function pointers. */ - -struct __mf_dynamic_entry -{ - void *pointer; - char *name; - char *version; -}; - -/* The definition of the array (mf-runtime.c) must match the enums! */ -extern struct __mf_dynamic_entry __mf_dynamic[]; -enum __mf_dynamic_index -{ - dyn_calloc, dyn_free, dyn_malloc, dyn_mmap, -#ifdef HAVE_MMAP64 - dyn_mmap64, -#endif - dyn_munmap, dyn_realloc, - dyn_INITRESOLVE, /* Marker for last init-time resolution. */ -#ifdef LIBMUDFLAPTH - dyn_pthread_create -#endif -}; - -#endif /* PIC */ - -/* ------------------------------------------------------------------------ */ -/* Private global variables. */ -/* ------------------------------------------------------------------------ */ - -#ifdef LIBMUDFLAPTH -extern pthread_mutex_t __mf_biglock; -#define LOCKTH() do { extern unsigned long __mf_lock_contention; \ - int rc = pthread_mutex_trylock (& __mf_biglock); \ - if (rc) { __mf_lock_contention ++; \ - rc = pthread_mutex_lock (& __mf_biglock); } \ - assert (rc==0); } while (0) -#define UNLOCKTH() do { int rc = pthread_mutex_unlock (& __mf_biglock); \ - assert (rc==0); } while (0) -#else -#define LOCKTH() do {} while (0) -#define UNLOCKTH() do {} while (0) -#endif - -#if defined(LIBMUDFLAPTH) && (!defined(HAVE_TLS) || defined(USE_EMUTLS)) -extern enum __mf_state_enum __mf_get_state (void); -extern void __mf_set_state (enum __mf_state_enum); -#else -# ifdef LIBMUDFLAPTH -extern __thread enum __mf_state_enum __mf_state_1; -# else -extern enum __mf_state_enum __mf_state_1; -# endif -static inline enum __mf_state_enum __mf_get_state (void) -{ - return __mf_state_1; -} -static inline void __mf_set_state (enum __mf_state_enum s) -{ - __mf_state_1 = s; -} -#endif - -extern int __mf_starting_p; -extern struct __mf_options __mf_opts; - -/* ------------------------------------------------------------------------ */ -/* Utility macros. */ -/* ------------------------------------------------------------------------ */ - -#define UNLIKELY(e) (__builtin_expect (!!(e), 0)) -#define LIKELY(e) (__builtin_expect (!!(e), 1)) -#define STRINGIFY2(e) #e -#define STRINGIFY(e) STRINGIFY2(e) - -#ifdef LIBMUDFLAPTH -#define VERBOSE_TRACE(...) \ - do { if (UNLIKELY (__mf_opts.verbose_trace)) { \ - fprintf (stderr, "mf(%u): ", (unsigned) pthread_self ()); \ - fprintf (stderr, __VA_ARGS__); \ - } } while (0) -#define TRACE(...) \ - do { if (UNLIKELY (__mf_opts.trace_mf_calls)) { \ - fprintf (stderr, "mf(%u): ", (unsigned) pthread_self ()); \ - fprintf (stderr, __VA_ARGS__); \ - } } while (0) -#else -#define VERBOSE_TRACE(...) \ - do { if (UNLIKELY (__mf_opts.verbose_trace)) { \ - fprintf (stderr, "mf: "); \ - fprintf (stderr, __VA_ARGS__); \ - } } while (0) -#define TRACE(...) \ - do { if (UNLIKELY (__mf_opts.trace_mf_calls)) { \ - fprintf (stderr, "mf: "); \ - fprintf (stderr, __VA_ARGS__); \ - } } while (0) -#endif - - -#define __MF_PERSIST_MAX 256 -#define __MF_FREEQ_MAX 256 - -/* - Wrapping and redirection: - - Mudflap redirects a number of libc functions into itself, for "cheap" - verification (eg. strcpy, bzero, memcpy) and also to register / - unregister regions of memory as they are manipulated by the program - (eg. malloc/free, mmap/munmap). - - There are two methods of wrapping. - - (1) The static method involves a list of -wrap=foo flags being passed to - the linker, which then links references to "foo" to the symbol - "__wrap_foo", and links references to "__real_foo" to the symbol "foo". - When compiled without -DPIC, libmudflap.a contains such __wrap_foo - functions which delegate to __real_foo functions in libc to get their - work done. - - (2) The dynamic method involves providing a definition of symbol foo in - libmudflap.so and linking it earlier in the compiler command line, - before libc.so. The function "foo" in libmudflap must then call - dlsym(RTLD_NEXT, "foo") to acquire a pointer to the "real" libc foo, or - at least the "next" foo in the dynamic link resolution order. - - We switch between these two techniques by the presence of the -DPIC - #define passed in by libtool when building libmudflap. -*/ - - -#ifdef PIC - -extern void __mf_resolve_single_dynamic (struct __mf_dynamic_entry *); - -#define _GNU_SOURCE -#include <dlfcn.h> - -#define WRAPPER(ret, fname, ...) \ -ret __wrap_ ## fname (__VA_ARGS__) \ - __attribute__ (( alias (#fname) )); \ -ret __real_ ## fname (__VA_ARGS__) \ - __attribute__ (( alias (#fname) )); \ -ret fname (__VA_ARGS__) -#define DECLARE(ty, fname, ...) \ - typedef ty (*__mf_fn_ ## fname) (__VA_ARGS__); \ - extern ty __mf_0fn_ ## fname (__VA_ARGS__); -#define CALL_REAL(fname, ...) \ - ({__mf_starting_p \ - ? __mf_0fn_ ## fname (__VA_ARGS__) \ - : (__mf_resolve_single_dynamic (& __mf_dynamic[dyn_ ## fname]), \ - (((__mf_fn_ ## fname)(__mf_dynamic[dyn_ ## fname].pointer)) (__VA_ARGS__)));}) -#define CALL_BACKUP(fname, ...) \ - __mf_0fn_ ## fname(__VA_ARGS__) - -#else /* not PIC --> static library */ - -#define WRAPPER(ret, fname, ...) \ -ret __wrap_ ## fname (__VA_ARGS__) -#define DECLARE(ty, fname, ...) \ - extern ty __real_ ## fname (__VA_ARGS__) -#define CALL_REAL(fname, ...) \ - __real_ ## fname (__VA_ARGS__) -#define CALL_BACKUP(fname, ...) \ - __real_ ## fname(__VA_ARGS__) - -#endif /* PIC */ - -/* WRAPPER2 is for functions intercepted via macros at compile time. */ -#define WRAPPER2(ret, fname, ...) \ -ret __mfwrap_ ## fname (__VA_ARGS__) - - -/* Utility macros for mf-hooks*.c */ - -#define MF_VALIDATE_EXTENT(value,size,acc,context) \ - do { \ - if (UNLIKELY (size > 0 && __MF_CACHE_MISS_P (value, size))) \ - if (acc == __MF_CHECK_WRITE || ! __mf_opts.ignore_reads) \ - __mf_check ((void *) (value), (size), acc, "(" context ")"); \ - } while (0) -#define BEGIN_PROTECT(fname, ...) \ - if (UNLIKELY (__mf_starting_p)) \ - { \ - return CALL_BACKUP(fname, __VA_ARGS__); \ - } \ - else if (UNLIKELY (__mf_get_state () == reentrant)) \ - { \ - extern unsigned long __mf_reentrancy; \ - __mf_reentrancy ++; \ - return CALL_REAL(fname, __VA_ARGS__); \ - } \ - else if (UNLIKELY (__mf_get_state () == in_malloc)) \ - { \ - return CALL_REAL(fname, __VA_ARGS__); \ - } \ - else \ - { \ - TRACE ("%s\n", __PRETTY_FUNCTION__); \ - } - -/* There is an assumption here that these will only be called in routines - that call BEGIN_PROTECT at the start, and hence the state must always - be active when BEGIN_MALLOC_PROTECT is called. */ -#define BEGIN_MALLOC_PROTECT() \ - __mf_set_state (in_malloc) - -#define END_MALLOC_PROTECT() \ - __mf_set_state (active) - -/* Unlocked variants of main entry points from mf-runtime.h. */ -extern void __mfu_check (void *ptr, size_t sz, int type, const char *location); -extern void __mfu_register (void *ptr, size_t sz, int type, const char *name); -extern void __mfu_unregister (void *ptr, size_t sz, int type); -extern void __mfu_report (); -extern int __mfu_set_options (const char *opts); - - -#endif /* __MF_IMPL_H */ diff --git a/libmudflap/mf-runtime.c b/libmudflap/mf-runtime.c deleted file mode 100644 index 96a396e..0000000 --- a/libmudflap/mf-runtime.c +++ /dev/null @@ -1,2886 +0,0 @@ -/* Mudflap: narrow-pointer bounds-checking by tree rewriting. - Copyright (C) 2002-2013 Free Software Foundation, Inc. - Contributed by Frank Ch. Eigler <fche@redhat.com> - and Graydon Hoare <graydon@redhat.com> - Splay Tree code originally by Mark Mitchell <mark@markmitchell.com>, - adapted from libiberty. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. */ - -#include "config.h" - -/* These attempt to coax various unix flavours to declare all our - needed tidbits in the system headers. */ -#if !defined(__FreeBSD__) && !defined(__APPLE__) -#define _POSIX_SOURCE -#endif /* Some BSDs break <sys/socket.h> if this is defined. */ -#define _GNU_SOURCE -#define _XOPEN_SOURCE -#define _BSD_TYPES -#define __EXTENSIONS__ -#define _ALL_SOURCE -#define _LARGE_FILE_API -#define _XOPEN_SOURCE_EXTENDED 1 - -#include <stdio.h> -#include <stdlib.h> -#include <sys/types.h> -#include <sys/time.h> -#include <time.h> -#include <unistd.h> -#ifdef HAVE_EXECINFO_H -#include <execinfo.h> -#endif -#ifdef HAVE_SIGNAL_H -#include <signal.h> -#endif -#include <assert.h> - -#include <string.h> -#include <limits.h> -#include <sys/types.h> -#include <signal.h> -#include <errno.h> -#include <ctype.h> - -#include "mf-runtime.h" -#include "mf-impl.h" - - -/* ------------------------------------------------------------------------ */ -/* Splay-tree implementation. */ - -typedef uintptr_t mfsplay_tree_key; -typedef void *mfsplay_tree_value; - -/* Forward declaration for a node in the tree. */ -typedef struct mfsplay_tree_node_s *mfsplay_tree_node; - -/* The type of a function used to iterate over the tree. */ -typedef int (*mfsplay_tree_foreach_fn) (mfsplay_tree_node, void *); - -/* The nodes in the splay tree. */ -struct mfsplay_tree_node_s -{ - /* Data. */ - mfsplay_tree_key key; - mfsplay_tree_value value; - /* Children. */ - mfsplay_tree_node left; - mfsplay_tree_node right; - /* XXX: The addition of a parent pointer may eliminate some recursion. */ -}; - -/* The splay tree itself. */ -struct mfsplay_tree_s -{ - /* The root of the tree. */ - mfsplay_tree_node root; - - /* The last key value for which the tree has been splayed, but not - since modified. */ - mfsplay_tree_key last_splayed_key; - int last_splayed_key_p; - - /* Statistics. */ - unsigned num_keys; - - /* Traversal recursion control flags. */ - unsigned max_depth; - unsigned depth; - unsigned rebalance_p; -}; -typedef struct mfsplay_tree_s *mfsplay_tree; - -static mfsplay_tree mfsplay_tree_new (void); -static mfsplay_tree_node mfsplay_tree_insert (mfsplay_tree, mfsplay_tree_key, mfsplay_tree_value); -static void mfsplay_tree_remove (mfsplay_tree, mfsplay_tree_key); -static mfsplay_tree_node mfsplay_tree_lookup (mfsplay_tree, mfsplay_tree_key); -static mfsplay_tree_node mfsplay_tree_predecessor (mfsplay_tree, mfsplay_tree_key); -static mfsplay_tree_node mfsplay_tree_successor (mfsplay_tree, mfsplay_tree_key); -static int mfsplay_tree_foreach (mfsplay_tree, mfsplay_tree_foreach_fn, void *); -static void mfsplay_tree_rebalance (mfsplay_tree sp); - -/* ------------------------------------------------------------------------ */ -/* Utility macros */ - -#define CTOR __attribute__ ((constructor)) -#define DTOR __attribute__ ((destructor)) - - -/* Codes to describe the context in which a violation occurs. */ -#define __MF_VIOL_UNKNOWN 0 -#define __MF_VIOL_READ 1 -#define __MF_VIOL_WRITE 2 -#define __MF_VIOL_REGISTER 3 -#define __MF_VIOL_UNREGISTER 4 -#define __MF_VIOL_WATCH 5 - -/* Protect against recursive calls. */ - -static void -begin_recursion_protect1 (const char *pf) -{ - if (__mf_get_state () == reentrant) - { - write (2, "mf: erroneous reentrancy detected in `", 38); - write (2, pf, strlen(pf)); - write (2, "'\n", 2); \ - abort (); - } - __mf_set_state (reentrant); -} - -#define BEGIN_RECURSION_PROTECT() \ - begin_recursion_protect1 (__PRETTY_FUNCTION__) - -#define END_RECURSION_PROTECT() \ - __mf_set_state (active) - -/* ------------------------------------------------------------------------ */ -/* Required globals. */ - -#define LOOKUP_CACHE_MASK_DFL 1023 -#define LOOKUP_CACHE_SIZE_MAX 65536 /* Allows max CACHE_MASK 0xFFFF */ -#define LOOKUP_CACHE_SHIFT_DFL 2 - -struct __mf_cache __mf_lookup_cache [LOOKUP_CACHE_SIZE_MAX]; -uintptr_t __mf_lc_mask = LOOKUP_CACHE_MASK_DFL; -unsigned char __mf_lc_shift = LOOKUP_CACHE_SHIFT_DFL; -#define LOOKUP_CACHE_SIZE (__mf_lc_mask + 1) - -struct __mf_options __mf_opts; -int __mf_starting_p = 1; - -#ifdef LIBMUDFLAPTH -#if defined(HAVE_TLS) && !defined(USE_EMUTLS) -__thread enum __mf_state_enum __mf_state_1 = reentrant; -#endif -#else -enum __mf_state_enum __mf_state_1 = reentrant; -#endif - -#ifdef LIBMUDFLAPTH -pthread_mutex_t __mf_biglock = -#ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP - PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP; -#else - PTHREAD_MUTEX_INITIALIZER; -#endif -#endif - -/* Use HAVE_PTHREAD_H here instead of LIBMUDFLAPTH, so that even - the libmudflap.la (no threading support) can diagnose whether - the application is linked with -lpthread. See __mf_usage() below. */ -#if HAVE_PTHREAD_H -#ifdef _POSIX_THREADS -#pragma weak pthread_join -#else -#define pthread_join NULL -#endif -#endif - - -/* ------------------------------------------------------------------------ */ -/* stats-related globals. */ - -static unsigned long __mf_count_check; -static unsigned long __mf_lookup_cache_reusecount [LOOKUP_CACHE_SIZE_MAX]; -static unsigned long __mf_count_register; -static unsigned long __mf_total_register_size [__MF_TYPE_MAX+1]; -static unsigned long __mf_count_unregister; -static unsigned long __mf_total_unregister_size; -static unsigned long __mf_count_violation [__MF_VIOL_WATCH+1]; -static unsigned long __mf_sigusr1_received; -static unsigned long __mf_sigusr1_handled; -/* not static */ unsigned long __mf_reentrancy; -#ifdef LIBMUDFLAPTH -/* not static */ unsigned long __mf_lock_contention; -#endif - - -/* ------------------------------------------------------------------------ */ -/* mode-check-related globals. */ - -typedef struct __mf_object -{ - uintptr_t low, high; /* __mf_register parameters */ - const char *name; - char type; /* __MF_TYPE_something */ - char watching_p; /* Trigger a VIOL_WATCH on access? */ - unsigned read_count; /* Number of times __mf_check/read was called on this object. */ - unsigned write_count; /* Likewise for __mf_check/write. */ - unsigned liveness; /* A measure of recent checking activity. */ - unsigned description_epoch; /* Last epoch __mf_describe_object printed this. */ - - uintptr_t alloc_pc; - struct timeval alloc_time; - char **alloc_backtrace; - size_t alloc_backtrace_size; -#ifdef LIBMUDFLAPTH - pthread_t alloc_thread; -#endif - - int deallocated_p; - uintptr_t dealloc_pc; - struct timeval dealloc_time; - char **dealloc_backtrace; - size_t dealloc_backtrace_size; -#ifdef LIBMUDFLAPTH - pthread_t dealloc_thread; -#endif -} __mf_object_t; - -/* Live objects: splay trees, separated by type, ordered on .low (base address). */ -/* Actually stored as static vars within lookup function below. */ - -/* Dead objects: circular arrays; _MIN_CEM .. _MAX_CEM only */ -static unsigned __mf_object_dead_head[__MF_TYPE_MAX_CEM+1]; /* next empty spot */ -static __mf_object_t *__mf_object_cemetary[__MF_TYPE_MAX_CEM+1][__MF_PERSIST_MAX]; - - -/* ------------------------------------------------------------------------ */ -/* Forward function declarations */ - -void __mf_init () CTOR; -static void __mf_sigusr1_respond (); -static unsigned __mf_find_objects (uintptr_t ptr_low, uintptr_t ptr_high, - __mf_object_t **objs, unsigned max_objs); -static unsigned __mf_find_objects2 (uintptr_t ptr_low, uintptr_t ptr_high, - __mf_object_t **objs, unsigned max_objs, int type); -static unsigned __mf_find_dead_objects (uintptr_t ptr_low, uintptr_t ptr_high, - __mf_object_t **objs, unsigned max_objs); -static void __mf_adapt_cache (); -static void __mf_describe_object (__mf_object_t *obj); -static unsigned __mf_watch_or_not (void *ptr, size_t sz, char flag); -static mfsplay_tree __mf_object_tree (int type); -static void __mf_link_object (__mf_object_t *node); -static void __mf_unlink_object (__mf_object_t *node); - - -/* ------------------------------------------------------------------------ */ -/* Configuration engine */ - -static void -__mf_set_default_options () -{ - memset (& __mf_opts, 0, sizeof (__mf_opts)); - - __mf_opts.adapt_cache = 1000003; - __mf_opts.abbreviate = 1; - __mf_opts.verbose_violations = 1; - __mf_opts.free_queue_length = 4; - __mf_opts.persistent_count = 100; - __mf_opts.crumple_zone = 32; - __mf_opts.backtrace = 4; - __mf_opts.timestamps = 1; - __mf_opts.mudflap_mode = mode_check; - __mf_opts.violation_mode = viol_nop; -#ifdef HAVE___LIBC_FREERES - __mf_opts.call_libc_freeres = 1; -#endif - __mf_opts.heur_std_data = 1; -#ifdef LIBMUDFLAPTH - __mf_opts.thread_stack = 0; -#endif - - /* PR41443: Beware that the above flags will be applied to - setuid/setgid binaries, and cannot be overriden with - $MUDFLAP_OPTIONS. So the defaults must be non-exploitable. - - Should we consider making the default violation_mode something - harsher than viol_nop? OTOH, glibc's MALLOC_CHECK_ is disabled - by default for these same programs. */ -} - -static struct mudoption -{ - char *name; - char *description; - enum - { - set_option, - read_integer_option, - } type; - unsigned value; - unsigned *target; -} -options [] = - { - {"mode-nop", - "mudflaps do nothing", - set_option, (unsigned)mode_nop, (unsigned *)&__mf_opts.mudflap_mode}, - {"mode-populate", - "mudflaps populate object tree", - set_option, (unsigned)mode_populate, (unsigned *)&__mf_opts.mudflap_mode}, - {"mode-check", - "mudflaps check for memory violations", - set_option, (unsigned)mode_check, (unsigned *)&__mf_opts.mudflap_mode}, - {"mode-violate", - "mudflaps always cause violations (diagnostic)", - set_option, (unsigned)mode_violate, (unsigned *)&__mf_opts.mudflap_mode}, - - {"viol-nop", - "violations do not change program execution", - set_option, (unsigned)viol_nop, (unsigned *)&__mf_opts.violation_mode}, - {"viol-abort", - "violations cause a call to abort()", - set_option, (unsigned)viol_abort, (unsigned *)&__mf_opts.violation_mode}, - {"viol-segv", - "violations are promoted to SIGSEGV signals", - set_option, (unsigned)viol_segv, (unsigned *)&__mf_opts.violation_mode}, - {"viol-gdb", - "violations fork a gdb process attached to current program", - set_option, (unsigned)viol_gdb, (unsigned *)&__mf_opts.violation_mode}, - {"trace-calls", - "trace calls to mudflap runtime library", - set_option, 1, &__mf_opts.trace_mf_calls}, - {"verbose-trace", - "trace internal events within mudflap runtime library", - set_option, 1, &__mf_opts.verbose_trace}, - {"collect-stats", - "collect statistics on mudflap's operation", - set_option, 1, &__mf_opts.collect_stats}, -#ifdef SIGUSR1 - {"sigusr1-report", - "print report upon SIGUSR1", - set_option, 1, &__mf_opts.sigusr1_report}, -#endif - {"internal-checking", - "perform more expensive internal checking", - set_option, 1, &__mf_opts.internal_checking}, - {"print-leaks", - "print any memory leaks at program shutdown", - set_option, 1, &__mf_opts.print_leaks}, -#ifdef HAVE___LIBC_FREERES - {"libc-freeres", - "call glibc __libc_freeres at shutdown for better leak data", - set_option, 1, &__mf_opts.call_libc_freeres}, -#endif - {"check-initialization", - "detect uninitialized object reads", - set_option, 1, &__mf_opts.check_initialization}, - {"verbose-violations", - "print verbose messages when memory violations occur", - set_option, 1, &__mf_opts.verbose_violations}, - {"abbreviate", - "abbreviate repetitive listings", - set_option, 1, &__mf_opts.abbreviate}, - {"timestamps", - "track object lifetime timestamps", - set_option, 1, &__mf_opts.timestamps}, - {"ignore-reads", - "ignore read accesses - assume okay", - set_option, 1, &__mf_opts.ignore_reads}, - {"wipe-stack", - "wipe stack objects at unwind", - set_option, 1, &__mf_opts.wipe_stack}, - {"wipe-heap", - "wipe heap objects at free", - set_option, 1, &__mf_opts.wipe_heap}, - {"heur-proc-map", - "support /proc/self/map heuristics", - set_option, 1, &__mf_opts.heur_proc_map}, - {"heur-stack-bound", - "enable a simple upper stack bound heuristic", - set_option, 1, &__mf_opts.heur_stack_bound}, - {"heur-start-end", - "support _start.._end heuristics", - set_option, 1, &__mf_opts.heur_start_end}, - {"heur-stdlib", - "register standard library data (argv, errno, stdin, ...)", - set_option, 1, &__mf_opts.heur_std_data}, - {"free-queue-length", - "queue N deferred free() calls before performing them", - read_integer_option, 0, &__mf_opts.free_queue_length}, - {"persistent-count", - "keep a history of N unregistered regions", - read_integer_option, 0, &__mf_opts.persistent_count}, - {"crumple-zone", - "surround allocations with crumple zones of N bytes", - read_integer_option, 0, &__mf_opts.crumple_zone}, - /* XXX: not type-safe. - {"lc-mask", - "set lookup cache size mask to N (2**M - 1)", - read_integer_option, 0, (int *)(&__mf_lc_mask)}, - {"lc-shift", - "set lookup cache pointer shift", - read_integer_option, 0, (int *)(&__mf_lc_shift)}, - */ - {"lc-adapt", - "adapt mask/shift parameters after N cache misses", - read_integer_option, 1, &__mf_opts.adapt_cache}, - {"backtrace", - "keep an N-level stack trace of each call context", - read_integer_option, 0, &__mf_opts.backtrace}, -#ifdef LIBMUDFLAPTH - {"thread-stack", - "override thread stacks allocation: N kB", - read_integer_option, 0, &__mf_opts.thread_stack}, -#endif - {0, 0, set_option, 0, NULL} - }; - -static void -__mf_usage () -{ - struct mudoption *opt; - - fprintf (stderr, - "This is a %s%sGCC \"mudflap\" memory-checked binary.\n" - "Mudflap is Copyright (C) 2002-2013 Free Software Foundation, Inc.\n" - "\n" - "Unless setuid, a program's mudflap options be set by an environment variable:\n" - "\n" - "$ export MUDFLAP_OPTIONS='<options>'\n" - "$ <mudflapped_program>\n" - "\n" - "where <options> is a space-separated list of \n" - "any of the following options. Use `-no-OPTION' to disable options.\n" - "\n", -#if HAVE_PTHREAD_H - (pthread_join ? "multi-threaded " : "single-threaded "), -#else - "", -#endif -#if LIBMUDFLAPTH - "thread-aware " -#else - "thread-unaware " -#endif - ); - /* XXX: The multi-threaded thread-unaware combination is bad. */ - - for (opt = options; opt->name; opt++) - { - int default_p = (opt->value == * opt->target); - - switch (opt->type) - { - char buf[128]; - case set_option: - fprintf (stderr, "-%-23.23s %s", opt->name, opt->description); - if (default_p) - fprintf (stderr, " [active]\n"); - else - fprintf (stderr, "\n"); - break; - case read_integer_option: - strncpy (buf, opt->name, 128); - strncpy (buf + strlen (opt->name), "=N", 2); - fprintf (stderr, "-%-23.23s %s", buf, opt->description); - fprintf (stderr, " [%d]\n", * opt->target); - break; - default: abort(); - } - } - - fprintf (stderr, "\n"); -} - - -int -__mf_set_options (const char *optstr) -{ - int rc; - LOCKTH (); - BEGIN_RECURSION_PROTECT (); - rc = __mfu_set_options (optstr); - /* XXX: It's not really that easy. A change to a bunch of parameters - can require updating auxiliary state or risk crashing: - free_queue_length, crumple_zone ... */ - END_RECURSION_PROTECT (); - UNLOCKTH (); - return rc; -} - - -int -__mfu_set_options (const char *optstr) -{ - struct mudoption *opts = 0; - char *nxt = 0; - long tmp = 0; - int rc = 0; - const char *saved_optstr = optstr; - - /* XXX: bounds-check for optstr! */ - - while (*optstr) - { - switch (*optstr) { - case ' ': - case '\t': - case '\n': - optstr++; - break; - - case '-': - if (*optstr+1) - { - int negate = 0; - optstr++; - - if (*optstr == '?' || - strncmp (optstr, "help", 4) == 0) - { - /* Caller will print help and exit. */ - return -1; - } - - if (strncmp (optstr, "no-", 3) == 0) - { - negate = 1; - optstr = & optstr[3]; - } - - for (opts = options; opts->name; opts++) - { - if (strncmp (optstr, opts->name, strlen (opts->name)) == 0) - { - optstr += strlen (opts->name); - assert (opts->target); - switch (opts->type) - { - case set_option: - if (negate) - *(opts->target) = 0; - else - *(opts->target) = opts->value; - break; - case read_integer_option: - if (! negate && (*optstr == '=' && *(optstr+1))) - { - optstr++; - tmp = strtol (optstr, &nxt, 10); - if ((optstr != nxt) && (tmp != LONG_MAX)) - { - optstr = nxt; - *(opts->target) = (int)tmp; - } - } - else if (negate) - * opts->target = 0; - break; - } - } - } - } - break; - - default: - fprintf (stderr, - "warning: unrecognized string '%s' in mudflap options\n", - optstr); - optstr += strlen (optstr); - rc = -1; - break; - } - } - - /* Special post-processing: bound __mf_lc_mask and free_queue_length for security. */ - __mf_lc_mask &= (LOOKUP_CACHE_SIZE_MAX - 1); - __mf_opts.free_queue_length &= (__MF_FREEQ_MAX - 1); - - /* Clear the lookup cache, in case the parameters got changed. */ - /* XXX: race */ - memset (__mf_lookup_cache, 0, sizeof(__mf_lookup_cache)); - /* void slot 0 */ - __mf_lookup_cache[0].low = MAXPTR; - - TRACE ("set options from `%s'\n", saved_optstr); - - /* Call this unconditionally, in case -sigusr1-report was toggled. */ - __mf_sigusr1_respond (); - - return rc; -} - - -#ifdef PIC - -void -__mf_resolve_single_dynamic (struct __mf_dynamic_entry *e) -{ - char *err; - - assert (e); - if (e->pointer) return; - -#if HAVE_DLVSYM - if (e->version != NULL && e->version[0] != '\0') /* non-null/empty */ - e->pointer = dlvsym (RTLD_NEXT, e->name, e->version); - else -#endif - e->pointer = dlsym (RTLD_NEXT, e->name); - - err = dlerror (); - - if (err) - { - fprintf (stderr, "mf: error in dlsym(\"%s\"): %s\n", - e->name, err); - abort (); - } - if (! e->pointer) - { - fprintf (stderr, "mf: dlsym(\"%s\") = NULL\n", e->name); - abort (); - } -} - - -static void -__mf_resolve_dynamics () -{ - int i; - for (i = 0; i < dyn_INITRESOLVE; i++) - __mf_resolve_single_dynamic (& __mf_dynamic[i]); -} - - -/* NB: order must match enums in mf-impl.h */ -struct __mf_dynamic_entry __mf_dynamic [] = -{ - {NULL, "calloc", NULL}, - {NULL, "free", NULL}, - {NULL, "malloc", NULL}, - {NULL, "mmap", NULL}, -#ifdef HAVE_MMAP64 - {NULL, "mmap64", NULL}, -#endif - {NULL, "munmap", NULL}, - {NULL, "realloc", NULL}, - {NULL, "DUMMY", NULL}, /* dyn_INITRESOLVE */ -#ifdef LIBMUDFLAPTH - {NULL, "pthread_create", PTHREAD_CREATE_VERSION}, - {NULL, "pthread_join", NULL}, - {NULL, "pthread_exit", NULL} -#endif -}; - -#endif /* PIC */ - - - -/* ------------------------------------------------------------------------ */ - -/* Lookup & manage automatic initialization of the five or so splay trees. */ -static mfsplay_tree -__mf_object_tree (int type) -{ - static mfsplay_tree trees [__MF_TYPE_MAX+1]; - assert (type >= 0 && type <= __MF_TYPE_MAX); - if (UNLIKELY (trees[type] == NULL)) - trees[type] = mfsplay_tree_new (); - return trees[type]; -} - - -/* not static */void -__mf_init () -{ - char *ov = 0; - - /* Return if initialization has already been done. */ - if (LIKELY (__mf_starting_p == 0)) - return; - -#if defined(__FreeBSD__) && defined(LIBMUDFLAPTH) - pthread_self(); - LOCKTH (); - UNLOCKTH (); -#endif /* Prime mutex which calls calloc upon first lock to avoid deadlock. */ - - /* This initial bootstrap phase requires that __mf_starting_p = 1. */ -#ifdef PIC - __mf_resolve_dynamics (); -#endif - __mf_starting_p = 0; - - __mf_set_state (active); - - __mf_set_default_options (); - - if (getuid () == geteuid () && getgid () == getegid ()) /* PR41433, not setuid */ - ov = getenv ("MUDFLAP_OPTIONS"); - if (ov) - { - int rc = __mfu_set_options (ov); - if (rc < 0) - { - __mf_usage (); - exit (1); - } - } - - /* Initialize to a non-zero description epoch. */ - __mf_describe_object (NULL); - -#define REG_RESERVED(obj) \ - __mf_register (& obj, sizeof(obj), __MF_TYPE_NOACCESS, # obj) - - REG_RESERVED (__mf_lookup_cache); - REG_RESERVED (__mf_lc_mask); - REG_RESERVED (__mf_lc_shift); - /* XXX: others of our statics? */ - - /* Prevent access to *NULL. */ - __mf_register (MINPTR, 1, __MF_TYPE_NOACCESS, "NULL"); - __mf_lookup_cache[0].low = (uintptr_t) -1; -} - - - -int -__wrap_main (int argc, char* argv[]) -{ - extern char **environ; - extern int main (); - extern int __real_main (); - static int been_here = 0; - - if (__mf_opts.heur_std_data && ! been_here) - { - unsigned i; - - been_here = 1; - __mf_register (argv, sizeof(char *)*(argc+1), __MF_TYPE_STATIC, "argv[]"); - for (i=0; i<argc; i++) - { - unsigned j = strlen (argv[i]); - __mf_register (argv[i], j+1, __MF_TYPE_STATIC, "argv element"); - } - - for (i=0; ; i++) - { - char *e = environ[i]; - unsigned j; - if (e == NULL) break; - j = strlen (environ[i]); - __mf_register (environ[i], j+1, __MF_TYPE_STATIC, "environ element"); - } - __mf_register (environ, sizeof(char *)*(i+1), __MF_TYPE_STATIC, "environ[]"); - - __mf_register (& errno, sizeof (errno), __MF_TYPE_STATIC, "errno area"); - -#if !(defined(__sun__) && defined(__svr4__)) - /* Conflicts with the automatic registration of __iob[]. */ - __mf_register (stdin, sizeof (*stdin), __MF_TYPE_STATIC, "stdin"); - __mf_register (stdout, sizeof (*stdout), __MF_TYPE_STATIC, "stdout"); - __mf_register (stderr, sizeof (*stderr), __MF_TYPE_STATIC, "stderr"); -#endif - - /* Make some effort to register ctype.h static arrays. */ -#if defined(__sun__) && defined(__svr4__) - /* __ctype[] is declared without size, but MB_CUR_MAX is the last - member. There seems to be no proper way to determine the size. */ - __mf_register (__ctype, &MB_CUR_MAX - &__ctype[0] + 1, __MF_TYPE_STATIC, "__ctype"); - /* __ctype_mask points at _C_masks[1]. The size can only determined - using nm on libc.so.1. */ - __mf_register (__ctype_mask - 1, 1028, __MF_TYPE_STATIC, "_C_masks"); -#endif - /* On modern Linux GLIBC, these are thread-specific and changeable, and are dealt - with in mf-hooks2.c. */ - } - -#ifdef PIC - return main (argc, argv, environ); -#else - return __real_main (argc, argv, environ); -#endif -} - - - -extern void __mf_fini () DTOR; -void __mf_fini () -{ - TRACE ("__mf_fini\n"); - __mfu_report (); - -#ifndef PIC -/* Since we didn't populate the tree for allocations in constructors - before __mf_init, we cannot check destructors after __mf_fini. */ - __mf_opts.mudflap_mode = mode_nop; -#endif -} - - - -/* ------------------------------------------------------------------------ */ -/* __mf_check */ - -void __mf_check (void *ptr, size_t sz, int type, const char *location) -{ - LOCKTH (); - BEGIN_RECURSION_PROTECT (); - __mfu_check (ptr, sz, type, location); - END_RECURSION_PROTECT (); - UNLOCKTH (); -} - - -void __mfu_check (void *ptr, size_t sz, int type, const char *location) -{ - unsigned entry_idx = __MF_CACHE_INDEX (ptr); - struct __mf_cache *entry = & __mf_lookup_cache [entry_idx]; - int judgement = 0; /* 0=undecided; <0=violation; >0=okay */ - uintptr_t ptr_low = (uintptr_t) ptr; - uintptr_t ptr_high = CLAMPSZ (ptr, sz); - struct __mf_cache old_entry = *entry; - - if (UNLIKELY (__mf_opts.sigusr1_report)) - __mf_sigusr1_respond (); - if (UNLIKELY (__mf_opts.ignore_reads && type == 0)) - return; - - TRACE ("check ptr=%p b=%u size=%lu %s location=`%s'\n", - ptr, entry_idx, (unsigned long)sz, - (type == 0 ? "read" : "write"), location); - - switch (__mf_opts.mudflap_mode) - { - case mode_nop: - /* It is tempting to poison the cache here similarly to - mode_populate. However that eliminates a valuable - distinction between these two modes. mode_nop is useful to - let a user count & trace every single check / registration - call. mode_populate is useful to let a program run fast - while unchecked. - */ - judgement = 1; - break; - - case mode_populate: - entry->low = ptr_low; - entry->high = ptr_high; - judgement = 1; - break; - - case mode_check: - { - unsigned heuristics = 0; - - /* Advance aging/adaptation counters. */ - static unsigned adapt_count; - adapt_count ++; - if (UNLIKELY (__mf_opts.adapt_cache > 0 && - adapt_count > __mf_opts.adapt_cache)) - { - adapt_count = 0; - __mf_adapt_cache (); - } - - /* Looping only occurs if heuristics were triggered. */ - while (judgement == 0) - { - DECLARE (void, free, void *p); - __mf_object_t* ovr_obj[1]; - unsigned obj_count; - __mf_object_t** all_ovr_obj = NULL; - __mf_object_t** dealloc_me = NULL; - unsigned i; - - /* Find all overlapping objects. Be optimistic that there is just one. */ - obj_count = __mf_find_objects (ptr_low, ptr_high, ovr_obj, 1); - if (UNLIKELY (obj_count > 1)) - { - /* Allocate a real buffer and do the search again. */ - DECLARE (void *, malloc, size_t c); - unsigned n; - all_ovr_obj = CALL_REAL (malloc, (sizeof (__mf_object_t *) * - obj_count)); - if (all_ovr_obj == NULL) abort (); - n = __mf_find_objects (ptr_low, ptr_high, all_ovr_obj, obj_count); - assert (n == obj_count); - dealloc_me = all_ovr_obj; - } - else - { - all_ovr_obj = ovr_obj; - dealloc_me = NULL; - } - - /* Update object statistics. */ - for (i = 0; i < obj_count; i++) - { - __mf_object_t *obj = all_ovr_obj[i]; - assert (obj != NULL); - if (type == __MF_CHECK_READ) - obj->read_count ++; - else - obj->write_count ++; - obj->liveness ++; - } - - /* Iterate over the various objects. There are a number of special cases. */ - for (i = 0; i < obj_count; i++) - { - __mf_object_t *obj = all_ovr_obj[i]; - - /* Any __MF_TYPE_NOACCESS hit is bad. */ - if (UNLIKELY (obj->type == __MF_TYPE_NOACCESS)) - judgement = -1; - - /* Any object with a watch flag is bad. */ - if (UNLIKELY (obj->watching_p)) - judgement = -2; /* trigger VIOL_WATCH */ - - /* A read from an uninitialized object is bad. */ - if (UNLIKELY (__mf_opts.check_initialization - /* reading */ - && type == __MF_CHECK_READ - /* not written */ - && obj->write_count == 0 - /* uninitialized (heap) */ - && obj->type == __MF_TYPE_HEAP)) - judgement = -1; - } - - /* We now know that the access spans no invalid objects. */ - if (LIKELY (judgement >= 0)) - for (i = 0; i < obj_count; i++) - { - __mf_object_t *obj = all_ovr_obj[i]; - - /* Is this access entirely contained within this object? */ - if (LIKELY (ptr_low >= obj->low && ptr_high <= obj->high)) - { - /* Valid access. */ - entry->low = obj->low; - entry->high = obj->high; - judgement = 1; - } - } - - /* This access runs off the end of one valid object. That - could be okay, if other valid objects fill in all the - holes. We allow this only for HEAP and GUESS type - objects. Accesses to STATIC and STACK variables - should not be allowed to span. */ - if (UNLIKELY ((judgement == 0) && (obj_count > 1))) - { - unsigned uncovered = 0; - for (i = 0; i < obj_count; i++) - { - __mf_object_t *obj = all_ovr_obj[i]; - int j, uncovered_low_p, uncovered_high_p; - uintptr_t ptr_lower, ptr_higher; - - uncovered_low_p = ptr_low < obj->low; - ptr_lower = CLAMPSUB (obj->low, 1); - uncovered_high_p = ptr_high > obj->high; - ptr_higher = CLAMPADD (obj->high, 1); - - for (j = 0; j < obj_count; j++) - { - __mf_object_t *obj2 = all_ovr_obj[j]; - - if (i == j) continue; - - /* Filter out objects that cannot be spanned across. */ - if (obj2->type == __MF_TYPE_STACK - || obj2->type == __MF_TYPE_STATIC) - continue; - - /* Consider a side "covered" if obj2 includes - the next byte on that side. */ - if (uncovered_low_p - && (ptr_lower >= obj2->low && ptr_lower <= obj2->high)) - uncovered_low_p = 0; - if (uncovered_high_p - && (ptr_high >= obj2->low && ptr_higher <= obj2->high)) - uncovered_high_p = 0; - } - - if (uncovered_low_p || uncovered_high_p) - uncovered ++; - } - - /* Success if no overlapping objects are uncovered. */ - if (uncovered == 0) - judgement = 1; - } - - - if (dealloc_me != NULL) - CALL_REAL (free, dealloc_me); - - /* If the judgment is still unknown at this stage, loop - around at most one more time. */ - if (judgement == 0) - { - if (heuristics++ < 2) /* XXX parametrize this number? */ - judgement = __mf_heuristic_check (ptr_low, ptr_high); - else - judgement = -1; - } - } - - } - break; - - case mode_violate: - judgement = -1; - break; - } - - if (__mf_opts.collect_stats) - { - __mf_count_check ++; - - if (LIKELY (old_entry.low != entry->low || old_entry.high != entry->high)) - /* && (old_entry.low != 0) && (old_entry.high != 0)) */ - __mf_lookup_cache_reusecount [entry_idx] ++; - } - - if (UNLIKELY (judgement < 0)) - __mf_violation (ptr, sz, - (uintptr_t) __builtin_return_address (0), location, - ((judgement == -1) ? - (type == __MF_CHECK_READ ? __MF_VIOL_READ : __MF_VIOL_WRITE) : - __MF_VIOL_WATCH)); -} - - -static __mf_object_t * -__mf_insert_new_object (uintptr_t low, uintptr_t high, int type, - const char *name, uintptr_t pc) -{ - DECLARE (void *, calloc, size_t c, size_t n); - - __mf_object_t *new_obj; - new_obj = CALL_REAL (calloc, 1, sizeof(__mf_object_t)); - new_obj->low = low; - new_obj->high = high; - new_obj->type = type; - new_obj->name = name; - new_obj->alloc_pc = pc; -#if HAVE_GETTIMEOFDAY - if (__mf_opts.timestamps) - gettimeofday (& new_obj->alloc_time, NULL); -#endif -#if LIBMUDFLAPTH - new_obj->alloc_thread = pthread_self (); -#endif - - if (__mf_opts.backtrace > 0 && (type == __MF_TYPE_HEAP || type == __MF_TYPE_HEAP_I)) - new_obj->alloc_backtrace_size = - __mf_backtrace (& new_obj->alloc_backtrace, - (void *) pc, 2); - - __mf_link_object (new_obj); - return new_obj; -} - - -static void -__mf_uncache_object (__mf_object_t *old_obj) -{ - /* Remove any low/high pointers for this object from the lookup cache. */ - - /* Can it possibly exist in the cache? */ - if (LIKELY (old_obj->read_count + old_obj->write_count)) - { - uintptr_t low = old_obj->low; - uintptr_t high = old_obj->high; - struct __mf_cache *entry; - unsigned i; - if ((high - low) >= (__mf_lc_mask << __mf_lc_shift)) - { - /* For large objects (>= cache size - 1) check the whole cache. */ - entry = & __mf_lookup_cache [0]; - for (i = 0; i <= __mf_lc_mask; i++, entry++) - { - /* NB: the "||" in the following test permits this code to - tolerate the situation introduced by __mf_check over - contiguous objects, where a cache entry spans several - objects. */ - if (entry->low == low || entry->high == high) - { - entry->low = MAXPTR; - entry->high = MINPTR; - } - } - } - else - { - /* Object is now smaller then cache size. */ - unsigned entry_low_idx = __MF_CACHE_INDEX (low); - unsigned entry_high_idx = __MF_CACHE_INDEX (high); - if (entry_low_idx <= entry_high_idx) - { - entry = & __mf_lookup_cache [entry_low_idx]; - for (i = entry_low_idx; i <= entry_high_idx; i++, entry++) - { - /* NB: the "||" in the following test permits this code to - tolerate the situation introduced by __mf_check over - contiguous objects, where a cache entry spans several - objects. */ - if (entry->low == low || entry->high == high) - { - entry->low = MAXPTR; - entry->high = MINPTR; - } - } - } - else - { - /* Object wrapped around the end of the cache. First search - from low to end of cache and then from 0 to high. */ - entry = & __mf_lookup_cache [entry_low_idx]; - for (i = entry_low_idx; i <= __mf_lc_mask; i++, entry++) - { - /* NB: the "||" in the following test permits this code to - tolerate the situation introduced by __mf_check over - contiguous objects, where a cache entry spans several - objects. */ - if (entry->low == low || entry->high == high) - { - entry->low = MAXPTR; - entry->high = MINPTR; - } - } - entry = & __mf_lookup_cache [0]; - for (i = 0; i <= entry_high_idx; i++, entry++) - { - /* NB: the "||" in the following test permits this code to - tolerate the situation introduced by __mf_check over - contiguous objects, where a cache entry spans several - objects. */ - if (entry->low == low || entry->high == high) - { - entry->low = MAXPTR; - entry->high = MINPTR; - } - } - } - } - } -} - - -void -__mf_register (void *ptr, size_t sz, int type, const char *name) -{ - LOCKTH (); - BEGIN_RECURSION_PROTECT (); - __mfu_register (ptr, sz, type, name); - END_RECURSION_PROTECT (); - UNLOCKTH (); -} - - -void -__mfu_register (void *ptr, size_t sz, int type, const char *name) -{ - TRACE ("register ptr=%p size=%lu type=%x name='%s'\n", - ptr, (unsigned long) sz, type, name ? name : ""); - - if (__mf_opts.collect_stats) - { - __mf_count_register ++; - __mf_total_register_size [(type < 0) ? 0 : - (type > __MF_TYPE_MAX) ? 0 : - type] += sz; - } - - if (UNLIKELY (__mf_opts.sigusr1_report)) - __mf_sigusr1_respond (); - - switch (__mf_opts.mudflap_mode) - { - case mode_nop: - break; - - case mode_violate: - __mf_violation (ptr, sz, (uintptr_t) __builtin_return_address (0), NULL, - __MF_VIOL_REGISTER); - break; - - case mode_populate: - /* Clear the cache. */ - /* XXX: why the entire cache? */ - /* XXX: race */ - memset (__mf_lookup_cache, 0, sizeof(__mf_lookup_cache)); - /* void slot 0 */ - __mf_lookup_cache[0].low = MAXPTR; - break; - - case mode_check: - { - __mf_object_t *ovr_objs [1]; - unsigned num_overlapping_objs; - uintptr_t low = (uintptr_t) ptr; - uintptr_t high = CLAMPSZ (ptr, sz); - uintptr_t pc = (uintptr_t) __builtin_return_address (0); - - /* Treat unknown size indication as 1. */ - if (UNLIKELY (sz == 0)) sz = 1; - - /* Look for objects only of the same type. This will e.g. permit a registration - of a STATIC overlapping with a GUESS, and a HEAP with a NOACCESS. At - __mf_check time however harmful overlaps will be detected. */ - num_overlapping_objs = __mf_find_objects2 (low, high, ovr_objs, 1, type); - - /* Handle overlaps. */ - if (UNLIKELY (num_overlapping_objs > 0)) - { - __mf_object_t *ovr_obj = ovr_objs[0]; - - /* Accept certain specific duplication pairs. */ - if (((type == __MF_TYPE_STATIC) || (type == __MF_TYPE_GUESS)) - && ovr_obj->low == low - && ovr_obj->high == high - && ovr_obj->type == type) - { - /* Duplicate registration for static objects may come - from distinct compilation units. */ - VERBOSE_TRACE ("harmless duplicate reg %p-%p `%s'\n", - (void *) low, (void *) high, - (ovr_obj->name ? ovr_obj->name : "")); - break; - } - - /* Alas, a genuine violation. */ - else - { - /* Two or more *real* mappings here. */ - __mf_violation ((void *) ptr, sz, - (uintptr_t) __builtin_return_address (0), NULL, - __MF_VIOL_REGISTER); - } - } - else /* No overlapping objects: AOK. */ - __mf_insert_new_object (low, high, type, name, pc); - - /* We could conceivably call __mf_check() here to prime the cache, - but then the read_count/write_count field is not reliable. */ - break; - } - } /* end switch (__mf_opts.mudflap_mode) */ -} - - -void -__mf_unregister (void *ptr, size_t sz, int type) -{ - LOCKTH (); - BEGIN_RECURSION_PROTECT (); - __mfu_unregister (ptr, sz, type); - END_RECURSION_PROTECT (); - UNLOCKTH (); -} - - -void -__mfu_unregister (void *ptr, size_t sz, int type) -{ - DECLARE (void, free, void *ptr); - - if (UNLIKELY (__mf_opts.sigusr1_report)) - __mf_sigusr1_respond (); - - TRACE ("unregister ptr=%p size=%lu type=%x\n", ptr, (unsigned long) sz, type); - - switch (__mf_opts.mudflap_mode) - { - case mode_nop: - break; - - case mode_violate: - __mf_violation (ptr, sz, - (uintptr_t) __builtin_return_address (0), NULL, - __MF_VIOL_UNREGISTER); - break; - - case mode_populate: - /* Clear the cache. */ - /* XXX: race */ - memset (__mf_lookup_cache, 0, sizeof(__mf_lookup_cache)); - /* void slot 0 */ - __mf_lookup_cache[0].low = MAXPTR; - break; - - case mode_check: - { - __mf_object_t *old_obj = NULL; - __mf_object_t *del_obj = NULL; /* Object to actually delete. */ - __mf_object_t *objs[1] = {NULL}; - unsigned num_overlapping_objs; - - num_overlapping_objs = __mf_find_objects2 ((uintptr_t) ptr, - CLAMPSZ (ptr, sz), objs, 1, type); - - /* Special case for HEAP_I - see free & realloc hook. They don't - know whether the input region was HEAP or HEAP_I before - unmapping it. Here we give HEAP a try in case HEAP_I - failed. */ - if ((type == __MF_TYPE_HEAP_I) && (num_overlapping_objs == 0)) - { - num_overlapping_objs = __mf_find_objects2 ((uintptr_t) ptr, - CLAMPSZ (ptr, sz), objs, 1, __MF_TYPE_HEAP); - } - - old_obj = objs[0]; - if (UNLIKELY ((num_overlapping_objs != 1) /* more than one overlap */ - || ((sz == 0) ? 0 : (sz != (old_obj->high - old_obj->low + 1))) /* size mismatch */ - || ((uintptr_t) ptr != old_obj->low))) /* base mismatch */ - { - __mf_violation (ptr, sz, - (uintptr_t) __builtin_return_address (0), NULL, - __MF_VIOL_UNREGISTER); - break; - } - - __mf_unlink_object (old_obj); - __mf_uncache_object (old_obj); - - /* Wipe buffer contents if desired. */ - if ((__mf_opts.wipe_stack && old_obj->type == __MF_TYPE_STACK) - || (__mf_opts.wipe_heap && (old_obj->type == __MF_TYPE_HEAP - || old_obj->type == __MF_TYPE_HEAP_I))) - { - memset ((void *) old_obj->low, - 0, - (size_t) (old_obj->high - old_obj->low + 1)); - } - - /* Manage the object cemetary. */ - if (__mf_opts.persistent_count > 0 - && (unsigned) old_obj->type <= __MF_TYPE_MAX_CEM) - { - old_obj->deallocated_p = 1; - old_obj->dealloc_pc = (uintptr_t) __builtin_return_address (0); -#if HAVE_GETTIMEOFDAY - if (__mf_opts.timestamps) - gettimeofday (& old_obj->dealloc_time, NULL); -#endif -#ifdef LIBMUDFLAPTH - old_obj->dealloc_thread = pthread_self (); -#endif - - if (__mf_opts.backtrace > 0 && old_obj->type == __MF_TYPE_HEAP) - old_obj->dealloc_backtrace_size = - __mf_backtrace (& old_obj->dealloc_backtrace, - NULL, 2); - - /* Encourage this object to be displayed again in current epoch. */ - old_obj->description_epoch --; - - /* Put this object into the cemetary. This may require this plot to - be recycled, and the previous resident to be designated del_obj. */ - { - unsigned row = old_obj->type; - unsigned plot = __mf_object_dead_head [row]; - - del_obj = __mf_object_cemetary [row][plot]; - __mf_object_cemetary [row][plot] = old_obj; - plot ++; - if (plot == __mf_opts.persistent_count) plot = 0; - __mf_object_dead_head [row] = plot; - } - } - else - del_obj = old_obj; - - if (__mf_opts.print_leaks) - { - if ((old_obj->read_count + old_obj->write_count) == 0 && - (old_obj->type == __MF_TYPE_HEAP - || old_obj->type == __MF_TYPE_HEAP_I)) - { - /* The problem with a warning message here is that we may not - be privy to accesses to such objects that occur within - uninstrumented libraries. */ -#if 0 - fprintf (stderr, - "*******\n" - "mudflap warning: unaccessed registered object:\n"); - __mf_describe_object (old_obj); -#endif - } - } - - if (del_obj != NULL) /* May or may not equal old_obj. */ - { - if (__mf_opts.backtrace > 0) - { - CALL_REAL(free, del_obj->alloc_backtrace); - if (__mf_opts.persistent_count > 0) - { - CALL_REAL(free, del_obj->dealloc_backtrace); - } - } - CALL_REAL(free, del_obj); - } - - break; - } - } /* end switch (__mf_opts.mudflap_mode) */ - - - if (__mf_opts.collect_stats) - { - __mf_count_unregister ++; - __mf_total_unregister_size += sz; - } -} - - - -struct tree_stats -{ - unsigned obj_count; - unsigned long total_size; - unsigned live_obj_count; - double total_weight; - double weighted_size; - unsigned long weighted_address_bits [sizeof (uintptr_t) * 8][2]; -}; - - - -static int -__mf_adapt_cache_fn (mfsplay_tree_node n, void *param) -{ - __mf_object_t *obj = (__mf_object_t *) n->value; - struct tree_stats *s = (struct tree_stats *) param; - - assert (obj != NULL && s != NULL); - - /* Exclude never-accessed objects. */ - if (obj->read_count + obj->write_count) - { - s->obj_count ++; - s->total_size += (obj->high - obj->low + 1); - - if (obj->liveness) - { - unsigned i; - uintptr_t addr; - - /* VERBOSE_TRACE ("analyze low=%p live=%u name=`%s'\n", - (void *) obj->low, obj->liveness, obj->name); */ - - s->live_obj_count ++; - s->total_weight += (double) obj->liveness; - s->weighted_size += - (double) (obj->high - obj->low + 1) * - (double) obj->liveness; - - addr = obj->low; - for (i=0; i<sizeof(uintptr_t) * 8; i++) - { - unsigned bit = addr & 1; - s->weighted_address_bits[i][bit] += obj->liveness; - addr = addr >> 1; - } - - /* Age the liveness value. */ - obj->liveness >>= 1; - } - } - - return 0; -} - - -static void -__mf_adapt_cache () -{ - struct tree_stats s; - uintptr_t new_mask = 0; - unsigned char new_shift; - float cache_utilization; - float max_value; - static float smoothed_new_shift = -1.0; - unsigned i; - - memset (&s, 0, sizeof (s)); - - mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_HEAP), __mf_adapt_cache_fn, (void *) & s); - mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_HEAP_I), __mf_adapt_cache_fn, (void *) & s); - mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_STACK), __mf_adapt_cache_fn, (void *) & s); - mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_STATIC), __mf_adapt_cache_fn, (void *) & s); - mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_GUESS), __mf_adapt_cache_fn, (void *) & s); - - /* Maybe we're dealing with funny aging/adaptation parameters, or an - empty tree. Just leave the cache alone in such cases, rather - than risk dying by division-by-zero. */ - if (! (s.obj_count > 0) && (s.live_obj_count > 0) && (s.total_weight > 0.0)) - return; - - /* Guess a good value for the shift parameter by finding an address bit that is a - good discriminant of lively objects. */ - max_value = 0.0; - for (i=0; i<sizeof (uintptr_t)*8; i++) - { - float value = (float) s.weighted_address_bits[i][0] * (float) s.weighted_address_bits[i][1]; - if (max_value < value) max_value = value; - } - for (i=0; i<sizeof (uintptr_t)*8; i++) - { - float shoulder_factor = 0.7; /* Include slightly less popular bits too. */ - float value = (float) s.weighted_address_bits[i][0] * (float) s.weighted_address_bits[i][1]; - if (value >= max_value * shoulder_factor) - break; - } - if (smoothed_new_shift < 0) smoothed_new_shift = __mf_lc_shift; - /* Converge toward this slowly to reduce flapping. */ - smoothed_new_shift = 0.9*smoothed_new_shift + 0.1*i; - new_shift = (unsigned) (smoothed_new_shift + 0.5); - assert (new_shift < sizeof (uintptr_t)*8); - - /* Count number of used buckets. */ - cache_utilization = 0.0; - for (i = 0; i < (1 + __mf_lc_mask); i++) - if (__mf_lookup_cache[i].low != 0 || __mf_lookup_cache[i].high != 0) - cache_utilization += 1.0; - cache_utilization /= (1 + __mf_lc_mask); - - new_mask |= 0xffff; /* XXX: force a large cache. */ - new_mask &= (LOOKUP_CACHE_SIZE_MAX - 1); - - VERBOSE_TRACE ("adapt cache obj=%u/%u sizes=%lu/%.0f/%.0f => " - "util=%u%% m=%p s=%u\n", - s.obj_count, s.live_obj_count, s.total_size, s.total_weight, s.weighted_size, - (unsigned)(cache_utilization*100.0), (void *) new_mask, new_shift); - - /* We should reinitialize cache if its parameters have changed. */ - if (new_mask != __mf_lc_mask || - new_shift != __mf_lc_shift) - { - __mf_lc_mask = new_mask; - __mf_lc_shift = new_shift; - /* XXX: race */ - memset (__mf_lookup_cache, 0, sizeof(__mf_lookup_cache)); - /* void slot 0 */ - __mf_lookup_cache[0].low = MAXPTR; - } -} - - - -/* __mf_find_object[s] */ - -/* Find overlapping live objecs between [low,high]. Return up to - max_objs of their pointers in objs[]. Return total count of - overlaps (may exceed max_objs). */ - -unsigned -__mf_find_objects2 (uintptr_t ptr_low, uintptr_t ptr_high, - __mf_object_t **objs, unsigned max_objs, int type) -{ - unsigned count = 0; - mfsplay_tree t = __mf_object_tree (type); - mfsplay_tree_key k = (mfsplay_tree_key) ptr_low; - int direction; - - mfsplay_tree_node n = mfsplay_tree_lookup (t, k); - /* An exact match for base address implies a hit. */ - if (n != NULL) - { - if (count < max_objs) - objs[count] = (__mf_object_t *) n->value; - count ++; - } - - /* Iterate left then right near this key value to find all overlapping objects. */ - for (direction = 0; direction < 2; direction ++) - { - /* Reset search origin. */ - k = (mfsplay_tree_key) ptr_low; - - while (1) - { - __mf_object_t *obj; - - n = (direction == 0 ? mfsplay_tree_successor (t, k) : mfsplay_tree_predecessor (t, k)); - if (n == NULL) break; - obj = (__mf_object_t *) n->value; - - if (! (obj->low <= ptr_high && obj->high >= ptr_low)) /* No overlap? */ - break; - - if (count < max_objs) - objs[count] = (__mf_object_t *) n->value; - count ++; - - k = (mfsplay_tree_key) obj->low; - } - } - - return count; -} - - -unsigned -__mf_find_objects (uintptr_t ptr_low, uintptr_t ptr_high, - __mf_object_t **objs, unsigned max_objs) -{ - int type; - unsigned count = 0; - - /* Search each splay tree for overlaps. */ - for (type = __MF_TYPE_NOACCESS; type <= __MF_TYPE_GUESS; type++) - { - unsigned c = __mf_find_objects2 (ptr_low, ptr_high, objs, max_objs, type); - if (c > max_objs) - { - max_objs = 0; - objs = NULL; - } - else /* NB: C may equal 0 */ - { - max_objs -= c; - objs += c; - } - count += c; - } - - return count; -} - - - -/* __mf_link_object */ - -static void -__mf_link_object (__mf_object_t *node) -{ - mfsplay_tree t = __mf_object_tree (node->type); - mfsplay_tree_insert (t, (mfsplay_tree_key) node->low, (mfsplay_tree_value) node); -} - -/* __mf_unlink_object */ - -static void -__mf_unlink_object (__mf_object_t *node) -{ - mfsplay_tree t = __mf_object_tree (node->type); - mfsplay_tree_remove (t, (mfsplay_tree_key) node->low); -} - -/* __mf_find_dead_objects */ - -/* Find overlapping dead objecs between [low,high]. Return up to - max_objs of their pointers in objs[]. Return total count of - overlaps (may exceed max_objs). */ - -static unsigned -__mf_find_dead_objects (uintptr_t low, uintptr_t high, - __mf_object_t **objs, unsigned max_objs) -{ - if (__mf_opts.persistent_count > 0) - { - unsigned count = 0; - unsigned recollection = 0; - unsigned row = 0; - - assert (low <= high); - assert (max_objs == 0 || objs != NULL); - - /* Widen the search from the most recent plots in each row, looking - backward in time. */ - recollection = 0; - while (recollection < __mf_opts.persistent_count) - { - count = 0; - - for (row = 0; row <= __MF_TYPE_MAX_CEM; row ++) - { - unsigned plot; - unsigned i; - - plot = __mf_object_dead_head [row]; - for (i = 0; i <= recollection; i ++) - { - __mf_object_t *obj; - - /* Look backward through row: it's a circular buffer. */ - if (plot > 0) plot --; - else plot = __mf_opts.persistent_count - 1; - - obj = __mf_object_cemetary [row][plot]; - if (obj && obj->low <= high && obj->high >= low) - { - /* Found an overlapping dead object! */ - if (count < max_objs) - objs [count] = obj; - count ++; - } - } - } - - if (count) - break; - - /* Look farther back in time. */ - recollection = (recollection * 2) + 1; - } - - return count; - } else { - return 0; - } -} - -/* __mf_describe_object */ - -static void -__mf_describe_object (__mf_object_t *obj) -{ - static unsigned epoch = 0; - if (obj == NULL) - { - epoch ++; - return; - } - - if (__mf_opts.abbreviate && obj->description_epoch == epoch) - { - fprintf (stderr, - "mudflap %sobject %p: name=`%s'\n", - (obj->deallocated_p ? "dead " : ""), - (void *) obj, (obj->name ? obj->name : "")); - return; - } - else - obj->description_epoch = epoch; - - fprintf (stderr, - "mudflap %sobject %p: name=`%s'\n" - "bounds=[%p,%p] size=%lu area=%s check=%ur/%uw liveness=%u%s\n" - "alloc time=%lu.%06lu pc=%p" -#ifdef LIBMUDFLAPTH - " thread=%u" -#endif - "\n", - (obj->deallocated_p ? "dead " : ""), - (void *) obj, (obj->name ? obj->name : ""), - (void *) obj->low, (void *) obj->high, - (unsigned long) (obj->high - obj->low + 1), - (obj->type == __MF_TYPE_NOACCESS ? "no-access" : - obj->type == __MF_TYPE_HEAP ? "heap" : - obj->type == __MF_TYPE_HEAP_I ? "heap-init" : - obj->type == __MF_TYPE_STACK ? "stack" : - obj->type == __MF_TYPE_STATIC ? "static" : - obj->type == __MF_TYPE_GUESS ? "guess" : - "unknown"), - obj->read_count, obj->write_count, obj->liveness, - obj->watching_p ? " watching" : "", - obj->alloc_time.tv_sec, obj->alloc_time.tv_usec, - (void *) obj->alloc_pc -#ifdef LIBMUDFLAPTH - , (unsigned) obj->alloc_thread -#endif - ); - - if (__mf_opts.backtrace > 0) - { - unsigned i; - for (i=0; i<obj->alloc_backtrace_size; i++) - fprintf (stderr, " %s\n", obj->alloc_backtrace[i]); - } - - if (__mf_opts.persistent_count > 0) - { - if (obj->deallocated_p) - { - fprintf (stderr, "dealloc time=%lu.%06lu pc=%p" -#ifdef LIBMUDFLAPTH - " thread=%u" -#endif - "\n", - obj->dealloc_time.tv_sec, obj->dealloc_time.tv_usec, - (void *) obj->dealloc_pc -#ifdef LIBMUDFLAPTH - , (unsigned) obj->dealloc_thread -#endif - ); - - - if (__mf_opts.backtrace > 0) - { - unsigned i; - for (i=0; i<obj->dealloc_backtrace_size; i++) - fprintf (stderr, " %s\n", obj->dealloc_backtrace[i]); - } - } - } -} - - -static int -__mf_report_leaks_fn (mfsplay_tree_node n, void *param) -{ - __mf_object_t *node = (__mf_object_t *) n->value; - unsigned *count = (unsigned *) param; - - if (count != NULL) - (*count) ++; - - fprintf (stderr, "Leaked object %u:\n", (*count)); - __mf_describe_object (node); - - return 0; -} - - -static unsigned -__mf_report_leaks () -{ - unsigned count = 0; - - (void) mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_HEAP), - __mf_report_leaks_fn, & count); - (void) mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_HEAP_I), - __mf_report_leaks_fn, & count); - - return count; -} - -/* ------------------------------------------------------------------------ */ -/* __mf_report */ - -void -__mf_report () -{ - LOCKTH (); - BEGIN_RECURSION_PROTECT (); - __mfu_report (); - END_RECURSION_PROTECT (); - UNLOCKTH (); -} - -void -__mfu_report () -{ - if (__mf_opts.collect_stats) - { - fprintf (stderr, - "*******\n" - "mudflap stats:\n" - "calls to __mf_check: %lu\n" - " __mf_register: %lu [%luB, %luB, %luB, %luB, %luB]\n" - " __mf_unregister: %lu [%luB]\n" - " __mf_violation: [%lu, %lu, %lu, %lu, %lu]\n", - __mf_count_check, - __mf_count_register, - __mf_total_register_size[0], __mf_total_register_size[1], - __mf_total_register_size[2], __mf_total_register_size[3], - __mf_total_register_size[4], /* XXX */ - __mf_count_unregister, __mf_total_unregister_size, - __mf_count_violation[0], __mf_count_violation[1], - __mf_count_violation[2], __mf_count_violation[3], - __mf_count_violation[4]); - - fprintf (stderr, - "calls with reentrancy: %lu\n", __mf_reentrancy); -#ifdef LIBMUDFLAPTH - fprintf (stderr, - " lock contention: %lu\n", __mf_lock_contention); -#endif - - /* Lookup cache stats. */ - { - unsigned i; - unsigned max_reuse = 0; - unsigned num_used = 0; - unsigned num_unused = 0; - - for (i = 0; i < LOOKUP_CACHE_SIZE; i++) - { - if (__mf_lookup_cache_reusecount[i]) - num_used ++; - else - num_unused ++; - if (max_reuse < __mf_lookup_cache_reusecount[i]) - max_reuse = __mf_lookup_cache_reusecount[i]; - } - fprintf (stderr, "lookup cache slots used: %u unused: %u peak-reuse: %u\n", - num_used, num_unused, max_reuse); - } - - { - unsigned live_count; - live_count = __mf_find_objects (MINPTR, MAXPTR, NULL, 0); - fprintf (stderr, "number of live objects: %u\n", live_count); - } - - if (__mf_opts.persistent_count > 0) - { - unsigned dead_count = 0; - unsigned row, plot; - for (row = 0; row <= __MF_TYPE_MAX_CEM; row ++) - for (plot = 0 ; plot < __mf_opts.persistent_count; plot ++) - if (__mf_object_cemetary [row][plot] != 0) - dead_count ++; - fprintf (stderr, " zombie objects: %u\n", dead_count); - } - } - if (__mf_opts.print_leaks && (__mf_opts.mudflap_mode == mode_check)) - { - unsigned l; - extern void * __mf_wrap_alloca_indirect (size_t c); - - /* Free up any remaining alloca()'d blocks. */ - __mf_wrap_alloca_indirect (0); -#ifdef HAVE___LIBC_FREERES - if (__mf_opts.call_libc_freeres) - { - extern void __libc_freeres (void); - __libc_freeres (); - } -#endif - - __mf_describe_object (NULL); /* Reset description epoch. */ - l = __mf_report_leaks (); - fprintf (stderr, "number of leaked objects: %u\n", l); - } -} - -/* __mf_backtrace */ - -size_t -__mf_backtrace (char ***symbols, void *guess_pc, unsigned guess_omit_levels) -{ - void ** pc_array; - unsigned pc_array_size = __mf_opts.backtrace + guess_omit_levels; - unsigned remaining_size; - unsigned omitted_size = 0; - unsigned i; - DECLARE (void, free, void *ptr); - DECLARE (void *, calloc, size_t c, size_t n); - DECLARE (void *, malloc, size_t n); - - pc_array = CALL_REAL (calloc, pc_array_size, sizeof (void *) ); -#ifdef HAVE_BACKTRACE - pc_array_size = backtrace (pc_array, pc_array_size); -#else -#define FETCH(n) do { if (pc_array_size >= n) { \ - pc_array[n] = __builtin_return_address(n); \ - if (pc_array[n] == 0) pc_array_size = n; } } while (0) - - /* Unroll some calls __builtin_return_address because this function - only takes a literal integer parameter. */ - FETCH (0); -#if 0 - /* XXX: __builtin_return_address sometimes crashes (!) on >0 arguments, - rather than simply returning 0. :-( */ - FETCH (1); - FETCH (2); - FETCH (3); - FETCH (4); - FETCH (5); - FETCH (6); - FETCH (7); - FETCH (8); - if (pc_array_size > 8) pc_array_size = 9; -#else - if (pc_array_size > 0) pc_array_size = 1; -#endif - -#undef FETCH -#endif - - /* We want to trim the first few levels of the stack traceback, - since they contain libmudflap wrappers and junk. If pc_array[] - ends up containing a non-NULL guess_pc, then trim everything - before that. Otherwise, omit the first guess_omit_levels - entries. */ - - if (guess_pc != NULL) - for (i=0; i<pc_array_size; i++) - if (pc_array [i] == guess_pc) - omitted_size = i; - - if (omitted_size == 0) /* No match? */ - if (pc_array_size > guess_omit_levels) - omitted_size = guess_omit_levels; - - remaining_size = pc_array_size - omitted_size; - -#ifdef HAVE_BACKTRACE_SYMBOLS - *symbols = backtrace_symbols (pc_array + omitted_size, remaining_size); -#else - { - /* Let's construct a buffer by hand. It will have <remaining_size> - char*'s at the front, pointing at individual strings immediately - afterwards. */ - void *buffer; - char *chars; - char **pointers; - enum { perline = 30 }; - buffer = CALL_REAL (malloc, remaining_size * (perline + sizeof(char *))); - pointers = (char **) buffer; - chars = (char *)buffer + (remaining_size * sizeof (char *)); - for (i = 0; i < remaining_size; i++) - { - pointers[i] = chars; - sprintf (chars, "[0x%p]", pc_array [omitted_size + i]); - chars = chars + perline; - } - *symbols = pointers; - } -#endif - CALL_REAL (free, pc_array); - - return remaining_size; -} - -/* ------------------------------------------------------------------------ */ -/* __mf_violation */ - -void -__mf_violation (void *ptr, size_t sz, uintptr_t pc, - const char *location, int type) -{ - char buf [128]; - static unsigned violation_number; - DECLARE(void, free, void *ptr); - - TRACE ("violation pc=%p location=%s type=%d ptr=%p size=%lu\n", - (void *) pc, - (location != NULL ? location : ""), type, ptr, (unsigned long) sz); - - if (__mf_opts.collect_stats) - __mf_count_violation [(type < 0) ? 0 : - (type > __MF_VIOL_WATCH) ? 0 : - type] ++; - - /* Print out a basic warning message. */ - if (__mf_opts.verbose_violations) - { - unsigned dead_p; - unsigned num_helpful = 0; - struct timeval now = { 0, 0 }; -#if HAVE_GETTIMEOFDAY - gettimeofday (& now, NULL); -#endif - - violation_number ++; - fprintf (stderr, - "*******\n" - "mudflap violation %u (%s): time=%lu.%06lu " - "ptr=%p size=%lu\npc=%p%s%s%s\n", - violation_number, - ((type == __MF_VIOL_READ) ? "check/read" : - (type == __MF_VIOL_WRITE) ? "check/write" : - (type == __MF_VIOL_REGISTER) ? "register" : - (type == __MF_VIOL_UNREGISTER) ? "unregister" : - (type == __MF_VIOL_WATCH) ? "watch" : "unknown"), - now.tv_sec, now.tv_usec, - (void *) ptr, (unsigned long)sz, (void *) pc, - (location != NULL ? " location=`" : ""), - (location != NULL ? location : ""), - (location != NULL ? "'" : "")); - - if (__mf_opts.backtrace > 0) - { - char ** symbols; - unsigned i, num; - - num = __mf_backtrace (& symbols, (void *) pc, 2); - /* Note: backtrace_symbols calls malloc(). But since we're in - __mf_violation and presumably __mf_check, it'll detect - recursion, and not put the new string into the database. */ - - for (i=0; i<num; i++) - fprintf (stderr, " %s\n", symbols[i]); - - /* Calling free() here would trigger a violation. */ - CALL_REAL(free, symbols); - } - - - /* Look for nearby objects. For this, we start with s_low/s_high - pointing to the given area, looking for overlapping objects. - If none show up, widen the search area and keep looking. */ - - if (sz == 0) sz = 1; - - for (dead_p = 0; dead_p <= 1; dead_p ++) /* for dead_p in 0 1 */ - { - enum {max_objs = 3}; /* magic */ - __mf_object_t *objs[max_objs]; - unsigned num_objs = 0; - uintptr_t s_low, s_high; - unsigned tries = 0; - unsigned i; - - s_low = (uintptr_t) ptr; - s_high = CLAMPSZ (ptr, sz); - - while (tries < 16) /* magic */ - { - if (dead_p) - num_objs = __mf_find_dead_objects (s_low, s_high, objs, max_objs); - else - num_objs = __mf_find_objects (s_low, s_high, objs, max_objs); - - if (num_objs) /* good enough */ - break; - - tries ++; - - /* XXX: tune this search strategy. It's too dependent on - sz, which can vary from 1 to very big (when array index - checking) numbers. */ - s_low = CLAMPSUB (s_low, (sz * tries * tries)); - s_high = CLAMPADD (s_high, (sz * tries * tries)); - } - - for (i = 0; i < min (num_objs, max_objs); i++) - { - __mf_object_t *obj = objs[i]; - uintptr_t low = (uintptr_t) ptr; - uintptr_t high = CLAMPSZ (ptr, sz); - unsigned before1 = (low < obj->low) ? obj->low - low : 0; - unsigned after1 = (low > obj->high) ? low - obj->high : 0; - unsigned into1 = (high >= obj->low && low <= obj->high) ? low - obj->low : 0; - unsigned before2 = (high < obj->low) ? obj->low - high : 0; - unsigned after2 = (high > obj->high) ? high - obj->high : 0; - unsigned into2 = (high >= obj->low && low <= obj->high) ? high - obj->low : 0; - - fprintf (stderr, "Nearby object %u: checked region begins %uB %s and ends %uB %s\n", - num_helpful + i + 1, - (before1 ? before1 : after1 ? after1 : into1), - (before1 ? "before" : after1 ? "after" : "into"), - (before2 ? before2 : after2 ? after2 : into2), - (before2 ? "before" : after2 ? "after" : "into")); - __mf_describe_object (obj); - } - num_helpful += num_objs; - } - - fprintf (stderr, "number of nearby objects: %u\n", num_helpful); - } - - /* How to finally handle this violation? */ - switch (__mf_opts.violation_mode) - { - case viol_nop: - break; - case viol_segv: - kill (getpid(), SIGSEGV); - break; - case viol_abort: - abort (); - break; - case viol_gdb: - - snprintf (buf, 128, "gdb --pid=%u", (unsigned) getpid ()); - system (buf); - /* XXX: should probably fork() && sleep(GDB_WAIT_PARAMETER) - instead, and let the forked child execlp() gdb. That way, this - subject process can be resumed under the supervision of gdb. - This can't happen now, since system() only returns when gdb - dies. In that case, we need to beware of starting a second - concurrent gdb child upon the next violation. (But if the first - gdb dies, then starting a new one is appropriate.) */ - break; - } -} - -/* ------------------------------------------------------------------------ */ - - -unsigned __mf_watch (void *ptr, size_t sz) -{ - unsigned rc; - LOCKTH (); - BEGIN_RECURSION_PROTECT (); - rc = __mf_watch_or_not (ptr, sz, 1); - END_RECURSION_PROTECT (); - UNLOCKTH (); - return rc; -} - -unsigned __mf_unwatch (void *ptr, size_t sz) -{ - unsigned rc; - LOCKTH (); - rc = __mf_watch_or_not (ptr, sz, 0); - UNLOCKTH (); - return rc; -} - - -static unsigned -__mf_watch_or_not (void *ptr, size_t sz, char flag) -{ - uintptr_t ptr_high = CLAMPSZ (ptr, sz); - uintptr_t ptr_low = (uintptr_t) ptr; - unsigned count = 0; - - TRACE ("%s ptr=%p size=%lu\n", - (flag ? "watch" : "unwatch"), ptr, (unsigned long) sz); - - switch (__mf_opts.mudflap_mode) - { - case mode_nop: - case mode_populate: - case mode_violate: - count = 0; - break; - - case mode_check: - { - __mf_object_t **all_ovr_objs; - unsigned obj_count; - unsigned n; - DECLARE (void *, malloc, size_t c); - DECLARE (void, free, void *p); - - obj_count = __mf_find_objects (ptr_low, ptr_high, NULL, 0); - VERBOSE_TRACE (" %u:", obj_count); - - all_ovr_objs = CALL_REAL (malloc, (sizeof (__mf_object_t *) * obj_count)); - if (all_ovr_objs == NULL) abort (); - n = __mf_find_objects (ptr_low, ptr_high, all_ovr_objs, obj_count); - assert (n == obj_count); - - for (n = 0; n < obj_count; n ++) - { - __mf_object_t *obj = all_ovr_objs[n]; - - VERBOSE_TRACE (" [%p]", (void *) obj); - if (obj->watching_p != flag) - { - obj->watching_p = flag; - count ++; - - /* Remove object from cache, to ensure next access - goes through __mf_check(). */ - if (flag) - __mf_uncache_object (obj); - } - } - CALL_REAL (free, all_ovr_objs); - } - break; - } - - return count; -} - - -void -__mf_sigusr1_handler (int num) -{ - __mf_sigusr1_received ++; -} - -/* Install or remove SIGUSR1 handler as necessary. - Also, respond to a received pending SIGUSR1. */ -void -__mf_sigusr1_respond () -{ - static int handler_installed; - -#ifdef SIGUSR1 - /* Manage handler */ - if (__mf_opts.sigusr1_report && ! handler_installed) - { - signal (SIGUSR1, __mf_sigusr1_handler); - handler_installed = 1; - } - else if(! __mf_opts.sigusr1_report && handler_installed) - { - signal (SIGUSR1, SIG_DFL); - handler_installed = 0; - } -#endif - - /* Manage enqueued signals */ - if (__mf_sigusr1_received > __mf_sigusr1_handled) - { - __mf_sigusr1_handled ++; - assert (__mf_get_state () == reentrant); - __mfu_report (); - handler_installed = 0; /* We may need to re-enable signal; this might be a SysV library. */ - } -} - - -/* XXX: provide an alternative __assert_fail function that cannot - fail due to libmudflap infinite recursion. */ -#ifndef NDEBUG - -static void -write_itoa (int fd, unsigned n) -{ - enum x { bufsize = sizeof(n)*4 }; - char buf [bufsize]; - unsigned i; - - for (i=0; i<bufsize-1; i++) - { - unsigned digit = n % 10; - buf[bufsize-2-i] = digit + '0'; - n /= 10; - if (n == 0) - { - char *m = & buf [bufsize-2-i]; - buf[bufsize-1] = '\0'; - write (fd, m, strlen(m)); - break; - } - } -} - - -void -__assert_fail (const char *msg, const char *file, unsigned line, const char *func) -{ -#define write2(string) write (2, (string), strlen ((string))); - write2("mf"); -#ifdef LIBMUDFLAPTH - write2("("); - write_itoa (2, (unsigned) pthread_self ()); - write2(")"); -#endif - write2(": assertion failure: `"); - write (2, msg, strlen (msg)); - write2("' in "); - write (2, func, strlen (func)); - write2(" at "); - write (2, file, strlen (file)); - write2(":"); - write_itoa (2, line); - write2("\n"); -#undef write2 - abort (); -} - - -#endif - - - -/* Adapted splay tree code, originally from libiberty. It has been - specialized for libmudflap as requested by RMS. */ - -static void -mfsplay_tree_free (void *p) -{ - DECLARE (void, free, void *p); - CALL_REAL (free, p); -} - -static void * -mfsplay_tree_xmalloc (size_t s) -{ - DECLARE (void *, malloc, size_t s); - return CALL_REAL (malloc, s); -} - - -static void mfsplay_tree_splay (mfsplay_tree, mfsplay_tree_key); -static mfsplay_tree_node mfsplay_tree_splay_helper (mfsplay_tree, - mfsplay_tree_key, - mfsplay_tree_node *, - mfsplay_tree_node *, - mfsplay_tree_node *); - - -/* Help splay SP around KEY. PARENT and GRANDPARENT are the parent - and grandparent, respectively, of NODE. */ - -static mfsplay_tree_node -mfsplay_tree_splay_helper (mfsplay_tree sp, - mfsplay_tree_key key, - mfsplay_tree_node * node, - mfsplay_tree_node * parent, - mfsplay_tree_node * grandparent) -{ - mfsplay_tree_node *next; - mfsplay_tree_node n; - int comparison; - - n = *node; - - if (!n) - return *parent; - - comparison = ((key > n->key) ? 1 : ((key < n->key) ? -1 : 0)); - - if (comparison == 0) - /* We've found the target. */ - next = 0; - else if (comparison < 0) - /* The target is to the left. */ - next = &n->left; - else - /* The target is to the right. */ - next = &n->right; - - if (next) - { - /* Check whether our recursion depth is too high. Abort this search, - and signal that a rebalance is required to continue. */ - if (sp->depth > sp->max_depth) - { - sp->rebalance_p = 1; - return n; - } - - /* Continue down the tree. */ - sp->depth ++; - n = mfsplay_tree_splay_helper (sp, key, next, node, parent); - sp->depth --; - - /* The recursive call will change the place to which NODE - points. */ - if (*node != n || sp->rebalance_p) - return n; - } - - if (!parent) - /* NODE is the root. We are done. */ - return n; - - /* First, handle the case where there is no grandparent (i.e., - *PARENT is the root of the tree.) */ - if (!grandparent) - { - if (n == (*parent)->left) - { - *node = n->right; - n->right = *parent; - } - else - { - *node = n->left; - n->left = *parent; - } - *parent = n; - return n; - } - - /* Next handle the cases where both N and *PARENT are left children, - or where both are right children. */ - if (n == (*parent)->left && *parent == (*grandparent)->left) - { - mfsplay_tree_node p = *parent; - - (*grandparent)->left = p->right; - p->right = *grandparent; - p->left = n->right; - n->right = p; - *grandparent = n; - return n; - } - else if (n == (*parent)->right && *parent == (*grandparent)->right) - { - mfsplay_tree_node p = *parent; - - (*grandparent)->right = p->left; - p->left = *grandparent; - p->right = n->left; - n->left = p; - *grandparent = n; - return n; - } - - /* Finally, deal with the case where N is a left child, but *PARENT - is a right child, or vice versa. */ - if (n == (*parent)->left) - { - (*parent)->left = n->right; - n->right = *parent; - (*grandparent)->right = n->left; - n->left = *grandparent; - *grandparent = n; - return n; - } - else - { - (*parent)->right = n->left; - n->left = *parent; - (*grandparent)->left = n->right; - n->right = *grandparent; - *grandparent = n; - return n; - } -} - - - -static int -mfsplay_tree_rebalance_helper1 (mfsplay_tree_node n, void *array_ptr) -{ - mfsplay_tree_node **p = array_ptr; - *(*p) = n; - (*p)++; - return 0; -} - - -static mfsplay_tree_node -mfsplay_tree_rebalance_helper2 (mfsplay_tree_node * array, unsigned low, - unsigned high) -{ - unsigned middle = low + (high - low) / 2; - mfsplay_tree_node n = array[middle]; - - /* Note that since we're producing a balanced binary tree, it is not a problem - that this function is recursive. */ - if (low + 1 <= middle) - n->left = mfsplay_tree_rebalance_helper2 (array, low, middle - 1); - else - n->left = NULL; - - if (middle + 1 <= high) - n->right = mfsplay_tree_rebalance_helper2 (array, middle + 1, high); - else - n->right = NULL; - - return n; -} - - -/* Rebalance the entire tree. Do this by copying all the node - pointers into an array, then cleverly re-linking them. */ -static void -mfsplay_tree_rebalance (mfsplay_tree sp) -{ - mfsplay_tree_node *all_nodes, *all_nodes_1; - - if (sp->num_keys <= 2) - return; - - all_nodes = mfsplay_tree_xmalloc (sizeof (mfsplay_tree_node) * sp->num_keys); - - /* Traverse all nodes to copy their addresses into this array. */ - all_nodes_1 = all_nodes; - mfsplay_tree_foreach (sp, mfsplay_tree_rebalance_helper1, - (void *) &all_nodes_1); - - /* Relink all the nodes. */ - sp->root = mfsplay_tree_rebalance_helper2 (all_nodes, 0, sp->num_keys - 1); - - mfsplay_tree_free (all_nodes); -} - - -/* Splay SP around KEY. */ -static void -mfsplay_tree_splay (mfsplay_tree sp, mfsplay_tree_key key) -{ - if (sp->root == 0) - return; - - /* If we just splayed the tree with the same key, do nothing. */ - if (sp->last_splayed_key_p && - (sp->last_splayed_key == key)) - return; - - /* Compute a maximum recursion depth for a splay tree with NUM nodes. - The idea is to limit excessive stack usage if we're facing - degenerate access patterns. Unfortunately such patterns can occur - e.g. during static initialization, where many static objects might - be registered in increasing address sequence, or during a case where - large tree-like heap data structures are allocated quickly. - - On x86, this corresponds to roughly 200K of stack usage. - XXX: For libmudflapth, this could be a function of __mf_opts.thread_stack. */ - sp->max_depth = 2500; - sp->rebalance_p = sp->depth = 0; - - mfsplay_tree_splay_helper (sp, key, &sp->root, NULL, NULL); - if (sp->rebalance_p) - { - mfsplay_tree_rebalance (sp); - - sp->rebalance_p = sp->depth = 0; - mfsplay_tree_splay_helper (sp, key, &sp->root, NULL, NULL); - - if (sp->rebalance_p) - abort (); - } - - - /* Cache this splay key. */ - sp->last_splayed_key = key; - sp->last_splayed_key_p = 1; -} - - - -/* Allocate a new splay tree. */ -static mfsplay_tree -mfsplay_tree_new () -{ - mfsplay_tree sp = mfsplay_tree_xmalloc (sizeof (struct mfsplay_tree_s)); - sp->root = NULL; - sp->last_splayed_key_p = 0; - sp->num_keys = 0; - - return sp; -} - - - -/* Insert a new node (associating KEY with DATA) into SP. If a - previous node with the indicated KEY exists, its data is replaced - with the new value. Returns the new node. */ -static mfsplay_tree_node -mfsplay_tree_insert (mfsplay_tree sp, mfsplay_tree_key key, mfsplay_tree_value value) -{ - int comparison = 0; - - mfsplay_tree_splay (sp, key); - - if (sp->root) - comparison = ((sp->root->key > key) ? 1 : - ((sp->root->key < key) ? -1 : 0)); - - if (sp->root && comparison == 0) - { - /* If the root of the tree already has the indicated KEY, just - replace the value with VALUE. */ - sp->root->value = value; - } - else - { - /* Create a new node, and insert it at the root. */ - mfsplay_tree_node node; - - node = mfsplay_tree_xmalloc (sizeof (struct mfsplay_tree_node_s)); - node->key = key; - node->value = value; - sp->num_keys++; - if (!sp->root) - node->left = node->right = 0; - else if (comparison < 0) - { - node->left = sp->root; - node->right = node->left->right; - node->left->right = 0; - } - else - { - node->right = sp->root; - node->left = node->right->left; - node->right->left = 0; - } - - sp->root = node; - sp->last_splayed_key_p = 0; - } - - return sp->root; -} - -/* Remove KEY from SP. It is not an error if it did not exist. */ - -static void -mfsplay_tree_remove (mfsplay_tree sp, mfsplay_tree_key key) -{ - mfsplay_tree_splay (sp, key); - sp->last_splayed_key_p = 0; - if (sp->root && (sp->root->key == key)) - { - mfsplay_tree_node left, right; - left = sp->root->left; - right = sp->root->right; - /* Delete the root node itself. */ - mfsplay_tree_free (sp->root); - sp->num_keys--; - /* One of the children is now the root. Doesn't matter much - which, so long as we preserve the properties of the tree. */ - if (left) - { - sp->root = left; - /* If there was a right child as well, hang it off the - right-most leaf of the left child. */ - if (right) - { - while (left->right) - left = left->right; - left->right = right; - } - } - else - sp->root = right; - } -} - -/* Lookup KEY in SP, returning VALUE if present, and NULL - otherwise. */ - -static mfsplay_tree_node -mfsplay_tree_lookup (mfsplay_tree sp, mfsplay_tree_key key) -{ - mfsplay_tree_splay (sp, key); - if (sp->root && (sp->root->key == key)) - return sp->root; - else - return 0; -} - - -/* Return the immediate predecessor KEY, or NULL if there is no - predecessor. KEY need not be present in the tree. */ - -static mfsplay_tree_node -mfsplay_tree_predecessor (mfsplay_tree sp, mfsplay_tree_key key) -{ - int comparison; - mfsplay_tree_node node; - /* If the tree is empty, there is certainly no predecessor. */ - if (!sp->root) - return NULL; - /* Splay the tree around KEY. That will leave either the KEY - itself, its predecessor, or its successor at the root. */ - mfsplay_tree_splay (sp, key); - comparison = ((sp->root->key > key) ? 1 : - ((sp->root->key < key) ? -1 : 0)); - - /* If the predecessor is at the root, just return it. */ - if (comparison < 0) - return sp->root; - /* Otherwise, find the rightmost element of the left subtree. */ - node = sp->root->left; - if (node) - while (node->right) - node = node->right; - return node; -} - -/* Return the immediate successor KEY, or NULL if there is no - successor. KEY need not be present in the tree. */ - -static mfsplay_tree_node -mfsplay_tree_successor (mfsplay_tree sp, mfsplay_tree_key key) -{ - int comparison; - mfsplay_tree_node node; - /* If the tree is empty, there is certainly no successor. */ - if (!sp->root) - return NULL; - /* Splay the tree around KEY. That will leave either the KEY - itself, its predecessor, or its successor at the root. */ - mfsplay_tree_splay (sp, key); - comparison = ((sp->root->key > key) ? 1 : - ((sp->root->key < key) ? -1 : 0)); - /* If the successor is at the root, just return it. */ - if (comparison > 0) - return sp->root; - /* Otherwise, find the leftmost element of the right subtree. */ - node = sp->root->right; - if (node) - while (node->left) - node = node->left; - return node; -} - -/* Call FN, passing it the DATA, for every node in SP, following an - in-order traversal. If FN every returns a non-zero value, the - iteration ceases immediately, and the value is returned. - Otherwise, this function returns 0. - - This function simulates recursion using dynamically allocated - arrays, since it may be called from mfsplay_tree_rebalance(), which - in turn means that the tree is already uncomfortably deep for stack - space limits. */ -static int -mfsplay_tree_foreach (mfsplay_tree st, mfsplay_tree_foreach_fn fn, void *data) -{ - mfsplay_tree_node *stack1; - char *stack2; - unsigned sp; - int val = 0; - enum s { s_left, s_here, s_right, s_up }; - - if (st->root == NULL) /* => num_keys == 0 */ - return 0; - - stack1 = mfsplay_tree_xmalloc (sizeof (mfsplay_tree_node) * st->num_keys); - stack2 = mfsplay_tree_xmalloc (sizeof (char) * st->num_keys); - - sp = 0; - stack1 [sp] = st->root; - stack2 [sp] = s_left; - - while (1) - { - mfsplay_tree_node n; - enum s s; - - n = stack1 [sp]; - s = stack2 [sp]; - - /* Handle each of the four possible states separately. */ - - /* 1: We're here to traverse the left subtree (if any). */ - if (s == s_left) - { - stack2 [sp] = s_here; - if (n->left != NULL) - { - sp ++; - stack1 [sp] = n->left; - stack2 [sp] = s_left; - } - } - - /* 2: We're here to traverse this node. */ - else if (s == s_here) - { - stack2 [sp] = s_right; - val = (*fn) (n, data); - if (val) break; - } - - /* 3: We're here to traverse the right subtree (if any). */ - else if (s == s_right) - { - stack2 [sp] = s_up; - if (n->right != NULL) - { - sp ++; - stack1 [sp] = n->right; - stack2 [sp] = s_left; - } - } - - /* 4: We're here after both subtrees (if any) have been traversed. */ - else if (s == s_up) - { - /* Pop the stack. */ - if (sp == 0) break; /* Popping off the root note: we're finished! */ - sp --; - } - - else - abort (); - } - - mfsplay_tree_free (stack1); - mfsplay_tree_free (stack2); - return val; -} diff --git a/libmudflap/mf-runtime.h b/libmudflap/mf-runtime.h deleted file mode 100644 index cea01df..0000000 --- a/libmudflap/mf-runtime.h +++ /dev/null @@ -1,244 +0,0 @@ -/* Implementation header for mudflap runtime library. - Mudflap: narrow-pointer bounds-checking by tree rewriting. - Copyright (C) 2002-2013 Free Software Foundation, Inc. - Contributed by Frank Ch. Eigler <fche@redhat.com> - and Graydon Hoare <graydon@redhat.com> - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. */ - -/* Public libmudflap declarations -*- C -*- */ - -#ifndef MF_RUNTIME_H -#define MF_RUNTIME_H - -typedef void *__mf_ptr_t; -typedef unsigned int __mf_uintptr_t __attribute__ ((__mode__ (__pointer__))); -typedef __SIZE_TYPE__ __mf_size_t; - -/* Global declarations used by instrumentation. When _MUDFLAP is - defined, these have been auto-declared by the compiler and we - should not declare them again (ideally we *would* declare them - again, to verify that the compiler's declarations match the - library's, but the C++ front end has no mechanism for allowing - the re-definition of a structure type). */ -#ifndef _MUDFLAP -struct __mf_cache { __mf_uintptr_t low; __mf_uintptr_t high; }; -extern struct __mf_cache __mf_lookup_cache []; -extern __mf_uintptr_t __mf_lc_mask; -extern unsigned char __mf_lc_shift; -#endif - -/* Multithreading support. */ -#ifdef _MUDFLAPTH -/* extern pthread_mutex_t __mf_biglock; */ -#ifndef _REENTRANT -#define _REENTRANT -#endif -#ifndef _THREAD_SAFE -#define _THREAD_SAFE -#endif -#endif - -/* Codes to describe the type of access to check: __mf_check arg 3 */ - -#define __MF_CHECK_READ 0 -#define __MF_CHECK_WRITE 1 - - -/* Codes to describe a region of memory being registered: __mf_*register arg 3 */ - -#define __MF_TYPE_NOACCESS 0 -#define __MF_TYPE_HEAP 1 -#define __MF_TYPE_HEAP_I 2 -#define __MF_TYPE_STACK 3 -#define __MF_TYPE_STATIC 4 -#define __MF_TYPE_GUESS 5 - - -/* The public mudflap API */ - -#ifdef __cplusplus -extern "C" { -#endif - -extern void __mf_check (void *ptr, __mf_size_t sz, int type, const char *location) - __attribute((nothrow)); -extern void __mf_register (void *ptr, __mf_size_t sz, int type, const char *name) - __attribute((nothrow)); -extern void __mf_unregister (void *ptr, __mf_size_t sz, int type) - __attribute((nothrow)); -extern unsigned __mf_watch (void *ptr, __mf_size_t sz); -extern unsigned __mf_unwatch (void *ptr, __mf_size_t sz); -extern void __mf_report (); -extern int __mf_set_options (const char *opts); - - -/* Redirect some standard library functions to libmudflap. These are - done by simple #define rather than linker wrapping, since only - instrumented modules are meant to be affected. */ - -#ifdef _MUDFLAP -#pragma redefine_extname memcpy __mfwrap_memcpy -#pragma redefine_extname memmove __mfwrap_memmove -#pragma redefine_extname memset __mfwrap_memset -#pragma redefine_extname memcmp __mfwrap_memcmp -#pragma redefine_extname memchr __mfwrap_memchr -#pragma redefine_extname memrchr __mfwrap_memrchr -#pragma redefine_extname strcpy __mfwrap_strcpy -#pragma redefine_extname strncpy __mfwrap_strncpy -#pragma redefine_extname strcat __mfwrap_strcat -#pragma redefine_extname strncat __mfwrap_strncat -#pragma redefine_extname strcmp __mfwrap_strcmp -#pragma redefine_extname strcasecmp __mfwrap_strcasecmp -#pragma redefine_extname strncmp __mfwrap_strncmp -#pragma redefine_extname strncasecmp __mfwrap_strncasecmp -#pragma redefine_extname strdup __mfwrap_strdup -#pragma redefine_extname strndup __mfwrap_strndup -#pragma redefine_extname strchr __mfwrap_strchr -#pragma redefine_extname strrchr __mfwrap_strrchr -#pragma redefine_extname strstr __mfwrap_strstr -#pragma redefine_extname memmem __mfwrap_memmem -#pragma redefine_extname strlen __mfwrap_strlen -#pragma redefine_extname strnlen __mfwrap_strnlen -#pragma redefine_extname bzero __mfwrap_bzero -#pragma redefine_extname bcopy __mfwrap_bcopy -#pragma redefine_extname bcmp __mfwrap_bcmp -#pragma redefine_extname index __mfwrap_index -#pragma redefine_extname rindex __mfwrap_rindex -#pragma redefine_extname asctime __mfwrap_asctime -#pragma redefine_extname ctime __mfwrap_ctime -#pragma redefine_extname gmtime __mfwrap_gmtime -#pragma redefine_extname localtime __mfwrap_localtime -#pragma redefine_extname time __mfwrap_time -#pragma redefine_extname strerror __mfwrap_strerror -#pragma redefine_extname fopen __mfwrap_fopen -#pragma redefine_extname fdopen __mfwrap_fdopen -#pragma redefine_extname freopen __mfwrap_freopen -#pragma redefine_extname fclose __mfwrap_fclose -#pragma redefine_extname fread __mfwrap_fread -#pragma redefine_extname fwrite __mfwrap_fwrite -#pragma redefine_extname fgetc __mfwrap_fgetc -#pragma redefine_extname fgets __mfwrap_fgets -#pragma redefine_extname getc __mfwrap_getc -#pragma redefine_extname gets __mfwrap_gets -#pragma redefine_extname ungetc __mfwrap_ungetc -#pragma redefine_extname fputc __mfwrap_fputc -#pragma redefine_extname fputs __mfwrap_fputs -#pragma redefine_extname putc __mfwrap_putc -#pragma redefine_extname puts __mfwrap_puts -#pragma redefine_extname clearerr __mfwrap_clearerr -#pragma redefine_extname feof __mfwrap_feof -#pragma redefine_extname ferror __mfwrap_ferror -#pragma redefine_extname fileno __mfwrap_fileno -#pragma redefine_extname printf __mfwrap_printf -#pragma redefine_extname fprintf __mfwrap_fprintf -#pragma redefine_extname sprintf __mfwrap_sprintf -#pragma redefine_extname snprintf __mfwrap_snprintf -#pragma redefine_extname vprintf __mfwrap_vprintf -#pragma redefine_extname vfprintf __mfwrap_vfprintf -#pragma redefine_extname vsprintf __mfwrap_vsprintf -#pragma redefine_extname vsnprintf __mfwrap_vsnprintf -#pragma redefine_extname access __mfwrap_access -#pragma redefine_extname remove __mfwrap_remove -#pragma redefine_extname fflush __mfwrap_fflush -#pragma redefine_extname fseek __mfwrap_fseek -#pragma redefine_extname ftell __mfwrap_ftell -#pragma redefine_extname rewind __mfwrap_rewind -#pragma redefine_extname fgetpos __mfwrap_fgetpos -#pragma redefine_extname fsetpos __mfwrap_fsetpos -#pragma redefine_extname stat __mfwrap_stat -#pragma redefine_extname fstat __mfwrap_fstat -#pragma redefine_extname lstat __mfwrap_lstat -#pragma redefine_extname mkfifo __mfwrap_mkfifo -#pragma redefine_extname setvbuf __mfwrap_setvbuf -#pragma redefine_extname setbuf __mfwrap_setbuf -#pragma redefine_extname setbuffer __mfwrap_setbuffer -#pragma redefine_extname setlinebuf __mfwrap_setlinebuf -#pragma redefine_extname opendir __mfwrap_opendir -#pragma redefine_extname closedir __mfwrap_closedir -#pragma redefine_extname readdir __mfwrap_readdir -#pragma redefine_extname recv __mfwrap_recv -#pragma redefine_extname recvfrom __mfwrap_recvfrom -#pragma redefine_extname recvmsg __mfwrap_recvmsg -#pragma redefine_extname send __mfwrap_send -#pragma redefine_extname sendto __mfwrap_sendto -#pragma redefine_extname sendmsg __mfwrap_sendmsg -#pragma redefine_extname setsockopt __mfwrap_setsockopt -#pragma redefine_extname getsockopt __mfwrap_getsockopt -#pragma redefine_extname accept __mfwrap_accept -#pragma redefine_extname bind __mfwrap_bind -#pragma redefine_extname connect __mfwrap_connect -#pragma redefine_extname gethostname __mfwrap_gethostname -#pragma redefine_extname sethostname __mfwrap_sethostname -#pragma redefine_extname gethostbyname __mfwrap_gethostbyname -#pragma redefine_extname wait __mfwrap_wait -#pragma redefine_extname waitpid __mfwrap_waitpid -#pragma redefine_extname popen __mfwrap_popen -#pragma redefine_extname pclose __mfwrap_pclose -#pragma redefine_extname execve __mfwrap_execve -#pragma redefine_extname execv __mfwrap_execv -#pragma redefine_extname execvp __mfwrap_execvp -#pragma redefine_extname system __mfwrap_system -#pragma redefine_extname dlopen __mfwrap_dlopen -#pragma redefine_extname dlerror __mfwrap_dlerror -#pragma redefine_extname dlsym __mfwrap_dlsym -#pragma redefine_extname dlclose __mfwrap_dlclose -#pragma redefine_extname fopen64 __mfwrap_fopen64 -#pragma redefine_extname freopen64 __mfwrap_freopen64 -#pragma redefine_extname stat64 __mfwrap_stat64 -#pragma redefine_extname fseeko64 __mfwrap_fseeko64 -#pragma redefine_extname ftello64 __mfwrap_ftello64 -#pragma redefine_extname semop __mfwrap_semop -#pragma redefine_extname semctl __mfwrap_semctl -#pragma redefine_extname shmctl __mfwrap_shmctl -#pragma redefine_extname shmat __mfwrap_shmat -#pragma redefine_extname shmdt __mfwrap_shmdt -#pragma redefine_extname __ctype_b_loc __mfwrap___ctype_b_loc -#pragma redefine_extname __ctype_toupper_loc __mfwrap___ctype_toupper_loc -#pragma redefine_extname __ctype_tolower_loc __mfwrap___ctype_tolower_loc -#pragma redefine_extname getlogin __mfwrap_getlogin -#pragma redefine_extname cuserid __mfwrap_cuserid -#pragma redefine_extname getpwnam __mfwrap_getpwnam -#pragma redefine_extname getpwuid __mfwrap_getpwuid -#pragma redefine_extname getgrnam __mfwrap_getgrnam -#pragma redefine_extname getgrgid __mfwrap_getgrgid -#pragma redefine_extname getservent __mfwrap_getservent -#pragma redefine_extname getservbyname __mfwrap_getservbyname -#pragma redefine_extname getservbyport __mfwrap_getservbyport -#pragma redefine_extname gai_strerror __mfwrap_gai_strerror -#pragma redefine_extname getmntent __mfwrap_getmntent -#pragma redefine_extname inet_ntoa __mfwrap_inet_ntoa -#pragma redefine_extname getprotoent __mfwrap_getprotoent -#pragma redefine_extname getprotobyname __mfwrap_getprotobyname -#pragma redefine_extname getprotobynumber __mfwrap_getprotobynumber - -/* Disable glibc macros. */ -#define __NO_STRING_INLINES - -#endif /* _MUDFLAP */ - - -#ifdef __cplusplus -} -#endif - -#endif /* MF_RUNTIME_H */ diff --git a/libmudflap/testsuite/Makefile.am b/libmudflap/testsuite/Makefile.am deleted file mode 100644 index a2c1e9f..0000000 --- a/libmudflap/testsuite/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -## Process this with automake to create Makefile.in - -AUTOMAKE_OPTIONS = foreign dejagnu - -EXPECT = `if [ -f ../../expect/expect ] ; then \ - echo ../../expect/expect ; \ - else echo expect ; fi` - -RUNTEST = `if [ -f ${srcdir}/../../dejagnu/runtest ] ; then \ - echo ${srcdir}/../../dejagnu/runtest ; \ - else echo runtest ; fi` diff --git a/libmudflap/testsuite/Makefile.in b/libmudflap/testsuite/Makefile.in deleted file mode 100644 index 73411bd..0000000 --- a/libmudflap/testsuite/Makefile.in +++ /dev/null @@ -1,392 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = testsuite -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(srcdir)/mfconfig.exp.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ - $(top_srcdir)/../config/depstand.m4 \ - $(top_srcdir)/../config/enable.m4 \ - $(top_srcdir)/../config/lead-dot.m4 \ - $(top_srcdir)/../config/multi.m4 \ - $(top_srcdir)/../config/override.m4 \ - $(top_srcdir)/../config/tls.m4 $(top_srcdir)/../ltoptions.m4 \ - $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ - $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/../libtool.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = mfconfig.exp -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DEJATOOL = $(PACKAGE) -RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MF_HAVE_STDINT_H = @MF_HAVE_STDINT_H@ -MF_HAVE_UINTPTR_T = @MF_HAVE_UINTPTR_T@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SECTION_FLAGS = @SECTION_FLAGS@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_libmudflapth = @build_libmudflapth@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -enable_shared = @enable_shared@ -enable_static = @enable_static@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -multi_basedir = @multi_basedir@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_noncanonical = @target_noncanonical@ -target_os = @target_os@ -target_vendor = @target_vendor@ -toolexecdir = @toolexecdir@ -toolexeclibdir = @toolexeclibdir@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = foreign dejagnu -EXPECT = `if [ -f ../../expect/expect ] ; then \ - echo ../../expect/expect ; \ - else echo expect ; fi` - -RUNTEST = `if [ -f ${srcdir}/../../dejagnu/runtest ] ; then \ - echo ${srcdir}/../../dejagnu/runtest ; \ - else echo runtest ; fi` - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign testsuite/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign testsuite/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -mfconfig.exp: $(top_builddir)/config.status $(srcdir)/mfconfig.exp.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -check-DEJAGNU: site.exp - srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ - EXPECT=$(EXPECT); export EXPECT; \ - runtest=$(RUNTEST); \ - if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ - exit_status=0; l='$(DEJATOOL)'; for tool in $$l; do \ - if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \ - then :; else exit_status=1; fi; \ - done; \ - else echo "WARNING: could not find \`runtest'" 1>&2; :;\ - fi; \ - exit $$exit_status -site.exp: Makefile - @echo 'Making a new site.exp file...' - @echo '## these variables are automatically generated by make ##' >site.tmp - @echo '# Do not edit here. If you wish to override these values' >>site.tmp - @echo '# edit the last section' >>site.tmp - @echo 'set srcdir $(srcdir)' >>site.tmp - @echo "set objdir `pwd`" >>site.tmp - @echo 'set build_alias "$(build_alias)"' >>site.tmp - @echo 'set build_triplet $(build_triplet)' >>site.tmp - @echo 'set host_alias "$(host_alias)"' >>site.tmp - @echo 'set host_triplet $(host_triplet)' >>site.tmp - @echo 'set target_alias "$(target_alias)"' >>site.tmp - @echo 'set target_triplet $(target_triplet)' >>site.tmp - @echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp - @test ! -f site.exp || \ - sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp - @-rm -f site.bak - @test ! -f site.exp || mv site.exp site.bak - @mv site.tmp site.exp - -distclean-DEJAGNU: - -rm -f site.exp site.bak - -l='$(DEJATOOL)'; for tool in $$l; do \ - rm -f $$tool.sum $$tool.log; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-DEJAGNU distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \ - clean-libtool distclean distclean-DEJAGNU distclean-generic \ - distclean-libtool dvi dvi-am html html-am info info-am install \ - install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libmudflap/testsuite/config/default.exp b/libmudflap/testsuite/config/default.exp deleted file mode 100644 index 0dafaa1..0000000 --- a/libmudflap/testsuite/config/default.exp +++ /dev/null @@ -1,3 +0,0 @@ -load_lib standard.exp -load_lib libmudflap.exp -load_lib mfconfig.exp diff --git a/libmudflap/testsuite/lib/libmudflap.exp b/libmudflap/testsuite/lib/libmudflap.exp deleted file mode 100644 index 9927ba1..0000000 --- a/libmudflap/testsuite/lib/libmudflap.exp +++ /dev/null @@ -1,311 +0,0 @@ -# Copyright (C) 2001-2013 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING3. If not see -# <http://www.gnu.org/licenses/>. - -# Define libmudflap callbacks for dg.exp. -# This file is a copy of libstdc++-v3's dejagnu driver, with minor changes. - -# Useful hook: if ${hostname}_init exists, it will be called, almost -# the last thing before testing begins. This can be defined in, e.g., -# ~/.dejagnurc or $DEJAGNU. - -proc load_gcc_lib { filename } { - global srcdir - load_file $srcdir/../../gcc/testsuite/lib/$filename -} - -load_lib mfdg.exp -load_lib libgloss.exp -load_gcc_lib target-libpath.exp -load_gcc_lib target-supports.exp -load_gcc_lib timeout.exp -load_gcc_lib timeout-dg.exp - -proc libmudflap-init { language } { - global env - global srcdir outdir blddir objdir tool_root_dir - global cxx cxxflags - global includes - global libs - global gluefile wrap_flags - global ld_library_path - - switch $language { - "c" { set cxx [find_gcc] } - "c++" { set cxx [find_g++] } - default { error "bad language code $language"; return } - } - - verbose -log "libmudflap-init $cxx" - - set blddir [lookfor_file [get_multilibs] libmudflap] - set cxxblddir [lookfor_file [get_multilibs] libstdc++-v3] - set cxxflags_file "${cxxblddir}/scripts/testsuite_flags" - - # By default, we assume we want to run program images. - global dg-do-what-default - set dg-do-what-default run - - # set LD_LIBRARY_PATH so that libgcc_s, libstdc++ binaries can be found. - # locate libgcc.a so we don't need to account for different values of - # SHLIB_EXT on different platforms - set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] - if {$gccdir != ""} { - set gccdir [file dirname $gccdir] - } - - set ld_library_path "." - append ld_library_path ":${gccdir}" - append ld_library_path ":${cxxblddir}/src/.libs" - if {[is_remote host] == 0} { - foreach i "[exec ${gccdir}/xgcc --print-multi-lib]" { - set mldir "" - regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir - set mldir [string trimright $mldir "\;@"] - if { "$mldir" == "." } { - continue - } - if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } { - append ld_library_path ":${gccdir}/${mldir}" - } - } - } - append ld_library_path ":${blddir}/.libs" - - set libs "-L${blddir}/.libs" - set cxxflags "-ggdb3 -DDEBUG_ASSERT -fdiagnostics-color=never" - set includes "-I${srcdir} -I${srcdir}/.. -I.." - - if {$language == "c++"} { - if {[file exists $cxxflags_file]} then { - set includes "${includes} [exec sh $cxxflags_file --build-includes]" - set cxxflags "${cxxflags} [exec sh $cxxflags_file --cxxflags]" - # c++ libs are included by --build-cxx below - set cxx "[exec sh $cxxflags_file --build-cxx]" - } else { - lappend libs "-L${cxxblddir}src/.libs" - lappend includes "-I../../libstdc++-v3/include" - } - } - - global mfconfig_libs - global add_flags - append add_flags " $mfconfig_libs" - - set_ld_library_path_env_vars - if [info exists env(LD_LIBRARY_PATH)] { - verbose -log "LD_LIBRARY_PATH = $env(LD_LIBRARY_PATH)" - } - - if { [target_info needs_status_wrapper]!=""} { - file delete ${objdir}/testglue.o; - set gluefile ${objdir}/testglue.o; - set result [build_wrapper $gluefile]; - if { $result != "" } { - set gluefile [lindex $result 0]; - set wrap_flags [lindex $result 1]; - } else { - unset gluefile - } - } - - # If there is no static library then don't run tests with -static. - global tool - global mfconfig_libs - set opts "additional_flags=-static" - lappend opts "additional_flags=-fmudflap" - lappend opts "additional_flags=-lmudflap" - lappend opts "libs=$mfconfig_libs" - set src stlm[pid].c - set exe stlm[pid].x - - set f [open $src "w"] - puts $f "int main () { }" - close $f - set lines [${tool}_target_compile $src $exe executable "$opts"] - file delete $src - remote_file build delete $exe - - if { ![string match "" $lines] } { - # Compilation failed; assume static library is not available. - global MUDFLAP_FLAGS - set i [lsearch $MUDFLAP_FLAGS "*static*"] - set MUDFLAP_FLAGS [lreplace $MUDFLAP_FLAGS $i $i] - } -} - -proc libmudflap-dg-test { prog do_what extra_tool_flags } { - # Set up the compiler flags, based on what we're going to do. - - switch $do_what { - "preprocess" { - set compile_type "preprocess" - set output_file "[file rootname [file tail $prog]].i" - } - "compile" { - set compile_type "assembly" - set output_file "[file rootname [file tail $prog]].s" - } - "assemble" { - set compile_type "object" - set output_file "[file rootname [file tail $prog]].o" - } - "link" { - set compile_type "executable" - set output_file "./[file rootname [file tail $prog]].exe" - } - "run" { - set compile_type "executable" - # FIXME: "./" is to cope with "." not being in $PATH. - # Should this be handled elsewhere? - # YES. - set output_file "./[file rootname [file tail $prog]].exe" - # This is the only place where we care if an executable was - # created or not. If it was, dg.exp will try to run it. - remote_file build delete $output_file; - } - default { - perror "$do_what: not a valid dg-do keyword" - return "" - } - } - set options "" - if { $extra_tool_flags != "" } { - lappend options "additional_flags=$extra_tool_flags" - } - - global mfconfig_libs - lappend options "libs=$mfconfig_libs" - - set comp_output [libmudflap_target_compile "$prog" "$output_file" "$compile_type" $options]; - - return [list $comp_output $output_file] -} - - -proc libmudflap_target_compile { source dest type options } { - global gluefile - global wrap_flags - global cxx - global cxxflags - global includes - global libs - global blddir - - if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } { - lappend options "libs=${gluefile}" - lappend options "ldflags=${wrap_flags}" - } - - set cxx_final $cxx - set cxxlibglossflags [libgloss_link_flags] - set cxx_final [concat $cxx_final $cxxlibglossflags] - set cxx_final [concat $cxx_final $cxxflags] - set cxx_final [concat $cxx_final $includes] - set cxx_final [concat $cxx_final $libs] - - lappend options "compiler=$cxx_final" - lappend options "timeout=[timeout_value]" - - # Picks up the freshly-built testsuite library corresponding to the - # multilib under test. - lappend options "ldflags=-L${blddir}/testsuite" - - return [target_compile $source $dest $type $options] -} - - -# A bit sloppy... Returns a list of source files (full pathnames) to -# compile. We mimic the mkcheck script in that the first time this is run, -# all existing files are listed in "testsuite_files" in the output -# directory. Subsequent runs pull the list from that file, allowing users -# to trim the list down to problematic tests. -### This is supposed to be done via RUNTESTFLAGS, but that doesn't work. -proc libmudflap-list-sourcefiles { } { - global srcdir - global outdir - - set files_file "${outdir}/testsuite_files" - set sfiles "" - if { [file exists $files_file] } { - set f [open $files_file] - while { ! [eof $f] } { - set t [gets $f] - if { [string length "$t"] != 0 } { - lappend sfiles ${srcdir}/${t} - } - } - } else { - set f [open $files_file "w"] - set where_we_were [pwd] - cd $srcdir - foreach s [lsort [glob -nocomplain "*/*.cc" "*/*/*.cc" "{,*/}*/*/*/*.cc" ]] { - lappend sfiles ${srcdir}/${s} - puts $f $s - } - cd $where_we_were - } - close $f - - # Disable wchar_t tests if library not configured to support - # wchar_t testing. - set wchar_file "${outdir}/testsuite_wchar_t" - if { [file exists $wchar_file] } { - return $sfiles - } else { - # Remove wchar_t tests files from list. - set res {} - foreach w $sfiles { - if [regexp "wchar_t" $w] { - verbose -log "element out list is $w" - } else { - verbose -log "element in list is $w" - lappend res $w - } - } - return $res - } -} - - -proc libmudflap-dg-prune { system text } { - global additional_prunes - - set text [prune_gcc_output $text] - - foreach p $additional_prunes { - if { [string length $p] > 0 } { - # Following regexp matches a complete line containing $p. - regsub -all "(^|\n)\[^\n\]*$p\[^\n\]*" $text "" text - } - } - - return $text -} - - -proc prune_gcc_output { text } { - # Ignore caret diagnostics. Unfortunately dejaGNU trims leading - # spaces, so one cannot rely on them being present. - regsub -all "(^|\n)\[^\n\]+\n *\\^\n" $text "\n" text - regsub -all {(^|\n)[^\n]*ld: warning: libgcc_s[^\n]*not found[^\n]*try using[^\n]*} $text "" text - regsub -all {(^|\n)[^\n]*In function.*pthread_create[^\n]*} $text "" text - regsub -all {(^|\n)[^\n]*the use of .pthread.*is deprecated[^\n]*} $text "" text - regsub -all {(^|\n)[^\n]*Dwarf Error:.*FORM value: 14[^\n]*} $text "" text - regsub -all {(^|\n)[^\n]*In function[^\n]*} $text "" text - regsub -all {(^|\n)[^\n]*Using.*in statically linked applications requires[^\n]*} $text "" text - - return $text -} diff --git a/libmudflap/testsuite/lib/mfdg.exp b/libmudflap/testsuite/lib/mfdg.exp deleted file mode 100644 index 1984b31..0000000 --- a/libmudflap/testsuite/lib/mfdg.exp +++ /dev/null @@ -1,375 +0,0 @@ -# `mfdg' - overrides parts of general purpose testcase driver. -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING3. If not see -# <http://www.gnu.org/licenses/>. - - -# This is a modified excerpt of dejagnu/lib/dg.exp. - -load_lib dg.exp - -# We set LC_ALL and LANG to C so that we get the same error messages as expected. -setenv LC_ALL C -setenv LANG C - -# Many hosts now default to a non-ASCII C locale, however, so -# they can set a charset encoding here if they need. -if { [ishost "*-*-cygwin*"] } { - setenv LC_ALL C.ASCII - setenv LANG C.ASCII -} - -# dg-test -- runs a new style DejaGnu test -# -# Syntax: dg-test [-keep-output] prog tool_flags default_extra_tool_flags -# -# PROG is the full path name of the file to pass to the tool (eg: compiler). -# TOOL_FLAGS is a set of options to always pass. -# DEFAULT_EXTRA_TOOL_FLAGS are additional options if the testcase has none. - -#proc dg-test { prog tool_flags default_extra_tool_flags } { -proc dg-test { args } { - global dg-do-what-default dg-interpreter-batch-mode dg-linenum-format - global errorCode errorInfo - global additional_prunes - global tool - global srcdir ;# eg: /calvin/dje/build/gcc/./testsuite/ - global host_triplet target_triplet - - set keep 0 - set i 0 - set dg-repetitions 1 ;# may be overridden by { dg-repetitions N } - unset_timeout_vars - - if { [string index [lindex $args 0] 0] == "-" } { - for { set i 0 } { $i < [llength $args] } { incr i } { - if { [lindex $args $i] == "--" } { - incr i - break - } elseif { [lindex $args $i] == "-keep-output" } { - set keep 1 - } elseif { [string index [lindex $args $i] 0] == "-" } { - clone_output "ERROR: dg-test: illegal argument: [lindex $args $i]" - return - } else { - break - } - } - } - - if { $i + 3 != [llength $args] } { - clone_output "ERROR: dg-test: missing arguments in call" - return - } - set prog [lindex $args $i] - set tool_flags [lindex $args [expr $i + 1]] - set default_extra_tool_flags [lindex $args [expr $i + 2]] - - set text "\[- A-Za-z0-9\.\;\"\_\:\'\`\(\)\!\#\=\+\?\&\*]*" - - set name [dg-trim-dirname $srcdir $prog] - # If we couldn't rip $srcdir out of `prog' then just do the best we can. - # The point is to reduce the unnecessary noise in the logs. Don't strip - # out too much because different testcases with the same name can confuse - # `test-tool'. - if [string match "/*" $name] { - set name "[file tail [file dirname $prog]]/[file tail $prog]" - } - - if {$tool_flags != ""} { - append name " ($tool_flags)" - } - - # Process any embedded dg options in the testcase. - - # Use "" for the second element of dg-do-what so we can tell if it's been - # explicitly set to "S". - set dg-do-what [list ${dg-do-what-default} "" P] - set dg-excess-errors-flag 0 - set dg-messages "" - set dg-extra-tool-flags $default_extra_tool_flags - set dg-final-code "" - - set additional_prunes "" - - # `dg-output-text' is a list of two elements: pass/fail and text. - # Leave second element off for now (indicates "don't perform test") - set dg-output-text "P" - - # Define our own "special function" `unknown' so we catch spelling errors. - # But first rename the existing one so we can restore it afterwards. - catch {rename dg-save-unknown ""} - rename unknown dg-save-unknown - proc unknown { args } { - return -code error "unknown dg option: $args" - } - - set tmp [dg-get-options $prog] - foreach op $tmp { - verbose "Processing option: $op" 3 - set status [catch "$op" errmsg] - if { $status != 0 } { - if { 0 && [info exists errorInfo] } { - # This also prints a backtrace which will just confuse - # testcase writers, so it's disabled. - perror "$name: $errorInfo\n" - } else { - perror "$name: $errmsg for \"$op\"\n" - } - # ??? The call to unresolved here is necessary to clear `errcnt'. - # What we really need is a proc like perror that doesn't set errcnt. - # It should also set exit_status to 1. - unresolved "$name: $errmsg for \"$op\"" - return - } - } - - # Restore normal error handling. - rename unknown "" - rename dg-save-unknown unknown - - # If we're not supposed to try this test on this target, we're done. - if { [lindex ${dg-do-what} 1] == "N" } { - unsupported "$name" - verbose "$name not supported on this target, skipping it" 3 - return - } - - # Run the tool and analyze the results. - # The result of ${tool}-dg-test is in a bit of flux. - # Currently it is the name of the output file (or "" if none). - # If we need more than this it will grow into a list of things. - # No intention is made (at this point) to preserve upward compatibility - # (though at some point we'll have to). - - set results [${tool}-dg-test $prog [lindex ${dg-do-what} 0] "$tool_flags ${dg-extra-tool-flags}"]; - - set comp_output [lindex $results 0]; - set output_file [lindex $results 1]; - - #send_user "\nold_dejagnu.exp: comp_output1 = :$comp_output:\n\n" - #send_user "\nold_dejagnu.exp: message = :$message:\n\n" - #send_user "\nold_dejagnu.exp: message length = [llength $message]\n\n" - - foreach i ${dg-messages} { - verbose "Scanning for message: $i" 4 - - # Remove all error messages for the line [lindex $i 0] - # in the source file. If we find any, success! - set line [lindex $i 0] - set pattern [lindex $i 2] - set comment [lindex $i 3] - #send_user "Before:\n$comp_output\n" - if [regsub -all "(^|\n)(\[^\n\]+$line\[^\n\]*($pattern)\[^\n\]*\n?)+" $comp_output "\n" comp_output] { - set comp_output [string trimleft $comp_output] - set ok pass - set uhoh fail - } else { - set ok fail - set uhoh pass - } - #send_user "After:\n$comp_output\n" - - # $line will either be a formatted line number or a number all by - # itself. Delete the formatting. - scan $line ${dg-linenum-format} line - switch [lindex $i 1] { - "ERROR" { - $ok "$name $comment (test for errors, line $line)" - } - "XERROR" { - x$ok "$name $comment (test for errors, line $line)" - } - "WARNING" { - $ok "$name $comment (test for warnings, line $line)" - } - "XWARNING" { - x$ok "$name $comment (test for warnings, line $line)" - } - "BOGUS" { - $uhoh "$name $comment (test for bogus messages, line $line)" - } - "XBOGUS" { - x$uhoh "$name $comment (test for bogus messages, line $line)" - } - "BUILD" { - $uhoh "$name $comment (test for build failure, line $line)" - } - "XBUILD" { - x$uhoh "$name $comment (test for build failure, line $line)" - } - "EXEC" { } - "XEXEC" { } - } - #send_user "\nold_dejagnu.exp: comp_output2= :$comp_output:\n\n" - } - #send_user "\nold_dejagnu.exp: comp_output3 = :$comp_output:\n\n" - - # Remove messages from the tool that we can ignore. - #send_user "comp_output: $comp_output\n" - set comp_output [prune_warnings $comp_output] - - if { [info proc ${tool}-dg-prune] != "" } { - set comp_output [${tool}-dg-prune $target_triplet $comp_output] - switch -glob $comp_output { - "::untested::*" { - regsub "::untested::" $comp_output "" message - untested "$name: $message" - return - } - "::unresolved::*" { - regsub "::unresolved::" $comp_output "" message - unresolved "$name: $message" - return - } - "::unsupported::*" { - regsub "::unsupported::" $comp_output "" message - unsupported "$name: $message" - return - } - } - } - - # See if someone forgot to delete the extra lines. - regsub -all "\n+" $comp_output "\n" comp_output - regsub "^\n+" $comp_output "" comp_output - #send_user "comp_output: $comp_output\n" - - # Don't do this if we're testing an interpreter. - # FIXME: why? - if { ${dg-interpreter-batch-mode} == 0 } { - # Catch excess errors (new bugs or incomplete testcases). - if ${dg-excess-errors-flag} { - setup_xfail "*-*-*" - } - if ![string match "" $comp_output] { - fail "$name (test for excess errors)" - send_log "Excess errors:\n$comp_output\n" - } else { - pass "$name (test for excess errors)" - } - } - - # Run the executable image if asked to do so. - # FIXME: This is the only place where we assume a standard meaning to - # the `keyword' argument of dg-do. This could be cleaned up. - if { [lindex ${dg-do-what} 0] == "run" } { - if ![file exists $output_file] { - warning "$name compilation failed to produce executable" - } else { - set testname $name - for {set rep 0} {$rep < ${dg-repetitions}} {incr rep} { - # include repetition number in test name - if {$rep > 0} { set name "$testname (rerun $rep)" } - - set status -1 - set result [${tool}_load $output_file] - set status [lindex $result 0]; - set output [lindex $result 1]; - #send_user "After exec, status: $status\n" - - if { "$status" == "pass" } { - verbose "Exec succeeded." 3 - } elseif { "$status" == "fail" } { - # It would be nice to get some info out of errorCode. - if [info exists errorCode] { - verbose "Exec failed, errorCode: $errorCode" 3 - } else { - verbose "Exec failed, errorCode not defined!" 3 - } - } - - if { [lindex ${dg-do-what} 2] == "F" } { - # Instead of modelling this as an xfail (via setup_xfail), - # treat an expected crash as a success. - if { $status == "pass" } then { set status fail } else { set status pass } - set testtype "crash" - } else { set testtype "execution" } - - $status "$name $testtype test" - - if { [llength ${dg-output-text}] > 1 } { - #send_user "${dg-output-text}\n" - if { [lindex ${dg-output-text} 0] == "F" } { - setup_xfail "*-*-*" - } - set texttmp [lindex ${dg-output-text} 1] - if { ![regexp $texttmp ${output}] } { - fail "$name output pattern test" - } else { - pass "$name output pattern test" - } - verbose -log "Output pattern $texttmp" - unset texttmp - } - } - } - } - - # Are there any further tests to perform? - # Note that if the program has special run-time requirements, running - # of the program can be delayed until here. Ditto for other situations. - # It would be a bit cumbersome though. - - if ![string match ${dg-final-code} ""] { - regsub -all "\\\\(\[{}\])" ${dg-final-code} "\\1" dg-final-code - # Note that the use of `args' here makes this a varargs proc. - proc dg-final-proc { args } ${dg-final-code} - verbose "Running dg-final tests." 3 - verbose "dg-final-proc:\n[info body dg-final-proc]" 4 - if [catch "dg-final-proc $prog" errmsg] { - perror "$name: error executing dg-final: $errmsg" - # ??? The call to unresolved here is necessary to clear `errcnt'. - # What we really need is a proc like perror that doesn't set errcnt. - # It should also set exit_status to 1. - unresolved "$name: error executing dg-final: $errmsg" - } - } - - # Do some final clean up. - # When testing an interpreter, we don't compile something and leave an - # output file. - if { ! ${keep} && ${dg-interpreter-batch-mode} == 0 } { - catch "exec rm -f $output_file" - } -} - - -# -# Indicate that this test case is to be rerun several times. This -# is useful if it is nondeterministic. This applies to rerunning the -# test program only, not rebuilding it. -# The embedded format is "{ dg-repetitions N }", where N is the number -# of repetitions. It better be greater than zero. -# -proc dg-repetitions { line value } { - upvar dg-repetitions repetitions - set repetitions $value -} - - -# Prune any messages matching ARGS[1] (a regexp) from test output. -proc dg-prune-output { args } { - global additional_prunes - - if { [llength $args] != 2 } { - error "[lindex $args 1]: need one argument" - return - } - - lappend additional_prunes [lindex $args 1] -} - -set additional_prunes "" diff --git a/libmudflap/testsuite/libmudflap.c++/c++frags.exp b/libmudflap/testsuite/libmudflap.c++/c++frags.exp deleted file mode 100644 index 4e3d244..0000000 --- a/libmudflap/testsuite/libmudflap.c++/c++frags.exp +++ /dev/null @@ -1,22 +0,0 @@ -global MUDFLAP_FLAGS -set MUDFLAP_FLAGS [list {-O0} {-static} { -O} {-O2} {-O3}] - -libmudflap-init c++ -if {$cxx == "g++"} then { - unsupported "g++ not found" - return -} - -dg-init - -global srcdir - -foreach flags $MUDFLAP_FLAGS { - foreach srcfile [lsort [glob -nocomplain ${srcdir}/libmudflap.c++/*frag.cxx]] { - set bsrc [file tail $srcfile] - setenv MUDFLAP_OPTIONS "-viol-segv" - dg-runtest $srcfile $flags "-fmudflap -lmudflap" - } -} - -dg-finish diff --git a/libmudflap/testsuite/libmudflap.c++/ctors-1.cxx b/libmudflap/testsuite/libmudflap.c++/ctors-1.cxx deleted file mode 100644 index 7717c80..0000000 --- a/libmudflap/testsuite/libmudflap.c++/ctors-1.cxx +++ /dev/null @@ -1,20 +0,0 @@ -#include <iostream> - - -extern char k []; - -class foo -{ - public: - foo (char *m) { m [40] = 20; } -}; - - -foo f1 (k); -foo f2 (k); -foo f3 (k); - -int main () -{ - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c++/ctors-2.cxx b/libmudflap/testsuite/libmudflap.c++/ctors-2.cxx deleted file mode 100644 index c1a5019..0000000 --- a/libmudflap/testsuite/libmudflap.c++/ctors-2.cxx +++ /dev/null @@ -1 +0,0 @@ -char k [500]; diff --git a/libmudflap/testsuite/libmudflap.c++/ctors.exp b/libmudflap/testsuite/libmudflap.c++/ctors.exp deleted file mode 100644 index df7293d..0000000 --- a/libmudflap/testsuite/libmudflap.c++/ctors.exp +++ /dev/null @@ -1,48 +0,0 @@ -global MUDFLAP_FLAGS -set MUDFLAP_FLAGS [list {-O0} {-static} {-O2} {-O3}] - -libmudflap-init c++ -if {$cxx == "g++"} then { - unsupported "g++ not found" - return -} - -dg-init - -global srcdir subdir - -foreach flags $MUDFLAP_FLAGS { - set l1 [libmudflap_target_compile "$srcdir/$subdir/ctors-1.cxx" "ctors-1.o" object {additional_flags=-fmudflap}] - set test "ctors-1 compilation ${flags}" - if [string match "*mudflap cannot track unknown size extern *k*" $l1] { pass $test } { fail $test } - - set l2 [libmudflap_target_compile "$srcdir/$subdir/ctors-2.cxx" "ctors-2.o" object {additional_flags=-fmudflap}] - set test "ctors-2 compilation ${flags}" - if [string match "" $l2] { pass $test } { fail $test } - - set l3 [libmudflap_target_compile "ctors-1.o ctors-2.o" "ctors-12.exe" executable {additional_flags=-fmudflap additional_flags=-lmudflap additional_flags=-lstdc++}] - set test "ctors-12 linkage ${flags}" - if [string match "" $l3] { pass $test } { fail $test } - - set l4 [libmudflap_target_compile "ctors-2.o ctors-1.o" "ctors-21.exe" executable {additional_flags=-fmudflap additional_flags=-lmudflap additional_flags=-lstdc++}] - set test "ctors-21 linkage ${flags}" - if [string match "" $l3] { pass $test } { fail $test } - - setenv MUDFLAP_OPTIONS "-viol-segv" - - remote_spawn host "./ctors-12.exe" - set l5 [remote_wait host 10] - set test "ctors-12 execution ${flags}" - if {[lindex $l5 0] == 0} { pass $test } { fail $test } - - remote_spawn host "./ctors-21.exe" - set l6 [remote_wait host 10] - set test "ctors-21 execution ${flags}" - if {[lindex $l6 0] == 0} { pass $test } { fail $test } - - foreach f [glob -nocomplain "ctors-*"] { - remote_file build delete $f - } -} - -dg-finish diff --git a/libmudflap/testsuite/libmudflap.c++/error1-frag.cxx b/libmudflap/testsuite/libmudflap.c++/error1-frag.cxx deleted file mode 100644 index 8bfe853..0000000 --- a/libmudflap/testsuite/libmudflap.c++/error1-frag.cxx +++ /dev/null @@ -1,5 +0,0 @@ -// PR 26789 -// { dg-do compile } - -struct A; -A a; // { dg-error "incomplete" } diff --git a/libmudflap/testsuite/libmudflap.c++/error2-frag.cxx b/libmudflap/testsuite/libmudflap.c++/error2-frag.cxx deleted file mode 100644 index 0e89e11..0000000 --- a/libmudflap/testsuite/libmudflap.c++/error2-frag.cxx +++ /dev/null @@ -1,10 +0,0 @@ -// PR 26790 -// { dg-do compile } - -struct A; - -A foo() // { dg-error "incomplete" } -{ - A a; // { dg-error "incomplete" } - return a; -} diff --git a/libmudflap/testsuite/libmudflap.c++/fail24-frag.cxx b/libmudflap/testsuite/libmudflap.c++/fail24-frag.cxx deleted file mode 100644 index e3467dd..0000000 --- a/libmudflap/testsuite/libmudflap.c++/fail24-frag.cxx +++ /dev/null @@ -1,16 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -char zoo [10]; - -int main () -{ -int i = strlen ("twelve") + strlen ("zero") + strlen ("seventeen"); -zoo[i] = 'a'; -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.*zoo.*static.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c++/pass27-frag.cxx b/libmudflap/testsuite/libmudflap.c++/pass27-frag.cxx deleted file mode 100644 index aca2ea3..0000000 --- a/libmudflap/testsuite/libmudflap.c++/pass27-frag.cxx +++ /dev/null @@ -1,12 +0,0 @@ -class foo { - char z [10]; -public: - char *get_z () { return & this->z[0]; } -}; - -int main () -{ -foo x; -x.get_z()[9] = 'a'; -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c++/pass28-frag.cxx b/libmudflap/testsuite/libmudflap.c++/pass28-frag.cxx deleted file mode 100644 index 75e14ba..0000000 --- a/libmudflap/testsuite/libmudflap.c++/pass28-frag.cxx +++ /dev/null @@ -1,20 +0,0 @@ -class foo { - char z [10]; -public: - virtual char *get_z () { return & this->z[0]; } -}; - -class bar: public foo { - char q [20]; -public: - char *get_z () { return & this->q[0]; } -}; - -int main () { -foo *x = new bar (); - -x->get_z()[9] = 'a'; - -delete x; -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c++/pass31-frag.cxx b/libmudflap/testsuite/libmudflap.c++/pass31-frag.cxx deleted file mode 100644 index 6c4b9f9..0000000 --- a/libmudflap/testsuite/libmudflap.c++/pass31-frag.cxx +++ /dev/null @@ -1,12 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -char zoo [10]; - -int main () -{ -int i = strlen ("eight") + strlen ("one"); -zoo[i] = 'a'; -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c++/pass41-frag.cxx b/libmudflap/testsuite/libmudflap.c++/pass41-frag.cxx deleted file mode 100644 index 06896c7..0000000 --- a/libmudflap/testsuite/libmudflap.c++/pass41-frag.cxx +++ /dev/null @@ -1,13 +0,0 @@ -#include <string> -#include <iostream> - -int -main (int argc, char *argv[]) -{ - std::string myStr = "Hello, World!"; - std::cout << myStr << std::endl; - return 0; -} - -/* Ignore a warning that is irrelevant to the purpose of this test. */ -/* { dg-prune-output ".*mudflap cannot track unknown size extern.*" } */ diff --git a/libmudflap/testsuite/libmudflap.c++/pass55-frag.cxx b/libmudflap/testsuite/libmudflap.c++/pass55-frag.cxx deleted file mode 100644 index e83c124..0000000 --- a/libmudflap/testsuite/libmudflap.c++/pass55-frag.cxx +++ /dev/null @@ -1,7 +0,0 @@ -#include <vector> - -int main() { - std::vector<int> v; - v.push_back(1); - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c++/pass57-frag.cxx b/libmudflap/testsuite/libmudflap.c++/pass57-frag.cxx deleted file mode 100644 index 8be1a2d..0000000 --- a/libmudflap/testsuite/libmudflap.c++/pass57-frag.cxx +++ /dev/null @@ -1,28 +0,0 @@ -#include <vector> -#include <string> - -class fitscolumn - { - private: - std::string name_, unit_; - int i, t; - public: - fitscolumn (const std::string &nm, const std::string &un,int i1,int t1) - : name_(nm), unit_(un), i(i1), t(t1){} - }; - -void init_bintab(std::vector<fitscolumn> & columns_) -{ - char ttype[81], tunit[81], tform[81]; - long repc; - int typecode; - columns_.push_back (fitscolumn (ttype,tunit,1,typecode)); -} - -int main () -{ - return 0; -} - -/* Ignore a warning that is irrelevant to the purpose of this test. */ -/* { dg-prune-output ".*mudflap cannot track unknown size extern.*" } */ diff --git a/libmudflap/testsuite/libmudflap.c++/pass58-frag.cxx b/libmudflap/testsuite/libmudflap.c++/pass58-frag.cxx deleted file mode 100644 index 96da05f..0000000 --- a/libmudflap/testsuite/libmudflap.c++/pass58-frag.cxx +++ /dev/null @@ -1,12 +0,0 @@ -// PR 19319 -struct k { - int data; - k(int j): data(j) {} -}; -k make_k () { return k(1); } - -int main () -{ - k foo = make_k (); - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c++/pass60-frag.cxx b/libmudflap/testsuite/libmudflap.c++/pass60-frag.cxx deleted file mode 100644 index 35989d1..0000000 --- a/libmudflap/testsuite/libmudflap.c++/pass60-frag.cxx +++ /dev/null @@ -1,13 +0,0 @@ -// PR 26442 - -struct A -{ - A(); -}; - -int main() -{ - if (0) - A(); - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c++/pass61-frag.cxx b/libmudflap/testsuite/libmudflap.c++/pass61-frag.cxx deleted file mode 100644 index 0304611..0000000 --- a/libmudflap/testsuite/libmudflap.c++/pass61-frag.cxx +++ /dev/null @@ -1,20 +0,0 @@ -// PR c++/34619 -// { dg-do compile } - -template <typename> struct A -{ - typedef int X; - static const int N = 1; -}; - -template <typename T> struct B -{ - typedef typename A <int [A <T>::N]>::X Y; - template <typename U> B (Y, U) {} -}; - -int main () -{ -} - -B <int>b (0, 0); diff --git a/libmudflap/testsuite/libmudflap.c++/pass66-frag.cxx b/libmudflap/testsuite/libmudflap.c++/pass66-frag.cxx deleted file mode 100644 index 989c7ca..0000000 --- a/libmudflap/testsuite/libmudflap.c++/pass66-frag.cxx +++ /dev/null @@ -1,17 +0,0 @@ -// PR c++/37568 -// { dg-do compile } -// { dg-options "-fmudflap -O" } - -struct A -{ - int i; -}; - -A -foo () -{ - A a = { 1 }; - return a; -} - -A a = foo (); diff --git a/libmudflap/testsuite/libmudflap.c/cfrags.exp b/libmudflap/testsuite/libmudflap.c/cfrags.exp deleted file mode 100644 index ebd67c4..0000000 --- a/libmudflap/testsuite/libmudflap.c/cfrags.exp +++ /dev/null @@ -1,21 +0,0 @@ -global MUDFLAP_FLAGS -set MUDFLAP_FLAGS [list {-O0} {-static} {-O2} {-O3}] - -libmudflap-init c - -dg-init - -global srcdir -foreach flags $MUDFLAP_FLAGS { - foreach srcfile [lsort [glob -nocomplain \ - ${srcdir}/libmudflap.c/*frag.c \ - ${srcdir}/libmudflap.c/heap*.c \ - ${srcdir}/libmudflap.c/hook*.c \ - ${srcdir}/libmudflap.c/pass*.c]] { - set bsrc [file tail $srcfile] - setenv MUDFLAP_OPTIONS "-viol-segv" - dg-runtest $srcfile $flags "-fmudflap -lmudflap" - } -} - -dg-finish diff --git a/libmudflap/testsuite/libmudflap.c/externs-1.c b/libmudflap/testsuite/libmudflap.c/externs-1.c deleted file mode 100644 index 028f5eb..0000000 --- a/libmudflap/testsuite/libmudflap.c/externs-1.c +++ /dev/null @@ -1,16 +0,0 @@ -typedef struct { char *name; } dummy; -extern dummy d[]; - -int -main (void) -{ - dummy *pd = d; - - while (pd->name) - { - printf ("%s\n", pd->name); - pd++; - } - - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/externs-2.c b/libmudflap/testsuite/libmudflap.c/externs-2.c deleted file mode 100644 index cecf625..0000000 --- a/libmudflap/testsuite/libmudflap.c/externs-2.c +++ /dev/null @@ -1,2 +0,0 @@ -typedef struct { char *name; } dummy; -dummy d[] = { {"a"}, {0} }; diff --git a/libmudflap/testsuite/libmudflap.c/externs.exp b/libmudflap/testsuite/libmudflap.c/externs.exp deleted file mode 100644 index 5a0297f..0000000 --- a/libmudflap/testsuite/libmudflap.c/externs.exp +++ /dev/null @@ -1,43 +0,0 @@ -global MUDFLAP_FLAGS -set MUDFLAP_FLAGS [list {-O0} {-static} {-O2} {-O3}] - -libmudflap-init c -dg-init - -global srcdir subdir - -foreach flags $MUDFLAP_FLAGS { - set l1 [libmudflap_target_compile "$srcdir/$subdir/externs-1.c" "externs-1.o" object {additional_flags=-fmudflap}] - set test "externs-1 compilation ${flags}" - if [string match "*mudflap cannot track unknown size extern *d*" $l1] { pass $test } { fail $test } - - set l2 [libmudflap_target_compile "$srcdir/$subdir/externs-2.c" "externs-2.o" object {additional_flags=-fmudflap}] - set test "externs-2 compilation ${flags}" - if [string match "" $l2] { pass $test } { fail $test } - - set l3 [libmudflap_target_compile "externs-1.o externs-2.o" "externs-12.exe" executable {additional_flags=-fmudflap additional_flags=-lmudflap}] - set test "externs-12 linkage ${flags}" - if [string match "" $l3] { pass $test } { fail $test } - - set l4 [libmudflap_target_compile "externs-2.o externs-1.o" "externs-21.exe" executable {additional_flags=-fmudflap additional_flags=-lmudflap}] - set test "externs-21 linkage ${flags}" - if [string match "" $l3] { pass $test } { fail $test } - - setenv MUDFLAP_OPTIONS "-viol-segv" - - remote_spawn host "./externs-12.exe" - set l5 [remote_wait host 10] - set test "externs-12 execution ${flags}" - if {[lindex $l5 0] == 0} { pass $test } { fail $test } - - remote_spawn host "./externs-21.exe" - set l6 [remote_wait host 10] - set test "externs-21 execution ${flags}" - if {[lindex $l6 0] == 0} { pass $test } { fail $test } - - foreach f [glob -nocomplain "externs-*"] { - remote_file build delete $f - } -} - -dg-finish diff --git a/libmudflap/testsuite/libmudflap.c/fail1-frag.c b/libmudflap/testsuite/libmudflap.c/fail1-frag.c deleted file mode 100644 index 1e48fff..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail1-frag.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -volatile int foo [10]; -foo[10] = 0; -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.main. foo.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail10-frag.c b/libmudflap/testsuite/libmudflap.c/fail10-frag.c deleted file mode 100644 index db135d5..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail10-frag.c +++ /dev/null @@ -1,16 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -volatile int foo[10]; -int sz = sizeof (int); - -volatile char *bar = (char *)foo; -bar [sz * 10] = 0; -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.main. foo.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail11-frag.c b/libmudflap/testsuite/libmudflap.c/fail11-frag.c deleted file mode 100644 index 8cd4a53..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail11-frag.c +++ /dev/null @@ -1,20 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -char *y; -int main () -{ -int i = 10; -char *x = (char *) malloc (i * sizeof (char)); -y = x; -while (i--) -{ - ++x; - *x = i; -} -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*malloc region.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail12-frag.c b/libmudflap/testsuite/libmudflap.c/fail12-frag.c deleted file mode 100644 index 7491fed..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail12-frag.c +++ /dev/null @@ -1,20 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int *y; -int main () -{ -int i = 10; -int *x = (int *) malloc (i * sizeof (int)); -y = x; -while (i--) -{ - ++x; - *x = i; -} -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*malloc region.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail13-frag.c b/libmudflap/testsuite/libmudflap.c/fail13-frag.c deleted file mode 100644 index 9fd3e25..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail13-frag.c +++ /dev/null @@ -1,26 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct a { - int x; - int y; - char z; -}; - -struct b { - int x; - int y; -}; - -struct b k; - -(*((volatile struct a *) &k)).z = 'q'; - -return 0; -} -/* { dg-output "mudflap violation 1..check/write.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.main. k.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail14-frag.c b/libmudflap/testsuite/libmudflap.c/fail14-frag.c deleted file mode 100644 index e66cc94..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail14-frag.c +++ /dev/null @@ -1,29 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct a { - int x; - int y; - char z; -}; - -struct b { - int x; - int y; -}; - -volatile struct b k; -volatile struct a *p; - -p = (struct a*) &k; - -p->z = 'q'; - -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.main. k.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail15-frag.c b/libmudflap/testsuite/libmudflap.c/fail15-frag.c deleted file mode 100644 index 5d7ae74..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail15-frag.c +++ /dev/null @@ -1,27 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct base { - int basic; -}; - -struct derived { - struct base common; - char extra; -}; - -volatile struct base b; -volatile struct base *bp; - -bp = (struct base *)&b; - -bp->basic = 10; -((struct derived volatile *)bp)->extra = 'x'; -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.main. b.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail16-frag.c b/libmudflap/testsuite/libmudflap.c/fail16-frag.c deleted file mode 100644 index 6ac6187..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail16-frag.c +++ /dev/null @@ -1,27 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -void *p; -int main () -{ -struct base { - int basic; -}; - -struct derived { - struct base common; - char extra; -}; - -struct base *bp; - -bp = (struct base *) malloc (sizeof (struct base));; -p = bp; -bp->basic = 10; -((struct derived *)bp)->extra = 'x'; -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.malloc region.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail17-frag.c b/libmudflap/testsuite/libmudflap.c/fail17-frag.c deleted file mode 100644 index 5af67f1..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail17-frag.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ - -char * x; -int foo; -x = (char *) malloc (10); -strcpy (x, "123456789"); -foo = strlen (x+10); -x [foo] = 1; /* we just just use foo to force execution of strlen */ -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.malloc region.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail18-frag.c b/libmudflap/testsuite/libmudflap.c/fail18-frag.c deleted file mode 100644 index a7b62dd..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail18-frag.c +++ /dev/null @@ -1,16 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -/* One cannot redeclare __mf_lc_mask in proper C from instrumented - code, because of the way the instrumentation code emits its decls. */ -extern unsigned foo __asm__ ("__mf_lc_mask"); -unsigned * volatile bar = &foo; -*bar = 4; -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.__mf_lc_mask.*no-access.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail19-frag.c b/libmudflap/testsuite/libmudflap.c/fail19-frag.c deleted file mode 100644 index 7e446b4..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail19-frag.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct foo { - int bar [10]; -}; - -struct foo *k = (struct foo *) malloc (2 * sizeof(int)); -k->bar[5] = 9; -free (k); -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.malloc region.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail2-frag.c b/libmudflap/testsuite/libmudflap.c/fail2-frag.c deleted file mode 100644 index 7672e60..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail2-frag.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -volatile int foo [10][10]; -foo[10][0] = 0; -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.main. foo.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail20-frag.c b/libmudflap/testsuite/libmudflap.c/fail20-frag.c deleted file mode 100644 index 0dd8bb7..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail20-frag.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -volatile char *p = (char *) 0; -*p = 5; -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.NULL.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail21-frag.c b/libmudflap/testsuite/libmudflap.c/fail21-frag.c deleted file mode 100644 index 4ab4a09..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail21-frag.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ - int *bar = (int *) malloc (sizeof (int)); -/* Make an access here to get &foo into the lookup cache. */ -*bar = 5; -__mf_watch (bar, sizeof(int)); -/* This access should trigger the watch violation. */ -*bar = 10; -/* NOTREACHED */ -return 0; -} -/* { dg-output "mudflap violation 1.*watch.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*malloc region.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail22-frag.c b/libmudflap/testsuite/libmudflap.c/fail22-frag.c deleted file mode 100644 index 7dd7103..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail22-frag.c +++ /dev/null @@ -1,17 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct boo { int a; }; -int c; -struct boo *b = malloc (sizeof (struct boo)); -__mf_set_options ("-check-initialization"); -c = b->a; -(void) malloc (c); /* some dummy use of c */ -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.malloc region.*1r/0w.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail23-frag.c b/libmudflap/testsuite/libmudflap.c/fail23-frag.c deleted file mode 100644 index bb1b52e..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail23-frag.c +++ /dev/null @@ -1,16 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -char zoo [10]; - -int main () -{ -int i = strlen ("012345") + strlen ("6789") + strlen ("01"); /* 11 */ -zoo[i] = 'a'; -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.*zoo.*static.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail25-frag.c b/libmudflap/testsuite/libmudflap.c/fail25-frag.c deleted file mode 100644 index acac523..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail25-frag.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char *foo; -char *bar; -__mf_set_options ("-check-initialization"); -foo = (char *)malloc (10); -bar = (char *)malloc (10); -/* bar[2] = 'z'; */ /* don't touch memcpy source */ -memcpy(foo+1, bar+1, 9); -return 0; -} -/* { dg-output "mudflap violation 1.*check.read.*memcpy source.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.*malloc region.*alloc time.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail26-frag.c b/libmudflap/testsuite/libmudflap.c/fail26-frag.c deleted file mode 100644 index 88484d6..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail26-frag.c +++ /dev/null @@ -1,24 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char *foo; - -__mf_set_options ("-check-initialization"); -foo = (char *)malloc (1); - -/* These two operations each expand to a read-modify-write. - * Even though the end result is that every bit of foo[0] is - * eventually written to deterministically, the first read - * triggers an uninit error. Ideally, it shouldn't, so this - * should be treated more like a regular XFAIL. */ -foo[0] &= 0xfe; -foo[0] |= 0x01; - -return foo[0]; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.*malloc region.*1r/0w.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail27-frag.c b/libmudflap/testsuite/libmudflap.c/fail27-frag.c deleted file mode 100644 index 547c5e7..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail27-frag.c +++ /dev/null @@ -1,24 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -char volatile * -__attribute__((noinline)) -foo (unsigned i) -{ - char volatile buffer[10]; - char volatile *k = i ? & buffer[i] : NULL; /* defeat addr-of-local-returned warning */ - return k; -} - -int main () -{ -char volatile *f = foo (5); -f[0] = 'b'; - -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap dead object.*buffer.*alloc.*dealloc" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail28-frag.c b/libmudflap/testsuite/libmudflap.c/fail28-frag.c deleted file mode 100644 index 7d61c57..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail28-frag.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -int foo (int *u, int i) -{ - return u[i]; /* this dereference should be instrumented */ -} - -int main () -{ -int *k = malloc (6); -return foo (k, 8); -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.*malloc region.*alloc" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail29-frag.c b/libmudflap/testsuite/libmudflap.c/fail29-frag.c deleted file mode 100644 index 2024064..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail29-frag.c +++ /dev/null @@ -1,17 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -int foo (int u[10]) -{ - return u[8]; /* this dereference should be instrumented */ -} - -int main () -{ -int *k = malloc (6); -return foo (k); -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.*malloc region.*alloc" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail3-frag.c b/libmudflap/testsuite/libmudflap.c/fail3-frag.c deleted file mode 100644 index 98c1dba..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail3-frag.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -volatile int foo [10][10][10]; -foo[9][10][0] = 0; -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.main. foo.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail30-frag.c b/libmudflap/testsuite/libmudflap.c/fail30-frag.c deleted file mode 100644 index 8bfea61..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail30-frag.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -int foo (int u) -{ - return u*u; -} - -int main () -{ -int *k = malloc(5); -int j = foo (k[8]); /* this call argument should be instrumented */ -return j; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.*malloc region.*alloc" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail31-frag.c b/libmudflap/testsuite/libmudflap.c/fail31-frag.c deleted file mode 100644 index 138c8cc..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail31-frag.c +++ /dev/null @@ -1,24 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -extern int h (int i, int j); - -int main () -{ - int z = h (4, 10); - return 0; -} -int *p; -__attribute__((noinline)) -int h (int i, int j) -{ - int k[i]; - k[j] = i; - p = k; - return j; -} - -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.*\(h\).*k" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail32-frag.c b/libmudflap/testsuite/libmudflap.c/fail32-frag.c deleted file mode 100644 index 2a38237..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail32-frag.c +++ /dev/null @@ -1,16 +0,0 @@ -void foo (int k) -{ - volatile int *b = & k; - b++; - *b = 5; -} - -int main () -{ - foo (5); - return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.*k" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail33-frag.c b/libmudflap/testsuite/libmudflap.c/fail33-frag.c deleted file mode 100644 index ac7c617..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail33-frag.c +++ /dev/null @@ -1,25 +0,0 @@ -#include <stdlib.h> - -#define SIZE 16 - -char b[SIZE]; -char a[SIZE]; - -int main () -{ - int i, j=0, k; - int a_before_b = (& a[0] < & b[0]); - /* Rather than iterating linearly, which would allow loop unrolling - and mapping to pointer manipulation, we traverse the "joined" - arrays in some random order. */ - for (i=0; i<SIZE*2; i++) - { - k = rand() % (SIZE*2); - j += (a_before_b ? a[k] : b[k]); - } - return j; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.*\[ab\]" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail34-frag.c b/libmudflap/testsuite/libmudflap.c/fail34-frag.c deleted file mode 100644 index f6572b0..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail34-frag.c +++ /dev/null @@ -1,22 +0,0 @@ -#include <stdlib.h> - -struct s -{ - int a1[4]; -}; - -struct s a, b; -int idx = 7; /* should pass to the next object */ - -int -main () -{ - int i, j=0; - int a_before_b = (& a < & b); - j = (a_before_b ? a.a1[idx] : b.a1[idx]); - return j; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.*\[ab\]" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail35-frag.c b/libmudflap/testsuite/libmudflap.c/fail35-frag.c deleted file mode 100644 index 101fe29..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail35-frag.c +++ /dev/null @@ -1,23 +0,0 @@ -#include <stdlib.h> - -struct k -{ - int p; - struct { - int m; - } q; -}; - -int -main () -{ - volatile struct k *l = malloc (sizeof (int)); /* make it only big enough for k.p */ - /* Confirm that we instrument this nested construct - COMPONENT_REF(COMPONENT_REF(INDIRECT_REF)). */ - l->q.m = 5; - return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail36-frag.c b/libmudflap/testsuite/libmudflap.c/fail36-frag.c deleted file mode 100644 index af6851c..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail36-frag.c +++ /dev/null @@ -1,23 +0,0 @@ -#include <stdlib.h> - -struct k -{ - int p; - struct { - int m : 31; - } q; -}; - -int -main () -{ - volatile struct k *l = malloc (sizeof (int)); /* make it only big enough for k.p */ - /* Confirm that we instrument this nested construct - BIT_FIELD_REF(COMPONENT_REF(INDIRECT_REF)). */ - l->q.m = 5; - return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail37-frag.c b/libmudflap/testsuite/libmudflap.c/fail37-frag.c deleted file mode 100644 index 38dbde5..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail37-frag.c +++ /dev/null @@ -1,26 +0,0 @@ -typedef struct -{ - short f : 3; -} small; - -struct -{ - int i; - small s[4]; -} x; - -main () -{ - int i; - for (i = 0; i < 5; i++) - { - /* Optimization barrier. Prevent gcc from seeing the undefined behavior. */ - __asm ("" : "+r" (i)); - x.s[i].f = 0; - } - exit (0); -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap object.* x.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail38-frag.c b/libmudflap/testsuite/libmudflap.c/fail38-frag.c deleted file mode 100644 index 9667e21..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail38-frag.c +++ /dev/null @@ -1,29 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct a { - int x; - int y; - int z : 10; -}; - -struct b { - int x; - int y; -}; - -volatile struct b k; -volatile struct a *p; - -p = (struct a*) &k; - -p->z = 'q'; - -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.main. k.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail39-frag.c b/libmudflap/testsuite/libmudflap.c/fail39-frag.c deleted file mode 100644 index 4e74ea5..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail39-frag.c +++ /dev/null @@ -1,20 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -int main () -{ - volatile int *k = (int *) malloc (sizeof (int)); - volatile int l; - if (k == NULL) abort (); - *k = 5; - free ((void *) k); - __mf_set_options ("-ignore-reads"); - l = *k; /* Should not trip, even though memory region just freed. */ - __mf_set_options ("-no-ignore-reads"); - l = *k; /* Should trip now. */ - return 0; -} -/* { dg-output "mudflap violation 1.*check/read.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap dead object.*malloc region.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail4-frag.c b/libmudflap/testsuite/libmudflap.c/fail4-frag.c deleted file mode 100644 index a3423e6..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail4-frag.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char foo [10]; -strcpy(foo, "1234567890"); -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.main. foo.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail40-frag.c b/libmudflap/testsuite/libmudflap.c/fail40-frag.c deleted file mode 100644 index fbeb6fd..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail40-frag.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Test proper lookup-uncaching of large objects */ -#include "../config.h" - -#include <unistd.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#ifdef HAVE_SYS_MMAN_H -#include <sys/mman.h> -#endif - -int main () -{ -#ifndef MAP_ANONYMOUS -#define MAP_ANONYMOUS MAP_ANON -#endif -#ifndef MAP_FAILED -#define MAP_FAILED ((void *)-1) -#endif -#ifdef HAVE_MMAP - volatile unsigned char *p; - unsigned num = getpagesize (); - unsigned i; - int rc; - - /* Get a bit of usable address space. We really want an 2**N+1-sized object, - so the low/high addresses wrap when hashed into the lookup cache. So we - will manually unregister the entire mmap, then re-register a slice. */ - p = mmap (NULL, num, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); - if (p == MAP_FAILED) - return 1; - /* Now unregister it, as if munmap was called. But don't actually munmap, so - we can write into the memory. */ - __mf_unregister ((void *) p, num, __MF_TYPE_HEAP_I); - - /* Now register it under a slightly inflated, 2**N+1 size. */ - __mf_register ((void *) p, num+1, __MF_TYPE_HEAP_I, "fake mmap registration"); - - /* Traverse array to ensure that entire lookup cache is made to point at it. */ - for (i=0; i<num; i++) - p[i] = 0; - - /* Unregister it. This should clear the entire lookup cache, even though - hash(low) == hash (high) (and probably == 0) */ - __mf_unregister ((void *) p, num+1, __MF_TYPE_HEAP_I); - - /* Now touch the middle portion of the ex-array. If the lookup cache was - well and truly cleaned, then this access should trap. */ - p[num/2] = 1; - - return 0; -#else - return 1; -#endif -} -/* { dg-output "mudflap violation 1.*check/write.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap dead object.*fake mmap registration.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail5-frag.c b/libmudflap/testsuite/libmudflap.c/fail5-frag.c deleted file mode 100644 index a08569f..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail5-frag.c +++ /dev/null @@ -1,14 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char foo [15]; -char bar [10]; -memcpy(foo, bar, 11); -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*.main. bar.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail6-frag.c b/libmudflap/testsuite/libmudflap.c/fail6-frag.c deleted file mode 100644 index 1904a88..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail6-frag.c +++ /dev/null @@ -1,17 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char *foo; -char *bar; -foo = (char *)malloc (10); -bar = (char *)malloc (15); - -memcpy(foo, bar, 11); -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*malloc region.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail68-frag.c b/libmudflap/testsuite/libmudflap.c/fail68-frag.c deleted file mode 100644 index 7b2f8cf..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail68-frag.c +++ /dev/null @@ -1,27 +0,0 @@ -/* PR libmudflap/40778 */ - -char p[32]; -static int j; - -__attribute__((noinline)) -static void foo (int i) -{ - if (j++ == 0) - p[i + 4] = 12; - else - p[i - 4] = 13; -} - -int -main () -{ - foo (30); - foo (30); - foo (30); - return 0; -} - -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*name.*p" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail7-frag.c b/libmudflap/testsuite/libmudflap.c/fail7-frag.c deleted file mode 100644 index 580d045..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail7-frag.c +++ /dev/null @@ -1,17 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char *foo; -char *bar; -foo = (char *)malloc (12); -bar = (char *)malloc (10); - -memcpy(foo+1, bar+1, 10); -return 0; -} -/* { dg-output "mudflap violation 1.*" } */ -/* { dg-output "Nearby object 1.*" } */ -/* { dg-output "mudflap object.*malloc region.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail8-frag.c b/libmudflap/testsuite/libmudflap.c/fail8-frag.c deleted file mode 100644 index 8309068..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail8-frag.c +++ /dev/null @@ -1,19 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char *foo; -char *bar; -foo = (char *)malloc (10); -bar = (char *)malloc (10); - -free(bar); - -memcpy(foo, bar, 10); -return 0; -} -/* { dg-output "mudflap violation 1.*memcpy source.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap dead object.*malloc region.*alloc time.*dealloc time.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/fail9-frag.c b/libmudflap/testsuite/libmudflap.c/fail9-frag.c deleted file mode 100644 index 9bbd860..0000000 --- a/libmudflap/testsuite/libmudflap.c/fail9-frag.c +++ /dev/null @@ -1,21 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char *foo; -char *bar; -foo = (char *)malloc (10); -bar = (char *)malloc (10); - -free(foo); - -bar[4] = 'a'; /* touch source buffer */ -memcpy(foo, bar, 10); -return 0; -} - -/* { dg-output "mudflap violation 1.*memcpy dest.*" } */ -/* { dg-output "Nearby object.*" } */ -/* { dg-output "mudflap dead object.*malloc region.*alloc time.*dealloc time.*" } */ -/* { dg-do run { xfail *-*-* } } */ diff --git a/libmudflap/testsuite/libmudflap.c/heap-scalestress.c b/libmudflap/testsuite/libmudflap.c/heap-scalestress.c deleted file mode 100644 index 6e7813b..0000000 --- a/libmudflap/testsuite/libmudflap.c/heap-scalestress.c +++ /dev/null @@ -1,79 +0,0 @@ -/* zz30 - * - * demonstrate a splay-tree depth problem -*/ - -#include <stdlib.h> -#include <stdio.h> -#include <unistd.h> - -#ifndef SCALE -#define SCALE 10000 -#endif - - -struct list -{ - struct list *next; -}; - - -int -main () -{ - struct list *head = NULL; - struct list *tail = NULL; - struct list *p; - long n; - int direction; - - for (direction = 0; direction < 2; direction++) - { - fprintf (stdout, "allocating\n"); - fflush (stdout); - - for (n = 0; n < SCALE; ++n) - { - p = malloc (sizeof *p); - if (NULL == p) - { - fprintf (stdout, "malloc failed\n"); - break; - } - if (direction == 0) - { /* add at tail */ - p->next = NULL; - if (NULL != tail) - tail->next = p; - else - head = p; - tail = p; - } - else - { /* add at head */ - p->next = head; - if (NULL == tail) - tail = p; - head = p; - } - } - - fprintf (stdout, "freeing\n"); - fflush (stdout); - - while (NULL != head) - { - p = head; - head = head->next; - free (p); - } - - } - - fprintf (stdout, "done\n"); - fflush (stdout); - - return (0); -} - -/* { dg-output "allocating.*freeing.*allocating.*freeing.*done" } */ diff --git a/libmudflap/testsuite/libmudflap.c/hook-allocstuff.c b/libmudflap/testsuite/libmudflap.c/hook-allocstuff.c deleted file mode 100644 index dc25375..0000000 --- a/libmudflap/testsuite/libmudflap.c/hook-allocstuff.c +++ /dev/null @@ -1,16 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -int main () -{ - char *foo = (char *) malloc (10); - strcpy (foo, "hello"); - foo = (char *) realloc (foo, 20); - printf ("%s", foo); - if (strcmp (foo, "hello")) - abort (); - free (foo); - printf (" world\n"); - return 0; -} -/* { dg-output "hello world" } */ diff --git a/libmudflap/testsuite/libmudflap.c/hook2-allocstuff.c b/libmudflap/testsuite/libmudflap.c/hook2-allocstuff.c deleted file mode 100644 index d8fbec4..0000000 --- a/libmudflap/testsuite/libmudflap.c/hook2-allocstuff.c +++ /dev/null @@ -1,9 +0,0 @@ -/* Generates recursive malloc call on i386-freebsd4.10 with -fmudflap. */ -#include <stdlib.h> - -int -main (void) -{ - char *p = malloc (1<<24); - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass-stratcliff.c b/libmudflap/testsuite/libmudflap.c/pass-stratcliff.c deleted file mode 100644 index cf54306..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass-stratcliff.c +++ /dev/null @@ -1,326 +0,0 @@ -/* Test for string function add boundaries of usable memory. - Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2011 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301 USA. */ - -#define _GNU_SOURCE 1 -#define __USE_GNU - -/* Make sure we don't test the optimized inline functions if we want to - test the real implementation. */ -#undef __USE_STRING_INLINES - -#include "../config.h" - -#include <errno.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> -#include <sys/mman.h> -#include <sys/param.h> - -#ifndef MAX -#define MAX(a, b) ((a) > (b) ? (a) : (b)) -#endif - -#ifndef MIN -#define MIN(a, b) ((a) < (b) ? (a) : (b)) -#endif - -int -main (int argc, char *argv[]) -{ - int size = sysconf (_SC_PAGESIZE); - char *adr, *dest; - int result = 0; - - adr = (char *) mmap (NULL, 3 * size, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANON, -1, 0); - dest = (char *) mmap (NULL, 3 * size, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANON, -1, 0); - if (adr == MAP_FAILED || dest == MAP_FAILED) - { - if (errno == ENOSYS) - puts ("No test, mmap not available."); - else - { - printf ("mmap failed: %m"); - result = 1; - } - } - else - { - int inner, middle, outer; - - mprotect(adr, size, PROT_NONE); - mprotect(adr + 2 * size, size, PROT_NONE); - adr += size; - - mprotect(dest, size, PROT_NONE); - mprotect(dest + 2 * size, size, PROT_NONE); - dest += size; - - memset (adr, 'T', size); - - /* strlen test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (inner = MAX (outer, size - 64); inner < size; ++inner) - { - adr[inner] = '\0'; - - if (strlen (&adr[outer]) != (size_t) (inner - outer)) - { - printf ("strlen flunked for outer = %d, inner = %d\n", - outer, inner); - result = 1; - } - - adr[inner] = 'T'; - } - } - - /* strchr test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (middle = MAX (outer, size - 64); middle < size; ++middle) - { - for (inner = middle; inner < size; ++inner) - { - char *cp; - adr[middle] = 'V'; - adr[inner] = '\0'; - - cp = strchr (&adr[outer], 'V'); - - if ((inner == middle && cp != NULL) - || (inner != middle - && (cp - &adr[outer]) != middle - outer)) - { - printf ("strchr flunked for outer = %d, middle = %d, " - "inner = %d\n", outer, middle, inner); - result = 1; - } - - adr[inner] = 'T'; - adr[middle] = 'T'; - } - } - } - - /* Special test. */ - adr[size - 1] = '\0'; - if (strchr (&adr[size - 1], '\n') != NULL) - { - puts ("strchr flunked for test of empty string at end of page"); - result = 1; - } - - /* strrchr test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (middle = MAX (outer, size - 64); middle < size; ++middle) - { - for (inner = middle; inner < size; ++inner) - { - char *cp; - adr[middle] = 'V'; - adr[inner] = '\0'; - - cp = strrchr (&adr[outer], 'V'); - - if ((inner == middle && cp != NULL) - || (inner != middle - && (cp - &adr[outer]) != middle - outer)) - { - printf ("strrchr flunked for outer = %d, middle = %d, " - "inner = %d\n", outer, middle, inner); - result = 1; - } - - adr[inner] = 'T'; - adr[middle] = 'T'; - } - } - } - -#ifdef HAVE_RAWMEMCHR - /* rawmemchr test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (middle = MAX (outer, size - 64); middle < size; ++middle) - { - char *cp; - adr[middle] = 'V'; - - cp = (char *) rawmemchr (&adr[outer], 'V'); - - if (cp - &adr[outer] != middle - outer) - { - printf ("rawmemchr flunked for outer = %d, middle = %d\n", - outer, middle); - result = 1; - } - - adr[middle] = 'T'; - } - } -#endif - - /* strcpy test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (inner = MAX (outer, size - 64); inner < size; ++inner) - { - adr[inner] = '\0'; - - if (strcpy (dest, &adr[outer]) != dest - || strlen (dest) != (size_t) (inner - outer)) - { - printf ("strcpy flunked for outer = %d, inner = %d\n", - outer, inner); - result = 1; - } - - adr[inner] = 'T'; - } - } - - /* strncpy tests */ - adr[size-1] = 'T'; - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - size_t len; - - for (len = 0; len < size - outer; ++len) - { - if (strncpy (dest, &adr[outer], len) != dest - || memcmp (dest, &adr[outer], len) != 0) - { - printf ("outer strncpy flunked for outer = %d, len = %Zd\n", - outer, len); - result = 1; - } - } - } - adr[size-1] = '\0'; - - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (inner = MAX (outer, size - 64); inner < size; ++inner) - { - size_t len; - - adr[inner] = '\0'; - - for (len = 0; len < size - outer + 64; ++len) - { - if (strncpy (dest, &adr[outer], len) != dest - || memcmp (dest, &adr[outer], - MIN (inner - outer, len)) != 0 - || (inner - outer < len - && strlen (dest) != (inner - outer))) - { - printf ("strncpy flunked for outer = %d, inner = %d, len = %Zd\n", - outer, inner, len); - result = 1; - } - if (strncpy (dest + 1, &adr[outer], len) != dest + 1 - || memcmp (dest + 1, &adr[outer], - MIN (inner - outer, len)) != 0 - || (inner - outer < len - && strlen (dest + 1) != (inner - outer))) - { - printf ("strncpy+1 flunked for outer = %d, inner = %d, len = %Zd\n", - outer, inner, len); - result = 1; - } - } - - adr[inner] = 'T'; - } - } - -#ifdef HAVE_STPCPY - /* stpcpy test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (inner = MAX (outer, size - 64); inner < size; ++inner) - { - adr[inner] = '\0'; - - if ((stpcpy (dest, &adr[outer]) - dest) != inner - outer) - { - printf ("stpcpy flunked for outer = %d, inner = %d\n", - outer, inner); - result = 1; - } - - adr[inner] = 'T'; - } - } - - /* stpncpy test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - { - for (middle = MAX (outer, size - 64); middle < size; ++middle) - { - adr[middle] = '\0'; - - for (inner = 0; inner < size - outer; ++ inner) - { - if ((stpncpy (dest, &adr[outer], inner) - dest) - != MIN (inner, middle - outer)) - { - printf ("stpncpy flunked for outer = %d, middle = %d, " - "inner = %d\n", outer, middle, inner); - result = 1; - } - } - - adr[middle] = 'T'; - } - } -#endif - - /* memcpy test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - for (inner = 0; inner < size - outer; ++inner) - if (memcpy (dest, &adr[outer], inner) != dest) - { - printf ("memcpy flunked for outer = %d, inner = %d\n", - outer, inner); - result = 1; - } - -#ifdef HAVE_MEMPCPY - /* mempcpy test */ - for (outer = size - 1; outer >= MAX (0, size - 128); --outer) - for (inner = 0; inner < size - outer; ++inner) - if (mempcpy (dest, &adr[outer], inner) != dest + inner) - { - printf ("mempcpy flunked for outer = %d, inner = %d\n", - outer, inner); - result = 1; - } -#endif - } - - return result; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass1-frag.c b/libmudflap/testsuite/libmudflap.c/pass1-frag.c deleted file mode 100644 index 40f629b..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass1-frag.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -int foo [10]; -foo[9] = 0; -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass10-frag.c b/libmudflap/testsuite/libmudflap.c/pass10-frag.c deleted file mode 100644 index f05650d..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass10-frag.c +++ /dev/null @@ -1,12 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -int foo[10]; -int sz = sizeof (int); - -char *bar = (char *)foo; -bar [sz * 9] = 0; -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass11-frag.c b/libmudflap/testsuite/libmudflap.c/pass11-frag.c deleted file mode 100644 index ab7ee38..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass11-frag.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -int i = 10; -char *x = (char *) malloc (i * sizeof (char)); - -while (--i) -{ - ++x; - *x = 0; -} -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass12-frag.c b/libmudflap/testsuite/libmudflap.c/pass12-frag.c deleted file mode 100644 index 53630d9..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass12-frag.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -int i = 10; -int *x = (int *) malloc (i * sizeof (int)); - -while (--i) -{ - ++x; - *x = 0; -} -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass13-frag.c b/libmudflap/testsuite/libmudflap.c/pass13-frag.c deleted file mode 100644 index c2b820d..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass13-frag.c +++ /dev/null @@ -1,17 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct a { - int x; - int y; - char z; -}; - -struct a k; - -k.z = 'q'; - -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass14-frag.c b/libmudflap/testsuite/libmudflap.c/pass14-frag.c deleted file mode 100644 index 2645643..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass14-frag.c +++ /dev/null @@ -1,20 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct a { - int x; - int y; - char z; -}; - -struct a k; -struct a *p; - -p = &k; - -p->z = 'q'; - -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass15-frag.c b/libmudflap/testsuite/libmudflap.c/pass15-frag.c deleted file mode 100644 index 5e1fee8..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass15-frag.c +++ /dev/null @@ -1,23 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct base { - int basic; -}; - -struct derived { - struct base common; - char extra; -}; - -struct derived d; -struct base *bp; - -bp = (struct base *)&d; - -bp->basic = 10; -((struct derived *)bp)->extra = 'x'; -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass16-frag.c b/libmudflap/testsuite/libmudflap.c/pass16-frag.c deleted file mode 100644 index 99ede3f..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass16-frag.c +++ /dev/null @@ -1,22 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct base { - int basic; -}; - -struct derived { - struct base common; - char extra; -}; - -struct base *bp; - -bp = (struct base *) malloc (sizeof (struct derived)); - -bp->basic = 10; -((struct derived *)bp)->extra = 'x'; -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass17-frag.c b/libmudflap/testsuite/libmudflap.c/pass17-frag.c deleted file mode 100644 index b840dc9..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass17-frag.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ - -strlen("123456789"); -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass18-frag.c b/libmudflap/testsuite/libmudflap.c/pass18-frag.c deleted file mode 100644 index c5d5af0..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass18-frag.c +++ /dev/null @@ -1,27 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -int t; -char foo[3] = { 'b', 'c', 'd' }; -int bar[3] = {1, 2, 0}; -t = 1; - -/* These tests check expression evaluation rules, such as - ensuring that side-effect expression (++) get executed the - right number of times; that array lookup checks nest correctly. */ -foo[t++] = 'a'; -if (foo[0] != 'b' || foo[1] != 'a' || foo[2] != 'd' || t != 2) abort (); -if (bar[0] != 1 || bar[1] != 2 || bar[2] != 0) abort(); - -foo[bar[t--]] = 'e'; -if (foo[0] != 'e' || foo[1] != 'a' || foo[2] != 'd' || t != 1) abort (); -if (bar[0] != 1 || bar[1] != 2 || bar[2] != 0) abort(); - -foo[bar[++t]--] = 'g'; -if (foo[0] != 'g' || foo[1] != 'a' || foo[2] != 'd' || t != 2) abort (); -if (bar[0] != 1 || bar[1] != 2 || bar[2] != -1) abort(); - -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass19-frag.c b/libmudflap/testsuite/libmudflap.c/pass19-frag.c deleted file mode 100644 index 0b00845..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass19-frag.c +++ /dev/null @@ -1,11 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct foo {int base; char variable[1]; }; /* a common idiom for variable-size structs */ - -struct foo * b = (struct foo *) malloc (sizeof (int)); /* enough for base */ -b->base = 4; -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass2-frag.c b/libmudflap/testsuite/libmudflap.c/pass2-frag.c deleted file mode 100644 index 7e71e0c..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass2-frag.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -int foo [10][10]; -foo[9][0] = 0; -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass20-frag.c b/libmudflap/testsuite/libmudflap.c/pass20-frag.c deleted file mode 100644 index 9843116..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass20-frag.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct bar {int stuff; int array[10]; }; - -struct bar *foo = (struct bar *) malloc (sizeof (struct bar)); -foo->array[5] = 4; -free (foo); - -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass21-frag.c b/libmudflap/testsuite/libmudflap.c/pass21-frag.c deleted file mode 100644 index 231055a..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass21-frag.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#ifndef __FreeBSD__ -#include <alloca.h> -#endif -int main () -{ -char *boo, *foo; -boo = (char *) alloca (100); -boo[99] = 'a'; -foo = (char *) __builtin_alloca (200); -foo[44] = 'b'; -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass22-frag.c b/libmudflap/testsuite/libmudflap.c/pass22-frag.c deleted file mode 100644 index b092ea0..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass22-frag.c +++ /dev/null @@ -1,23 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct foo { - unsigned base:8; - unsigned flag1:1; - unsigned flag2:3; - unsigned flag3:4; - char nothing[0]; -}; - -#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *) 0)->MEMBER) - -struct foo* f = (struct foo *) malloc (offsetof (struct foo, nothing)); -f->base = 1; -f->flag1 = 1; -free (f); - - -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass23-frag.c b/libmudflap/testsuite/libmudflap.c/pass23-frag.c deleted file mode 100644 index f27c223..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass23-frag.c +++ /dev/null @@ -1,29 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct foo { - int part1: 8; - int nothing : 1; - int part2 : 5; - int lots_more_nothing : 3; - int some_padding; /* for 64-bit hosts */ - float some_more_nothing; - double yet_more_nothing; -}; - -#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *) 0)->MEMBER) - -struct foo* q = (struct foo *) malloc (offsetof (struct foo, some_more_nothing)); -q->nothing = 1; /* touch q */ -/* The RHS of the following expression is meant to trigger a - fold-const.c mapping the expression to a BIT_FIELD_REF. It glues - together the accesses to the two non-neighbouring bitfields into a - single bigger boolean test. */ -q->lots_more_nothing = (q->part1 == 13 && q->part2 == 7); -free (q); - - -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass24-frag.c b/libmudflap/testsuite/libmudflap.c/pass24-frag.c deleted file mode 100644 index 0038582..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass24-frag.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct foo { - int zoo; - int bar [10]; - float baz; -}; - -#define offsetof(S,F) ((size_t) & (((S *) 0)->F)) - -struct foo *k = (struct foo *) malloc (offsetof (struct foo, bar[4])); -k->bar[1] = 9; -free (k); -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass25-frag.c b/libmudflap/testsuite/libmudflap.c/pass25-frag.c deleted file mode 100644 index c5a75e3..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass25-frag.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -int *foo = malloc (10 * sizeof(int)); -int *bar = & foo[3]; -/* Watching occurs at the object granularity, which is in this case - the entire array. */ -__mf_watch (& foo[1], sizeof(foo[1])); -__mf_unwatch (& foo[6], sizeof(foo[6])); -*bar = 10; -free (foo); -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass26-frag.c b/libmudflap/testsuite/libmudflap.c/pass26-frag.c deleted file mode 100644 index 5a72f5b..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass26-frag.c +++ /dev/null @@ -1,52 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -volatile int *p; - -__mf_set_options ("-wipe-stack -no-check-initialization"); - -{ - volatile int array [10]; - p = & array[0]; - - array[0] = 2; - array[9] = 5; - - /* Array[] should be wiped clean at this point. */ -} - -__mf_set_options ("-no-wipe-stack"); - -{ - volatile int array2[10]; - - /* hope that this is allocated on top of old array[] */ - if (p != & array2[0]) - exit (0); /* Test is not applicable. */ - - array2[5] = 6; - - /* Old values shouldn't still be around; the new one should. */ - if (p[0] == 2 || p[9] == 5 || p[5] != 6) - abort() ; - - /* array2[] should not be wiped at this point! */ -} - -{ - volatile int array3[10]; - - /* hope that this is allocated on top of old array[] and array2[]*/ - if (p != & array3[0]) - exit (0); /* Test is not applicable. */ - - array3[1] = 2; - - /* Check that old assignment is still around. */ - if (p[5] != 6 || p[1] != 2) - abort() ; -} -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass29-frag.c b/libmudflap/testsuite/libmudflap.c/pass29-frag.c deleted file mode 100644 index 97bed6e..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass29-frag.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -struct boo { int a; }; -int c; -struct boo *b = malloc (sizeof (struct boo)); -__mf_set_options ("-check-initialization"); -b->a = 0; -/* That __mf_set_options call could be here instead. */ -c = b->a; -(void) malloc (c); /* some dummy use of c */ -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass3-frag.c b/libmudflap/testsuite/libmudflap.c/pass3-frag.c deleted file mode 100644 index 4e950a2..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass3-frag.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -int foo [10][10][10]; -foo[9][9][0] = 0; -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass30-frag.c b/libmudflap/testsuite/libmudflap.c/pass30-frag.c deleted file mode 100644 index 6c4b9f9..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass30-frag.c +++ /dev/null @@ -1,12 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -char zoo [10]; - -int main () -{ -int i = strlen ("eight") + strlen ("one"); -zoo[i] = 'a'; -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass32-frag.c b/libmudflap/testsuite/libmudflap.c/pass32-frag.c deleted file mode 100644 index d7f2232..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass32-frag.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -struct foo { char z[10]; }; - -char * get_z (struct foo *this) -{ - return & this->z[0] /* the `this' pointer is not dereferenced! */; -} - -int main () -{ -struct foo k; -char *n = get_z (& k); -srand ((int)(__mf_uintptr_t) n); /* use the pointer value */ -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass33-frag.c b/libmudflap/testsuite/libmudflap.c/pass33-frag.c deleted file mode 100644 index 95d762c..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass33-frag.c +++ /dev/null @@ -1,17 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -void test (int *k) -{ - if (*k > 5) { *k --; } -} - -int main () -{ -int z; -/* z is initialized, but not via a pointer, so not instrumented */ -z = rand (); -test (& z); -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass34-frag.c b/libmudflap/testsuite/libmudflap.c/pass34-frag.c deleted file mode 100644 index 2dfd0ca..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass34-frag.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -void test (int *k) -{ - if (*k > 5) { *k --; } -} - -int z; - -int main () -{ -/* z is initialized, but not via a pointer, so not instrumented */ -z = rand (); -test (& z); -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass35-frag.c b/libmudflap/testsuite/libmudflap.c/pass35-frag.c deleted file mode 100644 index 14d2c94..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass35-frag.c +++ /dev/null @@ -1,14 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -extern char end []; /* Any old symbol we're sure will be defined. */ -/* { dg-warning "cannot track unknown size extern" "cannot track unknown size extern" { target *-*-* } 0 } */ - -int main () -{ -/* dummy register */ -__mf_register ((void *) end, 1, __MF_TYPE_GUESS, "end"); -char z = end[0]; -return z & 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass36-frag.c b/libmudflap/testsuite/libmudflap.c/pass36-frag.c deleted file mode 100644 index 68d1a7f..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass36-frag.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <signal.h> - -int main () -{ -char *k; -__mf_set_options ("-sigusr1-report -print-leaks"); -k = (char *) malloc (100); -raise (SIGUSR1); -free (k); -return 0; -} -/* { dg-output "Leaked object.*name=.malloc region.*objects: 1" } */ diff --git a/libmudflap/testsuite/libmudflap.c/pass38-frag.c b/libmudflap/testsuite/libmudflap.c/pass38-frag.c deleted file mode 100644 index a250234..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass38-frag.c +++ /dev/null @@ -1,9 +0,0 @@ -/* Test an odd construct for compilability. */ -static void *fwd; -void *bwd = &fwd; -static void *fwd = &bwd; - -int main () -{ - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass4-frag.c b/libmudflap/testsuite/libmudflap.c/pass4-frag.c deleted file mode 100644 index 0a40d1c..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass4-frag.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char foo[10]; -strcpy (foo, "123456789"); -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass42-frag.c b/libmudflap/testsuite/libmudflap.c/pass42-frag.c deleted file mode 100644 index 1045c47..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass42-frag.c +++ /dev/null @@ -1,17 +0,0 @@ -#include <stdio.h> - -void -foo () -{ - putc ('h', stdout); - putc ('i', stdout); - putc ('\n', stdout); -} - -int -main (int argc, char *argv[]) -{ - foo (); - return 0; -} -/* { dg-output "hi" } */ diff --git a/libmudflap/testsuite/libmudflap.c/pass43-frag.c b/libmudflap/testsuite/libmudflap.c/pass43-frag.c deleted file mode 100644 index 4fec330..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass43-frag.c +++ /dev/null @@ -1,11 +0,0 @@ -void -foo () -{ -} - -int -main (int argc, char *argv[]) -{ - foo (); - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass44-frag.c b/libmudflap/testsuite/libmudflap.c/pass44-frag.c deleted file mode 100644 index 338d6da..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass44-frag.c +++ /dev/null @@ -1,14 +0,0 @@ -#include <stdio.h> - -void -foo () -{ - return; /* accept value-less return statement */ -} - -int -main (int argc, char *argv[]) -{ - foo (); - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass45-frag.c b/libmudflap/testsuite/libmudflap.c/pass45-frag.c deleted file mode 100644 index c6bfeb5..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass45-frag.c +++ /dev/null @@ -1,31 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -extern void h (const char *p, const char *f); -int -main (void) -{ - h (0, "foo"); - return 0; -} - -void -h (const char *p, const char *f) -{ - size_t pl = p == NULL ? 0 : strlen (p); - size_t fl = strlen (f) + 1; - char a[pl + 1 + fl]; - char *cp = a; - char b[pl + 5 + fl * 2]; - char *cccp = b; - if (p != NULL) - { - cp = memcpy (cp, p, pl); - *cp++ = ':'; - } - memcpy (cp, f, fl); - strcpy (b, a); - puts (a); -} -/* { dg-output "foo" } */ diff --git a/libmudflap/testsuite/libmudflap.c/pass46-frag.c b/libmudflap/testsuite/libmudflap.c/pass46-frag.c deleted file mode 100644 index 904868a..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass46-frag.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -int foo (int *u, int i) -{ - return u[i]; /* this dereference should not be instrumented */ -} - -int main () -{ - int *k = malloc (6); - int l = foo (k, 8); - int boo [8]; - int m = boo [l % 2 + 12]; /* should not be instrumented */ - return m & strlen (""); /* a fancy way of saying "0" */ -} -/* { dg-options "-fmudflap -fmudflapir -lmudflap" } */ diff --git a/libmudflap/testsuite/libmudflap.c/pass47-frag.c b/libmudflap/testsuite/libmudflap.c/pass47-frag.c deleted file mode 100644 index 7117582..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass47-frag.c +++ /dev/null @@ -1,12 +0,0 @@ -#include <stdlib.h> -#include <ctype.h> - -int main () -{ - char* buf = "hello"; - return ! ((toupper (buf[0]) == 'H' && toupper ('z') == 'Z' && - tolower (buf[4]) == 'o' && tolower ('X') == 'x' && - isdigit (buf[3])) == 0 && isalnum ('4')); -} - -/* { dg-warning "cannot track unknown size extern .__ctype." "Solaris __ctype declared without size" { target *-*-solaris2.* } 0 } */ diff --git a/libmudflap/testsuite/libmudflap.c/pass48-frag.c b/libmudflap/testsuite/libmudflap.c/pass48-frag.c deleted file mode 100644 index 3059762..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass48-frag.c +++ /dev/null @@ -1,11 +0,0 @@ -void foo (int k) -{ - volatile int *b = & k; - *b = 5; -} - -int main () -{ - foo (5); - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass49-frag.c b/libmudflap/testsuite/libmudflap.c/pass49-frag.c deleted file mode 100644 index db74530..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass49-frag.c +++ /dev/null @@ -1,35 +0,0 @@ -#include <stdlib.h> -#include <ctype.h> -#include <stdarg.h> - -int foo (int a, ...) -{ - va_list args; - char *a1; - int a2; - int k; - - va_start (args, a); - for (k = 0; k < a; k++) - { - if ((k % 2) == 0) - { - char *b = va_arg (args, char *); - printf ("%s", b); - } - else - { - int b = va_arg (args, int); - printf ("%d", b); - } - } - va_end (args); - return a; -} - -int main () -{ - foo (7, "hello ", 5, " ", 3, " world ", 9, "\n"); - return 0; -} -/* { dg-output "hello 5 3 world 9" } */ diff --git a/libmudflap/testsuite/libmudflap.c/pass5-frag.c b/libmudflap/testsuite/libmudflap.c/pass5-frag.c deleted file mode 100644 index 6d3408a..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass5-frag.c +++ /dev/null @@ -1,11 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char foo [10]; -char bar [10]; -bar[4] = 'k'; /* touch memcpy source */ -memcpy(foo, bar, 10); -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass50-frag.c b/libmudflap/testsuite/libmudflap.c/pass50-frag.c deleted file mode 100644 index ac9ee09..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass50-frag.c +++ /dev/null @@ -1,29 +0,0 @@ -#include <stdlib.h> - -struct a -{ - int a1[5]; - union - { - int b1[5]; - struct - { - int c1; - int c2; - } b2[4]; - } a2[8]; -}; - -int i1 = 5; -int i2 = 2; -int i3 = 6; -int i4 = 0; - -int -main () -{ - volatile struct a *k = calloc (1, sizeof (struct a)); - k->a2[i1].b1[i2] = k->a2[i3].b2[i4].c2; - free ((void *) k); - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass51-frag.c b/libmudflap/testsuite/libmudflap.c/pass51-frag.c deleted file mode 100644 index 2780ffd..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass51-frag.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Test object-spanning accesses. This is most conveniently done with - mmap, thus the config.h specificity here. */ -#include "../config.h" - -#include <unistd.h> -#include <string.h> -#ifdef HAVE_SYS_MMAN_H -#include <sys/mman.h> -#endif - -int main () -{ -#ifndef MAP_ANONYMOUS -#define MAP_ANONYMOUS MAP_ANON -#endif -#ifndef MAP_FAILED -#define MAP_FAILED ((void *)-1) -#endif -#ifdef HAVE_MMAP - void *p; - unsigned pg = getpagesize (); - int rc; - - p = mmap (NULL, 4 * pg, PROT_READ|PROT_WRITE, - MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); - if (p == MAP_FAILED) - return 1; - - memset (p, 0, 4*pg); - rc = munmap (p, pg); - if (rc < 0) return 1; - memset (p+pg, 0, 3*pg); - rc = munmap (p+pg, pg); - if (rc < 0) return 1; - memset (p+2*pg, 0, 2*pg); - rc = munmap (p+2*pg, pg); - if (rc < 0) return 1; - memset (p+3*pg, 0, pg); - rc = munmap (p+3*pg, pg); - if (rc < 0) return 1; -#endif - - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass52-frag.c b/libmudflap/testsuite/libmudflap.c/pass52-frag.c deleted file mode 100644 index 7ff9d57..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass52-frag.c +++ /dev/null @@ -1,36 +0,0 @@ -#include <stdio.h> - - -void writestuff (FILE *f) -{ - fprintf (f, "hello world\n"); - fputc ('y', f); - putc ('e', f); -} - -void readstuff (FILE *f) -{ - int c, d; - char stuff[100], *s; - c = fgetc (f); - ungetc (c, f); - d = fgetc (f); - s = fgets (stuff, sizeof(stuff), f); -} - -int main () -{ - FILE *f; - writestuff (stdout); - writestuff (stderr); - f = fopen ("/dev/null", "w"); - writestuff (f); - fclose (f); - f = fopen ("/dev/zero", "r"); - readstuff (f); - f = freopen ("/dev/null", "w", f); - writestuff (f); - fclose (f); - - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass53-frag.c b/libmudflap/testsuite/libmudflap.c/pass53-frag.c deleted file mode 100644 index 6afb293..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass53-frag.c +++ /dev/null @@ -1,41 +0,0 @@ -int foo1 () -{ - union { int l; char c[sizeof (int)]; } k1; - char *m; - k1.l = 0; - /* This test variant triggers ADDR_EXPR of k explicitly in order to - ensure it's registered with the runtime. */ - m = k1.c; - k1.c [sizeof (int)-1] = m[sizeof (int)-2]; -} - -int foo2 () -{ - union { int l; char c[sizeof (int)]; } k2; - k2.l = 0; - /* Since this access is known-in-range, k need not be registered - with the runtime, but then this access better not be instrumented - either. */ - k2.c [sizeof (int)-1] ++; - return k2.l; -} - -int foo3idx = sizeof (int)-1; - -int foo3 () -{ - union { int l; char c[sizeof (int)]; } k3; - k3.l = 0; - /* NB this test uses foo3idx, an extern variable, to defeat mudflap - known-in-range-index optimizations. */ - k3.c [foo3idx] ++; - return k3.l; -} - -int main () -{ - foo1 (); - foo2 (); - foo3 (); - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass54-frag.c b/libmudflap/testsuite/libmudflap.c/pass54-frag.c deleted file mode 100644 index 5eebb45..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass54-frag.c +++ /dev/null @@ -1,34 +0,0 @@ -struct k -{ - struct { - int b; - int c; - } a; -}; - -static struct k l; -static struct k m; - -void foo () -{ - /* This should not be instrumented. */ - l.a.b = 5; -} - -void bar () -{ - /* This should not be instrumented. */ - m.a.b = 5; -} - -int main () -{ - /* Force TREE_ADDRESSABLE on "l" only. */ - volatile int *k = & l.a.c; - *k = 8; - __mf_set_options ("-mode-violate"); - foo (); - bar (); - __mf_set_options ("-mode-check"); - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass56-frag.c b/libmudflap/testsuite/libmudflap.c/pass56-frag.c deleted file mode 100644 index e22fc8d..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass56-frag.c +++ /dev/null @@ -1,14 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -int main () -{ - volatile int *k = (int *) malloc (sizeof (int)); - volatile int l; - if (k == NULL) abort (); - *k = 5; - free ((void *) k); - __mf_set_options ("-ignore-reads"); - l = *k; /* Should not trip, even though memory region just freed. */ - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass6-frag.c b/libmudflap/testsuite/libmudflap.c/pass6-frag.c deleted file mode 100644 index 9b07fe2..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass6-frag.c +++ /dev/null @@ -1,14 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char *foo; -char *bar; - -foo = (char *)malloc (10); -bar = (char *)malloc (10); -bar[2] = 'z'; /* touch memcpy source */ -memcpy(foo, bar, 10); -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass62-frag.c b/libmudflap/testsuite/libmudflap.c/pass62-frag.c deleted file mode 100644 index 8e64b2b..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass62-frag.c +++ /dev/null @@ -1,13 +0,0 @@ -/* PR tree-optimization/34618 */ -/* { dg-do compile } */ -/* { dg-options "-O3 -fmudflap" } */ - -int a[16]; - -void -foo () -{ - int i; - for (i = 0; i < 16; i++) - a[i] = i; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass63-frag.c b/libmudflap/testsuite/libmudflap.c/pass63-frag.c deleted file mode 100644 index a5ad8f2..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass63-frag.c +++ /dev/null @@ -1,6 +0,0 @@ -/* Check -Wno-mudflap flag */ -/* { dg-do compile } */ -/* { dg-options "-fmudflap -Wno-mudflap" } */ - -extern char x[]; -int main() { return x[3]; } /* { dg-bogus "mudflap cannot track" } */ diff --git a/libmudflap/testsuite/libmudflap.c/pass64-frag.c b/libmudflap/testsuite/libmudflap.c/pass64-frag.c deleted file mode 100644 index 856eec0f..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass64-frag.c +++ /dev/null @@ -1,38 +0,0 @@ -/* PR libmudflap/36397 */ -/* { dg-do run } */ -/* { dg-options "-O -fmudflap -fno-strict-aliasing -lmudflap" } */ - -struct A -{ - int a[2]; -}; - -long long int x; - -int __attribute__ ((noinline)) -baz (long long int *x) -{ - return *x; -} - -int __attribute__ ((noinline)) -foo (int i) -{ - if (i > 10) - return baz (&x); - return ((struct A *) &x)->a[i]; -} - -int -main (void) -{ - if (sizeof (long long) == 2 * sizeof (int) - && sizeof (long long) == sizeof (struct A)) - { - struct A a = { .a[0] = 10, .a[1] = 20 }; - __builtin_memcpy (&x, &a, sizeof (x)); - if (foo (0) != 10 || foo (1) != 20) - __builtin_abort (); - } - return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass67-frag.c b/libmudflap/testsuite/libmudflap.c/pass67-frag.c deleted file mode 100644 index 0c2f81a..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass67-frag.c +++ /dev/null @@ -1,14 +0,0 @@ -/* PR middle-end/35314 */ -/* { dg-do compile } */ -/* { dg-options "-fmudflap" } */ - -#include <setjmp.h> - -jmp_buf buf; - -void -foo (volatile char *p) -{ - if (__builtin_setjmp (buf)) - *p; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass7-frag.c b/libmudflap/testsuite/libmudflap.c/pass7-frag.c deleted file mode 100644 index 3619733..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass7-frag.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char *foo; -char *bar; -foo = (char *)malloc (10); -bar = (char *)malloc (10); -bar[2] = 'z'; /* touch memcpy source */ -memcpy(foo+1, bar+1, 9); -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass8-frag.c b/libmudflap/testsuite/libmudflap.c/pass8-frag.c deleted file mode 100644 index 6be4e93..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass8-frag.c +++ /dev/null @@ -1,16 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char *foo; -char *bar; -foo = (char *)malloc (10); -bar = (char *)malloc (10); - -free(bar); -bar = (char *)malloc (10); -bar[6] = 'k'; /* touch memcpy source */ -memcpy(foo, bar, 10); -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.c/pass9-frag.c b/libmudflap/testsuite/libmudflap.c/pass9-frag.c deleted file mode 100644 index 9186e06..0000000 --- a/libmudflap/testsuite/libmudflap.c/pass9-frag.c +++ /dev/null @@ -1,16 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -int main () -{ -char *foo; -char *bar; -foo = (char *)malloc (10); -bar = (char *)malloc (10); - -free(foo); -foo = (char *)malloc (10); -bar[3] = 'w'; /* touch memcpy source */ -memcpy(foo, bar, 10); -return 0; -} diff --git a/libmudflap/testsuite/libmudflap.cth/cthfrags.exp b/libmudflap/testsuite/libmudflap.cth/cthfrags.exp deleted file mode 100644 index 75d4447..0000000 --- a/libmudflap/testsuite/libmudflap.cth/cthfrags.exp +++ /dev/null @@ -1,30 +0,0 @@ -global MUDFLAP_FLAGS -set MUDFLAP_FLAGS [list {-O0} {-static -DSTATIC} {-O2} {-O3}] - -libmudflap-init c - -dg-init - -global srcdir -foreach flags $MUDFLAP_FLAGS { - foreach srcfile [lsort [glob -nocomplain ${srcdir}/libmudflap.cth/*.c]] { - set bsrc [file tail $srcfile] - setenv MUDFLAP_OPTIONS "-viol-segv" - if {$libmudflapth} then { - if [check_effective_target_gld] { - # --noinhibit-exec works around a ld problem that causes - # "Dwarf Error: Invalid or unhandled FORM value: 14" - # to fail builds unnecessarily. - set noie_option " -Wl,--noinhibit-exec" - } else { - set noie_option "" - } - dg-runtest $srcfile $flags "-fmudflapth -lmudflapth -lpthread $noie_option" - } else { - if {$flags != ""} {set f " ($flags)"} {set f ""} - untested "libmudflap.cth/$bsrc$f" - } - } -} - -dg-finish diff --git a/libmudflap/testsuite/libmudflap.cth/pass37-frag.c b/libmudflap/testsuite/libmudflap.cth/pass37-frag.c deleted file mode 100644 index 877803c..0000000 --- a/libmudflap/testsuite/libmudflap.cth/pass37-frag.c +++ /dev/null @@ -1,58 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <pthread.h> -#include <sched.h> - -static void * -func (void *p) -{ - int *counter = (int *) p; - unsigned i; - - for (i=0; i<100; i++) - { - (*counter) ++; - { - int array[17]; - unsigned x = i % (sizeof(array)/sizeof(array[0])); - /* VRP could prove that x is within [0,16], but until then, the - following access will ensure that array[] is registered to - libmudflap. */ - array[x] = i; - } - sched_yield (); /* sleep (1); */ - } - - return (NULL); -} - - -int main () -{ - int rc; - unsigned i; - enum foo { NT=10 }; - pthread_t threads[NT]; - int counts[NT]; - - - for (i=0; i<NT; i++) - { - counts[i] = 0; - rc = pthread_create (& threads[i], NULL, func, (void *) & counts[i]); - if (rc) abort(); - } - - for (i=0; i<NT; i++) - { - rc = pthread_join (threads[i], NULL); - if (rc) abort(); - printf ("%d%s", counts[i], (i==NT-1) ? "\n" : " "); - } - - return 0; -} - -/* { dg-output "100 100 100 100 100 100 100 100 100 100" } */ -/* { dg-repetitions 20 } */ -/* { dg-timeout 10 } */ diff --git a/libmudflap/testsuite/libmudflap.cth/pass39-frag.c b/libmudflap/testsuite/libmudflap.cth/pass39-frag.c deleted file mode 100644 index cd3eb5a..0000000 --- a/libmudflap/testsuite/libmudflap.cth/pass39-frag.c +++ /dev/null @@ -1,57 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <pthread.h> -#include <sched.h> -#include <assert.h> - -static void * -func (void *p) -{ - int *counter = (int *) p; - unsigned i; - enum { numarrays = 100, numels = 17 }; - char *arrays [numarrays]; - - for (i=0; i<numarrays; i++) - { - (*counter) ++; - unsigned x = i % numels; - arrays[i] = calloc (numels, sizeof(arrays[i][0])); - assert (arrays[i] != NULL); - arrays[i][x] = i; - free (arrays[i]); - sched_yield (); /* sleep (1); */ - } - - return (NULL); -} - - -int main () -{ - int rc; - unsigned i; - enum foo { NT=10 }; - pthread_t threads[NT]; - int counts[NT]; - - - for (i=0; i<NT; i++) - { - counts[i] = 0; - rc = pthread_create (& threads[i], NULL, func, (void *) & counts[i]); - if (rc) abort(); - } - - for (i=0; i<NT; i++) - { - rc = pthread_join (threads[i], NULL); - if (rc) abort(); - printf ("%d%s", counts[i], (i==NT-1) ? "\n" : " "); - } - - return 0; -} -/* { dg-output "100 100 100 100 100 100 100 100 100 100" } */ -/* { dg-repetitions 20 } */ -/* { dg-timeout 10 } */ diff --git a/libmudflap/testsuite/libmudflap.cth/pass40-frag.c b/libmudflap/testsuite/libmudflap.cth/pass40-frag.c deleted file mode 100644 index 007cb16..0000000 --- a/libmudflap/testsuite/libmudflap.cth/pass40-frag.c +++ /dev/null @@ -1,59 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <pthread.h> - -static void * -func (void *p) -{ - return (NULL); -} - -static void -test (void) -{ - int rc; - pthread_attr_t my_pthread_attr; - pthread_t h; - long i; - - rc = pthread_attr_init (&my_pthread_attr); - - for (i = 1; i <= 10000; ++i) { - if (i%100 == 0) fprintf (stderr, "%i ", i); - if (i%1000 == 0) fprintf (stderr, "\n"); -#ifndef STATIC - /* Some glibc versions don't like static multithreaded programs doing this. */ - if (i==5000) __mf_set_options ("-thread-stack=192"); -#endif - rc = pthread_create (&h, &my_pthread_attr, - func, NULL); - if (rc) - break; - - rc = pthread_join (h, NULL); - if (rc) - break; - } - - rc = pthread_attr_destroy (&my_pthread_attr); -} - -int main () -{ - test (); - - return (0); -} - -/* { dg-timeout 30 } */ -/* { dg-output "100 200 300 400 500 600 700 800 900 1000 \n" } */ -/* { dg-output "1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 \n" } */ -/* { dg-output "2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 \n" } */ -/* { dg-output "3100 3200 3300 3400 3500 3600 3700 3800 3900 4000 \n" } */ -/* { dg-output "4100 4200 4300 4400 4500 4600 4700 4800 4900 5000 \n" } */ -/* { dg-output "5100 5200 5300 5400 5500 5600 5700 5800 5900 6000 \n" } */ -/* { dg-output "6100 6200 6300 6400 6500 6600 6700 6800 6900 7000 \n" } */ -/* { dg-output "7100 7200 7300 7400 7500 7600 7700 7800 7900 8000 \n" } */ -/* { dg-output "8100 8200 8300 8400 8500 8600 8700 8800 8900 9000 \n" } */ -/* { dg-output "9100 9200 9300 9400 9500 9600 9700 9800 9900 10000 \n" } */ - diff --git a/libmudflap/testsuite/libmudflap.cth/pass59-frag.c b/libmudflap/testsuite/libmudflap.cth/pass59-frag.c deleted file mode 100644 index 4901306..0000000 --- a/libmudflap/testsuite/libmudflap.cth/pass59-frag.c +++ /dev/null @@ -1,39 +0,0 @@ -#include <stdio.h> -#include <pthread.h> - -/* PR 28578 */ - -void* test_thread(void* arg) -{ - printf("Hello from thread!\n"); - pthread_exit(NULL); - return 0; -} - -int main() -{ - pthread_t thread; - void *arg = NULL; - pthread_create(&thread, NULL, test_thread, arg); - pthread_join(thread, NULL); - pthread_exit(NULL); - return 0; -} - -/* { dg-output "Hello from thread!\n" } */ - -#if 0 - -/* Even this test case replicates the problem. However, when built in - static mode, it blows up during __mf_init (?!?!?!) with a - pthread_mutex_lock deadlock error. */ - -#include <stdio.h> -#include <pthread.h> - -int main () -{ - pthread_exit(NULL); - return 0; -} -#endif diff --git a/libmudflap/testsuite/mfconfig.exp.in b/libmudflap/testsuite/mfconfig.exp.in deleted file mode 100644 index bed1654..0000000 --- a/libmudflap/testsuite/mfconfig.exp.in +++ /dev/null @@ -1,4 +0,0 @@ -global mfconfig_libs -set mfconfig_libs "@LIBS@" -global libmudflapth -set libmudflapth "@build_libmudflapth@" |